原文链接:https://calv.info/coding-agent-metagame

2025 年 8 月 26 日

关于编程 agent 的争论从未停止。最佳的提问方式是什么?如何审查输出结果?这些结果是不是垃圾,agent 最终是否真的更浪费时间?

但我的工程师朋友们似乎都同意一件事:“如今的编程感觉有趣多了”。他们中的大多数人指向了同一个工具:Claude Code。

在 OpenAI 参与过 Codex 的工作后 ²,我想更深入地研究一下 Claude Code,以确切了解是什么让开发者对它如此兴奋。

起初,我对使用命令行工具来管理代码编辑持怀疑态度。我的整个编程生涯都是以 IDE 为中心的。但在使用了几周 Claude Code 后,很难不感受到那种乐趣。

关于 Claude Code 的构建方式,我可以讲出很多优点——但最被低估的一点是,你感觉可以无休止地根据自己的喜好对其进行改造

使用 Claude Code 感觉更像是在弹钢琴,而不是在 Jira 里拖动任务卡片。我隐约觉得,通过以不同的方式使用这个工具,我可能会成为一名大师。

这不仅仅是编写代码的游戏,更是一场我们所有人都在以各种奇特而美妙的方式参与的元游戏

复古游戏美学

第一次运行 claude 时,我很快就被两点所震撼:1) 对细节的关注,以及 2) 来自老式视频游戏的灵感。

这是我启动 Claude Code 时看到的第一个界面。

与一般的命令行工具不同,它居然有……UI 设计?

小巧的强调色让界面显得俏皮而有趣。三种不同深浅的文本颜色将你的视线引向特定区域(标题 > 输入框 > 更新日志)。动画文本的颜色会巧妙地变化。还有一些雅致的 Unicode 图标,隐约让人联想到 Anthropic 的 Logo。整体呈现出一种有趣的复古美学。并且,我一上来就收到了一个明确的操作指引:试试 “为 InboxList.tsx 写一个测试”

第一个屏幕还告诉我如何更好地使用这个工具。它给了我更新日志、一个提示和一个每日小技巧。展开快捷键菜单则向我展示了如何使用高级功能。

在做选择时,Claude Code 会给我一些选项,比如后续操作。

我可以像在角色扮演游戏(RPG)中一样选择选项 1、2 或 3。所有热键都如我所料地工作。

Claude Code 的特质也部分体现在它的“不是”什么上——它不是一个 IDE。

我这里拿 JetBrains 的一个旧版本说事,它可能是最糟糕的例子,但也象征着那种想把所有功能都堆砌到 IDE 里的欲望。

这很重要,主要有两个原因:

  1. 它感觉轻量级。我不需要去学习一个全新的编辑器,只是在终端里运行一个工具。
  2. 独特差异化。在 IDE 之外编写代码感觉像是一种奇怪的新范式——但编写 AI 生成的代码也是如此。命令行工具没有在 IDE 的规则下与之竞争,而是拥抱了一种不同的范式。

最终的产品让人感觉易于尝试,并且有足够的自由度去为未来进行优化——一个人类不再是代码编写者的未来。

Claude Code 可以将更多的屏幕空间用于子代理或钩子之类的东西,因为我并不期望用它来查看我的文件夹树或打开文件。

建立信任

在引导用户入门后,任何 agent 工具最大的障碍都是建立信任。用户需要回答这样的问题:“这个模型能一次性完成多复杂的任务?”以及“我该如何验证输出,而不需要检查每一行代码?”

那些 vibe-coding 的应用通常在建立信任方面遇到困难。一方面,用户可以通过点击应用来即时验证行为是否有效(这很棒!)。但另一方面,当事情真的出错时,其庞大的表面积使得检查问题所在变得更加困难。

当我们在 OpenAI 构建云版本的 Codex 时,我们不希望用户总是检查模型并试图“驾驭”它。

从正确性的角度来看,这通常是好的:模型在故障恢复方面出奇地熟练,给 agent 更长的“缰绳”去执行代码能显著提高性能。但这并不能让用户建立起模型确实在做正确事情的信心。

我们知道这里需要某种解决方案,所以我们向用户展示了模型在其自身环境中执行的终端命令。这感觉是一个不错的折衷方案,此外还让模型输出测试和代码规范检查步骤的结果。

唯一的问题是,终端命令远不如待办事项列表(TODO list)直观——完成的待办事项一目了然,但 sed 命令……就没那么清晰了。

我不确定利用待办事项列表工具是否真的能提高评测分数,或者这只是对用户的一种体贴。但它确实帮助了坐在键盘前的人理解正在发生什么。

还有一个上下文管理的问题。在 IDE 中,哪些文件和标签页被拉入上下文窗口并不那么清晰。创建一个新的聊天可能会抹去模型之前的思考,但它还会包含你正在查看的文件吗?

Claude Code 使这一点更容易理解:在终端会话中调用的所有内容都包含在上下文中。如果 Claude Code 正在压缩上下文窗口,它会告诉你。如果你想手动运行压缩,文档会解释如何操作

速度与动量

那种心流感很大程度上归功于 Claude Code 的速度。

从模型中采样感觉很快。当我检查命令行的网络流量时,我看到它会根据不同的用例在所有三个模型(Haiku, Sonnet, Opus)之间切换。

