一个极简网页:只读浏览本地 Git 仓库文件;对 collab.json 里注册的“协作文件”用 Loro + CodeMirror 6 实时协作编辑。
前置:Rust(stable)、Node.js 22+、pnpm。
UI 样式:使用 Pico CSS(CDN)+
public/app.css(布局)。离线环境可把 Pico CSS 下载到本地并替换public/index.html里的<link>。
pnpm install
pnpm build
REPO_DIR=/abs/path/to/your/repo cargo run打开:http://localhost:8787(可用 PORT 修改端口)。
也可以用一条命令(会先构建前端再启动后端):
REPO_DIR=/abs/path/to/your/repo pnpm start- 左侧 Repo Files:来自
git -C $REPO_DIR ls-files,默认只读打开;可在只读视图点击“标记为协作”切换为协作编辑。 - 左侧 Collab Files:来自
collab.json;点击后进入协作编辑(仅内存态,不写回仓库)。 - “创建”协作文件:输入文件名(会自动补全
collab/前缀),服务端只做注册,不会写入仓库。
GET /api/repo/list->{ files: string[] }GET /api/repo/file?path=...-> 文本内容(最大 1MB)GET /api/collab/list->{ files: string[] }POST /api/collab/create { path }->{ ok: true }WS /ws?path=...:加入即下发全量snapshot,随后广播update(仅允许已注册的协作路径)
- 不做持久化:协作文档只存在内存,服务重启会丢编辑内容(但协作文件“列表”会写入
collab.json)。 - 不做 presence/光标、多语言高亮、文件树等功能。
- 新连接直接下发全量快照(POC 简化)。