我的 Agent 工作流- pi 、大模型
现在的开发岗,不管是前端后端还是算法,大概率都不再亲自手写代码了,回想去年春天还是手工编码时代呢,现在已经彻底回不去了。现在的软件公司对于人效的要求又上了一个巨大的阶梯,因为有了 AI 的加持;所以,日常工作中【怎么做】已经不能算问题了,任何东西都能在 1 分钟内让 AI 给出参考答案;而【怎么通过 AI 做得又快又好】逐渐成了一个必需重视,且需要持续提升的能力了。其实背后还有一个更重要的【为什么做】能力,留到下次再写。
首先是工具层面,你用什么 coding agent 来编码,用什么模型,甚至于你给 agent 的 agents.md 是怎么写的,都会影响你实施构建的效率。试想,你用了一个非常臃肿而且容易崩溃的 coding agent ,即使配上 gpt 6 astra 你也是会磕磕绊绊,一个好的 harness 非常重要。再者,选什么模型也是需要权衡的,在我一年的 AI coding 实际经历中,最大的感触就是【不要迷恋某一个模型,以及他强大的能力】,这么说是不仅是因为“江山代有模型出,各领风骚一个月”,还有一层原因是顶尖闭源模型在国内的可获得性和稳定性都有大问题,目前阶段顶尖的开源模型就是一个很好的选择(确实是顶尖,能力上不输于那些闭源的)。还有就是当你一天大部分时间都在跟 AI 对话时,不可避免的会遇到上下文工程的问题,体现为:“好烦啊,每次都要先交代清楚,不然 AI 就会自己先探索半天”、“卧槽,这上下文满了会话报错了,还没法压缩啊,新开会话又得从头开始了”、“我上个月就改过类似的问题,当时是怎么做的来着?我找找会话”、“这思考时间也太久了吧,半天了还没做完”… 我先列举几个,实际工作中,会有大量的真实问题需要你解决。
从 24 年到现在,我经历过 Cline、 Windsurf、Cursor、Claude Code、Copilot、Codex CLI、deepseek-tui 、pi ,最终我留在了 pi ,它的优点很多,缺点也很容易克服所以我不在乎。Windsurf 和 Cursor 属于功能强大、体验完美、自带模型的“大别墅”,你只要买订阅就能用上世界顶级的 AI coding IDE ,在战斗力这块是可以拉满的,如果你是产品经理、UI 设计、公司老板等非开发岗,你要写软件,那么就用这两个就够了,真没啥缺点。Claude Code 代表一个品类的开端——coding agent CLI (编码代理终端应用程序),后面的Codex CLI、deepseek-tui 、pi 全是 CLI ,这类 agent 没有界面,只能在终端里面用命令行启动,渲染终端操作界面,也就是 TUI ,如果你是开发岗,那么建议你一定要折腾折腾 CLI 。
先说我为啥不选除了 pi 之外的那些 coding agent ,Windsurf 和 Cursor 这种重型 IDE 都是基于 Vscode 二开的,比较重,内存占用也高,而且里面能用的模型和额度官方给你限死了,很多优秀的开源模型发布之后,这里面总是要滞后个两三天到一周;一旦套餐用完之后,你就只能用它提供的 auto 模型——这葫芦里面卖的具体是什么模型我也不知道,所以我极其反感这种不透明的商业服务;闭源模型是从 open ai 、anthropic 官方接入的还是经过了内部中转的?开源模型的 context 有没有被阉割呢?开源模型是自己部署的还是 deepseek 、GLM、KIMI 官方接入的呢?如果是自部署那模型精度是 FP8 还是 FP4 呢?我的会话数据会不会被上传分析?套餐里面宣称的等值额度换算出来真有那么多吗?跟 coding plan 比性价比如何?还有,在国内【御三家】是禁止访问的,你得不厌其烦的搞定 VPN 代理,不然你就只能用里面提供的非管控模型了。Codex 现在已经出了桌面版了,专注于 agent 相关的各种任务,不要把他理解成只能写代码的软件,实际上他啥都能干。但是这类 agent 客户端的问题也是在于他跟模型服务厂商深度绑定了,codex 是 openai ,glm 有 zcode ,kimi 也有 kimi code ,他们自家的模型在自己的客户端里面用起来表现就非常惊人,但是换个其他的模型有可能就“怎么感觉变笨了呢,缓存命中率也不行了”,而且你用 codex 你就会依赖 codex 的交互逻辑和使用习惯,用 zcode、kimi code 都是,假如后面出了一个更强大的新 coding agent 桌面端软件,你可能又得换,操作习惯可能在短时间内好克服,但是你历史积累的几百个会话没法迁啊,所以,这就是跟厂商、平台绑定的弊端。那么,在我这里可选项就只剩下那些开源的 CLI 了,我用过一段时间的 deepseek-tui (他现在改名叫 codewhale 了),确实很不错的,可以说是一个非常好用的 CLI ,那个会话运行时的蓝色鲸鱼动画以及侧边栏的状态显示面板给人的体验真的非常舒服,直到后来 deepseek 官方发布了他们自己的 agent harness ——deepseek harness ,所以我判断 codewhale 这项目发展前景堪忧啊,他起家就是号称“为 deepseek 独家适配,量身定制,有更好的缓存命中率”,但是现在 DSH 也开始了高速迭代,而且他的软件工程哲学还有点不一样的东西,所以 codewhale 这个项目如果仅仅靠着作者自己用爱发电,肯定是不可持续的。
最后,就要说到 pi 了,我知道这个项目是在 openclaw 里面,三月份的时候大火,然后他的 package.json 里面就有 pi 这个依赖包,看别人的文章说,openclaw 没有选择自己造 agent ,而是直接使用了 pi agent ,当时 pi 这个项目还只有几百个 star (此时此刻,已经 106K 了),而且在 X 技术圈里面彻底火起来了,各种 pi agent 原理教程层出不穷,各种 pi 插件每天上新,这个时候我就知道我大概选对了。 为什么我选了 pi 呢? 因为他在软件工程上我非常欣赏,有着极清晰的包和模块划分——别看这句话简简单单,背后作者的功力可不简单。关于 pi 的实现原理、工程哲学、实现细节这次不讲,本篇主要介绍怎么用,怎么用的好。
pi 有着非常极简的实现,他不跟任何厂商任何模型绑定,这意味你在 pi 中接入任何模型使用都不存在针对哪一个模型的特殊优化,这本身就是一种透明和公平。pi 的作者对于 agent harness 的理解在业界也屈指可数,他有自己的博客,我经常读他的新文章,能学到很多东西。pi 最强大的就是插件系统,初次安装后只有一个极简的核,没有 mcp、没有 permission-system、没有 subagents、没有 theme 、没有 compact 套件,所有这些都得安装对应的插件。我自己经过长时间的使用,真正留下了的插件有下面这些:
- pi-hypa:上下文降噪 / Tool Output 压缩
- pi-notify:会话结束后弹出系统通知框
- rpiv-todo:列 todo list ,长任务有增强效果
- pi-browser-use:通过 CDP 操作 chrome 浏览器的
- pi-defender:权限控制,危险操作拦截
- pi-lens:静态的语法检查器,让 AI 堆屎山不要堆的那么离谱
- pi-mcp-adapter:挂 mcp 的
- pi-openai-service-tier:接了 codex 套餐的话,这个相当于 /fast
- pi-powerline:显示分析、上下文占用、目录、运行时长等状态信息的
- pi-subagents:子代理,复杂任务中用来拆分子任务并行的
- pi-web-access:在线查东西,看网页内容的
真正装上了就删不了的,必须得用的,就这三个:pi-powerline、pi-defender、pi-web-access。首先,用 agent 写代码,那不可避免的会操作本地文件,那就是增删改查了,如果开询问/审核模式,那啥也别想干了一整天都在那点允许,这毫无意义,所以你只能用 yolo 模式,也就是完全自主模式,AI 执行任何操作都不需要再请求确认了,所以我遇到过 AI 产生幻觉,以为自己在沙箱中调试,完了直接把我整个项目删除了,是那种渣都不剩的删除,连 .git 都删了,整个一天的工作量直接丢失,找都没地方找去,所以,pi-defender 这个插件必须得有,他可以拦截 rm 、git rm 等危险操作,其实临时文件、垃圾文件删不删的无所谓,关键是真正有用的东西不能让 AI 给删了,但是 AI 是不可信任的,他做出的任何决策都是基于概率计算,只要是概率那就不可能是 100% ,所以不管什么模型,他再牛逼,他也有出幻觉的时候,你不要去赌,赌输了就是你自己 100% 的损失,安全不是儿戏。其次,pi 不像那些功能齐全的客户端,他内置的工具就只有 read、write、edit 、bash这些最基本的操作,AI 本身的知识在他训练的时候就决定了,数据集截止日期是上个月,那这个月新出的信息他绝对不知道,所以就得联网在线查了, pi-web-access 就是干这个用的,现在还有人不用搜索,有人不上网吗?肯定没有吧。最后,pi-powerline 的作用我就不多说了,没有他你连在哪个项目目录都要自己查,哪个分支都不知道,属于基础中的基础。
pi 提供的 /resume、/clone、/fork、/name 这几个斜杠命令非常常用,pi 的 session 是树结构的,这意味着遇到一个问题突然有了新的想法,你可以随时创建分支会话,用完了之后还能回到主线,就是这么方便!resume 会加载出当前目录下所有的 session 列表,你选中一个就能立即载入,回到当时的工作状态;name 命令也非常有必要这个是我真实的感受,当会话一多,分支一复杂,你仅仅靠着那十几个字的摘要来分辨到底是哪个会话会很痛苦的,所以给会话命名是非常有必要的;clone 和 fork 命令都是用来创建分支的,clone 是从当前状态开始,创建一个一模一样的会话,而 fork 是某一条消息开始,创建新的会话,你可以自由选择。按两次 esc 就可以快速触发 tree 视图,不过我感觉这个没啥用。
pi 可以接入的模型有 local 、闭源、开源、自定义的,涵盖了 100% 的大模型,如果你用 ollama 跑了本地部署的模型,那你可以接;如果你买了 cahtgpt plus 你可以接;如果你有 GLM 、kimi 的 api key 那你也可以接,只需要 /login 就行了,非常简单。pi 中模型选择的功能做的非常好,我觉得这个交互就是认认真真用过,踩过坑,揣摩过用户心理、痛点、习惯之后才能设计出来的交互,首先每一个你接入的 provider 可能都有几十上百个 model-id ,你难道一个个上下切换去找吗?肯定不行的,所以 pi 提供了 /scoped-model 让你可以挑一部分常用的出来,然后你再 /model 去列出来刚才选中那几个常用的,切换过去就好,这还不算,pi 还设计了快捷键让你能够更方便的去切换模型,ctrl + P 是在你 scoped 模型列表中循环切换,shift + tab 是调整当前模型的 thinking level ,ctrl + L是列出 scoped 模型列表(等同 /model);对了你在找模型的时候还可以模糊搜索,直接搜模型的 provider 、model id 都是可以的。这就是全世界目前为止最好的模型切换的交互设计!然后,还有一些命令值得提一提,/compact 是用来压缩会话的,我的经验是达到 50% 的 context 占用时就立马压缩,这会明显的减少 thinking 时间,虽然弊端是之前所有的缓存都会失效,但也可以接受。 /new 是开新会话的,/reload 是重新加载配置的,但是我实际测试下来对模型配置好像无效,必须得 /quit 退出后重启;如果要使用某个 mcp 或者 skill ,那直接搜关键词就行了,pi 会模糊匹配,在这里一切都是命令,可以直接搜。
现在可以谈谈大模型了,这相当于发动机的汽油,是步枪的子弹,更是你保质保量完成工作任务最重要的因素,没有之一。之前有一段时间,我天天盯着大模型排行榜,看看哪个新发布的模型又引起了轩然大波和社区热烈的讨论,如果发现自己正在用的模型被哪个模型超过了,我会折腾一把立马换成更强的,但是现在,我早就不看了,开源阵营里面首选就是 GLM 的 coding plan ,这个用完了就换成 deepseek ,两家都始终用最新的模型的就好了,当下这个时间就是 glm 5.3 flash 、deepseek v4.1 flash 这两个,他们都是多模态,都有 1M 上下文,都有着不俗的智能,应付 90% 的日常开发任务绝对足够了——对,我就是这么说的。闭源模型,最好不要依赖——我没说不要用,是不要依赖,为啥呢?因为不透明,厂商可以随时调整模型的“智力”,他可以随时给你发重置卡,gpt 6 astra 和 claude fable 5.1 现在就是排行榜上的王者,绝对的领先,但是 astra 刚出来那一会让人惊艳的赞叹,直到后面算力不够了被怀疑降智的骂声,你就能知道厂商是多么的不靠谱,这两家的负面新闻,对用户的耍猴行为你去网上一搜一大把,没有一个是好东西,所以,在这里我的原则是全世界顶级的智能,我能用则用,不能用则不用,去用开源模型照样能把事办了。我是力挺开源大模型的,我希望会有更多的 deepseek 、glm 、kimi 站出来,最终干死 open ai 、anthropic、google 这三家垄断性的闭源厂商,但大概率,干死他们不太现实,但至少会时刻提醒着他们——不要飘了,开源力量时刻在后面追赶呢
不要去看模型排行榜里面各家大模型的评分分数,那个只有参考意义,他大概能说明不同厂商模型之间的能力是有高有低的,多个几分少个几分真的没有意义,你看哪家评测机构能拿出来 100% 的数据支撑说他们的分数就是最权威,不可能有的,每家的测试方法、测试集、验证方法、评分机制、透明度、召回率全是不一样的,就相当于复旦和清华的自招考试,内容和难度绝对是不一样的,不能说你在复旦考了 500 分就比清华的 460 要牛逼的多,反之亦然,更不能说比统招高考的 700 分更牛逼,这根本没法比较。所以,评测一个大模型到底好不好用,还是需要扎根于自己的日常工作和生活的。我最开始也是只用 gpt 最强的模型,然后任何会话都使用 xhigh 、max ,包括 ds 、kimi、glm 都是这样,这个带给我的感受就是——模型过度的思考,其实大部分情况下,模型在研究了代码和文档,拿到充分的上下文之后,就已经能推理出非常合理的方案了,完全没有必要让他过度思考,所以我现在默认的模型是 deepseek v4.1 flash high ,high 就够了,max 能带来的也就只有少数极端情况下的额外解决方案——虽然有价值,但并不是我们解决问题的关键因素。然后,模型的 TPS 也非常重要,一个 50 token/s 的 top1 模型跟一个 300 token/s top3 模型,最终效果上不会天差地别,但是效率差别会很明显,他消耗的是你的宝贵时间啊!我更倾向于让后者高速推理、高速探索、高速试错最终拿到正确结果,而不是等上半天等前者推理了 500 步然后得出一个理论上看起来没问题的正确方案,等到实际运行一出错又得陷入漫长的等待——这一点在 gpt 5.5 xhigh 上深有体会。最后,不要只盯着那些榜上的明星大模型,其实还有很多很多模型有自己擅长的一面,他们是大模型中的特种兵,比如 step-fun-3.7-flash 有着 480 tps 的高速以及多模态支持(做自动化测试简直无敌)、mecury-2 有着 1000 tps 的超高速推理(候选建议生成速度超快,就是一眨眼的功夫)、gemini 3.1 flash 有非常强的搜索能力(作为 google 的亲儿子),每一个领域都有最擅长解决领域问题的大模型,我们只需要放宽视野去发掘和使用他们解决真实问题就够了,全知全能的最强大模型是不存在的,如果有,那也是你我日常消费不起的。所以,我现在选择模型的策略就是:买一个非常便宜的 gpt /anthropic 的套餐,主要用他的 web 网页端,用来日常对话查资料生图,然后编码开发全部使用 glm、deepseek 、kimi 这些开源的大模型,给他们多充钱,支持他们发展!