从 Claude Code 切到 Pi 跑了一阵,聊聊真实体感

上周刷掘金,热榜第一挂了篇"为什么越来越多人用 Pi",1.3 万阅读。点进去看完,说实话有点被数字吓到:Pi 的 GitHub 仓库已经 94.8K Stars,今年涨了快 5 倍。 评论区清一色的"从 Claude Code 切过来,再也回不去了"。我当时的判断是:又一个工具被捧过头了。但仔细看了一圈 Pi 的架构和社区讨论,发现它确实和 Claude Code、Cursor 走了一条不同的路------不是功能堆叠,而是从"Agent 该怎么设计"这个底层问题出发做减法。 于是装了 Pi,跑了一些的日常开发任务。聊聊真实感受。

我之前用什么,为什么要换

Claude Code 的重度用户,从去年开始当主力。日常写代码、重构、调试、写测试,大部分场景没问题。 但痛点很明显:复杂任务响应慢。上下文一长------同时打开十几个文件、对话超过 30 轮------等待时间经常超过 30 秒。有几次我盯着转圈的终端怀疑人生。

更烦的是 Claude Code 的系统提示词太长(约 14000 tokens),有时候模型被自己的约束条件绕晕,给出一段看起来专业的代码,跑起来报错。你问它为什么,它说"抱歉我忽略了 XX 约束",重新生成一版,结果还是错的。 工具越复杂,模型越容易被自身的 harness 逻辑干扰------这个问题我在社区看到越来越多人吐槽。

Pi 的极简哲学:只有 4 个工具

掘金上那篇文章的核心观点我很认同:Pi 的设计哲学是"极简核心 + 用户可扩展"。

它只有 4 个核心工具:

  • read:读取文件
  • write:创建/覆盖文件
  • edit:精确的文本替换(类似 Claude Code 的 str_replace)
  • bash:执行 shell 命令

没有 plan mode,没有 sub-agent,没有内置的网页搜索,没有代码搜索工具(grep/find 什么的得靠 bash 自己调)。 我第一次打开 Pi 的时候确实愣了一下------这也太素了。Claude Code 进去之后有各种功能提示、内置工具列表、文档链接,Pi 就一个空白提示符等你输入。 但跑任务下来,我发现大部分任务确实只需要这 4 个工具。流程就是:读文件 → 改代码 → 跑测试 → 看结果。模型够聪明的话,工具数量不是瓶颈。 真正决定体验的是模型本身的推理能力,以及你给它多少有效上下文------不是塞 14000 tokens 的系统提示词让它记住 100 条规则,而是通过 AGENTS.md 精准描述当前项目的结构和约束。

实测对比:速度和 Token 消耗

我用的主力模型是 DeepSeek-V4-Flash。选它主要是便宜,而且 Pi 支持 15+ 模型提供商------Anthropic、OpenAI、Google、Mistral、本地 Ollama 等都能接。这一点是 Claude Code 完全做不到的。Claude Code 基本只能用 Anthropic 自家的模型,虽然最近支持了一些扩展,但灵活度差远了。

在 Pi 里,我可以简单任务用 GPT-4o-mini,复杂重构用 Claude Opus,敏感代码用本地 Qwen。用 /model 命令实时切换,不需要重启会话。 做一个速度对比。同样是把一个中型 React 项目里的 Class 组件重构成 Hooks + 自定义 Hook:

指标 Claude Code (Sonnet 4) Pi (DeepSeek-V4-Flash)
任务耗时 ~45 秒 ~9 秒
Token 消耗 ~8500 ~1500
输出质量 结构合理,但有 2 处 lint 警告 基本一致,lint 通过

速度差了 5 倍,Token 消耗差了 5 倍多。当然这个测试场景比较单一,不能作为全面评价,但差距是实打实能感受到的。 另外 Pi 有个我觉得很好但 Claude Code 没有的功能:树状会话历史。你可以在对话中分叉,创建分支,尝试不同方案后回退。这在处理"一个组件需要同时考虑性能优化和代码可读性"这种多分支任务时特别有用。

扩展系统:从"毛坯房"到"精装房"

如果说极简核心是 Pi 的骨架,那扩展系统才是它的灵魂。 Pi 的扩展用 TypeScript 编写,可以添加新工具、注册 Hook、自定义命令。我写了一个简单的扩展,功能是每次代码修改后自动跑 npx eslint --fix,省去了手动跑 lint 的步骤:

dart 复制代码
// extensions/auto-lint/index.ts
import { defineExtension } from '@earendil-works/pi-extension';

export default defineExtension({
  name: 'auto-lint',
  hooks: {
    afterWrite: async ({ filePath, bash }) => {
      if (filePath.endsWith('.ts') || filePath.endsWith('.tsx')) {
        await bash(`npx eslint --fix "${filePath}" 2>/dev/null`);
      }
    },
  },
});

配置文件里注册一下就行。整个扩展代码不到 15 行,但它帮我省掉了大量重复操作。 社区里有个叫 oh-my-pi 的 fork,加了 Hashline 编辑(彻底消灭行尾空格的噩梦)、LSP 驱动的智能重命名、lldb/dlv/debugpy 调试器集成,以及 40+ 模型提供商支持。很多人直接用 oh-my-pi 替代原版,说这是"Pi 该有的样子"。 还有个比喻我觉得很精准:Pi 是编程界的 Arch Linux------给你最基础的东西,其余的都靠你自己折腾。 但说实话,不是所有人都有耐心从零折腾。

踩坑实录:3 个真实痛点

用了一阵,碰到几个让我差点放弃的问题。

坑 1:没写 AGENTS.md,模型直接放飞自我

