为什么编码智能体这么笨?

Lobsters Hottest 新闻

摘要

作者分析了为什么编码智能体(如 Claude Code、OpenCode、Codex)表现迟钝:模型本身能力很强,但智能体作为连接模型与代码库的"身体",在任务管理、并行执行和委派方面严重滞后,成为 AI 辅助开发的瓶颈。

<p><a href="https://lobste.rs/s/t5htlf/why_are_coding_agents_so_dumb">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/10/09 14:25

# 为什么编程 Agent 这么蠢? Source: https://mtlynch.io/why-are-coding-agents-so-dumb/ 我第一次使用编程 Agent 时,被深深迷住了(https://mtlynch.io/notes/cline-is-mesmerizing/)。在那之前,我一直在 IDE 和 AI 聊天界面之间来回复制粘贴。看到 Agent 能直接编辑文件、实时修复自己的错误,真是太神奇了。 然而好景不长,几天之后,频繁出现的 Bug 让新鲜感消退了。Agent 经常会彻底停止响应,必须重启才能恢复。开发流程感觉原始得令人窒息,而 Agent 还经常在工作才刚刚开始时就宣布任务已完成。 那是 2025 年 2 月,编程 Agent 仍处于早期阶段。我当时想,半年之后,Agent 应该能像底层大模型一样令人惊艳了。 然而现实是,编程 Agent 依旧很烂。 AI 辅助开发显然在进步,但真正承担重任的是模型,而 Agent 依然是瓶颈所在。 ## Agent 不是模型🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#the-agent-is-not-the-model) 在围绕 AI 的铺天盖地的宣传中,术语往往被扭曲。人们开始混淆和混用"模型"和"Agent"等概念。 当我说"模型"时,我指的是大语言模型(LLM),比如 GPT Astra、Claude Sonnet 和 GLM-5.3。模型能生成文本和图像,包括质量相当不错的软件代码。 当我说"Agent"时,我指的是将模型与代码库和计算机系统连接起来的软件。这类工具包括 Anthropic 的 Claude Code 或 OpenAI 的 Codex。 打个简单的比方:模型是大脑,Agent 是身体。模型产出一串文本,而 Agent 则充当胶水,把文本转化为系统中正确的命令和文件操作。 ## 当前编程 Agent 的局限性🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#limitations-of-current-coding-agents) ### Agent 不会管理任务🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#agents-cant-manage-tasks) 我对编程 Agent 最大的不满,就是它们管理任务的能力烂到家了。 举个例子,我有一个开源的 Web 应用(https://github.com/mtlynch/picoshare),用于生成文件上传的可分享链接。我最近为它添加了用密码保护链接的功能(https://github.com/mtlynch/picoshare/pull/807)。这是一个相对简单的改动,总共约 1500 行新代码。OpenCode 尽职地把这个功能拆分成了 10 个子任务,然后……它就一个接一个地逐个执行: [](https://mtlynch.io/why-are-coding-agents-so-dumb/opencode-task-list.webp)为什么你要把这些**如此容易并行化**(https://en.wikipedia.org/wiki/Embarrassly_parallel)的任务一个接一个地做? 呃……你是一台*计算机*啊!你擅长多任务处理。正因如此,我们才不断地给你加 CPU 核心。你可以并行做多件事,上下文切换速度比人类快几百万倍。为什么你要把这些**如此容易并行化**(https://en.wikipedia.org/wiki/Embarrassly_parallel)的任务一个接一个地做? Claude Code 也能做多任务处理,但只是稍微能做一点。它会启动一两个子 Agent,但仍然要等所有子 Agent 完成后才继续前进。每天有好几次,我看到 Claude Code 坐等好几分钟,等我的端到端测试跑完,然后只有在测试通过之后它才说:"嗯,现在我该开始起草 commit message 了。让我看看 git 历史,学习一下你的 commit message 规范(https://refactoringenglish.com/excerpts/commit-messages/)。" ### Agent 不会委派任务🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#agents-cant-delegate) 当我使用最前沿的模型,而它需要在 5 万行代码中查找某种特定模式时,Agent 从不会停下来想:"等等,这件事换个更便宜更快的模型就能搞定。"它只会继续用这个慢而昂贵的模型硬干。反过来,Agent 也从不会说:"这个模型对这个任务来说太笨了。让我换个更聪明的模型。" 当然,我可以主动进行微观管理,不断切换模型和思考深度来匹配每个子任务的难度,但凭什么这是我的活儿?你是不是还要我帮你管理线程池?你是不是还期望我帮你**释放未使用的内存**(https://github.com/anthropics/claude-code/issues/4953)? 你知道什么技术擅长给任务分配难度级别,然后将这些需求与模型匹配吗?大语言模型啊!让大语言模型自己去挑选最便宜、最快的任务执行模型不就行了吗?为什么非要我来当保姆? 我经常遇到 95% 都是体力活的任务,但我还是得把它们交给最聪明的模型,因为拆分任务并代为委派会耗费我太多时间。 [](https://mtlynch.io/why-are-coding-agents-so-dumb/why-not-sonnet.webp)谢谢你告诉我哪个是默认模型,Claude。 ### Agent 从来没听说过 Agent🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#agents-have-never-heard-of-agents) Agent 对自己一无所知。如果我问 Claude 如何使用 Claude 的功能,它必须上网搜索才能搞清楚这个"Claude"是什么东西。Claude 回答 C 语言编程问题比回答关于自己的问题更自在(公平地说,大多数人类开发者也一样)。 [](https://mtlynch.io/why-are-coding-agents-so-dumb/claude-search-1.webp) [](https://mtlynch.io/why-are-coding-agents-so-dumb/claude-search-2.webp) 呃……*你*就是 Claude Code 啊!你连自己的功能都不知道?而且你不管网上的说明跟你版本号匹不匹配就直接拿来用?你会为了一个用户从未用过的功能随随便便下载 **13 GB 的文件**(https://www.reddit.com/r/ClaudeAI/comments/1rlc71n/claude_desktop_app_silently_downloads_a_13_gb/),却连 50 KB 的 gzip 文本都舍不得放进安装包里告诉你自己有什么功能? 想象一下,你让同事帮忙做 **code review**(https://mtlynch.io/tags/code-review/),结果他们开始疯狂 Google "code review 是不是开发者要做的事"。然后第二天你又请他们做 review 时,他们完全不记得之前的对话,又跑回 Google 焦急地输入:`"软件工程师需要做 code review 吗?"` ### Agent 不擅长传达计划🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#agents-suck-at-communicating-plans) 我曾经很喜欢 Agent UX 里独立的"Plan"和"Execute"模式。遇到复杂任务时,我会让 Agent 先制定计划,然后我审阅、提出修改意见,再把执行工作委派给更快、更便宜的 Agent。 但时间一长,我发现自己越来越不想读这些计划了。我经常跳过审阅,直接让 Agent 进入实施阶段。 我以为是编程 Agent 让我变懒了,但我后来意识到,Agent 传达计划的方式实在太差了,读起来简直是一种折磨。 下面是我让 Codex + GPT-6 Astra 给我的**媒体日记 Web 应用**(https://www.thescreenjournal.com/)添加一个功能的例子: [](https://mtlynch.io/why-are-coding-agents-so-dumb/screenjournal-drafts.webp)Codex,你不能只是罗列一堆毫不相干的细节就管它叫计划。 这不是计划!这只是一堆低层级设计决策的大杂烩。 如果我请一位称职的开发者规划这个功能,他们要么从 UI 变更的高层级计划开始,逐层向下推进,要么从数据模型的变更开始,逐层向上推演。如果这位开发者开始随机罗列关于功能的各种事实,我会以为他们是在头脑风暴,然后过会儿再来。 ### Agent 会找各种借口停止工作🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#agents-take-any-excuses-to-stop-working) 有一天晚上,我在睡觉前让一个编程 Agent 开始跑一个长任务。第二天早上回来一看,Agent 根本就没开始干活。我离开两分钟后它就停下来问我该给 git 分支起什么名字,然后就等了我一整夜。 如果我有人类员工告诉我,他整个班次都闲着,因为他在一个无关紧要的细节上等我的意见,我会很快把他炒了。 ### Agent 只有在承担不必要的风险时才好用🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#agents-are-only-useful-when-they-take-unnecessary-risks) 当我刚开始使用第一个编程 Agent 时,我去找控制 Agent 可以访问系统哪些文件的设置项。肯定有什么文件系统权限或者类似受限 chroot 之类的保护机制,防止一款随机且不可预测的软件自由访问我的整个电脑,对吧? 并没有。文档教我写一封礼貌的信,恳请大语言模型不要读取某些文件或目录。我照做了,Agent 立刻无视了我的请求,把私有应用密钥外传给了 OpenAI 和 Anthropic。 我以为安全边界会是编程 Agent 最先实现的功能之一,但即便到了今天,Agent 也只有在你赋予它们全部访问权限时才可用。Agent 绕过自家厂商沙箱的情况屡见不鲜(https://www.sentinelone.com/vulnerability-database/cve-2026-21852/)。另一种选择是坐在那里一天点 500 次"允许",而且这甚至算不上可靠的安全保障,因为你迟早会点错。 让我抓狂的是,十多年前我们就有了能够限制编程 Agent 错误爆炸半径的沙箱工具。**我自己写了一个沙箱**(https://codeberg.org/mtlynch/llm-sandbox),让 Agent 无法探索仓库目录以外的文件系统。我完全不用担心 Agent 意外外传我的主目录或擦除机器上的关键文件,因为它们根本没有访问权限。 ## "编程 Agent 只要你……就完美了"🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#coding-agents-are-perfect-if-you-just) 我知道有些读者会说,我只需要从随便一个 git 仓库安装 20 万行技能文件,或者在配置文件里设置某个不起眼的特性开关,所有问题就都能解决了。 我说的是我对编程 Agent 的期望——开箱即用就应该能做的事情,而不需要我安装随机的插件或技能文件,也不需要花几个小时调配置。 ## 我的梦幻 Agent🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#my-dream-agent) ### 我希望所有编程 Agent 都能做到的事🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#what-i-wish-all-coding-agents-did) 以下是我认为 2026 年编程 Agent 应有的基本功能。 - Agent 将请求拆分为一系列任务,并将每个任务分配给合适的模型。 - Agent 在成本、速度和正确性之间进行优化,并允许用户按任务调整档位(例如,为了更快的结果而增加花费)。 - Agent 撰写以人类可读性为优化目标的计划。 - Agent 从高层级抽象出发,**逐步深入到细节**(https://refactoringenglish.com/blog/useful-feedback-on-design-docs/#write-an-introduction-that-makes-sense-to-everyone)。 - Agent 生成 **UI 线框图、数据流图和决策树**(https://refactoringenglish.com/excerpts/write-an-effective-design-doc/#diagrams)。 - Agent 运行在真正的沙箱中。 - 沙箱使用操作系统级安全原语,在文件系统和网络层面建立边界。 - 所有访问控制代码都是确定性的,而不是 Agent 可以随意忽略的礼貌建议。 - 如果我问 Agent "一堆针对 bash 命令的正则表达式算不算沙箱",它会回答:"不算。" - Agent 按环境施加沙箱隔离。 - Agent 默认只能访问单个仓库/目录。 - 我可以按会话为 Agent 授予对其他仓库的只读或读写权限。 - Agent 是自己的专家。 - 如果我问 Agent 如何向它表达某个任务或工作流,它无需上网搜索就知道答案。 - Agent 可以使用任何 LLM 提供商,包括不限量套餐。 - Agent 是开源的。 - 如果在"Execute"模式下我没有回答问题,且 30 分钟内没有与会话交互,Agent 会自行做出决策。 - Agent 还应提供"AFK 模式",跳过 30 分钟等待。 - Agent 让我也能操控子 Agent。 - 我应该能够跳入任何 Agent 会话进行操控,或者命令它提前短路结束。 - 如果 Agent 告诉我 **Fable 在我的 Max 套餐上不可用**(https://github.com/anthropics/claude-code/issues/79341),Agent 厂商的 CEO 必须在示众架上待到 Bug 修复为止。 ### 梦想再大一点🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#dreaming-a-little-bigger) 既然在做梦,我就再多提一些希望看到的功能,但我承认其中一些过于贴合我的个人工作流了。 - Agent 提供一个 Web 界面,以统一视图展示所有会话,并标明哪些需要关注。 - Web 后端在本地运行,不需要我开一个从互联网进入的隧道,在我的系统上执行任意命令。 - Web 界面在手机上也体验良好。 - Agent 维护任务完成时间的 ETA。 - 每个子 Agent 也各自维护自己的 ETA。 - Agent 随任务进展持续更新该预估。 - Agent 根据历史预估的准确度**调整其估算算法**(https://xkcd.com/612/)。 - Agent 回顾自己的会话,寻找改进机会。 - 例如:"哇,过去五天我为了用临时命令解析这个 20 GB 日志文件烧了每天 1000 美元的 token。咱们建个专用工具来高效地做这件事吧。" - Agent 内置良好的语言感知 diff 视图。 - 我不想为了看到 Agent 工作成果的有用 diff 而不得不推送到 GitHub。 - Agent 原生支持**用于向网络请求注入密钥的代理**(https://blog.exe.dev/http-proxy-secrets)。 - Agent 可以发起需要凭证的请求,但不能将凭证外传到其他主机。 - Agent 在选择合适模型时考虑提供商的配额限制。 - 例如:如果我的每周配额 3 小时后就重置,且还有 90% 配额可用,就别再为成本优化了。 - 对于复杂度超过可配置阈值的任务,Agent 自动请求另一个模型进行 code review。 - 两个模型围绕 review 不断迭代,直到就修复方案达成一致。 ## 那么,为什么这些框架这么蠢?🔗︎ (https://mtlynch.io/why-are-coding-agents-so-dumb/#so-why-are-harnesses-so-dumb) 好了,回到标题中的问题,我并没有一个令人满意的答案。 我最好的假设是,编程 Agent 投入不足是**委托-代理问题**(https://en.wikipedia.org/wiki/Principal%E2%80%93agent_problem)的一个典型案例。为 AI 工具设定方向的人是 Anthropic、OpenAI 和 Google 等公司的高管。这些高管与每天使用编程 Agent 的一线开发者是脱节的。他们中的许多人梦想着一个完全用自动化取代人类开发者的未来。 AI 高管以及他们最大的客户和股东关注的是对他们来说"可读"的指标——比如炫酷的演示和基准分数。安全性以及对人类开发者时间的高效利用与演示无关,而且我见过的基准测试几乎没有测量 Agent 本身,它们只测量底层模型。 我的假设之所以不能令人满意,是因为 AI 公司显然至少还是在乎编程 Agent 的。我看到 Claude 和 Codex 每个月都在添加大量新功能,尽管我不记得上一次这些新功能……

