@mycodemap/mycodemap 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/CHANGELOG.md +164 -6
  2. package/README.md +407 -141
  3. package/dist/cli/commands/ci.d.ts +7 -1
  4. package/dist/cli/commands/ci.d.ts.map +1 -1
  5. package/dist/cli/commands/ci.js +38 -0
  6. package/dist/cli/commands/ci.js.map +1 -1
  7. package/dist/cli/commands/cycles.d.ts.map +1 -1
  8. package/dist/cli/commands/cycles.js +2 -0
  9. package/dist/cli/commands/cycles.js.map +1 -1
  10. package/dist/cli/commands/export.d.ts +6 -0
  11. package/dist/cli/commands/export.d.ts.map +1 -0
  12. package/dist/cli/commands/export.js +108 -0
  13. package/dist/cli/commands/export.js.map +1 -0
  14. package/dist/cli/commands/generate.d.ts.map +1 -1
  15. package/dist/cli/commands/generate.js +96 -0
  16. package/dist/cli/commands/generate.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +3 -1
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/commands/logs.d.ts +5 -0
  21. package/dist/cli/commands/logs.d.ts.map +1 -0
  22. package/dist/cli/commands/logs.js +189 -0
  23. package/dist/cli/commands/logs.js.map +1 -0
  24. package/dist/cli/commands/report.d.ts +12 -0
  25. package/dist/cli/commands/report.d.ts.map +1 -0
  26. package/dist/cli/commands/report.js +158 -0
  27. package/dist/cli/commands/report.js.map +1 -0
  28. package/dist/cli/commands/server.d.ts +9 -0
  29. package/dist/cli/commands/server.d.ts.map +1 -0
  30. package/dist/cli/commands/server.js +68 -0
  31. package/dist/cli/commands/server.js.map +1 -0
  32. package/dist/cli/commands/watch-foreground.d.ts.map +1 -1
  33. package/dist/cli/commands/watch-foreground.js +2 -0
  34. package/dist/cli/commands/watch-foreground.js.map +1 -1
  35. package/dist/cli/commands/watch.d.ts.map +1 -1
  36. package/dist/cli/commands/watch.js +2 -0
  37. package/dist/cli/commands/watch.js.map +1 -1
  38. package/dist/cli/first-run-guide.d.ts +23 -0
  39. package/dist/cli/first-run-guide.d.ts.map +1 -0
  40. package/dist/cli/first-run-guide.js +83 -0
  41. package/dist/cli/first-run-guide.js.map +1 -0
  42. package/dist/cli/index.js +85 -1
  43. package/dist/cli/index.js.map +1 -1
  44. package/dist/cli/platform-check.d.ts +21 -0
  45. package/dist/cli/platform-check.d.ts.map +1 -0
  46. package/dist/cli/platform-check.js +94 -0
  47. package/dist/cli/platform-check.js.map +1 -0
  48. package/dist/cli/tree-sitter-check.d.ts +35 -0
  49. package/dist/cli/tree-sitter-check.d.ts.map +1 -0
  50. package/dist/cli/tree-sitter-check.js +133 -0
  51. package/dist/cli/tree-sitter-check.js.map +1 -0
  52. package/dist/cli/utils/sanitize.d.ts +54 -0
  53. package/dist/cli/utils/sanitize.d.ts.map +1 -0
  54. package/dist/cli/utils/sanitize.js +131 -0
  55. package/dist/cli/utils/sanitize.js.map +1 -0
  56. package/dist/cli-new/commands/export.d.ts +15 -0
  57. package/dist/cli-new/commands/export.d.ts.map +1 -0
  58. package/dist/cli-new/commands/export.js +107 -0
  59. package/dist/cli-new/commands/export.js.map +1 -0
  60. package/dist/cli-new/commands/query.d.ts +14 -0
  61. package/dist/cli-new/commands/query.d.ts.map +1 -0
  62. package/dist/cli-new/commands/query.js +120 -0
  63. package/dist/cli-new/commands/query.js.map +1 -0
  64. package/dist/cli-new/commands/server.d.ts +13 -0
  65. package/dist/cli-new/commands/server.d.ts.map +1 -0
  66. package/dist/cli-new/commands/server.js +94 -0
  67. package/dist/cli-new/commands/server.js.map +1 -0
  68. package/dist/cli-new/index.d.ts +11 -0
  69. package/dist/cli-new/index.d.ts.map +1 -0
  70. package/dist/cli-new/index.js +63 -0
  71. package/dist/cli-new/index.js.map +1 -0
  72. package/dist/cli-new/types/index.d.ts +88 -0
  73. package/dist/cli-new/types/index.d.ts.map +1 -0
  74. package/dist/cli-new/types/index.js +7 -0
  75. package/dist/cli-new/types/index.js.map +1 -0
  76. package/dist/domain/entities/CodeGraph.d.ts +134 -0
  77. package/dist/domain/entities/CodeGraph.d.ts.map +1 -0
  78. package/dist/domain/entities/CodeGraph.js +316 -0
  79. package/dist/domain/entities/CodeGraph.js.map +1 -0
  80. package/dist/domain/entities/Dependency.d.ts +78 -0
  81. package/dist/domain/entities/Dependency.d.ts.map +1 -0
  82. package/dist/domain/entities/Dependency.js +132 -0
  83. package/dist/domain/entities/Dependency.js.map +1 -0
  84. package/dist/domain/entities/Module.d.ts +75 -0
  85. package/dist/domain/entities/Module.d.ts.map +1 -0
  86. package/dist/domain/entities/Module.js +151 -0
  87. package/dist/domain/entities/Module.js.map +1 -0
  88. package/dist/domain/entities/Project.d.ts +50 -0
  89. package/dist/domain/entities/Project.d.ts.map +1 -0
  90. package/dist/domain/entities/Project.js +99 -0
  91. package/dist/domain/entities/Project.js.map +1 -0
  92. package/dist/domain/entities/Symbol.d.ts +75 -0
  93. package/dist/domain/entities/Symbol.d.ts.map +1 -0
  94. package/dist/domain/entities/Symbol.js +130 -0
  95. package/dist/domain/entities/Symbol.js.map +1 -0
  96. package/dist/domain/events/DomainEvent.d.ts +76 -0
  97. package/dist/domain/events/DomainEvent.d.ts.map +1 -0
  98. package/dist/domain/events/DomainEvent.js +153 -0
  99. package/dist/domain/events/DomainEvent.js.map +1 -0
  100. package/dist/domain/index.d.ts +10 -0
  101. package/dist/domain/index.d.ts.map +1 -0
  102. package/dist/domain/index.js +18 -0
  103. package/dist/domain/index.js.map +1 -0
  104. package/dist/domain/repositories/CodeGraphRepository.d.ts +58 -0
  105. package/dist/domain/repositories/CodeGraphRepository.d.ts.map +1 -0
  106. package/dist/domain/repositories/CodeGraphRepository.js +37 -0
  107. package/dist/domain/repositories/CodeGraphRepository.js.map +1 -0
  108. package/dist/domain/services/CodeGraphBuilder.d.ts +50 -0
  109. package/dist/domain/services/CodeGraphBuilder.d.ts.map +1 -0
  110. package/dist/domain/services/CodeGraphBuilder.js +121 -0
  111. package/dist/domain/services/CodeGraphBuilder.js.map +1 -0
  112. package/dist/infrastructure/parser/implementations/GoParser.d.ts +25 -0
  113. package/dist/infrastructure/parser/implementations/GoParser.d.ts.map +1 -0
  114. package/dist/infrastructure/parser/implementations/GoParser.js +158 -0
  115. package/dist/infrastructure/parser/implementations/GoParser.js.map +1 -0
  116. package/dist/infrastructure/parser/implementations/PythonParser.d.ts +30 -0
  117. package/dist/infrastructure/parser/implementations/PythonParser.d.ts.map +1 -0
  118. package/dist/infrastructure/parser/implementations/PythonParser.js +201 -0
  119. package/dist/infrastructure/parser/implementations/PythonParser.js.map +1 -0
  120. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts +63 -0
  121. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts.map +1 -0
  122. package/dist/infrastructure/parser/implementations/TypeScriptParser.js +420 -0
  123. package/dist/infrastructure/parser/implementations/TypeScriptParser.js.map +1 -0
  124. package/dist/infrastructure/parser/index.d.ts +13 -0
  125. package/dist/infrastructure/parser/index.d.ts.map +1 -0
  126. package/dist/infrastructure/parser/index.js +32 -0
  127. package/dist/infrastructure/parser/index.js.map +1 -0
  128. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts +124 -0
  129. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts.map +1 -0
  130. package/dist/infrastructure/parser/interfaces/ParserBase.js +200 -0
  131. package/dist/infrastructure/parser/interfaces/ParserBase.js.map +1 -0
  132. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts +68 -0
  133. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts.map +1 -0
  134. package/dist/infrastructure/parser/registry/ParserRegistry.js +116 -0
  135. package/dist/infrastructure/parser/registry/ParserRegistry.js.map +1 -0
  136. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts +44 -0
  137. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts.map +1 -0
  138. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js +129 -0
  139. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js.map +1 -0
  140. package/dist/infrastructure/repositories/index.d.ts +3 -0
  141. package/dist/infrastructure/repositories/index.d.ts.map +1 -0
  142. package/dist/infrastructure/repositories/index.js +7 -0
  143. package/dist/infrastructure/repositories/index.js.map +1 -0
  144. package/dist/infrastructure/storage/StorageFactory.d.ts +53 -0
  145. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -0
  146. package/dist/infrastructure/storage/StorageFactory.js +150 -0
  147. package/dist/infrastructure/storage/StorageFactory.js.map +1 -0
  148. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts +52 -0
  149. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts.map +1 -0
  150. package/dist/infrastructure/storage/adapters/FileSystemStorage.js +315 -0
  151. package/dist/infrastructure/storage/adapters/FileSystemStorage.js.map +1 -0
  152. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts +52 -0
  153. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts.map +1 -0
  154. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js +235 -0
  155. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js.map +1 -0
  156. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts +37 -0
  157. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts.map +1 -0
  158. package/dist/infrastructure/storage/adapters/MemoryStorage.js +229 -0
  159. package/dist/infrastructure/storage/adapters/MemoryStorage.js.map +1 -0
  160. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +49 -0
  161. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  162. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +222 -0
  163. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  164. package/dist/infrastructure/storage/index.d.ts +6 -0
  165. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  166. package/dist/infrastructure/storage/index.js +13 -0
  167. package/dist/infrastructure/storage/index.js.map +1 -0
  168. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts +76 -0
  169. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts.map +1 -0
  170. package/dist/infrastructure/storage/interfaces/StorageBase.js +116 -0
  171. package/dist/infrastructure/storage/interfaces/StorageBase.js.map +1 -0
  172. package/dist/interface/config/index.d.ts +102 -0
  173. package/dist/interface/config/index.d.ts.map +1 -0
  174. package/dist/interface/config/index.js +7 -0
  175. package/dist/interface/config/index.js.map +1 -0
  176. package/dist/interface/types/index.d.ts +425 -0
  177. package/dist/interface/types/index.d.ts.map +1 -0
  178. package/dist/interface/types/index.js +8 -0
  179. package/dist/interface/types/index.js.map +1 -0
  180. package/dist/interface/types/parser.d.ts +103 -0
  181. package/dist/interface/types/parser.d.ts.map +1 -0
  182. package/dist/interface/types/parser.js +7 -0
  183. package/dist/interface/types/parser.js.map +1 -0
  184. package/dist/interface/types/storage.d.ts +98 -0
  185. package/dist/interface/types/storage.d.ts.map +1 -0
  186. package/dist/interface/types/storage.js +7 -0
  187. package/dist/interface/types/storage.js.map +1 -0
  188. package/dist/orchestrator/test-linker.js +1 -1
  189. package/dist/orchestrator/test-linker.js.map +1 -1
  190. package/dist/server/CodeMapServer.d.ts +51 -0
  191. package/dist/server/CodeMapServer.d.ts.map +1 -0
  192. package/dist/server/CodeMapServer.js +146 -0
  193. package/dist/server/CodeMapServer.js.map +1 -0
  194. package/dist/server/handlers/AnalysisHandler.d.ts +82 -0
  195. package/dist/server/handlers/AnalysisHandler.d.ts.map +1 -0
  196. package/dist/server/handlers/AnalysisHandler.js +196 -0
  197. package/dist/server/handlers/AnalysisHandler.js.map +1 -0
  198. package/dist/server/handlers/QueryHandler.d.ts +57 -0
  199. package/dist/server/handlers/QueryHandler.d.ts.map +1 -0
  200. package/dist/server/handlers/QueryHandler.js +260 -0
  201. package/dist/server/handlers/QueryHandler.js.map +1 -0
  202. package/dist/server/index.d.ts +7 -0
  203. package/dist/server/index.d.ts.map +1 -0
  204. package/dist/server/index.js +13 -0
  205. package/dist/server/index.js.map +1 -0
  206. package/dist/server/routes/api.d.ts +8 -0
  207. package/dist/server/routes/api.d.ts.map +1 -0
  208. package/dist/server/routes/api.js +372 -0
  209. package/dist/server/routes/api.js.map +1 -0
  210. package/dist/server/types/index.d.ts +171 -0
  211. package/dist/server/types/index.d.ts.map +1 -0
  212. package/dist/server/types/index.js +7 -0
  213. package/dist/server/types/index.js.map +1 -0
  214. package/dist/types/index.d.ts +6 -372
  215. package/dist/types/index.d.ts.map +1 -1
  216. package/dist/types/index.js +9 -3
  217. package/dist/types/index.js.map +1 -1
  218. package/docs/AI_ASSISTANT_SETUP.md +811 -0
  219. package/docs/PUBLISHING.md +162 -0
  220. package/docs/README.md +37 -0
  221. package/docs/SETUP_GUIDE.md +493 -0
  222. package/docs/ai-guide/COMMANDS.md +369 -0
  223. package/docs/ai-guide/INTEGRATION.md +513 -0
  224. package/docs/ai-guide/OUTPUT.md +465 -0
  225. package/docs/ai-guide/PATTERNS.md +409 -0
  226. package/docs/ai-guide/PROMPTS.md +414 -0
  227. package/docs/ai-guide/QUICKSTART.md +114 -0
  228. package/docs/ai-guide/README.md +66 -0
  229. package/docs/archive/AI_INTEGRATION_GUIDE_ARCHIVED.md +391 -0
  230. package/docs/archive/ARCHIVE.md +39 -0
  231. package/docs/archive/MYCLAUDE_GUIDE.md +305 -0
  232. package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +1699 -0
  233. package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +396 -0
  234. package/docs/archive/README.md +29 -0
  235. package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +320 -0
  236. package/docs/archive/TEST_SUMMARY.md +140 -0
  237. package/docs/archive/comprehensive_test_report.md +337 -0
  238. package/docs/archive/design-docs/CI_GATEWAY_DESIGN.md +790 -0
  239. package/docs/archive/design-docs/PUBLISH_NPM_DESIGN_FINAL.md +491 -0
  240. package/docs/archive/design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md +558 -0
  241. package/docs/archive/design-docs/REFACTOR_CONFIDENCE_DESIGN.md +250 -0
  242. package/docs/archive/design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md +791 -0
  243. package/docs/archive/design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md +1071 -0
  244. package/docs/archive/design-docs/REFACTOR_RESULT_FUSION_DESIGN.md +321 -0
  245. package/docs/archive/design-docs/REFACTOR_TEST_LINKER_DESIGN.md +317 -0
  246. package/docs/archive/myclaude.md +1084 -0
  247. package/docs/archive/plans/2026-03-14-go-language-support-design.md +92 -0
  248. package/docs/archive/product-specs/REFACTOR_REQUIREMENTS.md +976 -0
  249. package/docs/archive/scenario-2-deps-analysis.md +353 -0
  250. package/docs/archive/test-report-symbol-search.md +384 -0
  251. package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
  252. package/docs/archive/test_report_scenario5.md +615 -0
  253. package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
  254. package/docs/design-docs/README.md +26 -0
  255. package/docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md +524 -0
  256. package/docs/exec-plans/README.md +29 -0
  257. package/docs/exec-plans/active/.gitkeep +0 -0
  258. package/docs/exec-plans/completed/.gitkeep +0 -0
  259. package/docs/exec-plans/completed/2026-03-03-deps-path-extension-fix.md +186 -0
  260. package/docs/exec-plans/completed/2026-03-03-post-task-plan.md +135 -0
  261. package/docs/exec-plans/completed/harness-engineering-rollout.md +184 -0
  262. package/docs/exec-plans/tech-debt/.gitkeep +0 -0
  263. package/docs/exec-plans/tech-debt/2026-03-15-lint-guardrail-gap.md +30 -0
  264. package/docs/generated/README.md +19 -0
  265. package/docs/product-specs/MVP3-ARCHITECTURE-COMPARISON.md +504 -0
  266. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-PRD.md +322 -0
  267. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md +1374 -0
  268. package/docs/product-specs/README.md +22 -0
  269. package/docs/references/README.md +15 -0
  270. package/docs/references/tmp.md +527 -0
  271. package/docs/rules/README.md +16 -0
  272. package/docs/rules/architecture-guardrails.md +349 -0
  273. package/docs/rules/code-quality-redlines.md +321 -0
  274. package/docs/rules/deployment.md +23 -0
  275. package/docs/rules/engineering-with-codex-openai.md +202 -0
  276. package/docs/rules/testing.md +73 -0
  277. package/docs/rules/validation.md +39 -0
  278. package/examples/README.md +61 -0
  279. package/examples/claude/codemap-skill.md +94 -0
  280. package/examples/codex/codemap-agent.md +66 -0
  281. package/examples/copilot/copilot-instructions.md +24 -0
  282. package/examples/kimi/codemap-skill.md +92 -0
  283. package/package.json +22 -7
