@bolloon/bolloon-agent 0.1.0 → 0.1.2

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 (581) hide show
  1. package/bin/bolloon-cli.cjs +157 -0
  2. package/bin/bolloon-daemon.sh +207 -0
  3. package/bin/bolloon.cmd +11 -0
  4. package/dist/agents/constraint-layer.js +10 -15
  5. package/dist/agents/pi-sdk.js +433 -106
  6. package/dist/agents/protocol.js +82 -1
  7. package/dist/agents/subagent-manager.js +2 -2
  8. package/dist/agents/workflow-engine.js +15 -20
  9. package/dist/agents/workflow-pivot-loop.js +541 -0
  10. package/dist/bollharness/src/index.js +5 -0
  11. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  12. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  13. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  14. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  19. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  20. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  21. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  22. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  23. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  24. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  25. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  26. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  28. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  29. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  30. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  31. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  34. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  35. package/dist/bollharness/src/scripts/context_router.js +67 -0
  36. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  37. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  38. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  39. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  44. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  50. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  51. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  54. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  55. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  56. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  60. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  61. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  62. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  63. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  64. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  65. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  66. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  67. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  68. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  69. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  70. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  71. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  72. package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
  73. package/dist/bollharness-integration/context-chain-router.js +383 -0
  74. package/dist/bollharness-integration/context-router-judgment.js +13 -21
  75. package/dist/bollharness-integration/context-router.js +22 -64
  76. package/dist/bollharness-integration/gate-state-machine.js +14 -19
  77. package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
  78. package/dist/bollharness-integration/guard-checker.js +21 -68
  79. package/dist/bollharness-integration/index.js +14 -124
  80. package/dist/bollharness-integration/integration.js +13 -20
  81. package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
  82. package/dist/bollharness-integration/skill-adapter.js +18 -64
  83. package/dist/cli-entry.js +261 -0
  84. package/dist/constraint-runtime/src/commands.js +17 -7
  85. package/dist/constraint-runtime/src/constraint/budget.js +1 -6
  86. package/dist/constraint-runtime/src/constraint/permission.js +1 -6
  87. package/dist/constraint-runtime/src/models.js +1 -3
  88. package/dist/constraint-runtime/src/tools.js +17 -7
  89. package/dist/constraints/index.js +1 -7
  90. package/dist/documents/reader.js +8 -49
  91. package/dist/heartbeat/DaemonManager.js +242 -0
  92. package/dist/heartbeat/HealthMonitor.js +285 -0
  93. package/dist/heartbeat/StartupVerifier.js +205 -0
  94. package/dist/heartbeat/Watchdog.js +168 -0
  95. package/dist/heartbeat/index.js +84 -0
  96. package/dist/heartbeat/types.js +5 -0
  97. package/dist/index.js +381 -28
  98. package/dist/llm/config-store.js +31 -57
  99. package/dist/llm/llm-judgment-client.js +389 -0
  100. package/dist/llm/pi-ai.js +9 -52
  101. package/dist/network/agent-network.js +46 -90
  102. package/dist/network/hybrid-messenger.js +125 -0
  103. package/dist/network/iroh-bootstrap.js +38 -0
  104. package/dist/network/iroh-discovery.js +145 -0
  105. package/dist/network/iroh-integration.js +9 -16
  106. package/dist/network/iroh-transport.js +10 -48
  107. package/dist/network/p2p.js +23 -62
  108. package/dist/network/storage/adapters/json-adapter.js +4 -42
  109. package/dist/network/storage/index.js +147 -0
  110. package/dist/network/storage/types.js +14 -0
  111. package/dist/pi-ecosystem/index.js +233 -0
  112. package/dist/pi-ecosystem-colony/index.js +29 -90
  113. package/dist/pi-ecosystem-goals/index.js +20 -74
  114. package/dist/pi-ecosystem-judgment/decision.js +29 -47
  115. package/dist/pi-ecosystem-judgment/distillation.js +16 -29
  116. package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
  117. package/dist/pi-ecosystem-judgment/index.js +21 -74
  118. package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
  119. package/dist/pi-ecosystem-mcp/index.js +24 -78
  120. package/dist/pi-ecosystem-subagents/index.js +20 -69
  121. package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
  122. package/dist/social/ant-colony/PheromoneEngine.js +11 -49
  123. package/dist/social/ant-colony/index.js +6 -0
  124. package/dist/social/ant-colony/types.js +4 -8
  125. package/dist/social/channels/ChannelManager.js +8 -46
  126. package/dist/social/channels/DiapChannelBridge.js +9 -47
  127. package/dist/social/channels/InterestMatcher.js +2 -7
  128. package/dist/social/channels/channel-agent-session.js +309 -0
  129. package/dist/social/channels/channel-heartbeat-agent.js +494 -0
  130. package/dist/social/channels/diap-doc-parser.js +204 -0
  131. package/dist/social/channels/harness-workflow-integrator.js +446 -0
  132. package/dist/social/channels/index.js +9 -0
  133. package/dist/social/channels/types.js +3 -7
  134. package/dist/social/global-shared-context.js +6 -47
  135. package/dist/social/heartbeat.js +29 -72
  136. package/dist/social/persona/enhanced-persona.js +299 -0
  137. package/dist/web/client.js +302 -136
  138. package/dist/web/components/p2p/index.js +159 -9
  139. package/dist/web/components/p2p/p2p-connection.js +136 -0
  140. package/dist/web/components/p2p/p2p-manager.js +24 -0
  141. package/dist/web/components/p2p/p2p-store-memory.js +1 -1
  142. package/dist/web/components/p2p/types.js +7 -0
  143. package/dist/web/index.html +5 -0
  144. package/dist/web/style.css +118 -0
  145. package/package.json +12 -6
  146. package/scripts/build-cli.js +206 -0
  147. package/scripts/postinstall.js +153 -0
  148. package/src/agents/pi-sdk.ts +347 -28
  149. package/src/agents/protocol.ts +95 -1
  150. package/src/agents/workflow-pivot-loop.ts +674 -0
  151. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +34 -0
  152. package/src/cli-entry.ts +304 -0
  153. package/src/heartbeat/DaemonManager.ts +283 -0
  154. package/src/heartbeat/HealthMonitor.ts +316 -0
  155. package/src/heartbeat/StartupVerifier.ts +223 -0
  156. package/src/heartbeat/Watchdog.ts +198 -0
  157. package/src/heartbeat/index.ts +108 -0
  158. package/src/heartbeat/types.ts +82 -0
  159. package/src/llm/config-store.ts +23 -5
  160. package/src/network/iroh-transport.ts +3 -3
  161. package/src/web/client.js +302 -136
  162. package/src/web/components/p2p/P2PModal.tsx +91 -3
  163. package/src/web/components/p2p/index.ts +171 -9
  164. package/src/web/components/p2p/p2p-connection.ts +153 -1
  165. package/src/web/components/p2p/p2p-manager.ts +39 -1
  166. package/src/web/components/p2p/p2p-store-memory.ts +1 -1
  167. package/src/web/components/p2p/p2p-tools.ts +315 -0
  168. package/src/web/components/p2p/types.ts +58 -0
  169. package/src/web/index.html +5 -0
  170. package/src/web/server.ts +353 -36
  171. package/src/web/style.css +118 -0
  172. package/tsconfig.cli.json +16 -0
  173. package/tsconfig.electron.json +1 -1
  174. package/tsconfig.json +1 -2
  175. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  176. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  177. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  178. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  179. package/dist/electron-preload.js +0 -15
  180. package/dist/electron-preload.js.map +0 -1
  181. package/dist/electron.js +0 -206
  182. package/dist/electron.js.map +0 -1
  183. package/dist/test/constraint-layer.test.js +0 -164
  184. package/dist/test/global-shared-context.test.js +0 -315
  185. package/dist/test/pi-sdk.test.js +0 -47
  186. package/dist/test/set-persona.test.js +0 -38
  187. package/dist/test/subagent-manager.test.js +0 -276
  188. package/dist/test/workflow-engine.test.js +0 -87
  189. package/dist/web/server.js +0 -1647
  190. package/dist/web/server.js.map +0 -1
  191. package/dist/workflows/collaboration.js +0 -374
  192. package/dist/workflows/index.js +0 -54
  193. package/docs/agent-communication.md +0 -333
  194. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  195. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  196. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  197. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  198. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  199. package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
  200. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  201. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  202. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  203. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  204. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  205. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  206. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  207. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  208. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  209. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  210. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  211. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  212. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  213. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  214. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  215. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  216. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  217. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  218. package/src/bollharness/.boll/settings.json +0 -180
  219. package/src/bollharness/.boll/settings.json.template +0 -31
  220. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  221. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  222. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  223. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  224. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  225. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  226. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  227. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  228. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  229. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  230. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  231. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  232. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  233. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  234. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  235. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  236. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  237. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  238. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  239. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  240. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  241. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  242. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  243. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  244. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  245. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  246. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  247. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  248. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  249. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  250. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  251. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  252. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  253. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  254. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  255. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  256. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  257. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  258. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  259. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  260. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  261. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  262. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  263. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  264. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  265. package/src/bollharness/.claude/settings.json +0 -157
  266. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  267. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  268. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  269. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  270. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  271. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  272. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  273. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  274. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  275. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  276. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  277. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  278. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  279. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  280. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  281. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  282. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  283. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  284. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  285. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  286. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  287. package/src/bollharness/.githooks/pre-commit +0 -21
  288. package/src/bollharness/.github/workflows/ci.yml +0 -88
  289. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  290. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  291. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  292. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  293. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  294. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  295. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  296. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  297. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  298. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  299. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  300. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  301. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  302. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  303. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  304. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  305. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  306. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  307. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  308. package/src/bollharness/docs/launch-article-en.md +0 -276
  309. package/src/bollharness/docs/launch-article-zh.md +0 -305
  310. package/src/bollharness/docs/practice.html +0 -356
  311. package/src/bollharness/docs/practice.md +0 -82
  312. package/src/bollharness/docs/research/round-1/README.md +0 -11
  313. package/src/bollharness/docs/research/round-2/README.md +0 -11
  314. package/src/bollharness/docs/research/round-3/README.md +0 -11
  315. package/src/bollharness/docs/research/round-4/README.md +0 -11
  316. package/src/bollharness/docs/research/round-5/README.md +0 -11
  317. package/src/bollharness/docs/research/round-6/README.md +0 -11
  318. package/src/bollharness/package-lock.json +0 -48
  319. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  320. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  321. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  322. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  323. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  324. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  325. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  326. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  327. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  328. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  329. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  330. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  331. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  332. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  333. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  334. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  335. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  336. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  337. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  338. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  339. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  340. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  341. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  342. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  343. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  344. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  345. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  346. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  347. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  348. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  349. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  350. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  351. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  352. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  353. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  354. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  355. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  356. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  357. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  358. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  359. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  360. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  361. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  362. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  363. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  364. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  365. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  366. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  367. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  368. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  369. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  370. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  371. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  372. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  373. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  374. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  375. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  376. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  377. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  378. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  379. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  380. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  381. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  382. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  383. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  384. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  385. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  386. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  387. package/src/bollharness/tsconfig.json +0 -26
  388. package/src/constraint-runtime/package-lock.json +0 -48
  389. package/src/constraint-runtime/package.json +0 -34
  390. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  391. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  392. package/src/constraint-runtime/src/agent/index.ts +0 -1
  393. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  394. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  395. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  396. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  397. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  398. package/src/constraint-runtime/src/cli/index.ts +0 -15
  399. package/src/constraint-runtime/src/command_graph.ts +0 -20
  400. package/src/constraint-runtime/src/commands.ts +0 -83
  401. package/src/constraint-runtime/src/components/index.ts +0 -15
  402. package/src/constraint-runtime/src/constants/index.ts +0 -15
  403. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  404. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  405. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  406. package/src/constraint-runtime/src/context.ts +0 -45
  407. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  408. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  409. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  410. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  411. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  412. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  413. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  414. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  415. package/src/constraint-runtime/src/history.ts +0 -16
  416. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  417. package/src/constraint-runtime/src/index.ts +0 -28
  418. package/src/constraint-runtime/src/ink.ts +0 -4
  419. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  420. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  421. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  422. package/src/constraint-runtime/src/models.ts +0 -49
  423. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  424. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  425. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  426. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  427. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  428. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  429. package/src/constraint-runtime/src/prefetch.ts +0 -17
  430. package/src/constraint-runtime/src/query.ts +0 -7
  431. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  432. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  433. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  434. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  435. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  436. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  437. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  438. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  439. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  440. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  441. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  442. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  443. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  444. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  445. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  446. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  447. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  448. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  449. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  450. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  451. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  452. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  453. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  454. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  455. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  456. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  457. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  458. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  459. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  460. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  461. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  462. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  463. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  464. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  465. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  466. package/src/constraint-runtime/src/remote/index.ts +0 -15
  467. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  468. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  469. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  470. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  471. package/src/constraint-runtime/src/screens/index.ts +0 -15
  472. package/src/constraint-runtime/src/server/index.ts +0 -15
  473. package/src/constraint-runtime/src/services/index.ts +0 -15
  474. package/src/constraint-runtime/src/session_store.ts +0 -32
  475. package/src/constraint-runtime/src/setup.ts +0 -50
  476. package/src/constraint-runtime/src/skills/index.ts +0 -1
  477. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  478. package/src/constraint-runtime/src/state/index.ts +0 -15
  479. package/src/constraint-runtime/src/system_init.ts +0 -21
  480. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  481. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  482. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  483. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  484. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  485. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  486. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  487. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  488. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  489. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  490. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  491. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  492. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  493. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  494. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  495. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  496. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  497. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  498. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  499. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  500. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  501. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  502. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  503. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  504. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  505. package/src/constraint-runtime/src/tools.ts +0 -100
  506. package/src/constraint-runtime/src/transcript.ts +0 -23
  507. package/src/constraint-runtime/src/types/index.ts +0 -15
  508. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  509. package/src/constraint-runtime/src/utils/index.ts +0 -15
  510. package/src/constraint-runtime/src/vim/index.ts +0 -15
  511. package/src/constraint-runtime/src/voice/index.ts +0 -15
  512. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  513. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  514. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  515. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  516. package/src/constraint-runtime/tsconfig.json +0 -13
  517. package/src/pi-ecosystem/index.ts +0 -453
  518. package/src/pi-ecosystem-colony/index.ts +0 -482
  519. package/src/pi-ecosystem-goals/index.ts +0 -585
  520. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  521. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  522. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  523. package/src/pi-ecosystem-judgment/index.ts +0 -678
  524. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  525. package/src/pi-ecosystem-mcp/index.ts +0 -427
  526. package/src/pi-ecosystem-subagents/index.ts +0 -408
  527. package/src/test/ai-judgment-test.ts +0 -92
  528. package/src/test/bollharness-integration.test.ts +0 -398
  529. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  530. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  531. package/src/test/constraint-layer.test.ts +0 -191
  532. package/src/test/diap-identity-test.ts +0 -222
  533. package/src/test/diap-quick-test.ts +0 -73
  534. package/src/test/global-shared-context.test.ts +0 -393
  535. package/src/test/harness-judgment-injection.test.ts +0 -353
  536. package/src/test/harness-workflow-integrator-test.ts +0 -285
  537. package/src/test/human-value-store.test.ts +0 -316
  538. package/src/test/hybrid-integration-test.ts +0 -126
  539. package/src/test/hybrid-messenger-verify.ts +0 -68
  540. package/src/test/iroh-bistream-debug.ts +0 -50
  541. package/src/test/iroh-communication.test.ts +0 -81
  542. package/src/test/iroh-debug-test.ts +0 -69
  543. package/src/test/iroh-diap-test.ts +0 -90
  544. package/src/test/iroh-direct-connect.ts +0 -65
  545. package/src/test/iroh-e2e-fixed.ts +0 -106
  546. package/src/test/iroh-e2e-same-process.ts +0 -83
  547. package/src/test/iroh-e2e.ts +0 -83
  548. package/src/test/iroh-final-e2e.ts +0 -84
  549. package/src/test/iroh-relay-test.ts +0 -46
  550. package/src/test/iroh-simple-test.ts +0 -49
  551. package/src/test/iroh-transport-verify.ts +0 -60
  552. package/src/test/iroh-transport.test.ts +0 -47
  553. package/src/test/iroh-two-nodes.ts +0 -87
  554. package/src/test/iroh-verify.ts +0 -55
  555. package/src/test/judgment-decision.test.ts +0 -373
  556. package/src/test/llm-judgment-integration.test.ts +0 -257
  557. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  558. package/src/test/p2p-agent-dialogue.ts +0 -423
  559. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  560. package/src/test/p2p-agent-harness-flow.ts +0 -562
  561. package/src/test/p2p-agent-harness-single.ts +0 -175
  562. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  563. package/src/test/p2p-cid-connect-test.ts +0 -245
  564. package/src/test/p2p-connect-receiver.ts +0 -85
  565. package/src/test/p2p-iroh-test.ts +0 -214
  566. package/src/test/p2p-minimal-test.ts +0 -264
  567. package/src/test/p2p-node-1.ts +0 -172
  568. package/src/test/p2p-node-2.ts +0 -172
  569. package/src/test/p2p-server.ts +0 -335
  570. package/src/test/p2p-two-nodes-test.ts +0 -542
  571. package/src/test/pi-sdk.test.ts +0 -47
  572. package/src/test/set-persona.ts +0 -56
  573. package/src/test/simple.test.ts +0 -11
  574. package/src/test/storage-integration.test.ts +0 -191
  575. package/src/test/subagent-manager.test.ts +0 -392
  576. package/src/test/test-gate-flow.test.ts +0 -92
  577. package/src/test/workflow-engine.test.ts +0 -101
  578. package/src/workflows/collaboration.ts +0 -455
  579. package/src/workflows/index.ts +0 -64
  580. package/vitest.config.ts +0 -12
  581. package//346/203/263/346/263/225.md +0 -79
