Files
dstalk/agents/WORKFLOW.md
XiuChengWu 004a81db96
Some checks failed
CI / Determine matrix (push) Has been cancelled
CI / ${{ matrix.os }} / ${{ matrix.build_type }} (push) Has been cancelled
Wave 7: collaboration framework hardening (W10.1-W10.4)
Pure agents/ documentation work — first contributions from 4
previously-idle members (yang/li/zhu/xu).

- W10.1 yang: WORKFLOW §11-§13 — collaboration state machine
  (9 states / 16 transitions), 10-item acceptance checklist,
  7-scenario failure rollback playbook (+227 lines)
- W10.2 li: agents/STATUS.md — live roster + group + Wave
  progress snapshot (65 lines)
- W10.3 zhu: agents/PROMPT_TEMPLATE.md — subagent prompt
  template with 6 anti-patterns + 1 worked example +
  4-step pre-dispatch checklist (193 lines)
- W10.4 xu: agents/POSTMORTEM.md — 5 incident records
  (PM-001 stale-obj, PM-002 boost-json, PM-003 cross-DLL-heap,
  PM-004 loader-fail-fast, PM-005 push-force) + 7 defensive
  rules (172 lines)

No code changes. WORKFLOW.md §9 has a pointer to the new
PROMPT_TEMPLATE.md. STATUS.md updated to reflect W10.1
completion (yang status flipped working→idle).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-27 05:52:02 +08:00

20 KiB
Raw Blame History

dstalk 团队工作流CEO 多代理协作模式)

本文档供 CEO主会话和所有员工子代理参考。新会话恢复 CEO 模式时第一件事就是读这里。

1. 编制与并行度

  • 团队规模 = CPU 物理核数dstalk = 16 人)1 CEO + 3 架构师 + 5 工程师 + 3 QA + 2 DevOps + 1 设计师 + 1 作家 + 1 安全
  • 每个员工有 agents/<id>/profile.md:含 personality / background / strengths / weaknesses / performance_log
  • 单波并行子代理数:69 路(工作中员工占总人数 50150%,即 824 路)。超过会上下文炸;少于 4 路浪费 CPU
  • 子代理调度:Agent 工具 + subagent_type: general-purpose + run_in_background: true,让通知机制驱动,不要 poll

2. 6 阶段协作流程

每个 Wave 都按这个流程:

  1. propose提案 — CEO 把需求拆成 N 个候选任务(W<wave>.<seq> 编号,如 W2.1、W9.4
  2. vote投票 — 派 34 个子代理读代码独立评估、投票同意/反对/优化
  3. optimize优化 — 被反对的提案,提案方根据反对意见迭代
  4. integrate整合 — CEO 汇总成统一可执行计划
  5. execute执行 — 派对应专长的员工子代理实施
  6. CEO inspect验收cmake --build build --config Release + ctest -R smoke0 error + 100% pass 才算过

简单任务可跳 2-4 直接 propose→execute→inspect。有架构争议的必须走完 6 阶段。

3. 两级管理

  • 第一级CEO最优先CEO 决策优先于一切小组自治CEO 验收是最终关卡
  • 第二级(小组自治)agents/groups/grp-*.md 定义工作小组,组内事务自决
  • 冲突时 CEO > group lead > 个人

4. 任务分发禁忌(每个 Agent prompt 必带)

派子代理时必须显式列出

  • 可读的文件(白名单)
  • 禁止碰的文件/目录(防止与 in-flight 子代理冲突,例如 W7 改 smoke_test 时其他人禁碰 tests/
  • 验证步骤cmake --build + ctest
  • 报告格式 + 字数上限200300 字典型)
  • profile.md 更新要求(每个任务必须追加 performance_log

不写禁忌 → 多个子代理同时改同一个文件 → 冲突回滚 → 时间浪费。

5. CEO 自查与验收节奏

  • 每波结束:跑一次完整 cmake --build build --config Release + ctest -R smoke
  • 预存 bug:发现编译错时先 git stash 试 master 是否干净——区分"子代理引入"和"预存 bug"。预存 bug CEO 自己改不甩锅
  • stale obj 问题clang-cl 增量构建偶尔不识别源文件修改lsp_plugin/tools_plugin 踩过坑),症状是编译报告的行号源码内容与磁盘不符。解法:rm -f build/**/<file>.cpp.obj 强制重编
  • CEO 验收通过后立刻 commit + push(用户硬规则:"别忘了每次通过ceo验收的提交git并推送"

6. 关键技术约束(已踩坑,全员必读)

约束 由来 文档
跨 DLL 堆纪律:插件不得用 std::malloc/std::free,必须 host->alloc/host->free/host->strdup 陈风 W2.1 docs/reference/plugin-abi.md
Boost.JSON header-only每个使用 <boost/json.hpp> 的翻译单元必须 #include <boost/json/src.hpp> 王测 W7 (代码内 include)
C ABI + atomic 回调:跨 DLL 函数指针必须 std::atomic<fn_ptr> + memory_order_acquire/release 林深 W1.1 docs/reference/plugin-abi.md §6
api_key 安全清零on_shutdown 必须 volatile char* 写零循环 + clear 曹武 W2.2 docs/explanation/security-logging.md
CRT/MD 动态 CRTCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL 胡桐 W3 (build 配置)
initialize_all 容错:单插件失败不阻断其他插件,返回失败计数 黄岭 W9.8 dstalk-core/src/plugin_loader.cpp

7. Wave 编号与历史

进入项目时第一件事:读 agents/*/profile.mdperformance_log,从最大 W 号继续下一波。

已完成的高水位(截至 2026-05-27W1.1、W2.1、W2.2、W3、W4、W5.1、W6.1、W7、W8.1、W9.1、W9.3、W9.4、W9.6、W9.8。Wave 6 还有 W9.10 in-flight。

下一个新提案应从 W10.x 开始。

8. 用户消息模式识别CEO 行为指南)

用户说 CEO 行动
"团队不能闲着" / "去开会安排工作" 立刻派下一波,不要解释 / 不要问"派什么"——基于 profile.md 弱项 + master 待办自己想
"推送完了" 该 commit 的 commit 完、push 完,不要重复推;继续下一波
"ceo管理所有" / "小组自治" 重申两级管理,不要把 CEO 决策权下放
沉默 / "继续" 等 in-flight 完成 + 验收 + 自动派下一波
"记录" / "保存" / "下次也要这样" 写到 agents/WORKFLOW.md(公共)+ CEO 私有 memory双轨

9. 子代理 prompt 模板(复制即用)

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

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

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

请读:
- <文件 1>
- <文件 2>
- ...

**交付**
1. <可执行步骤 1>
2. <可执行步骤 2>

**禁忌**
- 不要碰 <某目录>in-flight 中)
- 不要 <某行为>(与设计原则冲突)

实现完成后必须 cmake --build build --config Release 验证 0 error并跑 ctest -R smoke 验证 100% pass。

完成后更新 `agents/<agent-id>/profile.md` performance_log 追加 W<n>.<m> 项。

**报告格式**(不超过 N 字):
1. 改的代码行号 + 关键 diff
2. 测试输出最后几行
3. profile.md 已更新

本节模板已迁移到 agents/PROMPT_TEMPLATE.md,本处保留备份。

10. 关联文档

11. 协作状态机(强制规则)

状态机定义每个 Wave 从提案到交付(或终止)的合法路径。所有状态转换必须满足明确条件,不存在"CEO 感觉可以就过"的模糊转换。

11.1 状态定义

状态 类型 含义
PROPOSE 活跃 CEO 拆解需求为候选任务,编号 W<n>.<m>
VOTE 活跃 3-4 名子代理独立评估提案,投票同意/反对/否决
OPTIMIZE 活跃 被否决的提案根据反对意见逐条修改
INTEGRATE 活跃 CEO 汇总投票结果为统一可执行计划
EXECUTE 活跃 指派专长员工实施,每人有明确文件白名单和禁忌清单
INSPECT 活跃 CEO 运行完整验收清单§12逐项核对
SUCCESS 终止 Wave 完成git commit + git push
ABORT 终止 CEO 判定任务不再可行,丢弃本 Wave
ROLLBACK 终止 不可恢复错误,回退触发改动后重新决策

11.2 状态转换图

                    +----------+
                    | PROPOSE  |
                    +----+-----+
                         |
              simple     |     complex
           +-------------+--------------+
           |                            |
           |                            v
           |                       +----------+
           |                       |   VOTE   |
           |                       +----+-----+
           |                            |
           |              +-------------+-------------+
           |              | >50% reject | pass        |
           |              v             v             |
           |        +----------+  +-----------+       |
           |        | OPTIMIZE |  | INTEGRATE |       |
           |        +----------+  +-----+-----+       |
           |                            |             |
           |                            v             |
           |                      +----------+        |
           +--------------------->| EXECUTE  |<-------+
                                  +----+-----+
                                       |
                            +----------+----------+
                            | done    | fatal      |
                            v         v            |
                      +----------+ +----------+    |
                      | INSPECT  | | ROLLBACK |    |
                      +----+-----+ +----------+    |
                           |
                 +---------+---------+
                 | pass   | fail     |
                 v        v          |
           +----------+  +-------+   |
           | SUCCESS  |  | FAIL  |   |
           +----------+  +-------+   |

回边(图中未画以避免杂乱,均以文字列出):

  • OPTIMIZE --re-vote--> VOTE
  • OPTIMIZE --fundamental rewrite--> PROPOSE
  • INSPECT fail --fixable--> EXECUTE
  • INSPECT fail --design--> OPTIMIZE
  • INSPECT fail --fatal--> ROLLBACK
  • INSPECT fail --abandon--> ABORT

全局出口(任意状态):

  • ANY --CEO abort--> ABORT

11.3 转换条件表

# 触发条件 决策者
T1 PROPOSE VOTE 任务涉及跨模块改动 OR 涉及架构决策 OR 涉及新增公共 API OR CEO 指定需评审 CEO
T2 PROPOSE EXECUTE 单文件改动 AND 不涉及公共头文件 AND 不涉及 CMakeLists.txt AND CEO 判定为简单任务 CEO
T3 VOTE OPTIMIZE (反对票数 / 总票数) > 0.5 OR 任一投票者给出"否决"并附具体技术理由 自动(计票)
T4 VOTE INTEGRATE 所有投票者标记"同意" OR (反对票 ≤ 50% AND 无否决票) 自动(计票)
T5 OPTIMIZE VOTE 提案方完成修改,提交修订版提案申请重新投票 提案方
T6 OPTIMIZE PROPOSE 修改范围超出原提案 50%,实质成为新提案 CEO
T7 INTEGRATE EXECUTE CEO 输出统一执行计划(任务-执行者映射 + 文件白名单 + 禁止触碰清单 + 验证步骤) CEO
T8 EXECUTE INSPECT 所有指派的执行者子代理均已返回 done 报告(含 cmake build 0 error + ctest 100% pass 自述) 自动(全员 done
T9 EXECUTE ROLLBACK 任一执行者报告以下任一情况且 CEO 判定不可原地修复:段错误 / ABI 破坏 / CMake 无法 configure / 数据文件损坏 CEO
T10 EXECUTE ABORT CEO 判定需求不再成立 OR 外部依赖不可用 CEO
T11 INSPECT SUCCESS §12 验收清单全部通过cmake configure 0 error AND cmake build 0 error 0 warning(改动文件) AND ctest 100% pass AND 测试目标数 ≥ 上一波 AND profile.md 已更新 AND 无未跟踪临时文件 AND git diff 无无关改动 CEO
T12 INSPECT EXECUTE 验收失败但满足全部:根因可定位到具体文件+行号 AND ≤2 个文件 AND ≤30 行改动 AND 不需重新设计 CEO
T13 INSPECT OPTIMIZE 验收暴露以下任一设计问题:接口不兼容(编译通过但运行时错)/ 性能偏差 >50% / 架构假设被证伪(如单线程假设在多线程场景崩溃) CEO
T14 INSPECT ROLLBACK 验收发现不可逆副作用:文件错误删除或覆盖 / 二进制损坏 / .git 目录状态异常 CEO
T15 INSPECT ABORT CEO 判定继续修复成本 > 重新执行成本(需改 >5 个文件且涉及多个执行者重新协调) CEO
T16 ANY ABORT 用户明确指令中止 OR 触发安全红线(凭证泄露、未加密敏感数据落盘) CEO

11.4 状态进入/退出动作

状态 进入动作 退出动作
PROPOSE CEO 在 WORKFLOW.md §7 登记 W<n> 编号 提案内容归档到 agents/ 目录
VOTE CEO 派 3-4 路 vote 子代理prompt 含提案全文和评审标准 计票结果写入 WORKFLOW.md §7
EXECUTE CEO 记录执行者名单 + 文件白名单 + 禁忌清单 汇总所有执行者报告
INSPECT CEO 运行 §12 完整验收清单 验收结果和通过/失败项写入 WORKFLOW.md §7
SUCCESS CEO 执行 git commit + git push
ROLLBACK 执行 §13.6 ROLLBACK 协议 6 步 回退原因和影响文件写入 WORKFLOW.md §7
ABORT 记录中止原因和时间 本波 W 编号标记 ABORTED写入 WORKFLOW.md §7

12. 验收清单CEO inspect 硬指标)

以下全部为强制检查项,缺一不可。CEO 在 INSPECT 状态必须逐项核对,任一未通过即判定 inspect 失败。

12.1 构建检查

# 检查项 命令/方法 通过标准
B1 cmake configure cmake --preset release 2&gt;&amp;1 exit code = 0stderr 无 "error:"
B2 cmake build cmake --build build --config Release 2&gt;&amp;1 exit code = 0stderr 无 "error:"
B3 编译警告 B2 输出中每个 warning 所在文件与 git diff --name-only HEAD 比对 本次改动文件产生 0 warning;非改动文件的预存 warning 不阻塞验收但需记录在案

12.2 测试检查

# 检查项 命令/方法 通过标准
T1 ctest 全量 ctest --test-dir build --output-on-failure 100% tests passed, 0 tests failed
T2 测试数量 ctest -N --test-dir build 统计测试目标数 测试目标数 ≥ 上一波记录值(覆盖不减少)
T3 smoke 专项 ctest -R smoke --test-dir build 100% passedsmoke 是回归底线,不可失败)

12.3 交付物检查

# 检查项 命令/方法 通过标准
D1 profile 更新 逐个检查本波每个执行者的 agents/&lt;id&gt;/profile.md 每个执行者 performance_log 含本波 W 编号条目
D2 无临时文件 git status --short 无 .tmp / .swp / *~ / .DS_Store / build/ 目录下的未跟踪文件
D3 diff 纯净性 git diff HEAD 逐文件审核 改动仅涉及任务相关文件,无意外修改;任何疑问 diff 块需执行者解释
D4 子代理自述 检查每个执行者子代理返回的最终消息 含 "cmake build 0 error" + "ctest 100% pass" 自述

12.4 验收结论映射

失败项组合 严重级别 回退目标
仅 B1/B2/B3 失败 执行错误 INSPECT → EXECUTE修复构建
仅 T1/T2/T3 失败 执行错误 INSPECT → EXECUTE修复测试
仅 D1/D2/D3/D4 失败 流程错误 INSPECT → EXECUTE补文档/清理文件)
B类 + T类 同时失败 设计错误 INSPECT → OPTIMIZE
失败涉及 >2 个执行者 设计错误 INSPECT → OPTIMIZE
全部通过 INSPECT → SUCCESS

13. 失败回退路径(强制处理协议)

以下协议覆盖所有阶段的失败场景。每个场景的处理步骤为强制规则,不存在"CEO 视情况灵活处理"的模糊空间。

13.1 PROPOSE 阶段失败

  • 症状CEO 无法将需求拆解为可执行任务(需求模糊 / 范围过大 / 与现有架构冲突)
  • 处理CEO 直接重写提案。缩小范围或拆分为多个 Wave。本 Wave 不进入 VOTE。
  • 重试上限:最多重写 2 次。第 3 次仍不可行 → ABORT记录原因到 WORKFLOW.md §7。
  • 责任人CEO

13.2 VOTE 阶段否决

  • 症状>50% 投票者反对 OR 任一投票者给出技术否决
  • 处理步骤
    1. CEO 汇总所有反对票的具体理由,归档到 WORKFLOW.md §7
    2. 进入 OPTIMIZE由原提案方根据反对意见逐条修改
    3. 修改完成后重新进入 VOTE
    4. 连续 2 轮 VOTE 均被否决 → 回到 PROPOSECEO 重新出提案(原方案方向放弃)
    5. 连续 3 轮 PROPOSE→VOTE→OPTIMIZE 循环仍无共识 → ABORTCEO 判定该需求当前不可执行
  • 责任人:提案方(第 1 轮修改)+ CEO第 2 轮起裁决)

13.3 OPTIMIZE 阶段僵局

  • 症状:提案方无法在合理范围内满足反对意见 OR 修改导致方案退化
  • 处理
    1. 修改范围 > 原提案 50% → 回到 PROPOSE作为新提案重新编号
    2. 反对意见本身有争议 → CEO 仲裁,判定反对是否成立
    3. CEO 判定无法调和 → ABORTCEO 另起替代方案
  • 责任人CEO

13.4 EXECUTE 阶段失败

  • 症状:执行者子代理返回失败(编译错误 / 测试失败 / 无法完成任务)

分级处理表

失败级别 条件 处理 责任人
L1 轻微 单执行者失败,根因明确,修复 ≤30 行 CEO 在原 prompt 追加修复指令,同一执行者重试(仅 1 次) 原执行者
L2 中等 L1 重试仍失败 OR 失败涉及 >2 个文件 CEO 换人执行选同专长其他员工OR CEO 亲自修复 CEO
L3 严重 多执行者同时失败 OR 构建系统破坏 OR ABI 破坏 进入 ROLLBACKgit checkout -- &lt;触发文件&gt; + CEO 判定是否缩小范围重新 EXECUTE CEO
L4 致命 数据损坏 / 无法定位的段错误 / 安全漏洞暴露 进入 ROLLBACK + 指派 security-cao 安全审计 CEO + security-cao

13.5 INSPECT 阶段失败

处理协议(按步骤强制执行,不可跳过)

  1. 先回退触发改动git checkout -- &lt;验收失败的源文件&gt;,确保仓库回到可构建状态
  2. 验证回退成功cmake --build build --config Release 必须 0 error
  3. 定位根因确认失败属于执行错误execution error还是设计错误design error
  4. 按分级表处理
失败类型 判定标准 回退目标 后续动作
E1 执行错误 编译警告/错误可定位到具体行,修复不涉及接口变更 EXECUTE 原执行者修复1 次机会CEO 复核
E2 执行错误(重复) 同一执行者同类错误第 2 次出现 EXECUTE 换人执行(同专长其他员工)
D1 设计错误 接口不兼容 / 架构假设错误 / 需改公共头文件 OPTIMIZE 提案方重新设计,走完整 VOTE→INTEGRATE→EXECUTE
D2 设计错误(严重) 需回退 >3 个文件 OR 涉及 ABI 变更 ROLLBACK 回退后 CEO 重新 PROPOSE缩小任务范围
F1 致命 数据损坏 / 安全漏洞 / .git 异常 ROLLBACK 回退 + security-cao 审计 + CEO 决定是否 ABORT

13.6 ROLLBACK 协议(强制步骤)

当触发 ROLLBACK 时,按以下步骤强制执行,不可跳过任何一步

  1. git status → 记录当前所有改动文件列表
  2. git checkout -- &lt;触发失败的所有文件&gt; → 回退触发改动的文件
  3. cmake --build build --config Release → 确认回退后构建 0 error
  4. ctest -R smoke --test-dir build → 确认回退后测试 100% pass
  5. 在 WORKFLOW.md §7 记录:回退原因、触发文件列表、决策(重做 / 缩小范围 / 放弃)
  6. CEO 根据 §13.5 分级表选择后续路径(重新 EXECUTE / 重新 PROPOSE / ABORT

13.7 ABORT 协议(强制步骤)

当触发 ABORT 时,按以下步骤强制执行:

  1. 在 WORKFLOW.md §7 记录:中止原因、时间、影响范围
  2. 决定改动处置:保留(git stash)或丢弃(git checkout
  3. 本波 W 编号标记为 ABORTED下一波使用新编号
  4. 相关执行者 profile.md performance_log 仍追加条目rating: aborted保留参与记录