再见 Claude,你好 Pi
用了 Claude Code 一年多之后,Caleb 把开发环境换成了开源 harness Pi,也顺带列了一路积攒下来的那些小摩擦。
中文
复制

我用 Claude Code 已经很久了,从一年多以前它随 Claude Pro 订阅计划上线时就开始用。我还记得第一次用它的时候,随便提了一个周末小项目的需求,它就吐出一堆乱糟糟的 Python 代码,当时兴奋得不行。我确信,过几年回头看,它的发布会被视为推动当下这轮软件开发新时代的主要力量之一。
尽管如此,积攒了一堆小毛病之后,我最终还是决定不再把它当作主力编码工具,把开发环境迁移到 Pi。
Anthropic 那边肯定听到了风声……就在我做决定的一天后,他们宣布 Claude Code 终于开始支持 AGENTS.md 文件,想把我留下来。可惜对我来说太晚了,也太少了。
吐槽
既然没有正式的讣告,我就借这个机会说说 Claude Code 最让我不爽的几件事(也就是我希望用 Pi 能避开的东西)。
AGENTS.md 这件事基本浓缩了我决定弃用 Claude Code 的全部原因。别误会,在各种 GitHub 业余项目仓库里散落一堆 CLAUDE.md 文件是很好的游击营销。但用户得自己在两种格式之间复制或建软链接,这体验实在糟糕。
作为一个老古董,我提交代码前还是喜欢先审一遍它生成的大部分代码。我(以前)在 VSCode 里用 Claude Code,它可以把工具连接到 IDE。这挺好用的。你可以在文件里选中一段文本,提问或要求修改时,选中的内容会自动进入上下文。
问题是同一时间只能有一个会话“连接”到 IDE。如果你开第二个标签页去干别的任务,而第一个还在跑,那第二个会话根本收不到 IDE 的文本选中事件。这个问题至少从 2025 年 12 月 起就有人报告了……然后被当作一个完全无关 bug 的重复项关掉了。1

当然,你随时可以用官方的 Claude Code VSCode GUI 扩展,它确实支持同时打开多个标签页,并把选中的文本加载进每个标签页的上下文。但这个扩展本身毛病也不少。内置的斜杠命令有一半在 GUI 里根本用不了。它完全不支持自定义状态栏。子代理的输出消息只是按时间顺序堆进主对话线程里,同时跑多个子代理时读起来一团乱。我还能接着往下数。
尽管存在这些问题,Anthropic 似乎还是以近乎疯狂的速度往 Claude Code 里塞功能,不太在意质量和稳定性。Dynamic workflows、agent teams、ultrareviews 都是能让企业客户每天多烧掉一些 token 的好办法,但并不是我想要或需要的东西。
除了这些功能发布,他们还总是在一些地方动手脚,把我的个人配置搞乱。截至本文写作时,Claude Code 今年已经发布了 244 个版本;其中超过 3/4 改动了系统提示词或工具描述,这会显著改变 LLM 的表现(尤其是当这些新指令与用户提示词或仓库约定相冲突时)。
这些改动都是为了什么?尽管砍掉了 80% 的系统提示词,Claude Code 的开销仍然比 Pi 大得多,而且看不出有什么好处。默认 Bash 工具的描述将近 3,000 个 token,其中大部分是关于使用 git 和在 GitHub 上开 PR 的杂七杂八的内容。2 顺便说一句,模型本来就知道怎么做这些事,不需要详细说明。3
展望
这篇文章里我抱怨了很多。抱歉!这不是我一贯的风格,而且我确实认为 Anthropic 做出了一款很酷的软件。我也并不妄想,如果从一开始由我来负责 Claude Code,我能做得更好。LLM 编程 harness 是一个非常新的领域,在一个领域里率先创新是极其困难的事。像 Pi 这样的后来者有后见之明,能看清什么行得通、什么行不通,什么是核心功能、什么可以砍掉。
说到底,CC 给人的感觉就是一个缺乏清晰愿景和方向的产品。像一群兴奋的工程师和 PM 在飞快地往上堆各种顺手的特性……却不管这些改动会不会让其他用户更难用。似乎没有一个高层的人专门负责对这些请求说“不”,而在产品工程里这一点极其重要。所以,眼下我先走了。
我很期待更多地转向 Pi。头几天需要折腾一番,但之后就一路顺畅了。我喜欢它的稳定、极简的路子,以及极高的可定制性。我已经写了几个扩展来满足自己的使用场景,打算整理干净后尽快分享出来。如果你也有这些不满,我强烈建议试试开源 harness!