Pi Web 本地网页控制台
为 pi 编码代理提供本地浏览器界面,复用同一套配置与会话文件,随时浏览、续跑和分支对话。
按维度查看评分与理由
README 明确默认仅监听 127.0.0.1,文件浏览器限定于所选工作目录与已知项目根,模型测试路由也做了来源校验与 JSON Content-Type 校验,最小权限与数据流说明较清楚;但绑定 0.0.0.0 时仅靠可选 PI_WEB_PASSWORD 且明文 HTTP,缺少强制确认与加密,故 least_privilege 与 user_confirmation 未给满分。依赖多为固定版本但含 node-pty beta 与较新 next,未见审计或漏洞缓解说明,dependency_security 仅 1。外部副作用(模型调用、文件写入、git worktree)有描述但无回滚/撤销机制,rollback 仅 1。来源归属有 LICENSE 与仓库元数据,但发布者身份未验证,source_attribution 给 2。
README 与 package.json、CI 在 Node 版本、脚本、端口上互相一致,self_consistency 给 2;模型测试路由对超时、错误、缺失 API Key 返回结构化错误信息,failure_messages 给 2。依赖可用性依赖外部 @earendil-works 包与 beta 版 node-pty,未见锁定或镜像说明,dependency_availability 仅 1。
面向 pi 用户与本地开发者的场景描述清晰,能力边界(非通用文件浏览器、共享 pi 配置)有说明,environment_fit 覆盖 macOS/Linux/Windows 与代理设置,给 2;但触发条件(何时自动打开浏览器、worktree 切换条件)仅部分说明,trigger_precision 仅 1。
安装说明详尽(npx、全局安装、更新、卸载、选项表),license 完整为 MIT,均给 3;信息架构与仓库结构说明清楚给 2;命名稳定但版本仅 0.9.1 且无 CHANGELOG,versioning_changelog 仅 1;示例与 FAQ 较少,examples_and_faq 仅 1;已知限制有注意事项但未系统化,给 2;维护责任未明确(发布者未验证),maintenance_responsibility 仅 1。
输出可用性体现在会话浏览、导出、预览等具体功能,给 2;相对 pi CLI 的边际价值(浏览器 UI、多语言、worktree)明确,给 2;但成本收益缺少性能、资源占用或替代方案对比,cost_benefit 仅 1。
README 声明与代码/CI 部分可对应,但缺少测试结果、基准或第三方验证,claim_traceability 与 cross_source_corroboration 仅 1;事实与推断分离一般,fact_inference_separation 仅 1。
- 绑定 0.0.0.0 时仅靠可选明文密码,且不加密传输,暴露到网络会带来高风险,务必使用 HTTPS 反向代理或 VPN。
- 依赖包含 node-pty beta 与较新 next,未见漏洞审计或锁定文件,升级前应自行核查。
- 发布者身份未经验证,维护责任与更新路径不明确,长期维护存在不确定性。
- 缺少 CHANGELOG 与系统化已知限制,版本演进与兼容性变化难以追踪。
这个 Agent 能做什么,适合哪些场景?
Pi Web 是 pi coding agent 的本地浏览器 UI,直接读取 pi 的本地配置与会话文件,因此浏览器里看到的会话和历史与 pi 完全一致,可以继续已有的对话。它提供按项目分组的会话工作区,支持运行状态、上下文用量、成本和压缩信息的查看,并能在消息处开启新会话或就地编辑分支。除对话之外,它还内置项目文件工具与 Git 差异查看,可预览源码、Markdown、图片、音频、PDF 和 DOCX,并通过侧边栏切换 Git worktree。模型、凭据、插件包和技能都能在网页端配置,界面支持英文、简体中文和繁体中文。部署形态是一个只监听 127.0.0.1 的本地 Node 服务,默认端口 30141,通过 npx @agegr/pi-web@latest 启动。
Pi Web 启动一个 Next.js 服务(app/ 目录包含 UI 与 API 路由),读取 pi 代理目录(默认 ~/.pi/agent,可用 PI_CODING_AGENT_DIR 覆盖)中的 sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl 会话文件,并按项目分组渲染会话列表。用户可以恢复、重命名、导出和删除会话,查看运行状态、上下文用量、成本与压缩信息;通过“New session”从较早消息生成独立会话文件,或通过“Edit from here”在当前会话内创建分支。文件面板浏览并上传工作目录中的文件、查看 Git diff,并预览源码、Markdown、图片、音频、PDF、DOCX,且自动刷新;侧边栏可切换同一仓库的 Git worktree 检出。Models 面板复用 pi 的模型、设置和凭据存储,用于登录 provider、添加 API key、测试模型、管理插件包与技能。服务端模型与 API 请求遵循 HTTP_PROXY/HTTPS_PROXY/NO_PROXY;可选 PI_WEB_PASSWORD 开启浏览器登录,API 客户端可用用户名 pi 的 Basic Auth。
- 已经用 pi 编码代理在本地积累了多个项目会话,希望用浏览器按项目浏览、续跑和整理这些历史记录。
- 需要在某条历史消息处分叉试验不同方案:用“New session”另存独立会话,或用“Edit from here”在当前会话内建分支对比结果。
- 想在不开编辑器的情况下查看某次代理改动的 Git diff,并直接预览改动涉及的源码、Markdown 或图片文件。
- 同一仓库维护多个 Git worktree,需要从侧边栏切换检出,同时保持同一仓库的会话仍分组在一起。
- 要在网页端完成模型 provider 登录、API key 填写、模型测试和插件/技能管理,而不是在命令行里逐项配置。
- 在可信局域网内远程使用:绑定 0.0.0.0 并设置长随机密码,或通过 HTTPS 反向代理/VPN 访问。
这个 Agent 有哪些优点和局限?
- 直接复用 pi 的本地模型、设置与凭据存储,网页端改动对两套界面同时生效,不需要迁移或同步账号。
- 会话管理粒度细:按项目分组,支持恢复、重命名、导出、删除,并区分“New session”独立文件和“Edit from here”会话内分支两种分叉方式。
- 文件侧能力完整,能看 Git diff、切换 Git worktree,并预览源码、Markdown、图片、音频、PDF、DOCX,还带自动刷新。
- 默认只监听 127.0.0.1,并提供 PI_WEB_PASSWORD、PI_WEB_ALLOWED_HOSTS、PI_WEB_IDLE_TIMEOUT_MS 等明确的访问与超时控制项。
- 浏览器界面支持英文、简体中文和繁体中文,并可按浏览器语言自动选择,团队协作的门槛较低。
- 强依赖 pi 编码代理的目录结构(默认 ~/.pi/agent 下的 jsonl 会话文件),Pi Web 必须与 pi 处于同一文件系统环境才能共享已有会话。
- 需要 Node.js 22.19.0 及以上版本,且服务端模型与 API 请求依赖网络,离线场景不可用。
- 密码认证只做访问控制、不加密传输;对外开放必须自行提供 HTTPS 反向代理或 VPN,并正确配置 PI_WEB_ALLOWED_HOSTS。
- 文件浏览器并非通用文件系统浏览器,只限于 Pi Web 中选定的工作目录以及它已知的项目/会话根目录。
- 开发期间禁止运行 next build/npm run build,否则会写入 .next/ 干扰开发服务器,构建流程与常规 Next.js 项目不同。
如何安装或部署这个 Agent?
要求 Node.js 22.19.0 或更高版本,先用 node --version 确认。免安装运行:
npx @agegr/pi-web@latest全局安装命令行后可直接调用:
npm install -g @agegr/pi-web@latest
pi-web更新时先用 Ctrl+C 停止进程,再重新执行安装命令;卸载执行 npm uninstall -g @agegr/pi-web。CLI 在服务就绪后会自动打开浏览器,若未打开可手动访问 http://127.0.0.1:30141。若尚未配置模型 provider,先在 Models 面板登录或填入 API key。
如何使用这个 Agent?
默认启动:npx @agegr/pi-web@latest,服务只监听 127.0.0.1:30141。常用参数:pi-web --help 打印启动选项;--port/-p 或 PORT 改端口;--hostname/-H 或 PI_WEB_HOSTNAME 改绑定地址;--no-open 或 PI_WEB_NO_OPEN=1 禁止自动打开浏览器。远程访问示例:
PI_WEB_PASSWORD='a-long-random-password' pi-web --hostname 0.0.0.0密码认证不加密连接,不要通过明文 HTTP 暴露到公网;反向代理转发外部主机名时需把该名称加入 PI_WEB_ALLOWED_HOSTS。其他环境变量:PI_WEB_SKIP_VERSION_CHECK=1 关闭更新检查,PI_WEB_IDLE_TIMEOUT_MS 设置空闲超时(默认 600000 毫秒,0 表示禁用)。代理配置示例:
HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 NO_PROXY=localhost,127.0.0.1 npx @agegr/pi-web@latest源码开发:npm install 后 npm run dev,检查用 npm test、node_modules/.bin/tsc --noEmit、npm run lint;开发期间不要运行 next build 或 npm run build。
这个 Agent 与同类方案有什么区别?
文档明确提到上游的 pi coding agent(https://github.com/earendil-works/pi):Pi Web 本身不执行代理逻辑,而是作为它的本地浏览器前端,共用同一份配置与会话文件;README 未提及其他同类替代品。