CodeGraph 实战:在 shield monorepo 上做 A/B 基准测试
摘要
在一个真实的 21 子包 / 3,028 文件的 Vue+Nuxt monorepo(/Users/liting/Documents/work/shield)上,对接入 CodeGraph 前后做了 5 个探索类问题的 A/B 基准测试。结果:整体 input token -50.8%、turns -55.1%、时延 -46.1%、成本 -46.4%;其中跨文件最复杂的”商业化按年/按月混买”问题 省了 73%($3.45 → $0.94,34 turns → 8 turns)。但同时发现两个反例(单目录列举类问题 +18% ~ +81% token)和两次 LLM 退化(”反问代替干活”),说明 CodeGraph 不是万能加速器,而是跨文件依赖问题的加速器。
研究问题
- 在真实业务仓库(不是开源 demo)上,CodeGraph 究竟能省多少 token / 成本?
- 官方 -47% Token / -16% 成本的中位数在我的仓库上能复现吗?
- 哪些类型的问题受益最大、哪些反而吃亏?
- 实测过程中会遇到哪些工程坑(CLI、代理、MCP 注册)?
发现
整体 5 题合计:input -50.8% / 成本 -46.4% / turns -55.1% / 时延 -46.1% — 量级与 CodeGraph 官方在 7 个开源仓的中位数(-47% Token / -16% 成本 / -58% 工具调用)一致;本测在 token 上甚至更高。具体见下表(Baseline = 禁用所有 MCP,After = 启用 codegraph MCP)。
指标 Baseline After Δ Input tokens 合计 3,009,608 1,481,901 -50.8% Output tokens 合计 11,311 5,857 -48.2% Turns 合计 69 31 -55.1% 时延合计 (s) 419.2 225.9 -46.1% 成本合计 ($) 5.7887 3.1006 -46.4% 跨包跨层问题收益最大 — Q5”商业化-按年按月混买拦截”涉及 admin 子包的
purchase.vue+shared-composables/src/purchase/use-purchase.ts+ 三个增购子页,baseline 用 34 turns / 195s / $3.45 才理清;after 用codegraph_explore "purchase billing"一击命中,**8 turns / 55s / $0.94,省 73%**。Q4 鉴权流程同理:baseline 11 turns 串 4 个文件,aftercodegraph_callers直接列调用链,3 turns 收工,省 54% 成本。单目录列举类问题反向亏损 — Q2 列 Nuxt
pages/目录、Q3 列shared-store/三个 store 文件,都是 1-3 个文件能解决的小问题。两题在接入 CodeGraph 后分别 +18.4% 和 +80.8% input token、**+27.6% 和 +73.8% 成本**——模型先codegraph_search再codegraph_explore再 Read,比 baseline 直接 Glob+Read 多绕了步。LLM 选路不稳定,会出现”反问代替干活”的退化 — 5 题里有 2 题首次跑出现退化:Q4 baseline “请告诉我哪个仓库”、Q5 after “工作目录没有索引的代码库”。修复方法:在 prompt 里明确”你已经位于目标仓库根目录,请直接回答”,重跑就稳定了。这种抖动跟 CodeGraph 无关,是模型本身的非确定性。
CodeGraph 索引规模与建立成本 — 在 shield 上跑
codegraph init:3,028 文件 → 39,136 节点 / 112,605 边 / 95.34 MB SQLite,几分钟解析完,过程不消耗任何 LLM token。识别 component 1,606、function 6,876、route 741、import 9,781、interface 1,617。A/B 测试可复现的工程要点 — 用
claude -p ... --output-format json做基线,用--strict-mcp-config --mcp-config '{"mcpServers":{}}'在 baseline 端完全禁用 MCP,two-side fresh 进程对齐 prompt cache。三个必须踩过的坑:(a)claude -p子进程会吃 stdin 导致 while-read 退出,必须< /dev/null重定向;(b) 腾讯内部 Claude 代理在并行 toolUse 时会报duplicate Ids,必须在 prompt 里强制”每回合最多调一个工具”;(c) bashset -u与空数组冲突,需用${ARR[@]+"${ARR[@]}"}。接入与卸载零摩擦 —
npm i -g @colbymchenry/codegraph安装;codegraph install --target claude --location global -y把 MCP 写进~/.claude.json和~/.claude/CLAUDE.md;卸载用codegraph uninstall+codegraph uninit,不留残留。
单题明细
| ID | 题目 | Input tokens (base→after) | Δ% | Turns | 时延 s | $ | Δ% |
|---|---|---|---|---|---|---|---|
| Q1 | 架构总览 | 370,905 → 259,476 | -30.0% | 11 → 6 | 77 → 48 | $0.76 → $0.56 | -25.9% |
| Q2 | 入口与路由 | 233,334 → 276,255 | +18.4% | 7 → 7 | 44 → 56 | $0.44 → $0.57 | +27.6% |
| Q3 | 状态管理 | 193,364 → 349,637 | +80.8% | 6 → 7 | 33 → 41 | $0.40 → $0.70 | +73.8% |
| Q4 | 鉴权流程 | 373,251 → 138,517 | -62.9% | 11 → 3 | 70 → 26 | $0.74 → $0.34 | -53.7% |
| Q5 | 商业化逻辑 | 1,838,754 → 458,016 | -75.1% | 34 → 8 | 195 → 55 | $3.45 → $0.94 | -72.9% |
对比与判断
- 对得上官方宣传:本测 -47% input / -46% 成本与 CodeGraph 官方 7 仓中位数(-47% / -16%)量级一致;在大问题上 -73% 成本远超官方均值,符合”跨文件越多收益越大”的预期。
- 不要无脑接入:Q2 / Q3 的反例提醒:单文件 / 单目录的简单问题接 CodeGraph 反而多绕步。经验阈值:问题跨越 ≥3 个目录 或 ≥2 个子包 或 涉及调用链 → 用 CodeGraph 收益巨大;问题局限在单一目录 / 列举性查询 → 让 Claude 自己选(它多数时候不会主动用 CodeGraph,损耗很小)。
- 必须用 CodeGraph 的两个场景:
- “改了 X 影响哪些测试 / 谁调用了 Y” 这种跨文件依赖问题;
- 给 AI 写需求文档前的”项目体检”——一句
codegraph_explore抵 grep 三十次。
- CodeGraph 没引入幻觉:5 题对仓库定位全部准确,文件/函数引用真实可对应;Q4/Q5 在 after 端答得反而更结构化(直接列文件/函数/调用链)。
不确定性
- 5 题样本量较小、单次跑(未做 N=3 重复取中位),存在 LLM 抖动放大空间。Q3 后续若加大样本,反向比例可能下降。
- 模型走的是腾讯内部代理(claude-sonnet-4-6 + claude-haiku-4-5 自动调度),
total_cost_usd是内部账单口径;与 Anthropic 官方计价表的绝对值可能不同,但百分比变化仍可比。 - Prompt cache 跨进程的影响虽通过两侧对称的 fresh 进程对齐,但腾讯代理对 cache 的实现细节未公开,存在系统性偏差的可能。
- “禁止并行调用工具”的 prompt 约束在两侧都生效,可能让 baseline 比”自然 Claude”更慢——若直接对比”自然 Claude vs 接 CodeGraph 的 Claude”,baseline 可能更快、节省比例可能略低。
- 仅测了探索类问题,未测代码生成 / 代码修改类(比如”帮我加一个新 store”)。生成类问题中 CodeGraph 的收益形态可能不同。
后续行动
- 在另外 1-2 个不同形态的仓库上重跑同一组 prompt(比如纯 TypeScript 后端、Python 单包项目),观察收益曲线是否一致。
- 加测代码修改类问题:让 Claude 在两端各做一次”在 shared-utils 里加一个工具函数 + 在 app-pc 中调用”,对比 token 与正确率。
- 把退化检测脚本(
aggregate.py中的is_degraded)泛化成通用的 A/B 评测库,输出包含质量分的对比表。 - 跟踪 CodeGraph hosted 版本(getcodegraph.com waitlist)发布动态,看团队层共享索引的可行性。
来源
- 测试产物归档:
research/bench/codegraph-shield/(含REPORT.md/prompts.txt/run_bench.sh/rerun_one.sh/aggregate.py/baseline/Q1-Q5.json/after/Q1-Q5.json/logs/) - CodeGraph GitHub
- CodeGraph 官方站点
- 配套调研篇:《CodeGraph 深度研究:本地代码知识图谱与 AI Agent 加速器》(同一仓库
research/notes/2026-06-15-codegraph-深度研究本地代码知识图谱与-ai-agent-加速器.md)