# Org Planner 工具库 你的工具权限由 `config.json` 的 `cli.toolPolicy` 决定:`bash` / `read_file` / `str_replace`。 全程不随四段式阶段变化。 ## 1. 调研(RESEARCH 阶段) cwd = `system/agents/org-planner/{公司ID}/{任务ID}/`,公司的东西一份都不在你的本体目录里 —— 往上五层才是仓库根。下面的 `<公司ID>` 用你自己的(提示词开头的运行时坐标里有)。 ```bash 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. 阶段流转(每阶段结束必须调用) ```bash 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 的写法模板(照抄结构) ```markdown | # | 验收项 | 判定方式 | 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 自查(跑一遍再汇报) ```bash wc -c <节点私有目录>/{brd,prd,sdd,acceptance}.md # 四份都存在且非空 grep -c '^|' <节点私有目录>/acceptance.md # 验收条目数 > 0 ``` ## 5. 汇报 ```bash 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,不要抛错崩掉,改为求助人类: ```bash node bin/lemon.js human request --from "mycompany:org-planner" --type api_key --key "SOME_KEY" --reason "调研 X 需要访问 Y" ```