Pi Web 本地网页控制台

为 pi 编码代理提供本地浏览器界面,复用同一套配置与会话文件,随时浏览、续跑和分支对话。

源仓库
agegr/pi-web
Star 数
★ 8.1k
最近更新
2 天前
License
MIT
主语言
TypeScript

30 秒速览

运行形态
命令行工具网页应用
可在哪里用
兼容但需适配
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
Node.js 22.19.0 或更高版本pi 编码 agent 数据目录 ~/.pi/agentnpm/npxShell / 命令行网络访问本地文件系统
典型场景
已经用 pi 编码代理在本地积累了多个项目会话,希望用浏览器按项目浏览、续跑和整理这些历史记录。
不适合
  • 希望用浏览器管理整台机器文件的用户
  • 不愿自行配置 HTTPS 反向代理或 VPN 就暴露到公网的团队

这个 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。

  1. 已经用 pi 编码代理在本地积累了多个项目会话,希望用浏览器按项目浏览、续跑和整理这些历史记录。
  2. 需要在某条历史消息处分叉试验不同方案:用“New session”另存独立会话,或用“Edit from here”在当前会话内建分支对比结果。
  3. 想在不开编辑器的情况下查看某次代理改动的 Git diff,并直接预览改动涉及的源码、Markdown 或图片文件。
  4. 同一仓库维护多个 Git worktree,需要从侧边栏切换检出,同时保持同一仓库的会话仍分组在一起。
  5. 要在网页端完成模型 provider 登录、API key 填写、模型测试和插件/技能管理,而不是在命令行里逐项配置。
  6. 在可信局域网内远程使用:绑定 0.0.0.0 并设置长随机密码,或通过 HTTPS 反向代理/VPN 访问。

如何安装或部署这个 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 的本地模型、设置与凭据存储,网页端改动对两套界面同时生效,不需要迁移或同步账号。
  • 会话管理粒度细:按项目分组,支持恢复、重命名、导出、删除,并区分“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 与同类方案有什么区别?

