第28章|程序员的新同事终于上岗
一、自动补全长出了一双手
最早那几年,AI 编程工具的姿态很谦虚。它站在光标后面,像一个过分热情的输入法。程序员敲下函数名、注释、循环开头,它把后半句灰色地浮出来。人类按下 Tab,它就算完成了一次工作;人类继续敲字,它就继续猜下一行。
这类工具当然重要。GitHub Copilot 的早期传播,正是从这种“少敲几行”的惊奇开始的。可是到 2025 年,软件行业真正感到异样的地方,不再是模型能不能补出一段代码,而是它开始碰到仓库本身。
2 月 24 日,Anthropic 发布 Claude 3.7 Sonnet,并把 Claude Code 作为 research preview 推出。官方把它描述为一种面向开发者的 agentic coding tool:开发者在终端里调用它,让它读取项目、解释代码、修改文件、运行命令,再把结果交回人类确认。[1] 这里的关键词不是“聊天”,而是“项目”。模型不再只回答一段粘贴进去的代码,它进入了一个目录,面对真实的文件树、依赖、测试和版本控制。
5 月,OpenAI 发布 Codex。官方材料把 Codex 放进 ChatGPT,称它可以在云端软件工程环境中处理代码任务:回答代码库问题、修复 bug、实现功能、运行测试,并把修改结果交给开发者审查。[2] 这同样不是早期“写一个排序函数”的演示。它的工作单位变成了任务,工作对象变成了仓库,工作产物变成了可检查的变更。
6 月 24 日,GitHub 宣布 Copilot coding agent 面向 Copilot Business 用户可用。GitHub 的叙事更直接:开发者可以把 issue 分配给 Copilot;Copilot coding agent 在 GitHub Actions 支持的开发环境中工作,提交 draft pull request,随后由人类审查、修改、合并或关闭。[3] 这一步把 AI 编程工具从编辑器里的“副驾驶”,推向协作系统里的“被分配任务者”。
一天后,Google 发布 Gemini CLI,称其为开源 AI agent,把 Gemini 带进终端。开发者可以在命令行里请求它理解代码库、生成或修改代码、运行本地任务。[4] 到 2026 年 2 月,GitHub Copilot CLI 又宣布 general availability,把 Copilot 更正式地带到终端工作流里。[5]
这些产品并不是同一种东西。自动补全、IDE 聊天、终端 agent、GitHub issue agent、云端 coding agent,各自站在不同入口,拥有不同权限,承担不同风险。但它们共同完成了一次越界:AI 从“建议文本”走向“操作软件工程对象”。
软件行业的荒诞感也随之升级。过去,程序员担心同事没看 README;现在,团队开始给 AI 同事写 README 的 README。过去,新人入职要问“怎么跑测试”;现在,仓库里要写清楚“如果你是 agent,请先读这里,不要碰那里,跑这个命令,不要自作主张升级数据库驱动”。减少沟通成本的工具,首先需要更多沟通格式。
这不是科幻式入职。没有工牌,没有头像,没有座位。新同事第一次上岗的方式,是在终端里闪过命令,在 GitHub 上开出 draft PR,在文件 diff 里留下几行看似熟练的修改。它会写代码,也会犯错;它能跑测试,也可能误解测试;它能读项目说明,却不知道公司周五下午不发大版本。
程序员第一次大规模体验 agent 成为同事,不是在通用办公场景,而是在代码场景。这并不偶然。代码库有文件,任务有 issue,变更有 diff,审查有 pull request,错误有编译器、测试和日志。相比开放网页世界,软件工程至少给 agent 提供了可观察、可回滚、可审计的轨道。轨道不是安全本身,但它让机器人的第一份工作看起来像工作,而不是魔术。
二、终端里的第二个提示符
终端是开发者工具链中最古老也最顽固的房间。现代 IDE 有侧边栏、插件市场、智能搜索和漂亮主题;GitHub 有 issue、review、Actions 和安全扫描;云平台有控制台和仪表盘。可是项目真正能不能跑起来,很多时候仍要回到一行命令:安装依赖、启动服务、迁移数据库、跑测试、查日志、提交代码。
因此,2025 年的终端 agent 不只是把聊天机器人换了个黑色背景。它把模型放到了一个能触发实际动作的位置。
Claude Code 的 research preview 就是这种入口变化的早期信号。根据 Anthropic 的发布说明和文档,Claude Code 可以在开发者本地项目中工作,读取代码库上下文,提出修改,编辑文件,执行命令,并在权限机制下让用户批准高风险操作。[1] 这和“请解释这段代码”不是一个风险等级。解释错了,人类最多被误导;执行错了,文件、依赖、配置和本地环境都会被牵连。
终端 agent 的吸引力也正在这里。一个开发者接到任务:某个测试在 CI 里失败,本地复现不了。传统流程是打开日志、搜索错误、切分环境差异、查看依赖版本、加调试输出,再反复运行命令。Claude Code、Gemini CLI 这类工具提供了另一种流程:把失败日志和项目上下文交给 agent,让它查找相关文件,提出假设,修改测试或实现,运行命令,读取新的错误,再继续迭代。
Google 在 6 月发布 Gemini CLI 时,把它定位成开源终端 agent,并强调开发者可以从命令行访问 Gemini 模型能力,用于理解、编辑和自动化项目任务。[4] 它的产品形态和 IDE 插件不同。IDE 的强项是文件与符号;终端的强项是命令与环境。一个 agent 进入终端,就接近了构建脚本、测试框架、包管理器、本地服务和系统工具。它的能力因此更像“会干活”,也更需要护栏。
到 2026 年 2 月 25 日,GitHub 宣布 Copilot CLI general availability。这个节点重要,不是因为命令行突然被发明,而是因为 GitHub 把 Copilot 从编辑器和网页协作场进一步推入 shell。Copilot CLI 面向的是开发者日常命令行工作:解释命令、生成命令、辅助 Git 和项目操作,以及把 Copilot 的上下文能力带到终端。[5] 它和 GitHub 上的 Copilot coding agent 仍然不同:前者从开发者当前 shell 会话出发,后者从 issue 和 pull request 流程出发。
这里必须划清界限。自动补全通常只建议下一段代码;IDE 聊天通常围绕打开的文件和选中上下文回答;终端 agent 可以运行命令、修改文件、读取命令输出;GitHub coding agent 则在远端开发环境中处理被分配的任务,并以 pull request 交付。把它们统称为“AI 写代码”虽然方便,却会抹平最重要的差异:权限在哪里,证据在哪里,责任在哪里。
终端尤其考验责任边界。一个 agent 建议 npm test,风险有限;建议删除缓存目录,风险上升;建议修改迁移脚本、重置数据库、旋转密钥,风险就不能只靠“模型看起来很聪明”来管理。开发者过去把终端称作自己的手,现在这只手旁边多了一个会请求动作的系统。产品文档里那些批准、确认、沙箱、权限提示,看起来像摩擦,实际上是终端 agent 能不能进入专业工作流的门票。
软件行业在这里展现出一种奇特的诚实。它一边高喊自动化,一边把确认按钮做得越来越多;一边抱怨手工跑测试太慢,一边要求 AI 每次跑危险命令前都问一句。工具越像同事,就越不能像神谕。一个真正能上岗的 agent,必须学会在命令行里等人类点头。
三、GitHub 把任务卡交给 Copilot
如果说终端 agent 像坐到开发者旁边,GitHub Copilot coding agent 则更像被写进团队流程。
2025 年 6 月 24 日,GitHub 在 changelog 中宣布,Copilot coding agent 面向 Copilot Business 用户可用。[3] 其工作方式不是等待程序员在文件里敲字,而是从 GitHub issue 开始:团队可以把 issue 分配给 Copilot,coding agent 在受控开发环境中处理任务,提交 draft pull request,并把变更放进 GitHub 原有的 review 流程。
这是一种非常 GitHub 的 agent 形态。它没有试图绕开 issue、branch、commit、pull request 和 review,反而寄生在这些旧制度上。软件团队不需要把生产流程交给一个陌生机器人后台;它们看到的是一个 draft PR,里面有文件变更、提交记录、说明和测试结果。人类 reviewer 仍然可以逐行评论,要求修改,追加测试,或者直接关掉这次尝试。
这个设计很关键。AI 代码生成的危险之一,是把“能生成”误认为“能进入主干”。GitHub 的 coding agent 把输出放在 PR 里,等于承认软件工程的社会事实:代码进入项目,不是因为它存在,而是因为团队接受它。pull request 是现代软件组织把个人劳动转化为集体责任的仪式。现在,agent 也必须走这道门。
7 月 9 日,GitHub 又宣布 Copilot coding agent 支持 remote MCP servers。[6] MCP,即 Model Context Protocol,在上一章已经出现:它试图为模型连接外部工具和上下文提供统一方式。放到 GitHub coding agent 里,remote MCP 的意义在于,agent 不只看仓库文件,还可能连接项目管理、文档、监控、安全扫描或内部知识系统。软件任务从来不只存在于代码里;bug 可能写在 Sentry 报警里,需求可能藏在 Linear 或 Jira 任务里,接口约束可能在内部文档里。MCP 把这些外部系统变成 agent 可访问的上下文与工具。
但工具越多,风险越多。一个只能读仓库的 agent,错误半径主要在代码 diff;一个能访问远端工具的 agent,错误半径扩展到凭证、外部系统、业务数据和组织流程。MCP 的价值不是让 agent 到处乱跑,而是让企业能够用更标准的方式声明:哪些工具可用,哪些上下文可读,哪些动作需要授权,哪些日志必须留下。
8 月 28 日,GitHub 宣布 Copilot coding agent 支持 AGENTS.md custom instructions。[7] 这是一件看似朴素、实际很有工程意味的事。AGENTS.md 本质上是仓库里的指令文件,用来告诉 coding agent:项目结构是什么,如何安装依赖,怎样运行测试,代码风格有哪些禁忌,哪些目录不要修改,哪些命令最可靠。
它像一份写给机器同事的入职手册。人类新人入职时,团队会说:“先看 README,但 README 有点过期;真正的测试命令在 package.json 里,不过后端要先启动容器;不要碰 legacy 目录;那个 flaky test 不是你弄坏的。”AGENTS.md 试图把这些口头传统变成 agent 可读的文本。
不过,AGENTS.md 不是魔法标准。它标准化的是“把项目指令放在哪里、让 agent 读取什么”,不是标准化项目本身。每个仓库的构建方式、测试习惯、部署风险、代码风格和历史债务仍然千差万别。一个 AGENTS.md 可以写“运行全部测试”,但如果全部测试要跑四小时,团队仍要决定 agent 该先跑哪一组。它可以写“不要引入新依赖”,但当安全修复必须升级依赖时,仍要有人判断例外是否成立。
GitHub 的路线因此很清楚:把 AI 放进既有协作骨架,而不是宣布软件工程制度过时。issue 是任务入口,Actions 是运行环境,MCP 是外部工具桥梁,AGENTS.md 是项目指令,pull request 是审查与责任入口。AI 在这里像一名可以被分配任务的初级同事,区别在于它不需要账号头像,也不会在 PR 里解释自己为什么周末还在提交。
四、OpenAI 与 Anthropic 把“会编码”做成平台能力
GitHub 和 Google 改写的是开发者工具入口;OpenAI 与 Anthropic 则从模型和 agent 产品两端推进。
OpenAI 的 Codex 发布于 2025 年 5 月。官方说明中,Codex 被描述为一个 cloud-based software engineering agent,可以在隔离的云端环境里并行处理多个软件任务。开发者把仓库连接给它,让它回答代码库问题、实现功能、修复 bug、运行测试,最后返回可审查的结果。[2] Codex 发布时还强调了 AGENTS.md 这类项目指令:开发者可以在仓库中放置说明,告诉 agent 如何构建、测试和遵守项目约定。
这一步把 OpenAI 从“模型供应商”推向“软件工程执行层”。Codex 背后的模型能力当然重要,但产品真正改变的是工作单位。开发者不只是调用 API 生成函数,而是提交任务:“修这个 bug”“补这个测试”“解释这个模块为何这样设计”。如果说 GPT-4 时代的开发者常把模型当问答机,Codex 则把模型包装成可排队、可并行、可返回结果的工程劳动力接口。
8 月,OpenAI 发布 GPT-5,并在面向开发者的官方文章中把 coding、agentic tasks、tool use 和长上下文能力列为重点方向。[8] 这类模型更新为 Codex、IDE 插件、企业内部 agent 和第三方开发者工具提供底座。需要注意的是,GPT-5 本身不是一个会自动开 PR 的产品;它是模型能力。能不能编辑文件、能不能运行测试、能不能提交 pull request,取决于外层系统如何给它工具、环境、权限和审查流程。
Anthropic 的路线同样是模型与工具并行。Claude Code 在 2 月作为 research preview 出现后,Anthropic 又继续强化远端工具接入和编码模型。官方 Claude Code remote MCP 材料显示,Claude Code 支持连接 remote MCP servers,让终端中的 agent 能接入外部上下文和工具,而不只局限在本地文件。[9] 8 月,Anthropic 发布 Claude Opus 4.1,强调其在编码和 agentic tasks 上的提升,并给出 SWE-bench Verified 等基准结果。[10] 9 月,Claude Sonnet 4.5 发布,Anthropic 将编码、agent 和 computer use 放在主要卖点中,继续把 Claude 推向长时间、多步骤的软件工程任务。[11]
这些官方基准值得记录,也必须怀疑。SWE-bench Verified 等测试把真实开源项目中的 issue 转化为可评估任务,比早期“写一个函数”的评测更接近软件工程。但它仍然不是生产环境。真实公司代码库里有私有框架、历史包袱、隐性业务规则、不完整测试、权限边界、灰度发布、客户承诺和审计要求。一个模型在基准上拿到更高分,说明它更可能完成某类公开任务,不说明它可以无监督地改银行核心系统。
OpenAI 与 Anthropic 也都没有只押注“模型更聪明”。它们都在围绕 agent 的环境做工程:云端沙箱、本地 CLI、项目指令、工具协议、权限确认、测试运行、结果审查。行业在 2025 年形成一个共识:编码 agent 的竞争不只是谁的模型会写更多代码,而是谁能把模型放进一个可控的软件生产系统。
这就是程序员新同事的真实形态。它不是单独的“大脑”,而是模型、上下文、工具、权限、日志、测试和 review 的组合。缺任何一个,都容易从同事退化成会胡说的实习生;多任何一个权限,又可能从实习生升级成事故源。
五、编辑器没有退场,只是换了战场
2025 年的叙事重心从补全转向 agent,并不意味着编辑器路线消失。相反,编辑器仍然是开发者一天里停留最久的地方。只是它不再满足于弹出灰色代码,而是试图成为可对话、可修改、可执行的工作台。
Cursor 这一类 AI 原生编辑器的核心位置仍然是“代码库内的上下文”。开发者打开项目,不只是问“下一行怎么写”,而是问“这个模块做什么”“这个函数在哪里被调用”“帮我把这个接口迁移到新参数”“根据现有风格补测试”。官方文档和产品说明一直围绕代码库理解、多文件编辑、diff 审查和聊天式开发展开。[12] 它的优势在于贴近人类写代码的肌肉记忆:文件树、编辑窗口、搜索、终端、diff 都在同一屏幕附近。
Windsurf 的路线则延续了 Codeium 从补全工具向 agentic IDE 的迁移。2024 年底 Codeium 发布 Windsurf Editor,随后在 2025 年品牌改为 Windsurf;官方叙事强调 agentic IDE,让 AI 不只是建议代码,而是在 IDE 内围绕目标连续查找、修改、运行和修复。[13] 在本章时间范围内,Windsurf 代表的是另一条竞争线:不是从 GitHub issue 入口切入,也不是从模型 API 切入,而是直接把开发者的主工作台改造成 agent 工作区。
编辑器 agent 和 GitHub coding agent 的差异很现实。编辑器 agent 更适合即时探索:读陌生代码、重构一组文件、修本地测试、解释错误。GitHub coding agent 更适合异步任务:把 issue 分配出去,等待 draft PR,进入 review。终端 agent 更适合环境操作:跑命令、查日志、调构建。云端 Codex 更适合并行排队:多个任务同时处理,结果回到人类面前。
这几类入口会重叠,也会竞争。一个开发者可能在 Cursor 里写需求草稿,让 Claude Code 跑本地测试,把 issue 分给 Copilot coding agent,再让 Codex 尝试另一个修复方案。软件工程从未缺少工具,缺少的是工具之间不互相踩脚。2025 年的荒诞之处在于,为了让 agent 帮人类管理复杂性,人类先要管理一群 agent 的上下文、权限和输出格式。
因此,编辑器路线的意义不在于它一定赢过 GitHub 或模型公司,而在于它证明 agent 不会只有一个入口。程序员的新同事可能在 IDE 侧边栏里建议 diff,也可能在终端里请求运行命令,可能在 GitHub 上开 PR,也可能在云端排队处理任务。它们都声称自己更懂项目;最后检验它们的,不是发布会上生成了多少代码,而是团队在周三下午合并它们的 PR 时,愿不愿意少皱一点眉。
六、程序员变成规格员、审稿人和责任人
这些工具真正改变普通开发者工作的地方,不是让人完全不写代码,而是把一天里的角色重新洗牌。
一个典型任务过去可能这样开始:开发者读 issue,复现 bug,找相关文件,修改实现,补测试,本地运行,提交 PR,等待 review。agent 进入之后,流程变成另一种形状:开发者先把 issue 写得更清楚,补充约束、边界条件、验收标准和测试命令;把任务分给 agent 或在终端中要求 agent 尝试修复;随后阅读 diff、检查测试、追问设计理由,必要时要求 agent 改第二版、第三版;最后仍由人类决定是否合并。
这意味着开发者从“代码打字员”向四个角色移动。
第一,规格撰写者。agent 对模糊任务很敏感。人类写“优化登录体验”,它可能不知道是减少请求、调整 UI、修 bug,还是改文案。人类写“当密码错误时保持邮箱输入框内容,显示现有错误组件,不改变登录 API,补充对应单元测试和 Playwright 用例”,agent 才更可能沿着正确轨道行动。过去,规格不清导致同事返工;现在,规格不清会让机器同事以极快速度返工。
第二,差异审稿人。AI 生成的代码常常比初学者代码更像“正确代码”:格式整齐,命名自然,注释完整,甚至测试也齐全。它的问题往往藏在业务语义、权限假设、边界条件和长期维护里。reviewer 不能只看它能不能编译,还要问:这个分支会不会泄露数据?这个缓存会不会破坏一致性?这个依赖是否必要?这个测试是否只是验证了错误实现?
第三,测试运行者和测试设计者。agent 可以跑测试,也可以补测试,但测试仍然需要独立规格。最危险的情况是 agent 先写错实现,再根据错误实现生成通过的测试。那不是验证,而是自我鼓掌。团队需要更明确的回归用例、集成测试、端到端路径和 CI 策略,让机器产出的 diff 被机器可重复地检验,再被人类有判断地接受。
第四,责任持有人。无论 Codex、Claude Code、Gemini CLI 还是 Copilot coding agent 写了多少代码,生产事故不会发给模型绩效面谈。客户、监管、SLA、审计、开源许可证和安全漏洞,最终仍由公司和人类团队承担。agent 可以生成 PR,但不能在事故报告上签字;可以建议升级依赖,但不能向客户解释为什么昨晚服务不可用。
对初级开发者,这种变化尤其复杂。过去,一些简单任务虽然枯燥,却是理解系统的训练路径:改字段、补接口、写 CRUD、修小 bug、读失败测试。agent 把这些任务压缩之后,新人更容易“发货”,也更容易跳过理解。一个人可以让 AI 生成一大段可运行代码,却未必知道为什么项目不用另一种架构,为什么某个老接口不能碰,为什么那个看似多余的判断保护了三年前的客户数据。
这不是说新人没有机会。相反,agent 可能让新人更快进入大型代码库,更快获得解释,更快看到可运行方案。但学习路径需要重新设计。团队不能只看新人合并了多少 AI 辅助 PR,还要看他们能否解释 diff、定位错误、写出清楚规格、拒绝看似漂亮但不合适的方案。AI 降低了开始的门槛,也提高了真正理解系统的要求。
资深工程师的价值也没有消失,只是更集中在判断上。哪些任务适合交给 agent?哪些文件不该让它碰?哪些测试结果可信?什么时候应该让它继续迭代,什么时候应该人类接手?什么时候一个 agent 生成的“简单修复”其实正在绕开架构边界?这些判断过去就重要,2025 年以后变得更显眼。
程序员的新同事终于上岗,但它改变的不是责任归属,而是责任前的劳动分布。人类少敲了一些样板代码,多写了一些规格;少查了一些命令参数,多看了一些 diff;少从零搭脚手架,多决定哪些脚手架不该存在。工作的手感变了,签名的位置没变。
七、没有工牌的新同事
2025 年到 2026 年初,编码成为普通专业人士最早大规模接触 agent 同事的场景之一。这件事有充分的工程原因。代码天然可文本化,仓库天然可版本化,任务天然可 issue 化,结果天然可 diff 化,质量至少部分可测试化。相比让 agent 自由操作整个互联网,让它先在软件仓库里工作,像是把一只会开门的动物先放进装了围栏的实验室。
但围栏不是万能的。AGENTS.md 可以告诉它如何跑测试,却不能保证需求正确;MCP 可以连接外部工具,却不能替团队做权限治理;Codex 可以在云端并行处理任务,却不能保证每个结果都符合长期架构;Claude Code 和 Gemini CLI 可以在终端里改文件跑命令,却更需要确认和审计;Copilot coding agent 可以开 draft PR,却不能把 review 变成橡皮图章。
兴奋与怀疑必须同时保留。兴奋在于,这些工具确实把很多低价值摩擦压缩了。一个开发者可以更快理解陌生代码库,更快得到初稿,更快补测试,更快尝试迁移方案。怀疑在于,软件工程从来不是代码行数竞赛。它是团队协作、长期维护、风险控制和责任分配。代码越容易生成,判断越不能外包。
这一轮变化也和早期“AI 软件工程师”的宏大口号不同。行业没有等来一个单独坐在工位上的机器程序员,而是在工具链每个缝隙里看见 agent:终端、IDE、GitHub issue、pull request、云端沙箱、MCP 工具、项目指令文件。它们没有统一制服,却都在争夺同一个位置:软件任务从自然语言走向代码变更的默认通道。
程序员的新同事已经上岗。它接任务,读文件,改代码,跑测试,开 PR;它也需要说明书、权限边界、review、回滚和人类签字。它不像传统同事那样会在站会上说“昨天被依赖阻塞”,但它会在日志里留下另一种阻塞:测试失败、上下文不足、权限被拒、指令冲突。
真正的问题不再是它会不会写代码,而是团队能否把它放进足够好的流程里。让它做擅长的事,让它留下证据,让它接受审查,让人类保留最后判断。软件行业第一批 agent 同事没有改变一条老规则:能合并进主干的,不是最会说话的代码,而是经得起责任追问的代码。
参考文献
- Anthropic,“Claude 3.7 Sonnet and Claude Code”,2025-02-24。
- OpenAI,“Introducing Codex”,2025-05-16。
- GitHub Blog Changelog,“GitHub Copilot coding agent is now available for Copilot Business users”,2025-06-24。
- Google Blog,“Introducing Gemini CLI: An open-source AI agent”,2025-06-25。
- GitHub Blog Changelog,“GitHub Copilot CLI is now generally available”,2026-02-25。
- GitHub Blog Changelog,“Copilot coding agent now supports remote MCP servers”,2025-07-09。
- GitHub Blog Changelog,“Copilot coding agent now supports AGENTS.md custom instructions”,2025-08-28。
- OpenAI,“Introducing GPT-5 for developers”,2025-08-07。
- Anthropic,“Claude Code remote MCP”,访问日期 2026-02-28。
- Anthropic,“Claude Opus 4.1”,2025-08-05。
- Anthropic,“Claude Sonnet 4.5”,2025-09-29。
- Cursor,“Cursor Documentation”,访问日期 2026-02-28。
- Windsurf / Codeium,“Introducing the Windsurf Editor”,2024-11-13;Windsurf,“Codeium is now Windsurf”,2025-04。