agentic-flow-kit 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/bin/flow-kit.mjs +4 -0
  4. package/modules/gates/dotnet-ca/README.md +24 -0
  5. package/modules/gates/dotnet-ca/check-architecture.sh +128 -0
  6. package/modules/gates/dotnet-ca/local-pre-commit.line +1 -0
  7. package/modules/hosts/omp/agents/implementer.md +12 -0
  8. package/modules/hosts/omp/agents/independent-reviewer.md +11 -0
  9. package/modules/hosts/omp/agents/ui-verifier.md +12 -0
  10. package/modules/hosts/opencode/agents/implementer.md +14 -0
  11. package/modules/hosts/opencode/agents/independent-reviewer.md +10 -0
  12. package/modules/hosts/opencode/agents/ui-verifier.md +10 -0
  13. package/modules/hosts/opencode/commands/build.md +13 -0
  14. package/modules/hosts/opencode/commands/deploy.md +12 -0
  15. package/modules/hosts/opencode/commands/design.md +12 -0
  16. package/modules/hosts/opencode/commands/maintain.md +12 -0
  17. package/modules/hosts/opencode/commands/new-task.md +12 -0
  18. package/modules/hosts/opencode/commands/plan.md +12 -0
  19. package/modules/hosts/opencode/commands/review.md +12 -0
  20. package/modules/hosts/opencode/commands/test.md +14 -0
  21. package/modules/hosts/trae/agents/implementer.md +9 -0
  22. package/modules/hosts/trae/agents/independent-reviewer.md +8 -0
  23. package/modules/hosts/trae/agents/ui-verifier.md +12 -0
  24. package/modules/hosts/trae/commands/wf-build.md +14 -0
  25. package/modules/hosts/trae/commands/wf-deploy.md +13 -0
  26. package/modules/hosts/trae/commands/wf-design.md +13 -0
  27. package/modules/hosts/trae/commands/wf-maintain.md +13 -0
  28. package/modules/hosts/trae/commands/wf-new-task.md +13 -0
  29. package/modules/hosts/trae/commands/wf-plan.md +13 -0
  30. package/modules/hosts/trae/commands/wf-review.md +13 -0
  31. package/modules/hosts/trae/commands/wf-test.md +14 -0
  32. package/modules/hosts/trae/hooks/post-edit-check.cjs +87 -0
  33. package/modules/hosts/trae/hooks/pre-shell-check.cjs +151 -0
  34. package/modules/hosts/trae/hooks/resolve-shell.cjs +21 -0
  35. package/modules/hosts/trae/hooks.json +29 -0
  36. package/modules/hosts/trae/rules/beautify-input-chinese.md +6 -0
  37. package/modules/hosts/trae/rules/git-commit-message.md +10 -0
  38. package/modules/hosts/trae/rules/project-workflow.md +14 -0
  39. package/modules/hosts/zcode/agents/implementer.md +11 -0
  40. package/modules/hosts/zcode/agents/independent-reviewer.md +10 -0
  41. package/modules/hosts/zcode/agents/ui-verifier.md +10 -0
  42. package/package.json +34 -0
  43. package/src/add-gate.mjs +83 -0
  44. package/src/add-host.mjs +63 -0
  45. package/src/cli.mjs +81 -0
  46. package/src/doctor.mjs +150 -0
  47. package/src/init.mjs +190 -0
  48. package/src/profiles.mjs +101 -0
  49. package/src/render.mjs +68 -0
  50. package/src/run-tests.mjs +35 -0
  51. package/src/sync.mjs +141 -0
  52. package/src/sync.test.mjs +207 -0
  53. package/templates/.gitattributes +6 -0
  54. package/templates/AGENTS.md +52 -0
  55. package/templates/_agents/board/index.html +382 -0
  56. package/templates/_agents/board/marked.min.js +6 -0
  57. package/templates/_agents/cache/kb-index.json +1 -0
  58. package/templates/_agents/commands/build.md +74 -0
  59. package/templates/_agents/commands/deploy.md +65 -0
  60. package/templates/_agents/commands/design.md +54 -0
  61. package/templates/_agents/commands/maintain.md +91 -0
  62. package/templates/_agents/commands/new-task.md +73 -0
  63. package/templates/_agents/commands/plan.md +46 -0
  64. package/templates/_agents/commands/review.md +59 -0
  65. package/templates/_agents/commands/test.md +80 -0
  66. package/templates/_agents/hooks/check-pairing-incremental.sh +29 -0
  67. package/templates/_agents/hooks/check-wiki-ledger.sh +18 -0
  68. package/templates/_agents/hooks/commit-check.cjs +140 -0
  69. package/templates/_agents/hooks/local-pre-commit +6 -0
  70. package/templates/_agents/notes/runtime-env.md +18 -0
  71. package/templates/_agents/roles/implementer.md +46 -0
  72. package/templates/_agents/roles/independent-reviewer.md +43 -0
  73. package/templates/_agents/roles/ui-verifier.md +42 -0
  74. package/templates/_agents/rule-budgets.txt +8 -0
  75. package/templates/_agents/scripts/agg-delegations.cjs +175 -0
  76. package/templates/_agents/scripts/check-loop.sh +803 -0
  77. package/templates/_agents/scripts/check-loop.test.sh +1042 -0
  78. package/templates/_agents/scripts/ensure-board.ps1 +48 -0
  79. package/templates/_agents/scripts/gen-wiki-board.mjs +197 -0
  80. package/templates/_agents/scripts/gen-wiki-board.test.mjs +136 -0
  81. package/templates/_agents/scripts/gen-workflow-index.mjs +190 -0
  82. package/templates/_agents/scripts/gen-workflow-index.test.mjs +113 -0
  83. package/templates/_agents/scripts/gen-workflow-metrics.mjs +172 -0
  84. package/templates/_agents/scripts/gen-workflow-metrics.test.mjs +101 -0
  85. package/templates/_agents/scripts/kb-cache-evict.mjs +50 -0
  86. package/templates/_agents/scripts/kb-cache-evict.test.mjs +104 -0
  87. package/templates/_agents/scripts/kb-search.mjs +307 -0
  88. package/templates/_agents/scripts/kb-search.test.mjs +153 -0
  89. package/templates/_agents/scripts/rule-budget.sh +68 -0
  90. package/templates/_agents/scripts/verify-wiki-consistency.mjs +192 -0
  91. package/templates/_agents/scripts/wiki-search.mjs +19 -0
  92. package/templates/_agents/scripts/workflow-board-server.mjs +244 -0
  93. package/templates/_agents/skills/verify-ui/SKILL.md +24 -0
  94. package/templates/_agents/skills/wiki/SKILL.md +104 -0
  95. package/templates/_agents/workflow-modules.txt +11 -0
  96. package/templates/_githooks/commit-msg +15 -0
  97. package/templates/_githooks/post-commit +10 -0
  98. package/templates/_githooks/pre-commit +58 -0
  99. package/templates/_githooks/pre-merge-commit +24 -0
  100. package/templates/_githooks/pre-push +32 -0
  101. package/templates/wiki/INDEX.md +23 -0
  102. package/templates/wiki/drafts-archive/README.md +3 -0
  103. package/templates/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +56 -0
  104. package/templates/workflow/README.md +52 -0
  105. package/templates/workflow/delegations.md +28 -0
  106. package/templates/workflow/incidents/_TEMPLATE.md +42 -0
  107. package/templates/workflow/intents/_TEMPLATE.md +40 -0
  108. package/templates/workflow/papercuts.md +7 -0
  109. package/templates/workflow/plans/_TEMPLATE.md +38 -0
  110. package/templates/workflow/regression-checklist.md +22 -0
  111. package/templates/workflow/specs/_TEMPLATE.md +41 -0