仔细观察界面,我还注意到许多不同的小提示,告诉我 Claude Code 正在做些什么

  • 动画图标和风趣的文字(沉思中 / 胡言乱语中 / 共生中);它们会随着工作的进展而变化,颜色也会有微妙的“脉动”效果。
  • 一个每秒都在增加的当前运行时计数器。
  • 一个与图标配对的 token 计数器,图标会在“上传”、“下载”和“工作中”之间切换。

所有这些加在一起,使得界面感觉响应迅速且充满活力。在使用时,我知道工作正在进行中。

我的一位 OpenAI 朋友曾说过:“当 <内部 agent> 没有在我的笔记本电脑上运行时,我会感到焦虑”。

在一个每周都有新的顶尖模型出现、风险投资家们为数百万个 GPU 提供资金的时代,不使用编程 agent 感觉是一种浪费。这就像把免费的智能丢在地上。

Claude Code 深刻地抓住了这种心态。它没有试图掩盖我正在使用的 token 数量,反而鼓励我最大化地使用它们。如果我购买了“Claude Max”套餐,我获得的 token 感觉上是无限的,即使每个 token 的成本最终可能很高。

制造机器的机器

这就引出了 Claude Code 最后一个神奇之处:通过刻意练习,我可以学会将生产力提高 10 倍。

使用 Claude Code 时,我实际上可以优化循环中的两个部分

  1. 核心 agent 循环:构建我正在开发的核心产品(添加新功能、修复 bug 等)。
  2. 产品开发基架:命令行工具用来运行核心 agent 循环的工具、环境、记忆和提示。

事实证明,优化产品开发基架几乎和实际构建产品一样有趣。

所有的编程 agent 都带有一点赌博的成分。当我提交一个提示时,我永远不知道它最终会走向何方。我可以不停地转动轮盘,看看结果如何。

但 Claude Code 有一个关键的区别。它不仅仅是让我改变提问模型的方式,还鼓励我改变产品开发基架本身

这意味着,每当 Claude Code 做出错误的行为时,我不会去责怪工具,而是会反问自己:“我本可以做些什么来改进?” 产品开发基架的改变能否给我带来更好的结果?

这个“元游戏”最终成为 Claude Code 的头号营销工具,因为这是每个人都会做的事情。无论你是编写嵌入式 Rust 框架还是 Typescript 前端,你都会去试验如何最好地利用 Claude Code 的所有功能。

因为用户可以“拥有”自己的产品开发基架,所以每个人都想炫耀自己的技巧和窍门。我的 Twitter 时间线上充满了 Claude Code 的自动化方案和最佳实践。

产品的形态也对此有所帮助;命令行工具天然具有可组合性。很容易开始想象各种可能性:“我能从一个 GitHub issue 启动任务吗?”,“我能把多个 agent 链接在一起吗?让它们串行调用命令行?”,“我能使用 git worktrees 并行运行多个会话吗?”³

最终的结果就像一个自动化游戏,但当我玩完游戏时,我已经为世界带来了一些有用的东西。

心流的感觉

一位朋友指出,让 Claude Code 有趣的并非传统意义上的“游戏化”。这里没有徽章、等级、连续打卡之类的东西。

相反,它是一种从学习如何用好这个工具中获得的心流状态掌控感

  • 入门门槛低——从运行一个命令并在输入框中输入提示开始。
  • 产品通过每日小技巧和建议逐步揭示 CLI 的新用法
  • 有一种动量感,伴随着对 agent 正在做什么的清晰、即时的反馈
  • 最重要的是,有通过使用更高级的功能和自动化来提升技能的机会。Claude Code 鼓励你不断磨练那个“产品开发基架循环”。

虽然编程是这类想法的完美培养皿,但同样的技术也可以应用于其他领域。归根结底,大多数知识工作仍然涉及批判性思维、资源分配和战略规划。也许企业软件应该更多地借鉴《我的世界》(Minecraft),而不是 1950 年代的会计软件。

如果编程有任何启示的话,那就是那些似乎正在胜出的工具,允许用户改造自己的工作流程为那种“心流感”进行优化

我最大的收获是,重要的不仅仅是评测分数——产品开发基架同样重要。

所有这些调整和定制真的让我们更有效率,还是仅仅是做起来很有趣?两者之间可能存在某个效率前沿。而我们需要可塑性强的工具来找到它。

延伸阅读:Ink & Switch《Malleable Systems》(可塑系统)

¹ 我在这篇文章中讨论 Claude Code,因为它开创了 agent 命令行工具的概念。在我(无可否认带有偏见)看来,我的前雇主 Codex CLI 团队正在做着出色的工作,并且也融入了许多同样的想法。他们已经发布了大量更新,所以如果你有一段时间没看了,不妨去看看(确保升级到最新版本!)。Gemini 在这方面也紧随其后,但我还没有机会进行那么多的测试。

² 是云版本,不是命令行版本。

³ 这实际上是我们对 Codex 下的“杀手级功能”赌注。它异步运行的事实意味着你可以并行启动任意数量的任务,无需 worktrees。假以时日,我认为这也将成为用户想要与模型互动的方式。但这确实需要用户方面进行一些“工具重塑”。