像发文件一样分享多人协作软件!Tonk:开创性的自包含应用格式

## 项目介绍

Tonk 是一个开创性的容器化格式、主机环境和通信协议,用于构建和分享像文件一样简单传递的多人协作软件。它的核心愿景是让软件既有文件的易用性(随手分享、即点即用),又具备现代应用的强大协作能力。

Tonk 的设计理念来自”可塑性软件”(Malleable Software)思想:工具应该既容易使用又容易修改,用户应该始终保持对自己工具和数据的控制权。

## 核心特色功能

**虚拟文件系统**:基于 Automerge CRDT 的文档存储,支持实时同步。CRDT(无冲突复制数据类型)是一种专门为分布式协作设计的数据结构,即使在网络中断或多人同时编辑的情况下,也能自动合并冲突,无需中央服务器协调。

**自包含 Bundle 格式**:每个 .tonk 文件同时包含应用程序和用户数据。可以像发送一个 Word 文档一样,通过邮件、网盘或聊天工具发送一个 Tonk 应用,接收者双击即可运行。

**Host-Web 运行时**:提供完整的浏览器运行环境,可以直接加载和执行 .tonk 应用。无需安装任何东西,打开浏览器即可使用。

**WASM 核心**:核心由 Rust 实现,性能极高,可运行在浏览器和 Node.js 中。

**实时同步**:通过 WebSocket 中继服务器实现点对点实时同步,同时保持离线优先特性——无网络时应用正常运作,重新连接后自动同步。

**跨平台兼容性**:Tonk 文件设计为跨任何连接、在任何机器上都能工作,真正实现”一份文件,到处可用”。

## 安装部署步骤

### 环境要求

– Bun 1.x(推荐)或 Node.js 18+
– Git

### 快速开始

第一步,克隆并构建:

“`bash
git clone https://github.com/tonk-labs/tonk.git
cd tonk
bun install
bun run build
“`

第二步,尝试 Latergram 示例(一个图片分享应用):

“`bash
cd examples/latergram
bun install
bun run bundle create
“`

第三步,运行 Host-Web 运行时:

“`bash
cd packages/host-web
bun run dev
“`

现在打开浏览器访问 `http://localhost:3000`,加载生成的 .tonk 文件即可使用 Latergram。

### 部署到生产环境

“`bash
cd packages/host-web
bun run build
# 将 build 目录部署到任意静态托管服务(Vercel、Cloudflare Pages 等)
“`

## 使用方法

### 创建 Tonk 应用

Tonk 提供了一套开发工具,帮助你将现有的 Web 应用打包为 .tonk 格式:

“`bash
bunx tonk create myapp
cd myapp
# 编写你的应用代码
bun run bundle create # 生成 .tonk 文件
“`

### 加载和运行 Tonk 应用

使用 Host-Web 在浏览器中加载:

“`bash
bun run dev
# 访问 http://localhost:3000
# 选择或拖放 .tonk 文件即可运行
“`

### 与他人协作

1. 创建或打开一个 Tonk 应用后,系统会自动建立 WebSocket 连接
2. 分享 Tonk 文件给协作者(通过任何方式:邮件、网盘、聊天工具)
3. 协作者打开后自动进入同一个应用实例
4. 所有更改实时同步,即使多人同时编辑也不会冲突

## 适用场景

**协作笔记/文档**:像 Notion 一样支持多人实时协作,但数据完全保存在本地 Tonk 文件中。

**多人白板/画板**:实时协作的创意工具,数据自包含在文件中。

**游戏存档分享**:游戏进度和状态打包为 Tonk 文件,分享给朋友继续游玩。

**开发工具协作**:团队成员之间快速分享和同步开发环境状态。

**离线协作**:网络不佳环境下也能正常工作,恢复连接后自动同步。

## 开源协议

本项目采用 MIT 开源协议,代码完全开放,可免费商用。

**服务支持**:如有兴趣不会搭建,可以联系微信:WRYD6166,开源项目搭建10-50元。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容