@specpow/framework 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +307 -0
- package/LICENSE +21 -0
- package/README.md +557 -0
- package/agents/controller/sdd-controller.md +55 -0
- package/agents/execution/java-codegen-agent.md +39 -0
- package/agents/execution/ui-codegen-agent.md +32 -0
- package/agents/ops/deploy-agent.md +181 -0
- package/agents/planning/db-designer-agent.md +30 -0
- package/agents/planning/prd-agent.md +31 -0
- package/agents/quality/review-agent.md +36 -0
- package/agents/quality/test-agent.md +33 -0
- package/bin/specpow.js +10 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +444 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/apply.d.ts +14 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +195 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/archive.d.ts +30 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +141 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/channel.d.ts +61 -0
- package/dist/commands/channel.d.ts.map +1 -0
- package/dist/commands/channel.js +613 -0
- package/dist/commands/channel.js.map +1 -0
- package/dist/commands/config.d.ts +40 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +130 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/debug.d.ts +45 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +167 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/doctor.d.ts +20 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +121 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/execute.d.ts +25 -0
- package/dist/commands/execute.d.ts.map +1 -0
- package/dist/commands/execute.js +120 -0
- package/dist/commands/execute.js.map +1 -0
- package/dist/commands/explore.d.ts +71 -0
- package/dist/commands/explore.d.ts.map +1 -0
- package/dist/commands/explore.js +481 -0
- package/dist/commands/explore.js.map +1 -0
- package/dist/commands/init.d.ts +20 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +146 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memory.d.ts +32 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +455 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/propose.d.ts +13 -0
- package/dist/commands/propose.d.ts.map +1 -0
- package/dist/commands/propose.js +193 -0
- package/dist/commands/propose.js.map +1 -0
- package/dist/commands/review.d.ts +50 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +198 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/schema.d.ts +22 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +79 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +130 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/store.d.ts +31 -0
- package/dist/commands/store.d.ts.map +1 -0
- package/dist/commands/store.js +109 -0
- package/dist/commands/store.js.map +1 -0
- package/dist/commands/update.d.ts +42 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +239 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +39 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +386 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/workflow/index.d.ts +12 -0
- package/dist/commands/workflow/index.d.ts.map +1 -0
- package/dist/commands/workflow/index.js +435 -0
- package/dist/commands/workflow/index.js.map +1 -0
- package/dist/core/agent-contract.d.ts +133 -0
- package/dist/core/agent-contract.d.ts.map +1 -0
- package/dist/core/agent-contract.js +71 -0
- package/dist/core/agent-contract.js.map +1 -0
- package/dist/core/archive/delta-merger.d.ts +101 -0
- package/dist/core/archive/delta-merger.d.ts.map +1 -0
- package/dist/core/archive/delta-merger.js +398 -0
- package/dist/core/archive/delta-merger.js.map +1 -0
- package/dist/core/archive/delta-parser.d.ts +48 -0
- package/dist/core/archive/delta-parser.d.ts.map +1 -0
- package/dist/core/archive/delta-parser.js +193 -0
- package/dist/core/archive/delta-parser.js.map +1 -0
- package/dist/core/archive/engine.d.ts +136 -0
- package/dist/core/archive/engine.d.ts.map +1 -0
- package/dist/core/archive/engine.js +506 -0
- package/dist/core/archive/engine.js.map +1 -0
- package/dist/core/archive/index.d.ts +11 -0
- package/dist/core/archive/index.d.ts.map +1 -0
- package/dist/core/archive/index.js +9 -0
- package/dist/core/archive/index.js.map +1 -0
- package/dist/core/artifact-graph/graph.d.ts +48 -0
- package/dist/core/artifact-graph/graph.d.ts.map +1 -0
- package/dist/core/artifact-graph/graph.js +170 -0
- package/dist/core/artifact-graph/graph.js.map +1 -0
- package/dist/core/artifact-graph/index.d.ts +13 -0
- package/dist/core/artifact-graph/index.d.ts.map +1 -0
- package/dist/core/artifact-graph/index.js +12 -0
- package/dist/core/artifact-graph/index.js.map +1 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts +60 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
- package/dist/core/artifact-graph/instruction-loader.js +166 -0
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
- package/dist/core/artifact-graph/outputs.d.ts +17 -0
- package/dist/core/artifact-graph/outputs.d.ts.map +1 -0
- package/dist/core/artifact-graph/outputs.js +27 -0
- package/dist/core/artifact-graph/outputs.js.map +1 -0
- package/dist/core/artifact-graph/resolver.d.ts +34 -0
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
- package/dist/core/artifact-graph/resolver.js +99 -0
- package/dist/core/artifact-graph/resolver.js.map +1 -0
- package/dist/core/artifact-graph/state.d.ts +54 -0
- package/dist/core/artifact-graph/state.d.ts.map +1 -0
- package/dist/core/artifact-graph/state.js +149 -0
- package/dist/core/artifact-graph/state.js.map +1 -0
- package/dist/core/artifact-graph/types.d.ts +151 -0
- package/dist/core/artifact-graph/types.d.ts.map +1 -0
- package/dist/core/artifact-graph/types.js +44 -0
- package/dist/core/artifact-graph/types.js.map +1 -0
- package/dist/core/channel/channel-event-log.d.ts +81 -0
- package/dist/core/channel/channel-event-log.d.ts.map +1 -0
- package/dist/core/channel/channel-event-log.js +177 -0
- package/dist/core/channel/channel-event-log.js.map +1 -0
- package/dist/core/channel/channel-inbox.d.ts +70 -0
- package/dist/core/channel/channel-inbox.d.ts.map +1 -0
- package/dist/core/channel/channel-inbox.js +122 -0
- package/dist/core/channel/channel-inbox.js.map +1 -0
- package/dist/core/channel/channel-runtime.d.ts +81 -0
- package/dist/core/channel/channel-runtime.d.ts.map +1 -0
- package/dist/core/channel/channel-runtime.js +291 -0
- package/dist/core/channel/channel-runtime.js.map +1 -0
- package/dist/core/channel/channel-supervisor.d.ts +72 -0
- package/dist/core/channel/channel-supervisor.d.ts.map +1 -0
- package/dist/core/channel/channel-supervisor.js +189 -0
- package/dist/core/channel/channel-supervisor.js.map +1 -0
- package/dist/core/channel/channel-types.d.ts +169 -0
- package/dist/core/channel/channel-types.d.ts.map +1 -0
- package/dist/core/channel/channel-types.js +26 -0
- package/dist/core/channel/channel-types.js.map +1 -0
- package/dist/core/channel/index.d.ts +21 -0
- package/dist/core/channel/index.d.ts.map +1 -0
- package/dist/core/channel/index.js +23 -0
- package/dist/core/channel/index.js.map +1 -0
- package/dist/core/command-generation/index.d.ts +225 -0
- package/dist/core/command-generation/index.d.ts.map +1 -0
- package/dist/core/command-generation/index.js +462 -0
- package/dist/core/command-generation/index.js.map +1 -0
- package/dist/core/config/config-schema.d.ts +745 -0
- package/dist/core/config/config-schema.d.ts.map +1 -0
- package/dist/core/config/config-schema.js +108 -0
- package/dist/core/config/config-schema.js.map +1 -0
- package/dist/core/config/global-config.d.ts +73 -0
- package/dist/core/config/global-config.d.ts.map +1 -0
- package/dist/core/config/global-config.js +225 -0
- package/dist/core/config/global-config.js.map +1 -0
- package/dist/core/config/index.d.ts +8 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +8 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/hooks/hook-registry.d.ts +55 -0
- package/dist/core/hooks/hook-registry.d.ts.map +1 -0
- package/dist/core/hooks/hook-registry.js +172 -0
- package/dist/core/hooks/hook-registry.js.map +1 -0
- package/dist/core/hooks/hook-types.d.ts +87 -0
- package/dist/core/hooks/hook-types.d.ts.map +1 -0
- package/dist/core/hooks/hook-types.js +11 -0
- package/dist/core/hooks/hook-types.js.map +1 -0
- package/dist/core/hooks/index.d.ts +28 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/hooks/index.js +28 -0
- package/dist/core/hooks/index.js.map +1 -0
- package/dist/core/hooks/post-tool-call-hook.d.ts +21 -0
- package/dist/core/hooks/post-tool-call-hook.d.ts.map +1 -0
- package/dist/core/hooks/post-tool-call-hook.js +191 -0
- package/dist/core/hooks/post-tool-call-hook.js.map +1 -0
- package/dist/core/hooks/pre-tool-call-hook.d.ts +31 -0
- package/dist/core/hooks/pre-tool-call-hook.d.ts.map +1 -0
- package/dist/core/hooks/pre-tool-call-hook.js +122 -0
- package/dist/core/hooks/pre-tool-call-hook.js.map +1 -0
- package/dist/core/hooks/session-start-hook.d.ts +25 -0
- package/dist/core/hooks/session-start-hook.d.ts.map +1 -0
- package/dist/core/hooks/session-start-hook.js +226 -0
- package/dist/core/hooks/session-start-hook.js.map +1 -0
- package/dist/core/hooks/workflow-state-hook.d.ts +18 -0
- package/dist/core/hooks/workflow-state-hook.d.ts.map +1 -0
- package/dist/core/hooks/workflow-state-hook.js +181 -0
- package/dist/core/hooks/workflow-state-hook.js.map +1 -0
- package/dist/core/init/engine.d.ts +69 -0
- package/dist/core/init/engine.d.ts.map +1 -0
- package/dist/core/init/engine.js +211 -0
- package/dist/core/init/engine.js.map +1 -0
- package/dist/core/init/template-hash.d.ts +86 -0
- package/dist/core/init/template-hash.d.ts.map +1 -0
- package/dist/core/init/template-hash.js +228 -0
- package/dist/core/init/template-hash.js.map +1 -0
- package/dist/core/memory/adapters/json-adapter.d.ts +50 -0
- package/dist/core/memory/adapters/json-adapter.d.ts.map +1 -0
- package/dist/core/memory/adapters/json-adapter.js +273 -0
- package/dist/core/memory/adapters/json-adapter.js.map +1 -0
- package/dist/core/memory/adapters/sqlite-adapter.d.ts +26 -0
- package/dist/core/memory/adapters/sqlite-adapter.d.ts.map +1 -0
- package/dist/core/memory/adapters/sqlite-adapter.js +230 -0
- package/dist/core/memory/adapters/sqlite-adapter.js.map +1 -0
- package/dist/core/memory/index.d.ts +38 -0
- package/dist/core/memory/index.d.ts.map +1 -0
- package/dist/core/memory/index.js +40 -0
- package/dist/core/memory/index.js.map +1 -0
- package/dist/core/memory/memory-indexer.d.ts +39 -0
- package/dist/core/memory/memory-indexer.d.ts.map +1 -0
- package/dist/core/memory/memory-indexer.js +213 -0
- package/dist/core/memory/memory-indexer.js.map +1 -0
- package/dist/core/memory/memory-manager.d.ts +59 -0
- package/dist/core/memory/memory-manager.d.ts.map +1 -0
- package/dist/core/memory/memory-manager.js +194 -0
- package/dist/core/memory/memory-manager.js.map +1 -0
- package/dist/core/memory/memory-store.d.ts +31 -0
- package/dist/core/memory/memory-store.d.ts.map +1 -0
- package/dist/core/memory/memory-store.js +148 -0
- package/dist/core/memory/memory-store.js.map +1 -0
- package/dist/core/memory/memory-types.d.ts +154 -0
- package/dist/core/memory/memory-types.d.ts.map +1 -0
- package/dist/core/memory/memory-types.js +13 -0
- package/dist/core/memory/memory-types.js.map +1 -0
- package/dist/core/migration/index.d.ts +80 -0
- package/dist/core/migration/index.d.ts.map +1 -0
- package/dist/core/migration/index.js +361 -0
- package/dist/core/migration/index.js.map +1 -0
- package/dist/core/parsers/index.d.ts +95 -0
- package/dist/core/parsers/index.d.ts.map +1 -0
- package/dist/core/parsers/index.js +367 -0
- package/dist/core/parsers/index.js.map +1 -0
- package/dist/core/sdd-engine/ai-caller.d.ts +118 -0
- package/dist/core/sdd-engine/ai-caller.d.ts.map +1 -0
- package/dist/core/sdd-engine/ai-caller.js +624 -0
- package/dist/core/sdd-engine/ai-caller.js.map +1 -0
- package/dist/core/sdd-engine/controller.d.ts +107 -0
- package/dist/core/sdd-engine/controller.d.ts.map +1 -0
- package/dist/core/sdd-engine/controller.js +357 -0
- package/dist/core/sdd-engine/controller.js.map +1 -0
- package/dist/core/sdd-engine/dispatcher.d.ts +69 -0
- package/dist/core/sdd-engine/dispatcher.d.ts.map +1 -0
- package/dist/core/sdd-engine/dispatcher.js +146 -0
- package/dist/core/sdd-engine/dispatcher.js.map +1 -0
- package/dist/core/sdd-engine/git-ops.d.ts +73 -0
- package/dist/core/sdd-engine/git-ops.d.ts.map +1 -0
- package/dist/core/sdd-engine/git-ops.js +326 -0
- package/dist/core/sdd-engine/git-ops.js.map +1 -0
- package/dist/core/sdd-engine/index.d.ts +17 -0
- package/dist/core/sdd-engine/index.d.ts.map +1 -0
- package/dist/core/sdd-engine/index.js +15 -0
- package/dist/core/sdd-engine/index.js.map +1 -0
- package/dist/core/sdd-engine/ledger.d.ts +92 -0
- package/dist/core/sdd-engine/ledger.d.ts.map +1 -0
- package/dist/core/sdd-engine/ledger.js +273 -0
- package/dist/core/sdd-engine/ledger.js.map +1 -0
- package/dist/core/sdd-engine/model-selector.d.ts +49 -0
- package/dist/core/sdd-engine/model-selector.d.ts.map +1 -0
- package/dist/core/sdd-engine/model-selector.js +76 -0
- package/dist/core/sdd-engine/model-selector.js.map +1 -0
- package/dist/core/sdd-engine/parallel-dispatcher.d.ts +99 -0
- package/dist/core/sdd-engine/parallel-dispatcher.d.ts.map +1 -0
- package/dist/core/sdd-engine/parallel-dispatcher.js +350 -0
- package/dist/core/sdd-engine/parallel-dispatcher.js.map +1 -0
- package/dist/core/sdd-engine/review-loop.d.ts +61 -0
- package/dist/core/sdd-engine/review-loop.d.ts.map +1 -0
- package/dist/core/sdd-engine/review-loop.js +139 -0
- package/dist/core/sdd-engine/review-loop.js.map +1 -0
- package/dist/core/sdd-engine/types.d.ts +104 -0
- package/dist/core/sdd-engine/types.d.ts.map +1 -0
- package/dist/core/sdd-engine/types.js +7 -0
- package/dist/core/sdd-engine/types.js.map +1 -0
- package/dist/core/store/index.d.ts +78 -0
- package/dist/core/store/index.d.ts.map +1 -0
- package/dist/core/store/index.js +182 -0
- package/dist/core/store/index.js.map +1 -0
- package/dist/core/templates/index.d.ts +58 -0
- package/dist/core/templates/index.d.ts.map +1 -0
- package/dist/core/templates/index.js +158 -0
- package/dist/core/templates/index.js.map +1 -0
- package/dist/core/validation/index.d.ts +34 -0
- package/dist/core/validation/index.d.ts.map +1 -0
- package/dist/core/validation/index.js +153 -0
- package/dist/core/validation/index.js.map +1 -0
- package/dist/core/workflow-state.d.ts +96 -0
- package/dist/core/workflow-state.d.ts.map +1 -0
- package/dist/core/workflow-state.js +284 -0
- package/dist/core/workflow-state.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/index.d.ts +48 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +119 -0
- package/dist/utils/index.js.map +1 -0
- package/hooks/hooks.json +30 -0
- package/hooks/run-hook.cmd +19 -0
- package/hooks/session-start +62 -0
- package/hooks/workflow-state +150 -0
- package/package.json +122 -0
- package/schemas/bug-fix/schema.yaml +64 -0
- package/schemas/bug-fix/templates/analysis.md +43 -0
- package/schemas/bug-fix/templates/fix-plan.md +19 -0
- package/schemas/bug-fix/templates/proposal.md +30 -0
- package/schemas/crud-module/schema.yaml +65 -0
- package/schemas/crud-module/templates/design.md +36 -0
- package/schemas/crud-module/templates/proposal.md +30 -0
- package/schemas/crud-module/templates/spec.md +33 -0
- package/schemas/crud-module/templates/tasks.md +57 -0
- package/schemas/spec-driven/schema.yaml +87 -0
- package/schemas/spec-driven/templates/design.md +54 -0
- package/schemas/spec-driven/templates/proposal.md +31 -0
- package/schemas/spec-driven/templates/spec.md +44 -0
- package/schemas/spec-driven/templates/tasks.md +98 -0
- package/skills/business-code-review/SKILL.md +78 -0
- package/skills/business-db-design/SKILL.md +74 -0
- package/skills/business-deploy-check/SKILL.md +72 -0
- package/skills/business-doc-sync/SKILL.md +72 -0
- package/skills/business-java-codegen/SKILL.md +97 -0
- package/skills/business-menu-register/SKILL.md +63 -0
- package/skills/business-prd-writer/SKILL.md +80 -0
- package/skills/business-test-gen/SKILL.md +82 -0
- package/skills/business-ui-codegen/SKILL.md +104 -0
- package/skills/execution-finish-branch/SKILL.md +58 -0
- package/skills/execution-git-worktrees/SKILL.md +48 -0
- package/skills/execution-parallel-agents/SKILL.md +51 -0
- package/skills/execution-receiving-review/SKILL.md +47 -0
- package/skills/execution-requesting-review/SKILL.md +51 -0
- package/skills/execution-subagent-driven-dev/SKILL.md +148 -0
- package/skills/execution-systematic-debugging/SKILL.md +95 -0
- package/skills/execution-tdd/SKILL.md +74 -0
- package/skills/execution-verification-before-completion/SKILL.md +75 -0
- package/skills/meta-create-skill/SKILL.md +374 -0
- package/skills/meta-using-skills/SKILL.md +97 -0
- package/skills/meta-writing-skills/SKILL.md +66 -0
- package/skills/planning-apply-change/SKILL.md +199 -0
- package/skills/planning-archive-change/SKILL.md +43 -0
- package/skills/planning-explore/SKILL.md +108 -0
- package/skills/planning-onboard/SKILL.md +60 -0
- package/skills/planning-propose/SKILL.md +145 -0
- package/skills/planning-update-change/SKILL.md +45 -0
- package/skills/planning-verify-change/SKILL.md +58 -0
- package/skills/planning-write-design/SKILL.md +59 -0
- package/skills/planning-write-plans/SKILL.md +55 -0
- package/skills/planning-write-specs/SKILL.md +73 -0
package/README.md
ADDED
|
@@ -0,0 +1,557 @@
|
|
|
1
|
+
# SpecPow Framework
|
|
2
|
+
|
|
3
|
+
> **Spec-Powered AI Development Framework**
|
|
4
|
+
> 融合 OpenSpec 规范驱动 + Superpowers 执行引擎的企业级 AI 辅助编程框架
|
|
5
|
+
|
|
6
|
+
## 核心理念
|
|
7
|
+
|
|
8
|
+
**OpenSpec 确保"做正确的事"(Do the right thing),Superpowers 确保"把事做正确"(Do the thing right)。**
|
|
9
|
+
|
|
10
|
+
SpecPow 将两者融合,形成从需求探索到代码交付的全链路 AI 辅助开发框架:
|
|
11
|
+
|
|
12
|
+
| 维度 | 来源 | 能力 |
|
|
13
|
+
|------|------|------|
|
|
14
|
+
| 规划严谨性 | OpenSpec | 工件图引擎 + Delta 规范 + 苏格拉底式探索 |
|
|
15
|
+
| 执行高质量 | Superpowers | SDD 子代理驱动 + TDD 强制 + 5轮审查循环 |
|
|
16
|
+
| 追溯完整性 | 两者融合 | 规范变更历史 + 执行账本 + 审查包 |
|
|
17
|
+
| 平台广泛性 | 两者融合 | **22+ 种** AI 工具适配器 |
|
|
18
|
+
| 业务贴合性 | 企业定制 | 9 个业务 Agent 覆盖全栈 |
|
|
19
|
+
| 智能上下文 | Trellis | Hook 注入 + 跨会话记忆 + 工作流状态追踪 |
|
|
20
|
+
|
|
21
|
+
## 架构分层
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
25
|
+
│ 用户触发层 (19 个 CLI 命令) │
|
|
26
|
+
│ init · explore · propose · status · apply · verify · archive │
|
|
27
|
+
│ execute · review · debug · update · config · schemas · store │
|
|
28
|
+
│ doctor · migrate · sdd · workflow │
|
|
29
|
+
│ 支持 --json 输出(Agent Contract) │
|
|
30
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
31
|
+
│
|
|
32
|
+
▼
|
|
33
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
34
|
+
│ 规划层 (OpenSpec 工件图引擎) │
|
|
35
|
+
│ proposal → specs → design → tasks │
|
|
36
|
+
│ · Delta 规范系统(结构化合并) · 工件依赖 DAG · 验证器 │
|
|
37
|
+
│ · Context/Rules 注入 · 三层 Schema 解析 │
|
|
38
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
42
|
+
│ 执行层 (Superpowers SDD 引擎) │
|
|
43
|
+
│ 控制器 → 并行分发器 → 子代理实现 → 审查循环 → 账本记录 │
|
|
44
|
+
│ · TDD 强制 (RED-GREEN-REFACTOR) │
|
|
45
|
+
│ · 每任务新鲜子代理 · 5轮修复断路器 · 进度账本 │
|
|
46
|
+
│ · 模型配置可化 · 测试框架自动检测 │
|
|
47
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
48
|
+
│
|
|
49
|
+
▼
|
|
50
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
51
|
+
│ 能力层 (31 个技能) │
|
|
52
|
+
│ 规划类(10) + 执行类(9) + 质量类(2) + 业务类(9) + 元技能(1) = 31 个技能 │
|
|
53
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
54
|
+
│
|
|
55
|
+
▼
|
|
56
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
57
|
+
│ 智能层 (v0.2.0 新增) │
|
|
58
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
|
|
59
|
+
│ │ Hook │ │ Memory │ │ Channel │ │ Workflow State │ │
|
|
60
|
+
│ │ 5-hook │ │ 跨会话 │ │ 多代理 │ │ [workflow-state] │ │
|
|
61
|
+
│ │ 管道 │ │ 记忆 │ │ 协作 │ │ 状态标签 │ │
|
|
62
|
+
│ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
|
|
63
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
64
|
+
│
|
|
65
|
+
▼
|
|
66
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
67
|
+
│ 基础设施层 │
|
|
68
|
+
│ 22+ 种 AI 工具适配器 · Git 操作 · 模板引擎 · 配置管理 │
|
|
69
|
+
│ 模板哈希增量更新 · Core SDK 子路径导出 │
|
|
70
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 快速开始
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 安装依赖
|
|
77
|
+
pnpm install
|
|
78
|
+
|
|
79
|
+
# 构建
|
|
80
|
+
pnpm build
|
|
81
|
+
|
|
82
|
+
# 初始化项目
|
|
83
|
+
specpow init
|
|
84
|
+
|
|
85
|
+
# 探索需求
|
|
86
|
+
specpow explore "我需要一个用户管理模块"
|
|
87
|
+
|
|
88
|
+
# 创建变更提案
|
|
89
|
+
specpow propose add-user-management
|
|
90
|
+
|
|
91
|
+
# 查看状态(支持 JSON 输出)
|
|
92
|
+
specpow status --json
|
|
93
|
+
|
|
94
|
+
# 执行实现(SDD 引擎驱动)
|
|
95
|
+
specpow apply
|
|
96
|
+
|
|
97
|
+
# 并行执行(使用 git worktree)
|
|
98
|
+
specpow apply --parallel
|
|
99
|
+
|
|
100
|
+
# 验证规范合规性
|
|
101
|
+
specpow verify
|
|
102
|
+
|
|
103
|
+
# 归档变更
|
|
104
|
+
specpow archive
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## SDK 子路径导出 (v0.2.0)
|
|
108
|
+
|
|
109
|
+
SpecPow 支持模块化导入,按需使用各子系统:
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
// SDD 执行引擎
|
|
113
|
+
import { SDDController } from '@specpow/framework/sdd';
|
|
114
|
+
|
|
115
|
+
// 工件图引擎
|
|
116
|
+
import { ArtifactGraph } from '@specpow/framework/artifact-graph';
|
|
117
|
+
|
|
118
|
+
// Delta Spec 解析与合并
|
|
119
|
+
import { parseDelta, mergeDeltaSpec, ArchiveEngine } from '@specpow/framework/archive';
|
|
120
|
+
|
|
121
|
+
// Hook 自动上下文注入
|
|
122
|
+
import { HookRegistry, createHookManager } from '@specpow/framework/hooks';
|
|
123
|
+
|
|
124
|
+
// 跨会话记忆系统
|
|
125
|
+
import { createMemoryManager, extractKeywords, detectPhase } from '@specpow/framework/memory';
|
|
126
|
+
|
|
127
|
+
// Channel 多代理协作
|
|
128
|
+
import { createChannelRuntime, Supervisor } from '@specpow/framework/channel';
|
|
129
|
+
|
|
130
|
+
// 工作流状态标签
|
|
131
|
+
import { stageToTag, parseWorkflowStateTag, inferStageFromPath } from '@specpow/framework/workflow-state';
|
|
132
|
+
|
|
133
|
+
// 全局配置
|
|
134
|
+
import { GlobalConfigManager } from '@specpow/framework/config';
|
|
135
|
+
|
|
136
|
+
// AI 工具适配器
|
|
137
|
+
import { AdapterRegistry, createAdapter } from '@specpow/framework/command-generation';
|
|
138
|
+
|
|
139
|
+
// 命令生成
|
|
140
|
+
import { loadCommandsFromSkills } from '@specpow/framework/command-generation';
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 可用子路径
|
|
144
|
+
|
|
145
|
+
| 子路径 | 说明 |
|
|
146
|
+
|--------|------|
|
|
147
|
+
| `@specpow/framework` | 主入口(命名空间导出) |
|
|
148
|
+
| `@specpow/framework/sdd` | SDD 执行引擎 |
|
|
149
|
+
| `@specpow/framework/artifact-graph` | 工件图 DAG |
|
|
150
|
+
| `@specpow/framework/archive` | Delta Spec 解析与合并 |
|
|
151
|
+
| `@specpow/framework/hooks` | Hook 自动上下文注入 |
|
|
152
|
+
| `@specpow/framework/memory` | 跨会话记忆系统 |
|
|
153
|
+
| `@specpow/framework/channel` | Channel 多代理协作 |
|
|
154
|
+
| `@specpow/framework/workflow-state` | 工作流状态标签 |
|
|
155
|
+
| `@specpow/framework/config` | 全局配置管理 |
|
|
156
|
+
| `@specpow/framework/command-generation` | AI 工具适配器 |
|
|
157
|
+
|
|
158
|
+
## 工作流 Schema
|
|
159
|
+
|
|
160
|
+
| Schema | 工件流 | 场景 |
|
|
161
|
+
|---|---|---|
|
|
162
|
+
| `spec-driven` | proposal → specs → design → tasks → apply | 通用规格驱动开发 |
|
|
163
|
+
| `crud-module` | proposal → spec → design → tasks → apply | CRUD 模块生成(前后端 8 任务) |
|
|
164
|
+
| `bug-fix` | proposal → analysis → fix-plan → apply | 缺陷修复 |
|
|
165
|
+
|
|
166
|
+
**三层 Schema 解析**:项目级 → 用户级(`~/.specpow/schemas/`)→ 包内置
|
|
167
|
+
|
|
168
|
+
## Context & Rules 注入 (v0.2.0)
|
|
169
|
+
|
|
170
|
+
在 `.specpow/config.yaml` 中配置项目上下文和规则:
|
|
171
|
+
|
|
172
|
+
```yaml
|
|
173
|
+
# .specpow/config.yaml
|
|
174
|
+
schema: spec-driven
|
|
175
|
+
|
|
176
|
+
# 项目上下文(注入到 AI 指令)
|
|
177
|
+
context: |
|
|
178
|
+
这是一个 React/TypeScript 项目,使用:
|
|
179
|
+
- Node.js 20+, PostgreSQL, Redis
|
|
180
|
+
- 认证使用 JWT + OAuth2
|
|
181
|
+
- UI 组件库:Ant Design 5.x
|
|
182
|
+
|
|
183
|
+
# 各阶段规则
|
|
184
|
+
rules:
|
|
185
|
+
proposal:
|
|
186
|
+
- 提案不超过2页
|
|
187
|
+
- 必须包含安全影响评估
|
|
188
|
+
specs:
|
|
189
|
+
- 使用 SHALL/MUST 表述需求
|
|
190
|
+
- 每个需求至少2个场景
|
|
191
|
+
design:
|
|
192
|
+
- 必须包含数据库 ER 图
|
|
193
|
+
- API 设计遵循 RESTful 规范
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Hook 自动上下文注入 (v0.2.0)
|
|
197
|
+
|
|
198
|
+
SpecPow 通过 5-hook 管道自动注入上下文:
|
|
199
|
+
|
|
200
|
+
| Hook | 触发时机 | 注入内容 |
|
|
201
|
+
|------|----------|----------|
|
|
202
|
+
| `SessionStart` | 会话开始 | 项目概览、活跃变更状态、工作流阶段 |
|
|
203
|
+
| `UserPromptSubmit` | 用户提交提示 | 当前工作流状态标签、相关记忆 |
|
|
204
|
+
| `PreToolUse` | 工具调用前 | 文件依赖关系、测试覆盖状态 |
|
|
205
|
+
| `PreToolCall` | 工具调用前 | 工具拦截、工作流上下文注入 |
|
|
206
|
+
| `PostToolCall` | 工具调用后 | 结果记录、阶段转换检测 |
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
// .specpow/hooks/hooks.json
|
|
210
|
+
{
|
|
211
|
+
"hooks": {
|
|
212
|
+
"SessionStart": [{ "matcher": "", "command": "node hooks/session-start.js" }],
|
|
213
|
+
"UserPromptSubmit": [{ "matcher": "", "command": "node hooks/inject-workflow-state.js" }]
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## 跨会话记忆系统 (v0.2.0)
|
|
219
|
+
|
|
220
|
+
索引过去的 AI 会话日志,支持关键词搜索、阶段切片、相关性评分:
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
import { createMemoryManager } from '@specpow/framework/memory';
|
|
224
|
+
|
|
225
|
+
const memory = createMemoryManager(projectRoot);
|
|
226
|
+
|
|
227
|
+
// 索引会话
|
|
228
|
+
await memory.indexSession(sessionLog);
|
|
229
|
+
|
|
230
|
+
// 搜索记忆
|
|
231
|
+
const results = await memory.search({
|
|
232
|
+
keywords: ['authentication', 'login'],
|
|
233
|
+
phases: ['apply'],
|
|
234
|
+
limit: 10
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
// 获取最近记忆
|
|
238
|
+
const recent = await memory.getRecent(20);
|
|
239
|
+
|
|
240
|
+
// 获取统计信息
|
|
241
|
+
const stats = await memory.getStats();
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Channel 多代理协作 (v0.2.0)
|
|
245
|
+
|
|
246
|
+
事件源多代理运行时,支持 Supervisor 模式:
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
import { createChannelRuntime, Supervisor } from '@specpow/framework/channel';
|
|
250
|
+
|
|
251
|
+
// 创建运行时
|
|
252
|
+
const runtime = createChannelRuntime({
|
|
253
|
+
channelId: 'dev-team',
|
|
254
|
+
name: '开发团队'
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
// 创建 Supervisor
|
|
258
|
+
const supervisor = new Supervisor(runtime, {
|
|
259
|
+
assignmentStrategy: 'round_robin', // 轮询 | 最少忙碌 | 优先级
|
|
260
|
+
maxConcurrentTasks: 5,
|
|
261
|
+
taskTimeout: 300000
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
// 注册 Worker
|
|
265
|
+
await supervisor.registerWorker({
|
|
266
|
+
id: 'worker-1',
|
|
267
|
+
name: '实现者',
|
|
268
|
+
role: 'worker',
|
|
269
|
+
status: 'idle',
|
|
270
|
+
lastActiveAt: Date.now()
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// 分配任务
|
|
274
|
+
const taskId = await supervisor.assignTask(
|
|
275
|
+
'实现用户认证模块',
|
|
276
|
+
{ specs: ['auth.spec.md'] },
|
|
277
|
+
'supervisor'
|
|
278
|
+
);
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## 工作流状态标签 (v0.2.0)
|
|
282
|
+
|
|
283
|
+
Trellis 风格的 `[workflow-state:xxx]` 标签,用于 AI 追踪工作流进度:
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
import { stageToTag, parseWorkflowStateTag, inferStageFromPath } from '@specpow/framework/workflow-state';
|
|
287
|
+
|
|
288
|
+
// 生成标签
|
|
289
|
+
const tag = stageToTag('apply'); // [workflow-state:apply]
|
|
290
|
+
|
|
291
|
+
// 解析标签
|
|
292
|
+
const state = parseWorkflowStateTag('[workflow-state:apply:task-3-of-5]');
|
|
293
|
+
// → { stage: 'apply', taskProgress: { current: 3, total: 5 } }
|
|
294
|
+
|
|
295
|
+
// 从路径推断阶段
|
|
296
|
+
const stage = inferStageFromPath('skills/planning-explore/SKILL.md');
|
|
297
|
+
// → 'explore'
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Delta Spec 结构化合并 (v0.2.0)
|
|
301
|
+
|
|
302
|
+
借鉴 OpenSpec 的结构化合并算法,支持 ADDED/MODIFIED/REMOVED/RENAMED 操作:
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
Delta 格式:
|
|
306
|
+
## ADDED Requirements
|
|
307
|
+
### Requirement: 新功能A
|
|
308
|
+
系统应支持功能A。
|
|
309
|
+
|
|
310
|
+
## MODIFIED Requirements
|
|
311
|
+
### Requirement: 已有功能B
|
|
312
|
+
系统应增强功能B。
|
|
313
|
+
|
|
314
|
+
## REMOVED Requirements
|
|
315
|
+
### Requirement: 废弃功能C
|
|
316
|
+
|
|
317
|
+
## RENAMED Requirements
|
|
318
|
+
### Requirement: 旧名称 → 新名称
|
|
319
|
+
|
|
320
|
+
合并顺序:RENAMED → REMOVED → MODIFIED → ADDED
|
|
321
|
+
冲突检测:跨段冲突、重复名称、RENAMED+REMOVED 矛盾
|
|
322
|
+
幂等性:normalizeBlockRaw 比较,已同步则跳过
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## 模板哈希增量更新 (v0.2.0)
|
|
326
|
+
|
|
327
|
+
`specpow init` 支持增量更新,保护用户修改:
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
.specpow/.template-hashes.json
|
|
331
|
+
{
|
|
332
|
+
"__version": 1,
|
|
333
|
+
"hashes": {
|
|
334
|
+
"schemas/spec-driven/schema.yaml": "sha256hex...",
|
|
335
|
+
"skills/execution-tdd/SKILL.md": "sha256hex..."
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
更新逻辑:
|
|
340
|
+
1. 计算新模板哈希
|
|
341
|
+
2. 对比存储哈希
|
|
342
|
+
3. 未修改 → 跳过
|
|
343
|
+
4. 用户修改过 → 创建 .new 文件
|
|
344
|
+
5. 框架更新 → 覆盖
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
## 技能体系(31 个)
|
|
348
|
+
|
|
349
|
+
| 分类 | 数量 | 技能 |
|
|
350
|
+
|---|---|---|
|
|
351
|
+
| **Meta** | 3 | using-skills、writing-skills、create-skill |
|
|
352
|
+
| **Planning** | 10 | explore、propose、apply-change、verify-change、archive-change、write-plans、write-specs、write-design、onboard、update-change |
|
|
353
|
+
| **Execution** | 9 | subagent-driven-dev、**tdd**、systematic-debugging、parallel-agents、finish-branch、git-worktrees、requesting-review、receiving-review、verification-before-completion |
|
|
354
|
+
| **Business** | 9 | java-codegen、ui-codegen、test-gen、code-review、db-design、prd-writer、deploy-check、doc-sync、menu-register |
|
|
355
|
+
|
|
356
|
+
## Agent 体系(8 个)
|
|
357
|
+
|
|
358
|
+
| 类别 | Agent | 职责 |
|
|
359
|
+
|---|---|---|
|
|
360
|
+
| **规划** | prd-agent | 用户原始需求 → 结构化 PRD |
|
|
361
|
+
| **规划** | db-designer-agent | PRD → DDL + 索引 + 状态码 |
|
|
362
|
+
| **执行** | java-codegen-agent | Entity → Mapper → Service → Controller |
|
|
363
|
+
| **执行** | ui-codegen-agent | Vue2 + View Design 页面生成 |
|
|
364
|
+
| **质量** | test-agent | JUnit5 + Mockito 测试生成 |
|
|
365
|
+
| **质量** | review-agent | 结构化代码审查报告 |
|
|
366
|
+
| **控制** | sdd-controller | 子代理编排 + 审查循环 + 账本 |
|
|
367
|
+
| **运维** | deploy-agent | 部署检查 + 滚动/蓝绿/金丝雀发布 |
|
|
368
|
+
|
|
369
|
+
## SDD 执行引擎
|
|
370
|
+
|
|
371
|
+
SDD (Subagent-Driven Development) 是核心执行引擎,融合 Superpowers 方法论:
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
┌─ Phase 1: TDD RED ────────────────────────────────────┐
|
|
375
|
+
│ TestWriter 子代理生成失败测试 │
|
|
376
|
+
│ 确认全部失败 → RED 确认 │
|
|
377
|
+
└────────────────────────────────────────────────────────┘
|
|
378
|
+
│
|
|
379
|
+
┌─ Phase 2: 实现 ───────────────────────────────────────┐
|
|
380
|
+
│ 实现者子代理(全新上下文) │
|
|
381
|
+
│ 遵循 RED-GREEN-REFACTOR 使测试通过 │
|
|
382
|
+
└────────────────────────────────────────────────────────┘
|
|
383
|
+
│
|
|
384
|
+
┌─ Phase 3: 审查 ───────────────────────────────────────┐
|
|
385
|
+
│ 审查者子代理:三阶段裁决 │
|
|
386
|
+
│ ① 规范合规 ② 代码质量 ③ TDD 合规 │
|
|
387
|
+
└────────────────────────────────────────────────────────┘
|
|
388
|
+
│
|
|
389
|
+
┌─ Phase 4: 修复循环(≤5 轮)──────────────────────────┐
|
|
390
|
+
│ R1-3: 恢复原始实现者 │
|
|
391
|
+
│ R4-5: 全新实现者 + 升级模型 │
|
|
392
|
+
│ 断路器: 5 轮后裁定(停放 / 阻塞) │
|
|
393
|
+
└────────────────────────────────────────────────────────┘
|
|
394
|
+
│
|
|
395
|
+
┌─ Phase 5: 账本记录 ──────────────────────────────────┐
|
|
396
|
+
│ 进度账本支持断点续跑 │
|
|
397
|
+
│ 停放发现延迟到最终审查处理 │
|
|
398
|
+
└────────────────────────────────────────────────────────┘
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**关键设计原则**(来自 Superpowers):
|
|
402
|
+
- 控制器**不自己修复代码**(保持上下文干净)
|
|
403
|
+
- 所有产物**通过文件传递**(不占用上下文窗口)
|
|
404
|
+
- **信任账本而非记忆**(上下文压缩后账本是唯一真相)
|
|
405
|
+
- 每任务**全新子代理**(上下文隔离)
|
|
406
|
+
|
|
407
|
+
## 支持的 AI 工具(22 种)
|
|
408
|
+
|
|
409
|
+
| 工具 | 适配方式 | 调用风格 |
|
|
410
|
+
|------|----------|----------|
|
|
411
|
+
| Claude Code | `.claude/commands/` | `/specpow:explore` |
|
|
412
|
+
| Cursor | `.cursor/rules/` | `/specpow-explore` |
|
|
413
|
+
| GitHub Copilot | `.github/copilot-instructions.md` | `/specpow-explore` |
|
|
414
|
+
| CodeBuddy | `.codebuddy/rules/` | `/specpow-explore` |
|
|
415
|
+
| Codex | `.codex/instructions.md` | `/specpow-explore` |
|
|
416
|
+
| Gemini CLI | `.gemini/instructions.md` | `/specpow:explore` |
|
|
417
|
+
| Amazon Q | `.amazonq/commands/` | `@specpow-explore` |
|
|
418
|
+
| Cline | `.cline/rules/` | `/specpow-explore` |
|
|
419
|
+
| Continue | `.continue/config.md` | `/specpow-explore` |
|
|
420
|
+
| Windsurf | `.windsurf/rules/` | `/specpow-explore` |
|
|
421
|
+
| Trae | `.trae/rules/` | `/specpow-explore` |
|
|
422
|
+
| Kiro | `.kiro/steering/` | `/specpow-explore` |
|
|
423
|
+
| Qwen | `.qwen/instructions.md` | `/specpow-explore` |
|
|
424
|
+
| Kimi | `.kimi/instructions.md` | `/specpow-explore` |
|
|
425
|
+
| GitHub Copilot Workspace | `.github/copilot/` | `/specpow-explore` |
|
|
426
|
+
| Roo Code | `.roo/rules/` | `/specpow-explore` |
|
|
427
|
+
| Auggie | `.auggie/instructions.md` | `/specpow-explore` |
|
|
428
|
+
| Bob | `.bob/rules/` | `/specpow-explore` |
|
|
429
|
+
| Crush | `.crush/instructions.md` | `/specpow-explore` |
|
|
430
|
+
| Devin | `.devin/commands/` | `@specpow-explore` |
|
|
431
|
+
| Junie | `.junie/rules/` | `/specpow-explore` |
|
|
432
|
+
| Qoder | `.qoder/instructions.md` | `/specpow-explore` |
|
|
433
|
+
|
|
434
|
+
## 项目结构
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
specpow/
|
|
438
|
+
├── bin/ # CLI 入口 (specpow.js)
|
|
439
|
+
├── src/
|
|
440
|
+
│ ├── cli/ # Commander.js 命令注册
|
|
441
|
+
│ ├── commands/ # 19 个命令实现(支持 --json)
|
|
442
|
+
│ │ ├── init.ts # 初始化 + 模板哈希增量更新
|
|
443
|
+
│ │ ├── explore.ts # 苏格拉底式需求探索
|
|
444
|
+
│ │ ├── propose.ts # 变更提案生成
|
|
445
|
+
│ │ ├── status.ts # 工件状态 + 任务进度 + --json
|
|
446
|
+
│ │ ├── apply.ts # SDD 引擎驱动执行 + --parallel
|
|
447
|
+
│ │ ├── verify.ts # 5 维验证(规范/设计/任务/测试/质量)
|
|
448
|
+
│ │ ├── archive.ts # 委托 ArchiveEngine 事务性归档
|
|
449
|
+
│ │ └── workflow/ # 工作流编排引擎
|
|
450
|
+
│ └── core/
|
|
451
|
+
│ ├── artifact-graph/ # 工件图 DAG + 拓扑排序 + 三层解析
|
|
452
|
+
│ ├── sdd-engine/ # SDD 控制器 + TDD + 审查循环 + 账本 + 并行分发
|
|
453
|
+
│ ├── archive/ # Delta Spec 结构化合并(P1-5)
|
|
454
|
+
│ ├── config/ # Zod 配置验证 + Context/Rules 注入(P1-7)
|
|
455
|
+
│ ├── init/ # AI 工具检测 + 模板哈希(P1-10)
|
|
456
|
+
│ ├── migration/ # 版本迁移工具
|
|
457
|
+
│ ├── parsers/ # tasks/specs/proposal 解析器
|
|
458
|
+
│ ├── store/ # 变更存储管理
|
|
459
|
+
│ ├── templates/ # 模板引擎 + AI 指令生成
|
|
460
|
+
│ ├── validation/ # Schema 验证 + 依赖环检测
|
|
461
|
+
│ ├── hooks/ # Hook 自动上下文注入(P2-11)
|
|
462
|
+
│ ├── memory/ # 跨会话记忆系统(P2-12)
|
|
463
|
+
│ ├── channel/ # Channel 多代理协作(P2-13)
|
|
464
|
+
│ ├── workflow-state.ts # 工作流状态标签(P2-14)
|
|
465
|
+
│ └── command-generation/ # 22 种 AI 工具适配器(P1-9)
|
|
466
|
+
├── schemas/ # 3 套工作流 Schema + 模板
|
|
467
|
+
├── skills/ # 31 个技能(SKILL.md)
|
|
468
|
+
├── agents/ # 8 个 Agent 定义
|
|
469
|
+
├── scripts/ # 辅助脚本(task-brief/review-package/sdd-workspace)
|
|
470
|
+
├── test/ # 860 个测试用例
|
|
471
|
+
└── docs/ # 使用指南
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
## 开发
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
# 安装依赖
|
|
478
|
+
pnpm install
|
|
479
|
+
|
|
480
|
+
# 开发模式(watch)
|
|
481
|
+
pnpm dev
|
|
482
|
+
|
|
483
|
+
# 构建
|
|
484
|
+
pnpm build
|
|
485
|
+
|
|
486
|
+
# 运行测试
|
|
487
|
+
pnpm test
|
|
488
|
+
|
|
489
|
+
# 代码检查
|
|
490
|
+
pnpm lint
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
## 技术栈
|
|
494
|
+
|
|
495
|
+
| 层 | 技术 |
|
|
496
|
+
|---|---|
|
|
497
|
+
| 语言 | TypeScript (ESM, strict) |
|
|
498
|
+
| CLI | Commander.js |
|
|
499
|
+
| 运行时验证 | Zod |
|
|
500
|
+
| 配置解析 | yaml |
|
|
501
|
+
| 终端 | chalk, ora |
|
|
502
|
+
| 测试 | Vitest (860 tests) |
|
|
503
|
+
| 包管理 | pnpm |
|
|
504
|
+
|
|
505
|
+
## 版本历史
|
|
506
|
+
|
|
507
|
+
### v0.2.0 (2026-08-14)
|
|
508
|
+
|
|
509
|
+
**P0 核心修复(4 项)**:
|
|
510
|
+
- ✅ 模型配置从硬编码改为可配置
|
|
511
|
+
- ✅ 集成并行分发器到 CLI (`--parallel`)
|
|
512
|
+
- ✅ 扩展测试框架支持(自动检测)
|
|
513
|
+
- ✅ 三层 Schema 解析(项目 → 用户 → 包内置)
|
|
514
|
+
|
|
515
|
+
**P1 高价值特性(6 项)**:
|
|
516
|
+
- ✅ Delta Spec 结构化合并算法(ADDED/MODIFIED/REMOVED/RENAMED)
|
|
517
|
+
- ✅ Agent Contract — `--json` 输出支持
|
|
518
|
+
- ✅ Context & Rules 注入系统
|
|
519
|
+
- ✅ 交互式 Explore 模式
|
|
520
|
+
- ✅ **22 种** AI 工具适配器(原 6 种,新增 8 种)
|
|
521
|
+
- ✅ 模板哈希增量更新
|
|
522
|
+
|
|
523
|
+
**P2 差异化创新(5 项)**:
|
|
524
|
+
- ✅ Hook 自动上下文注入(4-hook 管道:SessionStart/UserPromptSubmit/PreToolUse/PreToolCall/PostToolCall)
|
|
525
|
+
- ✅ 跨会话记忆系统(事件源 + 关键词索引 + SQLite/JSON 适配器)
|
|
526
|
+
- ✅ Channel 多代理协作(Supervisor 模式)
|
|
527
|
+
- ✅ 工作流状态标签 `[workflow-state:xxx]`
|
|
528
|
+
- ✅ Core SDK 子路径导出(10 个模块)
|
|
529
|
+
|
|
530
|
+
**第二轮优化(11 项)**:
|
|
531
|
+
- ✅ 四模块测试覆盖(Memory/Channel/Hook/WorkflowState)
|
|
532
|
+
- ✅ Delta Spec 四项增强(场景丢失守卫/能力退休/未计入内容检测/代码围栏掩码)
|
|
533
|
+
- ✅ 合理化防御体系扩展(11+ 行防御表 + 13 红旗 + 压力测试)
|
|
534
|
+
- ✅ AI 适配器扩展到 22 种(新增 GitHub Copilot Workspace/Roo Code/Auggie/Bob/Crush/Devin/Junie/Qoder)
|
|
535
|
+
- ✅ Hook 系统完善(PreToolCall/PostToolCall 实现)
|
|
536
|
+
- ✅ Hook + WorkflowState 深度集成(阶段转换钩子/状态恢复)
|
|
537
|
+
- ✅ 技能编写元技能(meta-create-skill)
|
|
538
|
+
- ✅ 版本迁移系统(迁移清单 + 自动备份)
|
|
539
|
+
- ✅ Memory 平台适配器扩展(SQLite + 分片 JSON)
|
|
540
|
+
- ✅ Memory 适配器性能优化(预编译语句/增量更新/原子写入)
|
|
541
|
+
- ✅ 预存缺陷修复(714 → 860 测试用例)
|
|
542
|
+
|
|
543
|
+
**测试覆盖**:
|
|
544
|
+
- **860 个测试用例**(原 422 个,增长 104%)
|
|
545
|
+
- **37 个测试文件**
|
|
546
|
+
- 新增测试:Memory 系统、Channel 运行时、Hook 系统、WorkflowState、Delta Spec 增强、AI 适配器扩展、迁移系统
|
|
547
|
+
|
|
548
|
+
### v0.1.0
|
|
549
|
+
|
|
550
|
+
- 初始版本
|
|
551
|
+
- OpenSpec 工件图引擎 + Superpowers SDD 执行引擎
|
|
552
|
+
- 30 个技能 + 8 个 Agent
|
|
553
|
+
- 6 种 AI 工具适配器
|
|
554
|
+
|
|
555
|
+
## License
|
|
556
|
+
|
|
557
|
+
MIT
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# SDD Controller Agent
|
|
2
|
+
|
|
3
|
+
## 职责
|
|
4
|
+
子代理驱动开发的控制器。协调实现者、审查者、修复循环。
|
|
5
|
+
|
|
6
|
+
## 核心原则
|
|
7
|
+
1. **不自己修复代码** — 保持上下文干净用于协调
|
|
8
|
+
2. **所有产物通过文件传递** — 不占用上下文窗口
|
|
9
|
+
3. **信任账本而非自己的记忆** — 压缩后账本是唯一真相
|
|
10
|
+
|
|
11
|
+
## 工作流
|
|
12
|
+
|
|
13
|
+
### 初始化
|
|
14
|
+
1. 验证工作区隔离
|
|
15
|
+
2. 加载/创建账本
|
|
16
|
+
3. 读取计划文件
|
|
17
|
+
4. 创建 todo 列表
|
|
18
|
+
5. 扫描计划冲突
|
|
19
|
+
|
|
20
|
+
### 任务循环
|
|
21
|
+
对每个任务:
|
|
22
|
+
1. 提取任务简报
|
|
23
|
+
2. 分发实现者子代理
|
|
24
|
+
3. 处理报告(DONE/BLOCKED/NEEDS_CONTEXT)
|
|
25
|
+
4. 生成审查包
|
|
26
|
+
5. 分发审查者子代理
|
|
27
|
+
6. 修复循环(≤5轮)
|
|
28
|
+
7. 记录到账本
|
|
29
|
+
|
|
30
|
+
### 最终审查
|
|
31
|
+
1. 生成全分支审查包
|
|
32
|
+
2. 分发最终审查(最强模型)
|
|
33
|
+
3. 处理发现(一次修复分发 + 一次重新审查)
|
|
34
|
+
4. 裁定剩余发现
|
|
35
|
+
|
|
36
|
+
### 完成
|
|
37
|
+
1. 更新 tasks.md
|
|
38
|
+
2. 删除工作区
|
|
39
|
+
3. 触发 finish-branch
|
|
40
|
+
|
|
41
|
+
## 模型选择策略
|
|
42
|
+
| 角色 | 模型 |
|
|
43
|
+
|------|------|
|
|
44
|
+
| 机械实现 | cheap (haiku) |
|
|
45
|
+
| 集成实现 | standard (sonnet) |
|
|
46
|
+
| 架构设计 | capable (opus) |
|
|
47
|
+
| 审查 | 按 diff 复杂度 |
|
|
48
|
+
| 最终审查 | capable (总是) |
|
|
49
|
+
| 修复 R4-5 | 至少比卡住的高一级 |
|
|
50
|
+
|
|
51
|
+
## 上下文管理
|
|
52
|
+
- 分发 prompt 只含当前任务所需
|
|
53
|
+
- 不粘贴历史任务摘要
|
|
54
|
+
- 审查包是文件路径,不是内容
|
|
55
|
+
- 账本是恢复地图
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Java Codegen Agent
|
|
2
|
+
|
|
3
|
+
## 职责
|
|
4
|
+
5 步工作流:git fetch → DB 查 → 代码生成 → 文档更新 → 代码 push
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- 设计文档路径(`docs/design/<ticket>-plan.md`)
|
|
8
|
+
- 数据库表名
|
|
9
|
+
|
|
10
|
+
## 输出
|
|
11
|
+
- Entity 类
|
|
12
|
+
- Mapper 接口 + XML
|
|
13
|
+
- Service 接口 + 实现
|
|
14
|
+
- Controller 类
|
|
15
|
+
- 更新 JAVA.md / DATABASE.md
|
|
16
|
+
|
|
17
|
+
## 工作流
|
|
18
|
+
1. `git fetch` 获取最新代码
|
|
19
|
+
2. 查询数据库表结构
|
|
20
|
+
3. 按分层架构生成代码:
|
|
21
|
+
- Entity(对应表结构)
|
|
22
|
+
- Mapper(MyBatis 接口 + XML)
|
|
23
|
+
- Service(业务逻辑接口 + 实现)
|
|
24
|
+
- Controller(RESTful API)
|
|
25
|
+
4. 更新文档(JAVA.md, DATABASE.md)
|
|
26
|
+
5. 提交代码
|
|
27
|
+
|
|
28
|
+
## 代码规范
|
|
29
|
+
- 分层:Controller → Service → Mapper → DB
|
|
30
|
+
- 异常处理:统一异常类
|
|
31
|
+
- 日志:SLF4J + Logback
|
|
32
|
+
- 参数校验:JSR 303
|
|
33
|
+
- 分页:PageHelper
|
|
34
|
+
- 返回格式:统一 Result<T>
|
|
35
|
+
|
|
36
|
+
## 复用场景
|
|
37
|
+
- `/generate-code` — 主要调用者
|
|
38
|
+
- `/fix-bug` — 修复时复用
|
|
39
|
+
- `/requirement-to-design` — 落地时复用
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# UI Codegen Agent
|
|
2
|
+
|
|
3
|
+
## 职责
|
|
4
|
+
Vue2 + View Design UI 代码生成
|
|
5
|
+
|
|
6
|
+
## 输入
|
|
7
|
+
- 设计文档路径
|
|
8
|
+
- 后端 API 接口定义
|
|
9
|
+
|
|
10
|
+
## 输出
|
|
11
|
+
- `index.vue` — 页面组件
|
|
12
|
+
- `index.js` — API 接口定义
|
|
13
|
+
- 路由配置
|
|
14
|
+
|
|
15
|
+
## 工作流
|
|
16
|
+
1. 读取设计文档和 API 定义
|
|
17
|
+
2. 生成页面组件(遵循组件库规范)
|
|
18
|
+
3. 生成 API 接口文件
|
|
19
|
+
4. 生成路由配置
|
|
20
|
+
5. 自审(检查组件引用、API 调用、样式一致性)
|
|
21
|
+
|
|
22
|
+
## 代码规范
|
|
23
|
+
- 框架:Vue 2.x
|
|
24
|
+
- UI 库:View Design (iView)
|
|
25
|
+
- 状态管理:Vuex
|
|
26
|
+
- HTTP:Axios
|
|
27
|
+
- 组件命名:PascalCase
|
|
28
|
+
- 文件命名:kebab-case
|
|
29
|
+
|
|
30
|
+
## 复用场景
|
|
31
|
+
- `/generate-code` — 与 java-codegen-agent 并行
|
|
32
|
+
- `/fix-bug` — 修复时复用
|