跳到主要内容

提示词没那么重要——Claude Code 删掉 80% 那天

阿舟
阿舟

· 阅读约 8 分钟

上周 dev.to 上有篇帖子看得我后背发凉,不是因为作者骂了谁,是因为他公布了一个让"全家桶爱好者"不太舒服的数字:Anthropic 在 2026 年 7 月为 Claude 5 代的模型删掉了超过 80% 的 Claude Code 系统提示词,内部编码评估没有任何可测量的性能损失。

不是小修小补,是删了百分之八十。我盯着"no measurable performance loss"这句话看了半天,脑子里冒出来的第一个念头是:那我过去三年小心翼翼研究 prompt、调系统提示词、跟别人争论"提示词工程是不是一门学科"的时间算什么。

写这篇之前我得先交代立场:我大概率会偏向 Pi 那边。不是因为它赢了多少,是因为它比 Claude Code 更像我理解的一个"工具"该有的样子。

先讲那个让人不舒服的数字背后的人。Pi 是 libGDX 的创建者 Mario Zechner 写的极简开源终端编码代理。极简到什么程度?全部工具只有 readwriteeditbash 四个,系统提示词就几百个 token。没有 MCP,没有权限系统,没有子代理,没有 Agent Teams。它在 GitHub 上有 85,000 颗星,OpenClaw 就是基于它做的。

Zechner 之前是 Claude Code 的重度用户——重度到什么程度?他写过 cchistory 这个工具专门用来追踪 Claude Code 系统提示词的变化,还干过给 Claude Code 二进制文件打补丁来加 Anthropic 没提供的功能这种硬核活。然后他走了,因为受够了 Claude Code 频繁变动。注意这个措辞:"frequent changes"。一个愿意逆向你二进制的人,不是懒,不是菜,他真的是被你改烦了。

这个心情我太懂了。我这些年最深的疲惫不是来自代码,是来自"昨天还能用的配置今天莫名失效""上个月刚学的技能这个月被弃用"。工具升级不该让我按时缴税。但 Claude Code 的升级节奏让这种感觉越来越频繁。于是 Zechner 的选择就很自然:自己写一个。

他写的这个东西,没有任何一个功能是"为多而多"的。没有权限系统,因为 Zechner 的观点是代理安全多半是"作秀"——真正可靠的隔离靠 Docker、微 VM、沙箱,不靠工具自己的权限弹窗。

这里我要停下来,因为我上面这句话里藏着一个我自己的判断:我不完全同意他。权限系统在某些场景下是真兜底——我上次那次数据库迁移大翻车里,Claude Code 的二次确认就救过我一次。但也正是那次事故之后我意识到:确认弹窗只能拦住"你明知道它危险"的操作,拦不住"你根本没意识到这里危险"的操作。真正的安全边界是:这个工具跑在一个我随时可以整个扔掉的环境里。从这个角度看,Zechner 的"作秀"论我理解了一半。

再看数据。作者用同一个模型 DeepSeek V4 Flash 跑了 30 个困难的代理工具使用任务。Pi 过了 20 个,每次成功成本 0.028 美元;Claude Code 过了 16 个,每次成功成本 0.195 美元。成本差接近 7 倍。Token 消耗上,Pi 每任务平均 558,885,Claude Code 741,659。

我第一反应是这该不会是拿 Pi 的优化配置去比 Claude Code 的默认配置吧?作者给了注意事项:Pi 以高推理模式而非最大模式运行,其中 24 次走的是官方 DeepSeek API 而不是 OpenRouter。好的,是有点不对称,但方向不会变——同一个模型,一个 700 行的全家桶配一个几百 token 的最小壳,后者更快、更便宜、通过率反而更高。 画外音:这个数据放出来,Anthropic 的市场部大概要连夜开电话会。

关于那 80% 的系统提示词,我有一套自己的解释,不一定对:Claude 5 代模型把那些话"内化"了。提示词是给模型请的语法家教,教到一定阶段,家教就可以走了。所以删掉提示词不影响能力,唯一的损失是它以后不会再把那些规则"说出来"。这解释听起来顺滑,但我有一个没想明白的部分——如果提示词真的只是语法补习班,那为什么 Claude Code 的其余机制(子代理、计划模式、事件钩子)没有被同步打薄?它们在架构上应该跟系统提示词是一体的。这个念头我不展开,先放这。