Pi 的上下文高度依赖 AGENTS.md 文件------定义项目结构、技术栈规范、编码约定。在 Claude Code 里习惯了开箱即用,刚切到 Pi 时真的不适应:没有 AGENTS.md,Pi 就是个失忆的天才,啥都懂但不知道你项目的规矩。 我第一次跑的时候偷懒没写,结果 Pi 给我生成的代码用了 Jest------项目里明明用的是 Vitest。跑测试全挂,满屏红色报错,我盯着终端愣了五秒才反应过来是怎么回事。 后来老老实实花了 40 分钟写了一份 AGENTS.md,定义了技术栈、目录结构、命名规范、测试框架、禁止事项。效果立竿见影。

分享一个我 AGENTS.md 的核心片段:

markdown 复制代码
## 技术栈
- React 19 + TypeScript 5.8
- 状态管理: Zustand(禁止用 Redux)
- 测试: Vitest + Testing Library(禁止用 Jest)
- 样式: TailwindCSS 4.x

## 目录约定
- 组件放 src/components/,每个组件一个文件夹
- 自定义 Hook 放 src/hooks/
- 工具函数放 src/utils/,必须有单元测试

## 禁止事项
- 不要引入新的 npm 依赖,除非明确讨论过
- 不要修改 src/api/ 下的接口定义
- 不要用 any 类型,至少用 unknown

写完这份之后,后续每次对话的质量都稳定了很多。前面花的时间确实值了。

坑 2:大规模重构时 Diff 看得想砸键盘

Pi 纯终端界面,文件 diff 用文本展示。几行修改还行,十几个文件的大规模重构时,在终端里上下滚动看 diff 简直折磨。 Cursor 有图形化 diff 视图,一眼看清改了哪行。Pi 这方面差了一个量级。社区有人说用 --diff-external 调外部 diff 工具,我折腾了半小时没配通,最后放弃了。 如果你习惯图形化工具,这可能是最大的劝退点。

坑 3:部分扩展维护不积极

Pi 本身更新很快(基本每周都有新版本),但社区扩展的质量参差不齐。我装了 3 个扩展,有 1 个在最新版 Pi 上跑不起来,报了一个关于 RPC 接口的兼容性错误。提了 Issue,作者三天没回复。 这在快速增长的开源项目里很常见:核心项目火热,但生态还没跟上。

我怎么看 Pi 的定位

我大概理解了 Pi 为什么能吸引这么多人。 它不是在做一个"更好的 Claude Code",而是在回答一个更底层的问题:当模型足够聪明的时候,Agent 框架还需要那么复杂吗? Pi 的答案是不需要。Claude Code 的系统提示词 14000 tokens,Pi 只要 200。这不只是省几个 token 的事------它意味着模型每轮对话的"噪音"更少,推理空间更大,行为更可预测。 但这套逻辑有个前提:你自己得有能力管好上下文。如果你不写 AGENTS.md,不装扩展,不花时间配置工作流,Pi 就是一个光秃秃的终端,什么都得从头来。 所以 Pi 适合什么人?

  • 追求控制权、讨厌黑盒的资深开发者
  • 经常需要在 SSH 远程/Docker 容器里干活的人
  • 想把 Agent 嵌入自己产品的团队(Pi 有 SDK 和 RPC 模式)
  • 想自由切换模型、不被厂商锁定的人

不适合什么人?

  • 纯新手,不想折腾配置的
  • 重度依赖图形化工具的
  • 想要"开箱即用、拎包入住"的

结论:Pi 已经成了我的默认工具

说结论。这一周用下来,Pi 已经替代 Claude Code 成了我打开终端后的第一选择。日常写代码、重构、调试、跑测试,Pi 是我的首选。 Claude Code 没有完全卸载------复杂的多文件规划任务,比如需要同时理解 5 个以上文件的关联关系、做跨模块重构的时候,我还会切回去,因为它的上下文连贯性确实更强。 但 80% 的日常开发场景,Pi 更快、更省、更可控。"极简 + 可控"这套逻辑,对我来说比"功能多 + 开箱即用"更有吸引力。 如果你正在纠结要不要切过去,我的建议很简单:装上 Pi,拿一个小项目跑两天。不用急着"迁移",好用就留,不好用就删,没什么成本。

最后分享一句 Pi 社区里我看到的话,用在这篇结尾刚好: 当你觉得一个 AI 编程工具越来越"重"的时候,问题可能不是它不够强,而是复杂度本身在拖你后腿。

相关推荐
潘高2 小时前
如何用AI做出高质量的PPT
ai编程
番茄不是西红柿kk2 小时前
deepseek-harness跨平台桌面端二开项目(附git仓库地址+安装包)
git·agent·codex·deepseek·deepseekharness
全栈弄潮儿3 小时前
先让 AI 出方案,再让它写代码:新手也能使用的设计习惯
aigc·openai·ai编程
long3163 小时前
封装(Encapsulation)
java·人工智能·ai·ai编程
张忠琳3 小时前
【deepseek-harness】DSH 文档合辑 · 篇一:核心架构与概览
ai·agent·deepseek·harness
海兰3 小时前
【插件】OpenClaw 上下文引擎指南
人工智能·agent·openclaw
云烟成雨TD4 小时前
LlamaIndex 系列【5】智能体开发:大语言模型接入与基础调用
ai·agent·rag·llamaindex
海兰4 小时前
【原理】OpenClaw Agent 运行时回顾一文清
人工智能·agent
zandy10114 小时前
AI编程工具技术测评2026:Kimi Code、Cursor等6款常见编程软件选型清单
ai编程