bento

把完整的幻灯片办公套件压缩进一个 HTML 文件,无需安装、无需账号、无需联网,打开浏览器就能编辑和演示,文件本身即是软件。

Github地址

https://github.com/nyblnet/bento

功能特性

这个项目的核心卖点是”单文件自给自足”。你的所有内容、字体、图片、图表、动画效果,连同完整的编辑环境,全部打包在一个 .bento.html 文件里。保存时文件会重写自身的数据区块,用的是 File System Access API,不支持的话会自动降级成下载新文件。

协作方面做了端到端加密,AES-GCM 算法,密钥在本地生成、只存在文件里,relay 服务器只传密文,看不到内容。他们自己写了个 CRDT 来处理冲突合并,文字能精确到字符级别合并离线编辑的内容。

动画有个”morph presenting”功能,同 id 的元素跨幻灯片自动补间动画,位置、大小、颜色、渐变都能过渡。图表引擎也是自研的,不依赖第三方库,支持柱状图、折线图、饼图、散点图,演示时还能交互。

AI 适配做得比较务实。文档数据是明文 JSON 塞在文件顶部的,Claude Code、Cursor 这类有文件系统权限的 AI 工具可以直接改。也支持复制 JSON 出来给聊天机器人改完再贴回去,本地跑 Ollama 这类模型也能离线处理。

安全更新机制是 ECDSA 签名验证,更新时生成新文件、旧文件保留作为回滚。还有个”离线模式”的硬开关,打开后所有联网功能物理阻断,适合对数据出境敏感的场景。

代码结构比较清晰:slides/src/model.ts 管文档模型,render.ts 负责渲染,动画引擎在 anim.ts,图表在 charts.ts,协作逻辑在 sync/crdt.ts,有专门的 fuzz 测试脚本跑收敛验证。

怎么用

直接浏览器打开 .bento.html 文件,自动进编辑界面。顶部工具栏加内容,左侧面板管幻灯片顺序,右侧面板调属性。做完 ⌘S 保存,文件发给别人、扔网盘、插 U 盘都行,对方打开就是一模一样的编辑环境,完全离线也能跑。