- CDP 会话池:chrome-devtools 的浏览器连接跨工具调用保持打开。浏览器可以保留用户配置,会话结束后继续运行,下次登录状态还在。
- 稳定的元素引用:DOM 快照给每个元素分配固定 ref,模型按 ref 点击和填写,发出真实的鼠标和键盘事件。
- 按需加载工具:在支持的模型上,工具通过
chrome_devtools_load按需加载,不预先写进提示词。 - 复用已有凭据的搜索:websearch 走 OpenAI Codex 的搜索接口,使用 Pi 已持有的
openai-codex凭据。它不读~/.codex/auth.json,不爬搜索结果页,也不启动嵌套代理。 - B站视频总结:bvsum 下载 B站视频的音频,取官方字幕或用本地 Whisper 转录,必要时用
web_search补充。总结不套固定模板,形式由视频内容决定。 - 单仓库多扩展:用 npm workspaces 管理,解决了 Pi 安装 git 包时只在根目录执行
npm install的问题,见下方“注意事项”。
chrome-devtools:所有工具以 chrome_devtools_ 开头。
list_pages select_page navigate evaluate screenshot snapshot click
fill press wait_for console network emulate cdp_send
console 和 network 保留滚动日志;emulate 模拟设备;cdp_send 直接发送原始协议命令,覆盖封装之外的情况。另有两个 WebMCP 工具,需要在设置里开启。
websearch:一个工具 web_search,支持 search、open、click 和 find 四种命令。
bvsum(技能):/skill:bvsum <B站链接或BV号>,或直接让 Pi 总结一个 B站链接。依赖 Python 3、ffmpeg,以及 uvx(mlx-whisper)或 whisper-cli。音频和字稿放在 /tmp/bvsum/<BV号>/,重启后清空。
pi install git:github.com/Mist-wu/pi-extensions只想装其中一个扩展时,在 settings.json 里用对象形式,按目录匹配:
{
"packages": [
{ "source": "git:github.com/Mist-wu/pi-extensions", "extensions": ["chrome-devtools/**"] }
]
}pi-extensions/
├── package.json # npm workspaces、pi.extensions 入口列表和 pi.skills 目录
├── chrome-devtools/
├── websearch/
└── skills/
└── bvsum/
目录是平铺的,因为 Pi 只往下找一层扩展目录:chrome-devtools/ 能找到,packages/chrome-devtools/ 找不到。
npm install
npm run checkcheck 会在每个 workspace 里执行构建、lint、类型检查和测试。chrome-devtools 还有驱动真实 Chrome 的端到端测试:
cd chrome-devtools && npm run smoke:e2e新增扩展前需要知道两点。
Important
workspaces 不能去掉,这里的包也不发布到 npm。 Pi 安装 git 包时只在仓库根目录执行 npm install,不进子目录。没有 workspaces,子包的依赖就不会安装,扩展启动时加载失败。
Note
入口文件在根 package.json 的 pi.extensions 里显式列出。 自动发现也能找到它们,但会把根目录下任何 .ts 或 .js 文件都当成扩展,比如根目录的 vitest.config.ts 会被当成插件加载。显式列出就跳过了自动发现。
Warning
在这个仓库里开发,不要改 ~/.pi/agent/git/… 下的副本。那份副本归 Pi 管理,每次更新都会执行 git clean -fdx。
MIT。chrome-devtools/ 另附上游的署名,见其 LICENSE。