Files
dstalk/agents/PROMPT_TEMPLATE.md
XiuChengWu 28ae90a6cc
Some checks failed
CI / Determine matrix (push) Has been cancelled
CI / ${{ matrix.os }} / ${{ matrix.build_type }} (push) Has been cancelled
CI / Sanitizer (ASan+UBSan) / ubuntu-24.04 (push) Has been cancelled
CI / Coverage (gcovr) / ubuntu-24.04 (push) Has been cancelled
W23: close mailroom metadata and network validation tests
- Refresh agents STATUS to W22.6 and exclude mailroom from metadata scans
- Add mailroom dispatch checklist and defensive rules
- Register F-23.D-1 and tag network input validation defense-in-depth
- Update network plugin tests for header length limits
- Fix LSP test metadata and remove orphan anthropic_internal.hpp

Verification:
- cmake --build build --config Release: 0 error, 0 warning
- ctest --test-dir build --output-on-failure: 10/10 passed
- ctest --test-dir build -R dstalk_smoke_test --output-on-failure: passed
- python scripts/check_agents_metadata.py --strict: passed

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 17:56:45 +08:00

8.2 KiB
Raw Blame History

子代理 Prompt 模板

版本: 1.0 (W10.3 朱晴设计) 用途: CEO 派活给子代理时复制此模板填写。字段标注"必填"的不可省略。


模板骨架

你扮演 dstalk 团队成员 <姓名> (<agent-id>) — <角色>。读 `agents/<agent-id>/profile.md` 了解你的人设。

**W<n>.<m> 任务**<一句话目标>

**背景**<2-4 句,说明为什么做这个、依赖什么前置工作、不做的后果是什么>

**请读**:
- <文件 1>          ← 控制在 6 个以内,超过说明任务拆得不够细
- <文件 2>
- ...

**前序成果** (必填):
- `docs/reference/<某文档>` — W<x>.<y> <作者> 产出,<一句话关联>
- `agents/<id>/profile.md` — 前序任务记录,看历史决策
- <如无需依赖前序 Wave写"无"并说明原因>

**任务范围** (必填):
- 必做: <具体、可验证的事情>
- 可做: <锦上添花但不强制的事>
- 不做: <明确排除的事情,即使看似相关也不碰>

**禁忌** (必填):
- 不要碰 `<某目录>/<某文件>` — <原因,如 "W<x>.<y> <人名> in-flight">
- 不要 <某行为> — <原因,如 "与 plugin-abi.md §3.2 冲突">
- <若当前无 in-flight 冲突,写"当前无 in-flight 工作区冲突"——但不能留空>

**交付清单** (必填,每条带验收标准):
1. <文件路径>: <具体改动内容> — 验收: <可观测的通过条件>
2. <文件路径>: <具体改动内容> — 验收: <可观测的通过条件>
3. `agents/<agent-id>/profile.md`: performance_log 追加 W<n>.<m> — 验收: 新条目出现在文件中
- **Finding 关联**如有Fixes: F-<Wave>-<N>

**验证步骤**:
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 子代理就冲突了。

✅ 修复: 任务范围给"必做/可做/不做"三档。
   "可做"是子代理的自由发挥区,"不做"是硬边界。

反模式 7: 缺少 Finding 关联

❌ 案例: W14.3 曹武的修复任务修复了 F-13.5-1 (network_plugin TLS 证书验证)
   但 prompt 和报告均未标注 Fixes: F-13.5-1
   导致 findings-registry 无法追踪修复进度,发现状态停留在 OPEN。

✅ 修复: 所有修复审计发现的任务必须在 prompt 交付清单中标注
   Fixes: F-<Wave>-<N>(对应 findings-registry.md 中的发现 ID。
   示例W14.3 曹武的修复任务应标注 `Fixes: F-13.5-1`。

正模式示例: 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 派活前 5 步检查

派活前逐项确认,缺一不可:

# 检查项 操作 写入模板字段
1 列 in-flight 工作区 查当前有哪些子代理在跑、他们各自改了哪些文件/目录 禁忌
2 找前序 Wave 产出 agents/*/profile.md 的 performance_log 追溯与本任务关联的之前 Wave 的产出文件 前序成果
3 设定任务范围三档 把需求拆成"必做/可做/不做",不做 = 硬边界 任务范围
4 统一字数上限 固定 250 字,不再按任务调整 字数上限
5 扫候选执行者 inbox 查看 agents/mailroom/inbox/<agent-id>/ 是否有 pending handoff / blocker有阻塞先处理阻塞 前序成果 / 禁忌

参考