修复 Cursor Agent 模式,要先看它是不肯写文件、写了不该写的文件,还是卡在终端命令上循环。这三类根因分别是权限与模式选错、规则过宽或过窄、以及终端被安全策略拦住。换一个更贵的模型,解决不了 Agent 没有写盘许可的问题。

先确认你真的在 Agent 而不是问答
问答侧栏可以给步骤,但默认不会改仓库。Agent 面板会列出工具调用:读文件、编辑、跑命令。如果你看见的只有气泡没有工具轨迹,先切换模式。有些版本把「询问 / 手动接受 / 自动执行」分成三档,停在询问档时,它表现得像坏了,其实是在等你点允许。
按故障表现修复
- 不写文件:检查是否只读工作区、文件属主是否是 root、远端 SSH 是否关掉了写权限。先在编辑器里手动保存一个空格,确认磁盘可写。
- 工具调用被拒绝:看弹窗是否点了 Deny,以及是否开启了过严的自动运行黑名单。把包管理器和测试命令放入允许列表,比关闭全部保护更合理。
- 乱改无关目录:收紧
.cursor/rules,写明「只改 packages/app,禁止动 infra」。同时用文件夹引用把可见范围缩小。 - 卡在终端:Agent 在等交互式密码或分页器。改成非交互命令,例如包管理器的 CI 标志,避免
less把会话钉死。 - 无限循环修同一测试:打断会话,把失败日志自己精简后贴回去,并禁止它再改无关快照文件。
- 规则文件语法错误会导致策略不生效。改完规则先开一个最小任务验证,再跑大重构。
不要用这些办法「修复」
不要为了让 Agent 顺手,把整个家目录、SSH 私钥目录和 .env 暴露给它。也不要在生产服务器上开自动执行。Agent 的价值是加速本地仓库的改动,不是替代发布权限。若公司策略禁止终端工具,应改用只读询问加人工应用 diff,而不是想办法绕过终端拦截。
修复后用最小任务做回归
权限或规则改完,不要立刻丢一个巨型重构回去。先让 Agent 在一个无关紧要的测试文件里加一行注释并跑测试,确认它能写盘、能跑非交互命令、并且没有越界改别的包。最小任务通过,再恢复原需求。若最小任务都写不进去,继续加大需求只会制造更多残骸。把这次回归的命令写进团队文档,下次再有人说「Agent 坏了」,可以按同一条路径复现,而不是每个人各自重装。
Agent 把终端卡住时,常见真凶是分页器和交互提示,例如 Git 的 less、npm 的确认问答。给命令加非交互参数,或把 GIT_PAGER=cat 这类环境变量写进说明,比提高「自动批准」级别更安全。自动批准解决不了等待输入,只会让它一次次重试同一条停住的命令。
常见问题
Agent 说已经改完,磁盘上却没有变化?
多半是 diff 没被 Apply,或写到了另一个工作区副本(例如 Docker 容器内路径)。看文件卡片上的绝对路径,是否真是你正在编辑的那份。
一开 Agent 就改测试快照,怎么办?
在规则里禁止更新 snapshot,除非你明确要求。并把快照目录加入谨慎名单。让它先把断言写对,再决定要不要刷新快照。
终端里的命令被直接杀掉?
这是沙箱或命令黑名单在生效。到 Agent 权限设置里看被拦的命令,放行你信任的测试入口,而不是关闭全部沙箱。


