1 个 HTML 装下整个 Office
你做 PPT 的时候,是不是也遇到过这些烦心事——
微软 365 一年几百块,文件还是打不开;同事发来一份 200MB 的 PPT,光下载就半天;改个版本传到 OneDrive,下次找又不知道哪个是最新;离网环境用不了,离线打开一片空白。
这周末我翻到一个叫 Bento 的开源项目,第一反应是——原来 PPT 可以这么简单。

它做的事听上去像开玩笑:把整个 Office 套件(PPT 编辑器+查看器+动画引擎+协作系统)全塞进一个 HTML 文件,体积约 560KB。
你下载这个 .bento.html 文件,双击用浏览器打开——它就是编辑器。编辑、保存,浏览器把同一个文件改写一遍。发邮件给同事,对方双击打开就是编辑好的 PPT,不用装任何软件。

项目发布才几天,GitHub 上 4.2k 颗星,Hacker News 上 Show HN 拿了 1025 分(HN 首页很难拿千分以上),287 个 fork。

8 年+ — 一个文件 forever。
deck、字体、图片、图表、动画,加上完整编辑器,都在一个 .bento.html 文件里。2026 年写的文件,2036 年照样能开。它不是个"现在好用"的工具,它是个"十年后还能用"的文件格式。
view-source — 文件顶部就是明文 JSON。
点开 view-source,文件最上面是一坨纯 JSON 数据块,明文可见,没有加密、没有混淆、没有二进制打包。你想用 grep 找一张图、用 sed 改个标题、用 Python 解析整个 deck,都行。文件就是数据,没有秘密。这件事在闭源 Office 里你连想都不敢想。
E2EE — 协作走 AES-GCM 端到端加密。
你发文件给同事协作,密钥就嵌在文件里,服务器只看见一串密文。它不是"我们承诺不看你文件"那种营销话术,是"服务器物理上看不见"那种架构。你要换协作方,重新生成一个密钥就行。
local-first — 离线模式硬阻断更新。

切到离线模式后,更新和协作都硬阻断,应用会明确告诉你"我离线了,不会偷偷连服务器"。不是"没网也能用"那种模糊承诺,是"没网我就拒绝做任何远程动作"——这才是真的把控制权交回给你。
AI 友好 — Claude Code / Cursor / Aider 直接编辑 .bento.html。
因为文件顶部就是纯 JSON,AI 编程工具可以直接读、直接改。不是"导出 JSON 再导入"那种曲线救国,是"文件本身就是 JSON"那种水到渠成。这意味着你下次让 AI 改 PPT,它不用先破解 .pptx 那个压缩包。
reveal.js — 底层用 reveal.js 做导航,自家写了动画引擎和图表引擎。
之前用 echarts,后来嫌太重,重写了。协作走自家 CRDT,fuzz-test 跑了几十万次收敛检查。中继服务器是 Cloudflare Durable Objects。整个技术栈公开在 README 里,没有藏。

MIT — 协议 MIT。
你拿这个文件改、卖、嵌入自己的产品,都行,作者只保留署名权。这件事在 Office 套件领域几乎绝迹——上一次是十几年前的 LibreOffice 时代了。
一行安装 — Claude Code 插件一行命令。
它顺手做了个 Claude Code 插件,/plugin marketplace add nyblnet/bento 装完,你的 Claude Code 助手就懂怎么直接改你的 .bento.html。AI 编辑 PPT 这件事,从"导出 JSON"变成"插件一键接入"。
它最反常识的设计哲学藏在 README 的第一句话里:
Office documents used to be things you had. Now they're things you rent.
办公文档曾经是你拥有的东西,现在成了你租的东西——Bento 想把这件事反过来。
说到底,Bento 是在重新定义"软件"和"文档"的关系。
以前的逻辑是"你装一个软件,用它产生文档";Bento 的逻辑是"文档本身就是软件,文件就是程序"。
这套思路在小工具上已经验证过了(TiddlyWiki、draw.io 都是单个 HTML 文件),Bento 把它带到了 office 文档领域——而且能协作、能 AI 编辑、能加密。
想自己试一下的,地址在这:https://github.com/nyblnet/bento
今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!
夜雨聆风