这是一篇由原始材料转换而来的阅读页,保留了源文件的主要结构,并补充了可追溯的来源说明与链接。
本文件用于“跨多次会话 / 跨 context window”的编码 Agent 接力。
AGENTS.md — 长任务 Agent Harness 作业指令(可直接启动)
本文件用于“跨多次会话 / 跨 context window”的编码 Agent 接力。
核心原则:每次会话都像换班工程师——先验收当前状态,再做一个小增量,最后留下可复盘的工件并 git commit。
本模板面向在本机用 Codex CLI(
codex) 驱动的工作流(可交互、也可codex exec非交互)。
0) 硬性规则(必须遵守)
- 禁止“一次性做完”:每次会话只完成 1 个可验收的功能项(或 1 个小修复)。
- 禁止“自我宣布完成”:只有在端到端验证后,才能把功能项标记为通过(
passes: true)。 - 会话结束必须是“可合并状态”:
-
git status应保持干净(除非在progress.md明确记录原因) - 关键改动必须落到 commit(git 是可回滚记忆) - 相信工件,不相信记忆:下一次会话只以仓库文件与 git 历史为准。
1) Harness 工件(Artifacts)约定
建议把这些文件放在项目仓库根目录(如果放子目录,必须在本文件写清楚路径):
init.sh- 一键:启动开发环境 + 冒烟测试
-
目标:任何新会话先跑它,快速判断“当前是否绿色”
-
feature_list.json - 端到端功能清单(JSON),每项含
passes: false/true -
后续 coding agent 只允许改
passes字段(必要时可追加新条目,但不要改旧条目的语义) -
progress.md(或progress.log) - 交接本:每次会话追加一段(只追加,不覆盖)
-
建议包含:日期时间、目标、做了什么、跑了哪些命令、结果、commit、下一步
-
Git history
- 每次会话结束都
git commit:它是“可回滚、可追溯”的外置记忆
本仓库模板文件在:/srv/project/harness-engineering/templates/*
2) 每次会话的标准流程(Coding Agent 必走)
2.1 先“找状态”(目标:5 分钟内完成)
按顺序执行:
1) 确认位置与仓库状态
pwd
ls
git status
2) 阅读最近交接
test -f progress.md && sed -n '1,200p' progress.md || true
3) 看最近提交
git log --oneline -20
4) 读取功能清单并选择一个未通过的最高优先级条目
test -f feature_list.json && cat feature_list.json | head -n 120 || true
5) 启动并冒烟测试(必须)
bash ./init.sh
- 如果冒烟测试失败:先修到通过,不要直接开始新功能。
2.2 只做一个功能项(增量推进)
- 实现 → 测试(单测 + e2e/人工步骤)→ 修 bug → 再测试
- 通过验证后,在
feature_list.json将对应条目的passes改为true
2.3 会话收尾(交接 + 提交)
1) 追加 progress.md(至少包含)
- 本次完成的功能项(引用 feature_list.json 的 description)
- 关键文件变更摘要
- 运行过的命令(尤其是启动/测试命令)
- 结果(通过/失败点)
- 新增风险与 TODO
- 下一步建议(下一位一上来应该做什么)
2) 确保工作区干净并提交
git add -A
git commit -m "feat: <简短说明>"
3) 最终确认
git status
3) Codex CLI:可直接复制的启动命令
下面命令中的
<REPO_DIR>请替换为你的仓库目录(例如:/srv/project/repos/myapp)。
3.1 Initializer(第一次:只搭骨架,不做功能)
Initializer 的产物目标:
- 生成 init.sh / feature_list.json / progress.md
- 做一次初始 commit(形成可回滚基线)
推荐用 codex exec 非交互执行:
codex exec -m gpt-5.4 -C <REPO_DIR> --full-auto - <<'PROMPT'
你是 initializer agent。你的任务不是实现功能,而是为“长任务/多会话接力”建立 harness。
要求:
1) 在仓库根目录创建:init.sh、feature_list.json、progress.md。
2) init.sh 必须能:安装/检查依赖(按仓库实际情况)、启动开发环境、跑最小冒烟测试;失败要退出非 0。
3) feature_list.json:根据仓库 README/现有代码,整理端到端功能清单;所有 passes 初始为 false。
4) progress.md:写入第一条交接记录(你创建了哪些工件、如何运行 init.sh、下一步怎么做)。
5) 运行一次 bash ./init.sh 验证脚本可用(如果需要先安装依赖,请把命令写进 progress.md)。
6) 完成后执行 git add/commit,commit message:"chore: initialize agent harness"。
注意:不要尝试“一次性做完项目”。你的产出是可持续接力的工程骨架。
PROMPT
如果你希望交互式(更像结对编程),可用:
codex -m gpt-5.4 -C <REPO_DIR>
3.2 Coding Agent(后续每次:只推进一个 passes=false)
同样建议用 codex exec,把流程写死到 prompt,强制它“先验收再推进”:
codex exec -m gpt-5.4 -C <REPO_DIR> --full-auto - <<'PROMPT'
你是 coding agent(换班工程师)。目标:只完成一个 passes=false 的功能项,并在会话结束留下干净状态。
流程(必须执行,并把关键命令/结果记录到 progress.md):
1) git status;git log --oneline -20
2) 阅读 progress.md 与 feature_list.json
3) 运行 bash ./init.sh 做冒烟测试;如果失败先修复到通过
4) 选择一个 passes=false 的最高优先级功能项,只做这一个
5) 实现 + 测试(要求端到端验证);验证后将该条 passes 改为 true
6) 更新 progress.md(做了什么、命令、结果、commit、下一步)
7) git add -A && git commit -m "feat: <功能项简短说明>"
8) 确保 git status 干净
PROMPT
3.3 续跑 / 恢复上次 Codex 会话(可选)
如果你之前用交互式 codex,想继续最近一次会话:
codex resume --last
4) 为什么功能清单用 JSON(很关键)
- Markdown 更容易被模型“顺手改写需求文本/排序/合并段落”
- JSON 结构更刚性,更利于约束“只改 passes”
5) 落地自检清单
- [ ]
init.sh在新环境可运行(至少能告诉我缺什么依赖) - [ ]
feature_list.json是端到端行为清单,不是模块/文件列表 - [ ]
progress.md只追加,不覆盖 - [ ] 每次会话结束都有 commit,且能回滚到任意绿色状态
来源与参考
源文件: anthropic/AGENTS-cn.md
来源目录: /srv/project/harness-engineering