昨天刷热榜看到有人讨论 Augment Code,评论区一堆人在争"到底比 Cursor 强在哪"。说实话我之前也觉得——又一个 AI 编程工具,能有啥新花样?
直到我发现了它的 Context Engine MCP。
这玩意的思路很野:不是让你换编辑器,而是把 Augment 的"大脑"作为 MCP 服务塞进你现有的工具里。Cursor、Claude Code、Zed、Copilot,随便你用哪个,都能接上。
我测了 3 天,结论是——在大项目上,效果确实炸裂。 小项目嘛...聊胜于无。
先说结论
| 场景 | 原生 Cursor | + Context Engine MCP | 提升 |
|---|---|---|---|
| 跨文件重构(10+ 文件) | 经常漏改、改错引用 | 基本全对,偶尔需手动微调 | ⭐⭐⭐ |
| 新需求开发(已有代码库) | 不了解项目约定,代码风格混乱 | 能遵循项目现有模式 | ⭐⭐⭐ |
| Bug 修复(复杂调用链) | 只看当前文件,经常治标不治本 | 能追溯到根因所在的文件 | ⭐⭐⭐ |
| 简单脚本/新项目 | 够用 | 没明显区别 | ⭐ |
| 代码补全速度 | 快 | 略慢 0.5-1s | ⭐(反而降了) |
急性子看到这就够了,下面是完整的折腾过程。
为啥大项目 AI 编程这么拉胯?
做过大项目的应该都有体会:你让 Cursor 改一个接口的返回格式,它改了 controller 层,但 service 层的类型没同步,前端调用也没更新。你跟它说"全改了",它说"好的已经修改完成"——然后 TypeScript 编译 50 个报错。
根本原因很简单:上下文不够。
Cursor 的上下文窗口是有限的,就算开了 codebase indexing,本质上也是基于关键词的搜索。它不真正"理解"你的代码架构——哪个 service 调了哪个 repository,哪个组件依赖了哪个 hook,这些关系它是模糊的。
Augment 的 Context Engine 做的事情不一样。它会对整个项目建一个语义索引,不是简单的全文搜索,而是理解代码的结构、依赖关系和调用链路。据官方说能处理 10 万+ 文件的项目。
关键是——它把这个能力包装成了 MCP 服务,你不用换编辑器。
安装过程(5 分钟搞定)
1. 注册 Augment 账号
去 augmentcode.com 注册,Indie 计划 $20/月,有 14 天免费试用。
2. 在 Cursor 里配置 MCP
在项目根目录创建 .cursor/mcp.json:
{
"mcpServers": {
"augment-context": {
"command": "npx",
"args": ["-y", "auggie-context-mcp@latest"]
}
}
}
重启 Cursor,第一次启动会弹出浏览器让你登录 Augment 账号授权。
3. 在 Claude Code 里配置
如果你用 Claude Code,在项目根目录的 .mcp.json 里加:
{
"mcpServers": {
"augment-context": {
"command": "npx",
"args": ["-y", "auggie-context-mcp@latest"]
}
}
}
4. 等索引建完
这一步是最磨人的。首次运行会对项目建语义索引,我的项目大概 8 万行代码,花了差不多 6 分钟。大项目可能更久,但后续增量更新很快。
终端里能看到进度:
[augment] Indexing project... 23,456 / 48,912 files
[augment] Building dependency graph...
[augment] Index complete. 48,912 files, 312 modules, 2,847 cross-references.
实测:3 个真实场景
场景 1:跨文件接口重构
我们项目有个 UserService.getProfile() 方法,要改返回格式——把嵌套的 address 字段拍平成 city、province、street 三个顶层字段。
原生 Cursor 的表现:
- 改了
UserService.ts的返回类型 ✅ - 改了
UserController.ts的接口文档 ✅ - 漏掉了
UserTransformer.ts里的转换逻辑 ❌ - 前端
useUserProfile.tshook 里的解构完全没动 ❌ - 单元测试
user.service.spec.ts的 mock 数据没更新 ❌
加了 Context Engine 后:
- 自动识别了所有 7 个相关文件
- 连测试的 fixture 数据都给改了
- 唯一漏掉的是一个 E2E 测试里 hardcode 的 JSON——但这个确实比较隐蔽
这就是语义索引和关键词搜索的差距。Context Engine 知道 UserTransformer 的输出会被 UserController 用,而 Cursor 只能靠文件名和 import 猜。
场景 2:基于现有模式开发新功能
让它参考现有的 OrderModule 写一个 PaymentModule,包括 controller、service、entity、DTO。
原生 Cursor 写出来的代码能跑,但风格跟项目完全不搭——用了不同的装饰器写法、不同的错误处理模式、DTO 校验方式也不一样。
Context Engine 加持后,生成的代码基本上就是项目代码的"延续":
// 它自动遵循了项目的错误处理模式
@Post('refund')
async createRefund(@Body() dto: CreateRefundDto) {
const result = await this.paymentService.createRefund(dto);
if (result.isFailure()) {
// 项目统一用 Result 模式,不是直接 throw
return ApiResponse.fail(result.error);
}
return ApiResponse.ok(result.value);
}
这段代码的风格跟项目里其他 controller 完全一致——包括 Result 模式、ApiResponse 封装,甚至连参数命名的习惯都对了。原生 Cursor 写出来的大概率是 throw new HttpException()。
场景 3:复杂 Bug 追踪
有个线上问题:用户偶尔会收到两封相同的通知邮件。
让 Cursor 查,它在 NotificationService.send() 里找了半天,说"没发现重复调用的逻辑"。因为重复的根因不在这——是上游的 EventBus 在 RabbitMQ 重连后会重发消息,而 NotificationHandler 没有做幂等校验。
Context Engine 给出的分析直接定位到了 EventBus 的重连逻辑和 NotificationHandler 缺少幂等 key 的问题。它甚至建议了修法:
// NotificationHandler.ts
async handle(event: NotificationEvent) {
// Context Engine 建议加的幂等校验
const idempotencyKey = `notification:${event.userId}:${event.type}:${event.triggerId}`;
const exists = await this.redis.get(idempotencyKey);
if (exists) {
this.logger.warn(`Duplicate notification skipped: ${idempotencyKey}`);
return;
}
await this.redis.set(idempotencyKey, '1', 'EX', 3600);
await this.notificationService.send(event);
}
踩坑记录
坑 1:索引卡死在 node_modules
首次索引如果没有配 .augmentignore,它会尝试索引 node_modules,然后就卡住了。
解决:项目根目录创建 .augmentignore:
node_modules/
dist/
.next/
coverage/
*.min.js
坑 2:跟 Cursor 自带的 codebase indexing 冲突
两个索引系统同时工作,偶尔会出现 Cursor 给的上下文和 Context Engine 给的上下文打架的情况。建议在 Cursor Settings 里把 Codebase Indexing 关掉,全部交给 Context Engine。
坑 3:token 消耗翻倍
因为 Context Engine 会注入大量上下文,每次请求的 token 数会明显增加。一天下来 token 用量大概是原来的 1.8-2.2 倍。
这里有个省钱技巧:Claude Code 的底层模型 API 不一定要走官方。我把 API 请求指向了 ofox.ai 的聚合接口,改个 base_url 就行,价格上有优势,而且国内延迟低很多,Context Engine 注入的大上下文传输速度快不少。
坑 4:免费试用期只有 14 天
14 天一到,要么付 20 的 ROI 是正的。
不适合的场景
别被我吹得太厉害了,也说说不好用的地方:
- 小项目(< 1 万行):上下文本来就够用,Context Engine 加了等于没加
- 纯前端页面:组件之间的关系比较扁平,原生 Cursor 够用
- 对响应速度敏感:Context Engine 会增加 0.5-1s 延迟,Tab 补全的体验会变差
- 团队免费版够用的:如果你就一个人写个人项目,可能不值这个钱
小结
Augment Context Engine MCP 的思路我很喜欢——不跟 Cursor 正面竞争做编辑器,而是做"AI 编程的外挂大脑"。对于大项目,这种深度语义索引确实是刚需。
我的用法是:日常开发用 Cursor + Context Engine MCP,复杂重构和 Bug 追踪切到 Claude Code + Context Engine MCP。两个工具用同一个 Context Engine,上下文是共享的,体验很顺滑。
如果你的项目够大、够复杂,值得花 5 分钟试试。