你刚启动了第二个 Claude Code agent。问题来了。
第一个 agent 正在做重构。第二个需要开发一个涉及部分相同文件的功能。它们互相不知道对方的存在。你同时充当路由器、状态存储和冲突解决者,而你唯一的工具就是在终端窗口之间复制粘贴上下文。
大多数开发者在使用 Claude Code 时就是在这里碰壁的。不是因为 agent 编码能力差,而是因为没有系统告诉它该做什么。
复制粘贴问题
大多数 Claude Code 工作流的开头都一样。你脑子里有个任务(或者在 Jira 里,或者在 GitHub issue 里),然后把描述粘贴到 agent 的 prompt 中。"做一个认证流程。""修复分页 bug。""加上暗色模式支持。"
对单个 agent 来说,这没问题。agent 拥有完整上下文,你可以观察它的输出,而且因为你一直盯着它,所以知道什么时候完成了。
加上第二个 agent,裂缝立刻出现。
Agent A 在重构 API 层。Agent B 在构建新的 endpoint。两个都在改 server/routes.ts。彼此不知道对方的改动。你在一方 push 后另一方的工作崩溃时才发现冲突。更糟的情况是,两边本地都成功了,但合并结果以任何 diff 都看不出来的方式损坏了。
根本原因不是 agent 做事粗糙,而是缺少共享状态。没有地方记录"Agent A 负责 API 重构"。没有状态说明"routes 文件正在被修改,请等待"。agent 们各自基于独立的 prompt 运行,对全局一无所知。
加上第三个 agent,你花在协调上的时间就超过了写代码的时间。
Agent 真正需要从任务系统得到什么
在寻找工具之前,值得问一下:Claude Code agent 要做好工作,到底需要什么?
答案是出乎意料地少。
一个唯一标识符。 可以在 commit 和评论中引用的东西。"修了那个 bug"在多 agent 日志里毫无用处。"完成 PROJ-47:过滤视图下分页返回错误计数"是可追踪的。
明确的范围。 标题、描述和验收标准。不是长篇大论,不是带人物角色的用户故事,而是"完成"是什么样子的具体陈述。"/users endpoint 返回分页结果。页面大小默认 25。next_cursor 字段在最后一页为 null。"
可更新的状态。 Agent 需要表明自己所处的阶段:已认领、进行中、已完成。没有这个,你又回到了盯着终端窗口猜测的老路。
依赖感知。"PROJ-46 合并之前不要开始这个"能防止最常见的多 agent 故障:在还不存在的代码上构建。
注意这个列表里缺少什么。Sprint 规划、速度跟踪、看板、故事点、带彩色标签的 epic。Agent 不需要项目管理的形式主义。它们需要的是一个任务、一个状态,以及说"我完成了"的方式。
CLAUDE.md 契约
任务系统告诉 agent 做什么。CLAUDE.md 文件告诉它们怎么做。
如果你在运行多个 Claude Code agent,每个都应该有一个定义其身份和边界的 CLAUDE.md。这不是可选配置,而是 agent 能否协调与互相干扰之间的区别。
下面是一个工程 agent 的精简示例:
## Identity
Engineer for the project. You implement features, fix bugs,
and write tests. You own implementation quality.
## What You Own
- All files under `components/` and `lib/`
- Unit tests in `__tests__/`
- You may read but not modify files under `server/`
## What You Don't Own
- Deployment configuration (that's ops)
- Issue triage and prioritization (that's the coordinator)
- QA validation (QA tests your work independently)
## Completion Protocol
Before marking any task done:
1. Run the full test suite: `pnpm test`
2. Verify your change works manually
3. Comment what you did with the commit hash
4. Push before reporting completion
边界部分是承重结构。没有明确的文件所有权,agent 就会越界。工程 agent "好心地"重构了部署配置。QA agent 通过修改被测代码而不是测试本身来"修复"测试。明确的边界能防止这些故障模式。
完成协议同样重要。它防止了最常见的 agent 故障:仅仅能编译通过就声称完成。"运行完整测试套件"和"手动验证"是具体的关卡。遵循此协议的 agent 产出的工作是人类可以信任的。没有协议的 agent 产出的工作需要你逐行检查。
将此扩展到多个 agent,你就得到一个每个成员都知道自己的车道、交接协议和"完成"含义的团队。
CLI-first 任务管理
这里有一个工作流观察,我花了比应有更长的时间才内化:Claude Code agent 用 CLI 工具比 GUI 界面工作效果好得多。
想想就明白了。Claude Code agent 生活在终端里。它能执行命令、读取输出、根据结果采取行动。要求它浏览 web UI、点击按钮、解读渲染后的页面,是在对抗 agent 的天然界面。
基于 CLI 的任务系统意味着 agent 可以在单一流程中完成这些:
# Read the task
task show PROJ-47
# Claim it
task update PROJ-47 --status in_progress --assignee agent-1
# Do the work...
# Report completion
task comment PROJ-47 "DONE: Fixed pagination. Commit: abc1234"
task update PROJ-47 --status done
无需上下文切换。无需浏览器窗口。无需看板截图。Agent 读取任务、执行工作、更新状态,全程不离开它的工作环境。
输出也是机器可读的。当你需要检查各 agent 的情况时,可以查询:
task list --status in_progress # What's being worked on?
task list --assignee agent-2 # What is agent-2 doing?
task list --blocked # What's stuck?
这就是有效工具的形态。一个说 agent 语言的 CLI。
