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"