mcpField
C
codemap

codemap

github.com/ulpi-io开发5167 次安装10 周前更新
代码仓库

关于 codemap

codemap 是一项指导开发者使用 codemap CLI 探索代码库的技能,适用于语义搜索、符号查找和依赖分析。它强调先确认索引状态,再选择范围最窄的查询,也可通过 MCP 服务提供工具访问。

主要功能

  1. 01混合向量与 BM25 代码搜索
  2. 02查找函数、类和类型符号
  3. 03查看文件摘要与依赖关系
  4. 04分析重要性、耦合和循环依赖
  5. 05索引状态检查与文件变更监视

适用场景

  1. 01按意图查找实现代码
  2. 02追踪文件的依赖方与被依赖方
  3. 03检查代码库架构健康状况

MCP 相关

codemap 可通过 `codemap serve` 作为 MCP 服务运行,向 Agent 暴露代码搜索等工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ulpi-io/skills --skill codemap

安装后在 Claude Code 中输入/codemap确认已加载。

详细介绍

只有在代码仓库已建立索引,且命令与问题相匹配时,`codemap` 才能发挥作用。

不可妥协的规则:

  1. 依赖结果之前,先检查 codemap --version 和 codemap status。
  2. 如果项目尚未配置 codemap,运行 codemap init 前先征求同意。
  3. 优先使用能够回答问题的最精简 codemap 命令。
  4. 需要解读结构化结果时,优先使用机器可读的输出。
  5. 不要仅为了启用 codemap 而自动修改 Claude 或项目设置。

codemap

输入

  • $request:搜索或分析目标

目标

在以下情况下,使用 codemap CLI 回答架构和探索类问题,以获得比纯文本搜索更准确的结果:

  • 目标是语义而非字面内容
  • 需要查找符号
  • 需要了解依赖方向
  • 需要了解文件的重要性或耦合程度

第 0 步:验证工具可用性和索引状态

检查:

  • codemap --version
  • codemap status

如果缺少 codemap,告知用户使用 npm install -g @ulpi/codemap 安装,然后停止。不要自动安装。

如果仓库尚未配置:

  • 说明 codemap init 会创建项目配置
  • 运行 codemap init 前先征求同意
  • 配置完成后,运行 codemap index

如果仓库已配置,但索引已过时,则运行 codemap index 重新建立索引。

成功标准:当前仓库已建立可用的 codemap 索引。

第 1 步:选择合适的命令

命令参考
命令功能关键标志
codemap search <query>混合向量搜索与 BM25 代码搜索-l N、--json
codemap symbols <query>按名称查找函数、类和类型-l N、--json
codemap summary <file>查看文件概览、符号和大小--json
codemap deps <file>查看导入项(此文件使用的内容)--json
codemap dependents <file>查看导入此文件的内容(使用此文件的内容)--json
codemap rank [file]查看 PageRank 重要性评分-l N、--json
codemap coupling查看内聚合/外聚合耦合度和不稳定性--module <path>、-l N、--json
codemap cycles检测循环依赖--json
codemap graph-stats查看依赖图的汇总统计信息--json
codemap index为项目建立搜索索引--full
codemap status显示索引统计信息--json
codemap watch文件变更时实时更新索引--debounce <ms>
codemap read <file>读取完整源代码(或指定行范围)--start、--end
codemap serve通过 stdio 启动 MCP 服务
快速选择命令
目标命令
查找执行 X 的代码codemap search "X"
查找名为 X 的函数/类codemap symbols "X"
此文件依赖什么?codemap deps <file>
什么内容依赖此文件?codemap dependents <file>
最重要的文件codemap rank
是否存在循环依赖?codemap cycles
查看文件概览codemap summary <file>
评估架构健康状况codemap coupling
查看项目统计信息codemap graph-stats

需要结构化输出而非文本说明时,优先使用 --json。

成功标准:命令与实际问题相匹配,不要过度获取结果。

第 2 步:运行最精简且有用的 codemap 查询

从范围较窄的查询开始:

  • 限制结果数量
  • 已知文件或模块时,指定具体文件或模块
  • 每次只分析一个维度

只有在首批结果明显不足时,才扩大查询范围。

规则:

  • 不要“以防万一”运行所有 codemap 命令
  • 使用精确的 grep 更简单时,不要使用 codemap
  • 找到文件后,如需查看文件内容,请对返回的具体文件路径使用 Read

成功标准:使用 codemap 进行探索,并且只对相关的具体文件使用 Read。

步骤 3:以便于决策的形式报告结果

总结:

  • 使用了什么命令
  • 为什么该命令合适
  • 最相关的结果
  • 值得继续打开查看的文件

如果没有显著结果,请明确说明,而不是给出毫无依据的确定结论。

成功标准:用户无需解析原始 codemap 输出,即可根据结果采取行动。

MCP 替代方案

Codemap 也可以作为 MCP 服务运行,让 AI Agent 无需使用 Bash 即可直接调用工具:

claude mcp add codemap codemap serve

这会开放 mcp__codemap__search_code、mcp__codemap__search_symbols 等工具。CLI 技能(即此文件)使用 Bash 命令。MCP 则为 Agent 提供原生工具调用。两者都可用,按 Agent 设置选择即可。

防护措施

  • 不要自动修改设置文件来添加权限。
  • 未经用户批准,不要运行 codemap init 来创建新配置。
  • 不要将过时或为空的索引视为权威来源。
  • 如果简单的精确匹配工具已足够,不要改用 codemap。
  • 不要添加 disable-model-invocation;这是一项通用发现技能。

输出约定

报告:

  1. codemap 是否可用以及索引状态
  2. 选择的命令
  3. 最相关的命中结果或图谱结果
  4. 如需深入阅读,接下来要打开的文件
  5. 索引缺失或结果不明显等限制

评论

支持 Markdown