Why Are Coding Agents So Dumb?

本文为原文前 6,000 字符的节选翻译,完整内容请查看原文。

Why Are Coding Agents So Dumb?

The first time I used a coding agent, I was mesmerized. Before the agent, I was copy/pasting between my IDE and an AI chat interface. It was amazing to see an agent edit files directly and fix its own errors in real time. After a few days, the honeymoon wore off as I encountered frequent bugs. The agent would stop responding entirely until I restarted it. Development workflows felt stiflingly primitive, and the agent would often declare tasks finished when work had barely begun.

我第一次使用编程智能体时,感到非常着迷。在那之前,我一直在 IDE 和 AI 聊天界面之间进行复制粘贴。看到智能体直接编辑文件并实时修复自己的错误,这种体验令人惊叹。然而几天后,随着频繁遇到 Bug,这段蜜月期便结束了。智能体经常会完全停止响应,直到我重启它。开发工作流感觉极其原始,而且智能体经常在工作刚开始时就宣布任务已完成。

This was in February 2025, so it was still early days for coding agents. I figured that in six months, agents would be as technically impressive as the underlying LLMs. Instead, coding agents just stayed bad. AI-assisted development has clearly advanced, but the models are doing the heavy lifting while the agents remain the bottleneck.

那是 2025 年 2 月,当时编程智能体还处于早期阶段。我原以为六个月后,智能体在技术上会和底层的 LLM 一样令人印象深刻。然而事实是,编程智能体依然很糟糕。AI 辅助开发显然已经进步了,但承担重任的是模型,而智能体却成了瓶颈。

The agent is not the model

In all the hype around AI, the terms tend to get distorted. People are beginning to overload and mix terms like “model” and “agent.” When I say “model,” I’m talking about large language models (LLMs) like GPT Astra, Claude Sonnet, and GLM-5.3. Models generate text and images, including pretty good software code. When I say “agent,” I mean the software that connects models to codebases and computer systems. These are tools like Anthropic’s Claude Code or OpenAI’s Codex. As a simple analogy, the model is the brain, and the agent is the body. The model produces a stream of text, and the agent acts as the glue that plugs the text into the right commands and files on the system.

智能体不是模型

在围绕 AI 的各种炒作中,术语往往会被扭曲。人们开始混淆并滥用“模型”和“智能体”这两个词。当我提到“模型”时,我指的是像 GPT Astra、Claude Sonnet 和 GLM-5.3 这样的大语言模型(LLM)。模型负责生成文本和图像,包括相当不错的软件代码。当我提到“智能体”时,我指的是将模型连接到代码库和计算机系统的软件。这些工具包括 Anthropic 的 Claude Code 或 OpenAI 的 Codex。打个简单的比方,模型是大脑,而智能体是身体。模型产生文本流,而智能体充当粘合剂,将这些文本转化为系统中的正确命令和文件。

Limitations of current coding agents

Agents can’t manage tasks. My biggest gripe with coding agents is how atrociously they manage tasks. For example, I have an open-source web app that generates shareable links for file uploads. I recently added support for protecting links with a passphrase. It was a relatively simple change, totalling about 1.5k lines of new code. OpenCode dutifully broke the feature into 10 subtasks, but then it just… did them all one by one: Why are you doing these embarrassingly parallel tasks one at a time? Umm… you’re a computer! You’re really good at multitasking. That’s why we keep giving you all those CPU cores. You can do multiple things in parallel and context switch millions of times faster than humans. Why are you doing these embarrassingly parallel tasks one at a time?

当前编程智能体的局限性

智能体无法管理任务。我对编程智能体最大的不满在于它们管理任务的方式极其糟糕。例如,我有一个用于生成文件上传共享链接的开源 Web 应用。最近我增加了通过密码保护链接的功能。这是一个相对简单的改动,总共约 1500 行新代码。OpenCode 尽职尽责地将该功能拆分为 10 个子任务,但随后它却……一个接一个地执行它们:你为什么要一个接一个地执行这些完全可以并行处理的任务?嗯……你是一台计算机!你非常擅长多任务处理。这就是为什么我们不断为你提供那么多 CPU 核心的原因。你可以并行执行多项任务,并且上下文切换的速度比人类快数百万倍。你为什么要一个接一个地执行这些完全可以并行处理的任务?

Claude Code multitasks, but only a little. It will spin up a subagent or two, but it still waits for all of them to finish before moving on. Multiple times per day, I’ll see Claude Code sit around for several minutes waiting for my end-to-end tests to finish, and then only after the tests pass does it say, “Hmm, now I should start drafting a commit message. Let me look at the git history to learn your commit message conventions.”

Claude Code 虽然能进行多任务处理,但程度有限。它会启动一两个子智能体,但仍然会等待所有子智能体完成后才继续下一步。每天我都会多次看到 Claude Code 闲置几分钟,等待我的端到端测试完成,只有在测试通过后,它才会说:“嗯,现在我应该开始起草提交信息了。让我看看 git 历史记录,学习一下你的提交信息规范。”

Agents can’t delegate

