用 Cursor 或 Claude Code 改接口,后端合并了、前端忘了改——这不是你一个人。本文只回答三件事:为什么漏、真实案例怎么抓、用 CodeGraph 怎么解决。栈是 Vue 3 + Spring Boot 分离仓;工具是 GitHub 热门的 CodeGraph(MCP 接进 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 的请求体里,amount 从 number 改为 string(例如支持大额或格式化字符串)。仓库是典型分离结构:backend/(Controller → Service → OrderDTO),frontend/(api/order.ts → Pinia → 下单页)。
无 CodeGraph 时,Cursor / Claude Code 常漏什么
我只给业务描述、不 @ 文件,让 Agent 自己探索。常见结果:
- ✅ 改了
OrderDTO.java、OrderService - ❌ 漏
frontend/src/api/order.ts里createOrder的 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。有了清单,再在 Cursor 或 Claude Code 里按列表改,漏改率明显下降。
CodeGraph 怎么发现问题
CodeGraph 在本地用 Tree-sitter 建索引(Java / TS / Vue script),调用边写入 .codegraph/,经 MCP 暴露 codegraph_* 工具。数据默认不出本机,适合内网仓。
改这条订单接口时,我固定顺序:
codegraph_context— 按任务打包 Controller、DTO、前端 API 入口(不必先 @ 路径)codegraph_trace— Spring 侧:OrderController.create→OrderMapper.insertcodegraph_impact— 从OrderDTO.amount向外扩,拉齐 Java + Vue + storecodegraph_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_modules、target、dist。保存文件后约 2 秒防抖增量同步;MCP 返回 ⚠️ Pending sync 时让 Agent 直接 Read 源文件。
结果对比
| 方式 | 工具调用(同任务,体感) | 前端是否在清单里 |
|---|---|---|
| 仅 grep + Read | 约 15+ 次 | 经常漏 Pinia / API 层 |
| CodeGraph MCP 先行 | 约 5~6 次 | impact 一次列出前后端 |
官方 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 MCP 先 context → trace → impact,能把 DTO 改动的前后端清单一次拉齐,工具调用从十几轮探索降到几轮结构化查询。
固定动作:init 索引 → impact(改 DTO 前)→ 按清单改 → 测试。概念科普、Claude Code 读大仓、Cloud Mac 部署可以拆成系列文——下面延伸阅读。