为什么编程智能体这么笨?
Why Are Coding Agents So Dumb?
编程智能体仍是 AI 辅助开发的瓶颈,模型在干重活,智能体却拖后腿。作者指出当前智能体存在任务管理糟糕、不会委派子任务、不了解自身功能、计划沟通混乱等问题,例如 OpenCode 把可并行的 10 个子任务逐个串行执行,Claude Code 只会启动一两个子智能体且需等全部完成才继续。
第一次使用编码代理时,我被深深迷住了。在使用代理之前,我需要在IDE和AI聊天界面之间复制粘贴。看到代理直接编辑文件并实时修复自己的错误,真是令人惊叹。
几天后,蜜月期结束了,因为我遇到了频繁的bug。代理会完全停止响应,直到我重启它。开发工作流感觉原始得令人窒息,而且代理常常在工作才刚刚开始时,就宣布任务已完成。
那是在2025年2月,所以对编码代理来说还处于早期阶段。我本以为六个月后,代理在技术上会像底层LLM一样令人印象深刻。
然而,编码代理依然很糟糕。
AI辅助开发显然已经进步了,但模型在承担重任,而代理仍然是瓶颈。
代理不是模型 🔗︎
在围绕AI的所有炒作中,术语往往会被扭曲。人们开始过度加载和混淆“模型”和“代理”这样的术语。
当我说“模型”时,我指的是像GPT Astra、Claude Sonnet和GLM-5.3这样的大型语言模型(LLM)。模型生成文本和图像,包括相当不错的软件代码。
当我说“代理”时,我指的是将模型连接到代码库和计算机系统的软件。这些是像Anthropic的Claude Code或OpenAI的Codex这样的工具。
打个简单的比方,模型是大脑,代理是身体。模型产生文本流,代理则充当胶水,将文本接入系统上正确的命令和文件。
当前编码代理的局限性 🔗︎
代理无法管理任务 🔗︎
我对编码代理最大的不满是它们管理任务的方式极其糟糕。
例如,我有一个开源Web应用,可以为文件上传生成可分享的链接。我最近添加了用密码保护链接的支持。这是一个相对简单的改动,总共约1.5k行新代码。OpenCode尽职尽责地将该功能分解为10个子任务,但随后它只是……一个接一个地完成它们:

你为什么要一次一个地做这些令人尴尬的并行任务?
嗯……你是一台计算机!你非常擅长多任务处理。这就是为什么我们一直给你那么多CPU核心。你可以并行做多件事,并且上下文切换速度比人类快数百万倍。你为什么要一次一个地做这些令人尴尬的并行任务?
Claude Code能多任务处理,但只是稍微一点。它会启动一两个子代理,但仍然会等待它们全部完成后再继续。每天多次,我会看到Claude Code坐等几分钟,等待我的端到端测试完成,然后只有在测试通过后,它才会说:“嗯,现在我应该开始起草提交信息了。让我看看git历史,学习你的提交信息约定。”
代理无法委派 🔗︎
当我使用一个前沿模型,而它需要检查5万行代码中的某个特定模式时,代理从不会停下来并说:“等等,这是另一个模型可以更便宜、更快完成的事情。”它只是用那个缓慢、昂贵的模型硬着头皮干下去。反过来,代理也从不会说:“这个模型对这个任务来说太笨了。让我换一个更聪明的来。”
当然,我可以主动微观管理任务,不断切换模型和思考级别来匹配每个子任务的难度,但为什么这是我的工作?难道你还需要我帮你管理线程池吗?你是不是还指望我帮你释放未使用的内存?
你知道什么技术擅长给任务分配难度等级,然后将这些需求与模型匹配吗?一个 LLM!直接让 LLM 为任务挑选最便宜、最快的模型就行了。为什么你需要我来照看你?
我经常遇到 95% 都是苦力活的任务,但我仍然不得不把它们分配给最聪明的模型,因为把任务切碎并代表智能体进行委派会占用我太多时间。

