展开本页目录
开始前准备什么
- 下载独立练习包,保留 starter、reference 和原始输入。
- Node/npm和三个隔离浏览器上下文;本地WebSocket工程已附构建产物。
- 使用Claude Code原生功能需相应账号和可用额度;本题作者参考可在本地独立运行。
- 准备三会话与两组离线编辑
- 让Claude Code使用共享操作同步
- 启动实际WebSocket与房间
- 关闭WS入口后独立编辑
- 核对断线期间两端确实不同
- 开放连接并验收收敛与房间隔离
- 重建材料并限定恢复范围
starter、任务提示、具体输入、作者人工可运行参考与独立验证;不含账号/密钥/运行时数据库。
按本文环境运行,再对照原始输入和正反例。
1. 准备三会话与两组离线编辑
先看 inputs/edits.json:初始“午后车站”,A离线前插“山”,B末尾插“海”,第三个房间保持不变。使用三个隔离context排除跨标签共享。
2. 让Claude Code使用共享操作同步
让 Claude Code 使用Yjs共享文本和WebSocket provider;初始化由服务端每房间一次完成,不能每次连接重置,也不能把整段字符串最后写覆盖当协同。
交给目标 AI 工具的任务提示
实现两个隔离客户端的 Yjs 编辑器,显示 room/wsconnected/synced/文本。只在初建文档时初始化文本,不每次连接重置。使用真正的 shared type 更新,不以整段字符串最后覆盖。断网测试用隔离 contexts 且停 WebSocket,排除 BroadcastChannel 假同步;同房间恢复后收敛。3. 启动实际WebSocket与房间
启动 node reference/server.cjs,读取端口;页面URL带 ?ws=ws://127.0.0.1:端口&room=room-one,另一个独立会话同房间,第三个用room-two。
4. 关闭WS入口后独立编辑
控制端请求 /offline,关闭WebSocket入口并断开已有连接,但保留服务进程内文档。A/B分别真实输入后应各自看到不同文本,provider禁用BroadcastChannel。
5. 核对断线期间两端确实不同
断开期间核对A为“山午后车站”、B为“午后车站海”。若两边已相同,要检查是否仍走网络/同一上下文,不能把假离线当收敛证明。
6. 开放连接并验收收敛与房间隔离
请求 /online 后等待真实重连,两边应收敛为“山午后车站海”,room-two仍是“午后车站”。重连不能重复插入初始段。
7. 重建材料并限定恢复范围
从ZIP重建并重复浏览器输入/隔离。此处验证同一次存活进程的断网再连;没有登录、持久备份或整个服务/浏览器重启后的恢复承诺。
怎样确认已经完成
- 停 WebSocket 且隔离 context 时两端独立编辑,重连后文本相等且两端插入都保留。
- room-two 不收到 room-one 文本;重连不重复添加初始段。
- 实际 WebSocket/状态证据排除 BroadcastChannel,明确刷新/服务重启持久化未覆盖。
常见问题
Claude Code 怎么做两个人同时编辑的网页?
启动 node reference/server.cjs,读取端口;页面URL带 ?ws=ws://127.0.0.1:端口&room=room-one,另一个独立会话同房间,第三个用room-two。
协同编辑断网后再连上,怎么验证两边内容真的合并了?
请求 /online 后等待真实重连,两边应收敛为“山午后车站海”,room-two仍是“午后车站”。重连不能重复插入初始段。
哪些结果已执行,哪些仍需原生账号验证?
真实Yjs共享操作与WebSocket已在三个隔离context验证离线两端不同、恢复后收敛和房间隔离;使用作者传输适配,未运行Claude会话或持久重启恢复。




