soloforge 1.2.2 → 1.2.4

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 (156) hide show
  1. package/README.md +229 -28
  2. package/dist/adapters/claude_code/tools.d.ts.map +1 -1
  3. package/dist/adapters/claude_code/tools.js +319 -5
  4. package/dist/adapters/claude_code/tools.js.map +1 -1
  5. package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
  6. package/dist/adapters/shared/workflow_template.js +26 -3
  7. package/dist/adapters/shared/workflow_template.js.map +1 -1
  8. package/dist/bin/soloforge.js +169 -13
  9. package/dist/bin/soloforge.js.map +1 -1
  10. package/dist/engine/audit_pool.d.ts +36 -0
  11. package/dist/engine/audit_pool.d.ts.map +1 -0
  12. package/dist/engine/audit_pool.js +83 -0
  13. package/dist/engine/audit_pool.js.map +1 -0
  14. package/dist/engine/audit_sampler.d.ts +15 -0
  15. package/dist/engine/audit_sampler.d.ts.map +1 -0
  16. package/dist/engine/audit_sampler.js +26 -0
  17. package/dist/engine/audit_sampler.js.map +1 -0
  18. package/dist/engine/capability_action_advisor.d.ts +24 -0
  19. package/dist/engine/capability_action_advisor.d.ts.map +1 -0
  20. package/dist/engine/capability_action_advisor.js +147 -0
  21. package/dist/engine/capability_action_advisor.js.map +1 -0
  22. package/dist/engine/capability_registry.d.ts +23 -1
  23. package/dist/engine/capability_registry.d.ts.map +1 -1
  24. package/dist/engine/capability_registry.js +511 -19
  25. package/dist/engine/capability_registry.js.map +1 -1
  26. package/dist/engine/capability_state_store.d.ts +50 -0
  27. package/dist/engine/capability_state_store.d.ts.map +1 -0
  28. package/dist/engine/capability_state_store.js +123 -0
  29. package/dist/engine/capability_state_store.js.map +1 -0
  30. package/dist/engine/cognitive_anchor.d.ts +59 -0
  31. package/dist/engine/cognitive_anchor.d.ts.map +1 -0
  32. package/dist/engine/cognitive_anchor.js +68 -0
  33. package/dist/engine/cognitive_anchor.js.map +1 -0
  34. package/dist/engine/conflict_gate.d.ts +36 -0
  35. package/dist/engine/conflict_gate.d.ts.map +1 -0
  36. package/dist/engine/conflict_gate.js +73 -0
  37. package/dist/engine/conflict_gate.js.map +1 -0
  38. package/dist/engine/decision_contract.d.ts +29 -0
  39. package/dist/engine/decision_contract.d.ts.map +1 -0
  40. package/dist/engine/decision_contract.js +41 -0
  41. package/dist/engine/decision_contract.js.map +1 -0
  42. package/dist/engine/delivery.d.ts.map +1 -1
  43. package/dist/engine/delivery.js +83 -0
  44. package/dist/engine/delivery.js.map +1 -1
  45. package/dist/engine/developer_sovereignty.d.ts +62 -0
  46. package/dist/engine/developer_sovereignty.d.ts.map +1 -0
  47. package/dist/engine/developer_sovereignty.js +134 -0
  48. package/dist/engine/developer_sovereignty.js.map +1 -0
  49. package/dist/engine/diff_ownership.d.ts +74 -0
  50. package/dist/engine/diff_ownership.d.ts.map +1 -0
  51. package/dist/engine/diff_ownership.js +143 -0
  52. package/dist/engine/diff_ownership.js.map +1 -0
  53. package/dist/engine/diff_ownership_store.d.ts +76 -0
  54. package/dist/engine/diff_ownership_store.d.ts.map +1 -0
  55. package/dist/engine/diff_ownership_store.js +264 -0
  56. package/dist/engine/diff_ownership_store.js.map +1 -0
  57. package/dist/engine/escape_report.d.ts +45 -0
  58. package/dist/engine/escape_report.d.ts.map +1 -0
  59. package/dist/engine/escape_report.js +97 -0
  60. package/dist/engine/escape_report.js.map +1 -0
  61. package/dist/engine/exploration.d.ts +54 -0
  62. package/dist/engine/exploration.d.ts.map +1 -1
  63. package/dist/engine/exploration.js +138 -0
  64. package/dist/engine/exploration.js.map +1 -1
  65. package/dist/engine/governance_report.d.ts +36 -0
  66. package/dist/engine/governance_report.d.ts.map +1 -0
  67. package/dist/engine/governance_report.js +79 -0
  68. package/dist/engine/governance_report.js.map +1 -0
  69. package/dist/engine/java_quality_guard.d.ts +52 -0
  70. package/dist/engine/java_quality_guard.d.ts.map +1 -0
  71. package/dist/engine/java_quality_guard.js +237 -0
  72. package/dist/engine/java_quality_guard.js.map +1 -0
  73. package/dist/engine/job_manager.d.ts +76 -0
  74. package/dist/engine/job_manager.d.ts.map +1 -0
  75. package/dist/engine/job_manager.js +225 -0
  76. package/dist/engine/job_manager.js.map +1 -0
  77. package/dist/engine/knowledge_sovereignty.d.ts +61 -0
  78. package/dist/engine/knowledge_sovereignty.d.ts.map +1 -0
  79. package/dist/engine/knowledge_sovereignty.js +190 -0
  80. package/dist/engine/knowledge_sovereignty.js.map +1 -0
  81. package/dist/engine/mutation_audit.d.ts +43 -0
  82. package/dist/engine/mutation_audit.d.ts.map +1 -0
  83. package/dist/engine/mutation_audit.js +118 -0
  84. package/dist/engine/mutation_audit.js.map +1 -0
  85. package/dist/engine/policy_drift_detector.d.ts +46 -0
  86. package/dist/engine/policy_drift_detector.d.ts.map +1 -0
  87. package/dist/engine/policy_drift_detector.js +181 -0
  88. package/dist/engine/policy_drift_detector.js.map +1 -0
  89. package/dist/engine/regression_matrix.d.ts +102 -0
  90. package/dist/engine/regression_matrix.d.ts.map +1 -0
  91. package/dist/engine/regression_matrix.js +380 -0
  92. package/dist/engine/regression_matrix.js.map +1 -0
  93. package/dist/engine/risk_sampler.d.ts +37 -0
  94. package/dist/engine/risk_sampler.d.ts.map +1 -0
  95. package/dist/engine/risk_sampler.js +69 -0
  96. package/dist/engine/risk_sampler.js.map +1 -0
  97. package/dist/engine/runtime_safety.d.ts +80 -0
  98. package/dist/engine/runtime_safety.d.ts.map +1 -0
  99. package/dist/engine/runtime_safety.js +195 -0
  100. package/dist/engine/runtime_safety.js.map +1 -0
  101. package/dist/engine/scope_lease.d.ts +45 -0
  102. package/dist/engine/scope_lease.d.ts.map +1 -0
  103. package/dist/engine/scope_lease.js +122 -0
  104. package/dist/engine/scope_lease.js.map +1 -0
  105. package/dist/engine/semantic_evidence.d.ts +23 -0
  106. package/dist/engine/semantic_evidence.d.ts.map +1 -0
  107. package/dist/engine/semantic_evidence.js +81 -0
  108. package/dist/engine/semantic_evidence.js.map +1 -0
  109. package/dist/engine/task_context.d.ts +16 -0
  110. package/dist/engine/task_context.d.ts.map +1 -1
  111. package/dist/engine/task_context.js +58 -0
  112. package/dist/engine/task_context.js.map +1 -1
  113. package/dist/engine/verifier.d.ts.map +1 -1
  114. package/dist/engine/verifier.js +22 -1
  115. package/dist/engine/verifier.js.map +1 -1
  116. package/dist/engine/workspace_resumer.d.ts +43 -0
  117. package/dist/engine/workspace_resumer.d.ts.map +1 -1
  118. package/dist/engine/workspace_resumer.js +119 -4
  119. package/dist/engine/workspace_resumer.js.map +1 -1
  120. package/dist/engine/zero_config_init.d.ts +87 -0
  121. package/dist/engine/zero_config_init.d.ts.map +1 -0
  122. package/dist/engine/zero_config_init.js +427 -0
  123. package/dist/engine/zero_config_init.js.map +1 -0
  124. package/dist/knowledge/index_manager.d.ts +19 -0
  125. package/dist/knowledge/index_manager.d.ts.map +1 -1
  126. package/dist/knowledge/index_manager.js +31 -0
  127. package/dist/knowledge/index_manager.js.map +1 -1
  128. package/dist/knowledge/writer.d.ts.map +1 -1
  129. package/dist/knowledge/writer.js +1 -0
  130. package/dist/knowledge/writer.js.map +1 -1
  131. package/dist/types.d.ts +61 -1
  132. package/dist/types.d.ts.map +1 -1
  133. package/package.json +2 -2
  134. package/templates/knowledge/patterns/core/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +47 -0
  135. package/templates/knowledge/patterns/core/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +46 -0
  136. package/templates/knowledge/patterns/core/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +46 -0
  137. package/templates/knowledge/patterns/core//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237.md +47 -0
  138. package/templates/knowledge/patterns/core//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +47 -0
  139. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/344/270/216/345/257/206/351/222/245/346/213/246/346/210/252.md +46 -0
  140. package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +47 -0
  141. package/templates/knowledge/patterns/core//345/206/262/347/252/201/351/227/250/347/246/201.md +47 -0
  142. package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +30 -11
  143. package/templates/knowledge/patterns/core//345/217/230/345/274/202/345/256/241/350/256/241.md +20 -0
  144. package/templates/knowledge/patterns/core//345/233/236/345/275/222/347/237/251/351/230/265.md +46 -0
  145. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +44 -0
  146. package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +46 -0
  147. package/templates/knowledge/patterns/core//345/271/266/345/217/221/351/224/201.md +29 -16
  148. package/templates/knowledge/patterns/core//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +20 -0
  149. package/templates/knowledge/patterns/core//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +45 -0
  150. package/templates/knowledge/patterns/core//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +48 -0
  151. package/templates/knowledge/patterns/core//346/265/201/345/274/217/345/277/203/350/267/263.md +20 -0
  152. package/templates/knowledge/patterns/core//347/237/245/350/257/206/344/270/273/346/235/203.md +20 -0
  153. package/templates/knowledge/patterns/core//350/257/255/344/271/211/350/257/201/346/215/256.md +47 -0
  154. package/templates/knowledge/patterns/core//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +50 -0
  155. package/templates/knowledge/patterns/core//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +47 -0
  156. package/templates/knowledge/patterns/core//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +46 -0