@@ -0,0 +1,58 @@
1
+ #!/bin/sh
2
+ # Git 原生 pre-commit hook(经 core.hooksPath 挂载,git 执行、不依赖 agent 客户端)— agentic-flow-kit 通用编排
3
+ # 通用门禁序:闭环配对(增量) → wiki 台账(增量) → 常驻面体积预算(增量) → 项目门禁(local-pre-commit) → 敏感信息扫描+条件构建(commit-check.cjs)
4
+ # 项目专属门禁(架构红线/业务守卫等)放 .agents/hooks/local-pre-commit——存在即在本钩子内执行,返回非零即阻断提交
5
+ # 合并提交场景由 .githooks/pre-merge-commit 原样转发到本脚本(合并时 git 调的是 pre-merge-commit,
6
+ # 不是 pre-commit)——门禁清单只此一份,避免两处分叉
7
+
8
+ cd "$(git rev-parse --show-toplevel)" || exit 1
9
+
10
+ # run_gate <标签> <脚本> [参数...]:sh 优先、无 sh 用 bash;非零即阻断
11
+ run_gate() {
12
+ gate_label="$1"; shift
13
+ if command -v sh >/dev/null 2>&1; then sh "$@"; else bash "$@"; fi
14
+ rc=$?
15
+ if [ $rc -ne 0 ]; then
16
+ echo "pre-commit: $gate_label 未通过,提交已阻止" >&2
17
+ exit $rc
18
+ fi
19
+ }
20
+
21
+ # 闭环配对门禁(增量版,check-pairing-incremental.sh:本次暂存的 intents/incidents 入口须已有同名 plan)
22
+ run_gate "闭环配对(增量)" .agents/hooks/check-pairing-incremental.sh
23
+
24
+ # wiki 台账门禁(增量,check-wiki-ledger.sh:暂存区触及 wiki/ 时跑 verify-wiki-consistency 三方一致性;
25
+ # 无 wiki/ 变更即跳过)
26
+ run_gate "wiki 台账(增量)" .agents/hooks/check-wiki-ledger.sh
27
+
28
+ # 常驻面体积预算(增量硬拦,rule-budget.sh --staged:只查本次暂存触及的条目与触及目录的合计;
29
+ # 超限即阻断——常驻面只增不减,须先删除或下沉一条被取代条目再增)
30
+ if [ -f .agents/scripts/rule-budget.sh ] && [ -f .agents/rule-budgets.txt ]; then
31
+ run_gate "常驻面体积预算" .agents/scripts/rule-budget.sh --staged
32
+ fi
33
+
34
+ # 项目门禁挂载点:.agents/hooks/local-pre-commit(项目自建门禁/门禁模块接线处,存在即执行)
35
+ if [ -f .agents/hooks/local-pre-commit ]; then
36
+ run_gate "项目门禁(local-pre-commit)" .agents/hooks/local-pre-commit
37
+ fi
38
+
39
+ if ! command -v node >/dev/null 2>&1; then
40
+ echo "pre-commit: 未找到 node——敏感信息扫描与条件构建无法执行,提交已阻止(安装 Node.js 后重试)" >&2
41
+ exit 1
42
+ fi
43
+
44
+ # 合并提交 → 构建验证覆盖【完整合并树】,不做按扩展名的条件裁剪。
45
+ # 两条路径:`git merge` 自动提交由 .githooks/pre-merge-commit 显式传 `--full` 转发到本脚本;
46
+ # 冲突解决后手动 `git commit` 由 git 直接调本脚本,此处按 MERGE_HEAD 探测补上(此时合并仍在进行)。
47
+ full_args="$*"
48
+ if [ -z "$full_args" ] && git rev-parse -q --verify MERGE_HEAD >/dev/null 2>&1; then
49
+ full_args=--full
50
+ fi
51
+
52
+ node .agents/hooks/commit-check.cjs $full_args
53
+ rc=$?
54
+ if [ $rc -ne 0 ]; then
55
+ echo "pre-commit: 验证未通过,提交已阻止" >&2
56
+ exit $rc
57
+ fi
58
+ exit 0
@@ -0,0 +1,24 @@
1
+ #!/bin/sh
2
+ # Git 原生 pre-merge-commit hook(经 core.hooksPath 挂载,git 执行、不依赖 agent 客户端)
3
+ #
4
+ # 背景:git 对 `git merge` 调的是**本钩子**,不是 pre-commit。此前仓库只挂了
5
+ # pre-commit / pre-push / commit-msg,故合并提交绕过全部门禁、未经任何校验直接落库
6
+ # (2026-09-19 实测,见 workflow/papercuts.md 同日行——那次合并带入后端 .cs 改动,
7
+ # 靠人工补跑静态门 + 全量测试才覆盖到)。
8
+ #
9
+ # 做法:转发到 .githooks/pre-commit(门禁清单只此一份,避免两份拷贝日后分叉),
10
+ # 并显式传 `--full`——本钩子「只对 merge 触发」这一身份就是最强信号,无需再去探测
11
+ # MERGE_HEAD(2026-09-19 实测:本时点 MERGE_HEAD 已不可靠)。`--full` 令编译验证
12
+ # 覆盖【完整合并树】、不按扩展名条件裁剪:合并结果是没人验证过的新状态,且其 diff
13
+ # 相对第一父,裁剪会漏掉需要重跑的一侧。
14
+ #
15
+ # 冲突解决后手动 `git commit` 走的是 pre-commit 自身,那条路径由 pre-commit 内部的
16
+ # MERGE_HEAD 探测覆盖(此时合并仍在进行,MERGE_HEAD 确定存在)。
17
+
18
+ cd "$(git rev-parse --show-toplevel)" || exit 1
19
+
20
+ if command -v sh >/dev/null 2>&1; then
21
+ exec sh .githooks/pre-commit --full
22
+ else
23
+ exec bash .githooks/pre-commit --full
24
+ fi
@@ -0,0 +1,32 @@
1
+ #!/bin/sh
2
+ # Git 原生 pre-push hook(经 core.hooksPath 挂载,git push 时触发)
3
+ # 跑 .agents/scripts/check-loop.sh:扫 workflow/ 闭环骨架断档
4
+ # - 硬阻断(exit 1)= 配对断裂 / 回路断档 → push 立即阻断
5
+ # - 警告(advisory)= 状态未确认 / 模板占位残留 / 引用漂移 等卫生项 → 仅打印提示
6
+ #
7
+ # 机器门:本地钩子(唯一本地机器门)——CI 配置为本地未入库件(.gitignore 排除),不构成跨环境保证。
8
+ # 不要用 `git push --no-verify` 绕开——发现 hard-block 应先修 workflow 文档再推。
9
+
10
+ cd "$(git rev-parse --show-toplevel)" || exit 1
11
+
12
+ # 读 stdin(pre-push 协议要求消费 stdin:本地 ref + 远端 ref + sha x2 每行)
13
+ while read -r _ _ _ _; do :; done
14
+
15
+ SCRIPT=".agents/scripts/check-loop.sh"
16
+ if [ ! -f "$SCRIPT" ]; then
17
+ echo "pre-push: 未找到 $SCRIPT,跳过闭环扫描" >&2
18
+ exit 0
19
+ fi
20
+
21
+ # Windows 下 git 自带 bash 能直接执行 sh 脚本;其它环境 sh 兼容
22
+ if command -v sh >/dev/null 2>&1; then
23
+ sh "$SCRIPT"
24
+ else
25
+ bash "$SCRIPT"
26
+ fi
27
+ rc=$?
28
+ if [ $rc -ne 0 ]; then
29
+ echo "pre-push: 闭环骨架断档(hard-block)未通过,push 已阻断。修 workflow 文档后重推——不要用 --no-verify 绕过(CI 服务端会再次兜底拦截)" >&2
30
+ exit $rc
31
+ fi
32
+ exit 0
@@ -0,0 +1,23 @@
1
+ # Wiki 索引
2
+
3
+ > 本目录为整理后的项目知识沉淀,按主题归位。原文档归档到 `drafts-archive/`(按 `日期-主题` 命名)。
4
+ > 人工只维护两样:**磁盘文件本身 + 下方速览表「用途」列**;速览计数 / 合计行 / 映射表 / 看板 DATA 均为生成区,勿手改——重生成 `node .agents/scripts/gen-wiki-board.mjs`(一致性验证 `node .agents/scripts/verify-wiki-consistency.mjs`)。
5
+ >
6
+ > 看板:`知识沉淀总览.html`(同级目录)。
7
+
8
+ ## 主题目录速览
9
+
10
+ | 主题 | 文件数 | 用途 |
11
+ |---|---|---|
12
+
13
+ 合计:**0 份**知识文档,**0 个主题**
14
+
15
+ ## 文件 → 主题 → 归属目录 映射表
16
+
17
+ (生成区:gen-wiki-board.mjs 维护)
18
+
19
+ ## 命名规则
20
+
21
+ - 主题目录用中文名(如 `产品需求/`、`开发方案/`、`测试报告/`、`项目规范/`);文件名不限中英文。
22
+ - 成套产物(md+html 对)整目录计入索引与看板。
23
+ - 原始/一次性文档归档 `drafts-archive/<日期-主题>/`,只读不增量。
@@ -0,0 +1,3 @@
1
+ # drafts-archive — 原文档归档区
2
+
3
+ 按 `<日期-主题>/` 分目录存放整理前的原始文档快照,**只读不增量**:wiki 主题目录是活知识层,本区只留历史证据。归档文件不参与 INDEX 三方比对的文件级登记,仅计入归档总数(见 `../知识沉淀总览.html` 的 summary.archive)。
@@ -0,0 +1,56 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>知识沉淀总览</title>
6
+ <style>
7
+ body{font-family:system-ui,'Segoe UI','Microsoft YaHei',sans-serif;max-width:1100px;margin:2rem auto;padding:0 1rem;color:#222}
8
+ h1{border-bottom:2px solid #ddd;padding-bottom:.4rem}
9
+ table{border-collapse:collapse;width:100%;margin:1rem 0}
10
+ td,th{border:1px solid #ddd;padding:.4rem .6rem;text-align:left;vertical-align:top}
11
+ th{background:#f6f6f6}
12
+ a{color:#0366d6;text-decoration:none}
13
+ a:hover{text-decoration:underline}
14
+ .muted{color:#888;font-size:.9em}
15
+ </style>
16
+ </head>
17
+ <body>
18
+ <h1>知识沉淀总览</h1>
19
+ <p class="muted">生成物:<code>node .agents/scripts/gen-wiki-board.mjs</code> 重生成(人工只维护 wiki/INDEX.md 速览表「用途」列与磁盘文件本身)。</p>
20
+ <div id="app"></div>
21
+ <script>
22
+ const DATA = {
23
+ "summary": { "total": 0, "topics": 0, "files": 0, "archive": 0 },
24
+ "topics": [
25
+ ]
26
+ };
27
+ (function () {
28
+ var el = document.getElementById('app');
29
+ var p = document.createElement('p');
30
+ p.textContent = '合计 ' + DATA.summary.files + ' 份知识文档 / ' + DATA.summary.topics + ' 个主题 / 归档 ' + DATA.summary.archive + ' 份';
31
+ el.appendChild(p);
32
+ var table = document.createElement('table');
33
+ var head = document.createElement('tr');
34
+ ['主题', '文件'].forEach(function (h) {
35
+ var th = document.createElement('th'); th.textContent = h; head.appendChild(th);
36
+ });
37
+ table.appendChild(head);
38
+ DATA.topics.forEach(function (t) {
39
+ var tr = document.createElement('tr');
40
+ var td1 = document.createElement('td'); td1.textContent = t.name; tr.appendChild(td1);
41
+ var td2 = document.createElement('td');
42
+ t.files.forEach(function (f, i) {
43
+ if (i) td2.appendChild(document.createElement('br'));
44
+ var a = document.createElement('a');
45
+ a.setAttribute('href', f.dir + f.file);
46
+ a.textContent = f.file;
47
+ td2.appendChild(a);
48
+ });
49
+ tr.appendChild(td2);
50
+ table.appendChild(tr);
51
+ });
52
+ el.appendChild(table);
53
+ })();
54
+ </script>
55
+ </body>
56
+ </html>
@@ -0,0 +1,52 @@
1
+ # workflow — AI 驱动闭环流程(唯一真相源)
2
+
3
+ 本目录是个人 AI 工作流引擎的唯一载体:**intents(为什么做)→ specs(怎么设计)→ plans(怎么做)→ incidents(学到了什么)**。单人 + AI 协作:唯一决策人与授权人是用户本人,多人评审暂缓,确认都在对话内一句话完成,追溯靠 git(commit + release tag)。
4
+
5
+ > 闭环新增记录一律写在本目录。
6
+
7
+ ## 目录结构
8
+
9
+ | 目录 | 放什么 | 命名 |
10
+ |------|--------|------|
11
+ | `intents/` | 意图文档:背景、目标/非目标、验收标准、级别、触达红线 | `YYYY-MM-DD-<主题>.md` |
12
+ | `specs/` | 设计规格:功能行为、数据流、系统改动、约束遵守映射 | 与入口文档(intent / incident)同名 |
13
+ | `plans/` | 计划文档:与入口文档同名配对,任务拆解 + 判据 + 风险 | 与入口文档(intent / incident)同名 |
14
+ | `incidents/` | 事故复盘:时间线、根因、为什么没拦住、复盘三件套 | `YYYY-MM-DD-<主题>.md` |
15
+
16
+ **命名一律英文 kebab-case**(如 `2026-09-07-<主题>.md`),**禁中文文件名**——check-loop 对非 ASCII 文件名给 warning。文档内容(标题/正文)不受此限。
17
+
18
+ **文档协议(frontmatter 受限子集)**:四类文档头部一律为 YAML frontmatter(每行 `键: 值`,机器字段唯一来源)——`状态`(intent/spec/plan:draft/approved/done/superseded/cancelled;incident:open/fixed/closed,**严格枚举**,附注写 `备注:` 键)、`级别`(L0-L3)、`日期`/`发现`(YYYY-MM-DD)、`模块`(**新建文档必填**,取值见 `.agents/workflow-modules.txt` 词表,单值取主导模块;存量不回填,AI 触碰时顺手补)、L3 spec 的 `确认结果`/`确认时间`、回填件 `流程: legacy`。**`状态` 迁移须经 `approved`**(确认环节的机器可见态,`done` 只在关单出现):新建的 spec/plan 若已 done 而 git 历史中从未出现行首 `状态: approved`,check-loop 报「确认态缺失」warning。check-loop 只扫 frontmatter 取机器字段(`fm_get` 字段断言),正文不再写「状态:/级别:」行;叙述性字段(独立复核/复盘三件套/验收勾验)仍留正文按节锚定。
19
+
20
+ 各子目录内 `_TEMPLATE.md` 为起步模板,复制后填写,不直接改动模板本身。
21
+
22
+ 根目录 `regression-checklist.md` 为**活文档回归清单**:deploy 回归必过条目与 incident 防复发验证的统一落点,随模块上线补充、随 incident 追加。
23
+
24
+ ## 使用方式
25
+
26
+ - **发起新任务**:执行 `.agents/commands/new-task.md` 定义的流程(6 阶段总入口)
27
+ - **看板**:任务入口幂等拉起 .agents/scripts/ensure-board.ps1(探活 / 旧代码自动重启 / 全新启动弹浏览器),服务只起不关,实时只读 http://127.0.0.1:{{BOARD_PORT}};**预警层,非门禁;告警口径对齐 check-loop 硬断档**。端口被占用时先探活 `/api/board`——响应不含 `cards` 即判为他人进程,打印 pid / 进程名并退出,不 kill
28
+ - **检索**:活跃流程读 `INDEX.md`(生成物,`node .agents/scripts/gen-workflow-index.mjs` 重生成、`--check` 校验漂移);跨语料检索 `node .agents/scripts/kb-search.mjs "<词>"`(workflow 按节级定位 + wiki 全文,`--type/--module/--status/-n` 过滤;`--status all` 显式全量)
29
+ - **验证**:`.agents/commands/test.md`(静态门 + 实测;项目自有验证脚本/门禁如有,见 `.agents/hooks/local-pre-commit` 与 test.md 项目适配区)
30
+ - **评审**:`.agents/commands/review.md`(按 P0 / P1 / P2 分级:机器兜底 + AI 自查出清单,用户决策定性与合入)
31
+ - **上线**:`.agents/commands/deploy.md`(上线前必跑清单)
32
+ - **量化**:委派/自做结果记 `delegations.md`,聚合跑 `node .agents/scripts/agg-delegations.cjs`(**并发扩容门槛见该文件——数字达标前不扩并发**);语料与常驻面体积的**月度快照**跑 `node .agents/scripts/gen-workflow-metrics.mjs`(每月一行落 `metrics.md`,同月重跑即更新;明细看 stdout)
33
+ - **追溯**:git 即审计——文档随代码同 commit、上线打 `release/<日期>` tag,`git log` 全链路可查;多人评审暂缓,git 历史即评审记录
34
+ - **级别**:L0 例行 | L1 实现级(页面 / 交互 / 样式等,未命中 L2/L3)| L2 规则 / 契约(编码权威 / 共享契约 / 既有接口语义 / 全局横切口径,触达面闭集见 `.agents/commands/new-task.md` §级别判断)| L3 数据与运行时结构(schema / 迁移 SQL / DI 链 / 认证与中间件管线);混合改动就高不就低
35
+
36
+ ## 执行模型
37
+
38
+ - 默认宿主主智能体负责阶段路由、用户确认、关键判断和最终验收,不注册为额外角色。
39
+ - 阶段命令仅在边界明确时委派 `.agents/roles/implementer.md`、`.agents/roles/independent-reviewer.md`、`.agents/roles/ui-verifier.md`。
40
+ - 各 agent 宿主(OpenCode / Trae / ZCode 等)通过其适配目录(`.opencode/agents/`、`.trae/agents/`、`.zcode/agents/` 等)下的薄 Adapter 注册角色;角色行为只维护在 `.agents/roles/`。
41
+ - 宿主不支持子智能体时按命令 frontmatter 的 `fallback` 执行;L2 / L3 独立复核不得回退为原主智能体自查。
42
+ - 子智能体不得跨越用户确认门,也不得自行提交、合入或上线;所有结果由主智能体复核后交用户决策。
43
+
44
+ ## 闭环规则
45
+
46
+ 1. L1 以上新需求始于已确认的 intent;L1 以上修复始于已确认的 incident 草稿(作为 intent 等价入口)
47
+ 2. L2 / L3 变更必须先有与入口文档同名的 spec 确认通过(L3 加新会话独立复核),方可起草 plan;L1 用极简 plan——改动面 + 验证方式两节起步,多文件多步骤再加任务拆解/执行顺序
48
+ 3. 实现产物必须通过静态门(构建 + 测试 + 项目门禁)
49
+ 4. 线上 / 实测缺陷回落到 `incidents/`,复盘三件套(新 intent、防复发验证、规范条目)缺一不可;**根因属「门禁缺位 / 规范未落地 / 系统性问题」时,即使结构性修复已完成也必须立新 intent** 追踪系统性改进,禁止以「修复已完成」为由绕过 intent 回路
50
+ 5. 关单在 test:逐条勾验入口文档「验收标准」并补证据后 intent → done(不依赖是否上 prod)。done 仍有未勾项会被 check-loop 拦(新建 intent hard-block)。上 prod 另走 deploy(tag / 回滚 / 观察)
51
+ 6. 放弃留档:方案曾确认后不做 → `superseded`;未完成即取消 → `cancelled`。二者均为已确认终态,check-loop 不按「状态未确认」拦截;L3 放弃件豁免「确认结果必须为 approved」
52
+ 7. 后续回归清单与周检清单也归档本目录
@@ -0,0 +1,28 @@
1
+ # 量化证据台账(委派 + 自做任务)
2
+
3
+ > 目的:把「一次完成率 / 平均返工次数 / 主兜底占比 / 月度故障数」从感觉变成数字——**数字达标之前不扩并发**(门槛见 §并发扩容门槛)。
4
+ > 记法(主智能体顺手写一行,不增加用户负担):
5
+ > - **委派结果表**:每次向子智能体/执行模型委派后追加一行。
6
+ > - **自做任务结果表**:主智能体自己完成的 **L1+ 新需求任务**,闭环时(intent→done)追加一行;**修复类不重复记**——incident 本身即故障信号,聚合脚本按月扫 `workflow/incidents/` 计数。
7
+ > - 结果列取值:`一次通过`(静态门首跑全过且复核无 P0/P1 返工)/ `返工×N`(回炉 N 次)/ `主兜底`(executor 失败、主智能体接手——委派口径专用,计返工信号)/ `返工待修`(未闭环,不计入率,单列提示)。
8
+ > 聚合:`node .agents/scripts/agg-delegations.cjs` → 输出各月指标 + 扩容门判定 + 可粘贴快照行,粘贴进 §月度聚合快照(每月一行)。聚合时顺路按「三类清理清单」巡检 AGENTS.md:代码/配置已可推导的删;只针对一次需求的细节移 wiki 或删;已被脚本/hook/测试自动保证的只留入口。
9
+ > 口径说明:合并冲突率不适用(单人串行 + 每阶段确认);人工复核负担以「复核类委派的返工行」近似(见结果列 + 备注)。
10
+ > 调整某角色的模型指派前,先从 `workflow/incidents/` 取 3 个已定性 bug 丢给候选模型做回归对比,再拍板。
11
+
12
+ ## 委派结果
13
+
14
+ | 日期 | 被委派方(模型) | 任务一句话 | 结果 | 备注 |
15
+ |------|----------------|------------|------|------|
16
+
17
+ ## 自做任务结果
18
+
19
+ | 日期 | 任务一句话 | 结果 | 备注 |
20
+ |------|------------|------|------|
21
+
22
+ ## 月度聚合快照
23
+
24
+ (`node .agents/scripts/agg-delegations.cjs` 输出的可粘贴快照行落这里,每月一行)
25
+
26
+ ## 并发扩容门槛
27
+
28
+ 连续两个月一次完成率 ≥ 90%、月度返工次数为 0 且无主兜底信号,才考虑扩大并发委派;任一不达标维持单并发。门槛判定由聚合脚本输出,两处同步修改。
@@ -0,0 +1,42 @@
1
+ ---
2
+ 状态: open
3
+ 级别: L1
4
+ 发现: YYYY-MM-DD
5
+ 模块: <词表之一,见 .agents/workflow-modules.txt>
6
+ ---
7
+ # INCIDENT — <日期 主题>
8
+ <!-- 复制为 YYYY-MM-DD-<主题>.md;线上或实测发现的功能缺陷都记录,历史 BUG 可回填 -->
9
+ <!-- frontmatter 受限子集(2026-09-13):状态∈open/fixed/closed(严格枚举,附注写备注键);级别∈L0/L1/L2/L3;闭环引擎启用前的回填件加一行 `流程: legacy`(豁免级别/配对检查);正文不再写状态/级别/发现行 -->
10
+
11
+ ## 时间线
12
+ - <发现 → 定位 → 止血 → 恢复,带时刻>
13
+
14
+ ## 影响面
15
+ - <页面 / 接口 / 数据范围>
16
+
17
+ ## 根因
18
+ <一句话;深层原因另起一行>
19
+
20
+ ## 为什么之前没拦住
21
+ <门禁 / 测试 / 规范各查一遍:哪一层本可以拦住>
22
+
23
+ ## 复盘三件套(缺一不可)
24
+
25
+ > 目的:让事故真正回到 Plan,不让「防复发」承诺停留在文档里。模块已逐步上线,事故可能来自 dev / staging / prod 任一环境。
26
+
27
+ 1. 结构性修复
28
+ - 修复 commit:<SHA + 改动文件清单>
29
+ - 影响环境:dev / staging / prod(已上线模块若波及 prod,需附影响用户数 / 持续时长 / 是否回滚)
30
+ - 是否需要新 intent:
31
+ - 是 → ../intents/YYYY-MM-DD-<主题>.md(根因属「门禁缺位 / 规范未落地 / 系统性问题」时强制立,即使结构性修复已完成)
32
+ - 否 → 理由:<根因属实现 bug、单点修复已完成,且已有规范条目覆盖>
33
+
34
+ 2. 防复发验证(必须落到自动化用例或回归清单条目,禁止只写「已人工验证」)
35
+ - 自动化用例:项目测试套件 <文件>(<用例名 / 数量>)
36
+ - 或 test 步骤:.agents/commands/test.md + <具体操作>
37
+ - 或回归清单条目:workflow/regression-checklist.md(防复发验证节追加一行)
38
+
39
+ 3. 规范条目(必须有可追溯的落点)
40
+ - 落点(多选):AGENTS.md <章节> / .agents/hooks/<脚本> / .agents/skills/<skill> / .agents/commands/<cmd> / 回归清单 §<章节>
41
+ - 引用:commit <SHA> / 文件:<路径>#L<行>
42
+ - 若无新增条目,理由:<已有条目覆盖,说明条目位置>
@@ -0,0 +1,40 @@
1
+ ---
2
+ 状态: draft
3
+ 级别: L1
4
+ 日期: YYYY-MM-DD
5
+ 模块: <词表之一,见 .agents/workflow-modules.txt>
6
+ 备注: <可选:附注自由文本,check-loop 不解析>
7
+ ---
8
+ # INTENT — <主题>
9
+ <!-- 复制本模板为 YYYY-MM-DD-<主题>.md 后填写;plans/ 下同名文件与本文件配对 -->
10
+ <!-- frontmatter 受限子集(2026-09-13):每行 `键: 值`;状态∈draft/approved/done/superseded/cancelled(严格枚举,附注写备注键);级别∈L0/L1/L2/L3;check-loop 只扫 frontmatter 取机器字段,正文不再写状态/级别行 -->
11
+
12
+ ## 背景与问题
13
+ <为什么做;写明需求来源(工单 / 沟通记录 / 待办事项)>
14
+
15
+ ## 目标
16
+ - <可验证的目标>
17
+
18
+ ## 非目标(L1 微改动无实质内容可删本节,不硬填)
19
+ - <明确不做的,防止范围蔓延>
20
+
21
+ ## 约束(L1 微改动无实质内容可删本节,不硬填)
22
+ - <复用什么、不许动什么>
23
+
24
+ ## 影响面
25
+ - 模块:<词表之一,见 .agents/workflow-modules.txt>
26
+ - 数据库:无 / <表名>(涉及 schema 变更 → L3;无 schema 的运行时 / 管线结构面亦为 L3,判据见 `.agents/commands/new-task.md` §级别判断)
27
+ - 前端页面:<路由或组件,无则删本行>
28
+
29
+ ## 触达红线(对照 AGENTS.md,勾选仅标记触及范围;具体如何满足在同名 spec 中说明)
30
+ - [ ] <按本项目 AGENTS.md 红线逐行补;无则删本行>
31
+ - [ ] 规则 / 契约变更(编码权威 / 共享契约 / 接口签名 / 既有参数语义 / 全局口径)→ 级别至少 L2
32
+ - [ ] schema / 迁移 SQL / DI 链 / 认证与中间件管线 → 级别 L3
33
+
34
+ > 触及任一红线即为 L2 / L3,必须立 ../specs/YYYY-MM-DD-<主题>.md 写明如何满足,方可起草 plan。
35
+
36
+ ## 验收标准(可测试)
37
+ - [ ] <逐条可测试;写不出可测试判据 = 还没想清楚>
38
+
39
+ > **闭环对账**:关单在 test 阶段(不依赖 deploy)。intent 置 done 前逐条勾验,每条勾选项后补证据——`- [x] <判据>(证据:<commit SHA / 测试用例名 / 冒烟脚本输出>)`。
40
+ > done 状态仍有未勾项会被 check-loop 拦截(2026-09-12 起新建 intent 为 hard-block,存量 intent 仅 warning 提示);勾选但缺「证据:」为 warning。
@@ -0,0 +1,7 @@
1
+ # 命令/技能 Papercut 留痕
2
+
3
+ > `.agents/commands/`、`.agents/roles/` 或已装技能在真实任务中卡住、误导、缺步骤时记一行,**不当场顺手改**。
4
+ > 同一文件命中第 2 次或用户点名时,升级为 docs 修复 commit。
5
+
6
+ | 日期 | 位置 | 症状 | 拟修 |
7
+ |------|------|------|------|
@@ -0,0 +1,38 @@
1
+ ---
2
+ 状态: draft
3
+ 级别: L1
4
+ 模块: <词表之一,见 .agents/workflow-modules.txt>
5
+ ---
6
+ # PLAN — <与入口文档同名主题>
7
+ <!-- 与 intents/ 或 incidents/ 下同名入口文档配对;L2/L3 必须先有 ../specs/ 同名 spec 确认通过;AI 起草、用户对话内确认后开工 -->
8
+ <!-- frontmatter 受限子集(2026-09-13):状态∈draft/approved/done/superseded/cancelled(严格枚举,附注写备注键);级别∈L0/L1/L2/L3;正文不再写状态/级别行 -->
9
+ <!-- L1 极简形态(2026-09-13 瘦身,L1 默认):单/少文件微改动只填「改动面」+「验证方式」两节——改动面逐条列改哪个文件做什么(判据细节直接写进条目),验证一行静态门 + 按需 UI 实测;任务拆解/执行顺序仅 L1 多文件多步骤时保留 -->
10
+
11
+ 对应入口:../intents/YYYY-MM-DD-<主题>.md 或 ../incidents/YYYY-MM-DD-<主题>.md(保留实际一项)
12
+ 对应 spec:../specs/YYYY-MM-DD-<主题>.md(L1 可省略)
13
+
14
+ ## 改动面(L1 极简形态主节;L2/L3 可作任务拆解的汇总或删本节)
15
+ - <文件/组件>:<做什么;判据细节直接写进条目,如「L771 message.success 改『更新成功』」>
16
+
17
+ ## 任务拆解(L2/L3 必填;L1 仅多文件多步骤时用,单任务微改动删本节)
18
+ 1. <任务>
19
+ - 判据:<怎样算完成;尽量对应一个测试或可复现操作>
20
+ - 风险:低 / 中 / 高(<原因>)
21
+ 2. <任务>
22
+ - 判据:…
23
+ - 风险:…
24
+
25
+ ## 执行顺序(L2/L3 必填;L1 单文件微改动删本节)
26
+ <1 → 2 → 3;标注依赖关系>
27
+
28
+ ## 验证方式
29
+ - 静态门:`项目构建命令`(+ `项目测试命令`,测试项目就绪后)
30
+ - 前端:cd frontend && npm run build(vue-tsc)
31
+ - UI:.agents/commands/test.md(涉及页面改动必走,headless Chrome 实测)
32
+ - L2 追加:<契约 / 规则面比对:编码结果抽样 / 接口契约断言 / 口径对账>
33
+ - L3 追加:<含 schema 变更:备份 + 回滚 SQL 就绪后执行;仅运行时 / 管线:回退上一 release tag + 配置开关预案>
34
+
35
+ ## 确认与复核
36
+ > 确认 = 用户在对话内一句话通过;确认后本 plan 状态 `draft → approved` 并回填本节(确认环节的机器可见态),`done` 只在关单出现——禁从 `draft` 直跳 `done`(2026-09-22 papercut)。
37
+ - 确认结果:approved(YYYY-MM-DD 用户对话内确认);done(YYYY-MM-DD 关单,随入口文档置终态)
38
+ - 确认门记录:plan 草稿全文过目 + 改动清单确认(`build.md` 两道门,逐次,不合并)
@@ -0,0 +1,22 @@
1
+ # 回归清单(活文档)
2
+
3
+ > 用途:deploy 清单「回归必过」与 incidents 复盘「防复发验证」的统一落点。
4
+ > 本清单是**活文档**:随模块上线补充、随 incident 追加、随功能演进修订;代码演进后以本清单与实际行为为准。
5
+
6
+ ## 维护规则
7
+
8
+ 1. **deploy 前**:过本清单中「涉及模块」的全部条目 + 跑自动化测试(项目防复发用例)
9
+ 2. **incident 后**:防复发条目追加到「防复发验证」节,不留在 incident 文档里;能自动化的落测试用例
10
+ 3. **模块上线/走查后**:为该模块补关键路径条目
11
+ 4. 条目过时(功能下线/行为变更)时删除或改写,不保留失效条目
12
+ 5. **新增防复发条目落点优先级**:自动化用例 > 脚本化断言 > 人工步骤(仅剩视觉/交互断言无法脚本化时)
13
+
14
+ ## 回归必过
15
+
16
+ | 模块 | 条目 | 依据 |
17
+ |------|------|------|
18
+
19
+ ## 防复发验证
20
+
21
+ | incident | 条目 | 落点 |
22
+ |----------|------|------|
@@ -0,0 +1,41 @@
1
+ ---
2
+ 状态: draft
3
+ 级别: L1
4
+ 模块: <词表之一,见 .agents/workflow-modules.txt>
5
+ ---
6
+ # SPEC — <与入口文档同名主题>
7
+ <!-- 与 intents/ 或 incidents/ 下同名入口文档配对;L2 / L3 必须先有 spec 确认通过方可起草 plan;L1 可省略 -->
8
+ <!-- frontmatter 受限子集(2026-09-13):状态∈draft/approved/done/superseded/cancelled(done=关单、superseded=曾确认后放弃、cancelled=未完成即取消);L3 确认通过后在 frontmatter 追加两行:`确认结果: approved` 与 `确认时间: YYYY-MM-DD`(check-loop 对 L3 强制校验) -->
9
+
10
+ 对应入口:../intents/YYYY-MM-DD-<主题>.md 或 ../incidents/YYYY-MM-DD-<主题>.md(保留实际一项)
11
+
12
+ ## 功能行为
13
+ <讲清功能怎么工作;分小节列用户 / 系统行为,必要时附状态机 / 时序图说明>
14
+
15
+ ## 数据流
16
+ <数据从哪里来 → 经过哪些处理 → 落到哪里;含字段映射、接口契约、上下游依赖>
17
+
18
+ ## 系统改动清单
19
+ - 后端:模块 / 文件 / 接口契约
20
+ - 数据库:无 / <表名 + 字段 + 迁移 SQL 路径>
21
+ - 前端:路由 / 组件 / store / api
22
+
23
+ ## 约束遵守映射(对照 AGENTS.md 触达红线)
24
+ | 红线(按本项目 AGENTS.md 实际红线逐行填,没有的行删除) | 本 spec 如何满足 |
25
+ |------|------------------|
26
+ | <示例:分层依赖约束 / 编码权威归属 / 数据迁移方式> | <通过 XXX,不引入 YYY;是否触及(触及即 L2 定级依据)> |
27
+ | <示例:schema / 迁移路径约束> | <涉及路径与处理方式> |
28
+ | <示例:前端或客户端约定(如有)> | <本 spec 涉及哪些约定> |
29
+
30
+ ## 风险评估
31
+ - <风险点 1> | 应对:<测试 / hook / 评审>
32
+ - <风险点 2> | 应对:…
33
+
34
+ ## 确认与复核
35
+ > 个人工作流:确认 = 用户在对话内一句话通过;无第二审批人,追溯靠 git(commit 记录确认时点)。
36
+ > 确认结果 / 确认时间写在文件头 frontmatter(L3 由 check-loop 强制校验);本节只留叙述性复核记录。
37
+
38
+ - 独立复核:<L3 强制:另开新会话由 AI 复核本 spec,记录复核会话与结论;L1 / L2 无则删除本行>
39
+ - 复核结论:<无则删除本行>
40
+ - 返修意见:<无则删除本行>
41
+ - 确认通过后,方可起草 ../plans/YYYY-MM-DD-<主题>.md