vscode远程开发插件必须安装到远程服务器而非本地,即在remote-ssh连接后的“installed on ssh:[hostname]”视图中安装,路径为~/.vscode-server/extensions/且不可修改;python/eslint/prettier等需远程存在对应二进制或包;离线环境须手动下载.vsix并用“install from vsix”安装;live share/copilot等ui类插件需配置"remote.extensionkind"并确保网络可达。

远程开发模式下,VSCode 插件不是“装了就能用”,而是必须明确区分安装位置、运行上下文和依赖链路——本地装的插件对远程窗口完全无效,这是 90% 的功能失效(补全不工作、调试灰掉、解释器找不到)的根源。
Remote-SSH 连接后,插件到底该装在哪
只有在「远程窗口」中打开 Extensions 视图(Ctrl+Shift+X),且顶部显示 Installed on SSH: [hostname] 时,点击 Install 才会真正部署到远程服务器的 ~/.vscode-server/extensions/ 目录。这个路径是硬编码的,无法修改。
- 若顶部仍显示
Installed on This Computer,说明你当前处于本地窗口,所有操作都只影响本地~/.vscode/extensions/ - 手动确认:连上远程后,在集成终端执行
ls ~/.vscode-server/extensions/,应能看到带版本号的插件文件夹(如ms-python.python-2024.12.0) - 插件名里的版本号与当前 VS Code Server 的 commit ID 绑定;升级本地 VS Code 后,远程可能需重装插件,否则出现
Extension activation failed
为什么 Python/ESLint/Prettier 在远程里不生效
这类插件 UI 在本地渲染,但核心能力(语言服务器、格式化器、linter)必须在远程进程里运行——它们依赖远程系统已安装的二进制或 Python 包。
-
ms-python.python需要远程有pyright和debugpy:运行which pyright和which debugpy,若为空,执行pip3 install --user pyright debugpy -
esbenp.prettier-vscode要求远程项目里有prettier包,或全局安装:npm install -g prettier;仅本地node_modules无效 -
dbaeumer.vscode-eslint同理,远程终端需能执行eslint --version,否则输出面板里会报Cannot find module 'eslint' - 路径配置必须重写:本地设了
"eslint.runtime": "C:\node\node.exe",远程得改成"/usr/bin/node"
离线环境或内网服务器怎么装插件
当远程服务器无法访问 marketplace.visualstudio.com(常见于金融、政企内网),点击 Install 按钮必然失败,必须走离线流程。
- 在能联网的机器上,打开插件页面(如
https://marketplace.visualstudio.com/items?itemName=ms-python.python),拉到「Version History」下载对应.vsix文件 - 用
scp或拖拽方式把.vsix传到远程服务器任意目录(如~/Downloads/) - 在远程窗口中按
Ctrl+Shift+P,输入Extensions: Install from VSIX,选中该文件 - 别用
code --install-extension命令:它只作用于本地,对远程无效
Live Share / CodeGeeX / Copilot 类插件的特殊处理
这些插件多数默认为 ui 类型,不原生支持远程运行——强行启用会导致面板空白、认证断连、AI 响应无返回。
- 先查插件详情页的
Extension Kind字段:若只写UI,就得手动覆盖策略 - 在远程窗口的
settings.json中添加:"remote.extensionKind": { "codex-team.codegeex": ["ui", "workspace"] },然后重启远程窗口 - Copilot 需远程能直连
api.github.com或配置代理:"copilot.proxy": "http://proxy:8080";curl -I https://api.github.com必须返回 200 - Live Share 协作者看到的功能,只取决于远程端已安装并启用的插件——本地装的
GitLens在共享会话里不可见
最易被忽略的是:远程插件的「激活时机」依赖语言标识和文件关联。比如 ms-python.python 默认不响应 .ipynb 文件,必须在远程 settings.json 中显式加 "[jupyter-notebook]": { "editor.defaultFormatter": "ms-python.python" } ——不写这行,哪怕插件装对了、依赖也齐了,笔记本里照样没补全。











