Axi's Blog
Pi Agent 小记

前言#

在此之前,笔者主要使用 Codex 作为主要的编程工具,一方面确实因为 Claude Code 封号现象过于频繁。另一方面,也确实因为 Codex 已经足够支撑我目前的绝大多数开发需求,即在一个非常成熟的代码框架之内进行部分修改,包括对于模型的结构进行轻微的修改,支持新的测评,添加或调整数据比例,以及追踪目前的训练和测试进度。

Codex 本身是一个非常完善的框架,这一点是毫无疑问的,事实上,开箱即用就可以满足我绝大多数的需求。但是一方面,我确实也想自己折腾一些跟 Agent 部署相关的事情;另一方面,我也看了一些视频,感觉目前比较流行的 Pi Agent 是一个非常不错的 agentic coding 框架,并且可以更加清晰地管理各种拓展以及 skill。相较于 Codex,甚至我认为在 Codex 中,基本上使用原始的默认组件已经是最佳选择,而加入任何新东西,可能会破坏这个本来就已经稍微比较重的环境。

PI agent 本身的设计哲学是从极简的设计理论出发。其默认Agent只包括4个基本的可调用功能,也就是读写文件以及编辑文件和执行命令行工具。当然,事实上,从某种程度上,任何一个 Agent 甚至只需要单独的“执行命令行工具”这一个指令,就可以完成世界上全部的事情。毕竟这个指令可以使得 Agent 自己编写各种工具,同时实现写入或者查看的效果。如果使用者想要拓展更加丰富的功能,可以前往其拓展中寻找对应的功能包进行安装。本身通过 npm 进行管理,也是非常方便的。

另一方面,比较有趣的一点在于,相较于一段时间以前的各种 code 框架,目前的 Agent 实际上更加支持直接通过模型会员订阅的默认方式来登录,并且使用之前的 coding plan 额度,也算是某一种使用体验的优化吧。

本身我的环境使用的是 WSL2,并且用 Codex 作为实际的 Coding Plan 的提供方。

安装#

本身根据官方的文档,可以进行 Pi Agent 本体的安装,即:

npm install -g --ignore-scripts @earendil-works/pi-coding-agent
bash

然后可以安装以下的插件:

pi install npm:pi-web-access
pi install npm:@tintinweb/pi-subagents
pi install npm:@narumitw/pi-goal
pi install npm:pi-lens
pi install npm:@narumitw/pi-btw
pi install npm:@narumitw/pi-usage
pi install npm:pi-mcp-adapter
pi install npm:@narumitw/pi-chrome-devtools
pi install npm:pi-process-monitor
bash

每一个拓展的效果如下表格所示:

拓展效果
pi-web-access提供 Web Search、网页内容抓取以及视频理解等能力,使得 Agent 可以在需要的时候直接查文档,而不是完全依赖上下文中的已有信息。
@tintinweb/pi-subagents提供类似 Claude Code 的 Subagents 以及 Workflow 编排能力,可以把搜索、审查、验证等任务交给独立的 Agent 完成。
@narumitw/pi-goal提供 /goal,使得 Pi 可以围绕一个更长期的目标持续推进,并且在完成、阻塞或者等待外部输入时显式停止。
pi-lens提供 LSP 诊断、符号搜索、结构化搜索、模块分析等代码理解能力,某种程度上补足了默认 Pi 过于极简的工具集。
@narumitw/pi-btw提供 /btw,可以在不污染主对话的情况下询问一些临时问题,适合查一个边缘概念或者确认某个想法。
@narumitw/pi-usage提供 /usage/fast,用于查看当前 Provider 的额度使用情况,并且在支持的 Codex 模型中切换 Fast Mode。
pi-mcp-adapter提供 MCP 接入能力,并且通过按需发现与调用工具的方式避免一开始就把大量 MCP tool schema 塞进上下文。
@narumitw/pi-chrome-devtools通过 Chrome DevTools Protocol 连接 Chromium / Chrome,使得 Pi 可以列出页面、导航、执行 JS 以及截图。
pi-process-monitor提供类似 Claude Code Monitor 的后台观察能力,可以让 Agent 挂起一个 shell、log tail、SSH 或 HTTP probe,在匹配到特定内容、失败或退出时再唤醒当前 session。

配置 Chromium#

在这其中,一个比较有趣的插件算是 npm:@narumitw/pi-chrome-devtools,因为本身这个插件可以给予一个 Agent 直接操控浏览器的能力,包括其中的js evaluate,可以执行很多的指令,从而在浏览器级别实现一种 computer use 的效果。虽然事实上笔者也没有很大的使用浏览器进行操作的需求,但是这相较于之前来说,姑且算是一个新奇的体验。

那么自然首先需要安装 Chromium:

sudo apt update
sudo apt install -y chromium-browser
bash

同时可以通过如下命令手动启动一个暴露 DevTools 端口的 Chromium:

chromium-browser \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.cache/pi-chromium-profile" \
  --no-first-run \
  --no-default-browser-check
bash

这里的 9222 本身并没有什么特殊的玄学意义,只是 Chrome DevTools 生态中比较常见的端口;在我的 ~/.pi/agent/pi-chrome-devtools.json 中,对应的 endpoint 也是 http://127.0.0.1:9222。假如修改端口,需要同步修改 Pi 的配置。

不过默认的WSL环境事实上是一个极简的环境,其中只包括了英文字体,因此需要再次安装中文字体才可以使 Chromium 渲染出汉字。

sudo apt update
sudo apt install -y fonts-noto-cjk fonts-noto-color-emoji
fc-cache -f -v
bash

之后让 Agent 进行正常操作即可,可以发现,Agent 已经可以打开 Chrome 并且进行操作,比如在你可以看到的浏览器里面进行搜索,或者点击一些交互的内容。

结语#

本身 Agent 使用的开源社区力量还是十分强大的。而且由于它非常火热,因此也有很多开发者愿意开发一些有需求的拓展,来获得大量的 star,因此,在任何一个开源 coding agent 的框架之中,往往可以看到一种社区中集百家之长为一体的现象,我们可以使用 Codex 的 Goal 以及 Claude Code 的 dynamic workflow,并且在其中同时加入一些只属于自己项目的拓展。例如,我事实上在本博客的项目下创建了一个项目级别的拓展,可以通过我设置的 GitHub、Vercel 以及 Cloudflare 的访问 key 来查看目前博客的部署进度。而配合 pi-process-monitor 这类工具之后,Agent 也不必反复在对话中轮询某个长任务,而是可以等待某个 shell 输出或者外部状态满足条件之后再继续行动。

因为 PI Agent极其简洁的本身框架,以及默认极少的提示词,使得其成为了一个从零开始搭建自己的 coding agent 的很好的 starting point。

Pi Agent 小记
https://axi404.top/blog/pi-agent
Author阿汐
Published atAugust 30, 2026
Comment seems to stuck. Try to refresh?✨