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@nyblnet

Claude 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 友好协作加密长期可读性
Bento560KB✅ 完全离线✅ 原生 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 演示器,但没有自包含的编辑器和协作能力。


⚠️ 注意事项

  1. 桌面端优先

    • 手机能看、能讲,但不能编辑
    • 这不是 bug,是设计取舍——触摸界面编辑 PPT 体验本来就差
  2. 协作撤销的局限性

    • 实时协作时撤销是 snapshot-based
    • 如果你和同事同时改同一属性,撤销可能回退掉对方的修改
    • 详细见 collab-design.md
  3. 企业级身份验证未实现

    • 协作中的「presence name」是声明而非密码学证明
    • 同一协作密钥的房间里,谁都能伪装成别人
    • 企业 SSO 集成「设计已规划,未实现」
  4. 签名更新需信任作者

    • 更新包用 ECDSA 签名,但密钥在维护者手里
    • 完全 paranoid 的用户可以关闭更新,只用源码构建
  5. 早期项目,部分功能仍在迭代

    • 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