VS Code
一款可移植的技能,用于通过产品 CLI 和结构化 JSON 配置文件配置和操作 VS Code 系列 IDE(VS Code、VS Code Insiders、Cursor、VSCodium、Trae、Qoder、CodeBuddy)。默认使用标准位置;明确的路径从环境变量和配置文件中获取,因此该技能无需编辑即可在任何机器上运行。
平台说明:通过 Python 网关
scripts/vscode_skill.py实现跨平台。在 Windows 上,它会转发给 PowerShell 驱动程序vscode-cli.ps1(原始实现,11/11 测试通过)。在 macOS 和 Linux 上,它原生在 Python 中实现info、ext list、settings path/get/set/smoke和python set-interpreter;其他所有操作都通过本地code二进制文件执行。
快速入门
跨平台(推荐)
# 显示检测到的产品、CLI 路径和关键位置
python scripts/vscode_skill.py info
# 列出已安装的扩展
python scripts/vscode_skill.py ext list
# 显示用户 settings.json 路径和当前核心设置
python scripts/vscode_skill.py settings path
python scripts/vscode_skill.py settings get
# 更改用户设置中的字体大小(仅带 --Apply 时写入)
python scripts/vscode_skill.py settings set \
--FontSize 16 --FontFamily "JetBrains Mono, Consolas, monospace" --Apply
# 项目范围设置
python scripts/vscode_skill.py settings set \
--Scope project --ProjectPath /path/to/project \
--FormatOnSave true --Apply
# 项目的 Python 解释器
python scripts/vscode_skill.py python set-interpreter \
--ProjectPath /path/to/project --VenvName .venv
Windows 专用 (PowerShell)
如果您更喜欢 PowerShell,相同的命令可以直接通过 vscode-cli.ps1 运行:
pwsh -File $PSScriptRoot\scripts\vscode-cli.ps1 info
pwsh -File $PSScriptRoot\scripts\vscode-cli.ps1 ssh open `
--HostName devbox --LinuxPath /home/user/project
--Product 值:
auto(默认):探测 VS Code,然后是 VS Code Insiders。vscode:使用code/code.cmd。vscode-insiders:使用code-insiders/code-insiders.cmd。- 任何配置的产品 slug,例如
cursor、vscodium、trae-cn、qoder或codebuddy-cn:使用配置文件中的products.<slug>.cliPath、userDataPath和extensionsPath。
使用 VSCODE_SKILL_PRODUCT 或通过配置文件明确设置默认产品(请参阅配置)。
VS Code 兼容产品
内置自动检测对 VS Code 和 VS Code Insiders 最强大。Cursor、VSCodium、Trae、Qoder 和 CodeBuddy 通过通用产品配置路径处理,除非它们的 CLI 已通过环境特定的包装器可被发现。
此技能仅声明派生产品的 VS Code 兼容配置层:
- 用户和项目设置,包括
.vscode/settings.json。 - 项目的
.vscode/tasks.json、.vscode/launch.json和.vscode/extensions.json。 - 键绑定、代码片段、配置文件、扩展、模板、Python 解释器选择以及本地产品 CLI 支持的远程风格打开流程。
不要将此技能用于支持专有 AI 聊天、账户、模型设置、代理商店、产品特定市场、隐藏的 SQLite 状态、令牌或内部运行时文件。对于 Qoder 和 CodeBuddy,特别地,仅支持 VS Code 兼容的编辑器/配置层,除非用户提供官方产品特定文档并要求单独的适配器。
配置
路径和每台机器首选项按以下顺序解析:
- 环境变量(最高优先级)。
- 配置文件位于
$VSCODE_SKILL_CONFIG(如果已设置),否则为平台默认值:- Windows:
%APPDATA%\vscode-skill\config.json - macOS / Linux:
$XDG_CONFIG_HOME/vscode-skill/config.json或~/.config/vscode-skill/config.json
- Windows:
- 内置默认值(最低优先级)。
环境变量
| 变量 | 用途 | 默认值 |
|---|---|---|
VSCODE_SKILL_HOME | 技能安装位置 | 运行脚本的父目录 |
VSCODE_SKILL_CONFIG | 覆盖配置文件路径 | 上述平台默认值 |
VSCODE_SKILL_TEMP | 覆盖测试临时目录 | $TEMP/vscode-skill |
VSCODE_SKILL_PRODUCT | 默认 --Product 值 | auto |
VSCODE_CODE_CLI | VS Code CLI 的显式路径 | 自动检测 |
VSCODE_INSIDERS_CLI | VS Code Insiders CLI 的显式路径 | 自动检测 |
VSCODE_EXTENSIONS_DIR | 覆盖任何产品的扩展安装目录 | 产品默认值或配置 |
VSCODE_USER_DATA | 覆盖用户数据目录(很少使用) | 平台默认值 |
配置文件架构
将技能根目录下的 config.example.json 复制到您的配置位置进行编辑。所有键都是可选的。
{
"product": "auto",
"tempDir": null,
"products": {
"vscode": {
"cliPath": "C:\\Users\\you\\scoop\\apps\\vscode\\current\\bin\\code.cmd"
},
"vscode-insiders": {
"cliPath": "C:\\Users\\you\\scoop\\apps\\vscode-insiders\\current\\bin\\code-insiders.cmd"
},
"cursor": {
"cliPath": "C:\\Users\\you\\AppData\\Local\\Programs\\cursor\\resources\\app\\bin\\cursor.cmd",
"userDataPath": "C:\\Users\\you\\AppData\\Roaming\\Cursor\\User",
"extensionsPath": "C:\\Users\\.cursor\\extensions"
},
"vscodium": {
"cliPath": "C:\\Users\\you\\scoop\\apps\\vscodium\\current\\bin\\codium.cmd",
"userDataPath": "C:\\Users\\you\\AppData\\Roaming\\VSCodium\\User",
"extensionsPath": "C:\\Users\\.vscode-oss\\extensions"
},
"trae-cn": {
"cliPath": "C:\\Users\\you\\AppData\\Local\\Programs\\Trae CN\\bin\\trae-cn.cmd",
"userDataPath": "C:\\Users\\you\\AppData\\Roaming\\Trae CN\\User",
"extensionsPath": "C:\\Users\\.trae-cn\\extensions"
},
"qoder": {
"cliPath": "C:\\Users\\you\\AppData\\Local\\Programs\\Qoder\\bin\\qoder.cmd",
"userDataPath": "C:\\Users\\you\\AppData\\Roaming\\Qoder\\User",
"extensionsPath": "C:\\Users\\.qoder\\extensions"
},
"codebuddy-cn": {
"cliPath": "C:\\Users\\you\\AppData\\Local\\Programs\\CodeBuddy CN\\bin\\codebuddy.cmd",
"userDataPath": "C:\\Users\\you\\AppData\\Roaming\\CodeBuddy CN\\User",
"extensionsPath": "C:\\Users\\.codebuddycn\\extensions"
}
},
"ssh": {
"defaultHost": "localhost",
"defaultUser": "you"
},
"wsl": {
"defaultDistro": "Ubuntu-24.04"
}
}
运行 pwsh -File scripts/init-config.ps1 以在默认位置写入一个启动配置文件。
作用域规范
在写入任何 IDE 状态之前,将其分类为三个作用域之一,并在模棱两可时与用户确认:
- 只读检查:
info、ext list/locate、settings get/path。始终安全。 - 项目配置:
.vscode\settings.json、tasks.json、launch.json、extensions.json、项目代码片段。值得提交;不要包含个人主题、字体、账户信息或机器本地的绝对路径。 - 用户/全局配置:用户
settings.json、keybindings.json、用户代码片段、配置文件设置、已安装的扩展。在应用之前始终说明目标产品、文件、键、旧值(当可读时)、新值和回滚路径。
规则:
settings set需要显式的--Apply;没有它,该命令仅验证输入。ext install调用产品 CLI 的--install-extension。如果库失败,脚本不会静默重试 Open VSX;会打印出明确的警告,由调用者决定。- 通过此技能写入的项目设置不应包含指向机器本地虚拟环境的
python.defaultInterpreterPath,除非该项目旨在该特定机器上可重现。
设置参考
常见的用户设置路径:
- VS Code:
%APPDATA%\Code\User\settings.json - VS Code Insiders:
%APPDATA%\Code - Insiders\User\settings.json
常见键(全部可通过 settings set 设置):
| 键 | 标志 | 类型 |
|---|---|---|
editor.fontFamily | --FontFamily | 字符串 |
editor.fontSize | --FontSize | 整数 |
editor.lineHeight | --LineHeight | 数字 |
workbench.colorTheme | --ColorTheme | 字符串 |
workbench.iconTheme | --IconTheme | 字符串 |
workbench.productIconTheme | --ProductIconTheme | 字符串 |
editor.wordWrap | --WordWrap | 字符串 |
editor.tabSize | --TabSize | 整数 |
editor.formatOnSave | --FormatOnSave | 布尔值 |
files.autoSave | --AutoSave | 字符串 |
editor.minimap.enabled | --Minimap | 布尔值 |
python.defaultInterpreterPath | (通过 python set-interpreter 设置) | 字符串 |
对于任意键,传递 --SettingKey <key> --SettingValue <value>。值会被强制转换:true/false → 布尔值,整数/浮点数 → 数字,{...} / [...] → JSON,否则为字符串。
JSON 文件可能使用 VS Code 的 JSON 带注释风格;脚本的标准 JSON 解析器仅处理纯 JSON。包含注释的文件应通过编辑器或 JSONC 感知工具进行编辑。
命令
pwsh -File scripts/vscode-cli.ps1 info
pwsh -File scripts/vscode-cli.ps1 ext list
pwsh -File scripts/vscode-cli.ps1 ext locate --Id ms-python.python
pwsh -File scripts/vscode-cli.ps1 ext install --Id ms-python.python
pwsh -File scripts/vscode-cli.ps1 ext install --Path D:\downloads\some-extension.vsix
pwsh -File scripts/vscode-cli.ps1 settings path
pwsh -File scripts/vscode-cli.ps1 settings get
pwsh -File scripts/vscode-cli.ps1 settings set --FontSize 16 --Apply
pwsh -File scripts/vscode-cli.ps1 settings set --Scope project --ProjectPath D:\projects\demo --FormatOnSave true --Apply
pwsh -File scripts/vscode-cli.ps1 settings smoke
pwsh -File scripts/vscode-cli.ps1 python make-venvs --ProjectPath D:\projects\demo
pwsh -File scripts/vscode-cli.ps1 python set-interpreter --ProjectPath D:\projects\demo --VenvName .venv
pwsh -File scripts/vscode-cli.ps1 python verify --ProjectPath D:\projects\demo --ExpectedVenvName .venv
pwsh -File scripts/vscode-cli.ps1 ssh smoke --HostName localhost
pwsh -File scripts/vscode-cli.ps1 ssh open --HostName devbox --LinuxPath /home/user/project
pwsh -File scripts/vscode-cli.ps1 wsl list
pwsh -File scripts/vscode-cli.ps1 wsl open --Distro Ubuntu-24.04 --LinuxPath /home/user/project
CLI 解析顺序:显式环境变量(VSCODE_CODE_CLI / VSCODE_INSIDERS_CLI)→ config.products.<product>.cliPath → Get-Command code.cmd (PATH) → Get-Command code (PATH) → %LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd(Windows 默认)。通用产品在 products.<product>.cliPath 缺失时会清晰报错;它们永远不会被静默映射到 VS Code。
模板和捆绑内容
该技能在 references/ 下附带精选内容:
settings-index.md— 80 个最常用的设置,包含类型、默认值、作用域。settings-precedence.md— 11 层优先级模型 + 多根工作区行为。tasks-templates.md+templates/tasks/*.json— 10 个现成的tasks.json,适用于 Node、TypeScript、Python、Go、Rust、Docker、Make。launch-templates.md+templates/launch/*.json— 9 个现成的launch.json,适用于相同的语言外加 Chrome。extension-packs.md— 8 个精选技术栈(前端-Web、后端-Python、后端-Node、数据科学、系统、DevOps、多语言基线、AI 编码)。keybindings-cheatsheet.md— 50 个最常重新映射的快捷键。
# 列出可用的任务模板
python scripts/vscode_skill.py tasks list
# 从模板生成 .vscode/tasks.json(拒绝覆盖,除非使用 --Force)
python scripts/vscode_skill.py tasks init --Template python-pytest --ProjectPath /path/to/project --Apply
# 启动模板的相同操作
python scripts/vscode_skill.py launch init --Template python-current-file --ProjectPath /path/to/project --Apply
# 精选扩展栈
python scripts/vscode_skill.py extensions stacks
python scripts/vscode_skill.py extensions recommend --Stack frontend-web
python scripts/vscode_skill.py extensions install --Stack backend-python
python scripts/vscode_skill.py extensions pin --Stack polyglot-baseline --ProjectPath /path/to/project
配置文件、设置同步、多根工作区
# 检查配置文件(只读)
python scripts/vscode_skill.py profile list
python scripts/vscode_skill.py profile show --Profile <name>
# 检查本地是否存在设置同步存储(不读取内容)
python scripts/vscode_skill.py settings-sync status
# 多根工作区辅助工具
python scripts/vscode_skill.py workspace info --ProjectPath /path/to/project
python scripts/vscode_skill.py workspace folder-settings-get --ProjectPath /path --Folder frontend
python scripts/vscode_skill.py workspace folder-settings-set --ProjectPath /path --Folder frontend --SettingKey editor.defaultFormatter --SettingValue dbaeumer.vscode-eslint --Apply
设置同步永远不会以编程方式启用或禁用——该技能仅报告同步存储文件夹是否存在。通过 VS Code 账户 UI 启用/禁用它,以避免意外的数据泄露。
远程开发
ssh open构建一个vscode-remote://ssh-remote+<host><path>URI,并使用--folder-uri启动已解析的 CLI。wsl open类似地构建一个vscode-remote://wsl+<distro><path>URI。ssh smoke运行ssh -V、ssh -G <host>和Test-NetConnection以确认底层;它不保证已安装 Remote-SSH 扩展或 VS Code 服务器已启动。
对于更深入的远程问题排查,请检查 Help → Toggle Developer Tools、Remote-SSH 扩展输出通道或相关产品的工作区存储条目。
测试
捆绑的 run_vscode_skill_tests.py 默认运行安全的无写入检查:
python -X utf8 scripts/run_vscode_skill_tests.py --basic
可选组(需要相应的环境):
python -X utf8 scripts/run_vscode_skill_tests.py --include-python-venv
python -X utf8 scripts/run_vscode_skill_tests.py --include-cursor
--basic 测试如下:
| 步骤 | 命令 | 什么被测试 |
|---|---|---|
| 1 | info | CLI 可执行,产品版本非空 |
| 2 | ext list | extensions.json(如果存在)可解析 |
| 3 | settings path | 路径存在,可写 |
| 4 | settings get | 返回 JSON 结果,核心设置存在 |
| 5 | settings smoke | 完整往返:set(带 --DryRun)→ get → 验证 → 回滚 |
| 6 | settings set 任意键 | 任意键验证:`--ColorTheme |