这个 Hugging Face Space 把 Pi 的真实 Agent 内核、just-bash 和 MiniCPM5-2B 一起搬进了浏览器。你可以和 Pi 对话、查看和编辑文件、在持久化的虚拟工作区里执行 shell 命令。Agent 循环、本地 WebGPU 推理和全部工具都跑在一个浏览器 Worker 里,不碰推理 API、API Key,也不需要 shell 服务器。
可以这样试:What's our total sales revenue?
核心特性
- 全本地运行:模型用 WebGPU 推理,工具在浏览器 Worker 里执行。对话和虚拟文件存在本站点的 IndexedDB 中,文件只在你自己的设备上(需要保留的内容请自行导出)。
- 一次下载,反复使用:首次约 1.84 GB,所有文件经 SHA-256 校验后缓存到 OPFS,刷新页面直接复用。加载器支持分段字节范围下载、重试、取消,下载、GPU 初始化、预热分成独立阶段。
- Agent 工具:Pi 有
bash、read、write、edit四个工具。just-bash 支持 shell 脚本、管道、重定向,以及awk、jq、sed、grep等文本命令;Node.js、Python、npm、原生二进制、SQLite 和网络命令用不了。 - 真实的 Pi 终端界面:左栏用 xterm.js,搭配 Pi 原生的终端渲染器、编辑器和消息组件(复用 Pi 的 TUI,但不含完整的 Node CLI 及其扩展)。Shell 支持实时 Bash 语法高亮、多行命令、会话历史和彩色的错误/退出状态。
- 实时状态:顶栏显示模型和加载状态,用实时 token 速度曲线区分 WebGPU(推理)和 JavaScript(工具执行)。
运行要求与限制:浏览器 Worker 需要支持带 FP16(shader-f16)的 WebGPU、OPFS,以及足够的存储和设备内存。提示词加输出共 8,192 token 预算,每次模型调用最多生成 2,048 token,每个请求最多 12 轮。提供桌面和窄屏布局,但还没在真实的 Android/iOS 设备上测过。如果浏览器在 Hugging Face 内嵌页面里屏蔽了存储,可以点应用内的 Open workspace in a new tab,或直接打开应用。
模型转换
内置的 q4f16 模型直接由 OpenBMB 官方 MiniCPM5-2B BF16 检查点转换而来,不是社区转换的权重:
- 源 revision:
abe115e887989b14f05e64a3b260648329324c3f,转换前校验过官方权重的 SHA-256。 - ONNX Runtime GenAI 0.15.2;对称 int4,block size 32;FP16 激活与 KV cache。
- 融合 QKV、GQA、RoPE 和归一化算子。
- 输出投影之前只取最后位置的 logits。
- 把 510 MiB 的 embedding 无损拆成四个 127.5 MiB 张量。
- 七个外部数据分片;修掉了工具历史序列化和 Jinja 兼容性问题。
权重托管在配套的模型仓库 Mike0021/MiniCPM5-2B-ONNX。应用锁定 revision 04a6c49fcba3a65a0351c92644c3a7e9d4343059,manifest 里列出了各文件大小和 SHA-256。这个 Space 只做了独立的转换和量化,没有重新训练权重。
验证
用 6 个提示词(含 prefill 和缓存解码)一共得到 41 个预测位置。这些检查针对转换正确性,不是广泛的质量评测。
| 对比 | Top-1 token 一致 | 平均 KL 散度 |
|---|---|---|
| FP16 ONNX vs FP16 PyTorch | 41/41 | 0.00000815 |
| Int4 ONNX vs 官方 BF16 PyTorch | 36/41 | 0.125916 |
| 打包后的 int4 vs 原始 int4 导出 | 41/41,所有 logits 逐位一致 | 0 |
| 浏览器 WebGPU vs 原生打包 ONNX | 41/41 | 0.002517 |
在 AMD Radeon 8060S 上的本地 Chromium 测试覆盖了流式输出、停止、思考模式、XML 工具调用生成,以及一个 3,888 提示词 token 的检索用例。把 GPU 限制为 128 MiB storage binding 和 256 MiB buffer 时,推理同样通过(但这模拟不了手机的内存压力和发热)。预热后解码速度中位数约 35–42 token/s;在 1,890 个提示词 token 下,首 token 延迟比同权重的对照版本(全位置 logits、未拆分 embedding)改善约 9.5%。
浏览器 Agent 验证
生产构建在断网状态下跑通了 5 个真实模型的 Agent 工作流:读取一个没见过的随机文件值、计算 CSV 营收并写报告、创建并执行 shell 脚本、编辑这个脚本、从文件缺失错误里恢复,全程零网络请求。从公开 Space 地址运行同样通过全部 5 个工作流,刷新后零权重下载。在 Hugging Face 内嵌页面里,从缓存加载 MiniCPM 用了 3.644 秒,并通过 Pi 的工具生成、校验了一份 $144 的销售报告。xterm.js 终端还过了全部 12 项交互检查(键盘编辑、搜索、历史、Unicode/大段粘贴、shell 执行、390px 布局等)。
局限
- 4-bit 量化有可测量的质量损失:多轮审计里,这个导出版本复现了无效的 HTML/CDN 编辑,以及冗长、没有结论的推理,而原始 BF16 模型能完成参考工作流。
- 基座模型本身也会出错:一道中文算术题,官方 BF16 模型和转换版本都答错了。
- 集成测试不能证明它作为编程 Agent 的普遍可靠性;作者也不声称 4-bit 模型与 BF16 等效,或者说多轮推理已经充分优化。
- 当前 Agent 用 2B 模型支持的思考模式,采样是真实的 nucleus 采样(temperature 1、top-p 0.95、不用 top-k/min-p、repetition penalty 1)。完成的思考内容单独存进历史,并在界面里折叠。
运行时
Pi Agent / Pi AI 0.85.1、just-bash 3.4.2、Transformers.js 4.2.0、ONNX Runtime Web 1.26.0-dev.20260416-b7804b056c。致谢:基座模型来自 OpenBMB(Apache-2.0);Agent 来自 Pi / earendil-works;Shell 来自 just-bash / Vercel;推理基于 Hugging Face Transformers.js 和 Microsoft ONNX Runtime。
链接
- Hugging Face Space:victor/MiniCPM5-2B-WebGPU-Pi
- 直接打开应用:townbox-minicpm5-2b-webgpu-pi.static.hf.space
- ONNX 权重:Mike0021/MiniCPM5-2B-ONNX
