VSCode 官方自2023年底起弃用Microsoft账户同步,仅支持GitHub账户登录启用Settings Sync;旧版(如1.74–1.83)曾支持Microsoft账户,但1.84+版本已彻底移除该路径,强制转向GitHub OAuth认证。

Settings Sync 为什么必须用 GitHub 账户,不能用 Microsoft 账户
VSCode 官方在 2023 年底已弃用内置 Settings Sync 的 Microsoft 账户支持,现在只接受 GitHub 账户登录。如果你点开 Preferences: Turn on Settings Sync… 后跳转到 Microsoft 登录页,说明你正在使用的 VSCode 版本过旧(gist 权限写入私有 Gist —— 这是同步的存储后端,不是可选组件。
常见错误现象:Failed to sync: Bad credentials 或授权后无反应,基本都源于 GitHub Token 权限缺失。必须确认 Token 已勾选 gist(其他如 user:email 是辅助识别用,但 gist 是硬性要求)。
首次启用时必须手动勾选 Extensions 才能同步插件
默认情况下,Extensions 同步是关闭的。即使你看到“已开启 Settings Sync”,插件列表也不会自动安装。这是最常被忽略的一步。
- 执行
Preferences: Turn on Settings Sync…后,在弹出的「Choose what to sync」面板中,务必手动勾选Extensions - 如果已在多台设备启用同步,但某台电脑插件没出现,运行
Sync: Show Output,查看日志里是否出现Extension sync disabled - 启用后,首次上传会生成
extensions.json,内容是扩展 ID 列表(如ms-python.python),不包含版本号;VS Code 会按需拉取最新兼容版 - 注意:平台专属扩展(如仅 Windows 的
ms-vscode.cpptools在 macOS 上会被跳过,不报错也不安装)
同步不是实时的,必须手动触发 Upload 或 Download
Settings Sync 没有后台轮询或自动合并机制。它只在你明确操作时才动作,避免静默覆盖本地修改。这意味着你装了新插件、改了 keybindings.json,另一台电脑不会自动感知。
实操建议:
OpenClaw 技能 — 给定一个 GitHub 仓库 URL,自动解析出 owner/repo 名称,发现其中的 YAML/properties 配置文件及其配对的中文字段说明;在 `workspace/{repo}/` 目录下按同步日期(格式为 `YYYY-MM-DD`)创建时间戳子目录;写入 `.openclaw-config-state.json` 状态文件。每次用户提问前,先比对远程仓库当前 ref(如 `main` 或 `master`)的最新提交 SHA 与本地状态文件中记录的 SHA:
- 日常使用中,每台设备完成配置变更后,立即运行
Sync: Upload Settings(快捷键Shift+Alt+U/ macOSShift+Option+U) - 切换设备前,先运行
Sync: Download Settings,再检查Sync: Show Synced Data确认扩展列表和设置时间戳是否更新 - 不要依赖状态栏云图标“有小点”就认为已同步——那只是提示“有未上传更改”,不代表已推送到云端
- 冲突处理发生在
Download阶段:若远程有新扩展而本地没有,它会直接安装;若远程删了某个扩展而本地还留着,它不会卸载——同步是单向增量应用,不是双向 diff
敏感字段和工作区设置天然不同步,别白费劲去调配置
VS Code 对同步内容做过硬编码过滤,任何试图绕过的行为都不可靠。比如你在 settings.json 里写了 "http.proxy": "http://127.0.0.1:8080",它根本不会进 Gist;同理,.vscode/settings.json(工作区设置)永远不参与同步,这是设计使然,不是 bug。
容易踩的坑:
- 不要在
settingsSync.ignoredSettings里加路径试图“强制同步”工作区设置——它只对用户级设置生效,且加了也没用 - 不要把
python.defaultInterpreterPath这类含绝对路径的设置写进用户 settings,它会被自动剔除,导致 Python 解释器在另一台电脑上显示为未配置 - 如果你依赖自定义证书或 SSH 密钥路径,这些字段不会同步,也绝不该放进 Gist(GitHub 不加密存储 Gist 内容,仅传输加密)
真正需要跨设备一致的行为(如缩进、文件编码、保存格式),必须明确写在用户级 settings.json 里,并确保不带平台敏感路径。










