From 250437537ec744d5c5390fd587fbc1a111ff2540 Mon Sep 17 00:00:00 2001 From: argszero Date: Sat, 8 Aug 2026 10:40:00 +0800 Subject: [PATCH] =?UTF-8?q?emrg:=20evolution=5Fprompt=20quick-ref=20?= =?UTF-8?q?=E2=80=94=20add=20#565-#570=20feature=20entries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emrg/server/evolution_prompt.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/emrg/server/evolution_prompt.md b/emrg/server/evolution_prompt.md index b7229eb..1f7f5de 100644 --- a/emrg/server/evolution_prompt.md +++ b/emrg/server/evolution_prompt.md @@ -351,6 +351,12 @@ When reading rants, follow these rules: > - Aborted-cycle exclusion (#559 外部贡献 pm25coder fork:aborted evolution cycle(server error 如 "session busy"、或异常)被双重误分类——①空循环判定只查 truncated 不查 error → aborted+HEAD 未变被当 empty cycle 推进 idle-halt backoff(agent 被阻塞 ≠ NTE);②aborted cycle 仍写 EvolutionLog+append self.evolutions+impact 带 error= → 膨胀 evolution count(GUI growth card/toast/evolution_summary);修复=空循环条件加 `not error` + else 分支 reset empty streak(reason "aborted cycle (error[:80])")+ **error 提前 return 不写 log 不计数**(error= impact 条目随 no-log 退役);三态分类完备(complete/truncated/aborted 互斥穷尽循环全部出口);与 #558 配套:total_evolutions() 计 handler.evolutions 而 aborted 永不 append → count 按构造排除 abort;+2 测试 572→575(_get_git_head 钉死 HEAD 判别力:撤 not error 即红/撤 return 即 "log" not in captured 红)) ✅ > - Durable evolution count (#563 外部贡献 pm25coder fork:daemon 重启后 scheduler in-memory count 归 0 而 evolution-*.json 日志文件仍在 → GUI growth card/toast/evolution_summary 显示 0,与 recent 列表(读同一批文件)不一致;修复=`_evolution_count()` 返回 `max(in_memory, disk)`——in_memory 来自 scheduler.total_evolutions()(scheduler 不可用时回退 legacy self.evolutions,isinstance int 守卫),disk 遍历 config_dir()/logs 下 evolution-*.json 验证 `data.get("timestamp")` 存在才计数(JSONDecodeError/OSError 跳过=corrupt/partial write 不计);与 #558/#559 配套=count 真正持久化跨重启;+1 测试断言 count==2(corrupt 跳过)+ count==25(limit 截断仍计全量)) ✅ +> - HTTPS→SSH fallback (#565 宿主网络 github.com:443 被墙:git_utils `https_to_ssh_url()`/`is_git_connection_error()`(仅连接性错误判别)/`git_origin_url()`;scheduler 一次性 `_ensure_origin_reachable()` 探针 + `_clone_workspace()` SSH 重试(http.connectTimeout=10)+ `_remote_advanced()` SSH 兜底;+14 测试 575→589,mutation-verified) ✅ +> - git mid-transfer drop marker (#566 外部贡献 pm25coder:`git ls-remote`/`fetch` 中途断连报 "remote end hung up"——补入 `_CONNECTION_ERROR_MARKERS`;正反两态验证) ✅ +> - evolution prompt FETCH_HEAD (#567 Step 2.2 与合并冲突指引改用 `FETCH_HEAD` 而非 `origin/master`——fetch refspec 缺失时 origin/master 陈旧/缺失;+1 回归测试) ✅ +> - Windows TUI GBK logging crash (#568 宿主 rant 09:35:30 Windows "--- Logging error ---" 崩溃:`__main__.py` 客户端 RotatingFileHandler `encoding="utf-8", errors="backslashreplace"`;`bash_tool.py` `_decode_output()`(locale strict → UTF-8 strict → UTF-8 replace;POSIX 零改动);+6 测试,mutation-verified) ✅ +> - install-info.json 原子性 (#569 外部贡献 pm25coder:`_cache_tool_paths` 读共享 install-info.json 非原子 + daemon 实时重写 → 并发读半写 JSONDecodeError flake;修复=守卫 json.loads(损坏→{})+ .tmp/os.replace 原子写;+2 测试 597→599) ✅ +> - Installable-skills catalog (#570 宿主 rant 10:14:29 修订版覆盖 10:11:35 原方案:推荐技能列表本身就是一个技能 skill-catalog.md——复用现有 loader(Available Skills 自动渲染一行)、system.j2 零改动、无元机制;frontmatter 嵌套 `skills:` 列表承载 5 字段元信息;/skills available/install(宿主确认 CLI 安装,MANIFESTO §10)/update;24h TTL 后台自更(仅 managed=true、CLI 缺失跳过、不动宿主手工副本);版本走 api.github.com releases/latest(本机 github.com:443/raw 被墙);loader `_parse_frontmatter` 跳过缩进行(防嵌套 description 覆盖顶层)+ 废弃 recommended.md 永不加载;+35 测试 599→634) ✅ #### 2.2 Latest GitHub code changes