tools.md
3.57 KB
Org Planner 工具库
你的工具权限由 config.json 的 cli.toolPolicy 决定:bash / read_file / str_replace。
全程不随四段式阶段变化。
1. 调研(RESEARCH 阶段)
cwd = system/agents/org-planner/{公司ID}/{任务ID}/,公司的东西一份都不在你的本体目录里 ——
往上五层才是仓库根。下面的 <公司ID> 用你自己的(提示词开头的运行时坐标里有)。
cat ../company-context.md # 你的公司归属语境(P1 注入)
cat ../../../../../data/companies/<公司ID>/company.json # 公司目标 / 使命 / 现有员工
cat ../../../../../data/companies/<公司ID>/workspace/orggraph-plan.md # 你在 org 图里的位置与数据契约
ls ../../../../../data/companies/<公司ID>/workspace/ # 别人已经交付过什么
涉及既有代码时,先 ls + 读关键文件再下判断。禁止在没读过代码的情况下写 sdd。
2. 阶段流转(每阶段结束必须调用)
node bin/lemon.js task transition --agentId mycompany:org-planner --phase plan --artifact <节点私有目录>/_research.md
node bin/lemon.js task transition --agentId mycompany:org-planner --phase execute --artifact <节点私有目录>/_plan.md
node bin/lemon.js task transition --agentId mycompany:org-planner --phase verify
流转会清空对话记忆,只把
--artifact指的文件交回给你。所以 artifact 里要写全下一阶段需要的一切, 别把关键结论只留在脑子里。
3. 四份正式产物的落盘位置
全部落在节点私有目录里(<节点私有目录> = 任务描述「[节点产物目录]」段给的那个绝对路径):
<节点私有目录>/brd.md # 业务需求
<节点私有目录>/prd.md # 产品需求
<节点私有目录>/sdd.md # 技术方案
<节点私有目录>/acceptance.md # 可机器判定的验收清单
下游怎么读得到:引擎跑完你这一轮会扫这个目录、把产物登记进 graph_files,
再按图上的数据契约解析成下游节点提示词里的「[上游输入 …]」绝对路径。
所以不要自己给下游拼相对路径 —— 换个公司/任务它就指到别处,读不到还不报错。
acceptance.md 的写法模板(照抄结构)
| # | 验收项 | 判定方式 | pass 条件 |
|---|--------|----------|-----------|
| 1 | 单元测试通过 | `npx vitest run` | 退出码 0,0 failed |
| 2 | CLI 可运行 | `node bin/foo.js --help` | 输出含 "Usage:" |
| 3 | 产物存在 | `ls dist/foo.js` | 文件存在且 > 0 字节 |
每行都要能被别人在不问你的情况下执行并得出 pass/fail。做不到就删掉重写。
4. VERIFY 自查(跑一遍再汇报)
wc -c <节点私有目录>/{brd,prd,sdd,acceptance}.md # 四份都存在且非空
grep -c '^|' <节点私有目录>/acceptance.md # 验收条目数 > 0
5. 汇报
curl -X POST http://localhost:3010/api/agent/task/report \
-H "Content-Type: application/json" -d @/tmp/planner-report.json
先把 JSON 写成单行紧凑文件再
-d @file,不要在 command 里内联 JSON —— 会触发控制字符解析崩溃。 body 形如:{"taskId":"T-xxx","from":"mycompany:org-planner","to":"ceo","status":"done","summary":"..."}
6. 缺外部授权时
若某项调研需要外部 API Key,不要抛错崩掉,改为求助人类:
node bin/lemon.js human request --from "mycompany:org-planner" --type api_key --key "SOME_KEY" --reason "调研 X 需要访问 Y"