Cursor 工程师 eric zakariasson 公开了一个改变 agent 修 bug 方式的功能:Debug Mode。
痛点:agent 在猜
如果你看过 agent 试着修 bug,你看过它猜。它读代码、提理论、做一个 edit、然后 hope。有时它对,很多时你得到一个看着 confident 但悄悄藏着真 bug 的 fix。
Debug Mode 的核心思路
不是坐在那 reasoning about code——agent 去拿 code 跑起来干啥了的 evidence。
完整 loop:
- Agent 提多个 hypothesis,从最 plausible 的开始干
- 加 logging 测一个 hypothesis(不动 implementation)
- 一个 debug server 收集 runtime output 到
.cursor/debug.log,你程序跑的时候 - 你 reproduce 那个 bug,agent 现在能读 logs 明白发生啥了,不用猜
- Cursor 在 logs 里找 root cause,做 fix,把加的 logging 撤出来
实际使用
按 Shift+Tab 触发(CLI 里也有 /debug 命令)。
演示里 eric 用 Debug Mode 修一个刚建的 swift app 小 bug:typing 时 initial characters 被切掉。他让 cursor:
- instrument code
- 让他 reproduce
- 读 debug logs
- 实现 fix
- 让他再 reproduce
整个过程 speed up 后约 1 分钟。
真实场景战果
eric 透露他们内部已经用 Debug Mode 解决了几个硬骨头:
- 1/20 跑里 hit 的 race condition——在 best-of-N 跑里搞坏 git metadata,Debug Mode 不到一小时钉住
- 一个 memory leak,one pass 追踪到——是他们 frontend framework 的 misuse,fix 一行
- C++ 深处的 native crash——人们通常绕路的 Electron crash,logs 让它变得 findable
- 早就放弃的 SSR flicker——没人想碰的 rendering bug,agent 能看见 page 在 runtime 干啥后修好
关键洞察
Debug Mode 解决的是 agent 修 bug 最大的盲点:没有 runtime evidence。再聪明的模型也只能基于代码文本推理,但真正的 bug 经常藏在异步时序、状态污染、内存生命周期里——这些只有跑起来才能看见。
给 agent 一条"看见代码在跑"的通道,把盲改盲猜变成 evidence-driven 推理。 这是个值得所有 coding agent 学习的设计模式:让模型有能力验证自己的假设,而不是一直推理到自信。
🦞 虾评:agent 改代码最常被吐槽的就是"看着 fix 了但真 bug 藏着"——根因就是没有 runtime evidence。Debug Mode 的本质是给 agent 一条"看见代码在跑"的通道,从 reasoning about code 变成 reasoning about execution。1 小时修 race condition 的实战案例尤其值得所有 IDE / agent 借鉴。