1. 为什么 Claude Code 查代码总在“翻文件”:CodeGraph 要解决的场景
Claude Code 在本地写代码时,最常干的一件事不是写,而是找。它默认会调用 grep、glob、read 这几个工具,一层层扫目录、匹配关键字、把命中的文件整段读进上下文。项目小的时候没什么感觉,一旦仓库到了几万行、几十个模块,问题就暴露了:一次“这个接口调了哪些 Service”的提问,它可能要读十几个文件才拼出答案,Token 哗哗地烧,响应也慢。
CodeGraph 这个开源项目就是冲着这个痛点来的。它给代码库预先构建一张知识图谱,把符号关系、调用图、代码结构都抽出来存好,AI 编程工具需要查代码时直接查图谱,而不是逐个文件扫描。GitHub 上短短几天涨到 2.8 万 Star,官方给出的数据是平均减少 57% 的 Token 消耗、提升 46% 的完成速度、减少 71% 的工具调用次数。这几个数字对天天用 Claude Code 的人来说,吸引力很直接。
它适合谁?我总结下来是三类:一是本地仓库文件多、模块深的开发者,尤其是微服务、多模块项目;二是对 Token 成本敏感、按量付费的用户;三是想让 Claude Code 在 Agent 模式下少走弯路的团队。CodeGraph 本身通过 MCP(Model Context Protocol)接入 Claude Code,所以配置的核心就是两件事:装好 CodeGraph CLI,把 MCP server 写进 Claude Code 的配置里。
这篇就按本地开发环境的实际路径走一遍:npm 安装、初始化代码图谱、写 MCP 配置片段、在 Claude Code 侧确认连接、跑一次真实的图谱查询验证工具链。每一步都给可复制的命令和配置,你照着做就能跑通。
2. 前置准备:npm 安装 CodeGraph 与 TaoToken 接入 Claude Code 的配置
先说清楚这一节要准备的两块东西:CodeGraph 本体,以及 Claude Code 背后调用的模型服务。CodeGraph 负责建图谱、提供 MCP 工具,模型服务负责理解你的提问并决定调用哪个工具。两者缺一不可。
2.1 用 npm 安装 CodeGraph
CodeGraph 发布在 npm 上,最省事的方式是直接用 npx 拉起交互式安装:
npx @colbymchenry/codegraph执行后会进入一个交互界面,问你几个问题:要装到哪个编程工具里(这里选 Claude Code)、是否把 codegraph CLI 加到 PATH。按需选择即可。如果你希望全局可用,也可以先装再初始化:
npm install -g @colbymchenry/codegraph codegraph --version装完之后,进入你的项目目录初始化代码图谱。如果你就是在项目根目录下执行的安装,它会自动初始化;其他情况手动来:
cd your-project codegraph init -iinit -i会扫描项目、建立索引、生成图谱数据。项目越大这一步耗时越长,耐心等它跑完。想卸载的话:
codegraph uninstall2.2 准备 Claude Code 的模型接入
Claude Code 需要一个可用的模型端点。这里我用 TaoToken 来做接入,它的 API 地址是https://taotoken.net/api,兼容 Anthropic 的接口格式,Claude Code 可以直接对接。先去控制台创建一个 API Key:
# 控制台创建 Key 后,配置到环境变量 export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的Key"如果你用的是 Claude Code 的 settings.json 方式管理配置,可以写进用户级配置文件。下面这段是 Claude Code 侧的可复制配置,路径按你的系统来(macOS/Linux 一般是~/.claude/settings.json,Windows 是%USERPROFILE%\.claude\settings.json):
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" } }注意:Key 不要提交到 Git 仓库,建议用环境变量或本地配置文件管理。TaoToken 的接入文档里有更细的说明,遇到鉴权问题可以先对照文档排查。
模型 ID 这块,Claude Code 默认会用它自己的模型名,TaoToken 侧做了映射,你不需要额外改。如果你在别的工具里手动指定,记得填对应的 Model ID。到这里,CodeGraph 和模型服务两块前置就齐了,接下来把它们接起来。
3. 可复制配置:把 CodeGraph 的 MCP server 写进 Claude Code
这一节是全文的核心,配置写对了,后面验证就是水到渠成。CodeGraph 通过 MCP 协议暴露工具,Claude Code 作为 MCP 客户端去调用。配置分两处:CodeGraph 侧的 MCP server 定义,以及 Claude Code 侧的 settings.json。
3.1 CodeGraph 的 MCP server 配置片段
CodeGraph 安装后会在项目里生成 MCP 相关的配置。典型的 MCP server 定义长这样,你可以放在项目根目录的.mcp.json或 Claude Code 的 MCP 配置里:
{ "mcpServers": { "codegraph": { "command": "codegraph", "args": ["mcp", "--project", "."], "env": {} } } }这里的command是 codegraph CLI,args里的mcp表示以 MCP server 模式启动,--project .指向当前项目。如果你全局装了 codegraph,command 直接写codegraph就行;如果是局部安装,写npx加包名:
{ "mcpServers": { "codegraph": { "command": "npx", "args": ["-y", "@colbymchenry/codegraph", "mcp", "--project", "."] } } }3.2 Claude Code 侧 settings.json 完整配置
把模型接入和 MCP server 合并到一份 settings.json 里,方便统一管理。下面这份是完整可复制的,路径和字段都按 Claude Code 的实际约定来:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" }, "mcpServers": { "codegraph": { "command": "codegraph", "args": ["mcp", "--project", "."], "env": {} } } }三件套对齐一下:Base URL 是https://taotoken.net/api,Key 是你控制台创建的sk-开头字符串,Model ID 在 Claude Code 里走默认映射,不用手填。如果你在 Cline、Codex 这类工具里也接 CodeGraph,配置思路一样,把 MCP server 段复制过去即可,Codex 的auth.json里放 Key,MCP 段放 server 定义。
提示:MCP server 的
--project参数建议用绝对路径,避免 Claude Code 在不同工作目录启动时找不到图谱。比如--project /Users/you/code/mall-swarm。
配置写完后,重启 Claude Code,让它重新加载 MCP server。启动时如果弹出“是否使用该 MCP 服务”的询问,选是。接下来进入验证环节。
4. 验证请求:用一次代码图谱查询确认工具链跑通
配置对不对,跑一次就知道。这一节我用一个真实的查询动作来验证:让 Claude Code 分析某个 Controller 里方法的调用链,看它是不是走了 CodeGraph 的图谱工具,而不是 grep 扫文件。
4.1 确认 MCP 状态
在 Claude Code 里输入斜杠命令:
/mcp正常情况下会列出已连接的 MCP server,看到codegraph处于 connected 状态就说明 MCP 接上了。如果显示 failed 或没出现,先别急着往下走,去第 5 节排查。
4.2 发起一次图谱查询
我拿一个多模块项目试过,提问是这样的:
分析下 UmsAdminController 里 login 方法的 API 路径, 该方法调用了哪些 Service 组件,这些 Service 又调用了哪些 Mapper 或 Dao。装了 CodeGraph 之后,Claude Code 在需要查代码时会调用 CodeGraph 提供的工具,直接查图谱拿符号关系和调用图。你能在工具调用记录里看到它走的是 codegraph 的查询接口,而不是一串 grep、read。没装的话,它会用 grep 匹配login、read 打开文件,来回扫。
4.3 对比结果
官方在 7 个真实开源代码库、7 种语言上做过测试,效果比较稳定。我自己的观察和官方数据方向一致:
| 指标 | 使用 CodeGraph | 不使用 CodeGraph |
|---|---|---|
| 完成速度 | 38s | 43s |
| Token 消耗 | 850k | 980k |
| 工具调用次数 | 明显更少 | 频繁 grep/read |
速度提升看着不算夸张,但 Token 和工具调用次数的下降在长会话里会累积,越到后面差距越明显。验证通过的标准很简单:/mcp显示 connected,提问后工具调用记录里出现 codegraph 的查询,返回的调用链结果准确。三条都满足,工具链就跑通了。
5. 本篇常见错排查:401、local proxy failed 与 reading choices 报错
配置过程中最容易卡在几个固定报错上,这一节按真实报错逐个拆。
401 Unauthorized:模型侧鉴权失败。先确认ANTHROPIC_API_KEY是不是sk-开头、有没有多余空格,再确认ANTHROPIC_BASE_URL是https://taotoken.net/api,结尾不要多加斜杠。Key 过期或额度用尽也会返回 401,去控制台看一眼用量。
local proxy failed / connection refused:Claude Code 连不上模型端点。多数是 Base URL 写错,或者本地网络把请求拦了。检查 settings.json 里的 URL 拼写,确认没有把/api漏掉。如果公司网络有出口限制,换网络环境再试。
reading choices 报错:这类报错通常出现在响应解析阶段,说明返回体格式和客户端预期不一致。常见原因是 Base URL 指向了不兼容的端点,或者中间有别的服务改写了响应。确认你用的是 TaoToken 的 API 地址,别混用其他端点。
MCP server 起不来 / codegraph 命令找不到:command字段写的codegraph不在 PATH 里。要么用npx -y @colbymchenry/codegraph替代,要么把全局安装的 bin 目录加进 PATH。另外确认--project指向的目录里已经跑过codegraph init -i,没有图谱数据 MCP server 也会报错。
OAuth 相关报错:如果你在别的工具里配了 OAuth 流程,注意 Claude Code 走的是 API Key 方式,不需要 OAuth。把 OAuth 相关配置去掉,只留 Base URL 和 Key。
排查顺序建议:先/mcp看 server 状态,再单独跑codegraph mcp --project .看 CLI 能不能起来,最后用 curl 直接打模型端点确认鉴权。分层定位,比一股脑改配置快得多。
6. 把 CodeGraph 用顺:接入文档、模型验证与长期编码的分流建议
工具链跑通只是开始,后面怎么用顺、怎么按场景选对入口,才是省时间的关键。
如果你卡在接入和排障上,优先看接入文档和 API Keys 管理页,把 Base URL、Key、Model ID 三件套对齐,大部分连接问题都能自己解决。文档里有各工具的配置示例,照着改比猜快。
如果你想先验证模型本身通不通、回答质量如何,可以直接在模型对话里试几个问题,确认端点可用再往 Claude Code 里接。这一步能帮你排除“是模型问题还是配置问题”。
如果你是要长期用 Claude Code 做编码、跑 Agent 任务,建议走 Coding Plan,额度和调用方式更适合高频场景,不用每次担心按量计费的波动。CodeGraph 这种减少 Token 消耗的工具,配合合适的套餐,长期成本会更可控。
回到 CodeGraph 本身,我的经验是:项目文件少的时候它带来的提升有限,甚至初始化图谱的时间比省下的还多;但仓库一旦上了规模,尤其是多模块、跨服务调用多的项目,它减少的工具调用次数非常可观。装完之后记得在项目根目录跑一次codegraph init -i,之后代码有大的结构变动,重新初始化一次图谱,查询结果会更准。