@mycodemap/mycodemap 0.5.2-beta.1 → 2.0.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 (272) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +138 -854
  3. package/README.zh-CN.md +1096 -0
  4. package/dist/cli/commands/analyze-options.d.ts.map +1 -1
  5. package/dist/cli/commands/analyze-options.js +8 -0
  6. package/dist/cli/commands/analyze-options.js.map +1 -1
  7. package/dist/cli/commands/analyze.d.ts.map +1 -1
  8. package/dist/cli/commands/analyze.js +60 -41
  9. package/dist/cli/commands/analyze.js.map +1 -1
  10. package/dist/cli/commands/benchmark.d.ts +8 -0
  11. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  12. package/dist/cli/commands/benchmark.js +150 -0
  13. package/dist/cli/commands/benchmark.js.map +1 -0
  14. package/dist/cli/commands/deps.d.ts +2 -1
  15. package/dist/cli/commands/deps.d.ts.map +1 -1
  16. package/dist/cli/commands/deps.js +107 -78
  17. package/dist/cli/commands/deps.js.map +1 -1
  18. package/dist/cli/commands/doctor.d.ts +3 -0
  19. package/dist/cli/commands/doctor.d.ts.map +1 -0
  20. package/dist/cli/commands/doctor.js +34 -0
  21. package/dist/cli/commands/doctor.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +7 -2
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +22 -34
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/publish-status.d.ts +31 -0
  27. package/dist/cli/commands/publish-status.d.ts.map +1 -0
  28. package/dist/cli/commands/publish-status.js +101 -0
  29. package/dist/cli/commands/publish-status.js.map +1 -0
  30. package/dist/cli/commands/query.d.ts +1 -0
  31. package/dist/cli/commands/query.d.ts.map +1 -1
  32. package/dist/cli/commands/query.js +123 -140
  33. package/dist/cli/commands/query.js.map +1 -1
  34. package/dist/cli/commands/readiness-gate.d.ts +25 -0
  35. package/dist/cli/commands/readiness-gate.d.ts.map +1 -0
  36. package/dist/cli/commands/readiness-gate.js +197 -0
  37. package/dist/cli/commands/readiness-gate.js.map +1 -0
  38. package/dist/cli/commands/ship/checker.d.ts +4 -9
  39. package/dist/cli/commands/ship/checker.d.ts.map +1 -1
  40. package/dist/cli/commands/ship/checker.js +60 -22
  41. package/dist/cli/commands/ship/checker.js.map +1 -1
  42. package/dist/cli/commands/ship/monitor.d.ts +6 -1
  43. package/dist/cli/commands/ship/monitor.d.ts.map +1 -1
  44. package/dist/cli/commands/ship/monitor.js +223 -46
  45. package/dist/cli/commands/ship/monitor.js.map +1 -1
  46. package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
  47. package/dist/cli/commands/ship/pipeline.js +14 -5
  48. package/dist/cli/commands/ship/pipeline.js.map +1 -1
  49. package/dist/cli/commands/ship/rules/quality-rules.d.ts +12 -8
  50. package/dist/cli/commands/ship/rules/quality-rules.d.ts.map +1 -1
  51. package/dist/cli/commands/ship/rules/quality-rules.js +49 -34
  52. package/dist/cli/commands/ship/rules/quality-rules.js.map +1 -1
  53. package/dist/cli/config-loader.js +1 -1
  54. package/dist/cli/config-loader.js.map +1 -1
  55. package/dist/cli/doctor/check-agent.d.ts +3 -0
  56. package/dist/cli/doctor/check-agent.d.ts.map +1 -0
  57. package/dist/cli/doctor/check-agent.js +60 -0
  58. package/dist/cli/doctor/check-agent.js.map +1 -0
  59. package/dist/cli/doctor/check-ghost-commands.d.ts +3 -0
  60. package/dist/cli/doctor/check-ghost-commands.d.ts.map +1 -0
  61. package/dist/cli/doctor/check-ghost-commands.js +86 -0
  62. package/dist/cli/doctor/check-ghost-commands.js.map +1 -0
  63. package/dist/cli/doctor/check-native-deps.d.ts +3 -0
  64. package/dist/cli/doctor/check-native-deps.d.ts.map +1 -0
  65. package/dist/cli/doctor/check-native-deps.js +54 -0
  66. package/dist/cli/doctor/check-native-deps.js.map +1 -0
  67. package/dist/cli/doctor/check-workspace-drift.d.ts +3 -0
  68. package/dist/cli/doctor/check-workspace-drift.d.ts.map +1 -0
  69. package/dist/cli/doctor/check-workspace-drift.js +83 -0
  70. package/dist/cli/doctor/check-workspace-drift.js.map +1 -0
  71. package/dist/cli/doctor/formatter.d.ts +20 -0
  72. package/dist/cli/doctor/formatter.d.ts.map +1 -0
  73. package/dist/cli/doctor/formatter.js +91 -0
  74. package/dist/cli/doctor/formatter.js.map +1 -0
  75. package/dist/cli/doctor/index.d.ts +8 -0
  76. package/dist/cli/doctor/index.d.ts.map +1 -0
  77. package/dist/cli/doctor/index.js +9 -0
  78. package/dist/cli/doctor/index.js.map +1 -0
  79. package/dist/cli/doctor/orchestrator.d.ts +3 -0
  80. package/dist/cli/doctor/orchestrator.d.ts.map +1 -0
  81. package/dist/cli/doctor/orchestrator.js +37 -0
  82. package/dist/cli/doctor/orchestrator.js.map +1 -0
  83. package/dist/cli/doctor/types.d.ts +19 -0
  84. package/dist/cli/doctor/types.d.ts.map +1 -0
  85. package/dist/cli/doctor/types.js +4 -0
  86. package/dist/cli/doctor/types.js.map +1 -0
  87. package/dist/cli/first-run-guide.d.ts.map +1 -1
  88. package/dist/cli/first-run-guide.js +10 -12
  89. package/dist/cli/first-run-guide.js.map +1 -1
  90. package/dist/cli/index.js +80 -21
  91. package/dist/cli/index.js.map +1 -1
  92. package/dist/cli/init/hooks.d.ts +17 -0
  93. package/dist/cli/init/hooks.d.ts.map +1 -0
  94. package/dist/cli/init/hooks.js +220 -0
  95. package/dist/cli/init/hooks.js.map +1 -0
  96. package/dist/cli/init/receipt.d.ts +4 -0
  97. package/dist/cli/init/receipt.d.ts.map +1 -0
  98. package/dist/cli/init/receipt.js +117 -0
  99. package/dist/cli/init/receipt.js.map +1 -0
  100. package/dist/cli/init/reconciler.d.ts +44 -0
  101. package/dist/cli/init/reconciler.d.ts.map +1 -0
  102. package/dist/cli/init/reconciler.js +377 -0
  103. package/dist/cli/init/reconciler.js.map +1 -0
  104. package/dist/cli/init/rule-templates.d.ts +9 -0
  105. package/dist/cli/init/rule-templates.d.ts.map +1 -0
  106. package/dist/cli/init/rule-templates.js +105 -0
  107. package/dist/cli/init/rule-templates.js.map +1 -0
  108. package/dist/cli/init/rules.d.ts +13 -0
  109. package/dist/cli/init/rules.d.ts.map +1 -0
  110. package/dist/cli/init/rules.js +113 -0
  111. package/dist/cli/init/rules.js.map +1 -0
  112. package/dist/cli/interface-contract/commands/analyze.d.ts +3 -0
  113. package/dist/cli/interface-contract/commands/analyze.d.ts.map +1 -0
  114. package/dist/cli/interface-contract/commands/analyze.js +138 -0
  115. package/dist/cli/interface-contract/commands/analyze.js.map +1 -0
  116. package/dist/cli/interface-contract/commands/benchmark.d.ts +3 -0
  117. package/dist/cli/interface-contract/commands/benchmark.d.ts.map +1 -0
  118. package/dist/cli/interface-contract/commands/benchmark.js +107 -0
  119. package/dist/cli/interface-contract/commands/benchmark.js.map +1 -0
  120. package/dist/cli/interface-contract/commands/deps.d.ts +3 -0
  121. package/dist/cli/interface-contract/commands/deps.d.ts.map +1 -0
  122. package/dist/cli/interface-contract/commands/deps.js +129 -0
  123. package/dist/cli/interface-contract/commands/deps.js.map +1 -0
  124. package/dist/cli/interface-contract/commands/doctor.d.ts +3 -0
  125. package/dist/cli/interface-contract/commands/doctor.d.ts.map +1 -0
  126. package/dist/cli/interface-contract/commands/doctor.js +59 -0
  127. package/dist/cli/interface-contract/commands/doctor.js.map +1 -0
  128. package/dist/cli/interface-contract/commands/index.d.ts +9 -0
  129. package/dist/cli/interface-contract/commands/index.d.ts.map +1 -0
  130. package/dist/cli/interface-contract/commands/index.js +18 -0
  131. package/dist/cli/interface-contract/commands/index.js.map +1 -0
  132. package/dist/cli/interface-contract/commands/init.d.ts +3 -0
  133. package/dist/cli/interface-contract/commands/init.d.ts.map +1 -0
  134. package/dist/cli/interface-contract/commands/init.js +87 -0
  135. package/dist/cli/interface-contract/commands/init.js.map +1 -0
  136. package/dist/cli/interface-contract/commands/query.d.ts +3 -0
  137. package/dist/cli/interface-contract/commands/query.d.ts.map +1 -0
  138. package/dist/cli/interface-contract/commands/query.js +185 -0
  139. package/dist/cli/interface-contract/commands/query.js.map +1 -0
  140. package/dist/cli/interface-contract/index.d.ts +22 -0
  141. package/dist/cli/interface-contract/index.d.ts.map +1 -0
  142. package/dist/cli/interface-contract/index.js +41 -0
  143. package/dist/cli/interface-contract/index.js.map +1 -0
  144. package/dist/cli/interface-contract/schema.d.ts +30 -0
  145. package/dist/cli/interface-contract/schema.d.ts.map +1 -0
  146. package/dist/cli/interface-contract/schema.js +72 -0
  147. package/dist/cli/interface-contract/schema.js.map +1 -0
  148. package/dist/cli/interface-contract/types.d.ts +76 -0
  149. package/dist/cli/interface-contract/types.d.ts.map +1 -0
  150. package/dist/cli/interface-contract/types.js +4 -0
  151. package/dist/cli/interface-contract/types.js.map +1 -0
  152. package/dist/cli/output/apply-suggestion.d.ts +12 -0
  153. package/dist/cli/output/apply-suggestion.d.ts.map +1 -0
  154. package/dist/cli/output/apply-suggestion.js +29 -0
  155. package/dist/cli/output/apply-suggestion.js.map +1 -0
  156. package/dist/cli/output/error-codes.d.ts +22 -0
  157. package/dist/cli/output/error-codes.d.ts.map +1 -0
  158. package/dist/cli/output/error-codes.js +82 -0
  159. package/dist/cli/output/error-codes.js.map +1 -0
  160. package/dist/cli/output/errors.d.ts +14 -0
  161. package/dist/cli/output/errors.d.ts.map +1 -0
  162. package/dist/cli/output/errors.js +170 -0
  163. package/dist/cli/output/errors.js.map +1 -0
  164. package/dist/cli/output/index.d.ts +13 -0
  165. package/dist/cli/output/index.d.ts.map +1 -0
  166. package/dist/cli/output/index.js +11 -0
  167. package/dist/cli/output/index.js.map +1 -0
  168. package/dist/cli/output/mode.d.ts +12 -0
  169. package/dist/cli/output/mode.d.ts.map +1 -0
  170. package/dist/cli/output/mode.js +23 -0
  171. package/dist/cli/output/mode.js.map +1 -0
  172. package/dist/cli/output/progress.d.ts +9 -0
  173. package/dist/cli/output/progress.d.ts.map +1 -0
  174. package/dist/cli/output/progress.js +65 -0
  175. package/dist/cli/output/progress.js.map +1 -0
  176. package/dist/cli/output/render.d.ts +11 -0
  177. package/dist/cli/output/render.d.ts.map +1 -0
  178. package/dist/cli/output/render.js +18 -0
  179. package/dist/cli/output/render.js.map +1 -0
  180. package/dist/cli/output/types.d.ts +53 -0
  181. package/dist/cli/output/types.d.ts.map +1 -0
  182. package/dist/cli/output/types.js +14 -0
  183. package/dist/cli/output/types.js.map +1 -0
  184. package/dist/cli/output/wasm-fallback.d.ts +13 -0
  185. package/dist/cli/output/wasm-fallback.d.ts.map +1 -0
  186. package/dist/cli/output/wasm-fallback.js +92 -0
  187. package/dist/cli/output/wasm-fallback.js.map +1 -0
  188. package/dist/cli/paths.d.ts +4 -2
  189. package/dist/cli/paths.d.ts.map +1 -1
  190. package/dist/cli/paths.js +13 -5
  191. package/dist/cli/paths.js.map +1 -1
  192. package/dist/cli/tree-sitter-check.d.ts +6 -1
  193. package/dist/cli/tree-sitter-check.d.ts.map +1 -1
  194. package/dist/cli/tree-sitter-check.js +23 -1
  195. package/dist/cli/tree-sitter-check.js.map +1 -1
  196. package/dist/infrastructure/storage/adapters/SQLiteStorage.d.ts.map +1 -1
  197. package/dist/infrastructure/storage/adapters/SQLiteStorage.js +2 -2
  198. package/dist/infrastructure/storage/adapters/SQLiteStorage.js.map +1 -1
  199. package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts +23 -0
  200. package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts.map +1 -0
  201. package/dist/infrastructure/storage/adapters/sqlite-loader.js +210 -0
  202. package/dist/infrastructure/storage/adapters/sqlite-loader.js.map +1 -0
  203. package/dist/orchestrator/test-linker.d.ts.map +1 -1
  204. package/dist/orchestrator/test-linker.js +5 -36
  205. package/dist/orchestrator/test-linker.js.map +1 -1
  206. package/dist/orchestrator/types.d.ts +2 -0
  207. package/dist/orchestrator/types.d.ts.map +1 -1
  208. package/dist/orchestrator/types.js.map +1 -1
  209. package/dist/parser/implementations/tree-sitter-loader.d.ts +16 -0
  210. package/dist/parser/implementations/tree-sitter-loader.d.ts.map +1 -0
  211. package/dist/parser/implementations/tree-sitter-loader.js +105 -0
  212. package/dist/parser/implementations/tree-sitter-loader.js.map +1 -0
  213. package/dist/parser/implementations/tree-sitter-parser.d.ts +3 -0
  214. package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -1
  215. package/dist/parser/implementations/tree-sitter-parser.js +8 -3
  216. package/dist/parser/implementations/tree-sitter-parser.js.map +1 -1
  217. package/dist/server/mcp/schema-adapter.d.ts +45 -0
  218. package/dist/server/mcp/schema-adapter.d.ts.map +1 -0
  219. package/dist/server/mcp/schema-adapter.js +290 -0
  220. package/dist/server/mcp/schema-adapter.js.map +1 -0
  221. package/dist/server/mcp/server.d.ts.map +1 -1
  222. package/dist/server/mcp/server.js +32 -2
  223. package/dist/server/mcp/server.js.map +1 -1
  224. package/docs/AI_ASSISTANT_SETUP.md +173 -14
  225. package/docs/README.md +40 -1
  226. package/docs/SETUP_GUIDE.md +23 -26
  227. package/docs/agents/domain.md +36 -0
  228. package/docs/agents/issue-tracker.md +22 -0
  229. package/docs/agents/triage-labels.md +15 -0
  230. package/docs/ai-guide/COMMANDS.md +125 -13
  231. package/docs/ai-guide/INTEGRATION.md +78 -11
  232. package/docs/ai-guide/OUTPUT.md +295 -2
  233. package/docs/ai-guide/PATTERNS.md +3 -3
  234. package/docs/ai-guide/PROMPTS.md +2 -2
  235. package/docs/ai-guide/QUICKSTART.md +41 -5
  236. package/docs/ai-guide/README.md +9 -9
  237. package/docs/archive/ideation/2026-04-15-executable-architecture-constitution-ideation-archive.md +70 -0
  238. package/docs/archive/ideation/2026-04-20-mycodemap-init-enhancements-ideation-archive.md +109 -0
  239. package/docs/archive/ideation/2026-04-22-harness-rules-entry-docs-optimization-ideation.md +102 -0
  240. package/docs/archive/ideation/2026-04-22-rules-claude-agents-optimization-ideation.md +107 -0
  241. package/docs/archive/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation-archive.md +54 -0
  242. package/docs/brainstorms/2026-04-22-rules-entry-docs-phase1-structure-consolidation-requirements.md +110 -0
  243. package/docs/brainstorms/999.1-mycodemap-init-enhancements-requirements.md +166 -0
  244. package/docs/exec-plans/README.md +3 -0
  245. package/docs/ideation/2026-04-15-executable-architecture-constitution-ideation.md +10 -22
  246. package/docs/ideation/2026-04-20-mycodemap-init-enhancements-ideation.md +51 -0
  247. package/docs/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation.md +114 -0
  248. package/docs/ideation/2026-04-29-ux-install-agent-experience-ideation.md +256 -0
  249. package/docs/lesson-learn/2026-04-19-prerelease-trusted-publishing-fix.md +119 -0
  250. package/docs/lesson-learn/image.png +0 -0
  251. package/docs/plans/2026-04-30-install-guide-and-repo-analyzer-design.md +394 -0
  252. package/docs/rules/README.md +5 -1
  253. package/docs/rules/architecture-guardrails.md +2 -1
  254. package/docs/rules/deployment.md +7 -0
  255. package/docs/rules/engineering-with-codex-openai.md +48 -9
  256. package/docs/rules/harness.md +106 -0
  257. package/docs/rules/pre-release-checklist.md +72 -33
  258. package/docs/rules/release.md +303 -0
  259. package/docs/rules/testing.md +70 -0
  260. package/docs/rules/validation.md +16 -7
  261. package/examples/claude/skills/mycodemap-repo-analyzer/SKILL.md +294 -0
  262. package/examples/claude/skills/mycodemap-repo-analyzer/references/analysis-guide.md +166 -0
  263. package/examples/claude/skills/mycodemap-repo-analyzer/references/module-analysis-guide.md +150 -0
  264. package/mycodemap.config.schema.json +1 -1
  265. package/package.json +9 -6
  266. package/scripts/hooks/templates/commit-msg +38 -0
  267. package/scripts/hooks/templates/pre-commit +224 -0
  268. package/scripts/pre-release-check.js +4 -4
  269. package/scripts/release.sh +1 -1
  270. package/scripts/sync-analyze-docs.js +2 -2
  271. package/scripts/validate-docs.js +395 -29
  272. package/docs/references/tmp.md +0 -527