When I’m using a cutting-edge model, and it needs to check 50k lines of code for a particular pattern, the agent never stops and says, “Wait, this is something another model could do cheaper and faster.” It just plows on with the slow, expensive model. Conversely, the agent never says, “This model is too dumb for this task. Let me tag in a smarter one.” Of course, I can actively micromanage the task and keep switching the model and thinking level to match each subtask’s difficulty, but why is that my job? Do you also need me to manage your thread pool for you? Do you expect me free your unused RAM for you, too?

智能体无法委派任务

当我使用尖端模型,而它需要检查 5 万行代码以寻找特定模式时,智能体从不会停下来问:“等等,这是另一个模型可以更便宜、更快速完成的任务。”它只会继续使用那个缓慢且昂贵的模型。反之,智能体也从不会说:“这个模型对于这项任务来说太笨了,让我换一个更聪明的来。”当然,我可以主动微观管理任务,不断切换模型和思维深度以匹配每个子任务的难度,但为什么这是我的工作?你还需要我帮你管理线程池吗?你是不是还指望我帮你释放未使用的内存?

You know what technology would be good at assigning a difficulty level to a task and then matching those requirements to a model? An LLM! Just ask the LLM to pick the cheapest, fastest model for the task. Why do you need me to babysit you? I constantly run into tasks that are 95% gruntwork, but I still have to assign them to the smartest model because chopping up the task and delegating on the agent’s behalf would take up too much of my time. Thanks for telling me which is the default model, Claude.

你知道什么技术擅长为任务分配难度等级,然后将这些需求与模型匹配吗?是 LLM!直接让 LLM 为任务选择最便宜、最快的模型就行了。为什么需要我来照看你?我经常遇到 95% 都是苦力活的任务,但我仍然不得不把它们分配给最聪明的模型,因为替智能体拆分任务并进行委派会占用我太多时间。谢谢你告诉我哪个是默认模型,Claude。

Agents have never heard of agents

Agents don’t know anything about themselves. If I ask Claude how to use the features of Claude, it has to search online to figure out what this “Claude” thing is. Claude is more comfortable answering questions about C programming than talking about itself (in fairness, same with most human developers). Uh… you’re Claude Code! You don’t know any of your own freaking features? And you’re just Googling instructions regardless of whether they match your version number? You’ll casually download 13 GB of files for a feature the user has never used, but you can’t spare 50 KB of gzipped text in your install package to explain your own features to you?

智能体对自身一无所知

智能体对自己一无所知。如果我问 Claude 如何使用 Claude 的功能,它必须上网搜索才能弄清楚这个“Claude”是什么东西。Claude 在回答关于 C 语言编程的问题时比谈论它自己更自在(平心而论,大多数人类开发者也是如此)。呃……你是 Claude Code!你竟然不知道自己的任何功能?而且你只是在谷歌搜索说明,根本不管它们是否与你的版本号匹配?你可以随随便便下载 13 GB 的文件来支持一个用户从未用过的功能,却不能在安装包里腾出 50 KB 的压缩文本来向你自己解释你的功能吗?

Imagine if you asked your teammate for a code review, and they started furiously Googling to find out if code reviews are something developers do. And then when you asked them for another code review the next day, they had no memory of your previous conversation and ran back to Google and anxiously typed, “do software engineers do code reviews?”

想象一下,如果你请同事进行代码审查,而他们开始疯狂地谷歌搜索以查明“代码审查”是否是开发者会做的事情。然后当你第二天再次请他们进行代码审查时,他们对之前的对话毫无记忆,又跑回谷歌焦虑地输入:“软件工程师会做代码审查吗?”

Agents suck at communicating plans

I used to love the agent UX feature of separate “Plan” and “Execute” modes. For complicated tasks, I’d ask the agent to create a plan, then I’d review it, suggest changes, and delegate execution to a faster, cheaper agent. Over time, I felt an aversion to reading the plans. I’d often skip my review and just let the agent move straight to implementation. I thought coding agents had made me lazy, but I realized that agents just communicate their plans so poorly that they’re painful to read. Here’s an example of me asking Codex + GPT-6 Astra to add a feature to my media journalling web app: You can’t just list a bunch of disparate details and call it a plan, Codex. That’s not a plan! That’s just a hodgepodge of low-level design decisions. If I asked a competent developer to plan this feature, they’d either start with a high-level plan for UI changes and work their way down or describe changes to the data model and work their way up. If the developer started enumerating random facts about the feature, I’d…

智能体不善于沟通计划

我曾经很喜欢智能体将“计划”和“执行”模式分开的交互设计。对于复杂的任务,我会让智能体创建一个计划,然后我进行审查、提出修改建议,并将执行工作委派给一个更快、更便宜的智能体。随着时间的推移,我开始反感阅读这些计划。我经常跳过审查,直接让智能体进入实现阶段。我以为是编程智能体让我变懒了,但我意识到,其实是智能体沟通计划的方式太糟糕了,读起来非常痛苦。以下是我让 Codex + GPT-6 Astra 为我的媒体日志 Web 应用添加功能时的例子:Codex,你不能只列出一堆零散的细节就称之为计划。那不是计划!那只是一堆底层设计决策的大杂烩。如果我让一个称职的开发者来规划这个功能,他们要么会从 UI 变更的高层计划开始并向下细化,要么会描述数据模型的变更并向上构建。如果开发者开始列举关于该功能的随机事实,我会……