Bento 是开源自托管 PPT 替代品,整个应用程序+文档+编辑器藏在一个 560KB 的 HTML 文件里。AI 友好(纯 JSON 文档模型),E2EE 实时协作(盲中继),本地优先(File System Access API),2.7k Stars 已登顶 Show HN。
🎤 引言
你有没有想过:你做的 PPT,10 年后还能打开吗?
Microsoft PowerPoint、Google Slides、Keynote……这些软件格式每几年升级一次,旧文件可能在未来的某天无法打开。或者某天公司倒闭、服务器关停、云存储服务关闭,你精心排版的演示文稿就再也打不开了。
更现实的问题:你做的 PPT 现在就被「锁定」在了某家公司的云上。想迁移?想批量改格式?想用 AI 工具帮你改两页?想跟同事协作时不被服务器抽成?
bento(日文「便当」)就是为这些问题而生:整个应用 + 文档 + 编辑器,藏在一个 560KB 的 HTML 文件里。把这份文件发给谁,谁就能用浏览器打开、编辑、协作、保存——不需要账号、不需要云、不需要任何安装。
2026 年 7 月 22 日发版 v1.0.7,GitHub 2.7k Stars,700 次 commit,166 Forks,曾登顶 Show HN(约 1k points)。
⭐ 核心功能
📦 单文件即应用
这是 Bento 最反直觉的设计:
一份 .bento.html 文件 ≈ 完整版 PowerPoint + 编辑器 + 协作服务器它包含:
- 完整前端渲染引擎(基于 Reveal.js)
- 自家动画引擎(morph 过渡)
- 自家图表引擎(bar/line/pie/scatter)
- 内置演讲者视图
- 完整的撤销/重做
- 字体(Fraunces / Instrument Sans,OFL 开源)
- 你的文档数据
压缩后只有 560KB。打开就是完整应用,关闭就保存整个文档到自身。
🤖 AI 原生设计
文档以纯 JSON block 形式存储在 HTML 文件顶部。任何 AI 都能直接读取和修改:
<script id="bento-doc" type="application/json">
{
"title": "我的演示",
"slides": [
{ "id": "s1", "elements": [...] },
{ "id": "s2", "elements": [...] }
]
}
</script>用法:
- Claude Code / Cursor / Aider:通过插件直接编辑
.bento.html - 普通聊天机器人:复制 JSON → 让 AI 改 → 粘贴回去
- 离线模型:用 Ollama / llama.cpp / LM Studio 改,完全离线
作者特意设计了 window.bento.loadDoc API,让 chatbot 可以直接加载/保存 JSON。
🔐 E2EE 实时协作
多人同时编辑,Bento 用自家 CRDT(字符级文本合并)+ AES-GCM E2EE 实现:
- 协作密钥在文档创建时客户端生成,只活在文件里
- 拥有文件 = 拥有协作权限
- 「Rotate keys」= 撤销权限(生成新密钥)
- 可选的中继服务器只看到密文 + 连接时间 + 房间密钥哈希
- 离线编辑会精确合并回去(自家 CRDT 经过数百万次 fuzz 测试)
🎨 Morph 动画引擎
如果你在两页幻灯片上放了同一个 id 的元素,Bento 会自动计算它们的位置、大小、颜色(甚至渐变)差异,自动生成过渡动画。
复制一页幻灯片,改动一下元素位置——motion 就自动设计好了。无需手动加动画,不需要 Keynote 那种「Magic Move」的繁琐操作。
📊 内置图表引擎
柱状图、折线图、饼图、散点图全部内置:
- 演讲模式下实时数据联动
- 鼠标悬停 tooltip
- 缩放交互
- bar→pie 数据 morph 动画
不需要嵌入外部图表链接,不需要 Excel 截图。
🔄 自签名更新
每次发布新版本都用 ECDSA 签名。打开 Bento 时,应用会检查更新——但只检查静态 manifest,不发送任何关于你或文档的信息。签名 + 哈希 + 版本单调性在本地验证。
更新会写一个新文件,旧文件保留作为回滚。服务器从不接触你的文档。
📥 安装与使用
方式一:直接下载单文件(最快)
# 下载 560KB 的「完整应用」文件
wget https://bento.page/releases/slides/Bento_Slides.bento.html
# 用任何现代浏览器打开
open Bento_Slides.bento.html打开就是编辑器+演示器。没有安装步骤。
方式二:源码构建
git clone https://github.com/nyblnet/bento.git
cd bento
# Node 20+, npm
cd slides
npm install
npm run dev # 开发模式 → http://localhost:5173
npm run build:single # 生产构建 → dist-single/Bento_Slides.bento.html方式三:作为 Claude Code 插件
/plugin marketplace add nyblnet/bento
/plugin install bento-slides@nyblnetClaude Code 会自动下载最新 Bento 应用,配合文件系统直接编辑 .bento.html。
离线模式 + Ollama
打开「Offline」开关后,任何网络功能都被硬性阻断。所有 AI 操作走本地 Ollama:
# 安装本地模型
ollama pull llama3.1
# 在 Bento 中配置 Ollama endpoint
# Settings → AI Provider → Ollama → http://localhost:11434🎯 适用场景
特别适合:
- 📊 企业内部演示:把
.bento.html邮件发给同事,无账号依赖 - 🎓 学术会议演讲:不需要网络,飞行模式下也能讲
- 🤖 AI 辅助创作:让 Claude Code 帮你改两页 PPT,直接编辑 JSON
- 🌐 跨境团队协作:文件即协作邀请,无服务器数据存储风险
- 💾 长期归档:纯 HTML + JSON 格式,10 年后还能打开(不像 .pptx 可能格式失效)
不太适合:
- 🏢 企业级合规审计(presense name 是声明不是签名,企业身份需要额外签名机制)
- 📱 移动端编辑(Bento 是 desktop-first,手机只能查看/演示)
- 🎬 复杂动画需求(虽然 morph 很美,但要做出 PowerPoint 的复杂路径动画还有差距)
🔍 对比/替代方案
| 工具 | 文件大小 | 离线 | AI 友好 | 协作加密 | 长期可读性 |
|---|---|---|---|---|---|
| Bento | 560KB | ✅ 完全离线 | ✅ 原生 JSON | ✅ E2EE | ✅ 纯 HTML/JSON |
| PowerPoint | ~5GB | ❌ 强绑云 | ⚠️ 需插件 | ⚠️ 微软服务器 | ❌ 格式迭代失效 |
| Google Slides | - | ❌ 强绑云 | ❌ 需 API | ⚠️ Google 服务器 | ❌ 强绑生态 |
| Keynote | - | ⚠️ macOS only | ⚠️ 需脚本 | ⚠️ iCloud 依赖 | ⚠️ .key 格式 |
| Reveal.js | 几 MB | ✅ 静态站点 | ⚠️ 需插件 | ❌ 无 | ✅ 纯 HTML |
| Marp | 几 MB | ✅ Markdown | ⚠️ 需插件 | ❌ 无 | ✅ Markdown |
关键差异:Bento 是唯一做到「单文件 = 应用+文档+协作」的开源项目。Reveal.js / Marp 虽然是开源 HTML 演示器,但没有自包含的编辑器和协作能力。
⚠️ 注意事项
桌面端优先
- 手机能看、能讲,但不能编辑
- 这不是 bug,是设计取舍——触摸界面编辑 PPT 体验本来就差
协作撤销的局限性
- 实时协作时撤销是 snapshot-based
- 如果你和同事同时改同一属性,撤销可能回退掉对方的修改
- 详细见 collab-design.md
企业级身份验证未实现
- 协作中的「presence name」是声明而非密码学证明
- 同一协作密钥的房间里,谁都能伪装成别人
- 企业 SSO 集成「设计已规划,未实现」
签名更新需信任作者
- 更新包用 ECDSA 签名,但密钥在维护者手里
- 完全 paranoid 的用户可以关闭更新,只用源码构建
早期项目,部分功能仍在迭代
- 11 个 open issues,9 个 open PRs,社区活跃
- bento/spaces(笔记)、bento/dash(表格)、bento/vault 在路线图上
- 路线图详见 What's in flight
✅ 总结
Bento 解决的是一个被大多数 PPT 用户忽略的问题:你的演示文稿,真的属于你吗?
传统 Office 软件把文档锁在云端、专有格式、付费订阅里。Bento 反其道而行——一个 HTML 文件就是全部。不需要服务器、不需要账号、不需要云存储,发给同事、塞进邮件附件、扔到 U 盘,十年后照样能打开。
更酷的是它AI 原生——纯 JSON 文档模型让 Claude Code、Cursor 这些 AI 工具能像编辑代码一样编辑幻灯片。
适合人群:对数据主权敏感、需要 AI 辅助创作、追求长期可读性的演示者。
不适合人群:需要企业级合规审计、必须手机编辑、要做出复杂动画的演示者。
如果你也受够了「PPT 文件被锁在云上」「打开发现格式变了」,去 bento.page 试试,30 秒就能在浏览器里做出第一份 Bento 演示。
推荐指数:⭐⭐⭐⭐⭐(5/5,重新定义「PPT 该是什么」的开源项目)
📦 项目地址:https://github.com/nyblnet/bento
🌐 官方网站:https://bento.page
📜 许可证:MIT(开源免费)
🎬 立即试用:bento.page/slides