# 子代理 Prompt 模板 > **版本**: 1.0 (W10.3 朱晴设计) > **用途**: CEO 派活给子代理时复制此模板填写。字段标注"必填"的不可省略。 --- ## 模板骨架 ``` 你扮演 dstalk 团队成员 <姓名> () — <角色>。读 `agents//profile.md` 了解你的人设。 **W. 任务**:<一句话目标> **背景**:<2-4 句,说明为什么做这个、依赖什么前置工作、不做的后果是什么> **请读**: - <文件 1> ← 控制在 6 个以内,超过说明任务拆得不够细 - <文件 2> - ... **前序成果** (必填): - `docs/reference/<某文档>` — W. <作者> 产出,<一句话关联> - `agents//profile.md` — 前序任务记录,看历史决策 - <如无需依赖前序 Wave,写"无"并说明原因> **任务范围** (必填): - 必做: <具体、可验证的事情> - 可做: <锦上添花但不强制的事> - 不做: <明确排除的事情,即使看似相关也不碰> **禁忌** (必填): - 不要碰 `<某目录>/<某文件>` — <原因,如 "W. <人名> in-flight"> - 不要 <某行为> — <原因,如 "与 plugin-abi.md §3.2 冲突"> - <若当前无 in-flight 冲突,写"当前无 in-flight 工作区冲突"——但不能留空> **交付清单** (必填,每条带验收标准): 1. <文件路径>: <具体改动内容> — 验收: <可观测的通过条件> 2. <文件路径>: <具体改动内容> — 验收: <可观测的通过条件> 3. `agents//profile.md`: performance_log 追加 W. — 验收: 新条目出现在文件中 **验证步骤**: cmake --build build --config Release && ctest --test-dir build -C Release # 期望: 0 error, 0 warning, 100% smoke test pass **字数上限**: 250 字(报告正文不含代码块,统一标准) **profile.md 更新**: 必须追加,rating: <由执行者自评 (A/A-/B+/B/C)> ``` --- ## 反模式案例 以下错误均来源于 Wave 1-9 实战总结: ### 反模式 1: "禁忌"为空 ``` ❌ 案例: W5.1 派陈风改 plugin_loader.cpp,同时派孙码改 host.cpp, 两人都改了 g_diag_callback 的声明方式,合并冲突导致回滚 40 分钟。 根因: CEO 没在 prompt 里写"不要碰 host.cpp 的 g_diag_callback"。 ✅ 修复: 禁忌必须显式列出所有 in-flight 子代理的工作区文件。 格式: "不要碰 src/host.cpp — W5.1 孙码 in-flight,改 g_diag_callback" ``` ### 反模式 2: "请读"列出 30 个文件 ``` ❌ 案例: W6.1 某次 prompt 列了 30 个文件要子代理读, 子代理上下文窗口超限,读完文件后只剩 2KB 预算用于实际工作, 输出质量断崖式下跌。 ✅ 修复: "请读"控制在 6 个以内。超过说明任务粒度太粗, CEO 应先拆成 2-3 个子任务再派。 ``` ### 反模式 3: "交付"用模糊词 ``` ❌ 案例: "改善错误处理"、"优化性能"、"增强可维护性" — 子代理改了 5 个文件,CEO 验收时发现改的不是 CEO 想要的东西, 但 prompt 本身无法作为验收依据。 ✅ 修复: 交付清单必须 numbered list + 每个条目有验收条件。 格式: "2. src/host.cpp: 增加 timeout 参数校验 — 验收: 传入 0 返回 -1" ``` ### 反模式 4: 没说"前序成果" ``` ❌ 案例: W8.1 子代理被要求"增加插件版本检查", 但 W1.1 林深已实现过类似的 compare_version(), 子代理重新实现了整个函数,逻辑还比原版少了一个边界检查。 ✅ 修复: 前序成果字段必填。如果确实没有可依赖的前序工作,写"无"并说明原因。 ``` ### 反模式 5: 字数上限不统一 ``` ❌ 案例: W3 上限 200 字, W5.1 上限 300 字, W9.6 无上限, 子代理每次都要猜 CEO 想要多详细,报告质量波动大。 ✅ 修复: 统一 250 字。如需更详细的内容(如大量 diff), 让子代理在报告末尾注明"详见 <文件>"即可。 ``` ### 反模式 6: 缺"任务范围" ``` ❌ 案例: W2.1 陈风接到"修复跨 DLL 堆问题",任务只说改 plugin_loader.cpp, 但他顺便重构了 plugins/tools/file-io 的内存分配—— 结果是好的但风险高,若当时 file-io 有 in-flight 子代理就冲突了。 ✅ 修复: 任务范围给"必做/可做/不做"三档。 "可做"是子代理的自由发挥区,"不做"是硬边界。 ``` --- ## 正模式示例: W9.4 林深 (回写) 以下基于 W9.4 的实际交付成果回写 prompt,展示正确用法: ``` 你扮演 dstalk 团队成员 林深 (architect-lin) — 架构师。读 `agents/architect-lin/profile.md` 了解你的人设。 **W9.4 任务**:撰写 `docs/reference/plugin-abi.md` Plugin ABI 契约文档 **背景**:跨 DLL 堆纪律在 W2.1 暴露问题后靠口头传递,需要一份规范性文档。 必须覆盖内存所有权、注册契约、生命周期、线程安全、依赖声明, 让插件作者和 host 维护者有统一的"法律文本"可查。 **请读**: - dstalk-core/include/dstalk/dstalk_host.h - dstalk-core/include/dstalk/dstalk_types.h - dstalk-core/src/plugin_loader.cpp - dstalk-core/src/host.cpp - dstalk-core/src/service_registry.cpp - dstalk-core/src/event_bus.cpp **前序成果** (必填): - W2.1 陈风: 跨 DLL 堆纪律的代码修复 (plugin_loader.cpp, host.cpp) — 作为 §3 的素材 - W1.1 林深: g_diag_callback atomic 修复 (host.cpp) — 作为 §6.1 的素材 - W2.2 曹武: api_key 安全清零模式 — 作为 §5 安全实践的参考 **任务范围** (必填): - 必做: 覆盖 7 个契约要点 (DSTALK_API_VERSION / 内存所有权 / 跨DLL堆纪律 / register_service / on_init-on_shutdown / 回调线程安全 / 依赖声明), 每个要点含代码示例 + 反例 + 设计理由 - 可做: 追加"变更历史"表格,风格参考现有 docs/ 文件 - 不做: 修改任何 .cpp / .hpp 源码文件。本任务只产出文档。 **禁忌** (必填): - 不要碰 src/ 目录 — 这是纯文档任务 - 不要碰 agents/ 目录 — W9.3 杨帆 in-flight 改 WORKFLOW.md - 不要改 dstalk_host.h 的 API_VERSION 值 — 这需要单独的 W 提案 **交付清单** (必填,每条带验收标准): 1. `docs/reference/plugin-abi.md`: 新建文件,约 200 行,7 个契约要点 — 验收: 文件存在且每个 § 有代码 snippet + 反例 2. `docs/README.md`: reference 区新增 plugin-abi.md 入口 — 验收: git diff 显示新增一行链接 3. `agents/architect-lin/profile.md`: performance_log 追加 W9.4 — 验收: 新条目出现在文件中 **验证步骤**: cmake --build build --config Release && ctest --test-dir build -C Release **字数上限**: 250 字 **profile.md 更新**: 必须追加,rating: <由执行者自评> ``` --- ## CEO 派活前 4 步检查 派活前逐项确认,缺一不可: | # | 检查项 | 操作 | 写入模板字段 | |---|--------|------|-------------| | 1 | **列 in-flight 工作区** | 查当前有哪些子代理在跑、他们各自改了哪些文件/目录 | `禁忌` | | 2 | **找前序 Wave 产出** | 从 `agents/*/profile.md` 的 performance_log 追溯与本任务关联的之前 Wave 的产出文件 | `前序成果` | | 3 | **设定任务范围三档** | 把需求拆成"必做/可做/不做",不做 = 硬边界 | `任务范围` | | 4 | **统一字数上限** | 固定 250 字,不再按任务调整 | `字数上限` | --- ## 参考 - [WORKFLOW.md §9](./WORKFLOW.md) — 原始模板(历史备份) - [plugin-abi.md](../docs/reference/plugin-abi.md) — 完整任务产出示例 - [architect-lin/profile.md](./architect-lin/profile.md) — W9.4 执行记录