文档明确提到上游的 pi coding agent(https://github.com/earendil-works/pi):Pi Web 本身不执行代理逻辑,而是作为它的本地浏览器前端,共用同一份配置与会话文件;README 未提及其他同类替代品。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Pi Web 本地网页控制台 当前 53 · 缺口较多 命令行工具免费 + 模型费 ★ 8.1k 2 天前 TypeScript —
zerostack 57 · 缺口较多 命令行工具免费 + 模型费 ★ 1.7k 2 天前 Rust OpenAI API · Claude API
Kooky 47 · 缺口较多 桌面应用免费 ★ 655 25 天前 Swift Codex · Claude Code
AgentDock 32 · 缺口较多 开发框架免费 + 模型费 ★ 1.8k 3 个月前 MDX OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
53/ 100 五分制 2.7 / 5
本评测基于 2026年9月18日 的源码;此后该项目发布了 12 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 14/29
可靠稳定 8/14
适用触发 10/18
规范维护 11/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全14 / 29 · 2.4/5

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。

可靠稳定8 / 14 · 2.9/5

README 与 package.json、CI 在 Node 版本、脚本、端口上互相一致,self_consistency 给 2;模型测试路由对超时、错误、缺失 API Key 返回结构化错误信息,failure_messages 给 2。依赖可用性依赖外部 @earendil-works 包与 beta 版 node-pty,未见锁定或镜像说明,dependency_availability 仅 1。

适用触发10 / 18 · 2.8/5

面向 pi 用户与本地开发者的场景描述清晰,能力边界(非通用文件浏览器、共享 pi 配置)有说明,environment_fit 覆盖 macOS/Linux/Windows 与代理设置,给 2;但触发条件(何时自动打开浏览器、worktree 切换条件)仅部分说明,trigger_precision 仅 1。

规范维护11 / 18 · 3.1/5

安装说明详尽(npx、全局安装、更新、卸载、选项表),license 完整为 MIT,均给 3;信息架构与仓库结构说明清楚给 2;命名稳定但版本仅 0.9.1 且无 CHANGELOG,versioning_changelog 仅 1;示例与 FAQ 较少,examples_and_faq 仅 1;已知限制有注意事项但未系统化,给 2;维护责任未明确(发布者未验证),maintenance_responsibility 仅 1。

有效结果7 / 13 · 2.7/5

输出可用性体现在会话浏览、导出、预览等具体功能,给 2;相对 pi CLI 的边际价值(浏览器 UI、多语言、worktree)明确,给 2;但成本收益缺少性能、资源占用或替代方案对比,cost_benefit 仅 1。

证据核验3 / 8 · 1.9/5

README 声明与代码/CI 部分可对应,但缺少测试结果、基准或第三方验证,claim_traceability 与 cross_source_corroboration 仅 1;事实与推断分离一般,fact_inference_separation 仅 1。

风险与缓解建议
  • 绑定 0.0.0.0 时仅靠可选明文密码,且不加密传输,暴露到网络会带来高风险,务必使用 HTTPS 反向代理或 VPN。
  • 依赖包含 node-pty beta 与较新 next,未见漏洞审计或锁定文件,升级前应自行核查。
  • 发布者身份未经验证,维护责任与更新路径不明确,长期维护存在不确定性。
  • 缺少 CHANGELOG 与系统化已知限制,版本演进与兼容性变化难以追踪。
证据充分度:低 评估于 2026年9月18日 审查版本 ffb2dafcb118 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v0.15.0
    发布说明摘录
    中文 基于 v0.14.2..v0.15.0 的提交整理。 ```bash npm install -g @agegr/pi-web@latest ``` 新增 - 运行中也能切换模型:聊天框的模型选择器在运行时不再禁用,与 pi 的 TUI 一样,切换从这次运行的下一个请求起生效,推理级别本来就是这样。(#1527) - 侧聊标签随主会话恢复:右侧面板里打开的侧聊标签按主会话保存在当前浏览器标签页中,回到该会话或刷新页面时恢复(已删除的侧聊不会恢复);同一项目内切换会话时保留子代理标签;未命名的侧聊在标签栏和 Agents 切换器里统一叫「Side chat 1」「Side chat 2」。(#1512,感谢 Tiger) - 拖动重排右侧面板标签:文件、终端和代理聊天标签可以拖到其他标签前后,顺序只在页面内保留。(#1511,感谢 Tiger) - 重排自定义提供商的模型:Settings › Models 里 models.json 提供商的模型行可以在桌面上拖动、用 Alt+↑/↓ 移动,或点「+ 模型」旁的 A–Z 按名称排序一次;保存后写回文件顺序,选择器和 pi 的 /model 跟着变。(6386fa4, #1479) …
    在 GitHub 查看 ↗
  2. v0.14.2
    发布说明摘录
    中文 基于 v0.14.1..v0.14.2 的提交整理。 ```bash npm install -g @agegr/pi-web@latest ``` 新增 - 模型选择器可切换「scoped | all」:设置了 enabledModels 时,聊天框的模型选择器顶部多出一行「scoped | all」,与 pi 的 /model 一样默认显示限定范围内的模型,点按或在筛选框里按 Tab 可切换到全部模型。选中范围外的模型会用于当前会话(新会话也可以从它开始),不会成为默认模型。(#1486, #1503,感谢 Salman Abdurrahman) - 在 Agents 列表里删除侧聊:侧聊行的标签切换按钮旁多了删除按钮,确认后只删除这个侧聊,主会话和其他侧聊保留;删除的正是主聊天里打开的侧聊时回到它的主会话。(#1507,感谢 谢凯文;48a158b) - 手机上的设置逐级全屏显示:手机上打开 Settings 先显示分区列表,再进入分区、再进入某一项的详情,每级全屏,标题栏有返回按钮和当前级别名称并居中显示;系统返回键返回上一级,切换时有滑动动画(开启减少动态效果时不动)。(9afc508, 1420b81) …
    在 GitHub 查看 ↗
  3. v0.14.1
    发布说明摘录
    中文 基于 v0.13.0..v0.14.1 的提交整理。v0.14.0 标签打出后发布被取消,没有发布到 npm,也没有 GitHub Release,所以本说明包含自 0.13.0 以来的全部改动。 ```bash npm install -g @agegr/pi-web@latest ``` 新增 - 侧聊(side chat):从当前会话分出一个侧聊,在右侧面板标签页里提问,带着主会话的全部上下文,主会话不受影响,运行中也能用。侧聊只保留主会话已有的只读和 shell 类工具(read、bash、grep、find、ls,Windows 上还有 powershell),不能编辑、写文件;只读的主会话分出的侧聊也没有 shell。入口有四个:/side 或 /side <问题>、选中文字后的「在侧聊询问」、运行中输入框旁的侧聊按钮、Agents 面板里的「新建侧聊」。侧聊不出现在侧栏里,在 Agents 列表中和子代理一起显示,第一条提问自动成为它的名字。(#1469,感谢 dingxiaobo;#1502) - 选中文字「引用」:选中回答里的文字后,原来的「在这里提问」改为「引用」,只插入 > 选中的文字,不再附带提问模板,提问、纠正、指示都可以接着写;多段引用各自成段。(#1502) …
    在 GitHub 查看 ↗

常见问题

Pi Web 自己是一个编码代理吗?
不是。它是 pi coding agent 的本地浏览器 UI,读取并展示 pi 的配置和会话文件,代理执行仍由 pi 完成。
需要额外付费或申请账号吗?
软件本身是 MIT 许可的开源项目,没有订阅说明;但模型调用仍需要你在 Models 面板登录对应 provider 或填写 API key,费用取决于所选 provider。
能否直接暴露到公网远程使用?
文档明确警告不要用明文 HTTP 暴露到公网。可信局域网可设置 PI_WEB_PASSWORD 并绑定 0.0.0.0,公网应通过 HTTPS 反向代理或受信任 VPN,并把外部主机名加入 PI_WEB_ALLOWED_HOSTS。
会话空闲会被关闭吗,怎样调整?
默认空闲 10 分钟(600000 毫秒)后关闭,可用 PI_WEB_IDLE_TIMEOUT_MS 修改,0 表示禁用空闲关闭;服务端扩展可通过 @agegr/pi-web/session-liveness/v1 注册存活租约阻止自动驱逐。
Pi Web 能访问整台机器的文件吗?
不能。文件浏览器只覆盖 Pi Web 中选择的工作目录和它已知的项目/会话根目录,属于受限访问;运行前需确保它能读取代理数据目录以及会话记录的工作目录。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents