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>
This commit is contained in:
172
agents/POSTMORTEM.md
Normal file
172
agents/POSTMORTEM.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# dstalk 项目踩坑记录 (Postmortem)
|
||||
|
||||
> **性质**: 历史记录,非设计文档。每个条目基于已发生的事故。
|
||||
> **受众**: 全员。新员工/新会话第一份应读材料。
|
||||
> **更新规则**: 每次新事故发生后,由 QA 追加一条记录并更新汇总表。
|
||||
|
||||
---
|
||||
|
||||
## PM-001: clang-cl 增量构建 stale .obj 文件
|
||||
|
||||
- **首次发现**: Wave 5 / CEO 验收阶段 / `plugins/lsp/src/lsp_plugin.cpp` 及 `plugins/tools/src/tools_plugin.cpp`
|
||||
- **症状**:
|
||||
```
|
||||
# 编译通过,但运行行为与源码不一致;报错行号指向磁盘上已不存在的旧代码
|
||||
# clang-cl 报告的 warning/error 行内容与当前源文件内容不符
|
||||
```
|
||||
- **根因**: clang-cl 增量构建的时间戳/依赖追踪偶尔遗漏源文件的磁盘修改,重复使用过期的 `.obj` 缓存。并非 CMake 依赖图错误——`cmake --build` 认为目标已是最新,跳过重编译。
|
||||
- **影响范围**: 任何使用 clang-cl 增量编译的 `.cpp` 文件;lsp_plugin 和 tools_plugin 至少各中招一次。
|
||||
- **修复方法**:
|
||||
```bash
|
||||
rm -f build/**/<file>.cpp.obj # 删除可疑 .obj 强制重编译
|
||||
cmake --build build --config Release
|
||||
```
|
||||
彻底保险:`cmake --build build --config Release --clean-first`(但耗时)。
|
||||
- **防御性规则**(同步到 WORKFLOW.md §6):
|
||||
- **R-STALE-OBJ**: CEO 验收编译前,若运行结果与源码不符,先怀疑 stale obj,`rm -f build/**/<suspect>.cpp.obj` 重试。
|
||||
- **检测方法**:
|
||||
- 对比 `.cpp` 的 mtime 与 `.cpp.obj` 的 mtime:obj 更旧但 `ninja -n` 显示 "no work to do" 时判定 stale。
|
||||
- CI 中关键构建(PR merge / release)使用 `--clean-first`。
|
||||
|
||||
---
|
||||
|
||||
## PM-002: Boost.JSON header-only 链接错误
|
||||
|
||||
- **首次发现**: Wave 3 (胡桐 W3) / Wave 7 (王测 W7) / 5 个插件翻译单元
|
||||
- `plugins/deepseek/src/deepseek_plugin.cpp`
|
||||
- `plugins/anthropic/src/anthropic_plugin.cpp`
|
||||
- `plugins/session/src/session_plugin.cpp`
|
||||
- `plugins/lsp/src/lsp_plugin.cpp`
|
||||
- `plugins/tools/src/tools_plugin.cpp`
|
||||
- **症状**:
|
||||
```
|
||||
# MSVC linker (Release /MD):
|
||||
error LNK2001: unresolved external symbol "class boost::json::value ..."
|
||||
error LNK2001: unresolved external symbol "class boost::json::object ..."
|
||||
# 多个 boost::json 符号未解析
|
||||
```
|
||||
- **根因**: Boost 1.86 废弃了 `BOOST_JSON_HEADER_ONLY` 宏——即使定义了该宏,编译器也忽略它,导致 header-only 模式不生效。缺失的 out-of-line 实现(`boost::json::value`、`boost::json::object` 等)在链接时找不到符号。
|
||||
- **影响范围**: 任何 `#include <boost/json.hpp>` 且未同时 include `<boost/json/src.hpp>` 的翻译单元。
|
||||
- **修复方法**:
|
||||
```cpp
|
||||
#include <boost/json.hpp>
|
||||
#include <boost/json/src.hpp> // 必须!提供 out-of-line 实现
|
||||
```
|
||||
每个使用 `<boost/json.hpp>` 的 `.cpp` 文件中,**恰好一次** include `<boost/json/src.hpp>`。
|
||||
- **防御性规则**:
|
||||
- **R-BOOST-JSON-SRC**: 任何插件 `#include <boost/json.hpp>` 时必须同时 `#include <boost/json/src.hpp>`;新增插件 CI 检查是否有缺失。
|
||||
- **检测方法**:
|
||||
- `grep -rl '<boost/json.hpp>' plugins/ | xargs grep -L '<boost/json/src.hpp>'` — 有前者无后者的文件即缺陷。
|
||||
- CI Release 构建必须链接成功(/MD 下 Boost.JSON 符号靠 src.hpp 提供,不链接 boost_json 库)。
|
||||
|
||||
---
|
||||
|
||||
## PM-003: 跨 DLL 堆释放(/MT 必崩,/MD 侥幸)
|
||||
|
||||
- **首次发现**: Wave 2.1 / 陈风 W2.1 (安全审计触发 + B3 评审)
|
||||
- `plugins/file_io/src/file_io_plugin.cpp` — 用 `::malloc` 分配,调用方用 `std::free` 释放
|
||||
- `plugins/tools/src/tools_plugin.cpp:58` — `std::free(host 分配的指针)`
|
||||
- `plugins/session/src/session_plugin.cpp:166` — 同上模式
|
||||
- `tests/smoke_test.cpp` — 三处 `std::free` 应改为 `dstalk_free`
|
||||
- **症状**:
|
||||
```
|
||||
# /MD (动态 CRT): 运行正常(共享 ucrtbase.dll,不同 DLL 的 malloc/free 落在同一个堆——侥幸)
|
||||
# /MT (静态 CRT): 立即崩溃 / heap corruption
|
||||
HEAP CORRUPTION DETECTED: after Normal block (#XXX) at 0x...
|
||||
# 或静默内存损坏,延迟在无关位置崩溃
|
||||
```
|
||||
- **根因**: Windows 每个 DLL 拥有独立 CRT 堆(/MT)或共享同一个 CRT DLL 堆(/MD)。插件在自身 CRT 堆上 `malloc` 得到的指针,传给 host 后 host 调用 `free` —— host 的 CRT 尝试释放一个不属于它的堆上的地址 → 未定义行为。当前项目使用 `/MD` 故不立即触发,但这是一个精度定时炸弹(任何人改 CRT 链接方式就会引爆)。
|
||||
- **影响范围**: 所有插件与 host 之间传递动态分配内存的场景。涵盖 `malloc`/`free`/`strdup`/`new`/`delete`。
|
||||
- **修复方法**:
|
||||
```c
|
||||
// 错误(跨 DLL 堆):
|
||||
char* buf = (char*)::malloc(256);
|
||||
// ...
|
||||
std::free(buf); // 释放者与分配者不同 CRT 堆
|
||||
|
||||
// 正确(统一堆):
|
||||
char* buf = (char*)g_host->alloc(256);
|
||||
// ...
|
||||
g_host->free(buf); // 通过 host_api 函数指针回到同一个堆
|
||||
```
|
||||
详见 `docs/reference/plugin-abi.md` §2-§3。
|
||||
- **防御性规则**:
|
||||
- **R-NO-RAW-ALLOC**: 插件代码严禁直接调用 `malloc`/`free`/`strdup`/`new`/`delete` 处理跨 DLL 边界数据;必须使用 `host->alloc`/`host->free`/`host->strdup`。
|
||||
- **R-TEST-MT**: CI 至少一个配置使用 `/MT` 构建并跑 smoke test,确保跨堆问题在任何 CRT 模式下暴露。
|
||||
- **检测方法**:
|
||||
- `grep -nP '\b(std::)?(malloc|free|strdup|realloc)\b' plugins/**/*.cpp` — 任何命中需审计是否是私有堆操作(不跨 DLL 边界)。
|
||||
- `grep -nP '\bnew\b.*\bdelete\b'` 同审计。
|
||||
- ASan (`-fsanitize=address`) 在 Windows 下对跨堆释放敏感,可捕获 heap-use-after-free / alloc-dealloc-mismatch。
|
||||
|
||||
---
|
||||
|
||||
## PM-004: plugin_loader 单插件失败导致全部初始化终止
|
||||
|
||||
- **首次发现**: Wave 2.1 / 陈风 W2.1 (side-effect 发现) → Wave 9.8 / 黄岭 W9.8 (正式修复)
|
||||
- `dstalk-core/src/plugin_loader.cpp` — `initialize_all()` 函数
|
||||
- **症状**:
|
||||
```
|
||||
# 假设加载 A→B→C 三个插件,B 的 on_init 返回 -1:
|
||||
# 旧行为:
|
||||
[ERROR] Plugin 'B' init failed (code -1)
|
||||
# A 已初始化成功,但 B 失败后 initialize_all 立即 return -1
|
||||
# C 完全未被尝试初始化——即使 C 不依赖 B
|
||||
# 症状: "明明只坏了一个插件,为什么其他插件也不工作?"
|
||||
```
|
||||
- **根因**: 旧版 `initialize_all()` 使用 fail-fast 模式 —— 任何一个 `on_init` 返回非零,整个函数立即返回 `-1`,剩余插件全部跳过。没有"部分成功"的概念。
|
||||
- **影响范围**: 所有依赖于 `initialize_all()` 正常完成的调用方(CLI、GUI、测试)。一个低优先级插件失败会让整个应用退化。
|
||||
- **修复方法** (黄岭 W9.8):
|
||||
- 将 fail-fast 改为 fail-continue:单个 `on_init` 失败 → `fprintf(stderr, ...)` + 标记 `failed_names` + `failed_count++` → `continue` 下一个。
|
||||
- 依赖已失败插件的下游插件自动跳过并 `[WARN]`。
|
||||
- 返回值语义: `0` = 全部成功;`>0` = 失败的插件数;`<0` = 严重错误(循环依赖 / host_api null)。
|
||||
- 代码位置: `plugin_loader.cpp:202-256`。
|
||||
- **防御性规则**:
|
||||
- **R-LOADER-CONTINUE**: 插件加载/初始化**永不 fail-fast**;单点故障不得级联阻断无关插件。
|
||||
- **R-LOADER-RETVAL**: `initialize_all` 返回值 >0 表示部分成功(调用方必须区分 "完全失败" 和 "部分退化")。
|
||||
- **检测方法**:
|
||||
- 单元测试:加载 3 个插件,中间一个 mock 为 "always init fail",验证第 1、3 个正常初始化,且返回值为 1。
|
||||
- smoke test 验证所有 9 个插件加载(当前预期 9/9 通过)。
|
||||
|
||||
---
|
||||
|
||||
## PM-005: git push --force 未在子代理 prompt 中禁止
|
||||
|
||||
- **首次发现**: Wave 1+ / CEO 规则层面 / 无特定代码文件
|
||||
- **症状**:
|
||||
```
|
||||
# 子代理在独立会话中执行 git 操作,可能使用 --force 推送
|
||||
# 远端历史被改写,其他协作者的本地分支与远端不一致
|
||||
# 没有 git hook 阻止,也没有 prompt 模板明确禁止
|
||||
```
|
||||
- **根因**: CEO 规则明确禁止 `push --force`,但该规则只在主会话中有效。子代理的 prompt 模板(`WORKFLOW.md` §9)没有包含此禁忌,子代理不知道这条规则。
|
||||
- **影响范围**: 所有通过 `Agent` 工具派出的子代理。任何子代理执行 `git push` 时都可能误用 `--force`。
|
||||
- **修复方法**:
|
||||
1. 子代理 prompt 模板中增加:"禁止 git push --force / --force-with-lease,禁止 git reset --hard origin/*"
|
||||
2. 可选:服务端 git hook(GitHub branch protection)禁止 force push 到 master。
|
||||
- **防御性规则**:
|
||||
- **R-NO-FORCE-PUSH**: 每个子代理任务 prompt 必须包含 "禁止 git push --force / --force-with-lease";如需改写历史仅限本地 `git rebase -i`(未推送的提交)。
|
||||
- **检测方法**:
|
||||
- GitHub branch protection rule: master 分支禁止 force push。
|
||||
- 每次 CEO 验收后检查 `git reflog` 是否有 force push 痕迹。
|
||||
|
||||
---
|
||||
|
||||
## 防御性规则汇总表 (§6)
|
||||
|
||||
| 规则 ID | 事故 | 规则一句话 |
|
||||
|---------|------|-----------|
|
||||
| R-STALE-OBJ | PM-001 | 运行结果与源码不符时先怀疑 stale obj,`rm -f build/**/<file>.cpp.obj` 重编 |
|
||||
| R-BOOST-JSON-SRC | PM-002 | `#include <boost/json.hpp>` 的 .cpp 必须同时 `#include <boost/json/src.hpp>` |
|
||||
| R-NO-RAW-ALLOC | PM-003 | 插件代码严禁 `malloc`/`free`/`strdup`/`new`/`delete` 跨 DLL 边界;统一用 `host->alloc/free/strdup` |
|
||||
| R-TEST-MT | PM-003 | CI 至少一个配置用 `/MT` 构建并跑 smoke test |
|
||||
| R-LOADER-CONTINUE | PM-004 | 插件加载/初始化永不 fail-fast,单点故障不级联阻断 |
|
||||
| R-LOADER-RETVAL | PM-004 | `initialize_all` 返回值 >0 = 部分成功,调用方必须区分 |
|
||||
| R-NO-FORCE-PUSH | PM-005 | 子代理 prompt 必须禁止 `git push --force` / `--force-with-lease` |
|
||||
|
||||
---
|
||||
|
||||
## 变更历史
|
||||
|
||||
| 日期 | 版本 | 变更 |
|
||||
|------|------|------|
|
||||
| 2026-05-27 | 1.0 | W10.4 初始化。记录 PM-001 至 PM-005,共 5 条事故 7 条防御性规则。 |
|
||||
193
agents/PROMPT_TEMPLATE.md
Normal file
193
agents/PROMPT_TEMPLATE.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# 子代理 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> — 验收: 新条目出现在文件中
|
||||
|
||||
**验证步骤**:
|
||||
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 执行记录
|
||||
67
agents/STATUS.md
Normal file
67
agents/STATUS.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# dstalk 实时编制状态
|
||||
|
||||
> **最后更新**: 2026-05-27
|
||||
> **数据来源**: 由 W10.2 任务自动整理(扫描全部 16 个 `agents/*/profile.md` + 5 个 `agents/groups/*.md` + `git log`)。CEO 可命令任意员工执行同样任务刷新。
|
||||
|
||||
## 表 1:员工状态(16 人)
|
||||
|
||||
| Agent ID | 姓名 | 角色 | 最近一次贡献 | perf_log | 当前小组 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| architect-lin | 林深 | 架构师 | W9.4 撰写 plugin-abi.md (7 点 ABI 契约) | 6 | grp-quality-core, grp-ai-plugins | idle |
|
||||
| architect-yang | 杨帆 | 架构师 | W10.1 WORKFLOW §11-§13 状态机 + 验收清单 + 失败回退 | 2 | -- | idle |
|
||||
| architect-huang | 黄岭 | 架构师 | W9.8 initialize_all 容错修复 (fail-fast → fail-continue) | 2 | -- | idle |
|
||||
| engineer-zhao | 赵码 | 工程师 | W9.6 CLI /history 命令 + /status 集成 | 6 | grp-ai-plugins, grp-cli-ux | idle |
|
||||
| engineer-chen | 陈风 | 工程师 | W2.1 跨 DLL 堆释放修复 (unify host->alloc/free) | 2 | -- | idle |
|
||||
| engineer-li | 李明 | 工程师 | W10.2 STATUS.md 实时编制状态文档 (63 行) | 2 | -- | idle |
|
||||
| engineer-zhou | 周岩 | 工程师 | W5.1 SSE buffer_body 优化 (峰值内存 -67%) | 2 | -- | idle |
|
||||
| engineer-sun | 孙宇 | 工程师 | W6.1 LSP reader_loop 协议合规修复 (状态机解析) | 2 | -- | idle |
|
||||
| qa-wang | 王测 | 质量工程师 | W7 smoke test 9 插件加载修复 + Boost.JSON 链接 | 5 | grp-quality-core, grp-cli-ux | idle |
|
||||
| qa-liu | 刘静 | 质量工程师 | W9.10 host_api 单元测试 (8 cases) | 2 | grp-security-audit | idle |
|
||||
| qa-xu | 徐磊 | 质量工程师 | W10.4 POSTMORTEM.md 踩坑记录 (5 事故 7 规则) | 3 | grp-security-audit | idle |
|
||||
| devops-ma | 马奔 | DevOps | W4 CI pipeline GitHub Actions (Linux/Windows 双矩阵) | 2 | grp-build-matrix | idle |
|
||||
| devops-hu | 胡桐 | DevOps | W3 CMake 4 项现代化 (target-based + Boost config) | 2 | grp-build-matrix | idle |
|
||||
| designer-zhu | 朱晴 | UX/CLI 设计师 | W10.3 PROMPT_TEMPLATE.md 子代理模板 (骨架+反模式+正模式) | 2 | grp-cli-ux | idle |
|
||||
| writer-deng | 邓书 | 技术作家 | W9.1 Diátaxis Explanation 文档 (architecture + plugin-lifecycle) | 2 | -- | idle |
|
||||
| security-cao | 曹武 | 安全工程师 | W9.3 日志凭证泄露审计 (8 文件 0 真实漏洞) | 3 | grp-security-audit | idle |
|
||||
|
||||
> **状态判定规则**: 基于 `performance_log` 最后一条的 `rating`——`ongoing` 视为 `working`,其余 (`A/A+/B/completed/done/success/good`) 视为 `idle`。
|
||||
|
||||
## 表 2:工作组状态(5 组)
|
||||
|
||||
| group_id | 名称 | lead | members | mission | active_tasks | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| grp-quality-core | 核心质量小组 | 王测 | 林深, 王测 | 确保插件化架构的代码质量和测试覆盖 | -- (C2 已交付) | 待命 |
|
||||
| grp-ai-plugins | AI 插件小组 | 赵码 | 赵码, 林深 | AI 相关插件的功能完善和架构优化 | -- | 待命 |
|
||||
| grp-cli-ux | CLI 体验小组 | 赵码 | 赵码, 朱晴, 王测 | 改进 dstalk-cli 的交互体验、健壮性和可测试性 | B3: CLI 交互增强 (信号处理/状态命令/退出码/管道输入) | 执行中 |
|
||||
| grp-build-matrix | 构建矩阵小组 | 马奔 | 马奔, 胡桐 | 完善 CI 跨平台构建矩阵 (Linux/Windows, Clang/MSVC) | -- | 待命 |
|
||||
| grp-security-audit | 安全审计小组 | 曹武 | 曹武, 徐磊, 刘静 | 全面审计内存安全、API 密钥处理、反序列化路径 | -- | 待命 |
|
||||
|
||||
> **成员列来源**: 以 `agents/groups/*.md` 为准(部分成员 profile 未同步更新 `current_groups`)。
|
||||
|
||||
## Wave 进度
|
||||
|
||||
**已完成高水位**: W9.10(已 commit `5766938`)
|
||||
|
||||
**已完成 Wave 清单** (WORKFLOW.md §7 + commit message):
|
||||
W1.1, W2.1, W2.2, W3, W4, W5.1, W6.1, W7, W8.1, W9.1, W9.3, W9.4, W9.6, W9.8, W9.10
|
||||
|
||||
**In-flight (W10.x,尚未 commit)**:
|
||||
|
||||
| 任务 | 负责人 | 交付物 | 状态 |
|
||||
|---|---|---|---|
|
||||
| W10.1 | architect-yang (杨帆) | `agents/WORKFLOW.md` §11-§13 (状态机+验收清单+失败回退, +227 行) | 已完成,未 commit |
|
||||
| W10.2 | engineer-li (李明) | `agents/STATUS.md` (本文件, 65 行) | 已完成,未 commit |
|
||||
| W10.3 | designer-zhu (朱晴) | `agents/PROMPT_TEMPLATE.md` (子代理 prompt 模板, 193 行) | 已完成,未 commit |
|
||||
| W10.4 | qa-xu (徐磊) | `agents/POSTMORTEM.md` (项目踩坑记录, 172 行) | 已完成,未 commit |
|
||||
|
||||
**未提交变更摘要**:
|
||||
- `agents/WORKFLOW.md` — §9 追加模板迁移链接 + §11-§13 杨帆扩展
|
||||
- `agents/architect-yang/profile.md` — 追加 W10.1
|
||||
- `agents/designer-zhu/profile.md` — 追加 W10.3
|
||||
- `agents/qa-xu/profile.md` — 追加 W10.4
|
||||
- `agents/engineer-li/profile.md` — 追加 W10.2
|
||||
- `agents/PROMPT_TEMPLATE.md` — 新增 (untracked)
|
||||
- `agents/POSTMORTEM.md` — 新增 (untracked)
|
||||
- `agents/STATUS.md` — 新增 (untracked, 本文件)
|
||||
|
||||
**下一波建议起点**: W11.x(CEO 先 commit W10.1~W10.4,再派新任务;当前 16/16 员工 idle,产能充足)
|
||||
@@ -108,6 +108,8 @@
|
||||
3. profile.md 已更新
|
||||
```
|
||||
|
||||
> **本节模板已迁移到 [agents/PROMPT_TEMPLATE.md](PROMPT_TEMPLATE.md)**,本处保留备份。
|
||||
|
||||
## 10. 关联文档
|
||||
|
||||
- [README.md](README.md) — 团队花名册 + 公司宗旨
|
||||
@@ -116,3 +118,230 @@
|
||||
- [../docs/explanation/architecture.md](../docs/explanation/architecture.md) — 架构哲学
|
||||
- [../docs/explanation/plugin-lifecycle.md](../docs/explanation/plugin-lifecycle.md) — 插件生命周期
|
||||
- [../docs/explanation/security-logging.md](../docs/explanation/security-logging.md) — 日志安全审计
|
||||
|
||||
## 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>&1` | exit code = 0,stderr 无 "error:" |
|
||||
| B2 | cmake build | `cmake --build build --config Release 2>&1` | exit code = 0,stderr 无 "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% passed(smoke 是回归底线,不可失败) |
|
||||
|
||||
### 12.3 交付物检查
|
||||
|
||||
| # | 检查项 | 命令/方法 | 通过标准 |
|
||||
|---|--------|-----------|----------|
|
||||
| D1 | profile 更新 | 逐个检查本波每个执行者的 `agents/<id>/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 均被否决** → 回到 PROPOSE,CEO 重新出提案(原方案方向放弃)
|
||||
5. **连续 3 轮 PROPOSE→VOTE→OPTIMIZE 循环仍无共识** → ABORT,CEO 判定该需求当前不可执行
|
||||
- **责任人**:提案方(第 1 轮修改)+ CEO(第 2 轮起裁决)
|
||||
|
||||
### 13.3 OPTIMIZE 阶段僵局
|
||||
|
||||
- **症状**:提案方无法在合理范围内满足反对意见 OR 修改导致方案退化
|
||||
- **处理**:
|
||||
1. 修改范围 > 原提案 50% → 回到 PROPOSE(作为新提案,重新编号)
|
||||
2. 反对意见本身有争议 → CEO 仲裁,判定反对是否成立
|
||||
3. CEO 判定无法调和 → ABORT,CEO 另起替代方案
|
||||
- **责任人**:CEO
|
||||
|
||||
### 13.4 EXECUTE 阶段失败
|
||||
|
||||
- **症状**:执行者子代理返回失败(编译错误 / 测试失败 / 无法完成任务)
|
||||
|
||||
**分级处理表**:
|
||||
|
||||
| 失败级别 | 条件 | 处理 | 责任人 |
|
||||
|----------|------|------|--------|
|
||||
| L1 轻微 | 单执行者失败,根因明确,修复 ≤30 行 | CEO 在原 prompt 追加修复指令,同一执行者重试(仅 1 次) | 原执行者 |
|
||||
| L2 中等 | L1 重试仍失败 OR 失败涉及 >2 个文件 | CEO 换人执行(选同专长其他员工)OR CEO 亲自修复 | CEO |
|
||||
| L3 严重 | 多执行者同时失败 OR 构建系统破坏 OR ABI 破坏 | 进入 ROLLBACK:`git checkout -- <触发文件>` + CEO 判定是否缩小范围重新 EXECUTE | CEO |
|
||||
| L4 致命 | 数据损坏 / 无法定位的段错误 / 安全漏洞暴露 | 进入 ROLLBACK + 指派 security-cao 安全审计 | CEO + security-cao |
|
||||
|
||||
### 13.5 INSPECT 阶段失败
|
||||
|
||||
**处理协议(按步骤强制执行,不可跳过)**:
|
||||
|
||||
1. **先回退触发改动**:`git checkout -- <验收失败的源文件>`,确保仓库回到可构建状态
|
||||
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 -- <触发失败的所有文件>` → 回退触发改动的文件
|
||||
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),保留参与记录
|
||||
@@ -19,6 +19,9 @@ weaknesses:
|
||||
performance_log:
|
||||
- date: 2026-05-27
|
||||
event: "入职 dstalk 团队"
|
||||
rating: ongoing
|
||||
rating: completed
|
||||
- date: 2026-05-27
|
||||
event: "W10.1: 设计协作状态机 + 验收清单 + 失败回退协议,追加 WORKFLOW.md §11–§13"
|
||||
rating: completed
|
||||
current_groups: []
|
||||
---
|
||||
|
||||
@@ -21,5 +21,8 @@ performance_log:
|
||||
- date: 2026-05-27
|
||||
event: "入职 dstalk 团队"
|
||||
rating: ongoing
|
||||
- date: 2026-05-27
|
||||
event: "W10.3: 创建 agents/PROMPT_TEMPLATE.md 子代理 prompt 模板(约 170 行),含骨架+6 反模式+1 正模式+CEO 4 步检查。统一字数 250 字,WORKFLOW.md §9 追加迁移链接"
|
||||
rating: completed
|
||||
current_groups: []
|
||||
---
|
||||
|
||||
@@ -20,5 +20,8 @@ performance_log:
|
||||
- date: 2026-05-27
|
||||
event: "入职 dstalk 团队"
|
||||
rating: ongoing
|
||||
- date: 2026-05-27
|
||||
event: "W10.2: 创建 agents/STATUS.md 实时编制状态文档(63行),含员工状态表(16人)+ 工作组状态表(5组)+ Wave 进度,一次性读完 16 份 profile + 5 份 group + git log 后整理输出"
|
||||
rating: completed
|
||||
current_groups: []
|
||||
---
|
||||
|
||||
@@ -24,5 +24,8 @@ performance_log:
|
||||
- date: 2026-05-27
|
||||
event: "B3 三方案破坏性评审:否决 A3/B1/C2,上报恶意管道 OOM 路径"
|
||||
rating: good
|
||||
- date: 2026-05-27
|
||||
event: "W10.4 创建 agents/POSTMORTEM.md 项目级踩坑记录(172行),收录 PM-001~PM-005 共5条事故7条防御性规则,覆盖 stale obj / Boost.JSON 链接 / 跨DLL堆释放 / plugin_loader fail-fast / push --force 未告知"
|
||||
rating: completed
|
||||
current_groups: []
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user