package/README.md CHANGED
@@ -2,35 +2,149 @@
2
2
 
3
3
  AI 驱动的开发工作流系统 — 一个人干五个人的活。
4
4
 
5
- SoloForge 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 服务器,为 AI 编程助手(Claude Code、Cursor、Trae)提供结构化的、知识驱动的开发工作流。它作为规则引擎和模板系统,通过知识模式、验证管线和自动化代码审查来保障工程质量。
5
+ SoloForge 是一个 [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 服务器,为 AI 编程助手(Claude Code、Codex App、Trae IDE)提供结构化的、知识驱动的开发工作流。它作为规则引擎和模板系统,通过知识模式、验证管线和自动化代码审查来保障工程质量。
6
6
 
7
- ## 快速开始
7
+ ## 最短成功路径
8
8
 
9
9
  ```bash
10
- # 全局安装
10
+ # 1. 全局安装(任意目录均可)
11
11
  npm install -g soloforge
12
12
 
13
- # 或直接使用(不安装)
14
- npx soloforge init
13
+ # 2. 进入项目根目录
14
+ cd /path/to/my-project
15
+
16
+ # 3. 预检:看看会生成什么(不写入文件)
17
+ soloforge init --auto --dry-run
18
+
19
+ # 4. 确认后正式初始化(自动探测项目结构)
20
+ soloforge init --auto
21
+
22
+ # 5. 重新打开 / 重载 AI 工具(让它加载新生成的配置)
23
+ # Claude Code → 退出后重新在项目目录启动 claude
24
+ # Trae IDE → 重新打开项目目录(需已开启项目级 MCP)
25
+ # Codex App → 重新打开项目目录
26
+
27
+ # 6. 验证是否生效
28
+ soloforge validate # 检查配置和知识文件
29
+ soloforge status # 查看当前项目状态
30
+ ```
31
+
32
+ 如果 `--auto` 置信度不够,用 `soloforge init --interactive` 手动配置。
33
+
34
+ ## 快速开始
35
+
36
+ ### 安装
37
+
38
+ ```bash
39
+ npm install -g soloforge # 全局安装,可在任意目录执行
40
+ ```
41
+
42
+ ### 初始化
15
43
 
16
- # 更新到最新版本
44
+ 所有 `soloforge` 命令默认在**当前目录**操作。`--project-path` 仅 `init` 和 `init --auto` 支持;`generate-*`、`validate`、`status` 需先 `cd` 到目标项目目录。
45
+
46
+ ```bash
47
+ # 推荐:先 dry-run 预检
48
+ soloforge init --auto --dry-run # 查看探测结果,不写入文件
49
+
50
+ # 正式初始化(在项目根目录执行,或加 --project-path)
51
+ soloforge init --auto # 自动探测项目结构,高置信度时写入
52
+ soloforge init --auto --project-path /path/to/proj # 不在项目目录时用 --project-path
53
+ soloforge init # 手动默认配置(Claude Code 适配器)
54
+ soloforge init --adapter trae # Trae IDE 适配器
55
+ soloforge init --adapter codex # Codex App 适配器
56
+ soloforge init --adapter all # 同时生成所有适配器配置
57
+
58
+ # 交互式配置(手动输入项目名称、技术栈等)
59
+ soloforge init --interactive
60
+
61
+ # 低置信度时的兜底
62
+ soloforge init --interactive # 手动补充配置
63
+ ```
64
+
65
+ ### 各适配器生成的文件
66
+
67
+ | 适配器 | 生成文件 | 说明 |
68
+ |--------|---------|------|
69
+ | Claude Code | `.claude/settings.json` | Hooks 配置(PreToolUse/PostToolUse) |
70
+ | | `CLAUDE.md` | 工作流规则文件 |
71
+ | | `.mcp.json` | MCP Server 配置(SoloForge + Playwright + Figma) |
72
+ | Trae IDE | `.trae/mcp.json` | MCP Server 配置 |
73
+ | | `.trae/rules/project_rules.md` | 项目规则文件 |
74
+ | Codex App | `.codex/config.toml` | MCP Server 配置(TOML 格式) |
75
+ | | `.codex/hooks.json` | Hooks 配置 |
76
+ | | `AGENTS.md` | 工作流规则文件 |
77
+ | 共通 | `.soloforge/config.yaml` | 项目配置(不覆盖已有) |
78
+ | | `.soloforge/knowledge/` | 知识模板(不覆盖已有) |
79
+ | | `.gitignore` 追加 | `.mcp.json` 和 `.soloforge/`(如缺失则追加) |
80
+
81
+ > **Cursor 说明**: Cursor 暂无内置适配器(无 `--adapter cursor`)。如需在 Cursor 中使用 SoloForge:
82
+ > 1. 先用 `soloforge init` 生成 `.mcp.json`
83
+ > 2. 从 `.mcp.json` 中复制 `soloforge` 这一项,粘贴到项目根目录的 `.cursor/mcp.json`
84
+ > 3. 将 `SOLOFORGE_PROJECT` 改为项目绝对路径
85
+ >
86
+ > 示例 `.cursor/mcp.json`(路径需替换为实际值):
87
+ > ```json
88
+ > {
89
+ > "mcpServers": {
90
+ > "soloforge": {
91
+ > "command": "node",
92
+ > "args": ["/usr/local/lib/node_modules/soloforge/dist/index.js"],
93
+ > "env": { "SOLOFORGE_PROJECT": "/absolute/path/to/my-project" }
94
+ > }
95
+ > }
96
+ > }
97
+ > ```
98
+ > 如需确认实际路径,运行 `npm root -g` 查找全局 node_modules 目录,拼接 `/soloforge/dist/index.js`。生成后重载 Cursor 窗口。
99
+
100
+ ### 初始化后的下一步
101
+
102
+ 1. **检查配置**: `soloforge validate` — 确认 config.yaml 和知识文件正确
103
+ 2. **重新打开 / 重载 AI 工具**: 退出并重新启动 Claude Code / Trae / Codex,让它加载新生成的配置文件
104
+ 3. **试一个小任务**: 让 AI "创建一个简单的 DTO",观察 SoloForge 工作流是否触发
105
+ 4. **查看状态**: `soloforge status` — 确认知识库已索引
106
+
107
+ ### 更新与重新生成
108
+
109
+ SoloForge 更新后,需要重新生成适配器配置以获取最新的 hooks 和规则:
110
+
111
+ ```bash
112
+ # 更新 SoloForge(任意目录均可)
17
113
  npm update -g soloforge
114
+
115
+ # 重新生成(在目标项目根目录执行,不会覆盖 config.yaml 和已有知识)
116
+ soloforge init # Claude Code: .claude/settings.json + CLAUDE.md
117
+ soloforge generate-hooks # 仅重新生成 .claude/settings.json hooks
118
+ soloforge generate-claude-md # 仅重新生成 CLAUDE.md
119
+ soloforge generate-trae # 仅重新生成 .trae/ 配置
120
+ soloforge generate-codex # 仅重新生成 .codex/ 配置 + AGENTS.md
121
+
122
+ # 重新生成后,重新打开 / 重载 AI 工具以加载更新
123
+
124
+ # 查看版本
125
+ soloforge version
18
126
  ```
19
127
 
20
- `init` 命令会生成项目配置(`.soloforge/config.yaml`)、初始化知识模板、并为你的 AI 工具生成适配配置。
128
+ ### 日常命令
129
+
130
+ ```bash
131
+ # 以下命令均在项目根目录执行
132
+ soloforge validate # 验证配置和知识文件
133
+ soloforge status # 查看当前项目状态
134
+ ```
21
135
 
22
136
  ## 工作原理
23
137
 
24
138
  SoloForge 以 MCP Server(stdio 传输)运行。AI 助手在开发过程中调用 SoloForge 工具:
25
139
 
26
140
  ```
27
- 开发者 → AI 助手 (Claude Code/Cursor) → SoloForge MCP Server
28
- ← 知识、规则、模板
141
+ 开发者 → AI 助手 (Claude Code / Trae / Codex) → SoloForge MCP Server
142
+ ← 知识、规则、模板
29
143
  ```
30
144
 
31
- SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供结构、规则和知识。
145
+ SoloForge 引擎不直接调用 LLM API,由宿主 AI 中转。所有智能来自宿主 AI,SoloForge 提供结构、规则和知识。
32
146
 
33
- ## MCP 工具(27 个)
147
+ ## MCP 工具
34
148
 
35
149
  ### 核心管线(Phase 1)
36
150
 
@@ -56,13 +170,15 @@ SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供
56
170
 
57
171
  | 工具 | 说明 |
58
172
  |------|------|
59
- | `sf_deliver` | 自动提交 → 推送 → PR 变更日志 |
173
+ | `sf_deliver` | 提交代码、生成变更日志;推送和 PR 取决于交付配置 ⚠️ |
60
174
  | `sf_coord_check` | 预测性冲突检测,跨仓库关联提示 |
61
175
  | `sf_team_status` | 活动流、工作负载可视化、过期分支告警 |
62
176
  | `sf_contract_check` | 检测接口契约的破坏性变更 |
63
177
  | `sf_onboard` | 引导式入职:项目概览 → 代码导览 → 首任务 |
64
178
 
65
- ### 自维护(仅 SoloForge 自身项目)
179
+ > **⚠️ `sf_deliver` 风险说明**: 默认行为是 `auto_commit=true, auto_push=false, auto_pr=false` — 即只执行 `git commit`,不推送、不创建 PR。推送和 PR 由交付配置(`delivery` 域知识中的 `auto_push` / `auto_pr`)或调用参数 `skip_push` / `skip_pr` 控制。SoloForge 不会自动调用此工具,必须由开发者或 AI 助手显式触发。建议首次使用前先执行 `sf_review` 确认变更内容,或在交付配置中保持 `auto_push: false` 以手动控制推送时机。
180
+
181
+ ### 知识维护
66
182
 
67
183
  | 工具 | 说明 |
68
184
  |------|------|
@@ -88,18 +204,27 @@ SoloForge **零 AI/LLM 依赖**。所有智能来自宿主 AI,SoloForge 提供
88
204
  | `sf_dependency_scan` | 扫描依赖漏洞,支持 npm/maven/gradle |
89
205
  | `sf_debt_report` | 技术债务聚合报告:分类、趋势、优先级 |
90
206
 
207
+ ### 治理闭环
208
+
209
+ | 工具 | 说明 |
210
+ |------|------|
211
+ | `sf_audit_sample` | 按风险加权抽样,critical 100% 抽中 |
212
+ | `sf_escape_report` | 记录逃逸/误伤/工具故障 |
213
+ | `sf_governance_report` | 汇总治理健康报告 |
214
+ | `sf_capability_update` | 人工确认后更新能力状态 |
215
+
91
216
  ## 知识体系
92
217
 
93
- SoloForge 内置 **108+ 知识模板**,覆盖 6 种类型:
218
+ SoloForge 内置知识模板(含全局模式),覆盖 6 种类型:
94
219
 
95
- | 类型 | 数量 | 用途 |
96
- |------|------|------|
97
- | `pattern` | 50 | 决策规则 + 验收标准 |
98
- | `procedure` | 24 | 操作流程 + 检查点 |
99
- | `domain` | 9 | 业务规则、约束条件、例外情况 |
100
- | `acceptance_template` | 19 | 质量门禁 + 自动化检查命令 |
101
- | `review_rule` | 6 | 正则驱动的代码审查规则 |
102
- | `pipeline_procedure` | — | CI/CD 流水线阶段定义 |
220
+ | 类型 | 用途 |
221
+ |------|------|
222
+ | `pattern` | 决策规则 + 验收标准 |
223
+ | `procedure` | 操作流程 + 检查点 |
224
+ | `domain` | 业务规则、约束条件、例外情况 |
225
+ | `acceptance_template` | 质量门禁 + 自动化检查命令 |
226
+ | `review_rule` | 正则驱动的代码审查规则 |
227
+ | `pipeline_procedure` | CI/CD 流水线阶段定义 |
103
228
 
104
229
  知识文件采用 Markdown + YAML frontmatter 格式:
105
230
 
@@ -163,18 +288,94 @@ scope:
163
288
  ```
164
289
  知识层 机制层 适配层
165
290
  +------------------+ +---------------------+ +------------------+
166
- | 108+ 知识模板 | | 分类器 | | Claude Code |
167
- | 6 种知识类型 | | 意图膨胀器 | | Cursor |
168
- | 产品 Profile | | 验证器 | | Trae |
291
+ | 知识模板 | | 分类器 | | Claude Code |
292
+ | 6 种知识类型 | | 意图膨胀器 | | Trae IDE |
293
+ | 产品 Profile | | 验证器 | | Codex App |
169
294
  | | | 代码审查器 | | CLI |
170
295
  | 项目专属知识 | | 任务规划器 | | |
171
296
  | | | 脚手架生成器 | | |
172
297
  | | | 自动交付 | | |
173
- | | | + 20+ 个引擎模块 | | |
298
+ | | | 契约治理内核 | | |
174
299
  +------------------+ +---------------------+ +------------------+
175
300
  ```
176
301
 
177
- ## 开发
302
+ ## 契约治理内核
303
+
304
+ SoloForge 的治理能力按四级状态管理,新增治理能力不伪装 hard block:
305
+
306
+ | 状态 | 含义 |
307
+ |------|------|
308
+ | `enforced` | 强制执行,阻断不合规操作 |
309
+ | `advisory` | 建议性告警,由开发者决策 |
310
+ | `experimental` | 实验性,需晋级计划才能升级 |
311
+ | `removed` | 已移除,不再生效 |
312
+
313
+ 治理闭环:任务完成入池 → 按风险加权抽样 → 逃逸记录 → 治理报告 → 人工确认后状态更新。所有状态变更必须经 `sf_capability_update` + 人工确认,不自动执行。
314
+
315
+ ## 常见问题 / 排错
316
+
317
+ ### `soloforge init` 报 "配置校验失败"
318
+
319
+ `--auto` 模式依赖指纹检测(pom.xml / package.json 等)。如果项目结构非标准,用 `--interactive` 手动配置。
320
+
321
+ ### `soloforge validate` 报知识文件错误
322
+
323
+ 知识模板随 SoloForge 版本更新。重新运行 `soloforge init` 不会覆盖已有知识,但可手动删除 `.soloforge/knowledge/` 后重新初始化。
324
+
325
+ ### AI 助手没有调用 SoloForge 工具
326
+
327
+ 确认适配器配置已生成:
328
+ - Claude Code: 检查 `.mcp.json` 是否存在且路径正确
329
+ - Trae IDE: 检查 `.trae/mcp.json` 是否存在,并确认 Trae 已开启项目级 MCP(beta flag)
330
+ - Codex App: 检查 `.codex/config.toml` 是否存在
331
+
332
+ ### `sf_deliver` 执行后想撤回
333
+
334
+ 默认只执行 `git commit`(不推送)。如果交付配置启用了 `auto_push`:
335
+ - 未推送时:`git reset HEAD~1` 撤销最近一次提交
336
+ - 已推送时:`git revert <hash>` 创建反向提交
337
+ - PR:在 Git 平台关闭
338
+
339
+ ### 指定项目路径 vs 当前目录
340
+
341
+ ```bash
342
+ # 方式 1: cd 到项目目录
343
+ cd /path/to/my-project
344
+ soloforge init
345
+
346
+ # 方式 2: --project-path(适用于脚本或非交互场景)
347
+ soloforge init --project-path /path/to/my-project
348
+ ```
349
+
350
+ ## 卸载 / 清理
351
+
352
+ ### 全局卸载
353
+
354
+ ```bash
355
+ npm uninstall -g soloforge # 任意目录均可
356
+ ```
357
+
358
+ `npm uninstall -g` 只移除 `soloforge` 命令本身,不会删除任何项目中的 `.soloforge/`、适配器配置或规则文件。
359
+
360
+ ### 项目内清理
361
+
362
+ 卸载后,以下文件/目录保留在项目中,按需手动删除:
363
+
364
+ | 文件 / 目录 | 适配器 | 备注 |
365
+ |------------|--------|------|
366
+ | `.soloforge/` | 共通 | 项目配置、知识模板、状态 |
367
+ | `.mcp.json` | Claude Code | MCP Server 配置 |
368
+ | `.claude/settings.json` | Claude Code | Hooks 配置 |
369
+ | `CLAUDE.md` | Claude Code | **可能有用户手写内容,删除前确认** |
370
+ | `.trae/` | Trae IDE | MCP 配置 + 规则文件 |
371
+ | `.codex/` | Codex App | MCP 配置 + Hooks |
372
+ | `AGENTS.md` | Codex App | **可能有用户手写内容,删除前确认** |
373
+
374
+ `.gitignore` 中由 SoloForge 自动追加的 `.mcp.json` 和 `.soloforge/` 条目也需手动移除。
375
+
376
+ ## 本仓库开发
377
+
378
+ 以下命令在 SoloForge 源码仓库根目录执行:
178
379
 
179
380
  ```bash
180
381
  # 安装依赖
@@ -183,7 +384,7 @@ npm install
183
384
  # 构建
184
385
  npm run build
185
386
 
186
- # 运行测试(447 个测试)
387
+ # 运行测试
187
388
  npm test
188
389
 
189
390
  # 类型检查
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA2BvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAIzD;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc;IACd,cAAc,EAAE,qBAAqB,CAAC;IACtC,eAAe;IACf,WAAW,EAAE,kBAAkB,CAAC;IAChC,yDAAyD;IACzD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAwHD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAygC1E"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude_code/tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA4BvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAYzD;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc;IACd,cAAc,EAAE,qBAAqB,CAAC;IACtC,eAAe;IACf,WAAW,EAAE,kBAAkB,CAAC;IAChC,yDAAyD;IACzD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AA0HD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAg4C1E"}