Bento - 装在单个HTML文件里的演示文稿套件
nyblnet/bento
PowerPoint 开源替代品,整个应用+数据+编辑器打包在一个 HTML 文件里,浏览器直接打开即可编辑和演示,无需安装任何软件
成熟度:维护活跃,最近提交0天前,14个open issues,近期刚发布v1.0.10版本
项目体检
许可 · MIT 协议,可自由商用、修改和分发
活跃 · 活跃开发中,最新版本 v1.0.10 发布于1天前,4位贡献者参与,最近提交于今日
解决什么
当代办公软件正在将文档变成"租赁品"——锁在云端、依赖账号、需要持续订阅才能访问。Bento 回归文档的本质:一个 560KB 的 HTML 文件里装着完整的演示文稿应用,包括查看器、编辑器、演示模式和你的所有数据。打开文件就是打开软件,保存时文件会重写自己,2026年创建的文件在2036年依然能用任何浏览器打开。这是对"软件即服务"模式的反叛,用单文件架构实现真正的数据所有权。
为何火
在 Hacker News 获得 1019 点赞和 238 条讨论,核心吸引力在于其激进的技术哲学:文件本身就是完整应用。创始人在讨论中透露,文件顶部是明文 JSON 数据块,下方是 base64 压缩的应用代码,浏览器用 DecompressionStream 解压后运行。这种设计让开发者想起 TiddlyWiki 和 HyperCard,但用例更明确——可编辑的演示文稿。社区特别关注其实时协作功能,多人同时编辑时通过 Cloudflare Durable Objects 实现端到端加密同步,服务器只看到密文。有用户在"留言板"演示文稿中实时看到其他人的编辑,验证了协作的真实性。
核心功能
形态动画(Morph Presenting)是杀手级特性:给元素设置相同 id,在幻灯片间自动生成位置、大小、颜色甚至渐变的过渡动画,复制幻灯片重新排列即可设计动效。实时协作采用自研 CRDT 算法,AES-GCM 端到端加密,密钥存在文件里而非服务器,打开文件副本即加入协作,离线编辑会精确合并。内置图表引擎无依赖绘制柱状图/折线图/饼图/散点图,演示时支持工具提示和缩放,图表类型切换时数据会动画过渡。AI 原生设计让 Claude Code、Cursor 等工具直接编辑文件中的 JSON 块,或通过聊天界面复制粘贴 JSON 往返编辑,支持 Ollama 等本地模型完全离线工作。还有演讲者视图、评论、布局系统、PDF 导出等完整功能,全部压缩在 560KB 里。
安装
无需安装。从 GitHub Releases 或 bento.page 下载 Bento_Slides.bento.html 文件(560KB),用 Chrome/Edge/Firefox 等现代浏览器打开即可编辑。保存时浏览器会提示选择保存位置(通过 File System Access API),或降级为下载新文件。开发者若要从源码构建,需 Node 20+ 环境,在 slides/ 目录运行 npm install && npm run build:single 即可生成单文件产物。
适合谁
追求数据自主权的个人和小团队,尤其是对云服务锁定有顾虑的用户。适合需要长期归档演示文稿的场景(教育、研究、合规),因为文件格式是明文 JSON 且不依赖外部服务。开发者和 AI 爱好者会喜欢其可编程性——文件就是数据结构,可以用脚本批量生成或让 AI 助手直接修改。不适合需要企业级权限管理的大型组织(协作基于共享密钥,缺少细粒度身份认证),移动端编辑体验也相对弱(主要为桌面优化,手机端查看和演示良好)。
社区评价
HN 社区热度极高,讨论聚焦在三个方向:技术实现的巧妙性——创始人解释文件结构后,开发者纷纷称赞"这就是我一直想要的 TiddlyWiki 用例",有人将其比作现代版 HyperCard。协作的可行性引发争议:有用户在留言板测试时发现每次收到更新就失焦,导致多人同时编辑困难(创始人承诺修复);也有人质疑 Cloudflare Durable Objects 的成本,创始人回应称经过计算在预算内。命名争议有趣:有人认为应叫"幻灯片"而非"PowerPoint"(后者是微软商标),但多数人承认 PowerPoint 已被泛化为"电子幻灯片"的代名词,就像 Kleenex 代表纸巾。正面观点集中在"终于有人做出真正本地优先的办公软件",负面担忧主要是协作体验的边缘情况和长期维护能力。
选型对比
vs PowerPoint/Google Slides:Bento 牺牲了模板丰富度和企业集成(无 SSO、审批流),换来数据永久可读和零依赖。PowerPoint 文件格式是二进制黑盒,Google Slides 需要 Google 账号且随时可能调整 API,Bento 的 JSON 格式保证 10 年后仍可用文本编辑器读取。协作方面 Bento 的 E2EE 更私密,但缺少 Google Slides 的版本历史 UI 和评论线程。vs Reveal.js/Slidev:后两者是开发者工具,需要 Markdown 编写和构建步骤,Bento 是所见即所得编辑器且无需 Node 环境。Reveal.js 用户需要单独托管 HTML,Bento 文件自带播放器。vs Notion/Gamma:这些现代工具依赖云端,Bento 可完全离线且文件可自由分发,但 Notion 的数据库和 Gamma 的 AI 生成能力更强。选择 Bento 的核心理由是"文件即所有权",代价是放弃云端生态的便利性。
已知坑
- 协作并发冲突:文档承认撤销操作在协作时是基于快照的,可能回退协同者对同一属性的编辑,这是 CRDT 设计的权衡。实测中多人编辑同一文本框会频繁失焦(已在修复列表)。
- 移动端限制:编辑功能主要为桌面浏览器优化,手机上查看和演示没问题,但复杂编辑操作体验不佳。
- 协作成员管理:基于共享密钥的设计意味着"拥有文件=拥有权限",踢人的唯一方式是"轮换密钥"生成新文件,无法像企业工具那样细粒度控制角色。
- 浏览器兼容性:依赖 File System Access API(Chrome/Edge 支持良好,Firefox 部分支持),Safari 会降级为下载模式。DecompressionStream 需要较新浏览器(2020年后)。
- 文件大小:嵌入大量图片后文件会膨胀(所有资源 base64 内联),虽然压缩但仍比云端引用方案占空间。中国大陆用户若使用协作功能,需确保能访问 Cloudflare Workers(通常无需特殊网络配置,但企业网络可能拦截 WebSocket)。
安装方式:下载单个HTML文件直接用浏览器打开