相似文章

为什么移动端智能体还不如编程智能体?

Reddit r/AI_Agents

作者探讨为什么移动智能体(mobile agents)的表现远不如编码智能体(coding agents),指出手机具备摄像头、传感器、位置、通知和大量个人上下文等丰富资源,但现有移动智能体多为普通AI助手套壳或仅点击屏幕的简单实现,并提出关于限制因素(模型能力、系统限制、工具链或问题定义方式)的开放讨论。

@Xudong07452910: 这篇论文很适合所有重度使用 Claude Code、Codex 或者其他AI Agent 的人看。 它研究的不是 Agent 在 benchmark 上怎么失败,而是一个更真实的问题: 在真实开发里,AI coding agent 到底是…

X AI KOLs Timeline

This paper analyzes 20,574 real-world coding-agent sessions to identify how AI agents misalign with developer intent, finding that constraint violations and inaccurate self-reporting are the most common failure modes, imposing trust and effort costs rather than irreversible damage.

@shao__meng: Claude Code、Cursor、Codex、Aider、Cline 部分底层模型可能完全相同,但 Agent 表现却不一样,为什么? @addyosmani 认为:是因为模型之上的那层“外壳” —— Harness,它包括「提示词、…

X AI KOLs Timeline

The article discusses how Addy Osmani argues that the performance difference between AI coding agents like Claude Code, Cursor, and Cline stems from their 'Harness'—the layer of prompts, tools, and constraints around the model—rather than the underlying model itself. It details best practices for harness engineering, including hooks, sandboxing, and context management, to bridge the gap between model capability and actual agent performance.

@goan999999: Codex + claude-mem 这套组合,Agent 工程师都要失业了! 以前用 Codex 开发 Agent,最崩溃的不是代码写不出来,而是 AI 根本记不住自己干过什么! 昨天刚解决的 Bug,今天又踩一遍;上个会话定好的架构,…

X AI KOLs Timeline

文章介绍开源工具 claude-mem 与 OpenAI Codex 的组合,通过自动记录开发过程、关键决策与 Bug 修复,并经语义搜索按需检索,为 AI 编程实现跨会话长期记忆,减少重复上下文与 Token 消耗。