@@ -0,0 +1,1096 @@
1
+ [English Version](./README.md)
2
+
3
+ # CodeMap
4
+
5
+ > AI-Native 优先、人类友好的代码架构治理基础设施 — `v2.0` 里程碑
6
+
7
+ CodeMap 是一个面向 TypeScript/JavaScript/Go 项目的 AI-Native 优先代码架构治理基础设施。`v2.0` 已把 CLI 表面升级为 schema 驱动的自描述统一接口:单一 contract schema 同时生成 parser、MCP tool 定义、`--help-json` 和 shell completion。`codemap doctor` 提供持续健康诊断,`Failure-to-Action Protocol` 把错误转为结构化状态转移,WASM-first 构建基础消除了原生依赖编译失败的头号 drop-off。人类用户通过 `--human` 标志或 TTY 自动检测获得表格/颜色输出,AI/Agent 默认获得 JSON/NDJSON。
8
+
9
+ ## 特性
10
+
11
+ ### v2.0 核心特性
12
+
13
+ - **Interface Contract Schema** — 单一机器可读 schema 定义整个 CLI 表面,`codemap --schema` 输出完整契约 JSON,供 agent 自省和动态适配
14
+ - **CLI-as-MCP Automatic Gateway** — 所有 schema 定义的 CLI 子命令自动暴露为 MCP tool,零手写维护,新命令自动获得 MCP 暴露
15
+ - **AI-First Default Output** — JSON/NDJSON 默认输出,`--human` 标志按需渲染表格/颜色,TTY 自动检测保留交互体验,progress 事件走 stderr
16
+ - **`codemap doctor`** — 持续健康诊断,检测 ghost commands、native dependency 问题、workspace drift、agent connectivity
17
+ - **Failure-to-Action Protocol** — 每个错误返回结构化 root cause + remediation plan + confidence + nextCommand,agent 可尝试自动修复
18
+ - **Validation Router** — 按改动类型路由最小验证,docs guardrail 验证引用的命令真实可运行
19
+ - **WASM-First Build Foundation** — `tree-sitter` / `better-sqlite3` 提供 WASM 回退路径,`--native` 强制原生模式,`codemap benchmark` 可对比 WASM vs Native 性能
20
+
21
+ ### 原有核心能力
22
+
23
+ - **AI-first 代码地图** - 生成 `AI_MAP.md`、`CONTEXT.md`、`codemap.json` 等 AI/Agent 可直接消费的上下文
24
+ - **核心分析命令** - 提供 `generate`、`query`、`deps`、`impact`、`complexity`、`cycles`、`analyze`、`design`、`export`、`ci`
25
+ - **分层架构 (MVP3)** - 保持 `Interface → Infrastructure → Domain → Server → CLI` 的明确边界
26
+ - **双层解析模式** - 提供 `fast`(快速正则)和 `smart`(TypeScript AST)两种解析模式
27
+ - **多语言支持** - 支持 TypeScript/JavaScript、Go、Python(可扩展架构)
28
+ - **依赖/影响/复杂度分析** - 适合变更影响评估、重构盘点和架构回溯
29
+ - **CI 门禁与文档护栏** - 提供提交格式、文件头、风险评估、文档/输出契约检查
30
+ - **多格式导出与存储抽象** - 支持导出图数据,并保留文件系统/内存/sqlite 后端接口
31
+
32
+ ## 产品定位
33
+
34
+ | 维度 | 当前基线 |
35
+ |------|----------|
36
+ | 产品是谁 | `CodeMap` 是 AI-Native 优先、人类友好的代码架构治理基础设施 |
37
+ | 主要消费者 | `AI/Agent 是主要消费者`;人类开发者负责配置、维护与按需阅读输出 |
38
+ | 输出契约 | JSON/NDJSON 默认输出;`--human` 或 TTY 自动检测渲染表格/颜色;progress 事件走 stderr |
39
+ | 命名规范 | 产品/项目名写 `CodeMap`;npm 包名是 `@mycodemap/mycodemap`;公开 CLI 命令首选写 `mycodemap`;`codemap` 只作为兼容别名,不作为新示例首选 |
40
+ | 架构边界 | `Server Layer` 是内部架构层,不等于公共 `mycodemap server` 命令 |
41
+
42
+ 当前公共 CLI 聚焦 `init`、`generate`、`query`、`deps`、`cycles`、`complexity`、`impact`、`analyze`、`design`、`ci`、`workflow`、`export`、`ship`、`doctor`、`benchmark`,以及 MCP 网关暴露的动态 tool surface;`server`、`watch`、`report`、`logs` 已从 public CLI 移除,并在调用时给出迁移提示。
43
+
44
+ ## 安装
45
+
46
+ ```bash
47
+ # 使用 npm
48
+ npm install @mycodemap/mycodemap
49
+
50
+ # 使用 yarn
51
+ yarn add @mycodemap/mycodemap
52
+
53
+ # 使用 pnpm
54
+ pnpm add @mycodemap/mycodemap
55
+
56
+ # 全局安装(推荐,可直接使用 CLI)
57
+ npm install -g @mycodemap/mycodemap
58
+ ```
59
+
60
+ **环境要求**: Node.js >= 20.0.0
61
+
62
+ ### No Build Tools? No Problem
63
+
64
+ CodeMap ships with WASM-first fallback. If your system lacks `python`, `make`, or `gcc`:
65
+ - `tree-sitter` automatically falls back to `web-tree-sitter` (WASM)
66
+ - `better-sqlite3` automatically falls back to `node:sqlite` (Node.js 22+) or `sql.js` (WASM)
67
+ - No manual intervention required — fallback activates on first run
68
+
69
+ ### Force Native (Performance)
70
+
71
+ If you have build tools installed and want maximum performance:
72
+ ```bash
73
+ mycodemap --native <command>
74
+ ```
75
+
76
+ **MVP3 新依赖**:
77
+ - `hono` - HTTP 服务器框架
78
+ - `@hono/node-server` - Node.js 适配器
79
+
80
+ ## 快速开始
81
+
82
+ ```bash
83
+ # 1. 在项目根目录初始化配置
84
+ mycodemap init
85
+
86
+ # 2. 生成代码地图
87
+ mycodemap generate
88
+
89
+ # 3. 查看生成的文件
90
+ ls .mycodemap/
91
+ # AI_MAP.md - 项目全局概览(供 AI 使用)
92
+ # CONTEXT.md - 上下文入口(跳转到 context/README.md)
93
+ # context/ - 各模块的详细上下文
94
+ # codemap.json - 结构化 JSON 数据
95
+ # dependency-graph.md - Mermaid 依赖图
96
+ ```
97
+
98
+ ```bash
99
+ # 4. 当前 CLI 过渡现实:给 AI/Agent 时优先请求机器可读结果
100
+ mycodemap impact -f src/cli/index.ts -j
101
+
102
+ # analyze 额外支持显式 machine/human 模式
103
+ mycodemap analyze -i read -t src/cli/index.ts --output-mode human
104
+
105
+ # 人类设计先落成 design contract,再交给 AI/Agent 消费
106
+ cp docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md mycodemap.design.md
107
+ mycodemap design validate mycodemap.design.md --json
108
+ mycodemap design map mycodemap.design.md --json
109
+ mycodemap design handoff mycodemap.design.md --json
110
+ mycodemap design verify mycodemap.design.md --json
111
+ ```
112
+
113
+ 生成后,将 `.mycodemap/AI_MAP.md` 的内容提供给 AI 助手即可让其快速理解你的项目结构;需要结构化结果继续处理时,优先使用 JSON / machine 模式。
114
+
115
+ ## 文档导航
116
+
117
+ ### 人类用户
118
+
119
+ | 文档 | 目标读者 | 内容 |
120
+ |------|----------|------|
121
+ | [🧭 文档索引](docs/README.md) | 所有读者 | 文档分层、阅读顺序与迁移状态 |
122
+ | [🏗️ 架构总图](ARCHITECTURE.md) | 开发者 | 系统地图、模块边界、主执行流 |
123
+ | [📋 MVP3 实施路线图](docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md) | 开发者 | 分层架构重构完整计划与状态 |
124
+ | [📖 安装配置指南](docs/SETUP_GUIDE.md) | 人类开发者 | 完整的安装、配置和使用指南 |
125
+ | [📁 配置示例](examples/) | 所有用户 | 各平台的现成配置文件 |
126
+
127
+ ### 🤖 AI / Agent 专属文档
128
+
129
+ > 如果你是 AI 助手或 Agent,**请优先阅读以下文档**:
130
+
131
+ | 文档 | 说明 |
132
+ |------|------|
133
+ | **[📘 AI_GUIDE.md](AI_GUIDE.md)** | **AI 主指南** - 快速参考、命令选择决策树、提示词模板速用 |
134
+ | **[🚀 docs/ai-guide/QUICKSTART.md](docs/ai-guide/QUICKSTART.md)** | 快速开始、场景-命令映射表 |
135
+ | **[📚 docs/ai-guide/COMMANDS.md](docs/ai-guide/COMMANDS.md)** | 完整 CLI 命令参考 |
136
+ | **[📊 docs/ai-guide/OUTPUT.md](docs/ai-guide/OUTPUT.md)** | JSON 输出结构解析 |
137
+ | **[🔄 docs/ai-guide/PATTERNS.md](docs/ai-guide/PATTERNS.md)** | 标准工作流模式 |
138
+ | **[💬 docs/ai-guide/PROMPTS.md](docs/ai-guide/PROMPTS.md)** | 即用型提示词模板 |
139
+ | **[🔧 docs/ai-guide/INTEGRATION.md](docs/ai-guide/INTEGRATION.md)** | 集成指南、错误处理 |
140
+ | **[🛡️ AGENTS.md](AGENTS.md)** | 仓库级强约束、任务分级、代码红线 |
141
+ | **[⚡ CLAUDE.md](CLAUDE.md)** | AI 入口路由、下一步阅读导航 |
142
+ | **[🤖 docs/AI_ASSISTANT_SETUP.md](docs/AI_ASSISTANT_SETUP.md)** | AI 助手配置指引 |
143
+ | **[🔍 examples/claude/skills/mycodemap-repo-analyzer/](examples/claude/skills/mycodemap-repo-analyzer/)** | 项目深度架构分析技能(基于 repo-analyzer + mycodemap CLI) |
144
+ | **[🛠️ docs/rules/engineering-with-codex-openai.md](docs/rules/engineering-with-codex-openai.md)** | 面向 agent 的工程约束 |
145
+
146
+ **AI 快速入口**: `.cursorrules` | `.github/copilot-instructions.md`
147
+
148
+ ## CLI 命令
149
+
150
+ > 说明:以下章节记录当前公开的公共命令面。`workflow` 是公开的 analysis-only 工作流能力,`ship` 仍是过渡能力;`server`、`watch`、`report`、`logs` 已从 public CLI 移除,并在调用时输出迁移提示。
151
+
152
+ ### `mycodemap init`
153
+
154
+ 初始化并收敛项目的 CodeMap workspace / config / hooks / rules 状态。
155
+
156
+ ```bash
157
+ mycodemap init # 显示 reconciliation preview(默认不写入)
158
+ mycodemap init --interactive # 显式显示 preview(等同默认行为)
159
+ mycodemap init -y # 使用默认选择直接写入
160
+ ```
161
+
162
+ | 选项 | 说明 |
163
+ |------|------|
164
+ | `-y, --yes` | 使用默认配置 |
165
+ | `--interactive` | 仅显示 reconciliation preview,不写入文件 |
166
+
167
+ 默认显示 reconciliation preview;使用 `mycodemap init -y` 或 `mycodemap init --yes` 才会真正写入。
168
+
169
+ 执行后会收敛 `.mycodemap/config.json`,并把 machine-readable receipt 写入 `.mycodemap/status/init-last.json`。
170
+
171
+ `init` 还会同步 `.mycodemap/hooks/` 与 `.mycodemap/rules/`;但不会自动改写团队自有的 `CLAUDE.md` / `AGENTS.md`,只会在 receipt 中输出可复制片段。
172
+
173
+ ### `mycodemap generate`
174
+
175
+ 分析项目并生成代码地图文件。
176
+
177
+ ```bash
178
+ mycodemap generate # 使用默认 hybrid 模式
179
+ mycodemap generate -m smart # 使用 smart 模式(AST 深度分析)
180
+ mycodemap generate -o ./docs/codemap # 指定输出目录
181
+ mycodemap generate --symbol-level # 额外 materialize symbol-level 调用依赖(实验性首期切片)
182
+ ```
183
+
184
+ | 选项 | 说明 | 默认值 |
185
+ |------|------|--------|
186
+ | `-m, --mode <mode>` | 分析模式:`fast`(正则匹配)、`smart`(TypeScript AST)或 `hybrid`(自动选择) | `hybrid` |
187
+ | `-o, --output <dir>` | 输出目录 | `.mycodemap` |
188
+ | `--symbol-level` | 额外把可解析的 symbol-level `call` 依赖写入图存储;默认 generate 行为不变 | `false` |
189
+ | `--ai-context` | 为每个文件生成描述 | - |
190
+
191
+ - `codemap.json` 现在会显式写出 `graphStatus`、`failedFileCount` 与可选 `parseFailureFiles`。
192
+ - 当某些发现到的文件没有成功进入最终图时,`graphStatus` 会降级为 `partial`;不要把这种结果当成完整图继续做自动化决策。
193
+
194
+ **模式说明:**
195
+
196
+ | 模式 | 速度 | 精度 | 适用场景 |
197
+ |------|------|------|----------|
198
+ | `fast` | 极快 | 基本结构 | 日常开发、大型项目快速预览 |
199
+ | `smart` | 较慢 | 完整语义 | 深度分析、复杂度评估、类型推导 |
200
+ | `hybrid` | 自动 | 自适应 | **推荐** - 文件数<50用fast,≥50用smart |
201
+
202
+ ### `mycodemap query`
203
+
204
+ 查询代码地图中的符号、模块和依赖信息。
205
+
206
+ ```bash
207
+ mycodemap query -s "ModuleInfo" # 精确查询符号
208
+ mycodemap query -m "src/parser" # 查询模块信息
209
+ mycodemap query -d "analyzer" # 查询依赖关系
210
+ mycodemap query -S "cache" # 模糊搜索
211
+ mycodemap query -S "parse" -j # JSON 格式输出
212
+ mycodemap query -S "plugin" -l 5 # 限制结果数量
213
+ ```
214
+
215
+ | 选项 | 说明 | 默认值 |
216
+ |------|------|------|
217
+ | `-s, --symbol <name>` | 精确查询符号 | - |
218
+ | `-m, --module <path>` | 查询模块信息 | - |
219
+ | `-d, --deps <name>` | 查询依赖关系 | - |
220
+ | `-S, --search <word>` | 模糊搜索 | - |
221
+ | `-l, --limit <number>` | 限制结果数量 | `50` |
222
+ | `-j, --json` | 以 JSON 格式输出 | - |
223
+
224
+ ### `mycodemap deps`
225
+
226
+ 分析并输出模块的依赖关系树。
227
+
228
+ ```bash
229
+ mycodemap deps # 查看所有模块的依赖统计
230
+ mycodemap deps -m "src/parser" # 查看指定模块的依赖树
231
+ mycodemap deps -m "src/parser" -j # JSON 格式输出
232
+ ```
233
+
234
+ | 选项 | 说明 | 默认值 |
235
+ |------|------|--------|
236
+ | `-m, --module <path>` | 查询指定模块的依赖 | - |
237
+ | `-j, --json` | 以 JSON 格式输出 | - |
238
+
239
+ ### `mycodemap cycles`
240
+
241
+ 检测项目中的循环依赖。
242
+
243
+ ```bash
244
+ mycodemap cycles # 检测所有循环依赖
245
+ ```
246
+
247
+ ### `mycodemap complexity`
248
+
249
+ 分析代码复杂度,输出圈复杂度、认知复杂度和可维护性指数。
250
+
251
+ ```bash
252
+ mycodemap complexity # 分析整个项目的复杂度
253
+ mycodemap complexity -f src/cli/index.ts # 分析指定文件的复杂度
254
+ mycodemap complexity -j # JSON 格式输出
255
+ ```
256
+
257
+ | 选项 | 说明 | 默认值 |
258
+ |------|------|--------|
259
+ | `-f, --file <path>` | 查看指定文件的复杂度 | - |
260
+ | `-j, --json` | 以 JSON 格式输出 | - |
261
+
262
+ ### `mycodemap impact`
263
+
264
+ 评估指定文件或模块变更的影响范围。
265
+
266
+ ```bash
267
+ mycodemap impact -f src/cli/index.ts # 分析指定文件的变更影响
268
+ mycodemap impact -f src/cli/index.ts --transitive # 包含传递依赖
269
+ mycodemap impact -f src/cli/index.ts -j # JSON 格式输出
270
+ ```
271
+
272
+ | 选项 | 说明 | 默认值 |
273
+ |------|------|------|
274
+ | `-f, --file <path>` | **必填** 指定要分析的文件 | - |
275
+ | `-t, --transitive` | 包含传递依赖(间接影响) | - |
276
+ | `-j, --json` | 以 JSON 格式输出 | - |
277
+
278
+ ### `mycodemap --schema`
279
+
280
+ 输出完整的 Interface Contract Schema JSON,供 agent 自省和动态适配。
281
+
282
+ ```bash
283
+ mycodemap --schema # 输出完整契约
284
+ mycodemap --schema | jq '.' # 用 jq 格式化查看
285
+ ```
286
+
287
+ - 契约覆盖所有命令、参数、标志、输出形状、错误码和示例
288
+ - MCP server 从该 schema 动态注册 tool,零手写维护
289
+ - 添加新命令到 schema 后,MCP 重启自动获得新 tool
290
+
291
+ ### `mycodemap doctor`
292
+
293
+ 持续健康诊断,审计整个 CodeMap 生态系统的运行状态。
294
+
295
+ ```bash
296
+ mycodemap doctor # 人类可读报告
297
+ mycodemap doctor --json # 机器可读 JSON 输出
298
+ ```
299
+
300
+ | 诊断类别 | 检测内容 |
301
+ |----------|----------|
302
+ | **install** | native 依赖(`tree-sitter`、`better-sqlite3`)加载状态 |
303
+ | **config** | `.mycodemap/` workspace 配置完整性 |
304
+ | **runtime** | ghost commands、命令 stub、package.json 一致性 |
305
+ | **agent** | MCP 连接性、schema 有效性、tool 注册状态 |
306
+
307
+ - 返回结构化 diagnostics,每个问题附带 severity、category 和修复建议
308
+ - `--json` 输出适合 CI 集成和 agent 自动处理
309
+
310
+ ### `mycodemap benchmark`
311
+
312
+ 对比 WASM vs Native 性能,评估代码分析速度。
313
+
314
+ ```bash
315
+ mycodemap benchmark # 默认基准测试
316
+ mycodemap benchmark --wasm # 强制 WASM 模式
317
+ mycodemap benchmark --native # 强制 Native 模式
318
+ mycodemap benchmark -o report.md # 输出到文件
319
+ ```
320
+
321
+ ### MCP 集成(CLI-as-MCP Gateway)
322
+
323
+ v2.0 的 MCP 集成已从 experimental 2-tool 薄切片升级为 **CLI-as-MCP Automatic Gateway**:所有 schema 定义的 CLI 命令自动暴露为 MCP tool,零手写维护。
324
+
325
+ ```bash
326
+ # 把当前仓库写入本地 MCP host 配置
327
+ mycodemap mcp install
328
+
329
+ # 由 MCP host 启动 stdio server
330
+ mycodemap mcp start
331
+ ```
332
+
333
+ | 子命令 | 说明 |
334
+ |--------|------|
335
+ | `mcp install` | 把本地 server 写入当前仓库 `.mcp.json` |
336
+ | `mcp start` | 启动本地 stdio MCP server;`stdout` 仅承载协议帧 |
337
+
338
+ - 所有 schema 定义的 CLI 命令(20+)都可通过 MCP 调用
339
+ - 动态 tool 注册:新命令加入 schema → 重启 MCP server → 自动获得新 tool
340
+ - 复杂嵌套类型降级到简单 scalar 映射时,MCP 仍能优雅工作
341
+ - 详细集成文档见 `docs/ai-guide/INTEGRATION.md`
342
+
343
+ ### 已移除的公共 CLI 命令
344
+
345
+ 以下命令已从 public CLI 移除;直接调用时,CLI 会显式失败并给出迁移提示,而不是继续执行旧功能。
346
+
347
+ | 已移除命令 | 当前迁移方式 |
348
+ |------------|--------------|
349
+ | `watch` | 改用一次性的 `mycodemap generate` 刷新代码地图 |
350
+ | `report` | 直接读取 `.mycodemap/AI_MAP.md`,或使用 `mycodemap export <format>` 导出结果 |
351
+ | `logs` | 直接读取 `.mycodemap/logs/` 下的日志文件 |
352
+ | `server` | 公共 CLI 已移除;`Server Layer` 仍是内部架构层,不等于公开 `mycodemap server` 命令 |
353
+
354
+ ### `mycodemap export` (MVP3)
355
+
356
+ 导出代码图到各种格式。
357
+
358
+ ```bash
359
+ mycodemap export json # 导出为 JSON
360
+ mycodemap export graphml # 导出为 GraphML (Gephi 兼容)
361
+ mycodemap export dot # 导出为 DOT (Graphviz)
362
+ mycodemap export mermaid # 导出为 Mermaid 语法
363
+ mycodemap export json -o ./out # 指定输出路径
364
+ ```
365
+
366
+ | 选项 | 说明 | 默认值 |
367
+ |------|------|--------|
368
+ | `-o, --output <path>` | 输出文件路径 | 自动根据格式生成 |
369
+
370
+ ## 工作流编排(分析型 workflow)
371
+
372
+ `workflow` 是公开的 analysis-only 工作流能力,只编排分析阶段:`find → read → link → show`。
373
+ 代码实现、commit 检查和 CI 运行不再属于 workflow phase;这些职责分别回到常规开发流程、`mycodemap ci` 与 `mycodemap ship`。
374
+
375
+ ### 工作流阶段
376
+
377
+ ```
378
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
379
+ │ find │ → │ read │ → │ link │ → │ show │
380
+ │ 查找代码线索 │ │ 阅读影响范围 │ │ 关联依赖引用 │ │ 展示概览结果 │
381
+ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
382
+ ```
383
+
384
+ | 阶段 | 对应意图 | 说明 | 典型产物 |
385
+ |------|----------|------|----------|
386
+ | **find** | `analyze --intent find` | 查找符号、关键词与候选文件 | 相关文件 / 符号列表 |
387
+ | **read** | `analyze --intent read` | 阅读影响范围、复杂度与上下文 | 影响与复杂度摘要 |
388
+ | **link** | `analyze --intent link` | 汇总依赖、引用与关联关系 | 依赖 / 引用结果 |
389
+ | **show** | `analyze --intent show` | 生成模块概览与展示型摘要 | overview / summary 输出 |
390
+
391
+ > 内置模板(`refactoring` / `bugfix` / `feature` / `hotfix`)共享同一 4 阶段顺序,只通过不同的阶段阈值和适用场景调整体验。
392
+
393
+ ## 设计契约输入面
394
+
395
+ `design` 是给“人类负责设计、AI 负责执行”协作链路准备的正式输入面。
396
+ 先把设计写成 `mycodemap.design.md`,再用 CLI 校验必填 sections、空段、重复 heading 和未知 heading。
397
+
398
+ ```bash
399
+ # 从 canonical template 起步
400
+ cp docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md mycodemap.design.md
401
+
402
+ # 使用默认文件名校验
403
+ mycodemap design validate mycodemap.design.md --json
404
+
405
+ # 校验通过后生成 candidate scope
406
+ mycodemap design map mycodemap.design.md --json
407
+
408
+ # 把 scope 打包成 handoff artifact,供 reviewer / AI agent 消费
409
+ mycodemap design handoff mycodemap.design.md --json
410
+
411
+ # 基于 reviewed handoff truth 做 verification / drift 检查
412
+ mycodemap design verify mycodemap.design.md --json
413
+
414
+ # 也可以显式传入其他路径
415
+ mycodemap design validate docs/designs/login.design.md
416
+ ```
417
+
418
+ 必填 sections:
419
+ - `## Goal`
420
+ - `## Constraints`
421
+ - `## Acceptance Criteria`
422
+ - `## Non-Goals`
423
+
424
+ > 建议最小工作流:`design validate → design map → design handoff → design verify`。`design map --json` 会返回 `summary`、`candidates`、`diagnostics` 与 `unknowns`;`design handoff --json` 会继续返回 `readyForExecution`、`approvals`、`assumptions` 与 `openQuestions`,默认 artifact 路径为 `.mycodemap/handoffs/{stem}.handoff.md|json`;`design verify --json` 会返回 `checklist`、`drift`、`diagnostics` 与 `readyForExecution`,其中 review-needed 不会直接变成非零退出,只有 blocker diagnostics 才会阻断。
425
+
426
+ ### 工作流 CLI 命令
427
+
428
+ ```bash
429
+ # 启动工作流
430
+ mycodemap workflow start "实现用户认证模块"
431
+ # 启动工作流并指定模板(会保留 4 阶段顺序)
432
+ mycodemap workflow start "修复登录接口 500" --template bugfix
433
+
434
+ # 查看当前工作流状态
435
+ mycodemap workflow status
436
+
437
+ # 可视化当前工作流(支持 --timeline / --results)
438
+ mycodemap workflow visualize
439
+
440
+ # 推进到下一阶段
441
+ mycodemap workflow proceed
442
+
443
+ # 恢复当前活动工作流(可选传 workflow-id)
444
+ mycodemap workflow resume
445
+ mycodemap workflow resume <workflow-id>
446
+
447
+ # 创建检查点
448
+ mycodemap workflow checkpoint
449
+
450
+ # 列出所有工作流
451
+ mycodemap workflow list
452
+
453
+ # 删除工作流
454
+ mycodemap workflow delete <workflow-id>
455
+
456
+ # 模板管理
457
+ mycodemap workflow template list --all
458
+ mycodemap workflow template info bugfix
459
+ mycodemap workflow template apply bugfix
460
+ mycodemap workflow template recommend "紧急修复支付超时"
461
+ ```
462
+
463
+ ### 工作流使用示例
464
+
465
+ ```bash
466
+ # 示例:围绕一个模块逐步收敛上下文
467
+ $ mycodemap workflow start "梳理缓存模块上下文"
468
+ [WORKFLOW STARTED]
469
+ Task: 梳理缓存模块上下文
470
+ Phase: find
471
+
472
+ # 查看当前分析阶段与进度
473
+ $ mycodemap workflow status
474
+ Phase: find
475
+
476
+ # 可视化 4 阶段分析流水线
477
+ $ mycodemap workflow visualize
478
+ ▶ 🔍 【Find】
479
+
480
+ ○ 📖 Read
481
+
482
+ ○ 🔗 Link
483
+
484
+ ○ 🧭 Show
485
+
486
+ # 当前阶段完成后推进到下一阶段
487
+ $ mycodemap workflow proceed
488
+ Next phase: read
489
+
490
+ # 示例:对当前活动工作流应用模板(阶段顺序不变)
491
+ $ mycodemap workflow template apply bugfix
492
+ Applied template: bugfix
493
+ Phases: find → read → link → show
494
+ Current phase: find
495
+ ```
496
+
497
+ ## CI 门禁 (v2.5)
498
+
499
+ CodeMap 提供 CI 阶段自动检查,确保代码质量。
500
+
501
+ ```bash
502
+ # 检查 README / docs / CLI 示例是否与仓库事实同步
503
+ npm run docs:check
504
+
505
+ # 通过统一 CLI 护栏入口复用同一检查
506
+ mycodemap ci check-docs-sync
507
+
508
+ # 检查提交格式 ([TAG] scope: message)
509
+ mycodemap ci check-commits
510
+
511
+ # 检查文件头注释 ([META], [WHY])
512
+ mycodemap ci check-headers
513
+
514
+ # 评估变更风险
515
+ mycodemap ci assess-risk -f src/cache/lru-cache.ts
516
+
517
+ # 检查输出契约
518
+ mycodemap ci check-output-contract
519
+ ```
520
+
521
+ > `ci assess-risk` 现在输出 `status/confidence/freshness/source` 与统一 risk level;若 Git history 不可用,会显式打印 `unavailable` / warning,并说明阈值未被应用。
522
+
523
+ ## Validation quick truth
524
+
525
+ - 文档/入口变更先跑 `npm run docs:check`。
526
+ - 统一 docs/AI guardrail 入口:`node dist/cli/index.js ci check-docs-sync`(产品命令等价于 `mycodemap ci check-docs-sync`)。
527
+ - repo-local rules 预检:`python3 scripts/validate-rules.py code --report-only` 只报告,不阻断。
528
+ - CI / PR 超窗、fallback 或 false-positive 漂移时,`warn-only / fallback` 不是 hard gate success。
529
+
530
+ ## 配置说明
531
+
532
+ 通过 `mycodemap init` 收敛的 canonical 配置文件是 `.mycodemap/config.json`(根目录 `mycodemap.config.json` / `codemap.config.json` 只作为 legacy migration source)。
533
+
534
+ ```jsonc
535
+ {
536
+ // JSON Schema(可选,提供编辑器智能提示)
537
+ "$schema": "https://mycodemap.dev/schema/config.json",
538
+
539
+ // 分析模式:"fast"、"smart" 或 "hybrid"
540
+ "mode": "hybrid",
541
+
542
+ // 包含的文件 glob 模式
543
+ "include": [
544
+ "src/**/*.ts"
545
+ ],
546
+
547
+ // 排除的文件 glob 模式
548
+ "exclude": [
549
+ "node_modules/**",
550
+ "dist/**",
551
+ "build/**",
552
+ "coverage/**",
553
+ "**/*.test.ts",
554
+ "**/*.spec.ts",
555
+ "**/*.d.ts"
556
+ ],
557
+
558
+ // 输出目录
559
+ "output": ".mycodemap",
560
+
561
+ // 监听模式预留配置
562
+ "watch": false,
563
+
564
+ // 图存储后端配置
565
+ "storage": {
566
+ "type": "filesystem",
567
+ "outputPath": ".mycodemap/storage"
568
+ },
569
+
570
+ // 插件加载配置
571
+ "plugins": {
572
+ "builtInPlugins": true,
573
+ "plugins": [],
574
+ "debug": false
575
+ }
576
+ }
577
+ ```
578
+
579
+ | 配置项 | 类型 | 说明 | 默认值 |
580
+ |--------|------|------|--------|
581
+ | `mode` | `"fast" \| "smart" \| "hybrid"` | 分析模式 | `"hybrid"` |
582
+ | `include` | `string[]` | 包含的文件 glob 模式 | `["src/**/*.ts"]` |
583
+ | `exclude` | `string[]` | 排除的文件 glob 模式 | `["node_modules/**", "dist/**", ...]` |
584
+ | `output` | `string` | 输出目录路径 | `".mycodemap"` |
585
+ | `watch` | `boolean` | 监听模式预留配置 | `false` |
586
+ | `storage.type` | `"filesystem" \| "sqlite" \| "memory" \| "auto"` | 图存储后端类型 | `"filesystem"` |
587
+ | `storage.outputPath` | `string` | 文件系统存储目录 | `".mycodemap/storage"` |
588
+ | `storage.databasePath` | `string` | SQLite 数据目录(相对项目根目录,建议放在 `.mycodemap/` 下) | `".mycodemap/governance.sqlite"` |
589
+ | `storage.autoThresholds` | `object` | `auto` 后端选择阈值 | - |
590
+ | `plugins.builtInPlugins` | `boolean` | 是否启用内置插件 | `true` |
591
+ | `plugins.pluginDir` | `string` | 额外插件目录 | - |
592
+ | `plugins.plugins` | `string[]` | 显式加载的插件名称列表 | `[]` |
593
+ | `plugins.debug` | `boolean` | 是否输出插件调试日志 | `false` |
594
+
595
+ ### 图存储后端说明
596
+
597
+ ```jsonc
598
+ {
599
+ "storage": {
600
+ "type": "sqlite",
601
+ "databasePath": ".mycodemap/governance.sqlite"
602
+ }
603
+ }
604
+ ```
605
+
606
+ - `generate` 会把 CodeGraph 写入配置的 `storage` 后端,`export` 与内部 `Server Layer` handler 会读取同一份后端数据。
607
+ - `neo4j` 与 `kuzudb` 已不再是正式支持的 backend;旧配置会返回显式迁移错误,不会静默 fallback 到 `filesystem`。
608
+ - 显式选择 `sqlite` 且运行时缺少 `better-sqlite3` 或 Node.js `<20` 时,会返回显式错误。
609
+ - `storage.type = "auto"` 当前优先选择 `sqlite`;若运行时缺少 `better-sqlite3` 或 Node.js `<20` 导致 SQLite 不可用,则 warning 后回退到 `filesystem`。
610
+ - 图存储后端生产化不等于重新开放公共 HTTP API 产品面;`Server Layer` 仍是内部架构层。
611
+
612
+ ### 插件运行时说明
613
+
614
+ ```jsonc
615
+ {
616
+ "plugins": {
617
+ "builtInPlugins": false,
618
+ "pluginDir": "./codemap-plugins",
619
+ "plugins": ["complexity-analyzer", "my-local-plugin"],
620
+ "debug": true
621
+ }
622
+ }
623
+ ```
624
+
625
+ - 只有**显式声明了** `plugins` 段时,`generate` 才会启用插件 runtime;没有该段的旧项目保持原有行为。
626
+ - 插件加载结果、诊断信息和插件生成文件会写入 `AI_MAP.md` 的 `Plugin Summary` 与 `codemap.json` 的 `pluginReport`。
627
+ - 非法插件配置、插件初始化失败、generate hook 失败都会被收口为结构化 diagnostics,而不是静默忽略。
628
+
629
+ > 文件发现契约:`generate`、`analyze` 与 `ci check-headers -d` 等扫描类命令共享同一套 `.gitignore` 感知排除规则;若仓库没有 `.gitignore`,则回退到默认 `exclude`(即 `node_modules/dist/build/coverage/**` 与 `**/*.test.ts` / `**/*.spec.ts` / `**/*.d.ts`),并在 Git worktree 场景下避免误扫描 `.git` 目录。
630
+
631
+ ## 输出文件说明
632
+
633
+ 运行 `mycodemap generate` 后,会在输出目录(默认 `.mycodemap/`)中生成以下文件:
634
+
635
+ ### `AI_MAP.md`
636
+
637
+ 项目全局概览文件,专为 AI 助手设计,包含:
638
+ - 项目基本信息(文件数、代码行数、模块数等)
639
+ - 已加载插件、插件生成文件数量与插件诊断摘要(仅当显式启用 plugins runtime)
640
+ - 入口点列表
641
+ - 模块组织表(导出数、依赖数、类型)
642
+ - Mermaid 格式的依赖关系图
643
+ - 类型摘要和导出统计
644
+
645
+ ### `CONTEXT.md` 与 `context/`
646
+
647
+ `CONTEXT.md` 是上下文入口文件,详细模块内容位于 `context/` 目录,包含:
648
+ - 模块概述(类型、代码行数)
649
+ - 导出列表(名称、类型、是否默认导出)
650
+ - 导入列表(来源、引入的符号)
651
+ - 符号列表(函数、类、接口等)
652
+ - 依赖和被依赖关系
653
+
654
+ ### `codemap.json`
655
+
656
+ 完整的结构化 JSON 数据,包含所有分析结果,适用于程序化消费。数据结构包括:
657
+ - `project` - 项目基本信息
658
+ - `summary` - 统计摘要
659
+ - `modules` - 模块详情数组(符号、导入、导出、复杂度等)
660
+ - `dependencies` - 依赖图(节点和边)
661
+ - `pluginReport` - 插件运行摘要(`loadedPlugins`、`generatedFiles`、`metrics`、`diagnostics`)
662
+
663
+ ### `dependency-graph.md`
664
+
665
+ 独立的 Mermaid 依赖关系图文件,可在支持 Mermaid 的 Markdown 渲染器中直接预览。
666
+
667
+ ## MVP3 分层架构
668
+
669
+ CodeMap 采用清晰的分层架构设计(MVP3),各层职责明确:
670
+
671
+ ```
672
+ ┌─────────────────────────────────────────────────────────────┐
673
+ │ CLI Layer │
674
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
675
+ │ │workflow/ship│ │ export │ │ 原有命令(generate..)│ │
676
+ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │
677
+ ├─────────────────────────────────────────────────────────────┤
678
+ │ Server Layer │
679
+ │ HTTP API / QueryHandler / AnalysisHandler │
680
+ ├─────────────────────────────────────────────────────────────┤
681
+ │ Domain Layer │
682
+ │ Project / Module / Symbol / Dependency / CodeGraph │
683
+ ├─────────────────────────────────────────────────────────────┤
684
+ │ Infrastructure Layer │
685
+ │ ┌──────────────────┐ ┌──────────────────┐ │
686
+ │ │ Storage │ │ Parser │ │
687
+ │ │ - FileSystem │ │ - TypeScript │ │
688
+ │ │ - Memory │ │ - Go │ │
689
+ │ │ - KùzuDB │ │ - Python │ │
690
+ │ │ - Auto Select │ │ - Registry │ │
691
+ │ └──────────────────┘ └──────────────────┘ │
692
+ │ ┌──────────────────┐ │
693
+ │ │ Repository │ CodeGraphRepositoryImpl │
694
+ │ └──────────────────┘ │
695
+ ├─────────────────────────────────────────────────────────────┤
696
+ │ Interface Layer │
697
+ │ 类型定义与契约 (Types, ILanguageParser, IStorage) │
698
+ └─────────────────────────────────────────────────────────────┘
699
+ ```
700
+
701
+ > 命名边界:`Server Layer` 是内部架构层,不等于公共 `mycodemap server` 命令。
702
+
703
+ ### 架构层说明
704
+
705
+ | 层级 | 路径 | 职责 | 关键组件 |
706
+ |------|------|------|----------|
707
+ | **CLI** | `src/cli/` | 命令行接口(核心分析命令 + `workflow` / `ship` 扩展 surface) | `generate`, `query`, `impact`, `export` |
708
+ | **Server** | `src/server/` | 内部 Server Layer / HTTP transport | `CodeMapServer`, `QueryHandler` |
709
+ | **Domain** | `src/domain/` | 核心业务逻辑 | `Project`, `Module`, `CodeGraph` |
710
+ | **Infrastructure** | `src/infrastructure/` | 技术实现 | `Storage`, `Parser`, `Repository` |
711
+ | **Interface** | `src/interface/` | 类型契约 | `types/`, `config/` |
712
+
713
+ ### 项目目录结构
714
+
715
+ ```
716
+ src/
717
+ ├── cli/ # CLI 命令入口 (原有 + MVP3 新增)
718
+ │ ├── commands/
719
+ │ │ ├── server.ts # MVP3: HTTP API 服务器
720
+ │ │ ├── export.ts # MVP3: 导出命令
721
+ │ │ ├── generate.ts # 生成代码地图
722
+ │ │ ├── query.ts # 查询命令
723
+ │ │ └── ... # 其他命令
724
+ │ └── index.ts
725
+ ├── server/ # MVP3: HTTP API 服务器层
726
+ │ ├── CodeMapServer.ts # 主服务器类
727
+ │ ├── handlers/ # QueryHandler, AnalysisHandler
728
+ │ └── routes/ # API 路由
729
+ ├── domain/ # MVP3: 领域层
730
+ │ ├── entities/ # Project, Module, Symbol, Dependency
731
+ │ ├── services/ # CodeGraphBuilder
732
+ │ ├── events/ # DomainEvent
733
+ │ └── repositories/ # 仓库接口
734
+ ├── infrastructure/ # MVP3: 基础设施层
735
+ │ ├── storage/ # 存储适配器
736
+ │ │ ├── adapters/ # FileSystem, Memory, KùzuDB
737
+ │ │ └── StorageFactory.ts
738
+ │ ├── parser/ # 解析器
739
+ │ │ ├── interfaces/ # ParserBase
740
+ │ │ ├── implementations/# TypeScript, Go, Python
741
+ │ │ └── registry/ # ParserRegistry
742
+ │ └── repositories/ # 仓库实现
743
+ ├── interface/ # MVP3: 接口层
744
+ │ ├── types/ # 核心类型定义
745
+ │ └── config/ # 配置类型
746
+ ├── core/ # 核心分析引擎 (原有)
747
+ ├── parser/ # 原有解析器 (逐步迁移到 infrastructure/parser)
748
+ ├── orchestrator/ # 编排层 (v2.5)
749
+ └── ...
750
+ ```
751
+
752
+ ## AI 助手集成
753
+
754
+ CodeMap 可与多种 AI 编程助手深度集成,提供智能代码分析能力:
755
+
756
+ | AI 助手 | 配置方式 | 支持功能 |
757
+ |---------|----------|----------|
758
+ | **Kimi CLI** | Skill 配置 | 完整命令支持 |
759
+ | **Claude Code** | Skill 配置 | 完整命令支持 |
760
+ | **Codex CLI** | Agent 配置 | 完整命令支持 |
761
+ | **GitHub Copilot** | 提示词配置 | 基础查询支持 |
762
+
763
+ ### 快速配置
764
+
765
+ ```bash
766
+ # Kimi CLI
767
+ mkdir -p .kimi/skills/codemap
768
+ cp examples/kimi/codemap-skill.md .kimi/skills/codemap/SKILL.md
769
+
770
+ # Claude Code
771
+ mkdir -p .claude/skills/codemap
772
+ cp examples/claude/codemap-skill.md .claude/skills/codemap/SKILL.md
773
+
774
+ # Codex CLI
775
+ mkdir -p .agents/skills/codemap
776
+ cp examples/codex/codemap-agent.md .agents/skills/codemap/SKILL.md
777
+ ```
778
+
779
+ 详细配置请参考 [AI_ASSISTANT_SETUP.md](docs/AI_ASSISTANT_SETUP.md),设计与规则入口请先看 [docs/README.md](docs/README.md)。
780
+
781
+ ### CodeMap Skill 使用指南
782
+
783
+ CodeMap Skill 是一个预置的 AI 技能文件,让 Claude Code 等支持 Skill 机制的 AI 助手自动获得 CodeMap 的全部分析能力。当用户提到"分析代码结构"、"查找依赖"、"影响范围"、"代码地图"等意图时,AI 会自动加载该技能并调用 CodeMap CLI。
784
+
785
+ #### 工作原理
786
+
787
+ ```
788
+ 用户提问 → AI 识别意图 → 加载 CodeMap Skill → 调用 CLI 命令 → 返回结构化结果
789
+ ```
790
+
791
+ Skill 文件由两部分组成:
792
+
793
+ | 文件 | 作用 |
794
+ |------|------|
795
+ | `.claude/skills/codemap/SKILL.md` | 主技能文件:触发条件、场景-命令映射、任务示例、错误处理 |
796
+ | `.claude/skills/codemap/references/commands.md` | 完整命令参考:所有命令的选项、参数和用法 |
797
+
798
+ #### 安装
799
+
800
+ Skill 文件已内置在本仓库中,无需额外安装。对于其他项目,复制即可:
801
+
802
+ ```bash
803
+ # 复制到目标项目的 .claude/skills/ 目录
804
+ cp -r .claude/skills/codemap /path/to/target-project/.claude/skills/
805
+ ```
806
+
807
+ #### 典型使用场景
808
+
809
+ 在 Claude Code 对话中直接用自然语言触发,无需手动输入命令:
810
+
811
+ | 用户意图 | AI 自动执行的命令 |
812
+ |----------|-------------------|
813
+ | "这个项目有哪些模块?" | `mycodemap query -m "src/..."` 或查看 `AI_MAP.md` |
814
+ | "IntentRouter 在哪里定义的?" | `mycodemap query -s "IntentRouter"` |
815
+ | "修改这个文件会影响什么?" | `mycodemap impact -f <path> --transitive` |
816
+ | "项目有循环依赖吗?" | `mycodemap cycles` |
817
+ | "这个模块的复杂度如何?" | `mycodemap complexity -f <path> --detail` |
818
+ | "帮我检查提交格式" | `mycodemap ci check-commits` |
819
+ | "验证设计契约" | `mycodemap design validate` |
820
+
821
+ #### CLI 调用方式
822
+
823
+ 标准用户通过全局安装的 `mycodemap` 调用;CodeMap 本体仓库的开发者使用 `node dist/cli/index.js`:
824
+
825
+ ```bash
826
+ # 用户模式(全局安装后)
827
+ mycodemap query -s "SymbolName"
828
+ mycodemap impact -f src/file.ts
829
+
830
+ # 开发者模式(CodeMap 本体仓库内,需先 npm run build)
831
+ node dist/cli/index.js query -s "SymbolName"
832
+ ```
833
+
834
+ #### 自定义与扩展
835
+
836
+ - **修改触发条件**:编辑 `SKILL.md` 头部的 `description` 字段,调整 AI 何时自动加载此技能
837
+ - **添加新命令**:在 `references/commands.md` 中补充新命令文档
838
+ - **添加新场景**:在 `SKILL.md` 的 "任务场景" 部分追加新的使用模式
839
+
840
+ 详细配置请参考 [AI_ASSISTANT_SETUP.md](docs/AI_ASSISTANT_SETUP.md),设计与规则入口请先看 [docs/README.md](docs/README.md)。
841
+
842
+ ## 新增 CLI 命令
843
+
844
+ ### `mycodemap design`
845
+
846
+ 校验、映射并验证 human-authored design contract,默认读取仓库根目录的 `mycodemap.design.md`。
847
+
848
+ ```bash
849
+ # validate: 使用默认路径校验
850
+ mycodemap design validate mycodemap.design.md --json
851
+
852
+ # validate: 显式指定文件
853
+ mycodemap design validate docs/designs/login.design.md
854
+
855
+ # map: 生成 candidate code scope
856
+ mycodemap design map mycodemap.design.md --json
857
+
858
+ # handoff: 生成 reviewer + agent 共用的 handoff package
859
+ mycodemap design handoff mycodemap.design.md --json
860
+
861
+ # verify: 基于 reviewed handoff truth 做 checklist / drift 校验
862
+ mycodemap design verify mycodemap.design.md --json
863
+ ```
864
+
865
+ | 选项 | 说明 |
866
+ |------|------|
867
+ | `-j, --json` | 输出纯 JSON diagnostics,适合 AI/CI 消费 |
868
+
869
+ > canonical 模板位于 `docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md`。
870
+ > 缺失必填 section、重复 section、空 section 或未知 heading 时,CLI 会返回结构化 diagnostics,而不是继续猜测设计意图。
871
+ > `design map` 会基于 design contract 返回 `candidates`、`diagnostics` 与 `unknowns`;若命中 `no-candidates`、`over-broad-scope` 或 `high-risk-scope`,命令会直接阻断。
872
+ > `design handoff` 会基于 validated design contract + mapping truth 返回 `readyForExecution`、`approvals`、`assumptions`、`openQuestions`;human mode 默认写出 `.mycodemap/handoffs/{stem}.handoff.md|json`。
873
+ > `design verify` 会把 `Acceptance Criteria` 固定映射为 `checklist`,并输出 `drift` / `diagnostics`;当结果只是 `needs-review` 时保持零退出码,只有 `ok=false` 或 blocker diagnostics 才返回非零 exit code。
874
+
875
+ ### `mycodemap check`
876
+
877
+ 执行 design contract contract gate,默认输出机器可读 JSON。
878
+
879
+ ```bash
880
+ # 默认 full scan
881
+ mycodemap check --contract mycodemap.design.md --against src
882
+
883
+ # GitHub PR annotations
884
+ mycodemap check --contract mycodemap.design.md --against src --base origin/main --annotation-format github
885
+
886
+ # GitLab code quality artifact
887
+ mycodemap check --contract mycodemap.design.md --against src --base origin/main --annotation-format gitlab --annotation-file gl-code-quality-report.json
888
+
889
+ # 校准当前仓库是否允许默认 hard gate
890
+ node scripts/calibrate-contract-gate.mjs --max-changed-files 10 --max-false-positive-rate 0.10
891
+ ```
892
+
893
+ > PR 默认 hard gate 只在 calibration 通过且 `changed files <= 10` 时开启;超窗、`diff-scope-fallback` 或 `false-positive rate >10%` 时必须显式切回 `warn-only / fallback`。
894
+
895
+ ### `mycodemap history`
896
+
897
+ 符号级 Git history / risk 查询:
898
+
899
+ ```bash
900
+ # 默认输出 machine-first JSON
901
+ mycodemap history --symbol createCheckCommand
902
+
903
+ # 查询某个符号的历史轨迹与风险摘要
904
+ mycodemap history --symbol createCheckCommand
905
+
906
+ # 人类可读摘要
907
+ mycodemap history --symbol createCheckCommand --human
908
+ ```
909
+
910
+ ### `mycodemap analyze`
911
+
912
+ 统一分析入口,当前公共契约只暴露四个 intent,并统一返回结构化输出:
913
+
914
+ > 当前 public analyze contract 为 `find` / `read` / `link` / `show`;兼容期内 legacy intent 会在输出中通过 `warnings[]` 提示迁移,其中 `refactor` 已不再接受。
915
+
916
+ <!-- BEGIN GENERATED: analyze-readme-examples -->
917
+ ```bash
918
+ # 查找符号 / 文本
919
+ mycodemap analyze -i find -k SourceLocation
920
+ mycodemap analyze -i find -t src/orchestrator -k IntentRouter --json
921
+
922
+ # 阅读文件(影响 + 复杂度聚合)
923
+ mycodemap analyze -i read -t src/cli/index.ts
924
+ mycodemap analyze -i read -t src/cli/index.ts --scope transitive
925
+ mycodemap analyze -i read -t src/cli/index.ts --include-tests --json
926
+
927
+ # 关联关系(依赖 + 引用聚合)
928
+ mycodemap analyze -i link -t src/cli/index.ts
929
+ mycodemap analyze -i link -t src/interface/types.ts --json
930
+
931
+ # 展示模块概览 / 文档
932
+ mycodemap analyze -i show -t src/orchestrator
933
+ mycodemap analyze -i show -t src/domain/services --output-mode human
934
+
935
+ # 机器可读输出(JSON / structured)
936
+ mycodemap analyze -i read -t src/index.ts --json
937
+ mycodemap analyze -i link -t src/index.ts --structured --json
938
+ ```
939
+ <!-- END GENERATED: analyze-readme-examples -->
940
+
941
+ <!-- BEGIN GENERATED: analyze-readme-options -->
942
+ | 选项 | 说明 | 默认值 |
943
+ |------|------|--------|
944
+ | `-i, --intent <type>` | 分析类型:`find`/`read`/`link`/`show`(必填) | - |
945
+ | `-t, --targets <paths...>` | 目标路径(`read`/`link`/`show` 必填,`find` 可选) | - |
946
+ | `-k, --keywords <words...>` | 搜索关键词(主要用于 `find`) | - |
947
+ | `-s, --scope <scope>` | 范围:`direct`(直接)/`transitive`(传递) | `direct` |
948
+ | `-n, --topK <number>` | 返回结果数量 | `8` |
949
+ | `--include-tests` | 包含测试文件关联 | - |
950
+ | `--include-git-history` | 包含 Git 历史分析 | - |
951
+ | `--json` | JSON 格式输出 | - |
952
+ | `--human` | 强制人类可读输出(覆盖非 TTY 默认 JSON 行为) | - |
953
+ | `--structured` | 纯结构化输出(移除自然语言字段,配合 `--json` 使用) | - |
954
+ | `--output-mode <mode>` | 输出模式:`machine`/`human` | `human` |
955
+ <!-- END GENERATED: analyze-readme-options -->
956
+
957
+ > 产品目标是机器可读优先;当前实现仍以显式 `--json` / `--output-mode` 作为主要入口。
958
+ >
959
+ > legacy 兼容映射:`search → find`、`impact/complexity → read`、`dependency/reference → link`、`overview/documentation → show`;`refactor` 会返回 `E0001_INVALID_INTENT`。
960
+ >
961
+ > `--include-git-history` 现在只会在 `read` intent 上附加统一的 Git history enrichment;其他 intent 会显式给出 warning,而不是 silent noop。
962
+
963
+
964
+ ## 贡献指南
965
+
966
+ 欢迎提交 Issue 和 Pull Request!
967
+
968
+ ### 开发环境搭建
969
+
970
+ ```bash
971
+ # 克隆仓库
972
+ git clone <repo-url>
973
+ cd codemap
974
+
975
+ # 安装依赖
976
+ npm install
977
+
978
+ # 编译
979
+ npm run build
980
+
981
+ # 开发模式(监听编译)
982
+ npm run dev
983
+
984
+ # 运行测试
985
+ npm test # 功能测试(src/**/*.test.ts)
986
+ npm run benchmark # 性能基准测试(refer/benchmark-quality.test.ts)
987
+ npm run test:all # 功能 + 基准(串联执行)
988
+
989
+ # 文档 / CLI 示例护栏
990
+ npm run docs:check
991
+ # `ci check-docs-sync` 会额外校验 analyze generated block
992
+ node dist/cli/index.js ci check-docs-sync
993
+
994
+ # 类型检查
995
+ npm run typecheck
996
+
997
+ # 代码检查
998
+ npm run lint
999
+ ```
1000
+
1001
+ ### 提交规范
1002
+
1003
+ 请遵循以下 commit message 格式:
1004
+
1005
+ ```
1006
+ [TAG] scope: message
1007
+
1008
+ BUGFIX Bug 修复
1009
+ FEATURE 新功能
1010
+ REFACTOR 代码重构
1011
+ CONFIG 配置/构建变更
1012
+ DOCS 文档变更
1013
+ DELETE 删除代码/文件
1014
+ ```
1015
+
1016
+ 示例:`[FEATURE] cli: add new command`
1017
+
1018
+ ### 文件规范
1019
+
1020
+ 所有 TypeScript 源文件(除测试文件和类型定义外)头部必须包含以下注释:
1021
+
1022
+ ```typescript
1023
+ // [META] since:YYYY-MM | owner:team | stable:false
1024
+ // [WHY] 说明该文件存在的原因和业务价值
1025
+ ```
1026
+
1027
+ - `[META]`:元数据注释,包含创建时间、负责团队、稳定性状态
1028
+ - `[WHY]`:解释文件存在的业务理由,帮助 AI 理解上下文
1029
+
1030
+ ### 开发注意事项
1031
+
1032
+ - 项目使用 ESM 模块格式(`"type": "module"`)
1033
+ - TypeScript 严格模式
1034
+ - 使用 Vitest 作为测试框架
1035
+ - **提交前会自动运行与变更相关的测试,失败将阻断提交**
1036
+ - **提交前会检查文件头注释规范([META]/[WHY])**
1037
+ - 新增功能请同步补充测试和文档
1038
+
1039
+ ### 运行日志(调试追踪)
1040
+
1041
+ - CLI 运行日志默认写入 `.mycodemap/logs/codemap-YYYY-MM-DD.log`
1042
+ - 默认保留 14 天、最多保留 30 个日志文件(自动清理)
1043
+ - 可通过环境变量调整:
1044
+ - `CODEMAP_RUNTIME_LOG_ENABLED=false`:关闭运行日志
1045
+ - `CODEMAP_RUNTIME_LOG_DIR=<dir>`:自定义日志目录
1046
+ - `CODEMAP_RUNTIME_LOG_RETENTION_DAYS=<days>`:设置保留天数
1047
+ - `CODEMAP_RUNTIME_LOG_MAX_FILES=<n>`:设置最大保留文件数
1048
+ - `CODEMAP_RUNTIME_LOG_MAX_SIZE_MB=<mb>`:单个日志文件大小上限(超限后自动轮转并 gzip)
1049
+
1050
+ ## 许可证
1051
+
1052
+ [MIT](LICENSE)
1053
+ ### `mycodemap ci`
1054
+
1055
+ CI Gateway - 代码质量门禁工具:
1056
+
1057
+ ```bash
1058
+ # 验证工作区是否干净(ship 的发布前检查也复用这条规则)
1059
+ mycodemap ci check-working-tree
1060
+
1061
+ # 验证当前分支是否允许执行发布前检查
1062
+ mycodemap ci check-branch
1063
+ mycodemap ci check-branch --allow main,release/*
1064
+
1065
+ # 运行发布前脚本集合(docs/typecheck/lint/test/build/pack)
1066
+ mycodemap ci check-scripts
1067
+
1068
+ # 验证提交格式([TAG] scope: message)
1069
+ mycodemap ci check-commits
1070
+ mycodemap ci check-commits -c 5
1071
+ mycodemap ci check-commits -r origin/main..HEAD
1072
+
1073
+ # 验证文件头注释([META], [WHY])
1074
+ mycodemap ci check-headers
1075
+ mycodemap ci check-headers -d src/domain
1076
+ mycodemap ci check-headers -f "src/index.ts,src/cli/index.ts"
1077
+
1078
+ # 评估变更风险
1079
+ mycodemap ci assess-risk
1080
+ mycodemap ci assess-risk -t 0.5
1081
+
1082
+ # 验证文档同步(含 analyze generated block 校验)
1083
+ mycodemap ci check-docs-sync
1084
+
1085
+ # 验证输出契约
1086
+ mycodemap ci check-output-contract
1087
+
1088
+ # 检查提交文件数量(限制 10 个文件)
1089
+ mycodemap ci check-commit-size
1090
+ mycodemap ci check-commit-size -m 15
1091
+ ```
1092
+
1093
+ > `mycodemap ship` 的 CHECK 阶段现在复用 `ci check-working-tree`、`ci check-branch`、`ci check-scripts` 作为 must-pass 事实源,而不是重复实现这些检查。
1094
+ > `mycodemap ci check-headers -d <dir>` 与 `generate` / `analyze` 共享同一套 `.gitignore` 感知排除模块;若仓库没有 `.gitignore`,则回退到默认 `exclude` 列表。
1095
+
1096
+ 支持的提交 TAG 类型:`[REFACTOR]`, `[TEST]`, `[DOCS]`, `[FEAT]`, `[FIX]`, `[CHORE]`, `[PERF]`, `[SECURITY]`, `[BREAKING]`, `[HOTFIX]`, `[MIGRATION]`, `[WIP]`