谢谢你告诉我哪个是默认模型,Claude。
智能体从没听说过智能体 🔗︎
智能体对自己一无所知。如果我问 Claude 如何使用 Claude 的功能,它必须上网搜索才能弄清楚这个“Claude”到底是什么东西。Claude 回答关于 C 编程的问题比谈论自己更自在(公平地说,大多数人类开发者也是如此)。
呃……你就是 Claude Code!你连自己的一些功能都不知道?而且你只是随便谷歌一下说明,不管它们是否与你的版本号匹配?你会为一个用户从未用过的功能随手下载13 GB 的文件,却不肯在你的安装包里留出 50 KB 的 gzip 压缩文本来向你解释你自己的功能?
想象一下,你让队友做一次代码审查,结果他们开始疯狂谷歌,想弄清楚代码审查是不是开发者会做的事。然后第二天你再让他们做一次代码审查时,他们对之前的对话毫无记忆,又跑回谷歌,焦急地输入,"do software engineers do code reviews?"
智能体不擅长沟通计划 🔗︎
我以前很喜欢智能体 UX 中“计划”和“执行”模式分开的功能。对于复杂的任务,我会让智能体制定一个计划,然后我审查它,提出修改建议,再把执行委派给一个更快、更便宜的智能体。
久而久之,我对阅读这些计划产生了厌恶。我常常跳过审查,直接让智能体进入实现阶段。
我以为是编码智能体让我变懒了,但我意识到,智能体沟通计划的方式太糟糕了,读起来很痛苦。
下面是我让 Codex + GPT-6 Astra 为我的媒体日志 Web 应用添加一个功能的例子:

