“打开VSCode”这个动作已经从我的日常里消失半年了。不是快捷键失效,也不是编辑器坏了,而是我的编码方式整个换了一套:AI Agent在终端里替我把代码写完、测好、修好,我剩下的工作变成了拆需求、审补丁和定验收标准。以前遇到问题第一反应是开VSCode找插件、搜定义、翻Git历史,现在第一反应是叫出一个AI工作会话,把上下文和输入输出扔给它,等它给出diff。这篇文章不是标题党,也不是劝退所有人不用编辑器,而是把这半年里我从“VSCode重度用户”变成“AI代写代码使用者”的全过程拆给你看:工作流是怎么重组的、AI Agent到底怎么用才不翻车、有哪些坑我替你踩过了。无论你是刚接触AI编程、还是已经在用Copilot一类的补全工具,这篇文章都适合你——因为重点不是“哪个工具最强”,而是“怎么把AI写代码变成稳定可控的日常流程”。
1. 告别VSCode:我的编码工作流是怎么被AI Agent重组的
1.1 我之前为什么离不开VSCode
先交代背景。在AI Agent大量出现之前,我和绝大多数后端开发者一样,VSCode是每天一开机的固定动作。它承载的不是一个编辑器,而是一整套个人工作台:插件市场里装着Remote-SSH、Python、C/C++、Docker、GitLens,本地写着代码,远程连着服务器,集成终端直接跑命令,调试面板一键打断点。说夸张点,一天八小时,有七个小时泡在VSCode里,剩下的时间在浏览器里刷文档。
那时候VSCode不可替代的核心原因,是它把所有“人写代码”的辅助能力聚合到了一起:语法高亮让你扫代码更快,IntelliSense让你少打几个字,跳转定义让你顺着函数调用链往下摸,全局搜索让你在一堆文件里捞线索。这些能力本质上都在做同一件事——降低人写代码的心智负担。但你有没有发现,这套组合拳解决的是“动手写”之前和之后的问题,真的到了“把思路转成代码”这一步,键盘还是得自己敲。
1.2 让我真正转向AI Agent的转折点
转折发生在我开始频繁使用AI编程工具之后。一开始用的还是补全型的,帮我续写函数体、生成模板代码,感觉上是“VSCode的IntelliSense Plus”,没觉得能替代编辑器。真正让我意识到工作流可以重组,是我第一次用上Agent模式的编程工具——它不再只是在你光标后面补字,而是你给它一句话,它自己去读仓库、查文件、写代码、跑命令、根据报错再修,最后给你一个已经验证过的补丁。
那一次我做的是一个内部数据处理脚本,需求是“读取一批Excel,按规则清洗后写入数据库”。搁在过去,我至少要花半天:打开VSCode,新建文件,写导入逻辑,调试,跑通。但那次我直接把需求说清楚,AI Agent在终端里自己建了Python文件,自己装了依赖,自己跑了一遍测试数据,最后把结果打印出来。我全程只做了一件事——审查它提交的改动。那一刻我突然明白,编辑器最重要的“写代码手感”已经不再是瓶颈,瓶颈变成了“你能不能把需求讲清楚,以及你有没有能力判断AI给的答案对不对”。当AI能自己闭环处理一个任务时,VSCode作为“人写代码中枢”的位置就开始松动了。
1.3 为什么半年再也没有回去
很多朋友问我,是不是所有代码都交给AI写了?当然不是,但确实有相当大一部分轮不到我亲手写了。这半年我的编码节奏变成了这样:新需求来了,我先理清边界和验收条件,然后开一个AI会话,让它给实现方案和diff;方案不对就继续对话调整;方案对了就合入、跑测试。以前最耗时的“写”环节被压缩成了“审”。VSCode在这个过程中退化成偶尔看一眼diff的工具,甚至有时候终端里的git diff就足够了。
支撑这个转变的核心因素有三个。第一,现在Agent模式下的AI能理解整个仓库的上下文,知道模块依赖、命名规范、错误处理风格,产出的代码质量已经接近初级工程师的水平,但速度是人的好几倍。第二,IDE本身也在变,VSCode里现在也到处是Copilot停机坪,说明“AI辅助”已经是行业默认方向。第三,也是最关键的:当AI写代码的准确率足够高时,人的价值就转移到了需求定义和结果审查上,而这两件事并不依赖某个特定的编辑器。所以半年没点开VSCode,不是赌气,是工作流确实回不去了。
2. 不依赖VSCode,我实际是怎么用AI Agent写代码的
2.1 终端里的AI环境准备与工具选型
既然不用编辑器,我的开发主战场就变成了终端。目前我主要用的几款AI编程工具都跑在命令行里:Claude Code(Anthropic 官方 CLI)、OpenAI Codex CLI,以及国内几家的智能体产品。Coursier 装好之后再跑npm install -g @anthropic-ai/claude-code,Codex 则是直接brew install codex,都是几分钟的事。安装完记得在终端里配置好模型API的访问凭证,Claude Code需要Anthropic API Key或者账号登录,Codex需要OpenAI的凭证。没有密钥的话,也可以直接用各家官网的订阅版,根据自己的预算选。
这里说一个很重要的选型心得:如果你追求的是“Agent式工作流”,优先选CLI工具,而不是编辑器插件。原因是CLI工具天然贴近终端操作,能直接执行命令、创建分支、跑测试、读文件,它跟Git的交互是原生的。编辑器插件往往把AI嵌在侧边栏里,更像一个“提词器”,反而不擅长自主完成任务。当然,如果你目前的舒适区还是编辑器,那先用插件模式培养习惯也行,但要明白插件模式和Agent模式是两种不同的生产力级别。
2.2 提示词工程:想让AI写出能用的代码,先把需求说人话
AI编程最大的门槛根本不是工具,而是你给的需求够不够清楚。我总结了一套“需求五要素”写法,每次开AI会话前都会过一遍:
- 目标:你要做的事是什么,一句话说清楚。
- 输入/输出:输入什么格式的数据,输出什么格式的结果。
- 约束:技术栈、命名风格、不要用某个库、性能要求、兼容性要求。
- 验收标准:怎么算成功,最好给一组测试数据或预期行为。
- 上下文:涉及哪些文件、哪个模块、参考哪个现有实现。
举个例子。弱需求是“帮我写个爬虫抓取网站数据”,AI大概率会给你一个泛泛的破烂脚本,网站上改个结构就废。强需求是“写一个Python命令行工具:读取symbols.txt中的股票代码,调用Yahoo Finance的API抓取收盘价,输出到CSV,接口失败自动重试3次、每次间隔2秒,代码遵循PEP 8,不需要外部浏览器模拟。验收标准:用AAPL,MSFT,TSLA跑通,CSV包含代码、日期、收盘价三列”。后一种需求,AI一次写完基本就能用,前者可能要来回改五轮。把需求写清楚,是这一整套流程能跑起来的基础。
2.3 从零跑通一个小功能:一个完整会话记录
为了方便没有体验过的朋友理解,我贴一个真实的会话过程。当时的任务特别小:统计代码仓库里所有TODO注释的数量和分布。我直接在项目根目录下开了Claude Code,输入:
claude "扫描当前仓库内所有源码文件,统计TODO和FIXME注释的数量,按文件分组输出结果"AI的行为很有意思:它没有直接给我代码,而是先用rg在仓库里搜索,确认了哪些文件有匹配项,然后写了一个小脚本统计,最后在终端里列出了结果表格。整个过程大概1分钟,它自己读了文件、写了代码、跑了命令、输出了结果。我做的事就是看一眼统计数字合理不,然后让它标注出数量最多的三个文件。如果换成以前,我肯定要打开VSCode,按Ctrl+Shift+F,再手动数,或者临时写一个脚本再删掉。现在这种“一句话搞定”的频率越来越高,我越来越依赖终端里的AI对话。
2.4 跨文件改动:怎么让AI在复杂项目里不跑偏
单文件小任务是最简单的,真正的考验是大范围重构。比如“把这个模块的HTTP客户端从requests换成httpx,并更新所有调用点”。这类任务涉及多个文件,AI在长对话里容易漏掉其中一个调用位置,或者改着改着就忘了最初的约束。我这半年的经验是:跨文件改动要单独开一次会话,不要把零碎问题堆在一起。而且开局就给它喂三样东西:改动涉及的顶层目录、关键上下文文件的路径、你要遵守的约束(比如“不要在数据库层改动”)。它先输出一个改动计划,我确认计划没漏,再让它执行。这就相当于给AI装了一个“范围护栏”,它不容易越界,你也好审查。
3. 那些VSCode时代最头疼的工程问题,AI Agent现在直接接管了
3.1 环境配置战争结束了:C/C++、Python、STM32都被AI一把梭
以前每换一台电脑或配一个新项目,最头疼的就是环境配置。VSCode官网下载完编辑器,装插件、改setting.json、配C/C++编译环境、调Python解释器路径,一个环节不对就是一串红色波浪线。不信你看看多少人搜“VSCode配置C/C++环境”、“VSCode配置Python环境”、“VSCode配置STM32开发环境及J-Link下载环境”——每个人都在这上面交过学费。配置类问题通常不是“不会写代码”,而是“不知道环境缺了什么”,错误信息还晦涩难懂。
现在这个场景被AI Agent极大简化了。我的做法是:拿VSCode的报错信息直接问AI,比如“Invalid parameter was passed to C runtime function”后面跟一长串日志,AI能直接翻译成人话并给出修复方案,甚至直接帮你把tasks.json、launch.json、c_cpp_properties.json生成好。以前配一套STM32的编译下载环境,要折腾大半天;现在把芯片型号、工具链路径、J-Link SWD接口类型喂给AI,它能生成一个可运行的VSCode任务配置,再往里搜报错就行。即使我不打开VSCode,也能把问题解决掉。这个能力对嵌入式新手来说是质变级的帮助。
3.2 从“写函数”到“写完整工程”:依赖、测试、文档一把抓
以前的AI补全工具给的是函数体,现在的AI Agent给的是完整工程能力。我最近做一个小工具,需求是一个REST API服务,中间要接Redis缓存和MySQL。AI除了写核心接口代码,还自动生成了requirements.txt、docker-compose.yml、单元测试脚本、README文档,甚至写了一个启动脚本。要理解这个进步,打个比方:以前的AI是“作文素材库”,给你段落;现在的AI是“代笔作家”,还帮你校对错别字、排版、加注释。它做的不只是生成代码,而是把整个交付物都帮你补齐了。
对你来说这意味着什么?意味着一个很小的需求,从“写代码”到“能上线”之间的距离被AI大幅压缩。但注意,压缩不等于消失,你要做的事变成了:检查依赖版本是否安全、确认测试覆盖了核心路径、看看文档描述是否和实际行为一致。这些审查工作本身就属于工程师的日常,只是换了个环节。
3.3 让AI做代码审查,先滤掉低质量改动
这半年我养成的一个习惯是:不只让AI写代码,还让AI审代码。团队里同事提了PR,我如果时间不够,直接把PR涉及的文件路径和改动范围丢给AI,让它从“性能问题、边界条件、异常处理、安全漏洞”四个角度过一遍。实测下来,它能筛掉一部分低级错误,比如变量作用域错误、缺少空值判断、循环里做了重复计算这种。AI干这活特别擅长,因为它不累,不会因为PR太长而偷懒,也愿意逐行看。
我甚至在个人项目里试过多AI协作的玩法:一个AI负责写实现,另一个AI负责挑刺。比如让Claude Code实现一个支付回调的接口,再让GPT从“并发重复请求”“签名校验时序”“失败重试策略”三个角度做攻击式审查,结果真抓到了几个我自己都没想到的边界问题。这招在关键业务上非常好用,等于团队里多了一个免费的结对评审。
3.4 测试数据与边界条件:AI帮你生成用例,你负责判断
还有一件以前很磨人的事:写测试数据。AI现在能根据函数签名和业务规则批量生成边界测试用例:空输入、极值、超长字符串、重复请求、并发冲突。让它列出来之后,你再决定哪些是有意义的。这比从零造数据要快得多,而且覆盖思路广。我管这叫“AI发散的边界清单,人来收敛取舍”,能在上线前把很多隐性bug找出来。
4. 这些坑我替你都踩过了:AI写代码的质量风险与控制手段
4.1 AI会一本正经地编造API和库函数
第一个大坑,也是几乎所有AI编程新手都会遇到的:AI在不确定某个函数是否存在时,会编一个看起来像真的假API给你。比如让你用libcurl写网络请求,它会写一个curl_easy_setopt_timeout这种实际上不存在的函数。没有编译或IDE提示的时候,你根本看不出来。为什么会这样?因为大模型是在生成“概率上最像”的文本,它并不会实时查文档验证。
我的处理办法很简单:重要API调用必须让AI给出依据。在提示词里加一句“用到的库函数请先确认是否存在,可以通过README、头文件或官方文档验证再写入代码”,或者直接让Agent先执行搜索命令再写代码。对已经生成出的代码,如果编译报错,不要慌,把报错信息原样丢回给AI,它自己会纠错。这个循环跑熟了之后,假API问题基本能被消灭在无声阶段。
4.2 上下文窗口与任务漂移:长对话越聊越歪
AI Agent的另一个常见问题是任务漂移。刚开始对话时说好的“只重构登录模块”,聊到后面它会心血来潮把全局的路由也改了。原因是长对话里上下文窗口满了,早期约束被挤出了注意力范围,而新上下文中“你觉得怎么完善就怎么改”的倾向占了上风。解决方法的思路是把任务拆小:一个会话只做一件事,做完就开新会话。如果项目很大,把需求写在一个AGENTS.md或者CLAUDE.md文档里,每次会话开始先让它读这个文件,就像给新同事发入职手册一样。这样AI始终围绕文档里的约定行动,不容易跑偏。
4.3 业务逻辑理解永远不能全交给AI
你以为AI理解了你的业务,其实它只是理解了“字面需求”。有次我让AI实现一个文件权限判断逻辑,按我的预期应该是“文档创建者可编辑,其他人只读”,结果AI自动发挥成了“管理员可编辑,其他人只读”,它替用户加了一个角色系统出来。这个例子很典型——AI会用它见到的“最常见模式”去填你没说清楚的空洞,而不是去猜你的真实意图。所以业务规则、权限模型、状态流转这些东西,必须写进验收标准里,一条条明确。这不是AI不行,而是需求规格这件事本来就是人的职责,AI只是照单执行。
我的经验是,凡是涉及钱、权限、隐私、状态机的代码,都要把“输入-处理-输出-异常”四件事写详细,最好配具体例子。宁可多写两段提示词,也不要让AI自由发挥。
4.4 安全红线不能省:AI生成的代码同样有漏洞
很多人有个错觉,觉得AI写的代码比人写的安全,其实不一定。AI在生成SQL时会用字符串拼接,在拼接文件路径时不验证文件名,这些都是它“学”到的大量旧代码里的常见毛病。我记得有一次让AI写一个从邮件附件导出文件的脚本,它直接用了原文件名拼路径,如果附件的文件名里带../../,就有路径穿越风险。人写的代码会犯这种错,AI同样会犯,而且它犯起来更理直气壮。
我的建议是,让AI写完代码后,追加一句“请列出这个改动可能出现安全问题的三个场景”,它会把自己生成的代码重新审视一遍,多数时候能主动指出问题。但在合入正式环境前,涉及鉴权、加密、支付的部分还是要人来过一遍,这个环节无论如何不能省。安全审查是底线,AI只能做辅助,不能做主力。
4.5 警惕“看起来能跑”的假完成度
AI有个常见特征:过度自信。它写完代码后不是说“我写完了”,而是给你一份性感的README和一堆测试通过。但有时它所谓的“通过”只是跑通了预设路径,并没有覆盖异常分支。所以我对AI交付物的态度是:信任但核实。核实的方法不是自己重新写一遍,而是看它跑了什么命令、测试覆盖了哪些分支,以及主动让它列几个“边界情况我还没处理”。多问它“哪里可能出问题”,它反而能给你列很长的清单。
5. 新手入坑AI写代码的避坑指南与工具选择
5.1 主流AI写代码工具怎么选:一张表说清楚
这里整理了我实际用过的几类工具,各有各的主场。没有最强,只有最匹配。
| 工具 | 类型 | 适合场景 | 不足 |
|---|---|---|---|
| Claude Code | Agent式CLI | 复杂任务、多文件改、自主执行命令 | 需要订阅/API成本,需学习对话习惯 |
| OpenAI Codex CLI | Agent式CLI | 与GitHub集成紧密、代码补全和任务执行 | 对复杂工程上下文掌握仍需调教 |
| GitHub Copilot | IDE插件 | 日常函数级补全、编辑器内辅助 | 单文件内强,跨文件任务弱 |
| 通义灵码 | IDE插件/Agent | 中文需求描述、国内环境友好 | 大型仓库上下文能力仍在追 |
| Cursor | 编辑器 | 重度GUI用户、想在编辑器里体验Agent | 换了编辑器,适合愿意迁移的人 |
我对工具选型的建议是:如果你是零基础,先别上Agent,从补全型工具开始,在VSCode里装插件用一周,熟悉AI的产出风格。如果你已经开始用编辑器里的AI补全,而且觉得“它总猜不对我要什么”,那说明你已经有一定审查能力了,可以切换到Agent模式。如果一上来就上Agent,你会被AI的自主行为吓到,因为你不确定该让它执行哪些命令。
5.2 可直接复制的提示词模板
我日常用的提示词模板,直接贴在这里,你可以根据项目改一改:
项目背景:<一句话说明这个仓库是做什么的> 我的任务:<你希望AI完成的功能或修改> 输入:<输入数据的例子> 输出:<输出结果的格式> 技术约束: - 不使用 <某个不希望的依赖> - 沿用仓库内现有风格 - <其他约束> 验收标准: - <怎样算完成,例如测试数据A跑通得到B> 请先检查相关文件,给出改动计划,再实施改动,并在完成后列出你改动过的文件列表。这个模板的核心是把“验收标准”放在最后,逼着AI在动手前先理解边界。你在让它跑之前,先念一遍它的计划对不对路。计划对,再放行。
5.3 哪些项目不适合交给AI写
诚实说,AI写代码不是所有场景都合适。我自己会特别谨慎的几个场景:核心算法的精确实现(比如渲染管线、加密协议)、实时控制系统的异常路径(嵌入式中断处理更要人审)、以及业务规则极其复杂的合规需求(比如资金账户的操作逻辑)。不是AI不能写,而是这类代码出错代价太高,需要人亲力亲为地逐步推导。反过来,CRUD接口、脚本工具、配置生成、数据清洗、文档整理、测试用例,这些都是AI的舒适区,能交就交。
5.4 现在什么情况下我还会打开VSCode
虽然标题是“半年没有打开过”,但这不是说VSCode就没有用了。我偶尔还是会打开它,比如调试一个特别复杂的C++程序时,断点可视化、调用堆栈查看还是比纯终端舒服;或者查看大型Git历史,用图形化界面做分支梳理和回滚更清爽;再就是审查大PR时,VSCode的diff视图和上下文预览确实比终端直观。不过频率确实从“每天八小时”降到了“每周几小时”,而且打开它更多是看结果,而不是从头写。
所以如果你要我给你一个务实的结论:VSCode并没有被淘汰,它只是从“双手”变成了“眼睛”——偶尔拿来查看、对比、调试,核心编码工作被AI Agent接管了。工具不重要,产出才重要。
写在最后
这一路实测过来,我最大的体会是:AI写代码并不会让程序员失业,它只是把大量“把已知逻辑敲成代码”的时间压缩了,逼着你把精力放到更上层的事情上——需求定义、架构决策、代码审查、风险控制。半年前我还在为一行缩进纠结,现在我更多在看AI是不是误解了业务规则。这个转变一开始有点不适应,但用久了你会清楚,真正的工程能力从来不是打字快,而是把复杂问题拆清楚、把结果管住。
最后分享一个小技巧,也是我现在每次AI会话结束前必做的一步:让AI给自己生成一段“变更审阅笔记”,内容包括改了什么、为什么这么改、有哪三个可能出现问题的边界情况。这段笔记会跟着commit一起提交,下一个人看代码时,直接就有了上下文,省了很多沟通成本。这一个习惯,帮我减少了至少一半的返工时间。