Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions emrg/server/evolution_prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading