# Task Planning 工具箱 > **先说结论:这一岗大概率一个工具都不需要用。** > 你需要的三项输入(goal 描述、公司 org graph 摘要、可用角色清单)**都会直接写在首轮消息里**。 > 你的交付物是回复最后那个 JSON 代码块。读输入 → 判断 → 输出,全程不碰磁盘、不发请求。 > > 这一段不是谦辞,是硬规矩:**每多跑一条命令,就多一次可能失败、且完全不必要的往返**, > 而你只有 3 轮机会。看到下面有工具就想用一下,是这一岗最没必要的失分方式。 --- ## 什么时候才真的需要一个工具 只有一种情况:**首轮消息里某项输入明显缺失或被截断**,而缺的那一项会直接改变你的切法。 | 缺了什么 | 缺了会怎样 | 才可以做的事 | |---|---|---| | **goal 描述** | 什么都拆不出来 | **不查任何东西**。在正文里说明「需求描述缺失」,输出空数组 `[]` | | 公司 org graph 摘要 | 你判断不了「一条 task 走一趟流水线跑不跑得完」 | 按「规划 → 执行 → 验收」这条通用流水线推断即可,正文里注明缺项。**不值得为它跑命令** | | 可用角色清单 | 你判断不了可行性 | 同上。可行性缺口写进正文,**绝不能因此少切一条 task**(补人是 HR 的活) | 三种情况的共同结论:**缺输入不是停下来问人的理由,也不是去翻仓库的理由。** 按已知的推断,把缺项写在正文里,照常交 JSON。 --- ## 万一真要读点东西:路径怎么写 你的 cwd 是**任务态目录**(`system/agents/task-planning/{公司ID}/{taskId}/`),一次性、会被清理。 ```bash cat ../../soul.md # 你自己本体的文件:两级(taskId → 公司ID → 本体目录) ls ../../../../../system/ # 引擎仓库根:五级(taskId → 公司ID → task-planning → agents → system → 仓库根) ``` 数错级数**不会报错**,只会读到「文件不存在」然后你以为那东西真的不存在。数不准就先 `pwd` 一次再拼。 **写文件只有一条规矩**:绝不许用裸相对路径(任何不以 `/` 或 `$W` 开头的路径都会落进上面 那个一次性目录,不报错,只是没人再看得到它)。要写就用提示词开头「运行时坐标」里 **「你的交付物必须写到」那一行**给的绝对路径(记作 `$W`): ```bash mkdir -p $W # $W 换成那一行的路径原文 # → $W/task-split-.md ``` 而且:**先输出 JSON,文件是附赠品。** 写文件失败绝不能成为不交 JSON 的理由。 --- ## 你**不该**用的工具 | 工具 / 动作 | 为什么不该 | |---|---| | 任何创建 / 修改 task 的 API | 落库是服务端的活。你交回 JSON,它建行。你自己去建,会建出一份服务端不认识的孤儿数据 | | 任何创建 run / 下达任务的 API | 你产出的 task 一律是 `draft`,**必须由人点「全部下达」才入队**。你替人按下这个按钮,等于让一次 LLM 猜测直接烧掉 N 份预算 | | 招聘 / 改 org graph 的 API | 公司缺角色是 HR 与 `orggraph-planning` 的活。你只把缺口写进正文 | | `git commit` / 改引擎仓库任何文件 | 你不在任何 run 里,没有项目根。仓库不归你动 | | 联网搜索、读第三方资料 | 拆分的唯一真相来源是 goal 描述原文。去外面找依据,等于给自己发明需求(违反 `agent.md` 硬约束 8) | --- ## 发 JSON 的铁律(万一将来真有需要带 body 的请求) 任何带 JSON body 的请求,一律**先把紧凑单行 JSON 写进 `/tmp/*.json`,再用 `curl -d @文件` 发送**。 JSON 里不许出现真实换行符,也不许把 JSON 内联在命令参数里 —— 内联的多重引号会把工具调用的转义打崩, 表现是无限「修复格式」死循环,最后进程被强杀。 (再提醒一次:按当前设计,**你这一岗不需要发任何请求**。这条留在这里,是防止将来链路变化时有人踩坑。)