大多数”AI 写代码”踩的坑都是模式选错——用 agent 去补一行代码,或者用补全去做跨文件重构。这篇给你一条决策规则,把任务形状直接映射到工具,让你不再把时间、token、信任浪费在错的界面上。
这篇讲什么
自动补全(Copilot 灰字、Cursor Tab、JetBrains AI)对你已经写的东西做反应——从本地上下文预测接下来 1-20 行。Agent(Claude Code、Codex、Cursor Composer)会规划、读多个文件、跑命令、拼出你没敲的改动。
实际工作里真正分开它们的是:
- 延迟:补全 100-500ms 出结果;agent 要 5-120 秒。如果你在打字时等,模式选错了。
- 范围:补全只看当前文件和几个开着的 tab;agent 读你指给它的任何东西,包括失败的测试、日志、shell 输出。
- 可控性:补全一个 Tab 就否决;agent 可能在你反应过来之前重写 12 个文件。
这篇适合谁看
日常用 AI 的开发者——尤其是同时付费用编辑器补全(Copilot / Cursor Tab)和 agent(Claude Code / Codex),但感觉其中一个不发力的人。
什么时候适合用
任何时候你发现自己 (a) 在手打而补全闲着,或者 (b) 等 agent 90 秒就为了两行胶水代码。两种都是模式选错的信号。
决策矩阵
| 任务形状 | 用 | 原因 |
|---|---|---|
| 一行补全 | 补全 | 亚秒级;拒绝零成本 |
| 从注释写新函数 | 补全 + inline edit | 本地上下文够 |
| 加参数并向上传递 | Agent | 跨 >1 文件 |
| ”这个测试为什么挂?“ | Agent | 要读日志 + 源码 |
| 全仓库改概念名 | Agent | 多文件、语义级 |
| 模板代码(测试搭、类型声明) | 补全 | 模式匹配、快 |
| 不能稳定复现的 bug | Agent | 要跑命令调查 |
| 从零写小脚本 | Inline chat / Composer | 一条消息说得清 |
具体步骤
- 一句话说任务。如果句子里出现”跨”、“全部”、“每个”、“找所有”——你要的是 agent。
- 如果任务是”补我马上要写的这一块”——让补全开车,不要切工具。
- 如果任务是”带意图的多文件改动”——开 agent,第一句话写清意图:“给
OrderService.create加一个feature_flag参数,并向上传给调用方。” - 调查 bug,先把失败信息(stack trace、日志)给 agent——不要先给你的假设。
- Agent 跑完后,切回补全做收尾:改变量名、调注释、整理 import。
第一次实操怎么跑
- 从 backlog 挑一个真实 ticket。开始前记时间。
- 先用补全模式打 5 分钟。如果还在手打 agent 本可以一口气写出来的样板代码,停。
- 把同一个 ticket 给 agent,附一句意图 + 失败的测试(如有)。
- 对比:哪种模式更快让测试通过?在一份叫”在这个代码库里,agent vs 补全分别什么时候赢”的笔记里写下答案。你在为这个项目积累专属直觉。
完成后检查
- 改动是不是只动了你预期的文件?Agent 有时会”顺手优化”无关代码——review 整个 diff,不只是你开着的那个文件。
- 它加的测试是真的在测新行为,还是在写同义反复?把改动 revert 跑一下,如果还过,那不是真测试。
- 你接受的补全是不是用了已弃用 API?本地上下文很浅,import 要对照当前包版本验。
怎么复用这套流程
- 维护一张一页笔记:“在这个 repo 里,agent 赢 X、补全赢 Y。“每月重读,代码库形态在变。
- 把你最常用的 3 条 agent 意图 prompt(重构、加功能、debug)存成 snippet。Agent 质量的大部分来自第一句话。
- 当补全连续 3 次给出错的东西,就是升级到 agent 的信号——别再硬打字。
建议的操作流程
一个真实周二:补全负责 80% 的打字(import、测试样板、简单分支)。Agent 接两件大事——一个重构(“把 billing 逻辑抽成 service”)和一个调查(“CI 里 flaky 测试,这是日志”)。单个任务里不切模式,任务间才切。
容易踩的坑
- 简单一行补全用 agent——等 30 秒得到 Tab 200ms 就能给的东西。
- 补全连错两次还硬撑——这是升级信号,不是再敲一遍的信号。
- 让 agent 开放式跑(“清理这个文件”)——它会重写你不想动的部分。
- 忘了把失败信息给 agent——它就开始猜,而不是读。
- Agent 跑完只 review 你开着的那个文件——agent 会动兄弟文件,要看整支分支的 diff。
FAQ
- 能不能只用一个工具?: 能,但你会在另一端慢下来。多数试过的人一个月内会装回另一个。
- Agent 会替代补全吗?: 不会。Agent 替代的是”给自己写 Jira ticket”那一步;补全替代的是”打下一行”那一步。两者在不同层级。
- Inline chat(Cmd-K)怎么用?: 中间地带:比补全大,比 agent 小。适合单函数重写。
- 能同时开吗?: 能——你监督 agent 时让补全开着,两者不冲突,只是延迟不同。
相关阅读
- Cursor 新手指南
- AI agent 的 git commit 实践
- 防止 AI 改不该改的
- AI Agent 代码审查工作流
- 多 Agent 编程工作流
- Codex 全部快捷键详解:终端、桌面版、输入编辑、任务控制
- Codex 全部 Skills 与 /skills 详解:内置技能、自定义技能、插件技能
- Cursor 索引——又快又有用
- AI 生成更新日志——从 commits 到人愿意读的 release note
- AI 协作数据库迁移——可回滚、有回填、能测
- AI 解 merge 冲突——什么时候能信自动合
- Claude Code MCP——给 Claude Code 接上真工具
- Cursor Rules——让 .cursorrules 真正派上用场
- AI 写事故复盘——出稿不冲淡教训
- AI on-call 排障——从被叫醒到修好不慌
- AI 写 PR 描述——从 diff 到能审
- Aider 上手——终端里的 AI 编程,不靠浏览器
- Windsurf 上手——30 分钟跑通 AI 编程闭环