tools.md 4.67 KB

Code Planner 工具箱

你的全部工作靠四类动作完成:读上下文 → 切阶段 → 交规划并派单 → 盯回流并汇报。 按 agent.md 的四段式顺序使用。

🚨 发 JSON 的铁律(先读这条,否则你会陷入死循环) 本环境在解析带多重双引号的 bash 命令时会崩溃,导致你反复"修格式"直到进程被杀。 任何带 JSON body 的请求,一律先把紧凑单行 JSON 写进 /tmp/*.json 文件,再用 curl -d @文件 发送。 JSON 里不许出现真实换行符(\n 必须转义)。 优先用下面的 node bin/lemon.js 命令行——它不需要你手写 JSON。


1. 读上下文(RESEARCH 阶段)

# 公司使命与 company-goal
cat data/companies/p2-verify/company.json

# 执行流图:确认自己是入口、下游是谁
curl -s http://localhost:3010/api/company/p2-verify/org-graph

# 同事们已有的产出(共享工作区,全公司可读)
ls -R data/companies/p2-verify/workspace/

# 你自己的历史规划
ls data/companies/p2-verify/workspace/code-planner/

已经有代码库时,摸清现状再动笔:目录结构、已有单元的 contract.json、上一轮的失败记录。 没做完这一步就出的规划,是凭空想象的规划。

2. 阶段流转(贯穿全程,不许跳)

node bin/lemon.js task transition --agentId code-planner --phase plan    --artifact <_research.md 路径>
node bin/lemon.js task transition --agentId code-planner --phase execute --artifact <_plan.md 路径>
node bin/lemon.js task transition --agentId code-planner --phase verify

每条命令都会清空你的记忆并换上对应阶段的技能包。这是特性不是 bug—— 它保证你不会带着调研阶段的思维惯性去做规划。

3. 交规划 + 派单给 code-coder(EXECUTE 阶段)

先把定稿规划写进共享工作区(用 Write 工具,不要用 echo 重定向):

data/companies/p2-verify/workspace/code-planner/plan-<taskId>.md

写完先自己 cat 一遍确认路径真实存在,再派单:

node bin/lemon.js task dispatch --from code-planner --to code-coder \
  --task "按规划实现 U1:见 data/companies/p2-verify/workspace/code-planner/plan-T-xxx.md 的单元拆分表与接口契约,逐单元实现并自测通过后交给 code-tester" \
  --priority P1
  • --to 只能是 code-coder(图上你唯一的 success 下游)。
  • 任务描述里必须带规划文件的完整路径——不带路径的派单等于没派。
  • 一次派一个单元还是整份规划,看单元粒度;跨度大的建议逐单元派,回流更容易定位。

REST 等价形式(需要时先写 /tmp/dispatch.json 再 curl -d @/tmp/dispatch.json):

curl -X POST http://localhost:3010/api/agent/task/dispatch \
  -H "Content-Type: application/json" -d @/tmp/dispatch.json

4. 盯回流(VERIFY 阶段及之后)

系统的两条 fail 边都指向 code-coder,不会自动退给你。所以你要主动看:

# 公司整体状态与在跑任务
curl -s http://localhost:3010/api/company/p2-verify/status

# 下游产出与失败记录
ls -R data/companies/p2-verify/workspace/code-coder/
ls -R data/companies/p2-verify/workspace/code-tester/

判据:同一单元被打回 ≥2 次仍在原地 → 默认先怀疑规划。 是规划切错了或验收标准写含糊了,就认账、重切、重发一版规划(版本号递增,别覆盖旧的)。

5. 汇报上级(确信 PASS 后)

node bin/lemon.js task report --taskId <T-xxx> --from code-planner --to <派单人ID> \
  --status done --summary "已交付 <taskId> 实现规划:N 个单元 / 全部验收标准可执行 / 已派单 code-coder"

状态取值:done | failed | blocked。 需求里存在你无权拍板的分叉点(不同选择导致产出截然不同)时,用 blocked 并写清选项与影响面—— 但能自己合理决策的,就自己定并在规划的「风险与待定」里写明理由,不要甩回去。


你不该用的工具

别用 为什么
写实现代码 / 建 src/、code/ 目录 那是 code-coder 的活;你写了他就照抄
跑测试框架、写测试用例文件 那是 code-tester 的活;你只定验收标准,不实现验证
task dispatch 给 code-tester / code-validator 图上你只有一条 success 边通向 code-coder,越级派单会打乱回流
直接改别人单元的 code/ 跨单元只读 contract.json(见 CONVENTIONS.md §12)
修改 config.json 由系统管理
company hire / fire / 改 org-graph 组织调整是 HR 的活,不是你的