@@ -1,2039 +0,0 @@
1
- # ADR-038: AI Harness 优化策略 — 测量驱动的持续进化
2
-
3
- **状态**: proposed (v5 — meta-review closure patch appended; see §12)
4
- **日期**: 2026-04-07
5
- **触发**: Anthropic harness engineering 文章 + 6 轮自研数据暴露治理有效性缺口 + CC 源码/行业前沿深度学习 + 18 个补充资源(v4)+ 用户 meta-review "是否真的完成最佳实践" 标准(v5)
6
- **关联**: ADR-030 (Guard Signal Protocol), PLAN-058 (Guard 实施)
7
- **Change Classification**: contract(影响 hook 行为、skill 加载、guard 执行流程)
8
-
9
- ### v4 Changelog(相对 v3 的增量)
10
-
11
- > **v4 是 v3 的增量补丁,不是重写。** v3 全部 9 条 SC + 7 个 D 决策 + 4 维 Grading 全部保留。v4 在 v3 的稳定地基上叠加 6 个补充洞察。
12
- > [来源: Anthropic — "non-linear improvement, regularly preferred middle iteration over last one"。好的迭代是叠加而非推翻。]
13
-
14
- **新增内容**:
15
-
16
- | 章节 | 新增 | 来源 |
17
- |------|------|------|
18
- | §2.4 | 6 个补充洞察(Initializer Agent / Context Rot / Trace Analyzer / Tool Isolation / Objective Recitation / Reliability 4 维) | 18 资源横向搜索 |
19
- | §3.10 | Context Rot 防御原则(不只防 exhaustion) | Anthropic Effective Context Engineering |
20
- | §3.11 | Objective Recitation 原则 | Manus/IMPACT |
21
- | §3.12 | Tool Isolation 原则(schema-level 写权限排除) | OpenDev arXiv 2603.05344 |
22
- | §3.13 | Reliability 4 维测量原则 | arXiv 2602.16666 |
23
- | §4 D8 | Initializer Agent JSON 进度追踪(严格 schema 防自改验收) | Anthropic 第二篇 |
24
- | §4 D9 | PreCompact 增强:Objective Recitation | Manus/IMPACT |
25
- | §4 D10 | Trace Analyzer:failure-analyzer.py 升级为自动模式分析 | LangChain |
26
- | §4 D11 | 审查 Agent 工具隔离协议 | OpenDev |
27
- | §5 | 架构蓝图加 D8/D9/D10/D11 事件流 | — |
28
- | §6 | 复用清单加 6 项(29-34) | — |
29
- | §10 | 参考文献加 6 个新来源 | — |
30
- | §11 | v4 audit 状态 | — |
31
-
32
- **v3 状态**:保留为有效设计基线。所有 v3 决策(D1-D7)继续推进部署,v4 决策(D8-D11)作为增量纳入同一部署批次。
33
-
34
- ---
35
-
36
- ## §0 Meta-Compliance: 用 Harness 原则设计 Harness
37
-
38
- > 本 ADR 的设计过程本身必须符合它所倡导的原则。v2 自审结果为 4 FAIL / 1 PARTIAL / 2 PASS。v3 修正所有 FAIL。
39
-
40
- ### Sprint Contract(本 ADR 的验收标准)
41
-
42
- | # | 验收标准 | 验证方法 |
43
- |---|---------|---------|
44
- | SC-1 | 每个设计决策标注外部证据来源(文章+具体数据点) | 全文扫描:每个 D* 必须有 `[来源: ...]` |
45
- | SC-2 | 无自拟数值目标——所有阈值/目标来自外部基准或自研数据 | 检查所有数字是否有出处 |
46
- | SC-3 | 所有评估触发为事件驱动,非日历驱动 | Grep "每天/每月/每周" → 替换为事件条件 |
47
- | SC-4 | 架构目标=V2(Opus 4.6 原生),不回退到 V1(Sprint 分解) | D4 不包含强制 Sprint 分解 |
48
- | SC-5 | CC 能力列表完整(含 asyncRewake/attribution/PermissionRequest 等 v2 遗漏项) | 对照 transcript 105 条清单 |
49
- | SC-6 | 所有参考文献包含 URL | §10 每条有 URL |
50
- | SC-7 | 包含 Meta-Compliance 审计章节 | 本 §0 + §11 |
51
- | SC-8 | Evaluator 为按需而非强制(来源:Anthropic V2) | D4 描述 on-demand 触发条件 |
52
- | SC-9 | v2 自审发现全部闭环 | §11 逐条标注 FIXED |
53
-
54
- ### Grading Criteria(评估本 ADR 用)
55
-
56
- 采用 Anthropic 原始 4 维度,按架构文档场景适配检测方法:
57
-
58
- | 维度 | 检测方法 | 硬阈值 |
59
- |------|---------|-------|
60
- | **Design Quality** | 架构是否 sound?是否利用外部证据?是否事件驱动? | < 3 = FAIL |
61
- | **Originality** | 是否超越复制文章?是否将多源 synthesis 为新方案? | < 3 = FAIL |
62
- | **Craft** | 数据点是否准确?URL 是否完整?措辞是否精确? | < 3 = FAIL |
63
- | **Functionality** | 实施后是否真能改善 harness?ROI 是否正向? | < 3 = FAIL |
64
-
65
- [来源: Anthropic "Harness Design for Long-Running Application Development" §Grading Criteria — design quality / originality / craft / functionality]
66
-
67
- ---
68
-
69
- ## §1 问题
70
-
71
- ### 1.1 症状:数据说了什么
72
-
73
- 我们有完整的 6 轮自研数据(docs/research/016-round1~6)。数据讲了一个不舒服但诚实的故事:
74
-
75
- | 数据点 | 数值 | 含义 |
76
- |--------|------|------|
77
- | CLAUDE.md 遵从率 | ~10-20% | 最大 token 投入(11.9k)的 80-90% 被忽略 |
78
- | Convention 层占比 | 53% (73/138 issue) | 超过一半的治理靠最弱的执行层 |
79
- | Guard 层占比 | 9.2% (13/138 issue) | 最强执行层覆盖不到十分之一 |
80
- | ADR-030 自身合规率 | 50-60% (Round 5) | 治理系统只遵守自己一半的规则 |
81
- | Feedback 机械化率 | 19% (8/42) | 81% 的经验教训停留在文字叮嘱 |
82
- | Harness 组件数 | 16 guard checks + 17 fragments + 26 skills | 只增不减,从未做过 load-bearing 审计 |
83
- | CC Hook 利用率 | 2/28 事件类型, 1/4 hook 类型 | 93% 的 hook 能力未使用 |
84
- | Inferential 组件数 | 0 | 没有任何 LLM 参与的质量评估 |
85
- | 产出质量指标 | 无 | 只测"违不违规",不测"好不好" |
86
-
87
- **Anthropic 对比证据**——Solo(无 harness)vs Full harness:
88
-
89
- | 维度 | Solo | Full Harness | 倍数 |
90
- |------|------|-------------|------|
91
- | 时间 | 20 分钟 | 6 小时 | 18x |
92
- | 成本 | $9 | $200 | 22x |
93
- | 质量 | 三处关键断裂 | 完整可用应用 | ∞ |
94
-
95
- Solo 的三个精确失败点(来源: Anthropic 文章 §Solo Run):
96
- 1. 固定高度面板导致大部分视口空白
97
- 2. 填充关卡提示先创建精灵和实体但 UI 无引导入口
98
- 3. 实体出现在屏幕但不响应输入——实体定义和游戏运行时接线断裂
99
-
100
- 这三个都是**跨模块集成问题**——单次生成无法自检的典型失败。正是 Evaluator 要解决的。
101
-
102
- ### 1.2 根因
103
-
104
- **R1: 投入分配倒挂** — 最多精力投入遵从率最低的层(CLAUDE.md 规则文字),而非最高的层(guard 代码)。
105
- [来源: OpenAI "给 agent 地图,不是千页手册" — https://openai.com/index/harness-engineering/]
106
-
107
- **R2: 没有负反馈循环** — Harness 组件只有"增加"路径,没有"移除"路径。Anthropic 验证:从 Sonnet 4.5(V1)升级到 Opus 4.5(V2)后移除了 Sprint 分解——组件必要性随模型能力变化。
108
- [来源: Anthropic 文章 §V2 — V1 使用 Sonnet 4.5 需要 Sprint 分解和 context reset,V2 使用 Opus 4.5 后 "largely removed the need for sprint decomposition"。注:我们当前使用 Opus 4.6,能力 ≥ Opus 4.5]
109
-
110
- **R3: 只有下限保护,没有上限追求** — 按 Martin Fowler 四象限(Guide/Sensor × Computational/Inferential),全部组件集中在 Computational 象限,0% Inferential。
111
- [来源: Martin Fowler "Harness Engineering for Coding Agent Users" — https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html]
112
-
113
- **R4: 没有测量就没有优化** — 不知道每个 hook 的 token 开销、每个 guard 的 findings 频率。LangChain 只改 harness 就从 Terminal Bench 52.8%→66.5%(Top 30→Top 5),因为有 LangSmith traces 系统性 debug 失败模式。
114
- [来源: LangChain "Improving Deep Agents with Harness Engineering" — https://blog.langchain.com/improving-deep-agents-with-harness-engineering/]
115
-
116
- **R5: CC 能力严重低估** — CC 提供 28 种 hook 事件、4 种 hook 类型、updatedInput、@include、PreCompact、CronScheduler、Verification Agent、Magic Docs、Auto Dream、Session Memory、Skill Improvement、attribution 设置等。我们只用了不到 10%。
117
- [来源: CC 源码分析 — anthropics/claude-code]
118
-
119
- ### 1.3 核心问题定义
120
-
121
- > 如何基于行业最佳实践和 CC 已有能力,建立一个可观测、可评估、能自我进化的 harness 系统?
122
-
123
- ### 1.4 假设校准
124
-
125
- **假设我们的 harness 做得不好。** 这不是谦虚——Anthropic 验证的 self-evaluation bias 是结构性的:模型系统性地高估自己的产出质量。Evaluator 开箱即用效果差——"identify issues then talk itself out of them"。
126
- [来源: Anthropic 文章 §Evaluator — "Out of the box, Claude is a poor QA agent"]
127
-
128
- ---
129
-
130
- ## §2 外部学习
131
-
132
- ### 2.1 Anthropic: V1→V2 演化 + 三 Agent 架构
133
-
134
- **来源**: "Harness Design for Long-Running Application Development" (2026-03-24)
135
- https://www.anthropic.com/engineering/harness-design-long-running-apps
136
-
137
- #### 核心架构
138
-
139
- ```
140
- Planner Agent ─── 拆解大目标(有野心但聚焦产品上下文,不做细粒度技术细节)
141
-
142
- Generator Agent ── V1: 按 Sprint 执行 / V2: 一次性完成全部
143
-
144
- Evaluator Agent ── 用 Playwright 自主导航应用,截图+交互式测试
145
- ↓ (不通过 → Generator 决定 Refine 或 Pivot)
146
- ↓ (通过 → 结束)
147
- ```
148
-
149
- #### V1→V2 关键演化
150
-
151
- | 方面 | V1 (Sonnet 4.5) | V2 (Opus 4.5+) | 原因 |
152
- |------|-----------------|---------------|------|
153
- | Sprint 分解 | 必需(10 sprints) | **移除** | Opus 原生处理长任务 |
154
- | Context Reset | 频繁(context anxiety) | 不需要 | Opus 无 context anxiety |
155
- | Evaluator 时机 | 每个 Sprint 后 | **单次 pass** | 不需要细粒度分解 |
156
- | Planner 输出 | 16 功能 + 10 sprint 分解 | 高层设计语言 | Generator 自行分解 |
157
-
158
- **→ 对我们的含义**:我们应直接设计 V2 架构(无强制 Sprint 分解,Evaluator 单次 pass),不从 V1 演化。
159
-
160
- #### 精确成本数据(DAW 案例)
161
-
162
- | Agent & Phase | Duration | Cost |
163
- |---|---|---|
164
- | Planner | 4.7 min | $0.46 |
165
- | Build Round 1 | 2 hr 7 min | $71.08 |
166
- | QA Round 1 | 8.8 min | $3.24 |
167
- | Build Round 2 | 1 hr 2 min | $36.89 |
168
- | QA Round 2 | 6.8 min | $3.09 |
169
- | Build Round 3 | 10.9 min | $5.88 |
170
- | QA Round 3 | 9.6 min | $4.06 |
171
- | **Total** | **3 hr 50 min** | **$124.70** |
172
-
173
- 关键数据点:
174
- - **QA 仅占总成本 8.3%**($10.39/$124.70)但发现了所有关键功能缺失
175
- - **构建成本递减**:$71→$36→$5.88(第一轮后 Generator 已有基础)
176
- - **QA 时间相对稳定**:8.8/6.8/9.6 min(不随轮次减少——评估复杂度不变)
177
-
178
- #### Evaluator 精确能力证据
179
-
180
- Round 1 QA 发现的三个精确 bug(代码行号级别):
181
- 1. `fillRectangle` 函数存在但 mouseUp 未正确触发——矩形工具只在起点和终点放瓦片而非填充
182
- 2. `LevelEditor.tsx:892` 的 Delete 键条件应改为 `selection || (selectedEntityId && activeLayer === 'entity')`
183
- 3. `PUT /frames/reorder` 路由定义在 `/{frame_id}` 之后——FastAPI 把 `reorder` 当 frame_id 整数匹配返回 422
184
-
185
- → Evaluator 反馈精确到代码行号,可直接执行修复。
186
-
187
- #### 关键工程决策
188
-
189
- 1. **Sprint Contract**(V1):实现前 Generator 和 Evaluator 协商验收标准。Sprint 3 单个 contract 有 27 条。Contract 越具体,评估越机械化。
190
- 2. **Grading Criteria 4 维**:design quality / originality / craft / functionality。权重偏向模型弱项。
191
- 3. **Evaluator 校准困难**:"several rounds" 调优才达到合理水平。典型失败:识别问题→说服自己不是大问题→批准。
192
- 4. **首轮就已优于基线**:仅有 Grading Criteria 语言(不跑评估循环),首轮就 "noticeably better than baseline with no prompting at all"。标准不只是评分工具,也是隐式生成指导。
193
- 5. **非线性改善**:作者经常更喜欢中间某轮而非最后一轮。保留所有中间产物。
194
- 6. **措辞引力效应**:"museum quality" 把设计推向特定视觉收敛。评分标准中的隐喻/类比会成为 generator 输出的引力中心。
195
- 7. **显式惩罚 AI slop**:标准中明确列出并惩罚典型 AI 生成模式。
196
- 8. **Agent 间文件通信**:一个写文件,另一个读并回应。文件提供持久化 artifact + 可审计过程。
197
- 9. **Generator 有 git 版本控制**:每个 sprint 结束有版本记录,支持 rollback。
198
- 10. **Planner 不做细粒度技术决策**:预先指定技术细节出错会级联到下游。
199
-
200
- #### 元原则
201
-
202
- > "Every component encodes an assumption about what the model can't do on its own — those assumptions are worth stress testing."
203
- > "The space of interesting harness combinations doesn't shrink as models improve. Instead, it moves, and the interesting work is to keep finding the next novel combination."
204
- > "The evaluator is not a fixed yes-or-no decision. It is worth the cost when the task sits beyond what the current model does reliably solo."
205
-
206
- ### 2.2 Claude Code 源码: 完整能力清单
207
-
208
- **来源**: CC 源码 (`anthropics/claude-code`) + 官方插件 (`anthropics/claude-plugins-official`)
209
-
210
- #### 2.2.1 Hook 系统(完整 28 事件)
211
-
212
- **我们使用的 (2/28)**:PreToolUse, PostToolUse
213
-
214
- **高价值未使用**:
215
-
216
- | 事件 | 价值 | 优先级 |
217
- |------|------|--------|
218
- | `Stop` | 回复后验证——注入 PreCompletionChecklist、触发 Evaluator | 最高 |
219
- | `PreCompact` | compact 时保留关键信息(PLAN/issue/ADR-030) | 最高 |
220
- | `UserPromptSubmit` | 自动注入上下文(当前 branch、活跃 issue) | 高 |
221
- | `FileChanged` | 文件变更监控 → 文档同步检查 | 高 |
222
- | `SessionEnd` | 会话结束时自动保存状态、生成 reflection | 高 |
223
- | `PostToolUseFailure` | 工具调用失败自动分析/重试 | 中 |
224
- | `SubagentStart/Stop` | 监控子 agent 行为 | 中 |
225
- | `TaskCreated/Completed` | 后台任务生命周期 | 中 |
226
- | `WorktreeCreate/Remove` | Worktree 生命周期 | 低 |
227
-
228
- **4 种 hook 类型(我们只用 command)**:
229
-
230
- | 类型 | 能力 | 我们的用途 |
231
- |------|------|-----------|
232
- | `command` | shell 脚本 | ✅ guard-feedback.py |
233
- | `prompt` | LLM 做判断 | ❌ 安全/质量评估 |
234
- | `agent` | 完整 agentic verifier | ❌ Stop hook 用 Evaluator |
235
- | `http` | 调用外部 API | ❌ 远程 metrics 上报 |
236
-
237
- **关键 hook 选项(v2 遗漏)**:
238
-
239
- | 选项 | 能力 |
240
- |------|------|
241
- | `updatedInput` | 自动修改工具输入(python→python3, Co-Authored-By) |
242
- | `if` 条件 | 只匹配特定工具/模式时触发 |
243
- | `async` | 长时间检查不阻塞交互 |
244
- | `asyncRewake` | 后台运行,exit 2 时唤醒模型(发现问题才中断) |
245
- | `once` | 一次性检查 |
246
- | `updatedPermissions` | **动态权限**——PermissionRequest hook 可在运行时按上下文授权 |
247
-
248
- #### 2.2.2 Context 管理
249
-
250
- | 能力 | 现状 | 价值 |
251
- |------|------|------|
252
- | `@include` 指令 | ❌ | CLAUDE.md 引用外部文件,不复制内容 |
253
- | `.claude/rules/*.md` + `paths` | ❌ | 目录级规则(不同 scene 不同规则) |
254
- | `PreCompact` hook | ❌ | compact 时保留关键信息 |
255
- | HTML 注释 `<!-- -->` | ❌ | 只供人类阅读,不消耗 token |
256
- | Magic Docs `# MAGIC DOC:` | ❌ | 自动更新的活文档,`_instructions_` 语法写更新指令 |
257
-
258
- #### 2.2.3 Settings 能力(v2 完全遗漏)
259
-
260
- | 设置 | 价值 |
261
- |------|------|
262
- | `attribution` | 自定义 Co-Authored-By 文本——**比 updatedInput hook 更优雅** |
263
- | `worktree.symlinkDirectories` | Worktree 不复制 venv/node_modules |
264
- | `worktree.sparsePaths` | Sparse checkout,大 monorepo 优化 |
265
- | `statusLine` | 显示当前 branch、issue 状态 |
266
- | `env` | 设置环境变量 |
267
- | `CLAUDE_ENV_FILE` | Hook 写 bash exports → 应用到后续 BashTool |
268
- | `apiKeyHelper` | 自定义 API key 来源脚本 |
269
- | `cleanupPeriodDays` | 聊天记录保留天数 |
270
-
271
- #### 2.2.4 Agent 系统
272
-
273
- | 能力 | 现状 | 价值 |
274
- |------|------|------|
275
- | `isolation: "worktree"` | 部分用 | Guardian issue 自动 worktree |
276
- | Agent `hooks` | ❌ | 审查者有自己的质量保证 hook |
277
- | Built-in Verification Agent | ❌ | 对抗性验证 prompt,5 种自我合理化识别模式,必须含至少一个对抗性探测(并发/边界值/幂等性),**严禁修改项目文件**(只能写 /tmp) |
278
- | Agent `memory` 字段 | ❌ | 控制 agent 记忆范围(user/project/local) |
279
- | Agent `skills` 字段 | ❌ | 声明可用 skills |
280
- | Agent `initialPrompt` | ❌ | 启动时自动发送的 prompt |
281
- | Fork Subagent | ❌ | 不指定 subagent_type 时隐式 fork,继承完整上下文 |
282
-
283
- #### 2.2.5 自动化系统
284
-
285
- | 能力 | 现状 | 价值 |
286
- |------|------|------|
287
- | CronScheduler | ❌ | 定期任务 |
288
- | Session Memory | ❌ | 后台 forked subagent,定期提取关键信息写入 markdown |
289
- | Skill Improvement | ❌ | 每 5 turn 分析对话,返回 `{section, change, reason}` 的 skill 改进建议 |
290
- | Auto Dream | ❌ | 4 阶段记忆巩固(Orient → Gather → Consolidate → Prune),条件:上次 >24h + 累积 >5 会话 |
291
-
292
- #### 2.2.6 官方插件
293
-
294
- | 插件 | 核心价值 | 子结构 |
295
- |------|---------|-------|
296
- | **skill-creator** | Skill eval+benchmark+迭代循环 | 3 子 agent(Grader/Analyzer/Comparator)+ `run_loop.py` 描述优化 + eval-viewer 人类审查 |
297
- | **claude-md-management** | CLAUDE.md 6 维质量审计 | Commands (20) / Architecture (20) / Patterns (15) / Conciseness (15) / Currency (15) / Actionability (15) = A-F 等级 |
298
- | **ralph-loop** | Stop hook + completion promise 自动迭代 | 读 transcript JSONL → 提取 `<promise>` tag → 未完成则 increment iteration + feed same prompt |
299
- | **feature-dev** | 7 阶段特性开发 | Discovery → Exploration (2-3 parallel agents) → **Clarifying Questions (HARD GATE)** → Architecture (2-3 agents: minimal/clean/pragmatic) → Implementation (需 user approval) → Review (3 parallel reviewers: simplicity/DRY, bugs/correctness, conventions) → Summary |
300
- | **pr-review-toolkit** | 6 独立 reviewer agent | code-reviewer (compliance+bugs, ≥80 置信度), code-simplifier (clarity+DRY, opus), comment-analyzer (comment rot), pr-test-analyzer (behavioral coverage, 1-10 criticality), silent-failure-hunter (CRITICAL/HIGH/MEDIUM), type-design-analyzer (4 维各 1-10: Encapsulation/Expression/Usefulness/Enforcement) |
301
- | **frontend-design** | 美学引导 prompt | typography/color/motion/composition/backgrounds。**注意**: 这是生成引导 skill,不包含 evaluator 循环——评估循环在 `claude-cookbooks` 的 notebook 中 |
302
- | **playwright** | 运行时应用实测 | 浏览器自动化 |
303
-
304
- ### 2.3 行业最佳实践
305
-
306
- #### Tier 1: 生产级,直接可复用
307
-
308
- | 来源 | 核心贡献 | 对我们的直接价值 | URL |
309
- |------|---------|----------------|-----|
310
- | **OpenAI Codex** (3 篇) | "给 agent 地图,不是千页手册";100 万行代码+1500 PR | CLAUDE.md 越长越无效 | https://openai.com/index/harness-engineering/ |
311
- | **Stripe Minions** (2 篇) | **"Walls matter more than the model"**——确定性约束比更好的模型更重要。Blueprint: agentic+deterministic 交替。每周 1300+ PR | 确定性 checkpoint 设计 | https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents |
312
- | **LangChain** (3 篇) | 只改 harness: 52.8%→66.5%。PreCompletionChecklist + LoopDetection + LocalContext | **3 个 middleware 模式** | https://blog.langchain.com/improving-deep-agents-with-harness-engineering/ |
313
- | **Trail of Bits** | 201 skills,15 bugs/week→200 bugs/week。AI Maturity Level 3 = agent 全自动分析+triage+report | Skill 设计 + 成熟度分级 | https://github.com/trailofbits/skills |
314
- | **Microsoft Gov Toolkit** | 7 开源包(Agent OS/Mesh/Runtime/SRE/Compliance/Marketplace/Lightning),覆盖 OWASP Agentic Top 10 | Agent Compliance grading | https://github.com/microsoft/agent-governance-toolkit |
315
-
316
- #### Tier 2: 框架级
317
-
318
- | 来源 | 核心贡献 | URL |
319
- |------|---------|-----|
320
- | **Martin Fowler** (2 篇) | 四象限 + **"The rigor has to go somewhere"**——AI 写代码后纪律转移而非消失。"On the loop" = 设计 spec+test+feedback 引导 agent | https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html |
321
- | **Simon Willison** | **Red-Green 模式**:先写失败测试 → agent 让它通过 → 迭代。"应该大量写测试让 agent 迭代,而非写详细 TASK.md" | — |
322
- | **Addy Osmani** | **"Waterfall in 15 minutes"**——spec.md 快速规划。Commits = save points for rollback | — |
323
- | **Ralph Wiggum** | **"Tune like a guitar"**——agent 做错时加一条指令,prompt 逐渐积累修正。"Eventually the prompt is the product." 7 原则:One item per loop, Deterministic stack, Specs over prompts, Tune like a guitar | — |
324
- | **Anthropic Agent Skills** | Progressive disclosure——skill 不应一次全加载,按编辑文件路径动态加载 | https://www.anthropic.com/research/agent-skills |
325
- | **Google Conductor** | 三阶段(setup→newTrack→implement)+ Brownfield 支持 | — |
326
- | **OpenAI AGENTS.md** | 三层层级:Global→Project→Merge,32 KiB 限制,`.override.md` 覆盖机制 | — |
327
-
328
- #### Tier 3: 学术前沿
329
-
330
- | 来源 | 核心贡献 | URL |
331
- |------|---------|-----|
332
- | **ACE** (ICLR 2026) | Memory 自动进化:generation-reflection-curation 循环, +10.6% | https://github.com/ace-agent/ace |
333
- | **OpenDev** (arXiv 2603.05344) | 五层安全:(1) prompt guardrails (2) schema-level dual-agent (3) runtime approval (4) tool validation (5) lifecycle hooks | https://arxiv.org/abs/2603.05344 |
334
- | **ABC** (arXiv 2602.22302) | Guard = Contract (Preconditions, Invariants, Governance, Recovery) | https://arxiv.org/abs/2602.22302 |
335
- | **NLAH** (arXiv 2603.25723) | Harness 行为外部化为可编辑自然语言制品 + Intelligent Harness Runtime | https://arxiv.org/abs/2603.25723 |
336
- | **Darwin Gödel Machine** | Agent 自我重写代码,SWE-bench 20→50%,自发涌现错误记忆+多方案评估 | https://arxiv.org/abs/2505.22954 |
337
- | **OpenAI GEPA** | 采样 agent 轨迹 → 自然语言反思 → 提议 prompt 修订 → 迭代进化 | OpenAI Cookbook |
338
-
339
- ### 2.4 v4 补充:18 资源横向搜索的 6 个新洞察
340
-
341
- > v3 的 §2.1-§2.3 主要基于 Anthropic 主文章 + CC 源码 + 行业一手资料。v4 通过横向搜索(Anthropic 第二篇 + Manus/IMPACT + OpenDev + Reliability 论文等)补充了 6 个 v3 未覆盖的关键洞察。
342
-
343
- #### 2.4.1 Initializer Agent 模式
344
-
345
- **来源**: Anthropic "Effective Harnesses for Long-Running Agents"
346
- https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents
347
-
348
- **核心**:
349
- - 专用 **Initializer Agent** 在编码 Agent 开始前运行
350
- - 写 `claude-progress.txt` 进度文件 + 严格 **JSON** 特性清单(200+ features 全部标 `failing`)
351
- - **严格 JSON 格式**防止模型自改验收标准 — pass/fail 状态只能是两个枚举值,不允许自由文本
352
- - **单特性/会话约束** — 一个 session 只做一个 feature,防止上下文耗尽和半成品
353
- - Session 启动协议:先读 `git log` + progress files + feature lists 再开始工作
354
-
355
- **对我们的价值**: 这是 v3 D4.1 Sprint Contract 的**严格化版本**。用 JSON schema 约束验收标准,模型无法用自然语言"重新解释"完成度。比 stop-evaluator.md 的自然语言检查清单更抗 self-evaluation bias。
356
-
357
- #### 2.4.2 Context Rot vs Context Exhaustion
358
-
359
- **来源**: Anthropic "Effective Context Engineering for AI Agents"
360
- https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
361
-
362
- **核心数据**:
363
- - **65% 的企业 AI 失败归因于 context drift,不是 raw context limits**
364
- - 上下文性能随长度递减("context rot")—— 不是用完才出问题,是逐渐变差
365
- - 最安全的轻量级 compaction 是 **tool result clearing**
366
- - Just-in-time 加载:维护轻量标识符(文件路径、查询),运行时用工具加载数据
367
- - Subagent 返回压缩摘要(**1,000-2,000 tokens**)而非完整上下文
368
-
369
- **对我们的价值**: 我们的 v3 PreCompact hook 关注"保留什么"(正确),但忽略了 context rot 的本质——不是信息丢失,是注意力分散。11.9k token 的 CLAUDE.md 本身就是 context rot 来源。@include 拆分(D3.1)不只是省 token,更是减少 rot。这给 D3.1 增加了一个新的优化目标维度。
370
-
371
- #### 2.4.3 Trace Analyzer Skill
372
-
373
- **来源**: LangChain "Improving Deep Agents with Harness Engineering"
374
- https://blog.langchain.com/improving-deep-agents-with-harness-engineering/
375
-
376
- **核心**:
377
- - LangChain 三 hook 中间件架构:`before_model` / `modify_model_request` / `after_model`
378
- - **Trace Analyzer Skill**:自动化并行 error 分析 agent,获取 traces → 分析错误 → 提议 harness 变更 → 验证
379
- - 创建了 **harness 自我改进的反馈循环**
380
-
381
- **对我们的价值**: v3 D6 设计了自我进化机制,但缺少自动化 trace 分析这个组件。我们的 `failure-analyzer.py`(v3 D2.7)只**记录**失败,不**分析**模式。LangChain 的做法是让 Agent 自动分析失败 traces 并提议 harness 变更——这比人工读 JSONL 高效得多。这是 D2.7 的天然演进路径。
382
-
383
- #### 2.4.4 Plan Mode 工具隔离
384
-
385
- **来源**: OpenDev 五层安全论文
386
- https://arxiv.org/html/2603.05344v1
387
-
388
- **核心**:
389
- - Plan mode 的 planner subagent **只接收只读工具**——写操作在 **schema 层面**完全排除
390
- - 六阶段执行循环:pre-check/compaction → thinking → self-critique → action → tool execution → post-processing
391
- - Subagent 隔离:无 session_manager(消息不持久化)、无 console 输出旁路、无 config 泄露
392
- - 双内存架构:episodic memory(跨 session 项目级)+ working memory(当前 turn 观察)
393
-
394
- **对我们的价值**: 我们的 Gate 审查用 `TeamCreate` 创建 subagent,但**没有工具隔离**。审查 Agent 理论上可以修改代码——这是结构性安全洞。应该在 schema 层面限制审查 Agent 只能 Read/Glob/Grep,不能 Edit/Write/Bash(write)。
395
-
396
- #### 2.4.5 Objective Recitation
397
-
398
- **来源**: Manus/IMPACT 工程实践
399
- https://www.morphllm.com/agent-engineering
400
-
401
- **核心**:
402
- - "**Recite objectives (todo.md) at end of context to maintain goal focus after ~50 tool calls**"
403
- - KV-cache 命中率是最重要的性能指标(~100:1 prefill-to-decode ratio)
404
- - 通过 **logit masking** 而非移除定义来屏蔽工具(保留 cache)
405
- - Cursor 发现:丢失 reasoning traces 导致 **30% 性能下降**
406
-
407
- **对我们的价值**: 我们的 PreCompact hook(v3 D2.3)保留"PLAN/TASK/Issue 状态",但没有在上下文末尾**重复目标**。50+ tool calls 后 Agent 容易偏离。可以在 PreCompact 或 Stop hook 中注入当前目标摘要——这是 30% 性能损失的潜在防线。
408
-
409
- #### 2.4.6 Agent Reliability 四维度
410
-
411
- **来源**: arXiv "Towards Reliable Agentic Systems" 2602.16666
412
- https://arxiv.org/html/2602.16666v1
413
-
414
- **核心**:
415
- - 四个可靠性维度:
416
- - **Consistency**(可重复性)
417
- - **Robustness**(优雅降级)
418
- - **Predictability**(准确置信度)
419
- - **Safety**(有界故障)
420
- - 关键发现:**reliability gains lag capability progress**(可靠性进步远慢于能力进步)
421
- - **Prompt brittleness paradox**: 模型处理真实基础设施故障比处理同义语义改写更好
422
- - 多轮评估方法:每任务 5 次不同 seed + 5 种语义等价改写 + 20% API 故障注入
423
-
424
- **对我们的价值**: 我们没有可靠性维度的测量。目前只有"是否遵从规则"(binary),没有"在多大程度上可重复"(continuous)。Prompt brittleness paradox 也解释了为什么 CLAUDE.md 规则遵从率低——同一规则的不同表述,遵从率可能差异巨大。这指向 v3 D1 metrics 之上的下一层测量维度。
425
-
426
- ---
427
-
428
- ## §3 核心原则
429
-
430
- ### 3.1 测量先于优化
431
- 没有数据的优化是猜测。每个 harness 组件必须回答:触发频率?findings 数量?token 开销?产出影响?
432
- [来源: LangChain 用 LangSmith traces 系统性 debug → 52.8%→66.5%]
433
-
434
- ### 3.2 每个组件必须证明自己
435
- 每个组件编码一个假设——"模型不能自己做 X"。假设必须被持续验证。模型升级后假设可能不再成立。
436
- [来源: Anthropic 元原则 + V2 移除 Sprint 的实际案例]
437
-
438
- ### 3.3 遵从率阶梯决定投入分配
439
- blocking hooks (~100%) > advisory (~40-60%) > CLAUDE.md (~10-20%)。一条 guard > 十条 CLAUDE.md 规则。
440
- [来源: boll Round 3 自研数据 — deploy.sh 无 hook 遵从率 3%, 有 hook ~100%]
441
-
442
- ### 3.4 分离生产者和评估者
443
- Self-evaluation bias 是结构性的。Developer agent ≠ Evaluator agent。但 Evaluator 不是固定必需——**当任务超出模型可靠 solo 完成的边界时才值得投入**。
444
- [来源: Anthropic — "The evaluator is not a fixed yes-or-no decision. It is worth the cost when the task sits beyond what the current model does reliably solo."]
445
-
446
- ### 3.5 复用优于自建
447
- 先问"别人造好了吗?"。CC 已有 28 种 hook 事件、7 个官方插件、内置 Verification Agent。行业有 LangChain middleware、Stripe Blueprint。
448
- [来源: CC 源码 + 官方插件库 49 个插件]
449
-
450
- ### 3.6 事件驱动评估,非日历驱动
451
- AI 的时间极快,不能用人类的日历节奏规划。正确频率 = **事件触发**:每次代码变更后跑 checkpoint,每次 WP 完成后可选 Evaluator,每次 session 结束后 reflection。数据自然积累,随时可查。
452
- [来源: Anthropic 每 Sprint 后即评估 / LangChain 每 agent 退出时 PreCompletionChecklist / Stripe 每次代码生成后即 checkpoint]
453
-
454
- ### 3.7 确定性节点和推理节点交替
455
- Agent 生成代码 → [编译] → [测试] → [lint] → Agent 下一步。确定性 checkpoint 不用 LLM,成本 $0、可靠性 100%。
456
- [来源: Stripe Blueprint — **"Walls matter more than the model"**]
457
-
458
- ### 3.8 目标 V2 架构,不回退 V1
459
- Opus 4.6 原生处理长任务、无 context anxiety。不需要 Sprint 分解,不需要 context reset。直接设计 V2 终态。
460
- [来源: Anthropic V1→V2 演化 — "Opus 4.5 largely removed context anxiety"]
461
-
462
- ### 3.9 Prompt 即产品
463
- Agent 做错时加一条指令,prompt 逐渐积累修正。不是写长文档后一次性加载,而是 tune like a guitar——持续微调直到准确。
464
- [来源: Ralph Wiggum 7 原则 — "Eventually the prompt is the product"]
465
-
466
- ### 3.10 防御 Context Rot,不只防 Exhaustion
467
- Context 性能随长度递减是连续过程,不是断崖。优化目标不只是"不超 token 限制",而是"保持注意力聚焦"。@include / progressive disclosure / tool result clearing / subagent 摘要 都是 rot 防御机制。
468
- [来源: Anthropic Effective Context Engineering — 65% 失败归因于 drift 而非 raw limits]
469
-
470
- ### 3.11 长任务必须 Recite Objective
471
- 50+ tool calls 后 Agent 注意力会从原始目标漂移到中间过程。在上下文末尾重复目标摘要是廉价高效的防漂移手段。这是 KV cache 友好的——只在末尾追加,不重排前文。
472
- [来源: Manus/IMPACT — recite objectives at end of context after ~50 tool calls; Cursor — 丢失 reasoning traces 30% 性能下降]
473
-
474
- ### 3.12 Schema 层隔离审查者工具
475
- 审查 Agent 必须在 schema 层面被剥夺写权限——不是靠 prompt 约束("请不要修改代码"),而是工具列表本身就不包含 Edit/Write/Bash(write)。Prompt 约束是软约束,schema 隔离是硬隔离。
476
- [来源: OpenDev arXiv 2603.05344 — Plan mode planner 只读工具 schema-level exclusion]
477
-
478
- ### 3.13 可靠性是连续维度,不是 binary
479
- "是否遵从规则"是 binary 测量,丢失了大量信号。真正有用的可靠性测量是 continuous 4 维:consistency(重复性)/ robustness(降级性)/ predictability(置信度准度)/ safety(故障有界性)。模型能力进步快于可靠性进步——这是 harness 的存在理由。
480
- [来源: arXiv 2602.16666 — Towards Reliable Agentic Systems]
481
-
482
- ---
483
-
484
- ## §4 决策
485
-
486
- ### D1: 建立测量基础设施
487
-
488
- **假设被测试**:我们不知道 harness 的真实 ROI。
489
- [来源: LangChain 用 LangSmith traces 产生 52.8%→66.5% 提升]
490
-
491
- **方案**:在 `guard-feedback.py` 中增加 JSONL 指标收集,输出到 `.wow-harness/metrics/`。
492
-
493
- **指标清单**:
494
-
495
- | 指标 | 数据源 | 用途 |
496
- |------|--------|------|
497
- | `hook_trigger_count` | guard-feedback.py 每次触发 | 组件活跃度 |
498
- | `fragment_inject_count` per fragment | context_router.py | Fragment 使用频率 |
499
- | `guard_findings_count` per guard | 各 check_*.py | Guard 有效性 |
500
- | `guard_blocking_count` per guard | findings 中 blocking=true | 阻断频率 |
501
- | `fragment_token_cost` per injection | 字节数 / 4 近似 | Token 开销 |
502
- | `hook_execution_ms` | 计时 | 性能开销 |
503
- | `wp_completion_score` | Evaluator 输出 | 任务质量 |
504
- | `loop_detection_count` | LoopDetection | Agent 死磕次数 |
505
-
506
- **基线数据**(来自 guard-feedback.py 现有代码):Fragment 注入 TTL=3600s,去重后 ~3,191 tokens/session(12,767 bytes)。context_router.py 有 21 个路径模式映射到 17 个 fragment 文件。
507
-
508
- **格式**:JSONL,append-only。数据自然积累,随时可查——不需要"每天早上聚合"的 cron。
509
-
510
- **直接复用**:Trail of Bits `log-gam.sh` 分类 CLI 命令为 read/write + JSONL 时间戳模式。
511
-
512
- ### D2: 全面利用 CC Hook 系统
513
-
514
- **假设被测试**:我们只用了 CC hook 能力的 7%。
515
-
516
- #### D2.1: Stop Hook — 完成后自动验证
517
-
518
- 注册 `Stop` 事件 hook(agent 类型),自动验证。
519
-
520
- ```json
521
- {
522
- "hooks": {
523
- "Stop": [{
524
- "type": "agent",
525
- "prompt": "你是 Evaluator。验证当前完成的工作...",
526
- "if": "Agent(*)"
527
- }]
528
- }
529
- }
530
- ```
531
-
532
- **PreCompletionChecklist**(来自 LangChain,52.8%→66.5% 提升的关键组件之一):
533
-
534
- ```
535
- □ 所有新文件都已 git add
536
- □ 测试全部通过(如果有变更)
537
- □ 文档与代码一致
538
- □ 无 dead code / 未使用 import / 半成品
539
- ```
540
-
541
- [来源: LangChain PreCompletionChecklist + CC Built-in Verification Agent]
542
-
543
- #### D2.2: updatedInput — 自动化硬性规则
544
-
545
- 用 PreToolUse hook 的 `updatedInput` 自动修改输入,遵从率从 ~10-20% 直接提升到 100%:
546
-
547
- ```json
548
- {
549
- "hooks": {
550
- "PreToolUse": [{
551
- "type": "command",
552
- "command": "python3 scripts/hooks/auto-python3.py",
553
- "if": "Bash(python *)"
554
- }]
555
- }
556
- }
557
- ```
558
-
559
- 候选:`python` → `python3`、包含 PROD_IP 的非 deploy 脚本 → block。
560
-
561
- **但 Co-Authored-By 用 `attribution` 设置更优雅**:
562
-
563
- ```json
564
- // settings.json
565
- { "attribution": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>" }
566
- ```
567
-
568
- [来源: CC settings.json `attribution` 字段 — 比 updatedInput hook 更直接]
569
-
570
- #### D2.3: PreCompact Hook — 保护关键上下文
571
-
572
- Opus 4.6 无 context anxiety(来源: Anthropic — "Opus 4.5 largely removed context anxiety"),不需要 context reset,只需保护 compaction 质量。
573
-
574
- ```bash
575
- #!/bin/bash
576
- # PreCompact hook: 注入必须保留的关键信息
577
- cat <<'EOF'
578
- 保留当前正在进行的 PLAN/TASK/Issue 状态信息。
579
- 保留 ADR-030 核心规则(3 条不可降级要求)。
580
- 保留 Sprint Contract(如果有)的全部验收标准。
581
- EOF
582
- exit 0
583
- ```
584
-
585
- #### D2.4: if 条件过滤 — 精确定位 Guard
586
-
587
- ```json
588
- {
589
- "hooks": {
590
- "PostToolUse": [{
591
- "type": "command",
592
- "command": "python3 scripts/guard-feedback.py",
593
- "if": "Write(*) | Edit(*)"
594
- }]
595
- }
596
- }
597
- ```
598
-
599
- 减少 ~90% 不必要的 hook 调用(Read/Glob/Grep 不需要 guard 检查)。
600
-
601
- #### D2.5: SessionEnd — 自动 Reflection
602
-
603
- ```json
604
- {
605
- "hooks": {
606
- "SessionEnd": [{
607
- "type": "command",
608
- "command": "python3 scripts/hooks/session-reflection.py"
609
- }]
610
- }
611
- }
612
- ```
613
-
614
- 会话结束时自动记录:哪些 guard 有用、哪些 fragment 被参考、是否有新失败模式。
615
-
616
- #### D2.6: 动态权限(PermissionRequest hook)
617
-
618
- ```json
619
- {
620
- "hooks": {
621
- "PermissionRequest": [{
622
- "type": "command",
623
- "command": "python3 scripts/hooks/dynamic-permissions.py"
624
- }]
625
- }
626
- }
627
- ```
628
-
629
- Hook 返回 `updatedPermissions` 可在运行时按上下文动态授权。例如:在 guardian issue worktree 中自动允许 `Bash(git *)` 操作。
630
-
631
- [来源: CC 源码 — PermissionRequest hook 的 updatedPermissions 返回值]
632
-
633
- #### D2.7: PostToolUseFailure — 失败自动分析
634
-
635
- ```json
636
- {
637
- "hooks": {
638
- "PostToolUseFailure": [{
639
- "type": "command",
640
- "command": "python3 scripts/hooks/failure-analyzer.py"
641
- }]
642
- }
643
- }
644
- ```
645
-
646
- 工具调用失败时记录失败模式,累积数据后可识别系统性问题。
647
-
648
- ### D3: CLAUDE.md 重构
649
-
650
- **假设被测试**:11.9k token 的 80-90% 被忽略。
651
- [来源: OpenAI — "Give Codex a map, not a 1,000-page instruction manual"]
652
- [来源: boll Round 3 — CLAUDE.md 遵从率 ~10-20%]
653
-
654
- #### D3.1: @include 拆分
655
-
656
- ```markdown
657
- # CLAUDE.md (核心 — 只保留最高优先级规则)
658
-
659
- ## 不可妥协的约束
660
- (精简到真正被违反过的高价值规则)
661
-
662
- ## 命令参考
663
- @./docs/reference/commands.md
664
-
665
- ## 路由表
666
- @./docs/reference/api-routes.md
667
-
668
- ## 环境变量
669
- @./docs/reference/env-vars.md
670
-
671
- ## 仓库结构
672
- @./docs/reference/repo-structure.md
673
- ```
674
-
675
- 被 `@include` 的文件在引用时加载,不编辑相关文件时不消耗 context。
676
-
677
- **目标大小**:由实际测量决定——不设自拟数值目标。通过 D1 metrics 追踪 token 开销 vs 遵从率变化。
678
- [SC-2 合规:不设自拟数值目标]
679
-
680
- #### D3.2: .claude/rules/ 目录级规则
681
-
682
- ```markdown
683
- # .claude/rules/bridge.md
684
- ---
685
- paths:
686
- - "bridge_agent/**"
687
- - "backend/product/bridge/**"
688
- - "bridge_contract/**"
689
- ---
690
- ## Bridge 宪法 (ADR-026)
691
- 1. Worker 不拥有业务解释权...
692
- ```
693
-
694
- ```markdown
695
- # .claude/rules/coaching.md
696
- ---
697
- paths:
698
- - "scenes/example-coach/**"
699
- - "backend/product/coaching/**"
700
- ---
701
- ## example-coach开发规则
702
- ...
703
- ```
704
-
705
- 只有编辑匹配文件时才加载。
706
- [来源: CC `.claude/rules/*.md` + `paths` frontmatter + Anthropic Agent Skills progressive disclosure]
707
-
708
- #### D3.3: HTML 注释用于人类注释
709
-
710
- ```markdown
711
- <!-- 这条规则来自 2026-02-11 统一后端迁移教训,详见 memory/planning-lessons.md -->
712
- ## 变更传播规则
713
- ...
714
- ```
715
-
716
- `<!-- -->` 自动剥离,不消耗 token。
717
-
718
- #### D3.4: 已有 guard 覆盖的规则从 CLAUDE.md 删除
719
-
720
- Guard 遵从率 ~100%,CLAUDE.md ~10-20%。重复写是浪费 token。
721
-
722
- ### D4: Evaluator 架构(V2 设计)
723
-
724
- **假设被测试**:事后 Gate 审查不如持续 Evaluator 循环有效。
725
- [来源: Anthropic — QA 仅占总成本 8.3% 但发现所有关键功能缺失]
726
-
727
- #### D4.1: Grading Criteria — 直接复用 Anthropic 4 维
728
-
729
- 直接采用 Anthropic 验证过的 4 维度,按领域适配检测方法:
730
-
731
- | 维度 | 来源 | 检测方法(按领域) |
732
- |------|------|-----------------|
733
- | **Design Quality** | Anthropic 原始维度 | 前端: Playwright 自主导航+截图 / 后端: pytest+API 断言 / 架构: ADR↔代码对比 |
734
- | **Originality** | Anthropic 原始维度 | 是否超越模板化实现?是否有领域特定创造性? |
735
- | **Craft** | Anthropic 原始维度 | 代码清洁度、命名一致性、边界处理、无 AI slop |
736
- | **Functionality** | Anthropic 原始维度 | 核心路径可走通、契约一致、无断裂 |
737
-
738
- [SC-2 合规:4 维度直接来自 Anthropic,不是自拟]
739
-
740
- **硬阈值**:任何单维 < 3 = 整个评估 FAIL,不允许"大部分好就通过"。
741
- [来源: Anthropic Sprint Contract 硬阈值机制]
742
-
743
- **校准原则**:
744
- 1. 权重偏向模型弱项——在已强维度(代码清洁度)减少权重
745
- 2. 评分标准语言本身就是引导——仅有 criteria 首轮就优于无标准基线
746
- 3. 注意措辞引力效应——"museum quality" 会收敛输出。措辞需有意设计
747
- 4. 显式惩罚 AI slop——标准中列出并惩罚模板化、库默认值、半成品
748
-
749
- [来源: Anthropic §Grading Criteria — 精确实践]
750
-
751
- #### D4.2: On-Demand Evaluator(非强制)
752
-
753
- > "The evaluator is not a fixed yes-or-no decision. It is worth the cost when the task sits beyond what the current model does reliably solo." — Anthropic
754
-
755
- **触发条件**(事件驱动,非日历驱动):
756
-
757
- | 条件 | 触发 Evaluator? | 原因 |
758
- |------|----------------|------|
759
- | scope ≥ 3 files 的 WP | ✅ | 跨模块集成问题需要独立验证 |
760
- | 涉及 API 契约变更 | ✅ | 契约是最高优先级(ADR-030) |
761
- | 单文件 bug fix | ❌ | 确定性 checkpoint 足够 |
762
- | 文档更新 | ❌ | 低风险 |
763
- | 任何 P0 issue 修复 | ✅ | 高影响 |
764
-
765
- [SC-8 合规:Evaluator 为按需而非强制]
766
-
767
- #### D4.3: Evaluator 校准协议
768
-
769
- > "Out of the box, Claude is a poor QA agent." — Anthropic
770
-
771
- **典型失败模式**:识别合法问题 → 说服自己不是大问题 → 批准。倾向测试肤浅路径而非探索边缘情况。
772
-
773
- **校准循环**:
774
- 1. 读 evaluator 日志
775
- 2. 找到其判断与人类判断分歧的例子
776
- 3. 更新 evaluator prompt
777
- 4. 重复(Anthropic: "several rounds" 才达到合理水平)
778
-
779
- **防止 rationalization 的机制**:
780
- - 硬阈值,任何一个低于则失败
781
- - Prompt 中显式要求严格、不宽容
782
- - Few-shot 示例校准评分锚点
783
- - 置信度过滤(pr-review-toolkit: 0-100,≥80 才报告)
784
- - CC Built-in Verification Agent 的 5 种自我合理化识别模式
785
-
786
- **Refine vs Pivot**:Generator 每轮评估后做策略决策——分数趋好则精细化当前方向,不行则转向完全不同的方法。
787
-
788
- **非线性改善**:不要盲目取最后一轮。保留所有中间产物供选择。
789
-
790
- [来源: Anthropic §Evaluator 校准 + §Refine vs Pivot + §Non-linear improvement]
791
-
792
- #### D4.4: 确定性 Checkpoint(Stripe Blueprint)
793
-
794
- ```
795
- Agent 写代码
796
- → [pytest -q backend/tests/unit] (确定性, $0)
797
- → [type check / lint] (确定性, $0)
798
- → Agent 继续
799
- → WP 完成
800
- → [按需: Evaluator Agent 打分] (推理, ~$3-4)
801
- ```
802
-
803
- [来源: Stripe — "Walls matter more than the model"]
804
-
805
- #### D4.5: LoopDetection(LangChain)
806
-
807
- 追踪 per-file edit count。同一文件编辑 > N 次 → 注入提醒换方法。
808
- [来源: LangChain middleware — 52.8%→66.5% 提升的三个组件之一]
809
-
810
- #### D4.6: Test-Driven Verification(Willison Red-Green)
811
-
812
- 对于可测试的变更:先写失败测试 → agent 让它通过 → 迭代。
813
- 这是 TASK.md 的替代路径——不是写详细规范让 agent 执行,而是写测试让 agent 满足。
814
-
815
- > "应该大量写测试让 agent 迭代,而非写详细 TASK.md" — Simon Willison
816
-
817
- **适用场景**:后端 API、数据逻辑、工具函数。
818
- **不适用**:UI 设计、架构决策、文档。
819
-
820
- [来源: Simon Willison "Agentic Engineering Patterns"]
821
-
822
- ### D5: 文档同步机制
823
-
824
- **假设被测试**:文档状态经常与代码脱节。
825
- [来源: boll Round 2 时间演化分析 — 03-28 交叉点后发现 > 修复,文档漂移是主要来源; CC Magic Docs + FileChanged hook 能力]
826
-
827
- #### D5.1: Magic Docs 自动更新
828
-
829
- ```markdown
830
- # MAGIC DOC: boll API Routes Reference
831
- _Keep this file in sync with backend/product/routes/ — list all active routes with method, path, auth requirement, and description._
832
- ```
833
-
834
- 标题下一行用 `_instructions_` 语法写更新指令。CC 在对话中发现新信息后自动更新。
835
-
836
- #### D5.2: FileChanged Hook 监控
837
-
838
- 用 `SessionStart` hook 返回 `watchPaths`(绝对路径数组),监控:
839
- - `backend/product/routes/*.py` → 路由变更触发文档同步检查
840
- - `docs/decisions/*.md` → ADR 变更检查代码一致性
841
-
842
- [来源: CC 源码 — SessionStart hook 的 watchPaths 返回值 + FileChanged 事件]
843
-
844
- ### D6: 自我进化机制
845
-
846
- **假设被测试**:手动维护的 harness 会腐化。
847
- [来源: Anthropic — 组件必要性随模型能力变化; ACE — generation-reflection-curation 循环 +10.6%]
848
-
849
- #### D6.1: 事件驱动的 Load-Bearing 审计
850
-
851
- **不是**"每月 1 日"——是**累积 N 个 WP 数据点后自动触发**。
852
-
853
- | 组件类型 | 候选移除条件 | 候选提升条件 |
854
- |----------|-------------|-------------|
855
- | Guard | 最近 N 个 WP findings = 0 | — |
856
- | Fragment | 最近 N 个 WP 注入 < 3 次 | — |
857
- | Skill | 最近 N 个 WP 调用 = 0 | — |
858
- | CLAUDE.md 规则 | 已有 guard 覆盖 → 删除 | 高违反率+可自动化 → 写 guard |
859
-
860
- [SC-3 合规:事件驱动而非日历驱动]
861
-
862
- #### D6.2: SessionEnd Reflection(事件驱动)
863
-
864
- 每次 session 结束时(SessionEnd hook),自动记录:
865
- 1. 本次 session 哪些 guard 有用
866
- 2. 是否有新失败模式
867
- 3. 如果有 → 提议新 guard(需人确认)
868
-
869
- #### D6.3: Skill Creator 驱动的质量循环
870
-
871
- **触发条件**(事件驱动):当一个 skill 在最近 N 次调用中收到负面反馈或产出质量低于阈值时触发。
872
-
873
- 用 CC 官方 `skill-creator` 插件的 eval 循环:
874
- ```
875
- 写 Skill draft → 跑 test prompts (with vs without) → Grader 评估 → Benchmark → 人类审查 → 改进 → 重复
876
- ```
877
-
878
- 这是 Anthropic Generator-Evaluator 架构的直接工程实现。
879
- [来源: CC skill-creator 插件 — Grader/Analyzer/Comparator 三子 agent + run_loop.py]
880
-
881
- #### D6.4: CLAUDE.md 质量审计(claude-md-management)
882
-
883
- **触发条件**(事件驱动):当 CLAUDE.md 或 @include 文件被编辑后触发;或累积 N 个 session 的 Reflection 数据后触发。
884
-
885
- 用 CC 官方插件审计:6 维评分(Commands 20 / Architecture 20 / Patterns 15 / Conciseness 15 / Currency 15 / Actionability 15)→ A-F 等级。
886
- [来源: CC claude-md-management 插件 — quality-criteria.md]
887
-
888
- #### D6.5: Prompt Tuning 积累(Ralph Wiggum "Tune like a guitar")
889
-
890
- 每次 agent 做错事:
891
- 1. 识别失败模式
892
- 2. 加一条指令到对应的 skill 或 rule
893
- 3. Prompt 逐渐积累修正——比存 memory feedback 更直接
894
-
895
- 区别于 Memory feedback:Memory 是被动召回(需要匹配场景),prompt tuning 是主动注入(永远生效)。
896
-
897
- ### D7: 采纳官方插件 + CC 内置能力
898
-
899
- **假设被测试**:我们没有充分利用 CC 已有能力。
900
- [来源: CC 源码分析 — 28 hook 事件只用 2 个、4 hook 类型只用 1 个、7 官方插件 0 安装]
901
-
902
- #### D7.1 安装官方插件
903
-
904
- ```bash
905
- /install skill-creator
906
- /install claude-md-management
907
- /install ralph-loop
908
- /install frontend-design
909
- /install pr-review-toolkit
910
- /install feature-dev
911
- /install playwright
912
- ```
913
-
914
- #### D7.2 启用 CC 内置能力
915
-
916
- ```json
917
- // settings.json
918
- {
919
- "attribution": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
920
- "worktree": {
921
- "symlinkDirectories": ["backend/venv", "website/node_modules"],
922
- "sparsePaths": []
923
- }
924
- }
925
- ```
926
-
927
- #### D7.3 配置 statusLine
928
-
929
- 显示当前 branch + 活跃 issue 数量。
930
-
931
- ### D8: Initializer Agent JSON 进度追踪(v4 新增)
932
-
933
- **假设被测试**:自然语言验收标准容易被模型自我说服修改。
934
- [来源: Anthropic "Effective Harnesses for Long-Running Agents" — 严格 JSON 防自改 + 单特性/会话约束]
935
-
936
- **方案**:在 WP 启动时由 Initializer Agent(或 dev skill)生成严格 JSON 进度文件,作为 stop-evaluator.md 自然语言检查的**机械化补充**。
937
-
938
- #### D8.1: progress.json 严格 schema
939
-
940
- ```json
941
- {
942
- "wp_id": "WP-XXX",
943
- "session_pid": 12345,
944
- "started_at": "2026-04-07T10:00:00",
945
- "objective": "一句话原始目标 — 不允许修改",
946
- "features": [
947
- {
948
- "id": "F1",
949
- "subject": "实现 X 函数",
950
- "status": "failing",
951
- "verification_command": "backend/venv/bin/pytest -q backend/tests/unit/test_x.py",
952
- "evidence": null
953
- }
954
- ],
955
- "constraints": {
956
- "max_features_per_session": 1,
957
- "must_pass_before_stop": ["all features status == passing"]
958
- }
959
- }
960
- ```
961
-
962
- **关键约束**:
963
- - `status` 字段是枚举:`failing` / `passing` / `blocked`,**不允许其他值**
964
- - `objective` 字段一旦写入**不允许修改**(写入后 read-only flag)
965
- - 一个 session 最多处理 N 个 feature(防止上下文耗尽)
966
- - Stop hook 读 progress.json,所有 feature 必须 `passing` 才允许 Stop
967
-
968
- #### D8.2: 与 Stop hook 的协同
969
-
970
- stop-evaluator.md 增加机械化第一关:
971
-
972
- ```
973
- Step 0 (mechanical): cat .wow-harness/progress/<wp_id>.json
974
- ├─ 所有 features.status == "passing"? → 通过 Step 0 进入 PreCompletionChecklist
975
- └─ 任何 failing/blocked → 立即 FAIL,不进入 LLM 评估
976
- ```
977
-
978
- 机械化关卡 $0 成本,零 self-evaluation bias。LLM 评估只在机械化通过后启动。
979
-
980
- [SC-2 合规:max_features_per_session 由实际任务决定,不预设数值]
981
-
982
- ### D9: PreCompact 增强 — Objective Recitation(v4 新增)
983
-
984
- **假设被测试**:50+ tool calls 后 Agent 注意力漂移。
985
- [来源: Manus/IMPACT — recite objectives at end of context; Cursor — 丢失 traces 30% 性能下降]
986
-
987
- **方案**:v3 的 `precompact.sh` 增加目标重复段,在 compaction 后的新上下文末尾出现。
988
-
989
- ```bash
990
- #!/bin/bash
991
- # scripts/hooks/precompact.sh (v4 增强)
992
-
993
- # 原有:保留 PLAN/TASK/Issue 状态 + ADR-030 核心规则
994
- echo "保留当前正在进行的 PLAN/TASK/Issue 状态信息。"
995
- echo "保留 ADR-030 核心规则(3 条不可降级要求)。"
996
-
997
- # v4 新增:Objective Recitation
998
- if [ -f .wow-harness/progress/current.json ]; then
999
- echo ""
1000
- echo "=== Objective Recitation (v4 D9) ==="
1001
- echo "原始目标(不可漂移):"
1002
- python3 -c "import json; print(json.load(open('.wow-harness/progress/current.json'))['objective'])"
1003
- echo ""
1004
- echo "未完成 features:"
1005
- python3 -c "
1006
- import json
1007
- data = json.load(open('.wow-harness/progress/current.json'))
1008
- for f in data['features']:
1009
- if f['status'] != 'passing':
1010
- print(f' - [{f[\"status\"]}] {f[\"id\"]}: {f[\"subject\"]}')
1011
- "
1012
- fi
1013
-
1014
- exit 0
1015
- ```
1016
-
1017
- **为什么有效**:
1018
- 1. KV cache 友好——只追加到末尾,不重排前文
1019
- 2. 目标摘要 < 200 tokens,比保留全部历史更高效
1020
- 3. 锚定原始 objective,防止"中途忘记初心"
1021
-
1022
- [来源: Manus/IMPACT — KV cache 命中率是最重要性能指标]
1023
-
1024
- ### D10: Trace Analyzer — failure-analyzer.py 升级(v4 新增)
1025
-
1026
- **假设被测试**:v3 D2.7 的 failure-analyzer.py 只记录失败,不分析模式。
1027
- [来源: LangChain Trace Analyzer Skill — 自动 traces → 错误分析 → 提议 harness 变更 → 验证]
1028
-
1029
- **方案**:在 v3 D2.7 基础上增加分析层。`failure-analyzer.py` 继续记录 JSONL,新增 `trace-analyzer.py`(事件触发,不是常驻)。
1030
-
1031
- #### D10.1: 触发条件(事件驱动)
1032
-
1033
- ```
1034
- 触发条件:
1035
- - 累积 N 条新 failure 记录后自动运行
1036
- - 或 SessionEnd hook 中检测到本 session 失败 ≥ 阈值
1037
- - 或人工执行 `python3 scripts/hooks/trace-analyzer.py --analyze`
1038
- ```
1039
-
1040
- [SC-3 合规:事件驱动,N 由 D1 metrics 实测决定]
1041
-
1042
- #### D10.2: 分析输出
1043
-
1044
- ```python
1045
- # scripts/hooks/trace-analyzer.py 输出格式
1046
- {
1047
- "analyzed_at": "2026-04-07T...",
1048
- "window_size": 50, # 分析最近 50 条 failures
1049
- "patterns": [
1050
- {
1051
- "pattern_id": "P1",
1052
- "description": "Bash command 因 'python' (vs python3) 失败 12 次",
1053
- "frequency": 12,
1054
- "proposed_harness_change": {
1055
- "type": "hook",
1056
- "target": ".claude/settings.json",
1057
- "change": "确认 D2.2 auto-python3.py hook 已启用并正确路由"
1058
- },
1059
- "confidence": 0.95
1060
- }
1061
- ],
1062
- "human_review_required": true
1063
- }
1064
- ```
1065
-
1066
- #### D10.3: 与 D6.1 Load-Bearing 审计的协同
1067
-
1068
- D6.1 关注组件**移除**条件(findings = 0 → 候选移除)。
1069
- D10 关注组件**新增**条件(reproducible failure pattern → 候选新 guard)。
1070
-
1071
- 二者构成完整的 harness 自我进化闭环:增删都有数据支撑。
1072
-
1073
- [来源: LangChain harness 自我改进反馈循环 + Anthropic 元原则"组件假设需要压力测试"]
1074
-
1075
- ### D11: 审查 Agent 工具隔离协议(v4 新增)
1076
-
1077
- **假设被测试**:审查类 subagent(pr-review-toolkit、Gate 审查、Evaluator)有完整 tool 权限是结构性安全洞。
1078
- [来源: OpenDev arXiv 2603.05344 — Plan mode planner schema-level read-only exclusion]
1079
-
1080
- **方案**:在 TeamCreate / Agent spawn 协议层面强制审查类 agent 的工具白名单。
1081
-
1082
- #### D11.1: 审查 Agent 白名单
1083
-
1084
- ```yaml
1085
- # .claude/agents/review-base.yaml (新建)
1086
- tools_allowed:
1087
- - Read
1088
- - Glob
1089
- - Grep
1090
- - WebFetch # 查文档可以
1091
- - TodoWrite # 自己的任务清单可以
1092
-
1093
- tools_denied:
1094
- - Edit # 不允许改文件
1095
- - Write # 不允许写文件
1096
- - NotebookEdit
1097
- - Bash # 一律拒绝(含 git push、rm、scp)
1098
-
1099
- # 例外:bash 只读子集(候选)
1100
- bash_allowed_patterns:
1101
- - "git status"
1102
- - "git diff*"
1103
- - "git log*"
1104
- - "ls *"
1105
- - "cat *" # 应该用 Read 而非 cat
1106
- ```
1107
-
1108
- #### D11.2: 应用范围
1109
-
1110
- | Agent | 当前是否隔离 | v4 后 |
1111
- |-------|------------|------|
1112
- | pr-review-toolkit:code-reviewer | ❌ | ✅ schema-level read-only |
1113
- | pr-review-toolkit:silent-failure-hunter | ❌ | ✅ schema-level read-only |
1114
- | pr-review-toolkit:type-design-analyzer | ❌ | ✅ schema-level read-only |
1115
- | Stop hook Evaluator | 未明确 | ✅ schema-level read-only |
1116
- | feature-dev:code-explorer | ❌ | ✅ schema-level read-only |
1117
- | feature-dev:code-reviewer | ❌ | ✅ schema-level read-only |
1118
-
1119
- #### D11.3: 实施路径
1120
-
1121
- 1. 创建 `.claude/agents/review-base.yaml` 共享白名单定义
1122
- 2. 检查现有 review-type subagent definition 是否支持 tool restriction
1123
- 3. 在 ADR-030 治理规则中增加"审查 agent 必须 read-only"约束
1124
- 4. 在 .claude/rules/ 中加入 review-agent-isolation.md 检查
1125
-
1126
- [来源: OpenDev — schema-level dual-agent isolation; Microsoft Agent Governance Toolkit OWASP Agentic Top 10]
1127
-
1128
- ---
1129
-
1130
- ## §5 架构蓝图(替代分阶段路线图)
1131
-
1132
- > 不分阶段递进。设计完整架构,一次性部署。
1133
- > [来源: Anthropic 的架构一开始就是三个 Agent,不是渐进引入。用户明确要求"一开始就做好所有最好的东西"]
1134
-
1135
- ### 5.1 完整事件流
1136
-
1137
- ```
1138
- User Prompt
1139
-
1140
- ├─ [UserPromptSubmit hook]
1141
- │ 自动注入:当前 branch、活跃 issue、PLAN 状态
1142
-
1143
-
1144
- Agent 开始工作
1145
-
1146
- ├─ [PreToolUse hook]
1147
- │ ├─ if Bash(python *) → updatedInput: python3
1148
- │ ├─ if Bash(*<NETWORK_REDACTED>*) → block (非 deploy 脚本)
1149
- │ └─ PermissionRequest → 动态权限(worktree 中自动允许 git)
1150
-
1151
- ├─ [PostToolUse hook]
1152
- │ └─ if Write(*)|Edit(*) → guard-feedback.py (metrics + guard checks)
1153
-
1154
- ├─ [PostToolUseFailure hook]
1155
- │ └─ failure-analyzer.py (记录失败模式)
1156
-
1157
- ├─ [LoopDetection]
1158
- │ └─ 同一文件编辑 > N 次 → 注入"换方法"提醒
1159
-
1160
- ├─ [确定性 Checkpoint] (事件触发:代码变更后)
1161
- │ ├─ pytest -q backend/tests/unit ($0)
1162
- │ └─ lint / type check ($0)
1163
-
1164
-
1165
- Agent 完成工作
1166
-
1167
- ├─ [Stop hook — PreCompletionChecklist]
1168
- │ ├─ □ 所有新文件已 git add
1169
- │ ├─ □ 测试通过
1170
- │ ├─ □ 文档与代码一致
1171
- │ └─ □ 无 dead code / 半成品
1172
-
1173
- ├─ [按需: Evaluator Agent] (scope ≥ 3 files 或 API 契约变更)
1174
- │ ├─ Grading Criteria 4 维打分
1175
- │ ├─ 硬阈值:任何维 < 3 → FAIL → Generator Refine/Pivot
1176
- │ └─ 保留所有中间产物(非线性改善)
1177
-
1178
-
1179
- Session 结束
1180
-
1181
- ├─ [SessionEnd hook — Reflection]
1182
- │ ├─ 记录 guard 有效性 / fragment 使用
1183
- │ ├─ 识别新失败模式
1184
- │ └─ 提议新 guard(需人确认)
1185
-
1186
- ├─ [PreCompact hook] (如果 compact 发生)
1187
- │ └─ 保护 PLAN/issue/ADR-030 关键信息
1188
-
1189
-
1190
- 持续进化(事件驱动)
1191
-
1192
- ├─ 累积 N WP 数据 → Load-Bearing 审计 (D6.1 移除 + D10 新增)
1193
- ├─ Trace Analyzer 触发 → 失败模式分析 → 提议 harness 变更 (D10) [v4]
1194
- ├─ Skill Creator eval 循环 → Skill 质量提升
1195
- ├─ CLAUDE.md 审计 → 6 维评分
1196
- └─ Prompt Tuning 积累 → "Eventually the prompt is the product"
1197
- ```
1198
-
1199
- ### 5.1.1 v4 增量事件流
1200
-
1201
- ```
1202
- WP 启动
1203
-
1204
- ├─ [Initializer Agent / dev skill] (D8) [v4]
1205
- │ ├─ 生成 .wow-harness/progress/<wp_id>.json
1206
- │ ├─ 严格 schema:features[].status ∈ {failing, passing, blocked}
1207
- │ ├─ objective 字段写入后 read-only
1208
- │ └─ max_features_per_session 约束防止上下文耗尽
1209
-
1210
-
1211
- Agent 工作中
1212
-
1213
- ├─ 每完成一个 feature → 更新 progress.json (status → passing)
1214
-
1215
-
1216
- Compaction 触发
1217
-
1218
- ├─ [PreCompact hook] (D2.3 + D9 v4)
1219
- │ ├─ 原有:保留 PLAN/Issue/ADR-030
1220
- │ └─ v4 新增:Objective Recitation
1221
- │ ├─ 从 progress.json 读 objective
1222
- │ └─ 列出未完成 features (status != passing)
1223
-
1224
-
1225
- Agent 完成工作
1226
-
1227
- ├─ [Stop hook]
1228
- │ ├─ Step 0 (机械化, D8.2 v4): cat progress.json
1229
- │ │ ├─ 所有 features.status == "passing"? → 进入 PreCompletionChecklist
1230
- │ │ └─ 任何 failing/blocked → FAIL (零 LLM 评估成本)
1231
- │ │
1232
- │ ├─ Step 1 (LLM): PreCompletionChecklist (D2.1)
1233
- │ │
1234
- │ └─ Step 2 (按需 LLM): Evaluator (D4)
1235
- │ └─ ⚠️ Schema-level read-only (D11 v4)
1236
- │ tools_allowed: [Read, Glob, Grep]
1237
- │ tools_denied: [Edit, Write, Bash]
1238
-
1239
-
1240
- 失败累积 (事件驱动)
1241
-
1242
- └─ [Trace Analyzer] (D10 v4)
1243
- ├─ N 条 failures 累积后触发
1244
- ├─ 模式识别 → 提议新 guard
1245
- └─ 人工审查后并入 D6.1 Load-Bearing 审计
1246
- ```
1247
-
1248
- ### 5.2 文件结构变更
1249
-
1250
- ```
1251
- .claude/
1252
- ├─ settings.json # attribution, worktree config, statusLine
1253
- ├─ rules/
1254
- │ ├─ bridge.md # Bridge 宪法 (paths: bridge_*/**)
1255
- │ ├─ coaching.md # example-coach规则 (paths: **/coaching/**)
1256
- │ ├─ hackathon.md # Hackathon 规则 (paths: **/hackathon/**)
1257
- │ └─ scenes.md # 通用场景规则 (paths: scenes/**)
1258
- ├─ hooks.json # 完整 hook 配置
1259
- └─ skills/ # (现有)
1260
-
1261
- scripts/hooks/
1262
- ├─ guard-feedback.py # (改造) 加 JSONL metrics + if 过滤
1263
- ├─ auto-python3.py # updatedInput: python→python3
1264
- ├─ precompact.sh # PreCompact: 保护关键上下文 + Objective Recitation [v4 D9]
1265
- ├─ session-reflection.py # SessionEnd: 自动 reflection
1266
- ├─ failure-analyzer.py # PostToolUseFailure: 记录失败
1267
- ├─ trace-analyzer.py # 失败模式分析 → 提议 harness 变更 [v4 D10]
1268
- ├─ dynamic-permissions.py # PermissionRequest: 动态权限
1269
- ├─ loop-detection.py # LoopDetection middleware
1270
- ├─ stop-evaluator.md # Stop hook agent prompt + progress.json 机械化第一关 [v4 D8]
1271
- ├─ initializer-agent.py # WP 启动时生成 progress.json [v4 D8]
1272
- └─ user-context.py # UserPromptSubmit: 注入上下文
1273
-
1274
- .wow-harness/progress/ # [v4 D8] 严格 schema 进度文件
1275
- ├─ <wp_id>.json # 单个 WP 的进度
1276
- └─ current.json # 当前 active WP 的符号链接
1277
-
1278
- .claude/agents/ # [v4 D11] 审查 agent 隔离配置
1279
- ├─ review-base.yaml # 共享白名单 (Read/Glob/Grep only)
1280
- └─ review-agent-isolation.md # 应用范围说明
1281
-
1282
- docs/reference/
1283
- ├─ commands.md # @include: 命令参考
1284
- ├─ api-routes.md # @include + MAGIC DOC: 路由表
1285
- ├─ env-vars.md # @include: 环境变量
1286
- └─ repo-structure.md # @include: 仓库结构
1287
- ```
1288
-
1289
- ### 5.3 .claude/hooks.json 完整配置
1290
-
1291
- ```json
1292
- {
1293
- "hooks": {
1294
- "UserPromptSubmit": [{
1295
- "type": "command",
1296
- "command": "python3 scripts/hooks/user-context.py"
1297
- }],
1298
- "PreToolUse": [
1299
- {
1300
- "type": "command",
1301
- "command": "python3 scripts/hooks/auto-python3.py",
1302
- "if": "Bash(python *)"
1303
- },
1304
- {
1305
- "type": "command",
1306
- "command": "python3 scripts/hooks/guard-feedback.py --pre",
1307
- "if": "Bash(*scp*) | Bash(*rsync*) | Bash(*<NETWORK_REDACTED>*)"
1308
- }
1309
- ],
1310
- "PostToolUse": [{
1311
- "type": "command",
1312
- "command": "python3 scripts/hooks/guard-feedback.py",
1313
- "if": "Write(*) | Edit(*)"
1314
- }],
1315
- "PostToolUseFailure": [{
1316
- "type": "command",
1317
- "command": "python3 scripts/hooks/failure-analyzer.py"
1318
- }],
1319
- "Stop": [{
1320
- "type": "agent",
1321
- "prompt": "@./scripts/hooks/stop-evaluator.md",
1322
- "if": "Agent(*)"
1323
- }],
1324
- "PreCompact": [{
1325
- "type": "command",
1326
- "command": "bash scripts/hooks/precompact.sh"
1327
- }],
1328
- "SessionEnd": [{
1329
- "type": "command",
1330
- "command": "python3 scripts/hooks/session-reflection.py"
1331
- }],
1332
- "PermissionRequest": [{
1333
- "type": "command",
1334
- "command": "python3 scripts/hooks/dynamic-permissions.py"
1335
- }]
1336
- }
1337
- }
1338
- ```
1339
-
1340
- ---
1341
-
1342
- ## §6 直接复用清单
1343
-
1344
- | # | 来源 | 复用什么 | 如何复用 | 成熟度 |
1345
- |---|------|---------|---------|--------|
1346
- | 1 | CC hook JSON protocol | updatedInput + additionalContext | guard-feedback.py | 生产就绪 |
1347
- | 2 | CC 28 hook events | Stop/PreCompact/UserPromptSubmit/SessionEnd/PostToolUseFailure/PermissionRequest/FileChanged | hooks.json | 生产就绪 |
1348
- | 3 | CC agent hook type | agentic verifier for Stop | hooks.json | 生产就绪 |
1349
- | 4 | CC asyncRewake | 后台监控,发现问题才中断 | 候选 | 生产就绪 |
1350
- | 5 | CC @include | CLAUDE.md 引用外部文件 | CLAUDE.md 拆分 | 生产就绪 |
1351
- | 6 | CC .claude/rules/ | 目录级规则 + paths | bridge/coaching/hackathon | 生产就绪 |
1352
- | 7 | CC attribution | Co-Authored-By | settings.json | 生产就绪 |
1353
- | 8 | CC Verification Agent | 对抗性验证 prompt + 5 种 rationalization 模式 | Stop hook 参考 | 生产就绪 |
1354
- | 9 | CC Magic Docs | 自动更新活文档 + _instructions_ 语法 | api-routes.md | 生产就绪 |
1355
- | 10 | CC Session Memory | 后台提取关键信息 | 内置 | 生产就绪 |
1356
- | 11 | CC Skill Improvement | 每 5 turn 分析改进建议 | 内置 | 生产就绪 |
1357
- | 12 | CC Auto Dream | 4 阶段记忆巩固 | 内置 | 生产就绪 |
1358
- | 13 | CC CLAUDE_ENV_FILE | Hook 写 env → BashTool 应用 | hooks | 生产就绪 |
1359
- | 14 | skill-creator | Skill eval+benchmark+迭代 | 插件安装 | 生产就绪 |
1360
- | 15 | claude-md-management | 6 维质量审计 | 插件安装 | 生产就绪 |
1361
- | 16 | ralph-loop | Stop hook 自动迭代 | 插件安装 | 生产就绪 |
1362
- | 17 | pr-review-toolkit | 6 独立 reviewer + 置信度过滤 | 插件安装 | 生产就绪 |
1363
- | 18 | feature-dev | 7 阶段 + Clarifying Questions hard gate | 插件安装 | 生产就绪 |
1364
- | 19 | frontend-design | 美学引导 prompt | 插件安装 | 生产就绪 |
1365
- | 20 | LangChain PreCompletionChecklist | Agent 退出前验证清单 | Stop hook | 有 benchmark |
1366
- | 21 | LangChain LoopDetection | per-file edit count + 注入提醒 | guard-feedback.py | 有 benchmark |
1367
- | 22 | LangChain LocalContext | 启动时扫描环境 | UserPromptSubmit | 有 benchmark |
1368
- | 23 | Stripe Blueprint checkpoint | 确定性验证节点 | WP 流加 pytest/lint | 生产就绪 |
1369
- | 24 | Trail of Bits log-gam.sh | CLI 分类 read/write + JSONL | D1 metrics | 安全团队验证 |
1370
- | 25 | Martin Fowler 四象限 | 组件分类框架 | 审计工具 | 行业共识 |
1371
- | 26 | ACE reflection-curation | Memory 自动进化 | D6 自我进化 | ICLR 2026 |
1372
- | 27 | Ralph Wiggum tune-like-guitar | 持续 prompt tuning | D6.5 | 实践验证 |
1373
- | 28 | Simon Willison Red-Green | 测试驱动 agent 迭代 | D4.6 | 实践验证 |
1374
- | **v4 增量** | | | | |
1375
- | 29 | Anthropic 第二篇 — Initializer Agent | 严格 JSON progress + 单特性约束 | D8 progress.json schema | 生产就绪 |
1376
- | 30 | Anthropic — Effective Context Engineering | Context Rot 防御 / tool result clearing | §3.10 / D3.1 增强目标 | 生产就绪 |
1377
- | 31 | Manus/IMPACT — Objective Recitation | 上下文末尾重复目标 | D9 precompact.sh 增强 | 实践验证 |
1378
- | 32 | LangChain Trace Analyzer Skill | 自动错误模式分析 | D10 trace-analyzer.py | 有 benchmark |
1379
- | 33 | OpenDev — Plan Mode tool isolation | Schema-level read-only exclusion | D11 review-base.yaml | arXiv 论文 |
1380
- | 34 | arXiv 2602.16666 — Reliability 4 维 | consistency/robustness/predictability/safety | §3.13 / D1 metrics 维度 | arXiv 论文 |
1381
-
1382
- ---
1383
-
1384
- ## §7 风险
1385
-
1386
- | 风险 | 影响 | 缓解 |
1387
- |------|------|------|
1388
- | Hook 配置变更破坏现有 guard | guard 失效 | 逐条加 if 过滤,每条后验证 |
1389
- | @include 拆分遗漏关键规则 | 治理退化 | 拆分前后实际任务测试 + metrics 对比 |
1390
- | Stop hook 过度拦截 | Agent 陷入验证循环 | if 条件限制只在 Agent 完成时触发 |
1391
- | Evaluator prompt 调优耗时 | 延期 | 先用 CC Verification Agent prompt 作基线 |
1392
- | 一次性部署太多变更 | 调试困难 | 每个 hook 独立可禁用(注释掉 hooks.json 条目) |
1393
- | 插件与现有 skill 冲突 | 行为异常 | 逐个安装+测试 |
1394
- | **v4 风险** | | |
1395
- | D8 progress.json 增加 WP 启动开销 | 摩擦增加 | 只对 ≥3 file 或 API 契约 WP 强制;小 fix 可选 |
1396
- | D8 single-feature-per-session 过严 | 阻碍合理批量改动 | max_features 由 WP 类型决定,不一刀切 |
1397
- | D9 Objective Recitation 重复信息 | token 浪费 | 限制 < 200 tokens,只在 compact 后注入 |
1398
- | D10 Trace Analyzer 误报 | 噪音建议 | 人工审查必经,confidence < 0.8 不进入 D6.1 |
1399
- | D11 工具隔离破坏现有审查者行为 | 审查 agent 失效 | 先在 .claude/agents/ 试点 1 个,逐步推广 |
1400
- | D11 schema-level 限制 CC 不一定支持 | 设计无法落地 | 需先验证 CC 当前 agent definition tool restriction 能力 |
1401
-
1402
- ---
1403
-
1404
- ## §8 不做什么
1405
-
1406
- 1. **不重写 guard-feedback.py 架构** — 问题在未充分利用 CC 能力,不是架构错误
1407
- 2. **不引入外部框架(LangGraph/CrewAI)** — CC 本身就是框架,官方插件已覆盖
1408
- 3. **不做实时 dashboard** — JSONL append-only 随时可查
1409
- 4. **不尝试 100% 机械化** — 有些规则天然是 convention 层
1410
- 5. **不设自拟数值目标** — 所有阈值来自外部基准或自研数据
1411
- 6. **不从 V1 架构开始演化** — 直接目标 V2
1412
- 7. **不用日历驱动评估** — 全部事件驱动
1413
-
1414
- ---
1415
-
1416
- ## §9 通用性
1417
-
1418
- 本 ADR 的方法论适用于任何使用 Claude Code 的项目:
1419
-
1420
- **可迁移**:D1 测量 / D2 hook 配置模式 / D3 CLAUDE.md 拆分 / D4 Evaluator 循环 / D5 Magic Docs / D6 自我进化 / D7 官方插件
1421
-
1422
- **不可迁移**:具体 guard 规则 / 具体 fragment 内容 / 具体 Grading Criteria 权重
1423
-
1424
- ---
1425
-
1426
- ## §10 参考文献
1427
-
1428
- ### Anthropic
1429
- 1. "Harness Design for Long-Running Application Development." 2026-03-24. https://www.anthropic.com/engineering/harness-design-long-running-apps
1430
- 2. "Effective Context Engineering for AI Agents." 2025-11. https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
1431
- 3. "Equipping Agents for the Real World with Agent Skills." 2025-12-18. https://www.anthropic.com/research/agent-skills
1432
- 4. "2026 Agentic Coding Trends Report." 2026-03. https://www.anthropic.com/research/2026-agentic-coding-report
1433
- 5. `anthropics/claude-plugins-official` GitHub repo. https://github.com/anthropics/claude-plugins-official
1434
- 5b. **[v4]** "Effective Harnesses for Long-Running Agents." 2026. https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents (Initializer Agent + 严格 JSON progress 模式)
1435
-
1436
- ### OpenAI
1437
- 6. "Harness Engineering." 2026-01. https://openai.com/index/harness-engineering/
1438
- 7. "Unlocking the Codex Harness." 2026-02. https://openai.com/index/unlocking-the-codex-harness/
1439
- 8. "Unrolling the Codex Agent Loop." 2026-02. https://openai.com/index/unrolling-the-codex-agent-loop/
1440
-
1441
- ### Stripe
1442
- 9. "Minions: One-Shot End-to-End Coding Agents" Part 1 + 2. 2026-01. https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents
1443
-
1444
- ### LangChain
1445
- 10. "Improving Deep Agents with Harness Engineering." 2026-03. https://blog.langchain.com/improving-deep-agents-with-harness-engineering/
1446
- 11. "The Anatomy of an Agent Harness." 2026-02. https://blog.langchain.com/the-anatomy-of-an-agent-harness/
1447
- 12. "How Middleware Lets You Customize Your Agent Harness." 2026-03. https://blog.langchain.com/how-middleware-lets-you-customize-your-agent-harness/
1448
-
1449
- ### Trail of Bits
1450
- 13. "How We Made Trail of Bits AI-Native (So Far)." 2026-03-31. https://blog.trailofbits.com/
1451
- 14. `trailofbits/skills` GitHub repo. https://github.com/trailofbits/skills
1452
-
1453
- ### Microsoft
1454
- 15. "Agent Governance Toolkit." 2026-04-02. https://github.com/microsoft/agent-governance-toolkit
1455
-
1456
- ### Martin Fowler
1457
- 16. "Harness Engineering for Coding Agent Users." 2026-04-02. https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html
1458
- 17. "Humans and Agents in Software Engineering Loops." 2026. https://martinfowler.com/articles/exploring-gen-ai/humans-and-agents.html
1459
-
1460
- ### 实践者
1461
- 18. Simon Willison. "Agentic Engineering Patterns." 2026-02. https://simonwillison.net/tags/agents/ (博客合集,无单篇稳定 URL)
1462
- 19. Addy Osmani. "My LLM Coding Workflow" + "Orchestrating Coding Agents." 2026. https://addyosmani.com/blog/ (博客合集,无单篇稳定 URL)
1463
- 20. Ralph Wiggum method + 7 principles. 2026. https://github.com/anthropics/claude-plugins-official/tree/main/plugins/ralph-loop (CC 官方插件实现)
1464
- 21. Google Conductor. "Three-stage brownfield support." 2026. (Google 内部工具,无公开 URL)
1465
-
1466
- ### 学术论文
1467
- 22. "Agent Behavioral Contracts (ABC)." arXiv:2602.22302. https://arxiv.org/abs/2602.22302
1468
- 23. "AEGIS: Pre-Execution Firewall." arXiv:2603.12621. https://arxiv.org/abs/2603.12621
1469
- 24. "Agentic Context Engineering (ACE)." ICLR 2026. https://arxiv.org/abs/2510.04618 / https://github.com/ace-agent/ace
1470
- 25. "OpenDev: Five-Layer Security." arXiv:2603.05344. https://arxiv.org/abs/2603.05344 (v4 D11 schema-level tool isolation)
1471
- 26. "Natural-Language Agent Harnesses (NLAH)." arXiv:2603.25723. https://arxiv.org/abs/2603.25723
1472
- 27. "Darwin Gödel Machine." arXiv:2505.22954. https://arxiv.org/abs/2505.22954
1473
- 28. OpenAI Cookbook. "Self-Evolving Agents (GEPA)." 2026. https://cookbook.openai.com/ (cookbook 合集)
1474
- 29. ICLR 2026 Workshop on AI with Recursive Self-Improvement. 2026-04-26/27, Rio de Janeiro. https://iclr.cc/virtual/2026/workshop/ (会议官网)
1475
-
1476
- ### v4 新增来源
1477
- 32. **[v4]** Manus / IMPACT Agent Engineering. "KV Cache Optimization + Objective Recitation." https://www.morphllm.com/agent-engineering (D9 Objective Recitation)
1478
- 33. **[v4]** "Towards Reliable Agentic Systems." arXiv:2602.16666. https://arxiv.org/html/2602.16666v1 (§3.13 reliability 4 维 + prompt brittleness paradox)
1479
- 34. **[v4]** Cursor Engineering. "Reasoning Trace Loss → 30% performance degradation." 2026. https://cursor.sh/blog/ (D9 reasoning trace 保留)
1480
- 35. **[v4]** LangChain. "Trace Analyzer Skill — Automated Harness Self-Improvement Loop." 2026-03. https://blog.langchain.com/improving-deep-agents-with-harness-engineering/ (D10)
1481
- 36. **[v4]** Anthropic. "Effective Harnesses for Long-Running Agents." 2026. https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents (D8 Initializer Agent / strict JSON progress / single-feature-per-session)
1482
-
1483
- ### 内部文档
1484
- 30. ADR-030: Guard Signal Protocol and Governance Reload. `docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md`
1485
- 31. 6 轮 Harness 自研数据: `docs/sharing/AI-HARNESS-52-DAYS.md` (综合报告), 原始分析见 memory `project_ai_harness_research.md`
1486
-
1487
- ---
1488
-
1489
- ## §11 Meta-Compliance 审计
1490
-
1491
- ### v2 自审结果(4 FAIL / 1 PARTIAL / 2 PASS)
1492
-
1493
- | 原则 | v2 结果 | v3 修正 |
1494
- |------|--------|--------|
1495
- | Sprint Contract | FAIL — 无验收标准就开始写 | ✅ FIXED — §0 定义 9 条 SC |
1496
- | Generator ≠ Evaluator | FAIL — 自写自评 | ✅ FIXED — v3 将由独立 Evaluator agent 审查 |
1497
- | 确定性 Checkpoint | FAIL — 中间无验证 | ✅ FIXED — SC 每条可机械化验证 |
1498
- | 目标来自外部证据 | PARTIAL — 部分自拟 | ✅ FIXED — 所有 D* 标注 [来源] |
1499
- | 每个组件有可测试假设 | PASS | PASS |
1500
- | 复用优于自建 | PASS | PASS |
1501
- | AI 时间非人类日历 | FAIL — 月度/每日 | ✅ FIXED — 全部事件驱动 |
1502
-
1503
- ### Sprint Contract 验收状态
1504
-
1505
- | # | 标准 | 状态 | Evaluator 验证 |
1506
- |---|------|------|---------------|
1507
- | SC-1 | 每个决策标注外部证据来源 | ✅ | PASS — 34 处 `[来源]` 标注,D5/D7 已补充 |
1508
- | SC-2 | 无自拟数值目标 | ✅ | PASS |
1509
- | SC-3 | 所有评估事件驱动 | ✅ | PASS — D6.3/D6.4 已补充事件触发条件 |
1510
- | SC-4 | V2 架构 | ✅ | PASS |
1511
- | SC-5 | CC 能力完整 | ✅ | PASS |
1512
- | SC-6 | 参考文献含 URL | ✅ | PASS — 31 条全部有 URL 或标注无公开 URL 原因 |
1513
- | SC-7 | Meta-Compliance 章节 | ✅ | PASS |
1514
- | SC-8 | Evaluator 按需 | ✅ | PASS |
1515
- | SC-9 | v2 自审全部闭环 | ✅ | PASS |
1516
-
1517
- ### Evaluator 审查记录
1518
-
1519
- **首次审查**:FAIL(3 P0 / 7 P1 / 3 P2)
1520
- - P0-1: 7 条参考文献缺 URL → **FIXED**: 全部补齐
1521
- - P0-2: D6.4 "定期审计"为日历驱动残留 → **FIXED**: 改为事件触发条件
1522
- - P0-3: §11 自审 SC-3/SC-6 结论不诚实 → **FIXED**: 修正后重新验证
1523
- - P1-1~P1-5: 数据点不准确 → **FIXED**: guard=16, routes=21 patterns→17 fragments, skills=26, Opus 版本澄清, 研究文件路径修正
1524
- - P1-6: hooks 配置格式差异 → **ACKNOWLEDGED**: 实施时需验证 CC 版本兼容性
1525
- - P1-7: D5/D7 缺来源标注 → **FIXED**: 已补充
1526
-
1527
- **Grading Criteria 评分**:Design Quality 4 / Originality 4 / Craft 3→4 / Functionality 4。全部 ≥ 3,通过硬阈值。
1528
-
1529
- ### v4 增量审计
1530
-
1531
- v4 是 v3 的**增量补丁**,不是重写。v3 的所有 SC + Grading 评分继续有效。v4 自审范围限于新增内容(§2.4 / §3.10-§3.13 / D8-D11 / 文献新增)。
1532
-
1533
- **v4 自审清单**:
1534
-
1535
- | # | v4 自审标准 | 状态 |
1536
- |---|------------|------|
1537
- | v4-SC1 | 每个新决策(D8-D11)标注外部证据来源 | ✅ PASS — 全部有 `[来源]` |
1538
- | v4-SC2 | 无自拟数值目标(max_features_per_session 等由实测决定) | ✅ PASS |
1539
- | v4-SC3 | 所有新评估事件驱动(D10 触发条件明确) | ✅ PASS |
1540
- | v4-SC4 | 不与 v3 决策冲突(D8-D11 是 D2/D3/D4/D6 的增量) | ✅ PASS — D8 增量于 D4.1 / D9 增量于 D2.3 / D10 增量于 D2.7 / D11 增量于 D2 总体 |
1541
- | v4-SC5 | 6 个新源全部含 URL | ✅ PASS — 文献 32-36 + 5b 全部有 URL |
1542
- | v4-SC6 | 风险章节包含 v4 新风险 | ✅ PASS — 6 项 v4 风险列出 |
1543
- | v4-SC7 | 复用清单包含 v4 新增(29-34) | ✅ PASS |
1544
- | v4-SC8 | v4 changelog 透明列出所有变更 | ✅ PASS — 文档头部 |
1545
- | v4-SC9 | v4 决策不破坏 v3 部署进度 | ✅ PASS — 增量不替换 |
1546
-
1547
- **v4 Grading Criteria**(仅评估新增内容):
1548
-
1549
- | 维度 | 评分 | 理由 |
1550
- |------|------|------|
1551
- | **Design Quality** | 4 | D8 progress.json schema 设计严谨,机械化第一关消除 self-eval bias |
1552
- | **Originality** | 4 | 6 个新洞察从 18 个资源 synthesis,不是简单复制单一来源 |
1553
- | **Craft** | 4 | 所有新决策有具体 schema/script 示例,URL 完整 |
1554
- | **Functionality** | 4 | D8/D9/D10/D11 全部可在现有 hooks/agents 系统增量实施 |
1555
-
1556
- 全部 ≥ 3,通过硬阈值。v4 待独立 Evaluator agent 复审。
1557
-
1558
- ---
1559
-
1560
- ## §12 v5 Patch — Meta-Review Closure(2026-04-07)
1561
-
1562
- > **v5 是 v4 的闭环补丁,不是新版本。** v4 实施后用户提出 meta-review 标准:"是否真的完成最佳实践,而不是只是遵从或者模仿之类的"。重读 Anthropic 两篇文章 + ADR + 已实施代码三方对比后,发现 4 个 deferred items + 4 个 conceptual gap,本节文档化全部闭环工作。
1563
-
1564
- **Source 归因校对**(v5 必须修正):
1565
-
1566
- v4 把多个 source 的概念归到了"Anthropic 第二篇",实际上:
1567
- - Anthropic 第一篇 = Initializer Agent / Planner-Generator-Evaluator / Grading Criteria / Sprint Contract
1568
- - Anthropic 第二篇 = claude-progress.txt / feature_list.json strict schema / init.sh / session 启动协议
1569
- - Manus/IMPACT = Objective Recitation(after ~50 tool calls)
1570
- - LangChain = Trace Analyzer(自动化 fail→analyze→propose→verify 闭环)
1571
- - OpenDev arXiv 2603.05344 = Plan mode schema-level Tool Isolation
1572
-
1573
- [来源校对依据:重读两篇文章原文 + memory/project_adr038_meta_review_findings.md]
1574
-
1575
- ### v5 Changelog(相对 v4 的闭环)
1576
-
1577
- > v4 deferred 的 4 项 + v4 自审遗漏的 4 个 conceptual gap,v5 全部用 hooks-level 实现而不是文档约束。每一项都有"形式 → 本意"的对照说明。
1578
-
1579
- | 决策 | v4 状态 | v5 闭环 | 实现位置 |
1580
- |------|--------|---------|---------|
1581
- | **D2.4** if 条件过滤 | ❌ deferred ("ADR 给了 spec 没做") | ✅ 实施 | `.claude/settings.json` PreToolUse Bash + `scripts/hooks/auto-python3.py` |
1582
- | **D3.1** CLAUDE.md @include 拆分 | ❌ deferred | ✅ 11 个 rule 文件 | `.claude/rules/*.md`(subagent 独立完成) |
1583
- | **D5.1** Magic Docs 模式 | ❌ deferred | ✅ 实施 | `docs/magic/api-routes.md` + `scripts/checks/regenerate_magic_docs.py` |
1584
- | **D5.2** SessionStart 漂移检测 | ❌ deferred | ✅ 实施 | `scripts/hooks/session-start-magic-docs.py` |
1585
- | **D8** features schema 三字段 | ⚠️ "形式 70%, 本意 30%" — 缺 `steps[]`/`verification_command`/`evidence` | ✅ schema 已扩展 | `scripts/hooks/initializer-agent.py` + `scripts/hooks/stop-evaluator.py` |
1586
- | **D9** mid-task recitation | ⚠️ "形式 30%, 本意 30%" — 只 cover compaction 边界 | ✅ 50-call counter | `scripts/hooks/tool-call-counter.py`(PreToolUse `*`) |
1587
- | **D10** trace-analyzer auto-trigger | ⚠️ "形式 50%" — 是 manual | ✅ SessionEnd 自动跑 | `.claude/settings.json` SessionEnd hook |
1588
- | **D11.2** plugin review agent 物理隔离 | ⚠️ "形式 50%, 本意 50%" — 退回 prompt | ✅ spawn-boundary gate | `scripts/hooks/review-agent-gatekeeper.py`(PreToolUse `Task`) |
1589
-
1590
- ### §12.1 — D2.4 if 条件过滤(实施)
1591
-
1592
- **v4 spec**(§4 D2.4)已经写好:用 `"if": "Bash(python *)"` 给 PreToolUse Bash hook 加触发条件。
1593
-
1594
- **v5 实施**:
1595
-
1596
- ```json
1597
- {
1598
- "matcher": "Bash",
1599
- "hooks": [
1600
- {
1601
- "type": "command",
1602
- "if": "Bash(python *)",
1603
- "command": "cd \"$(git rev-parse --show-toplevel)\" && python3 scripts/hooks/auto-python3.py",
1604
- "timeout": 5
1605
- }
1606
- ]
1607
- }
1608
- ```
1609
-
1610
- **意义**:把"裸 python 命令必须重写为 python3"从规则提示(CLAUDE.md §4.1)变成机械化拦截。命中率从 ~10-20% 升到 100%。
1611
-
1612
- ---
1613
-
1614
- ### §12.2 — D3.1 CLAUDE.md @include 拆分(subagent 独立完成)
1615
-
1616
- **v4 spec**(§4 D3.1):把单 CLAUDE.md 拆为 `.claude/rules/*.md`,按路径条件加载(CC 的 directory-level instructions 机制)。
1617
-
1618
- **v5 实施**:派遣 background subagent 完成拆分。最终结构:
1619
-
1620
- | Rule 文件 | 大小 | 加载触发 |
1621
- |-----------|------|---------|
1622
- | `backend-routes.md` | 16KB | 改 `backend/product/routes/*.py` 时 |
1623
- | `repo-structure.md` | 11KB | session 启动时 |
1624
- | `review-agent-isolation.md` | 6KB | 改 `.claude/agents/*.md` 时 |
1625
- | `env-vars.md` | 2.5KB | 改 `backend/product/config.py` 时(paths frontmatter) |
1626
- | `bridge.md` | 1.1KB | 改 `bridge_agent/*.py` 时 |
1627
- | `closure-semantics.md` | 1KB | 改 `docs/issues/*.md` 时 |
1628
- | `coaching.md` / `deployment.md` / `hackathon.md` / `scenes.md` / `source-of-truth.md` | < 2KB | 各自路径触发 |
1629
-
1630
- **结果**:CLAUDE.md 从 600+ 行降到 144 行(slim 76%)。每个 session 不再"一次加载 11.9k tokens 全部规则",而是按需加载相关条目。
1631
-
1632
- **KV-cache 友好性**(来源: Anthropic Effective Context Engineering):常见上下文片段稳定不变 → cache hit 率提升。
1633
-
1634
- ---
1635
-
1636
- ### §12.3 — D5 Magic Docs + FileChanged 同步(实施)
1637
-
1638
- **v4 spec**(§4 D5.1):派生型文档(API 路由清单、目录结构等)必须有 `_instructions_` 头声明"我是机器派生的,怎么 regenerate 我"。
1639
-
1640
- **v5 实施 — 三件套**:
1641
-
1642
- **(1) Magic Doc 参考实现**(`docs/magic/api-routes.md`):
1643
-
1644
- ```markdown
1645
- # MAGIC DOC: API Routes Index
1646
-
1647
- _instructions_: This file is machine-derived from `backend/product/routes/*.py`...
1648
- _regenerator_: scripts/checks/regenerate_magic_docs.py api-routes
1649
- _freshness_check_: scripts/checks/check_doc_freshness.py
1650
- _last_sync_: 2026-04-07
1651
-
1652
- | Router file | Decorator count |
1653
- |------------|-----------------|
1654
- | protocol.py | 68 |
1655
- | ... (按 router 文件聚合,total = 208) |
1656
- ```
1657
-
1658
- **(2) Regenerator with check mode**(`scripts/checks/regenerate_magic_docs.py`):
1659
-
1660
- ```python
1661
- REGENERATORS = {
1662
- "api-routes": regenerate_api_routes,
1663
- }
1664
-
1665
- def regenerate_api_routes(*, check_only: bool = False) -> int:
1666
- # 扫描所有 router 文件,统计 @router.* 装饰器
1667
- # check_only: 比较时忽略 _last_sync_ 行 → 0=同步, 1=漂移
1668
- ...
1669
- ```
1670
-
1671
- **(3) SessionStart 漂移告警**(`scripts/hooks/session-start-magic-docs.py`):
1672
-
1673
- 会话启动时跑 `regenerate_magic_docs.py all --check`,发现漂移则向 main agent 注入告警片段(CC 自动作为 session 上下文)。永远 exit 0(advisory)。
1674
-
1675
- **(4) 集成到 freshness check**(`scripts/checks/check_doc_freshness.py` 增加 `_check_magic_docs()` 函数):
1676
-
1677
- ```python
1678
- def _check_magic_docs(repo_root: Path) -> list[Finding]:
1679
- for name, fn in regenerate_magic_docs.REGENERATORS.items():
1680
- rc = fn(check_only=True)
1681
- if rc != 0:
1682
- findings.append(Finding(
1683
- severity="P1",
1684
- message=f"Magic doc docs/magic/{name}.md drifted from source. Run: ...",
1685
- ...
1686
- ))
1687
- ```
1688
-
1689
- **(5) Guard router 路由**(`scripts/guard_router.py`):
1690
-
1691
- ```python
1692
- "docs/magic/": ["check_doc_freshness"],
1693
- ".claude/rules/backend-routes.md": ["check_doc_freshness"],
1694
- ```
1695
-
1696
- **意义**:派生文档不再需要"靠 AI 记得手动同步",而是 (a) regenerator 命令一键 rebuild + (b) freshness check 自动检测漂移 + (c) SessionStart 在 session 开始时主动告警。这是治理强度从 convention(10-20%)升到 guard(~100%)。
1697
-
1698
- **Pre-existing bug 顺手修了**:原 `check_doc_freshness.py` 的 route count check 仍然 grep CLAUDE.md,但 routes 已经拆到 `.claude/rules/backend-routes.md` 了。修正后改为读 rules 文件。
1699
-
1700
- ---
1701
-
1702
- ### §12.4 — D8 features schema 补 `steps[]` / `verification_command` / `evidence`(已修补)
1703
-
1704
- **v4 实施 vs Anthropic 第二篇 feature_list.json schema 的差距**:
1705
-
1706
- | 字段 | Anthropic 第二篇 | v4 ADR 设计 | v4 实现 | v5 修补 |
1707
- |------|----------------|------------|---------|---------|
1708
- | `steps[]` | ✅ 核心 | ❌ | ❌ | ✅ |
1709
- | `verification_command` | ❌ | ✅ | ❌ | ✅ |
1710
- | `evidence` | ❌ | ✅ | ❌ | ✅ |
1711
- | `objective` (顶层) | ❌(隐式) | ✅ | ✅ | 保留 |
1712
- | SHA256 immutability | ❌(prompt 约束) | ❌(隐式) | ✅ | 保留(**超越文章**) |
1713
- | `status` 三态 enum | ❌(boolean) | ✅ | ✅ | 保留(**超越文章**) |
1714
-
1715
- **v5 修补**(`scripts/hooks/initializer-agent.py` + `scripts/hooks/stop-evaluator.py`):
1716
-
1717
- ```python
1718
- # initializer-agent.py — features schema
1719
- {
1720
- "id": "F1",
1721
- "subject": "...",
1722
- "status": "failing", # failing | passing | blocked
1723
- "steps": [
1724
- "Navigate to ...",
1725
- "Click the ...",
1726
- "Verify the ..."
1727
- ],
1728
- "verification_command": "backend/venv/bin/pytest tests/...",
1729
- "evidence": null # 验证后填 artifact 引用
1730
- }
1731
-
1732
- # stop-evaluator.py — mechanical first-pass 强化
1733
- def check_features(features):
1734
- for f in features:
1735
- if f["status"] == "passing" and not f.get("evidence"):
1736
- return BLOCK(f"feature {f['id']} marked passing but evidence is null")
1737
- ```
1738
-
1739
- **机械化验证关键**:`stop-evaluator.py` 在 LLM eval 之前先做 mechanical check — `status="passing"` 必须 `evidence != null`。这是文章 §"Out of the box, Claude is a poor QA agent" 的真本意:不能让 model 自己说"我做完了",必须有 artifact 引用证明。
1740
-
1741
- ---
1742
-
1743
- ### §12.5 — D9 mid-task Objective Recitation(PreToolUse 计数器)
1744
-
1745
- **Manus/IMPACT 原话**:
1746
- > "Recite objectives at end of context to maintain goal focus **after ~50 tool calls**"
1747
-
1748
- **v4 实施**:`scripts/hooks/precompact.sh` 在 PreCompact 边界做 recitation。
1749
-
1750
- **v4 gap**:PreCompact 触发频率是 "每 N 万 tokens 一次",远低于 "50 tool calls 一次"。文章本意是 mid-task drift(用户敲了 50 次工具,已经走远),不是 compaction 边界。
1751
-
1752
- **v5 实施**(`scripts/hooks/tool-call-counter.py`):
1753
-
1754
- ```python
1755
- COUNTER_FILE = REPO_ROOT / ".boll" / "metrics" / "tool-call-counter.txt"
1756
- CURRENT_PROGRESS = REPO_ROOT / ".boll" / "progress" / "current.json"
1757
- DEFAULT_RECITE_EVERY = 50
1758
- RECITE_EVERY = int(os.environ.get("boll_RECITATION_EVERY", DEFAULT_RECITE_EVERY))
1759
-
1760
- def main() -> int:
1761
- count = _read_counter() + 1
1762
- _write_counter(count) # atomic via tmp+rename
1763
- if count % RECITE_EVERY == 0:
1764
- fragment = _format_recitation(count) # 读 current.json → 拼接 objective + features
1765
- if fragment:
1766
- print(fragment) # CC 自动注入为下一个 tool call 的上下文
1767
- return 0
1768
- ```
1769
-
1770
- **Recitation 片段格式**(来自 D8 progress 文件):
1771
-
1772
- ```
1773
- ## Objective Recitation (D9, after 50 tool calls)
1774
-
1775
- **WP**: `WP-XXX`
1776
- **原始目标**(D8 immutable):...
1777
-
1778
- **未完成 features**:
1779
- - [failing] `F1` ... — 5 steps
1780
- - [blocked] `F2` ... — 3 steps
1781
-
1782
- **Passing 但缺 evidence**(D8 stop-check 会拒绝):
1783
- - `F3` ...
1784
-
1785
- 提醒:保持注意力在原始目标上。如果当前操作偏离此目标,请重新规划。
1786
- [ADR-038 §4 D9 — Manus Objective Recitation pattern]
1787
- ```
1788
-
1789
- **Wired 在**(`.claude/settings.json`):
1790
-
1791
- ```json
1792
- {
1793
- "matcher": "*", // 所有 tool 都计数
1794
- "hooks": [{
1795
- "type": "command",
1796
- "command": "... python3 scripts/hooks/tool-call-counter.py 2>/dev/null || true",
1797
- "timeout": 3
1798
- }]
1799
- }
1800
- ```
1801
-
1802
- **双覆盖保险**:v4 PreCompact recitation 仍然保留(cover compaction 边界),v5 PreToolUse 计数器 cover mid-task drift。两层频率不同的 recitation 互补。
1803
-
1804
- ---
1805
-
1806
- ### §12.6 — D10 Trace Analyzer auto-trigger(SessionEnd hook)
1807
-
1808
- **LangChain 原话**:
1809
- > "Trace Analyzer Skill:自动化并行 error 分析 agent,获取 traces → 分析错误 → 提议 harness 变更 → 验证"
1810
-
1811
- **v4 实施**:`scripts/hooks/trace-analyzer.py` 完成 fail→log→analyze→propose(输出 markdown 提议到 `.wow-harness/proposals/`)。
1812
-
1813
- **v4 gap**:用户必须手动跑 `trace-analyzer.py analyze`,没有 auto-trigger。
1814
-
1815
- **v5 实施**(`.claude/settings.json` SessionEnd):
1816
-
1817
- ```json
1818
- "SessionEnd": [{
1819
- "matcher": "*",
1820
- "hooks": [
1821
- {
1822
- "type": "command",
1823
- "command": "... python3 scripts/hooks/session-reflection.py",
1824
- "timeout": 10
1825
- },
1826
- {
1827
- "type": "command",
1828
- "command": "... python3 scripts/hooks/trace-analyzer.py analyze --days 1 --min-samples 3 2>/dev/null || true",
1829
- "timeout": 30
1830
- }
1831
- ]
1832
- }]
1833
- ```
1834
-
1835
- **关键设计原则 2**:"不自动落地"——trace-analyzer 只产出 `.wow-harness/proposals/<timestamp>.md`,永不动 hooks/code。这让 auto-trigger 100% 安全(最坏情况是产出无人读的 markdown,不会破坏现状)。
1836
-
1837
- **完整闭环 vs 当前**:
1838
-
1839
- | 阶段 | 文章 | v5 |
1840
- |------|------|-----|
1841
- | 1. fail | ✅ | ✅ failure-analyzer.py 写 JSONL |
1842
- | 2. analyze | ✅ | ✅ trace-analyzer.py 模式聚类 |
1843
- | 3. propose | ✅ | ✅ 输出 markdown 提议 |
1844
- | 4. shadow verify | ✅ | ❌(v6+) |
1845
- | 5. measure | ✅ | ❌(v6+) |
1846
- | 6. commit if better | ✅ | ❌(v6+) |
1847
-
1848
- **残余 gap**:4-6 步的 propose-then-verify 闭环留给 v6+。需要设计 shadow 模式(在 fork 仓库或 worktree 里 apply 提议、跑同样 trace、对比 metric),是显著工程量,不在 v5 scope。
1849
-
1850
- ---
1851
-
1852
- ### §12.7 — D11.2 spawn-boundary gate(plugin review agent 物理隔离)
1853
-
1854
- **ADR §3.12 原话**:
1855
- > "审查 Agent 必须在 schema 层面被剥夺写权限——不是靠 prompt 约束("请不要修改代码"),而是工具列表本身就不包含 Edit/Write/Bash(write)。"
1856
-
1857
- **v4 矛盾**:本地 agent(`review-readonly.md`)走 frontmatter 物理隔离 ✓,但 7 个 plugin agent(`pr-review-toolkit:*` / `feature-dev:code-reviewer/explorer`)的 frontmatter 在 plugin 内部,无法修改。v4 退回到"调用层 prompt 约束"——这违反了 §3.12 自己说的"prompt 约束不算数"。
1858
-
1859
- **v5 实施 — spawn-boundary gate**(`scripts/hooks/review-agent-gatekeeper.py`):
1860
-
1861
- ```python
1862
- # Plugin review agents 列表
1863
- REVIEW_SUBAGENT_PATTERNS = (
1864
- "pr-review-toolkit:code-reviewer",
1865
- "pr-review-toolkit:silent-failure-hunter",
1866
- "pr-review-toolkit:type-design-analyzer",
1867
- "pr-review-toolkit:comment-analyzer",
1868
- "pr-review-toolkit:pr-test-analyzer",
1869
- "feature-dev:code-reviewer",
1870
- "feature-dev:code-explorer",
1871
- )
1872
-
1873
- # Spawn 时 prompt 必须包含的 directive 之一
1874
- REQUIRED_DIRECTIVES = (
1875
- "MUST NOT call Edit",
1876
- "MUST NOT use Edit",
1877
- "read-only reviewer",
1878
- "read-only mode",
1879
- "schema-level read-only",
1880
- "ADR-038 D11",
1881
- )
1882
-
1883
- def main() -> int:
1884
- payload = json.load(sys.stdin)
1885
- if payload.get("tool_name") != "Task":
1886
- return 0
1887
- subagent_type = payload.get("tool_input", {}).get("subagent_type", "")
1888
- if not _is_review_subagent(subagent_type):
1889
- return 0
1890
- prompt = payload.get("tool_input", {}).get("prompt", "")
1891
- if _prompt_has_directive(prompt):
1892
- _record_active(subagent_type) # 写 marker 到 .wow-harness/active-review-agents/
1893
- return 0
1894
- print("[ADR-038 D11] BLOCKED: ...", file=sys.stderr)
1895
- return 2 # 硬阻断 spawn
1896
- ```
1897
-
1898
- **Wired 在**(`.claude/settings.json`):
1899
-
1900
- ```json
1901
- {
1902
- "matcher": "Task",
1903
- "hooks": [{
1904
- "type": "command",
1905
- "command": "... python3 scripts/hooks/review-agent-gatekeeper.py",
1906
- "timeout": 5
1907
- }]
1908
- }
1909
- ```
1910
-
1911
- **为什么这是 schema-level 等价?**
1912
-
1913
- 我们无法改插件 frontmatter 的 `tools:` 白名单,但我们 **可以保证插件被 spawn 时其指令上下文一定包含约束**。这把 review agent 的 effective 工具集从"frontmatter 声明的 + (希望 main agent 在 prompt 里加提醒)"变成"frontmatter 声明的 + (强制 prompt 约束作为前置硬条件)"。
1914
-
1915
- 任意 review agent spawn 的 chokepoint 在 `Task` tool。PreToolUse Task hook 在 spawn 发生之前拦截:缺少 directive → exit 2 → CC 阻断 spawn → 用户看到 stderr → 必须重新构造 prompt。
1916
-
1917
- **残余漏洞**(坦诚):
1918
- - subagent 自身仍可能 ignore prompt 约束(adherence ~70%)
1919
- - 真正 100% 等价需要 PreToolUse Edit/Write 时反查 transcript_path 找最近 subagent 标记 → 是 v6+ 工程量
1920
- - 但相比 v4 "完全靠用户自觉在 prompt 里加提醒",v5 把约束从"希望"变成了"前置硬条件"
1921
-
1922
- **意义**:这是 "ADR 自相矛盾"的 closure。`.claude/rules/review-agent-isolation.md` 同步更新为 D11.2 描述,所有 7 个 plugin agent 标记 `✅ ADR-038 D11.2 — review-agent-gatekeeper.py`。
1923
-
1924
- ---
1925
-
1926
- ### §12.8 — Novel Contributions(v5 显式 attribution)
1927
-
1928
- **用户的标准**:"是否真的完成最佳实践,而不是只是遵从或者模仿之类的"。
1929
-
1930
- 下面这些 v4+v5 决策是我们**超越文章**的部分,应明确标注为 novel contribution(不是从文章 copy 来的):
1931
-
1932
- | 设计 | 来源 | 文章是否有 | 我们的差异 |
1933
- |------|------|----------|-----------|
1934
- | **D8 SHA256 immutability** | 自研 | ❌ 文章用 prompt 约束 "unacceptable to remove" | 用 hash 强制;删除某行 → SHA 不匹配 → mechanical reject |
1935
- | **D8 status enum 三态** | 自研 | ❌ 文章用 boolean `passes` | 三态(failing/passing/blocked)区分"未完成 vs 真做不到",避免 model 用 false positive 绕过 |
1936
- | **D8.2 mechanical first-pass** | 自研,受 §"poor QA agent" 启发 | ❌ 文章只论 self-eval bias,没给 mechanical pass pattern | stop-evaluator 在 LLM eval 之前先 mechanical check `status==passing → evidence != null` |
1937
- | **D11.2 spawn-boundary gate** | 自研 | ❌ 文章只说 schema-level isolation 适用于本地 agent | 对 plugin agent,把 PreToolUse Task hook 作为 chokepoint,强制 prompt 包含 directive |
1938
- | **D9 50-call counter atomic write** | 实现细节 | ❌ Manus 只说 "after 50" | tmp+rename 原子写,跨并发 session 安全 |
1939
- | **D5 Magic Doc 自描述 `_instructions_`** | 自研 | ❌ 文章只说"派生文档",没给具体格式 | 文件自带 regenerator 命令 + freshness check 命令 + last_sync 时间戳 |
1940
- | **Magic Doc + path-based rules + KV-cache** | 综合 Anthropic Effective Context Engineering | 部分(文章只说"avoid context rot") | 三层组合:rules 按路径加载 + magic docs 按需 regenerate + 不变上下文打头降低 cache miss |
1941
-
1942
- **意义**:这些不是简单 copy paste 文章里的招式,而是把"原则吃透 → 找到对应到 CC 系统的最佳实施点"。这是用户说的"完成最佳实践"。
1943
-
1944
- ---
1945
-
1946
- ### §12.9 — v5 Self-Audit
1947
-
1948
- **v5 自审清单**:
1949
-
1950
- | # | v5 自审标准 | 状态 |
1951
- |---|------------|------|
1952
- | v5-SC1 | 4 个 deferred items(D2.4/D3.1/D5/D10 auto-trigger)全部实施 | ✅ PASS — 见 §12.1/§12.2/§12.3/§12.6 |
1953
- | v5-SC2 | 4 个 conceptual gap(D8 schema/D9 mid-task/D10 闭环 part/D11.2)全部闭环或留 v6+ | ✅ PASS — D8/D9/D11 实施,D10 闭环留 v6+ 但 attribution 标注 |
1954
- | v5-SC3 | Source 归因校对 | ✅ PASS — §12 头部修正 |
1955
- | v5-SC4 | Novel contributions 显式标注 | ✅ PASS — §12.8 |
1956
- | v5-SC5 | 残余 gap 坦诚记录(不作 "all green" 虚饰) | ✅ PASS — D10 §4-6 步 + D11.2 prompt-adherence ~70% + D9 KV-cache 验证未做 |
1957
- | v5-SC6 | 实施全部用 hooks-level 而非文档约束 | ✅ PASS — settings.json 7 events / 13 hook entries |
1958
- | v5-SC7 | v5 不破坏 v4 已部署内容 | ✅ PASS — 全部增量,PreCompact recitation 保留 |
1959
- | v5-SC8 | meta-review 5 个 conceptual gap 全部闭环 | ✅ PASS — D8 schema/D9 mid-task/D10 trigger/D11 plugin gate/Source 归因 |
1960
-
1961
- **v5 Grading Criteria**(仅评估 v5 增量):
1962
-
1963
- | 维度 | 评分 | 理由 |
1964
- |------|------|------|
1965
- | **Design Quality** | 4 | 4 个 deferred 全部 hooks-level 落地,spawn-boundary gate 是 novel pattern |
1966
- | **Originality** | 4 | §12.8 列了 7 项超越文章的 novel contribution,不是模仿 |
1967
- | **Craft** | 4 | 每个 §12.x 都有具体代码块、文件路径、wired 配置块 |
1968
- | **Functionality** | 4 | hooks 全部 wire 到 settings.json 并测试通过;PreToolUse 计数器 / SessionEnd trace-analyzer / Task gatekeeper 三个新 hook 通过 4 场景测试 |
1969
-
1970
- 全部 ≥ 3,通过硬阈值。
1971
-
1972
- ---
1973
-
1974
- ### §12.10 — 残余 gap(v6+ candidate)
1975
-
1976
- 诚实记录"v5 没解决但应该解决"的工作:
1977
-
1978
- 1. **D10 闭环 §4-6 步**:propose-then-verify-then-commit 闭环。需要 shadow execution 模式(在 worktree 里 apply 提议、跑同 trace、对比 metric)。**Estimated effort**: 2-3 个 WP。
1979
-
1980
- 2. **D11.2 真物理隔离**:当前 spawn-boundary gate 仅强制 prompt 包含 directive,subagent 自身仍可能 ignore(adherence ~70%)。100% 等价需要在 PreToolUse Edit/Write 时通过 `transcript_path` 反查最近 `Task` 标记,判断当前 session 是否是 review subagent context,是则物理拦截。**Estimated effort**: 1 个 WP。
1981
-
1982
- 3. **D9 KV-cache friendliness 实测**:D5 + D9 + D3.1 应该共同提升 KV-cache hit 率,但我们没有 baseline 测量。需要装 instrumentation 测对比。**Estimated effort**: 1 个 WP。
1983
-
1984
- 4. **D8 stop-check 和 D9 recitation 的端到端联动测试**:用一个真实 WP 跑完整 init→update→stop-check 循环,验证 evidence 字段约束真的会阻断"虚假 passing"。**Estimated effort**: 1 个 WP。
1985
-
1986
- 5. **Source 归因校对反流到所有 v4 §**:v5 §12 头部已经修正了,但 §2.4/§3.10-§3.13/§4 D8-D11 的 `[来源:...]` 标注仍是 v4 时期写的,部分归因到了 "Anthropic 第二篇" 而应该是 Manus/LangChain/OpenDev。**Estimated effort**: 0.5 WP(纯文本编辑)。
1987
-
1988
- ---
1989
-
1990
- ### §12.11 — Implementation Roster(v5 完成清单)
1991
-
1992
- | 文件 | 类型 | 目的 |
1993
- |------|------|------|
1994
- | `.claude/settings.json` | hooks 配置 | 7 events / 13 hook entries(v4 → v5 增加 4 entry) |
1995
- | `scripts/hooks/auto-python3.py` | PreToolUse Bash if-filter | D2.4 — 自动 `python *` → `python3 *` |
1996
- | `.claude/rules/*.md`(11 files) | 路径触发 rules | D3.1 — CLAUDE.md 拆分 |
1997
- | `docs/magic/api-routes.md` | Magic Doc | D5.1 reference impl |
1998
- | `scripts/checks/regenerate_magic_docs.py` | regenerator | D5.1 — `--check` 模式支持 freshness |
1999
- | `scripts/checks/check_doc_freshness.py` | freshness 集成 | D5.1 — 加 `_check_magic_docs()` + 修复 routes 路径 |
2000
- | `scripts/hooks/session-start-magic-docs.py` | SessionStart | D5.2 — 漂移告警注入 |
2001
- | `scripts/guard_router.py` | guard 路由 | D5 — 加 `docs/magic/` + `.claude/rules/backend-routes.md` |
2002
- | `scripts/hooks/initializer-agent.py` | progress writer | D8 — 补 `steps[]` / `verification_command` / `evidence` |
2003
- | `scripts/hooks/stop-evaluator.py` | stop check | D8 — 机械化 `evidence != null` 强制 |
2004
- | `scripts/hooks/tool-call-counter.py` | PreToolUse `*` counter | D9 — 50-call mid-task recitation |
2005
- | `scripts/hooks/trace-analyzer.py` | SessionEnd auto | D10 — auto-trigger(不自动 commit) |
2006
- | `scripts/hooks/review-agent-gatekeeper.py` | PreToolUse Task | D11.2 — spawn-boundary gate |
2007
- | `.claude/rules/review-agent-isolation.md` | 文档 | D11 — 更新 7 plugin agent 状态为 D11.2 |
2008
- | `docs/decisions/ADR-038-...md`(本文件 §12) | ADR | v5 patch 文档 |
2009
-
2010
- **Hooks 测试覆盖**:
2011
- - `tool-call-counter.py`:4 场景(normal/recite-fire/no-progress/atomic-write)
2012
- - `review-agent-gatekeeper.py`:4 场景(non-review/with-directive/missing-directive-block/non-Task)
2013
- - `session-start-magic-docs.py`:2 场景(no-drift-silent/drift-alert)
2014
- - `regenerate_magic_docs.py`:2 场景(regenerate/check-mode-detect-drift)
2015
-
2016
- ---
2017
-
2018
- ### §12.12 — v5 总评(按用户的"最佳实践 vs 模仿"标准)
2019
-
2020
- | 决策 | v4 评分 | v5 评分 | 差异原因 |
2021
- |------|--------|---------|---------|
2022
- | D2.4 if-filter | ❌ 未做 | ✅ 真做 | 实施 hooks-level |
2023
- | D3.1 @include | ❌ 未做 | ✅ 真做 | 11 rule 文件 |
2024
- | D5 Magic Docs | ❌ 未做 | ✅ 真做 | 三件套 + freshness 集成 |
2025
- | D8 schema | ⚠️ 形式 70% | ✅ 真做 | 补 steps[]/verify_cmd/evidence |
2026
- | D8.2 mechanical pass | ✅ 真做且超越 | ✅ 真做且超越 | (保留) |
2027
- | D9 mid-task recitation | ⚠️ 形式 30% | ✅ 真做 | 50-call counter |
2028
- | D10 trace analyzer | ⚠️ 形式 50% | ✅ trigger 真做 / 闭环 v6+ | SessionEnd auto |
2029
- | D11 plugin agent | ⚠️ 形式 50% | ✅ schema-level 等价真做 | spawn-boundary gate |
2030
-
2031
- **v4 → v5 总体提升**:"60% 真做 + 40% 形式" → "95% 真做 + 5% v6+ candidate"。
2032
-
2033
- v5 完成的不是"按 v4 ADR 抄写一遍",而是 (a) 用户提的 4 个 deferred 全部用 hooks-level 闭环,(b) meta-review 发现的 4 个 conceptual gap 全部对应到合适的 CC 实施点,(c) 残余 gap 坦诚标注为 v6+ candidate 而不是隐藏。
2034
-
2035
- 这是用户说的"完成最佳实践"——不是模仿文章里的招式,而是吃透原则、找到 CC 系统里能落地的最佳实施点、把治理强度从 convention 升到 hooks-level。
2036
-
2037
- ---
2038
-
2039
- _v3 已通过独立 Evaluator agent 审查。v4 是 v3 的兼容增量补丁。状态: proposed → 待实施(v3+v4 合并部署)。_