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。- 任何已設定的產品代號,例如
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 支援下的 Remote 風格的開啟流程。
請勿使用此技能來支援專有的 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\\you\\.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\\you\\.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\\you\\.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\\you\\.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\\you\\.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。如果 marketplace 失敗,腳本不會默默地用 Open VSX 重試;會列印一個明確的警告,由呼叫者決定。- 透過此技能寫入的專案設定,絕不應包含指向本機 venv 的
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-with-Comments 風格;腳本的標準 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 個精選組合(前端網頁、後端-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 伺服器已啟動。
對於更深入的遠端問題排除,請檢查 說明 → 切換開發人員工具、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-ssh
python -X utf8 scripts/run_vscode_skill_tests.py --include-wsl
python -X utf8 scripts/run_vscode_skill_tests.py --include-smoke # 完整整合測試