ChatGPT 会写代码,Copilot 会补全,LangChain 官网也说自己能做 agent------但它们大多不是 Coding Agent。这篇文章给你一把尺子:什么才算、差在哪,以及为什么"会生成代码"和"是 Coding Agent"是两码事。
三个画面
先看三个都叫"AI 写代码"的画面。
画面一:你开着聊天窗口,让 AI 写个函数。它给了,你复制、粘贴、运行、报错,再把报错贴回去。一来一回,你的手没停过。
画面二:你在 IDE 里敲代码,Copilot 的灰色幽灵文字提前半句浮现出来,你按下 Tab。
画面三:你对终端里的 agent 说一句"把这个失败的测试修绿",然后起身去倒咖啡。回来时测试绿了,一份 diff 躺在那儿等你 review------中间它自己读了代码、改了文件、跑了三轮测试、修了两次报错。
三个画面里的 AI 都在"写代码",但只有第三个是 Coding Agent。前两个差在哪?这正是本文要回答的问题。
先把"Agent"说清楚
聊 Coding Agent 之前,得先给"普通 Agent"下个定义。业内流传最广的公式来自 Martin Fowler:
Agent = Model + Harness
Model 是大脑,Harness(直译"马具")是套在大脑外面的那副身体:它能调用哪些工具、有没有记忆、出了错怎么兜底。光有大脑只能聊天,配上身体才能做事------帮你订机票的是 agent,替你查资料写报告的是 agent,自动处理客服工单的也是 agent。
注意这个定义里没有出现"代码"两个字。Agent 是个通用概念,身体可以是任何形状。那么,什么样的 agent 才配叫 Coding Agent?很多人的第一反应是"给它加上写代码的工具不就行了"------差不多,但漏掉了最关键的一块。
分水岭:谁来判卷
Coding Agent 与普通 Agent 的本质区别,不在于它输出的是代码,而在于一件事:它做得对不对,由机器判卷,不由人判卷。
打个比方。普通 agent 像一个没法自己尝味道的厨师:每加一勺盐都得端给你,问一句"咸淡合适吗"。它订的机票是不是你想要的航班、写的报告方向对不对,最终裁判是你,反馈得等你开口。所以它每走几步就要停下来等人。
Coding Agent 的幸运在于,软件工程是极少数自带判卷机 的领域:代码写错了,编译器会报错;逻辑不对,测试会飘红;风格有问题,lint 会警告。这些反馈客观、即时、免费。Coding Agent 就是把这台判卷机接进了自己的工作循环------测试就是它的舌头,每改一次就尝一口,错了自己回炉,不需要人守在旁边。
于是就有了那个核心循环:
读代码 → 改代码 → 跑起来(测试/编译)→ 看结果 → 不对就再改 → 直到通过
这个"编辑---执行---验证"的闭环,就是 Coding Agent 的心脏。画面一里的 ChatGPT 没有这个闭环------你在替它跑代码、贴报错,你才是那个循环,它只是循环里的一个函数。画面二的 Copilot 补全连循环都没有,它是一次性的预测。只有画面三,循环完整地长在 agent 自己身上。
插一个问题:为什么偏偏是"写代码"先跑出了 Agent?
这两年各行各业都在做 agent,但公认最先"能真干活"的就是 Coding Agent。这不是巧合,而是软件工程这个领域天生占了三个便宜。
第一,有判卷机。 上面说过了,测试和编译器提供客观、即时、免费的反馈。对比一下"帮我策划一场营销活动"------方案好不好,得等市场用几周时间告诉你,agent 根本没法自己迭代。
第二,错了能悔棋。 git 让每一步修改都可回滚,沙箱让危险操作出不了圈。agent 可以大胆试错,代价近乎为零。而"帮我给客户发封邮件"这种事,发出去就收不回来,你敢让它自主循环吗?
第三,整个世界都是文本。 代码、报错、日志、diff、文档,全是大语言模型最擅长的介质,不需要看屏幕、不需要动鼠标。环境本身就说着模型的母语。
判卷机、悔棋键、母语环境------三样凑齐,自主循环才转得起来。其他领域的 agent 之所以慢半拍,往往不是模型不行,而是这三样凑不齐。理解了这一点你就明白:Coding Agent 不是"普通 Agent 加个写代码功能",而是 agent 这个物种在条件最好的栖息地里,最先完成的一次进化。
一个 Coding Agent 的五件套
把闭环拆开,一个合格的 Coding Agent 需要五样东西。用身体打比方:
1. 手------能改文件、能跑命令。 读写编辑文件、执行 shell 命令、用 grep 在仓库里搜代码。研究者给这层起了个正式名字叫 ACI(Agent-Computer Interface,agent 与计算机之间的接口)。SWE-agent 那篇论文证明过:同样的模型,接口设计的好坏能拉开几十个百分点的成绩------手笨手巧,差别很大。
2. 眼------在几十万行代码里找到该看的。 真实仓库塞不进任何模型的上下文窗口。所以它得会检索、会读目录结构、会先看骨架再看细节,长任务里还要会"压缩记忆"腾地方。这层功夫业内叫上下文工程(Context Engineering)。
3. 舌头------自己验证,错了自己修。 前面说的判卷闭环:跑测试、读报错、定位、修复、再跑。这是分水岭本岭。
4. 记性和条理------计划、清单、断点续跑。 复杂任务要先拆解成 todo,做完一项勾一项;跑到一半断了,明天能接着跑。有些还会派"子 agent"------一个干活、另一个专门挑刺。道理和人类团队一样:写代码的和验收的最好不是同一个,自己给自己批改作业,总是批得太宽容。
5. 安全带------沙箱和权限。 它的动作是有副作用的:删文件、执行命令都是真删真执行。所以必须有隔离环境、权限审批、git 兜底(改坏了能回滚)。普通 agent 说错一句话可以重说,Coding Agent 敲错一条 rm 命令可没法重说。
行业里还有一条事实标准:能不能被拉到 SWE-bench 这类基准上考试------给它一批真实开源项目的 bug,看它端到端能修好多少。考不了这个试的,基本就不是 Coding Agent。
一张表看懂区别
| 维度 | 普通 Agent | Coding Agent |
|---|---|---|
| 判卷人 | 人,或模糊的外部信号 | 编译器、测试、lint------客观且即时 |
| 核心循环 | 人在循环里当调度器 | "编辑---执行---验证"闭环长在自己身上 |
| 动作性质 | 多为查询、生成、调 API | 有副作用的写操作(改文件、执行命令) |
| 工作环境 | 网页、API、对话框 | 文件系统 + shell + git 的真实开发环境 |
| 出错代价 | 重说一遍 | 需要沙箱、权限、版本回滚兜底 |
| 能否标准化考试 | 难 | SWE-bench 等基准,成绩公开可比 |
如果嫌表格麻烦,记一个零装配测试就够了:
把它指向一个真实仓库,说"把这个失败的测试修绿",不写一行胶水代码------它能自己跑到绿,就是 Coding Agent;要你先拼工具、写编排、搭循环,那它是框架。
逐个裁决:市面上这些,谁算谁不算
有了尺子,量一圈市面上的名字。
算的:Claude Code、OpenAI Codex、Gemini CLI、Aider、Cline、Cursor/Windsurf 的 agent 模式、GitHub Copilot coding agent(注意,是这个独立产品,不是补全功能)、OpenHands、SWE-agent。它们的共同点:拆开箱子闭环就是通的,并且都在 SWE-bench 类基准上交过成绩单。
不算的:LangChain / LangGraph。 它们是通用 agent 框架 ------提供循环的机械零件(状态图、消息传递、工具抽象),但不预设"环境是软件工程"。打个比方:Coding Agent 是拼好的机器人,LangChain 是那桶乐高。桶里的零件确实能拼出机器人,但桶本身不是机器人。有意思的是,LangChain 公司自己在框架上拼了两个东西:deepagents(自称"电池齐全的 agent harness",内置文件系统、规划工具、子 agent)和 Open SWE(开源的异步 Coding Agent)。这恰好从反面证明了边界------Open SWE 是 Coding Agent,LangGraph 只是它脚下的地基。同理,AutoGen、CrewAI 这些通用框架也都不算。
不算、但值得单说的:AgentScope。 阿里通义实验室的这个通用多 agent 框架是个有趣的灰色地带:2026 年 5 月发布的 AgentScope 2.0 直接内置了 Bash()、Read()、Write()、Edit() 这些工具原语,还带 Docker、E2B 等沙箱后端和细粒度权限系统------相当于把 Coding Agent 的"手"和"安全带"做成了框架自带零件,装配成本从"数周"降到"一个下午"。但零件齐全不等于闭环接通:针对代码调优的提示词与上下文管理、验证循环的默认策略、经过基准检验的脚手架,这些仍要你自己动手。零件送到了门口,闭环还得自己接。
也不算的:Copilot 补全、以及所有"会输出代码的聊天机器人"。 判据从来不是"输出是不是代码",而是"闭环长在谁身上"。
两个最容易踩的误解
误解一:"会生成代码 = Coding Agent"。 生成只是闭环里的一环。没有执行和验证,生成得再好也只是画面一------你依然是那个人肉调度器,凌晨两点还得守着窗口贴报错。
误解二:"用框架能拼一个,所以框架也算"。 "能用来造"和"是"是两回事。而且要泼一盆冷水:2026 年用通用框架自拼一个通用 Coding Agent,多半是负杠杆 。原因藏在一个不太显眼的事实里------Claude Code 这类产品的 harness 敢做得很薄,是因为模型在训练阶段就针对这套工具专门练过,大脑和身体是协同演化 的;通用框架必须假设"什么模型都能接",吃不到这份红利。你自拼的那个,等于在重造别人用海量工程时间加模型协同训练打磨过的东西。自建真正说得通的场景只剩一类:内部定制------私有沙箱、特殊合规、垂直工作流,这也正是 Open SWE 和 AgentScope 瞄准的生态位。
结语
回到那三个画面。画面一和画面二里,AI 是你手里的工具,循环在你身上;画面三里,循环第一次完整地长在了 AI 身上,你从"调度器"退到了"验收人"。
一句话收束:
普通 Agent 是"能替你做事的 AI",Coding Agent 是"做完还能自己对答案的 AI"。框架给你循环的机械零件,Coding Agent 给你的,是已经咬合进真实开发环境、拆箱即转的那个循环。
判断一个新工具算不算,不用听发布会------把它指向一个仓库,说一句"把这个测试修绿",然后去倒杯咖啡。回来时答案自然揭晓。
参考来源:
- SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering(arXiv 2405.15793)
- SWE-bench 官方站点
- AgentScope(agentscope-ai/agentscope,GitHub)
- AgentScope 2.0 发布解读 --- SOTA Sync
- Open SWE: An Open-Source Framework for Internal Coding Agents --- LangChain Blog
- langchain-ai/deepagents --- The batteries-included agent harness(GitHub)
注:文中提到的产品能力可能随版本变化,引用某项具体能力前请以官方文档为准。