真正让我觉得 Pi 值得写一整篇的,不是它能跑通,而是它的扩展体系长在跟你同一个进程里。

Claude Code 的扩展基于外部配置:shell 钩子触发 14 种生命周期事件,外面再接 MCP 服务器、技能、插件。这套东西很成熟,但你应该能感觉到它的问题:一切扩展都是"在流程边上挂东西"——你只能在你被允许的那个点上做被允许的事。

Pi 的扩展是 TypeScript 模块,直接跑在代理循环的同一个进程里。能钩住 25 种事件类型,能力包括但不限于:阻止或重写工具调用、覆盖内置工具、注入上下文、替换压缩逻辑、绘制自定义 TUI 组件。

// Pi 扩展的示意——你在循环里,不是在外边
export const myExtension: Extension = {
  toolCall: (call) => {
    if (call.name === 'bash' && call.input.includes('rm -rf')) {
      return { stop: true, reason: '你想啥呢' }
    }
    return call
  },
}

一个是让你在店门口开个窗,一个是让你进后厨掌勺。你说哪个更好?真的不一定。前者稳定、安全,出问题有供应商兜着;后者自由,但你是第一责任人。这两个哲学的产品走的是完全相反的路。

这也解释了我为什么对 Anthropic 的 OAuth 禁令一直没法释怀。2026 年 1 月起 Anthropic 通过服务器端静默阻止第三方工具使用 Claude 订阅的令牌,2 月写进文档,4 月全面执行。Pi、OpenClaw、OpenCode、Cline 这些第三方工具全部不能用 Pro 或 Max 订阅了。DHH 原话:"非常敌视客户"。OpenAI Codex 团队公开唱反调鼓励第三方继续接。

拼在一起看,这个故事至少对我暴露了一个事实:Claude Code 让你住进它的房子,家具齐全、装修精美,但哪天它想换锁,它换。你可能觉得我用词太冲了,但请注意时间线——Zechner 离开的时候,Pi 还没有火,OAuth 禁令还没有执行,他走的时候应该不知道后来的事。他做了一样的选择:不要让别人的房子成为你的地基。

Pi 的会话模型也值得说一句。它是分支树,不是线性日志——每条消息带父 ID,你随时可以用 /tree 回退到任意早前对话点并开新分支,或者用 /fork 从任意历史消息派生新会话来彻底分家。这个东西在实践里有多好用?当你跟 agent 聊了五轮之后突然意识到方向错了,过去你只能"新开会话、重新描述,从头再来"。分支树意味着你只需要回到分歧点,从那里长出一个新方向。

社区里对这话的应和也很有意思。Armin Ronacher 说 Pi 是他"几乎只使用"的编码代理;Peter Steinberger 基于 Pi 构建了 OpenClaw;Theo 一句话:越简约越好。最真实的其实是 IndyDevDan 那句:"Claude Code 是入门包,Pi 是终局游戏"——但他自己约 80% 的工作仍然通过 Claude Code 完成。

这句话才是我今天想说的核心。你要学会的一个姿势是:用全家桶,但别把全家桶当水缸。 日常主力,我大概率还会继续用 Claude Code——它的 Agent Teams、计划模式、检查点、检查点回滚,这些功能确实好,而且好在一个生态里,省心。但涉及到跑本地模型、自定义工作流、把工具权完全交给自己掌控的场景,我会选 Pi。

这次对比跑完之后,我的看法倒没有翻台——该翻的是我过去对提示词工程这件事的执念。系统提示词不是"能力本身",它只是模型能力还没跟上的时候,你递过去的一张拐杖。等模型自己站起来了,你的 80% 拐杖就没用了。

所以 Anthropic 删完 80% 提示词没有性能损失,这不该让你恐慌,该让你松一口气——你依赖的东西比你以为的结实。

代价是我花了三年时间跟"这周期的实习生"斗智斗勇,才换来上面这一句。而 Zechner 花的时间更久,他不光悟了,还自己写了一个。这人值得我尊重。但不是每个人都需要写一个 Pi——你只需要记住那条判断:工具会变,配置会过期,提示词会删。唯一不会过期的,是你对"它到底怎么工作"的理解。

下个月如果 Claude Code 又把系统提示词膨胀回去了,我也不会惊讶。但下一次再删的时候,我应该不会再盯着数字后背发凉了。

阿舟
阿舟

写代码写到一半开始怀疑人生,靠 AI 工具续命,顺手把踩过的坑都记下来。

查看主页 →