@@ -0,0 +1,976 @@
1
+ # CodeMap 编排层重构设计方案 - 需求与用户场景
2
+
3
+ > 归档时间:2026-03-15
4
+ > 归档原因:历史需求/规格草稿,文档状态仍为“待实施”,已不适合作为当前契约。
5
+ > 当前依据:`ARCHITECTURE.md`、`docs/rules/*`、`src/cli/index.ts`
6
+ > 状态:仅供历史对照,不作为当前执行依据。
7
+
8
+
9
+ > 版本: 2.5
10
+ > 日期: 2026-02-28
11
+ > 状态: 待实施(含 CI 门禁设计)
12
+
13
+ ---
14
+
15
+ ## 修订说明 (v2.5)
16
+
17
+ ### 新增内容
18
+ - **CI 门禁护栏**:增加 Git Hook + GitHub Actions 双门禁
19
+ - **极简 Commit 格式**:`[TAG] scope: message` 格式,AI 可正则解析
20
+ - **文件头注释强制**:所有 TS 文件必须有 `[META]` 和 `[WHY]` 注释
21
+ - **AI 饲料生成器**:`codemap generate` 生成 `.mycodemap/ai-feed.txt`
22
+ - **工作流上下文持久化协议**:`Map/Set` 显式序列化,恢复时反序列化
23
+ - **机器输出契约**:`--output-mode machine --json` 必须为纯 JSON(无前缀日志)
24
+ - **风险评分单一真源**:以本文第 8.6 节公式为唯一实现依据
25
+
26
+ ### 设计原则更新
27
+ - **极简落地**:总代码量控制在 150 行以内
28
+ - **AI 优先**:纯文本结构化输出,无 emoji、无颜色
29
+ - **苏格拉底问题**:每个文件头回答"为什么存在"
30
+
31
+ ---
32
+
33
+ ## 1. 目标与约束
34
+
35
+ ### 1.1 核心目标
36
+
37
+ 增强 AI 大模型对项目代码的理解和查询能力,减少 token 消耗和搜索错误。
38
+
39
+ ### 1.2 关键指标
40
+
41
+ | 指标 | 目标值 | 测量方法 |
42
+ |------|--------|----------|
43
+ | Token 消耗降低 | >= 40% | 统计 analyze 输出 token 数 vs rg/grep 基准 |
44
+ | Hit@8 | >= 90% | Top-8 结果中包含用户期望结果的比率 |
45
+ | 默认输出规则 | Top-K=8、每条<=160 token | 代码约束 |
46
+ | 输出模式 | `--output-mode machine\|human` | CI/AI 链路使用 machine 模式 |
47
+ | 基准集 | 30 条查询 | 预先定义的典型查询 |
48
+ | 搜索范围 | TS/JS + Markdown | 配置约束 |
49
+ | Commit 格式 | `[TAG] scope: message` | 强制标签化 |
50
+ | 文件头注释 | `[META]`/`[WHY]` 必填 | CI 门禁 |
51
+ | AI 饲料 | `.mycodemap/ai-feed.txt` | 自动生成 |
52
+
53
+ ### 1.3 技术约束
54
+
55
+ - 入口:单 CLI 编排(优先快速落地)
56
+ - 集成方式:fork 子进程调用外部工具
57
+ - CI 门禁:本地 pre-commit + 服务端 GitHub Actions
58
+
59
+ ---
60
+
61
+ ## 8. 详细用户场景
62
+
63
+ ### 8.1 场景一:影响分析(带置信度和回退)
64
+
65
+ **场景**:用户想修改缓存相关代码,需要了解修改的影响范围
66
+
67
+ **用户输入(Claude Code 处理)**:
68
+ ```
69
+ 我需要修改 src/cache/ 目录下的缓存实现,会有什么影响?
70
+ ```
71
+
72
+ **Claude Code 翻译**:
73
+ ```bash
74
+ codemap analyze --intent impact --targets src/cache/ --scope transitive --include-tests --include-git-history
75
+ ```
76
+
77
+ **Codemap 执行流程**:
78
+
79
+ | 步骤 | 操作 | 代码执行 | 输出 |
80
+ |------|------|----------|------|
81
+ | 1 | 命令解析 | `src/cli/commands/analyze.ts` 解析参数 | `{ intent: 'impact', targets: ['src/cache/'], scope: 'transitive' }` |
82
+ | 2 | 意图路由 | `src/orchestrator/intent-router.ts` 路由 | `{ tool: 'codemap', secondary: 'ast-grep' }` |
83
+ | 3 | 并行执行 | `ToolOrchestrator.executeParallel()` | 同时调用 codemap 和 ast-grep |
84
+ | 3.1 | ast-grep 搜索 | `AstGrepAdapter.execute(['缓存'])` | `SearchResult[]` (3 个文件) |
85
+ | 3.2 | codemap 影响分析 | `CodemapAdapter.execute({ targets: [...] })` | `DependencyResult` (12 个直接依赖) |
86
+ | 4 | 结果融合 | `ResultFusion.fuse(resultsByTool, { topK: 8 })` | `UnifiedResult[]` |
87
+ | 5 | 置信度计算 | `calculateConfidence(results, 'impact')` | `{ score: 0.82, level: 'high' }` |
88
+ | 6 | 测试关联(可选) | `TestLinker.findRelatedTests(targets)` | `['src/cache/__tests__/lru-cache.test.ts']` |
89
+ | 7 | Git 分析(可选) | `GitAnalyzer.findRelatedCommits(['缓存'])` | `CommitInfo[]` (12 次提交) |
90
+ | 8 | 输出裁剪 | `formatOutput(results, { topK: 8 })` | Markdown 输出 |
91
+
92
+ **返回结果**:
93
+ ```
94
+ [IMPACT ANALYSIS]
95
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+
97
+ Target: src/cache/
98
+
99
+ [Related Files] (ast-grep):
100
+ * src/cache/lru-cache.ts (relevance: 95%)
101
+ * src/cache/file-hash-cache.ts (relevance: 92%)
102
+ * src/cache/parse-cache.ts (relevance: 88%)
103
+
104
+ [Risk Level]: HIGH
105
+ Direct dependencies: 12 modules
106
+ Transitive dependencies: 38 modules (73% of project)
107
+
108
+ [Danger Factors]:
109
+ * src/types/index.ts is depended on by 35 modules
110
+
111
+ [Git History]:
112
+ * 12 related commits
113
+ * 8 modifications in last 30 days (high frequency)
114
+
115
+ [Related Tests]:
116
+ * src/cache/__tests__/lru-cache.test.ts
117
+ * src/cache/__tests__/file-hash-cache.test.ts
118
+
119
+ [Suggestion]: Modify interface definitions first, maintain backward compatibility
120
+
121
+ Tools: codemap + ast-grep, Confidence: high (0.82)
122
+ ```
123
+
124
+ ### 8.2 场景二:置信度触发回退
125
+
126
+ **场景**:搜索一个罕见术语,ast-grep 返回结果很少
127
+
128
+ **用户输入**:
129
+ ```
130
+ 查找项目中 "foobar" 相关的代码
131
+ ```
132
+
133
+ **Claude Code 翻译**:
134
+ ```bash
135
+ codemap analyze --intent search --keywords foobar
136
+ ```
137
+
138
+ **Codemap 执行流程**:
139
+
140
+ | 步骤 | 操作 | 代码执行 | 输出 |
141
+ |------|------|----------|------|
142
+ | 1 | 命令解析 | `analyze.ts` 解析 | `{ intent: 'search', keywords: ['foobar'] }` |
143
+ | 2 | 意图路由 | `IntentRouter.route()` | `{ tool: 'ast-grep' }` |
144
+ | 3 | 主工具执行 | `AstGrepAdapter.execute(['foobar'])` | `SearchResult[]` (1 个文件, score: 0.3) |
145
+ | 4 | 置信度计算 | `calculateConfidence(results, 'search')` | `{ score: 0.28, level: 'low', reasons: ['仅找到 1 个结果'] }` |
146
+ | 5 | 触发回退 | `score < 0.3` → 启动内部兜底链路 | |
147
+ | 6 | 回退执行 | `InternalFallbackAdapter.execute(['foobar'])` | `SearchResult[]` (2 个文件) |
148
+ | 7 | 结果融合 | `mergeResults(ast-grep, internal-fallback)` | 去重后 2 个结果 |
149
+ | 8 | 重新计算置信度 | `calculateConfidence(merged, 'search')` | `{ score: 0.45, level: 'medium' }` |
150
+ | 9 | 输出 | `formatOutput()` | 带回退说明的结果 |
151
+
152
+ **返回结果**:
153
+ ```
154
+ [SEARCH RESULTS]
155
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
156
+
157
+ Keyword: "foobar"
158
+
159
+ 1. src/utils/helper.ts:45 (relevance: 30%)
160
+ // 原始结果来自 ast-grep
161
+
162
+ 2. src/config/default.ts:12 (relevance: 25%)
163
+ // 来自内部兜底链路
164
+
165
+ [Note]: Results limited, internal fallback enabled
166
+ Tools: ast-grep → internal-fallback, Confidence: medium (0.45)
167
+ ```
168
+
169
+ ### 8.3 场景三:代码搜索(高置信度场景)
170
+
171
+ **场景**:搜索常见关键词 "parser"
172
+
173
+ **用户输入**:
174
+ ```
175
+ 项目中 parser 是怎么实现的?
176
+ ```
177
+
178
+ **Claude Code 翻译**:
179
+ ```bash
180
+ codemap analyze --intent search --keywords parser --top-k 8
181
+ ```
182
+
183
+ **Codemap 执行流程**:
184
+
185
+ | 步骤 | 操作 | 代码执行 | 输出 |
186
+ |------|------|----------|------|
187
+ | 1 | 命令解析 | `analyze.ts` 解析 | `{ intent: 'search', keywords: ['parser'], topK: 8 }` |
188
+ | 2 | 意图路由 | `IntentRouter.route()` | `{ tool: 'ast-grep' }` |
189
+ | 3 | 执行 ast-grep | `AstGrepAdapter.execute(['parser'])` | `SearchResult[]` (15 个结果) |
190
+ | 4 | 置信度计算 | `calculateConfidence(results, 'search')` | `{ score: 0.85, level: 'high' }` |
191
+ | 5 | 结果归一化 | 转换为 UnifiedResult | 统一格式 |
192
+ | 6 | 排序裁剪 | `sort + slice(0, 8)` | Top-8 结果 |
193
+ | 7 | Token 裁剪 | `truncate(content, 160)` | 每条 ≤160 token |
194
+
195
+ **返回结果**:
196
+ ```
197
+ [SEARCH RESULTS]
198
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
199
+
200
+ Keyword: "parser"
201
+
202
+ 1. src/parser/index.ts:15 (relevance: 98%)
203
+ class SmartParser { ... }
204
+
205
+ 2. src/parser/index.ts:8 (relevance: 95%)
206
+ export function createParser(...)
207
+
208
+ 3. src/parser/implementations/fast-parser.ts:12 (relevance: 92%)
209
+ class FastParser implements IParser { ... }
210
+
211
+ ... (showing first 8 results)
212
+
213
+ Tool: ast-grep, Confidence: high (0.85) [OK]
214
+ ```
215
+
216
+ ### 8.4 场景四:文档搜索(多工具融合)
217
+
218
+ **场景**:搜索系统设计文档
219
+
220
+ **用户输入**:
221
+ ```
222
+ 有没有关于系统架构的设计文档?
223
+ ```
224
+
225
+ **Claude Code 翻译**:
226
+ ```bash
227
+ codemap analyze --intent documentation --keywords "系统架构"
228
+ ```
229
+
230
+ **Codemap 执行流程**:
231
+
232
+ | 步骤 | 操作 | 代码执行 | 输出 |
233
+ |------|------|----------|------|
234
+ | 1 | 命令解析 | `analyze.ts` 解析 | `{ intent: 'documentation', keywords: ['系统架构'] }` |
235
+ | 2 | 意图路由 | `IntentRouter.route()` | `{ tool: 'codemap' }` |
236
+ | 3 | 主工具执行 | `CodemapAdapter.queryDocs({ keywords: ['系统架构'] })` | `SearchResult[]` (3 个文档) |
237
+ | 4 | 置信度计算 | `calculateConfidence(results, 'documentation')` | `{ score: 0.65, level: 'medium' }` |
238
+ | 5 | 结果融合 | 转换为 UnifiedResult | 统一格式 |
239
+ | 6 | 排序裁剪 | 按 relevance 排序 | Top-8 |
240
+
241
+ **返回结果**:
242
+ ```
243
+ [DOCUMENTATION SEARCH]
244
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
245
+
246
+ Keyword: "系统架构"
247
+
248
+ 1. docs/architecture.md (relevance: 94%)
249
+ Fragment: CodeMap 采用分层架构...
250
+ Location: Line 15-20
251
+
252
+ 2. refer/codemap-architecture-design.md (relevance: 87%)
253
+ Fragment: 架构设计文档...
254
+ Location: Line 1-10
255
+
256
+ Tool: codemap, Confidence: medium (0.65)
257
+ ```
258
+
259
+ ### 8.5 场景五:功能实现辅助(参考现有实现)
260
+
261
+ **场景**:用户要实现一个新功能,需要参考项目中现有的类似实现
262
+
263
+ **用户输入**:
264
+ ```
265
+ 帮我实现一个编辑页面的功能
266
+ ```
267
+
268
+ **Claude Code 翻译**:
269
+ ```bash
270
+ codemap analyze --intent reference --keywords "编辑" --targets src/features/ --scope transitive --include-tests
271
+ ```
272
+
273
+ **Codemap 执行流程**:
274
+
275
+ | 步骤 | 操作 | 代码执行 | 输出 |
276
+ |------|------|----------|------|
277
+ | 1 | 命令解析 | `analyze.ts` 解析 | `{ intent: 'reference', keywords: ['编辑'], targets: ['src/features/'] }` |
278
+ | 2 | 意图路由 | `IntentRouter.route()` | `{ tools: ['ast-grep', 'codemap'], strategy: 'parallel' }` |
279
+ | 3 | 并行搜索 | `ToolOrchestrator.executeParallel()` | |
280
+ | 3.1 | ast-grep 搜索 | `AstGrepAdapter.execute(['编辑', 'edit', 'form'])` | 找到相关代码文件 |
281
+ | 3.2 | codemap 依赖分析 | `CodemapAdapter.analyzeDependencies(targets)` | 找到依赖的模块 |
282
+ | 4 | 结果融合 | `ResultFusion.fuse()` | 合并并排序 |
283
+ | 5 | 测试关联 | `TestLinker.findRelatedTests()` | 找到相关测试 |
284
+ | 6 | 置信度计算 | `calculateConfidence(results, 'reference')` | `{ score: 0.78, level: 'high' }` |
285
+ | 7 | 输出 | `formatOutput()` | 返回参考上下文 |
286
+
287
+ **返回结果**:
288
+ ```
289
+ [REFERENCE IMPLEMENTATION]
290
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
291
+
292
+ Target: 实现编辑页面功能
293
+ Keywords: 编辑, edit, form
294
+
295
+ [Code References]:
296
+ * src/features/user/components/UserEdit.tsx (relevance: 95%)
297
+ - 用户编辑表单组件,包含姓名、邮箱、角色字段
298
+ - 使用 React Hook Form + Zod 验证
299
+ - Dependencies: api/user.ts, types/user.ts
300
+
301
+ * src/features/product/components/ProductForm.tsx (relevance: 88%)
302
+ - 产品编辑表单,包含名称、描述、价格、分类
303
+ - 使用 Ant Design Form
304
+ - Dependencies: api/product.ts, types/product.ts
305
+
306
+ [Related Modules]:
307
+ * src/types/edit-form.ts (共享编辑表单类型)
308
+ * src/hooks/useEditForm.ts (编辑表单 Hook)
309
+ * src/components/FormField/ (通用表单字段组件)
310
+
311
+ [Related Tests]:
312
+ * src/features/user/__tests__/UserEdit.test.tsx
313
+ * src/features/product/__tests__/ProductForm.test.tsx
314
+
315
+ [Implementation Suggestions]:
316
+ 1. 参考 UserEdit.tsx 的结构
317
+ 2. 使用 useEditForm Hook 处理表单逻辑
318
+ 3. 参考 ProductForm.tsx 的验证规则
319
+ ```
320
+
321
+ **后续步骤**:Claude Code 根据返回的参考信息生成新的编辑页面代码。
322
+
323
+ **流程图**:
324
+ ```
325
+ 用户: "帮我实现编辑页面"
326
+
327
+
328
+ Claude Code 翻译
329
+
330
+
331
+ Codemap 分析 (reference intent)
332
+ ├── ast-grep: 搜索"编辑"/"edit"/"form"
333
+ ├── codemap: 依赖分析
334
+ └── test-linker: 关联测试
335
+
336
+
337
+ 返回参考上下文 (代码示例、类型、依赖)
338
+
339
+
340
+ Claude Code 根据参考生成代码
341
+ ```
342
+
343
+ ---
344
+
345
+ **场景说明**:`reference` 是一种特殊的 intent,它的目标不是搜索某个确定的代码,而是为"代码生成"提供上下文。Codemap 返回的是"有哪些可参考的实现"而不是"在哪里"。
346
+
347
+ ---
348
+
349
+ ### 8.6 场景六:CI 门禁护栏(新增 v2.4)
350
+
351
+ **场景**:开发者提交代码,触发 CI 门禁检查
352
+
353
+ **本地提交流程**:
354
+ ```bash
355
+ git commit -m "[FEATURE] git-analyzer: add risk scoring"
356
+ ```
357
+
358
+ **pre-commit Hook 执行**:
359
+
360
+ | 步骤 | 检查项 | 代码执行 | 结果 |
361
+ |------|--------|----------|------|
362
+ | 1 | 测试通过 | `npm test` | ✅ 所有测试通过 |
363
+ | 2 | Commit 格式 | `CommitValidator.validate()` | ✅ 符合 `[TAG]` 格式 |
364
+ | 3 | 文件头注释 | `FileHeaderScanner.validate()` | ✅ 所有修改文件有 `[META]`+`[WHY]` |
365
+ | 4 | 生成 AI 饲料 | `AIFeedGenerator.generate()` | ✅ 更新 `.mycodemap/ai-feed.txt` |
366
+
367
+ **提交成功** → 推送代码
368
+
369
+ ---
370
+
371
+ **服务端 CI 流程 (GitHub Actions)**:
372
+
373
+ | 步骤 | 检查项 | 执行命令 | 失败处理 |
374
+ |------|--------|----------|----------|
375
+ | 1 | 安装依赖 | `npm ci` | ❌ 阻止合并 |
376
+ | 2 | 运行测试 | `npm test` | ❌ 阻止合并 |
377
+ | 3 | Commit 格式检查 | `codemap ci check-commits` | ❌ 阻止合并 |
378
+ | 4 | 文件头注释检查 | `codemap ci check-headers` | ❌ 阻止合并 |
379
+ | 5 | 生成并验证 AI 饲料 | `codemap generate && git diff --exit-code` | ❌ 阻止合并 |
380
+ | 6 | 危险置信度评估 | `codemap ci assess-risk` | ❌ 高风险阻断,需补充缓解说明后重试 |
381
+
382
+ **CI 通过** → 允许合并
383
+
384
+ ---
385
+
386
+ **Commit 格式规范**:
387
+
388
+ ```
389
+ [TAG] scope: message
390
+
391
+ TAG 类型:
392
+ [BUGFIX] - 修复问题 (风险值: 0.9)
393
+ [FEATURE] - 新功能 (风险值: 0.7)
394
+ [REFACTOR] - 重构 (风险值: 0.8)
395
+ [CONFIG] - 配置变更 (风险值: 0.5)
396
+ [DOCS] - 文档 (风险值: 0.2)
397
+ [DELETE] - 删除代码 (风险值: 0.1)
398
+
399
+ 示例:
400
+ [BUGFIX] git-analyzer: fix risk score calculation
401
+ [FEATURE] orchestrator: add confidence scoring
402
+ [REFACTOR] parser: simplify token handling
403
+ ```
404
+
405
+ ---
406
+
407
+ **文件头注释规范**(所有 TS 文件强制):
408
+
409
+ ```typescript
410
+ // [META] since:2024-01 | owner:backend-team | stable:false
411
+ // [WHY] 处理JWT验证,因第三方Token刷新策略变更频繁不稳定
412
+ // [DEPS] src/db/connection.ts, src/types/auth.d.ts
413
+
414
+ // 实际代码从这里开始...
415
+ import { db } from "./db/connection";
416
+ ```
417
+
418
+ | 标签 | 必填 | 说明 |
419
+ |------|------|------|
420
+ | `[META]` | ✅ | `since:日期` \| `owner:团队` \| `stable:布尔` |
421
+ | `[WHY]` | ✅ | 回答"为什么存在"(苏格拉底问题)|
422
+ | `[DEPS]` | ❌ | 关键依赖路径 |
423
+
424
+ ---
425
+
426
+ **AI 饲料输出示例**(`.mycodemap/ai-feed.txt`):
427
+
428
+ ```text
429
+ # CODEMAP AI FEED
430
+ # Generated: 2026-02-28T19:30:00Z
431
+
432
+ FILE: src/orchestrator/git-analyzer.ts
433
+ GRAVITY: 15 | HEAT: 5/BUGFIX/2026-02-19
434
+ META: since=2024-03 stable=false why=分析Git历史,评估文件修改风险
435
+ IMPACT: 8 files depend on this
436
+ DEPS: src/types/index.ts, src/utils/exec.ts
437
+ ---
438
+ FILE: src/utils/date.ts
439
+ GRAVITY: 0 | HEAT: 0/NEW/never
440
+ META: since=2023-06 stable=true why=日期工具函数,项目早期沉淀
441
+ IMPACT: 0 files depend on this
442
+ DEPS: none
443
+ ---
444
+ ```
445
+
446
+ **AI 使用场景**:
447
+
448
+ > 用户: "我要改 auth 模块,有什么风险?"
449
+
450
+ Claude 读取 `.mycodemap/ai-feed.txt`:
451
+ - `jwt.ts`: GRAVITY=12, HEAT=8/BUGFIX, IMPACT=15 → **火山灰,高风险**
452
+ - `date.ts`: GRAVITY=0, HEAT=0, IMPACT=0 → **沉积岩,低风险**
453
+
454
+ **瞬间输出**:
455
+ ```
456
+ [WARNING] High risk file detected: src/auth/jwt.ts
457
+ - 8 modifications in last 30 days, last change: BUGFIX
458
+ - 15 files depend on this module
459
+ - Marked as unstable
460
+
461
+ [Suggestion] Run related tests before modifying:
462
+ npm test src/auth/
463
+ ```
464
+
465
+ ---
466
+
467
+ **危险置信度计算**(AI 饲料维度):
468
+
469
+ > **单一真源说明**:风险评分实现(`GitAnalyzer`、`ResultFusion`、`codemap ci assess-risk`)必须严格使用本节公式与阈值。
470
+
471
+ | 维度 | 来源 | 权重 | 说明 |
472
+ |------|------|------|------|
473
+ | **GRAVITY** | 依赖数 | 30% | `gravityNorm = min(gravity/20, 1)` |
474
+ | **HEAT.freq30d** | 30天修改次数 | 15% | `freqNorm = min(freq30d/10, 1)` |
475
+ | **HEAT.lastType** | 最后提交标签 | 10% | `tagWeight(lastType)` |
476
+ | **META.stable** | 是否稳定 | 15% | `stableBoost = stable ? 0 : 0.15` |
477
+ | **IMPACT** | 被依赖文件数 | 10% | `impactNorm = min(impact/50, 1)` |
478
+
479
+ **统一公式**:
480
+
481
+ ```text
482
+ score = gravityNorm * 0.30
483
+ + freqNorm * 0.15
484
+ + tagWeight(lastType) * 0.10
485
+ + stableBoost
486
+ + impactNorm * 0.10
487
+ score = clamp(score, 0, 1)
488
+ ```
489
+
490
+ **风险等级**:
491
+ - `high`: 分数 > 0.7 → 需要 commit body 说明风险缓解措施
492
+ - `medium`: 分数 > 0.4 → 警告提示
493
+ - `low`: 分数 ≤ 0.4 → 正常通过
494
+
495
+ > **注意**: 风险评分范围为 [0, 1],使用 `Math.min(Math.max(score, 0), 1)` 进行 clamp。
496
+
497
+ ---
498
+
499
+ ### 8.7 场景七:完整 E2E 开发流程(串联所有功能)
500
+
501
+ **场景**:开发者需要实现一个新的"文件重命名"功能,贯穿整个开发流程
502
+
503
+ **背景**:
504
+ - 项目是一个 TypeScript 代码分析工具
505
+ - 用户希望添加一个新功能:批量重命名文件并自动更新所有引用
506
+ - 这是一个中等复杂度的功能,涉及多个模块
507
+
508
+ ---
509
+
510
+ #### 第一阶段:需求理解与参考搜索
511
+
512
+ **用户输入(Claude Code 处理)**:
513
+ ```
514
+ 我需要在项目中实现一个"文件重命名"功能,可以批量重命名文件并自动更新所有引用。先帮我找找项目中有没有类似的实现可以参考。
515
+ ```
516
+
517
+ **Claude Code 翻译**:
518
+ ```bash
519
+ codemap analyze --intent reference --keywords "重命名" "rename" "file" --targets src/ --include-tests
520
+ ```
521
+
522
+ **Codemap 执行流程**:
523
+
524
+ | 步骤 | 操作 | 代码执行 | 输出 |
525
+ |------|------|----------|------|
526
+ | 1 | 命令解析 | `src/cli/commands/analyze.ts` 解析参数 | `{ intent: 'reference', keywords: ['重命名', 'rename', 'file'], targets: ['src/'], includeTests: true }` |
527
+ | 2 | 意图路由 | `src/orchestrator/intent-router.ts` 路由 | `{ tools: ['ast-grep', 'codemap'], strategy: 'parallel' }` |
528
+ | 3 | 并行执行 | `ToolOrchestrator.executeParallel()` | 同时调用多个工具 |
529
+ | 3.1 | ast-grep 搜索 | `AstGrepAdapter.execute(['重命名', 'rename', 'file', 'mv', 'move'])` | `SearchResult[]` (8 个相关文件) |
530
+ | 3.2 | codemap 依赖分析 | `CodemapAdapter.querySymbols({ keywords: ['rename', 'file'] })` | 符号查询结果 |
531
+ | 3.3 | 测试文件关联 | `TestLinker.searchTestFiles(['file', 'rename'])` | 潜在测试文件 |
532
+ | 4 | 结果融合 | `ResultFusion.fuse(resultsByTool, { topK: 8 })` | `UnifiedResult[]` |
533
+ | 5 | 置信度计算 | `calculateConfidence(results, 'reference')` | `{ score: 0.75, level: 'high' }` |
534
+ | 6 | 输出格式化 | `formatOutput(results, { mode: 'human' })` | Markdown 格式输出 |
535
+
536
+ **返回结果**:
537
+ ```
538
+ [REFERENCE IMPLEMENTATION]
539
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
540
+
541
+ Target: 文件重命名功能
542
+ Keywords: 重命名, rename, file, mv, move
543
+
544
+ [Code References]:
545
+ * src/watcher/file-watcher.ts (relevance: 92%)
546
+ - 文件监听器,监控文件变化事件
547
+ - Methods: onFileChange(), onFileCreate(), onFileDelete()
548
+ - DEPS: src/utils/fs.ts, src/types/events.ts
549
+
550
+ * src/cache/file-hash-cache.ts (relevance: 88%)
551
+ - 文件哈希缓存,管理文件路径映射
552
+ - Methods: get(), set(), invalidate(), rename()
553
+ - DEPS: src/utils/md5.ts, src/types/cache.ts
554
+
555
+ * src/parser/path-resolver.ts (relevance: 75%)
556
+ - 路径解析器,处理相对/绝对路径转换
557
+ - Methods: resolve(), relative(), rename()
558
+
559
+ [Similar Features]:
560
+ * src/cli/commands/rename.ts - 已废弃的重命名命令 (参考价值: 低)
561
+
562
+ [Test References]:
563
+ * src/watcher/__tests__/file-watcher.test.ts
564
+ * src/cache/__tests__/file-hash-cache.test.ts
565
+
566
+ [Implementation Suggestions]:
567
+ 1. 复用 file-watcher.ts 的文件事件机制
568
+ 2. 参考 file-hash-cache.ts 的 invalidate/rename 逻辑
569
+ 3. 使用 path-resolver.ts 处理路径转换
570
+ 4. 需要处理: 原子操作、回滚机制、引用更新
571
+ ```
572
+
573
+ ---
574
+
575
+ #### 第二阶段:影响分析
576
+
577
+ **用户输入**:
578
+ ```
579
+ 好的,我了解了现有实现。现在帮我分析一下实现这个功能会影响哪些模块?
580
+ ```
581
+
582
+ **Claude Code 翻译**:
583
+ ```bash
584
+ codemap analyze --intent impact --targets src/watcher/,src/cache/ --scope transitive --include-git-history
585
+ ```
586
+
587
+ **Codemap 执行流程**:
588
+
589
+ | 步骤 | 操作 | 代码执行 | 输出 |
590
+ |------|------|----------|------|
591
+ | 1 | 命令解析 | `analyze.ts` 解析 | `{ intent: 'impact', targets: ['src/watcher/', 'src/cache/'], scope: 'transitive' }` |
592
+ | 2 | 意图路由 | `IntentRouter.route()` | `{ tool: 'codemap', secondary: 'ast-grep' }` |
593
+ | 3 | codemap 影响分析 | `CodemapAdapter.analyzeImpact({ targets: [...], scope: 'transitive' })` | `DependencyResult` |
594
+ | 3.1 | 直接依赖 | `DependencyGraph.getDirectDependents(targets)` | 15 个直接依赖 |
595
+ | 3.2 | 传递依赖 | `DependencyGraph.getTransitiveDependents(targets)` | 42 个传递依赖 |
596
+ | 4 | ast-grep 补充搜索 | `AstGrepAdapter.execute(['依赖', 'import', 'require'])` | 相关引用 |
597
+ | 5 | 结果融合 | `ResultFusion.fuse()` | 合并结果 |
598
+ | 6 | 置信度计算 | `calculateConfidence(results, 'impact')` | `{ score: 0.88, level: 'high' }` |
599
+ | 7 | Git 历史分析 | `GitAnalyzer.analyzeRelatedCommits(targets)` | 近期变更记录 |
600
+ | 8 | 输出 | `formatOutput()` | 影响分析报告 |
601
+
602
+ **返回结果**:
603
+ ```
604
+ [IMPACT ANALYSIS]
605
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
606
+
607
+ Target: src/watcher/, src/cache/
608
+
609
+ [Impact Scope]:
610
+ Direct dependents: 15 modules
611
+ Transitive dependents: 42 modules (68% of project)
612
+
613
+ [High Risk Modules]:
614
+ * src/types/index.ts - 被 38 个模块依赖
615
+ * src/core/analyzer.ts - 被 24 个模块依赖
616
+ * src/utils/fs.ts - 被 18 个模块依赖
617
+
618
+ [Git History]:
619
+ * src/watcher/file-watcher.ts: 5 commits (30天内)
620
+ - [BUGFIX] watcher: fix race condition (2026-02-20)
621
+ - [FEATURE] watcher: add debounce support (2026-02-15)
622
+ * src/cache/file-hash-cache.ts: 3 commits (30天内)
623
+ - [REFACTOR] cache: optimize hash calculation (2026-02-10)
624
+
625
+ [Safety Suggestion]:
626
+ 1. 新功能应独立于现有 watcher/cache 核心逻辑
627
+ 2. 使用依赖注入,避免直接依赖高风险模块
628
+ 3. 优先修改稳定模块(如 fs.ts),避免 types/index.ts
629
+
630
+ Confidence: high (0.88)
631
+ ```
632
+
633
+ ---
634
+
635
+ #### 第三阶段:风险评估(AI 饲料)
636
+
637
+ **用户输入**:
638
+ ```
639
+ 这个功能风险评估怎么样?提交代码时需要注意什么?
640
+ ```
641
+
642
+ **Claude Code 翻译**:
643
+ ```bash
644
+ codemap generate --output .mycodemap/ai-feed.txt
645
+ codemap ci assess-risk --files src/features/rename/
646
+ ```
647
+
648
+ **Codemap 执行流程**:
649
+
650
+ | 步骤 | 操作 | 代码执行 | 输出 |
651
+ |------|------|----------|------|
652
+ | 1 | 生成 AI 饲料 | `AIFeedGenerator.generate()` | 更新 `.mycodemap/ai-feed.txt` |
653
+ | 2 | 风险文件识别 | `RiskAssessor.identifyHighRiskFiles()` | 高风险文件列表 |
654
+ | 3 | 风险评分计算 | `RiskAssessor.calculateRiskScore(files)` | 每文件风险分 |
655
+ | 4 | 风险聚合 | `RiskAssessor.aggregateRisk()` | 整体风险评估 |
656
+ | 5 | 缓解建议 | `RiskAssessor.getMitigationSuggestions()` | 风险缓解措施 |
657
+
658
+ **返回结果**:
659
+ ```
660
+ [RISK ASSESSMENT]
661
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
662
+
663
+ Feature: src/features/rename/
664
+ Calculated Risk: 0.52 (MEDIUM)
665
+
666
+ [Risk Breakdown]:
667
+ * New feature: GRAVITY=5 (new module, no dependents)
668
+ * Dependencies: 15 files, HEAT=avg(3.2), mostly STABLE=true
669
+ * Test coverage: 0% (new module)
670
+
671
+ [Risk Factors]:
672
+ ✓ Low: New module, no existing dependencies to break
673
+ ⚠ Medium: Modifies file-watcher.ts and file-hash-cache.ts
674
+ ⚠ Medium: No existing tests for rename functionality
675
+
676
+ [Mitigation Suggestions]:
677
+ 1. [REQUIRED] Add tests before commit: src/features/rename/__tests__/
678
+ 2. [REQUIRED] Add file header comments with [META] and [WHY]
679
+ 3. [SUGGESTED] Implement rollback mechanism for atomic operations
680
+ 4. [SUGGESTED] Add integration test with actual file operations
681
+ ```
682
+
683
+ ---
684
+
685
+ #### 第四阶段:代码实现与测试
686
+
687
+ **开发者编写代码**:
688
+
689
+ ```typescript
690
+ // src/features/rename/file-rename.ts
691
+ // [META] since:2026-02 | owner:feature-team | stable:false
692
+ // [WHY] 实现文件批量重命名功能,自动更新所有引用
693
+ // [DEPS] src/watcher/file-watcher.ts, src/cache/file-hash-cache.ts, src/parser/path-resolver.ts
694
+
695
+ import { FileWatcher } from "../../watcher/file-watcher";
696
+ import { FileHashCache } from "../../cache/file-hash-cache";
697
+ import { PathResolver } from "../../parser/path-resolver";
698
+
699
+ export class FileRename {
700
+ private watcher: FileWatcher;
701
+ private cache: FileHashCache;
702
+ private resolver: PathResolver;
703
+
704
+ // ... 实现代码
705
+ }
706
+ ```
707
+
708
+ **运行本地测试**:
709
+
710
+ | 步骤 | 操作 | 命令 | 结果 |
711
+ |------|------|------|------|
712
+ | 1 | 单元测试 | `npm test src/features/rename/` | ✅ 通过 |
713
+ | 2 | 集成测试 | `npm test -- --grep "rename"` | ✅ 通过 |
714
+ | 3 | 类型检查 | `npx tsc --noEmit` | ✅ 通过 |
715
+
716
+ ---
717
+
718
+ #### 第五阶段:提交代码(CI 门禁)
719
+
720
+ **用户输入**:
721
+ ```
722
+ 代码写完了,帮我提交并检查是否符合规范
723
+ ```
724
+
725
+ **Claude Code 翻译**:
726
+ ```bash
727
+ git add src && git commit -/features/rename/m "[FEATURE] file-rename: add batch rename with auto-ref-update"
728
+ ```
729
+
730
+ **pre-commit Hook 执行流程**:
731
+
732
+ | 步骤 | 检查项 | 代码执行 | 结果 |
733
+ |------|--------|----------|------|
734
+ | 1 | 测试通过 | `npm test` | ✅ 全部通过 |
735
+ | 2 | 类型检查 | `npx tsc --noEmit` | ✅ 通过 |
736
+ | 3 | Commit 格式 | `CommitValidator.validate('[FEATURE] file-rename: ...')` | ✅ 符合规范 |
737
+ | 4 | 文件头注释 | `FileHeaderScanner.validate('src/features/rename/')` | ✅ 有 [META] + [WHY] |
738
+ | 5 | 生成 AI 饲料 | `AIFeedGenerator.generate()` | ✅ 更新完成 |
739
+
740
+ **提交成功** → 推送代码
741
+
742
+ ---
743
+
744
+ #### 第六阶段:CI 流水线验证
745
+
746
+ **GitHub Actions 执行流程**:
747
+
748
+ | 步骤 | 检查项 | 执行命令 | 失败处理 |
749
+ |------|--------|----------|----------|
750
+ | 1 | 安装依赖 | `npm ci` | ❌ 阻止合并 |
751
+ | 2 | 运行测试 | `npm test` | ❌ 阻止合并 |
752
+ | 3 | 类型检查 | `npx tsc --noEmit` | ❌ 阻止合并 |
753
+ | 4 | Commit 格式 | `codemap ci check-commits` | ❌ 阻止合并 |
754
+ | 5 | 文件头注释 | `codemap ci check-headers` | ❌ 阻止合并 |
755
+ | 6 | AI 饲料验证 | `codemap generate && git diff --exit-code` | ❌ 阻止合并 |
756
+ | 7 | 风险评估 | `codemap ci assess-risk --threshold 0.7` | ❌ 高风险阻断 |
757
+
758
+ **CI 通过** → 允许合并
759
+
760
+ ---
761
+
762
+ #### 完整流程图
763
+
764
+ ```
765
+ 用户: "实现文件重命名功能"
766
+
767
+
768
+ ┌────────────────────────────────────────────────────────────┐
769
+ │ 阶段一:参考搜索 (intent=reference) │
770
+ │ ├── IntentRouter → parallel (ast-grep + codemap) │
771
+ │ ├── ResultFusion → confidence=0.75 │
772
+ │ └── 返回参考实现列表 │
773
+ └────────────────────────────────────────────────────────────┘
774
+
775
+
776
+ ┌────────────────────────────────────────────────────────────┐
777
+ │ 阶段二:影响分析 (intent=impact) │
778
+ │ ├── CodemapAdapter.analyzeImpact() │
779
+ │ ├── GitAnalyzer.analyzeRelatedCommits() │
780
+ │ ├── ResultFusion → confidence=0.88 │
781
+ │ └── 输出影响范围和高风险模块 │
782
+ └────────────────────────────────────────────────────────────┘
783
+
784
+
785
+ ┌────────────────────────────────────────────────────────────┐
786
+ │ 阶段三:风险评估 (CI 维度) │
787
+ │ ├── AIFeedGenerator.generate() │
788
+ │ ├── RiskAssessor.calculateRiskScore() │
789
+ │ └── 返回风险等级和缓解建议 │
790
+ └────────────────────────────────────────────────────────────┘
791
+
792
+
793
+ ┌────────────────────────────────────────────────────────────┐
794
+ │ 阶段四:代码实现 │
795
+ │ ├── 开发者编写 src/features/rename/ │
796
+ │ ├── 添加单元测试 │
797
+ │ └── 验证通过 │
798
+ └────────────────────────────────────────────────────────────┘
799
+
800
+
801
+ ┌────────────────────────────────────────────────────────────┐
802
+ │ 阶段五:提交 (pre-commit hook) │
803
+ │ ├── CommitValidator.validate() │
804
+ │ ├── FileHeaderScanner.validate() │
805
+ │ └── AIFeedGenerator.generate() │
806
+ └────────────────────────────────────────────────────────────┘
807
+
808
+
809
+ ┌────────────────────────────────────────────────────────────┐
810
+ │ 阶段六:CI 流水线 │
811
+ │ ├── npm test → npm run build │
812
+ │ ├── codemap ci check-commits │
813
+ │ ├── codemap ci check-headers │
814
+ │ └── codemap ci assess-risk │
815
+ └────────────────────────────────────────────────────────────┘
816
+
817
+
818
+ 合并成功 ✓
819
+ ```
820
+
821
+ ---
822
+
823
+ #### 涉及的组件调用汇总
824
+
825
+ | 组件 | 调用时机 | 场景 |
826
+ |------|----------|------|
827
+ | `IntentRouter` | 阶段一、二 | 路由到合适的工具 |
828
+ | `AstGrepAdapter` | 阶段一 | 搜索关键词代码 |
829
+ | `CodemapAdapter` | 阶段一、二 | 依赖分析和符号查询 |
830
+ | `ResultFusion` | 阶段一、二 | 融合多工具结果 |
831
+ | `ConfidenceCalculator` | 阶段一、二 | 计算置信度 |
832
+ | `GitAnalyzer` | 阶段二 | 分析 Git 历史 |
833
+ | `AIFeedGenerator` | 阶段三、五 | 生成 AI 饲料 |
834
+ | `RiskAssessor` | 阶段三、六 | 风险评估 |
835
+ | `CommitValidator` | 阶段五、六 | Commit 格式校验 |
836
+ | `FileHeaderScanner` | 阶段五、六 | 文件头注释校验 |
837
+
838
+ ---
839
+
840
+ ## 9. 工作流编排器设计 (v2.5 规划)
841
+
842
+ ### 9.1 问题分析
843
+
844
+ 当前场景设计存在阶段割裂问题:
845
+
846
+ | 问题 | 表现 | 影响 |
847
+ |------|------|------|
848
+ | 阶段连接不紧密 | 每个场景是独立单元测试 | 实际操作中容易迷失 |
849
+ | 上下文不传递 | 每个场景独立执行 | 重复分析,效率低 |
850
+ | 交付物不明确 | 没有检查点机制 | 无法验证阶段完成 |
851
+ | 中断无法恢复 | 无状态管理 | 长流程难以维护 |
852
+
853
+ ### 9.2 解决方案:工作流编排器
854
+
855
+ **核心机制**:
856
+
857
+ 1. **状态机**:每个阶段有 `pending` → `running` → `completed` → `verified` 状态转换
858
+ 2. **检查点**:每个阶段结束时必须产出"交付物"才能进入下一阶段
859
+ 3. **上下文持久化**:阶段间自动传递数据和产物到 `.mycodemap/workflow/`
860
+ 4. **交互式引导**:CLI 交互式推进各阶段
861
+
862
+ ### 9.3 阶段契约定义
863
+
864
+ | 阶段 | 入口条件 | 出口交付物 | 验证方法 |
865
+ |------|----------|------------|----------|
866
+ | 参考搜索 | 用户需求描述 | `reference-results.json` | 置信度 > 0.3 |
867
+ | 影响分析 | 参考结果 | `impact-report.json` | 风险文件已标注 |
868
+ | 风险评估 | 影响分析报告 | `risk-assessment.json` | 风险分 < 0.7 |
869
+ | 代码实现 | 风险评估 | PR/Commit 已创建 | CI 通过 |
870
+ | 提交验证 | Commit | `workflow-complete.json` | CI 全量通过 |
871
+
872
+ ### 9.4 工作流命令
873
+
874
+ ```bash
875
+ # 启动交互式工作流
876
+ codemap workflow start "实现文件重命名功能"
877
+
878
+ # 查看当前状态
879
+ codemap workflow status
880
+
881
+ # 可视化当前工作流
882
+ codemap workflow visualize
883
+
884
+ # 推进到下一阶段
885
+ codemap workflow proceed
886
+
887
+ # 恢复中断的工作流(默认恢复 active,可选指定 ID)
888
+ codemap workflow resume
889
+ codemap workflow resume <workflow-id>
890
+
891
+ # 手动创建检查点
892
+ codemap workflow checkpoint
893
+
894
+ # 模板管理与应用
895
+ codemap workflow template list --all
896
+ codemap workflow template apply bugfix
897
+ ```
898
+
899
+ ### 9.5 交互式引导示例
900
+
901
+ ```bash
902
+ $ codemap workflow start "实现文件重命名功能"
903
+
904
+ 🤖 CodeMap 工作流引导
905
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
906
+
907
+ [1/6] 📚 参考搜索
908
+ └─ 目标: 找到可参考的实现
909
+ └─ 命令: codemap analyze --intent reference --keywords ...
910
+ └─ 交付物: 参考代码列表
911
+ └─ 状态: ⏳ 待开始
912
+
913
+ > 选择操作: [R]开始 [S]跳过 [Q]退出
914
+ ```
915
+
916
+ ### 9.6 上下文持久化
917
+
918
+ ```json
919
+ // .mycodemap/workflow/{workflow-id}.json
920
+ {
921
+ "id": "wf-20260228-001",
922
+ "task": "实现文件重命名功能",
923
+ "currentPhase": "impact",
924
+ "phaseStatus": "completed",
925
+ "artifacts": {
926
+ "reference": {
927
+ "phase": "reference",
928
+ "results": [...],
929
+ "confidence": { "score": 0.75, "level": "high" },
930
+ "createdAt": "2026-02-28T10:00:00Z"
931
+ },
932
+ "impact": {
933
+ "phase": "impact",
934
+ "results": [...],
935
+ "confidence": { "score": 0.88, "level": "high" },
936
+ "createdAt": "2026-02-28T10:05:00Z"
937
+ }
938
+ },
939
+ "cachedResults": {
940
+ "reference": [...],
941
+ "impact": [...]
942
+ }
943
+ }
944
+ ```
945
+
946
+ ### 9.7 实施建议
947
+
948
+ **推荐组合:轻量状态机 + CLI 交互**
949
+
950
+ 1. **底层**:工作流上下文持久化(JSON 文件)
951
+ 2. **上层**:CLI 交互式引导(用户友好)
952
+ 3. **扩展**:置信度驱动的自动推进
953
+
954
+ **预期效果**:
955
+ - ✅ 自动推进,无需用户记忆
956
+ - ✅ 中断可恢复
957
+ - ✅ 每个阶段有明确交付物
958
+ - ✅ 进度可视化
959
+
960
+ ---
961
+
962
+ ## 附录
963
+
964
+ ### A. 相关文档
965
+
966
+ - 评估报告: `CODEMAP_ASSESSMENT_REPORT.md`
967
+ - 方案对比: `MULTI_TOOL_REFACTOR_OPTIONS.md`
968
+ - 系统架构与功能设计: `../design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md`
969
+ - Git 分析器设计: `../design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md` (含 AI 饲料生成器)
970
+ - CI 门禁设计: `../design-docs/CI_GATEWAY_DESIGN.md`
971
+ - 结果融合设计: `../design-docs/REFACTOR_RESULT_FUSION_DESIGN.md`
972
+ - 编排层设计: `../design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md` (含工作流编排器 v2.5 规划)
973
+
974
+ ### B. 参考资源
975
+
976
+ - ast-grep 官方文档: https://ast-grep.github.io/