host: fill second-class gaps (merge verify, deps, review comments, reconnect, budget, notify, state version)
This commit is contained in:
1 parent
ed55c9651a
commit
e9735d1fad
4 files changed
+935
-69
No files matched your search
@@ -159,6 +159,15 @@ turn 可以真正并发(不是轮流排队)。
|
||||
| 跨进程 state 竞态 | host-state.json 单文件,多 host.py 进程同时写会丢任务,同一进程内并行安全 | 已修:锁文件 + 保存时合并,实测双进程并发保存不丢 |
|
||||
| 项目配置 | 每次都要传 model/repo/state 等参数 | 已修:host-config.json + init/config,CLI 优先于配置,密钥只走环境变量 |
|
||||
| 定时自动化 | run-due 要手动跑,跑完没日志 | 已修:host-run.log 记录派发/跳过,automations --cron-line 生成 crontab 行,--install-cron 才装机 |
|
||||
| 合并后自动验测 + 回滚 | merge 合完不验主仓测试,合坏了靠人发现 | 已修:merge 默认仓库有 tests/ 就跑 unittest,验测失败 reset 回合并前 HEAD,分支/worktree 保留;--no-verify 跳过,--verify 可指定命令 |
|
||||
| 任务依赖 + 优先级 | parallel 是扁平的,没有依赖和优先级 | 已修:jobs 里 depends_on/priority,拓扑排序 + 按波次跑,依赖失败时依赖任务标 skipped 不跑;依赖任务从依赖分支建 worktree(有血缘关系),不是文件拷贝 |
|
||||
| 失败自动重试 | 失败任务就停在 failed,不重试 | 已修:dispatch/parallel 里 --max-retries,失败后同 prompt 再跑,重试前查预算;默认 0,行为不变 |
|
||||
| 评审评论回流 | 评审只看 diff,修要另起 run prompt,评论没地方钉 | 已修:review-comment --file --line --comment 把评论存进任务,review 时列出 open 评论,fix-review 按 open 评论逐条修,修完标 resolved |
|
||||
| server 崩溃重连 | app-server 死了,host 就 BrokenPipe 失败 | 已修:Server.ensure_alive,死了重拉并 resume thread(thread 在 CODEX_HOME 里不丢);request 遇 BrokenPipe 重试一次;单测 kill 进程后重拉 + list 能通 |
|
||||
| 成本预算 | 没有预算,模型跑多少全靠自觉 | 已修:配置 max_daily_turns,按 turn 数算(协议不暴露真实 token 数,这是诚实边界),超预算不派发/不重试;usage 记在 state 里,doctor 可看 |
|
||||
| 失败通知 | 失败只有 state 里的 status,跑完没人知道 | 已修:失败时写 host-run.log + 跑配置的 notify_command(本地 shell,模板 {task} {status});failures 命令列失败任务,doctor 列失败/缺失 worktree/open 评论 |
|
||||
| 多机器 state 冲突 | 锁只防同一台机器,多机器共享 state 文件会静默覆盖 | 部分修:state 加 version/last_writer/updated_at,保存时磁盘版本比加载时新就记 STATE-CONFLICT 日志并合并保留双方任务,不静默丢;真多机同步仍需中心服务(见下“没对齐”) |
|
||||
| 合并时提交缓存文件 | merge 的 git add -A 会把 __pycache__/*.pyc 也提交进主仓,下次合并被 .pyc 改动挡住 | 已修:merge 前清 worktree 的 __pycache__/*.pyc,主仓的 .pyc 改动先还原;单测覆盖 pyc 不入库 |
|
||||
| 边界:cwd、沙箱、审批、模型 | dispatch / turn 参数里定,见 `config.example.toml` | 已实测 |
|
||||
| 任务登记 | `host-state.json`:task -> thread/worktree/状态/diff;agent 状态本身仍在 CODEX_HOME,不另存第二份 | 已实测 |
|
||||
|
||||
@@ -172,6 +181,15 @@ turn 可以真正并发(不是轮流排队)。
|
||||
- 并行改同一文件:worktree 能防互相踩,但两个分支都在文件末尾
|
||||
追加时,合并第二支仍可能冲突,host 会 abort 等人工解冲突,
|
||||
不会自动猜合并结果——这和桌面版一样,是正确做法,不是 bug。
|
||||
2026-10-26 补了一层安全网:merge 冲突时先试 -X ours,解完
|
||||
后逐行核对任务分支的新增行是否都在主仓里,缺一行就回滚
|
||||
(gap2 实测拦下了一次 -X ours 丢 mul2 的情况);依赖任务
|
||||
现在从依赖分支建 worktree,依赖先合、依赖任务后合时不再
|
||||
重复加同一段。
|
||||
- 多机器同步:state 现在有 version 和冲突日志,不会静默丢
|
||||
任务,但两台机器共享一个 state 文件仍不是 ChatGPT 云端
|
||||
那种中心同步——要真多机,得另起一个中心 state 服务,
|
||||
这不在本地 host 的范围里。
|
||||
|
||||
## 开源没给到的(别指望照搬)
|
||||
|
||||
|
||||
Reference in new issue
Block a user