AgentWorkflow:一个轻量级的多 Coding Agent 项目开发工作流
最近整理了一套使用 Codex、Claude Code 等 Coding Agent 开发项目时的工作流,并开源到了 GitHub:
https://github.com/Jett-Wu/AgentWorkflow
AgentWorkflow 不是 Multi-Agent Runtime,也不负责模型调度。它主要解决项目管理问题:
当多个 Coding Agent 在同一个项目中交替开发时,如何让它们持续共享项目需求、当前任务、关键决策和验证状态。
整个方案尽量保持轻量,只包含 4 个 Markdown 文件:
AGENTS.md → Agent 怎么工作
PROJECT.md → 项目要做什么
TASK.md → 当前正在做什么
DEVLOG.md → 哪些重要历史需要保留
其他信息则继续由它们原本的工程工具来负责:
Git → 实际修改了什么
Tests / CI → 实现到底对不对
AgentWorkflow 不做大而全的“项目记忆”系统——它只保存一类信息:那些 Git 记不住、代码看不出来、测试测不到,但不同 Agent 之间又必须持续传递的内容。
1. 核心设计:一个问题只有一个事实源
AgentWorkflow 的核心原则是:
One Source of Truth per Question
也就是同一个问题只由一个明确的载体负责回答。
| 信息 | 事实源 |
|---|---|
| 项目必须实现什么 | PROJECT.md |
| Agent 应该怎样工作 | AGENTS.md |
| 当前正在做什么 | TASK.md |
| 重要决策和失败经验 | DEVLOG.md |
| 具体修改了什么 | Git |
| 实现是否正确 | Tests / CI |
| 依赖版本 | package / lock file |
| API / Schema | Code / Schema |
这样可以避免同一份信息同时出现在多个 Markdown 文件中,后期相互冲突。
2. AGENTS.md:Agent 的仓库级规则
AGENTS.md 是 Coding Agent 进入项目时首先读取的文件,主要保存项目阅读顺序、安装 / 运行 / 测试命令、仓库级开发约束、Review 策略和任务完成标准。
例如:
修改代码前:
1. 阅读 PROJECT.md。
2. 阅读 TASK.md。
3. 检索 DEVLOG.md 中与当前任务相关的记录。
4. 检查相关代码、测试和 Git diff。
它回答的核心问题是:
Agent 在这个仓库里应该怎样工作?
因此 AGENTS.md 应尽量稳定、简洁,不需要写成项目百科全书。
3. PROJECT.md:项目需求和系统级状态
PROJECT.md 负责保存项目级事实,包括需求基线、非目标、成功标准、项目约束、需求变更、能力完成状态、当前系统结构和项目级风险。
例如:
### 必备能力
- R1:支持断点恢复
- R2:数据能够追溯到原始来源
- R3:支持结构化导出
### 非目标
- N1:当前版本不实现实时数据流
- N2:当前版本不开发管理后台
每个需求可以分配一个 ID,例如:
R1
R2
R3
S1
C1
后续任务直接关联这些项目项:
关联项目项:R1、C2
这样可以让任务始终与原始需求保持对应关系,减少 Coding Agent 在多轮开发后逐渐偏离项目目标的问题。需求如果发生变化,也应该明确记录,而不是由某个 Agent 直接修改原有需求。
4. TASK.md:当前任务和交接状态
TASK.md 只负责当前正在进行的任务,主要包含任务目标、关联需求、风险等级、任务范围、验收条件、当前状态、下一步、阻塞项和验证结果。
例如:
## 任务信息
任务:T-004 — 增加断点恢复
关联项目项:R1、C2
风险:中
状态:进行中
## 验收条件
- [ ] 中断后能够从 checkpoint 恢复
- [ ] 已完成的数据不会重复写入
- [ ] 原有测试通过
- [ ] 新增恢复测试
- [ ] 未引入无关修改
当 Codex 做到一半,需要换 Claude Code 继续时,只需要在 TASK.md 中更新已完成、进行中、下一步、阻塞项和验证结果,下一位 Agent 就可以比较快地恢复任务状态。
这里还有一个重要原则:
新 Agent 不能只相信上一位 Agent 的完成声明。
它应该结合代码、Git diff、测试和 CI 重新核对真实状态。
5. DEVLOG.md:只保存真正值得保留的历史
DEVLOG.md 不是普通的开发流水账,主要保存 Git 很难直接回答的信息,例如重要技术决策及原因、代价较高的失败方案、难以从最终代码看出的 Root Cause、会影响后续开发的经验和重要项目里程碑。
例如:
### D-007 — checkpoint 重复写入问题
类型:失败方案 / 根因
背景:
异常退出后出现部分数据重复。
结果:
问题并非 SQLite 并发导致,
真正原因是 checkpoint 更新晚于数据写入。
避免重复:
不要继续通过修改 SQLite journal mode 解决该问题。
证据:
tests/test_resume.py
commit xxxxxxx
以后其他 Agent 遇到类似问题时,就可以直接避开已经验证过的错误路线。普通代码修改则不需要记录,因为 Git 已经可以完整保存。
6. 标准工作流程
一个任务的正常流程大致如下:
AGENTS.md
↓
PROJECT.md
↓
TASK.md
↓
检索相关 DEVLOG
↓
检查代码和测试
↓
实现任务
↓
Tests / CI
↓
Review Git Diff
↓
更新 TASK.md
如果开发过程中出现项目级变化,再更新 PROJECT.md;如果出现未来仍然值得保留的重要决策、失败方案或经验,再更新 DEVLOG.md。否则不需要额外维护其他文件。
7. 多 Agent 并行开发
默认情况下,项目根目录只维护一个 TASK.md,比较适合:
Codex 开发
→ Claude Code Review
→ Codex 修改
这种串行协作方式。
如果多个 Agent 真正并行开发,可以扩展为:
tasks/
└── active/
├── T-001-crawler.md
└── T-002-frontend.md
同时配合独立 Branch / Worktree、一个任务一个主要负责人、明确任务依赖,并尽量避免多个 Agent 同时修改相同文件。
原则上只有项目真的需要并行任务管理时才扩展,默认工作流仍然保持简单。
8. Token 和上下文控制
AgentWorkflow 也考虑到了 Token 消耗的问题,默认读取顺序为:
AGENTS.md
→ PROJECT.md
→ TASK.md
→ 定向检索 DEVLOG.md
→ 当前任务相关代码和测试
主要原则包括:
-
不默认扫描整个仓库;
-
不默认全文读取
DEVLOG.md; -
不保存完整聊天记录;
-
不重复记录 Git 已经保存的信息;
-
过时状态直接更新,而不是不断追加;
-
能通过测试自动验证的内容优先交给 Tests / CI。
这样可以减少每次开启新会话时重复加载大量上下文的问题。
9. 快速使用
仓库中提供了完整的中英文版本:
AGENT_WORKFLOW.md
AGENT_WORKFLOW_CN.md
如果使用中文版,可以把 AGENT_WORKFLOW_CN.md 放到项目中,然后告诉 Coding Agent:
阅读 AGENT_WORKFLOW_CN.md。
检查当前仓库并初始化其中定义的工作流。
创建或更新 AGENTS.md、PROJECT.md、TASK.md 和 DEVLOG.md。
只使用经过验证的仓库事实。
初始化期间不要修改业务代码。
Agent 会根据当前仓库生成或更新:
AGENTS.md
PROJECT.md
TASK.md
DEVLOG.md
之后就可以按照这套工作流持续开发。
10. 适用场景
这套工作流比较适合:
-
Codex、Claude Code 等多个 Coding Agent 交替开发;
-
一个项目跨多个会话持续进行;
-
Agent A 开发、Agent B Review;
-
个人或小团队的中小型软件项目;
-
希望保留基本项目可追踪性,但又不想引入复杂项目管理系统的场景。
AgentWorkflow 本身不会替代 Git、Tests / CI 或现有的 Issue 管理系统,而是作为 Coding Agent 与这些工程工具之间的一层轻量协作约定。
项目地址:
https://github.com/Jett-Wu/AgentWorkflow
欢迎尝试!
更多推荐




所有评论(0)