AI Research

CodeGraph 实战:在 shield monorepo 上做 A/B 基准测试

2026-06-15 #research#ai-models#claude-code#mcp#code-intelligence#benchmark

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 注册)?

发现

  1. 整体 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%
  2. 跨包跨层问题收益最大 — 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 个文件,after codegraph_callers 直接列调用链,3 turns 收工,省 54% 成本。

  3. 单目录列举类问题反向亏损 — Q2 列 Nuxt pages/ 目录、Q3 列 shared-store/ 三个 store 文件,都是 1-3 个文件能解决的小问题。两题在接入 CodeGraph 后分别 +18.4% 和 +80.8% input token、**+27.6% 和 +73.8% 成本**——模型先 codegraph_searchcodegraph_explore 再 Read,比 baseline 直接 Glob+Read 多绕了步。

  4. LLM 选路不稳定,会出现”反问代替干活”的退化 — 5 题里有 2 题首次跑出现退化:Q4 baseline “请告诉我哪个仓库”、Q5 after “工作目录没有索引的代码库”。修复方法:在 prompt 里明确”你已经位于目标仓库根目录,请直接回答”,重跑就稳定了。这种抖动跟 CodeGraph 无关,是模型本身的非确定性。

  5. 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。

  6. 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) bash set -u 与空数组冲突,需用 ${ARR[@]+"${ARR[@]}"}

  7. 接入与卸载零摩擦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 的两个场景
    1. “改了 X 影响哪些测试 / 谁调用了 Y” 这种跨文件依赖问题
    2. 给 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
评论
分享