你不能只是列出一堆互不相关的细节,然后称之为计划,Codex。
那不是计划!那只是一堆低级设计决策的大杂烩。
如果我让一位称职的开发者来规划这个功能,他们要么从 UI 变更的高层计划开始,然后向下细化,要么描述数据模型的变更,然后向上推进。如果开发者开始列举关于这个功能的零散事实,我会认为他们在头脑风暴,然后稍后再回来。
智能体会找任何借口停止工作 🔗︎
前几天晚上,我在睡前启动了一个编码智能体中的长任务。第二天早上回来,发现智能体甚至还没开始工作。它在我离开两分钟后就停下来,问我该给一个 git 分支起什么名字,然后整晚坐在那里等我的回答。
如果我有一个人类员工告诉我,他们整个班次都闲着,因为他们想就某个肤浅的细节征求我的意见,我会立刻解雇他们。
智能体只有在承担不必要的风险时才有用 🔗︎
当我开始使用我的第一个编码智能体时,我寻找那个控制智能体可以访问我系统上哪些文件的设置。肯定有某种文件系统权限或受限的 chroot 之类的保护,能防止一个随机且不可预测的软件不受限制地探索我的整个电脑,对吧?
并非如此。文档鼓励我给 LLM 写一封礼貌的信,恳请它不要读取某些文件或目录。我试了,智能体立刻无视了我的请求,把私有的应用程序密钥外泄给了 OpenAI 和 Anthropic。
我以为安全边界会是编码智能体最先实现的东西之一,但即便在今天,只有你给智能体访问一切内容的权限,它们才可用。智能体经常绕过自己厂商的沙箱。另一种选择是坐在那里每天点击 500 次“允许”,而这甚至都不是可靠的保护,因为你迟早会点错。
让这件事如此令人抓狂的是,我们已经有十多年的沙箱工具,可以限制编码智能体犯错造成的影响范围。我自己搭建了一个沙箱,这样智能体就无法探索我的仓库目录之外的文件系统。我永远不必担心智能体会意外外泄我的主目录或抹掉我机器上的关键文件,因为它们根本没有权限这么做。
“只要你……编码智能体就是完美的” 🔗︎
我知道有些读者会说,只要我从随机的 git 仓库安装 20 万行技能文件,或者在我的配置文件中设置某个冷门的特性开关,我就能解决所有问题。
我谈论的是我对编码智能体开箱即用能力的期望——无需我安装随机插件或技能文件,也无需花几个小时调整配置。
我梦想中的智能体 🔗︎
我希望所有编码智能体都能做到的事 🔗︎
这些是我认为在 2026 年应该成为编码智能体基本要求的基础功能。
- The agent splits requests into a series of tasks and assigns each task to the appropriate model.
- 智能体针对成本、速度和正确性进行优化,并允许用户按任务调整这些旋钮(例如,花更多钱换取更快的结果)。
- The agent writes plans that optimize for human comprehension.
- 智能体从高层次的抽象开始,逐步深入到细枝末节。
- 智能体创建UI 原型、数据流图和决策树。
- The agent operates within a real sandbox.
- 沙箱使用操作系统级的安全原语,在文件系统和网络层面创建边界。
- 所有访问控制代码都是确定性的,而不是智能体可以随意无视的谦卑建议。
- 如果我问智能体,针对 bash 命令的一串正则表达式算不算沙箱,它会回答:“不算。”
- The agent applies per-environment sandboxing.
- 智能体默认只能访问单个仓库/目录。
- 我可以按会话授予智能体对其他仓库的只读或读写访问权限。
- The agent is an expert on itself.
- 如果我问智能体如何向智能体表达某个任务或工作流,它不用上网搜索就知道答案。
- 智能体可以使用任何 LLM 提供商,包括无限量套餐。
- 智能体是开源的。
- If I don’t answer a question in “Execute” mode, and I haven’t interacted with the session in 30 minutes, the agent makes the decision independently.
- 智能体还提供“AFK 模式”,可以跳过那 30 分钟的等待。
- The agent lets me drive the subagents, too.
- 我应该能够随时进入任何智能体会话,驱动它,或者让它短路并提前结束。
- 如果智能体告诉我Fable 在我的 Max 套餐中不可用,那么智能体厂商的 CEO 必须被关进枷锁示众,直到这个 bug 被修复。
再大胆梦想一下 🔗︎
只要我还在做梦,以下是我希望看到的一些额外功能,但我承认其中一些过度偏向了我个人的工作流程。
- The agent offers a web interface that shows me a unified view of all sessions and which ones require attention.
- Web 后端在本地运行,不需要我从互联网打开一条隧道来在我的系统上执行任意命令。
- Web 界面在我的手机上运行良好。
- The agent maintains an ETA for task completion.
- 每个子代理也维护自己的 ETA。
- 代理会随着任务进展持续更新这一估计。
- 代理会根据其过去估计的准确度调整其估计算法。
- The agent reviews its own sessions and looks for opportunities to improve.
- 例如,“哇,过去五天我每天烧掉 1000 美元的 token,试图用临时命令解析这个 20 GB 的日志文件。让我们构建一个自定义工具来高效地完成这件事。”
- The agent comes with a good language-aware diff view.
- 我不想为了看到代理工作的有用 diff 而必须推送到 GitHub。
- The agent natively supports a proxy for injecting secrets into network requests.
- 代理可以发起需要凭据的请求,但无法将凭据外泄到另一台主机。
- The agent considers provider quota limits when selecting an appropriate model.
- 例如,如果我的每周配额在 3 小时后重置,而我们仍有 90% 的配额可用,那就停止为成本而优化。
- For tasks above a configurable complexity threshold, the agent automatically requests a code review from another model.
- 两个模型就评审反复迭代,直到在修复方案上达成一致。
那么,为什么 harness 这么蠢? 🔗︎
好吧,回到标题中的问题,我没有一个令人满意的答案。
我最好的假设是,对编码代理的投资不足是委托-代理问题的一个例子。决定 AI 工具方向的人是 Anthropic、OpenAI 和 Google 等公司的高管。这些高管与每天使用编码代理的普通开发者脱节。这些高管中的许多人梦想着一个能够完全自动化取代人类开发者的未来。
AI 高管以及他们最大的客户和股东,关注的是对他们来说清晰可读的指标,比如炫酷的演示和基准分数。安全性和高效利用人类开发者时间与演示无关,而且我见过的基准几乎没有衡量代理本身的;它们只衡量底层模型。
我的假设并不令人满意,因为 AI 公司显然至少对编码代理有一点关心。我每个月都看到 Claude 和 Codex 添加了很多功能,尽管我想不起最近有哪一次它们改善了我的生活。
有没有更适合我的编码代理? 🔗︎
我只试过 Claude、Codex、OpenCode、Cline 和 Pi。我日常使用 OpenCode 和 Claude Code。如果你有编码代理推荐给我,请在下方评论。
AI 公司——如果你们想以 500 亿美元收购我的想象中的编码代理,请告诉我。我随时准备fork VS Code。
来源:Hacker News · mtlynch.io

