Cursor 真正的杀器不是 Tab 补全,是 Agent 模式

Agent 模式是什么?它不只是补代码,而是能跨文件编辑 + 跑终端命令 + 看运行结果 + 自己修错。换句话说,它像一个坐在你旁边、能帮你操作 IDE 的实习生。

听起来很厉害。实际怎么样?我给了它 5 个真实任务,记录了每一次的成败。


对照怎么做的

项目 配置
工具 Cursor v0.48,Agent 模式,模型 Claude Sonnet 4
项目 daily-report-agent(Go, ~2000 行,7 个 .go 文件)
测试日期 2026-05-10 ~ 2026-05-16
机器 MacBook Pro M3 Pro, 18GB RAM

五个任务的成绩单

# 任务 结果 动到文件数 正确文件 耗时
1 重构 auth 模块 ✅ 成功 3 3/3 4m 12s
2 新增 CRUD 端点 ✅ 成功 4 4/4 6m 48s
3 写测试用例 ⚠️ 部分 2 1/2 5m 20s
4 修复 lint 错误 ✅ 成功 6 5/6 2m 55s
5 更新依赖版本 ✅ 成功 2 2/2 1m 30s

汇总:涉及文件 17 个,正确编辑 15 个文件(88%),出错的 2 处都需要我手动恢复。


任务一:重构 auth 模块 ✅

指令:“把 auth.go 里的 token 验证逻辑拆成独立文件 token.go,保持所有测试通过。”

Cursor Agent 做了什么

  1. 读取 auth.go,定位 token 相关的函数
  2. 创建 token.go,迁移了 validateTokenrefreshTokenparseJWT 三个函数
  3. 更新了 auth.go 的 import 和调用
  4. 自动跑了 go build ./... 确认编译通过
  5. 跑了 go test ./...,2 个用例因 import 缺失失败,它自己修正了

评价:9 分。整个过程一气呵成,中间我只点了一次"Accept"。


任务二:新增 CRUD 端点 ✅

指令:“给 daily-report-agent 加一个 /api/reports 端点,支持 GET(按日期查询)和 POST(手动触发报告生成)。”

Cursor Agent 做了什么

  1. main.go 中注册了两个路由
  2. 创建了 handler/report_handler.go
  3. sender.go 中加了公共函数供 handler 调用
  4. 写了请求/响应的结构体
  5. 跑了编译和已有测试

评价:8 分。功能完整,但 GET 的分页逻辑只支持按天翻页——它没问我要不要支持日期范围查询。我用半天时间自己加上了。


任务三:写测试用例 ⚠️

指令:“给 collector.go 的所有导出函数写单元测试。”

这是翻车最严重的一个任务。

Cursor Agent 做了什么

  1. 正确地为 CollectCommits 写了测试(mock 了 git 命令输出)
  2. 但同时也改了 collector.go 本身——为了"更容易测试",它把一个私有函数改成了导出的

问题在哪:它改了我没让它改的文件。虽然改动本身技术上是合理的(确实更方便测试),但这不是我授权的。如果我没仔细 review diff,这个改动就悄悄合进去了。

评价:5 分。测试本身写得好(覆盖率从 12% 提到 67%),但擅自修改源文件是不可接受的。这是 Agent 模式最危险的地方——它有能动性,但缺乏判断力


任务四:修复 lint 错误 ✅

指令:“修复 golangci-lint run 报告的所有 warning 和 error。”

这个任务是 Agent 模式的高光时刻。Lint 工具通常报一堆问题散落各文件,一个个看很烦。

Cursor Agent 做了什么

  1. 运行了 golangci-lint run ./...
  2. 解析了 14 个 lint 问题(3 个 errcheck、5 个 govet、4 个 revive、2 个 staticcheck)
  3. 逐个文件修复
  4. 有一个文件它改错了——errcheck 修复时它把 _ = doSomething() 改成了 doSomething(),但实际上这里忽略错误是故意的(非关键路径)。我手动恢复了。

评价:7 分。省了我至少 20 分钟。但那一个不该改的地方提醒我:Agent 不理解"故意不处理"这种设计意图。


任务五:更新依赖 ✅

指令:“把 go.mod 里的所有依赖更新到最新小版本,确保测试通过。”

Cursor Agent 做了什么

  1. 运行 go list -m -u all 查看可用更新
  2. 逐个 go get 更新
  3. 运行测试确认兼容
  4. golang.org/x/net 更新后出现了一个不兼容变更,Agent 自动修了调用处

评价:9 分。这种事以前要花半小时,现在 1 分半钟搞定。


我总结的四条 Agent 使用铁律

1. 永远不要让它自由发挥

最好的指令不是"重构这个模块",而是"把 auth.go 第 48-120 行提取到新文件 token.go,保持函数签名不变"。

精确 = 安全。模糊 = 惊喜(或惊吓)。

2. 提交前必须逐行 review diff

Agent 改的文件比你想象的多。不是它恶意——是它不知道哪些是你不希望它碰的。每次都 git diff --stat 先看涉及了哪些文件。

3. 开 Auto-Commit 之前,先关掉

Cursor Agent 默认会在完成任务后提交。关掉——你自己 commit。这样你能在提交前用 git diff 审查每一处改动。

4. 信任但验证

Agent 跑完测试说"全部通过"不代表真的没问题。你至少自己跑一遍关键路径。


Cursor Agent 模式是目前 IDE 里能用的最好 AI 助手。比 Copilot Chat 强一个档次,比 Claude Code 更"整合"。

但它不是银弹。80% 的成功率意味着 5 个任务里总有 1 个会出问题。你需要具备足够的判断力来判断它什么时候对了、什么时候在自作聪明。

我的建议:如果你能独立完成手头的任务(只是懒得写),Agent 能帮你省一半时间。如果你不会做的任务想交给 Agent——先学,再用。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