VSCode 中唯一能稳定实现实时协同编辑的是 Live Share 插件,它支持调试、终端、断点同步,且所有语言服务运行在主机侧,协作者保存即写入主机磁盘。

VSCode 中能稳定实现实时协同编辑的,只有 Live Share 插件。其他所谓“协同”方案(如手动同步文件、共享远程服务器、或第三方 CRDT 编辑器)在 VSCode 原生生态里不被支持,也缺乏调试/终端/断点等关键能力的同步保障。
Live Share 会话启动失败的常见原因
点击 Live Share: Start Collaboration Session 后卡在“正在准备…”或直接报错,通常不是插件没装好,而是环境链路断了:
- 未登录 Microsoft 或 GitHub 账号(
Sign In With Browser是唯一可靠方式;Sign In With User Code在多数新版 VSCode 中已失效) - 本地防火墙或公司代理拦截了
wss://prod.liveshare.vsengsaas.visualstudio.com这类中继域名 - 项目根目录为空,或当前打开的是单个文件而非文件夹(Live Share 必须基于工作区启动)
- VSCode 版本低于
1.22.0,或插件未完成依赖加载(重启后等待右下角状态栏出现Live Share图标再操作)
协作者加入后看不到文件或无法编辑
这不是权限配置问题,而是访问控制逻辑被误触发:
- 主机项目中存在
.vsls.json文件,且其中"files.exclude"或"files.include"规则过于激进(例如写了"**/*.js"却漏掉.ts) - 协作者点击链接时,浏览器自动打开了新 VSCode 实例,但该实例未继承主机的扩展环境(此时终端/调试面板不可用,需手动安装
ms-vsliveshare.vsliveshare) - 主机开启了只读模式(
"liveshare.readOnly": true),但未在邀请前明确告知——协作者光标可移动、选中文本,但敲击键盘无响应
编辑冲突与 OT 算法失效的典型表现
Live Share 底层用操作转换(OT)合并多端编辑,但它对“同时改同一行”的处理有边界:
- 两人在
console.log("a")行末尾同时插入字符,大概率成功合并;但若一人删整行、另一人改中间字段,transformInsert函数可能因偏移错位导致文本错乱 - 非 UTF-8 编码文件(如 GBK 的 .txt)可能触发序列化失败,表现为某次输入后整段文字变为空格或乱码
- 大文件(>5MB)编辑时 WebSocket 消息分片丢失,现象是协作者看到光标跳转但内容未更新——此时需手动保存并重新触发全量同步
真正容易被忽略的点:Live Share 的协同不是“复制一份代码给你”,而是“把你的编辑器变成主机的远程视图”。这意味着所有语言服务(LSP)、格式化(Prettier)、校验(ESLint)都运行在主机侧。协作者改完保存,代码实际写入的是主机磁盘——所以别指望靠它绕过 Git 权限或替代代码审查流程。


















