Live Share需双方账户类型一致、手动点击Join、勾选Terminal/Debug权限、手动保存文件才能正常协同;默认不传.env等敏感文件,权限仅分读写两级。

Live Share 不是“点一下就实时同步”,它需要双方环境对齐、网络通路畅通、权限配置明确——缺一不可。大多数连接失败或编辑不同步问题,都出在登录账户类型不一致、共享设置没勾选关键模块、或文件没保存这三处。
为什么点击邀请链接后卡在“Waiting for guest…”
这不是插件没装好,而是协作者端没完成两个必要动作:没登录(或登录账户类型不匹配)、没手动点击弹窗里的 Join 按钮。
- 必须双方都用同一类账户登录:你用 GitHub,对方也得用 GitHub;你用 Microsoft,对方不能用 Outlook 别名混搭——否则身份链断裂,状态栏一直显示
Sharing却无法变成Shared - 对方点击链接后,浏览器或 VSCode 会弹出权限确认窗口(常被广告拦截器/浏览器静默屏蔽),必须手动点 Join,不会自动接入
- 如果对方是首次使用,VSCode 会先下载扩展、重启、再登录——整个流程走完前,状态就是“等不到人”
共享终端或调试时对方看不到输出或断点失效
Live Share 默认不开启终端和调试共享,而且即使开了,launch.json 中的路径和环境变量仍以被邀请方本地为准,不是你的。
- 发起共享时,在弹出面板里务必勾选 Terminal 和 Debug —— 这两个开关默认关闭
- 调试能同步断点位置,但
program路径、env、cwd全部读取协作者本地的launch.json和系统环境;硬编码绝对路径(如"program": "/home/user/project/dist/index.js")必然失败 - 推荐统一用
${workspaceFolder}变量,比如"program": "${workspaceFolder}/dist/index.js",否则对方npm run dev会报Cannot find module
对方改了代码,你却看不到最新内容
Live Share 同步的是编辑操作快照,不是文件内容流。它不自动保存,也不监听 fs 事件。
- 你每次修改后必须按
Ctrl+S(Windows/Linux)或Cmd+S(macOS)手动保存,对方才能看到变更;否则他看到的还是你共享那一刻的文件状态 - 可启用自动保存:
File > Auto Save→ 设为afterDelay或onFocusChange,避免遗漏 - 多人同时编辑同一行时,后保存者覆盖前保存者,无合并提示、无冲突标记——这是设计限制,不是 bug
怎样防止协作者误删或执行危险命令
Live Share 的权限模型很粗粒度:没有文件级、行级、命令白名单控制,只有全局开关。
- 发起会话时,直接在共享面板里取消勾选 Allow guests to edit files,对方就只能查看、不能修改、不能保存
- 如果已开始共享,点击右下角
Live Share图标 →Change Guest Permissions→ 切换为Read only -
Terminal权限一旦开启,协作者可在你本地终端中执行任意命令(包括rm -rf);生产环境排查时,建议只共享只读终端输出(用右键终端面板 →Share Terminal),禁用输入
最常被忽略的一点:Live Share 不传输 .env、secrets.json 等文件内容,但它也不阻止你手动打开并编辑这些文件——只要你在编辑器里打开了,协作者就能看到明文。别指望工具替你守密,该删的 tab 得自己关掉。



















