Cursor 与 Claude Code 通过 MCP 连接 CodeGraph,分析 Vue 与 Spring Boot 前后端调用关系

CursorClaude Code 改接口,后端合并了、前端忘了改——这不是你一个人。本文只回答三件事:为什么漏真实案例怎么抓用 CodeGraph 怎么解决。栈是 Vue 3 + Spring Boot 分离仓;工具是 GitHub 热门的 CodeGraphMCP 接进 Agent)。

结论先行:OrderDTO.amount 时,先跑 codegraph_impact,一次列出 Java Service 与 Vue createOrder、Pinia store——正是 Cursor 最常漏的那一圈。

为什么 Cursor 总漏改前端

漏改很少是「模型不会写代码」,而是 AI Coding 看不见跨目录、跨语言的引用。在 Vue + Spring Boot 分离仓里,常见就三条:

1. Context Window:窗口里只有当前文件

Cursor 的 @ 文件、Claude Code 的 Read 都有上限。Agent 盯着 OrderController.java,不知道三百行外的 frontend/src/api/order.ts 也在用同一个 DTO 字段。换会话、换分支后,「改到哪了」更容易丢(和 Cursor 跨周失忆 叠加时更糟)。

2. Grep:能找到字符串,看不懂调用关系

默认探索靠 grep。搜 amount 会捞出日志、测试、废弃常量,却分不清谁调 OrderService.createOrder、哪个 @PostMapping 对应哪个 handler。token 花在「找入口」,不是「改全影响面」。

3. 没有 Impact Analysis:改一处,漏一片

人类改接口会先问:改这个字段,还有谁用? 没有结构化 impact 时,Agent 往往「Java 改完收工」,TypeScript、Pinia、单测留到下一轮——你以为一轮对话搞定,其实是两轮债务。

要补的不是更大的模型,而是给 Agent 一条能查调用图、依赖边、路由入口的通道。下面用真实订单接口说明。

真实案例:OrderDTO.amount

需求:POST /api/orders 的请求体里,amountnumber 改为 string(例如支持大额或格式化字符串)。仓库是典型分离结构:backend/(Controller → Service → OrderDTO),frontend/api/order.ts → Pinia → 下单页)。

无 CodeGraph 时,Cursor / Claude Code 常漏什么

我只给业务描述、不 @ 文件,让 Agent 自己探索。常见结果:

  • ✅ 改了 OrderDTO.javaOrderService
  • ❌ 漏 frontend/src/api/order.tscreateOrder 的 payload 类型
  • ❌ 漏 useOrderStore 里对 amount 的映射
  • ❌ 漏下单页 v-model 仍按数字校验

本地 mvn compile 可能仍过(Java 侧已改),pnpm build 有时也过(TS 没严格到字段级),合并后联调或上线才爆——这就是「改接口漏前端」。

对照:impact 列出的波及面(节选)

codegraph_impact
  symbol: "OrderDTO.amount"

→ OrderService.createOrder
→ OrderController.create
→ frontend/src/api/order.ts :: createOrder
→ stores/order.ts :: useOrderStore

最后一行正是以前 grep 最容易漏的 Pinia。有了清单,再在 CursorClaude Code 里按列表改,漏改率明显下降。

CodeGraph 怎么发现问题

CodeGraph 在本地用 Tree-sitter 建索引(Java / TS / Vue script),调用边写入 .codegraph/,经 MCP 暴露 codegraph_* 工具。数据默认不出本机,适合内网仓。

改这条订单接口时,我固定顺序:

  1. codegraph_context — 按任务打包 Controller、DTO、前端 API 入口(不必先 @ 路径)
  2. codegraph_trace — Spring 侧:OrderController.createOrderMapper.insert
  3. codegraph_impact — 从 OrderDTO.amount 向外扩,拉齐 Java + Vue + store
  4. codegraph_explore — 只展开相关方法,避免把八百行 Service 整文件塞进上下文

HTTP 路径与前端 axios 字符串若没有 symbol 边,仍要靠 impact 从 DTO 往外追——这正是本案例里「超出预期」的一步。更完整的工具说明与和 RAG 的对比,见 代码知识图谱选型;安装细节见下文。

团队侧建议在 AGENTS.md 写死:改 DTO 必先 codegraph_impact,并列出 frontend/src/api 与 Pinia——比单句「别忘了改前端」稳。

安装(5 分钟)

在含 frontend/ + backend/ 的仓库根目录(macOS):

curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
# 或:npx @colbymchenry/codegraph

codegraph install --target=cursor --yes   # Claude Code 选对应 target
cd /path/to/your-repo
codegraph init -i
codegraph status

首次全量索引视仓大小约十到二十分钟;排除 node_modulestargetdist。保存文件后约 2 秒防抖增量同步;MCP 返回 ⚠️ Pending sync 时让 Agent 直接 Read 源文件。

结果对比

方式工具调用(同任务,体感)前端是否在清单里
仅 grep + Read15+经常漏 Pinia / API 层
CodeGraph MCP 先行5~6impact 一次列出前后端

官方 Java 基准(OkHttp ~645 文件)中位从 10 次降到 3 次(2026-05-29);Vue + Spring 分离仓我的体感接近「少一半以上探索」。图谱不替代测试:合并前仍跑 mvn test + pnpm test:unit

大仓库索引的现实问题

首次 codegraph index 时,CPU 占用高、SQLite 写入频繁、风扇狂转——若同时开 IDEA 编译 Spring、pnpm build Vue,Cursor 里连 MCP 查询都会卡。

很多团队会把「克隆 + 全量索引 + 定时重建」放到专用机器:Mac mini、CI 节点或 Cloud Mac;本地笔记本只开 Cursor / Claude Code 做编码与 MCP 查询。我这边索引跑在按天租的 Macstripe M4 上,和本机构建错峰;worktree 与 CI 策略可参考 企业 Mac CI FAQ

「Cloud Mac + CodeGraph 部署」值得单独写一篇;本文只点到:索引与交互分离,体验会稳很多。

总结

Cursor 改接口总漏前端,根因通常是:上下文有限 + grep 不懂调用 + 没有 impact。在 Vue + Spring Boot 仓里,用 CodeGraph MCPcontexttraceimpact,能把 DTO 改动的前后端清单一次拉齐,工具调用从十几轮探索降到几轮结构化查询。

固定动作:init 索引 → impact(改 DTO 前)→ 按清单改 → 测试。概念科普、Claude Code 读大仓、Cloud Mac 部署可以拆成系列文——下面延伸阅读。

延伸阅读