host: GitHub PR/CI line (github-workflow, pr, pr-checks, pr-merge with checks gate)
This commit is contained in:
1 parent
2f326f33f8
commit
b97c34465f
4 files changed
+458
No files matched your search
@@ -169,6 +169,7 @@ turn 可以真正并发(不是轮流排队)。
|
||||
| 多机器 state 冲突 | 锁只防同一台机器,多机器共享 state 文件会静默覆盖 | 部分修:state 加 version/last_writer/updated_at,保存时磁盘版本比加载时新就记 STATE-CONFLICT 日志并合并保留双方任务,不静默丢;真多机同步仍需中心服务(见下“没对齐”) |
|
||||
| 合并时提交缓存文件 | merge 的 git add -A 会把 __pycache__/*.pyc 也提交进主仓,下次合并被 .pyc 改动挡住 | 已修:merge 前清 worktree 的 __pycache__/*.pyc,主仓的 .pyc 改动先还原;单测覆盖 pyc 不入库 |
|
||||
| 守护进程 + 健康检查 + 自动恢复 | host.py 跑完就退出,不常驻;state 坏了静默当空 state;中断任务一直停在 running | 已修:daemon(双 fork 到 PID 1,循环 recover + run-due)、health(不跑模型,查二进制/配置/state/server/daemon)、restore-state(坏了从 .bak 恢复并留底)、recover(超过阈值的 running 标 interrupted,可用 run 续跑,不自动重跑模型回合) |
|
||||
| GitHub PR / CI 一条线 | 本地 merge 完就完,没有 PR、没有 CI 门 | 已修(代码 + 本地可测部分):github-workflow 生成 .github/workflows/host-verify.yml(checkout + python + unittest,幂等);pr(push 分支 + gh pr create,成功后 pr_url/pr_number 写回任务记录);pr-checks(解析 gh pr checks,all_pass 仅全 pass 为真,空 checks 不算过);pr-merge(先查 checks,未全过拒绝且不调 merge,全过才 gh pr merge --merge 并标 merged,不动本地主分支)。gh 调用走 run_gh(),单测用假 gh。**真实 PR 本轮没跑**:本仓没有 git remote,gh 未登录,见下“GitHub PR/CI 的外部条件”。 |
|
||||
| 边界:cwd、沙箱、审批、模型 | dispatch / turn 参数里定,见 `config.example.toml` | 已实测 |
|
||||
| 任务登记 | `host-state.json`:task -> thread/worktree/状态/diff;agent 状态本身仍在 CODEX_HOME,不另存第二份 | 已实测 |
|
||||
|
||||
@@ -197,6 +198,34 @@ turn 可以真正并发(不是轮流排队)。
|
||||
或 crontab;daemon 适合常驻机器,VM 上是“会话内常驻 +
|
||||
回收后重拉”的定位。
|
||||
|
||||
## GitHub PR/CI 的外部条件(真实 PR 仍缺这两样)
|
||||
|
||||
PR/CI 这条线本轮只做了代码和本地可测部分,真实 PR 没有跑,
|
||||
原因如实写在这里,不是没做完就含糊过去:
|
||||
|
||||
- **仓库远端**:本仓(codex-app-server)目前没有 git remote
|
||||
origin,`git remote -v` 为空。pr 命令会先查 remote,没有就
|
||||
明确报错,不静默失败。以后给仓库加 remote 再跑:
|
||||
`git remote add origin <url>`。
|
||||
- **gh 登录**:本机有 `gh`,但 `gh auth status` 显示未登录。
|
||||
不要在本轮登录,也不要把 PAT 写进任何文件、state、日志或
|
||||
聊天记录;以后用户给 PAT 时走 Secure Vault,再跑
|
||||
`gh auth login`。没有登录时 pr/pr-checks/pr-merge 会把 gh
|
||||
的错误原文打印出来,不编造 PR URL。
|
||||
- **流程(远端和登录齐了之后)**:
|
||||
1. `host.py github-workflow` 生成 CI workflow(已生成的文件
|
||||
要提交进仓库,GitHub Actions 才会跑它);
|
||||
2. 任务 completed 后 `host.py pr --task <名>`:push 分支 +
|
||||
gh pr create,pr_url/pr_number 写回任务记录;
|
||||
3. `host.py pr-checks --task <名>`:看 CI 全过没有;
|
||||
4. `host.py pr-merge --task <名>`:全过才合并,合并由
|
||||
GitHub 完成,不动本地主分支——和本地 `merge` 命令是两条
|
||||
线,不要混用:本地 merge 是直接合进本地主仓,PR merge
|
||||
是走 GitHub 的 PR 流程。
|
||||
- **两条线不冲突的原因**:本地 merge 用 merge_task()(自动验测
|
||||
+ 回滚),PR merge 用 pr-merge(checks 门 + GitHub 合并);
|
||||
一个任务要么走本地 merge,要么走 PR,不要两边都合。
|
||||
|
||||
## 开源没给到的(别指望照搬)
|
||||
|
||||
- 模型本身、ChatGPT 登录、计费、Codex Cloud 云端沙箱。
|
||||
|
||||
Reference in new issue
Block a user