用途:graft 为代码仓库建立图谱,节点是解释某部分代码的 markdown 卡片,并标注覆盖的精确 file:line 范围,另有 who-calls-what 的调用关系图。查询一个节点只需数百 token,比通读源码更省,且能保留调用边。
主要能力:六个命令,均免费、无需 API 密钥、一秒内返回。graft ask "<question>" --source 做排序检索,自动在 prose 节点与调用图间路由,返回带 file:line 的命中,--source 内联每个定义的关键代码;--in <path> 限定子树,-n N 限制结果数(默认 8)。graft grep "<pattern>" 对全部索引文件做正则(--fixed 为字面量)穷举查找,按外层符号分组并按耦合度排序,-i 忽略大小写。graft skeleton <file> 给出单文件签名视图。graft callers <symbol> 返回预计算的调用/引用边,--direction in 查谁调用它,out 查它依赖谁,--depth N 做 N 跳传递分析,--depth all 给出整个连通闭包。graft map 提供目录聚类、各目录枢纽与全局热点的导览。graft build / graft check 用于 LLM 层构建与 CI 陈旧检查。
使用方式:多数任务一次调用即可。概念或定位类问题用 ask;需要穷举出现位置用 grep;已知文件或符号时直接 grep 定位再编辑;重命名、删除或改签名前先用 callers --depth 2;重构或多文件改动前用 callers --depth all。各检索工具会在输出开头给出 [graft] tokens saved ≈ N 的节省估算。不要用 head、tail、sed -n 截断 graft 命令输出。
适用场景:新仓库上手、理解某流程、定位改动位置、查找全部出现、查看文件 API、调试、合并前评估 diff 风险、monorepo 中限定 --in <scope>/ 工作。
限制:graft 不索引的文件(文档、配置、全新文件)仍需原始 grep -rn。若 graft 给出的路径不在磁盘上,说明索引超前于当前检出,可 grep 该符号或运行 graft build 刷新。直接 grep graft/ 下的 markdown 卡片可能滞后,因为卡片在回合末重建。MCP 服务器连接后暴露为 graft_find_code、graft_find_all、graft_file_api、graft_trace_calls、graft_repo_map、graft_check_freshness 等工具。