OpenCode 快速設定
一行指令把公司 LLM 接進 OpenCode。模型清單由伺服器提供,之後要更新只要再執行一次。
交給 AI 代理代做
自己操作不順時,把下面這段複製給你電腦上的 AI 代理(例如 OpenCode、Claude Code),並另外提供你的 API Key。
請幫我在這台電腦設定 OpenCode 連到公司的 LLM 伺服器。 1. 判斷作業系統。Windows 請在 PowerShell 執行(一整行): $env:OPENCODE_SETUP_NONINTERACTIVE='1'; $env:OPENCODE_SETUP_KEY='<我的 API Key>'; irm https://llm-oc-setup.umall.dev/setup.ps1 | iex; Remove-Item Env:OPENCODE_SETUP_KEY, Env:OPENCODE_SETUP_NONINTERACTIVE macOS 請在終端機執行(一整行): OPENCODE_SETUP_NONINTERACTIVE=1 OPENCODE_SETUP_KEY='<我的 API Key>' /bin/bash -c "$(curl -fsSL https://llm-oc-setup.umall.dev/setup.sh)" 2. 確認輸出有「完成!」與模型清單;若出現錯誤,把完整訊息回報給我,不要自行修改 OpenCode 設定檔。 3. 提醒我完全關閉 OpenCode 後重新開啟。
自己動手(約 1 分鐘)
- 開啟 PowerShell:按 Win 鍵,輸入
PowerShell,按 Enter。 - 貼上這行(在視窗按右鍵即可貼上),按 Enter:
irm https://llm-oc-setup.umall.dev/setup.ps1 | iex
- 伺服器網址直接按 Enter;接著貼上 API Key 再按 Enter(輸入時畫面不會顯示,是正常的)。
- 看到綠色的「完成!」和模型清單,完全關閉 OpenCode 後重新開啟即可。
- 開啟「終端機」:按 ⌘ + 空白鍵,輸入
終端機(或 Terminal),按 Return。 - 貼上這行(⌘ + V),按 Return:
/bin/bash -c "$(curl -fsSL https://llm-oc-setup.umall.dev/setup.sh)"
- 伺服器網址直接按 Return;接著貼上 API Key 再按 Return(輸入時畫面不會顯示,是正常的)。
- 看到綠色的「完成!」和模型清單,完全結束 OpenCode(⌘ + Q)後重新開啟即可。
之後要更新模型
再執行一次同一行指令,連按兩次 Enter(沿用上次的網址與金鑰)就好。畫面會列出這次新增或移除了哪些模型。
常見問題
顯示「金鑰無效或已停用」
確認貼上的是完整的 API Key(通常以 sk- 開頭),或向管理者確認金鑰是否已停用。腳本會讓你重新輸入,最多 3 次。
想換一把新的 API Key
重新執行指令,網址按 Enter,金鑰那一步貼上新的金鑰即可。
以前用過「OpenCode 快速設定工具」(.exe / .app)
直接改用這行指令即可,舊的設定會被更新。往後不需要再下載工具。
會不會動到我其他的 OpenCode 設定?
不會。腳本只改公司 LLM 那一個 provider,其他設定原樣保留;改動前的檔案會備份成 opencode.json.bak-日期-時間。API Key 只存在你的電腦上。
設定完 OpenCode 還是看不到新模型
OpenCode 只在啟動時讀設定:請完全關閉(包含系統匣/選單列圖示)後再開。仍有問題請把指令的完整輸出截圖給管理者。
運作方式(給工程師)
GitHub Copilot CLI:DeepSeek / Claude 一鍵切換
設定一次後,輸入 cgd 用 DeepSeek V4.1 Flash、輸入 cgs 用 Claude Sonnet 5.5,兩者都走公司 LiteLLM。
| 指令 | 模型 | 推理強度 | Context / 輸出上限 | 單價(每百萬 token 輸入 / 輸出) |
|---|---|---|---|---|
cgd | deepseek-v4.1-flash | max | 1,048,576 / 393,216 | $0.30 / $1.20 |
cgs | claude-sonnet-5-5 | high | 1,000,000 / 128,000 | $2 / $10 |
Key 只在這個網頁裡組合指令,不會上傳也不會儲存;關掉分頁就消失。
- 已安裝 GitHub Copilot CLI 與 PowerShell 7(Copilot CLI 在 Windows 需要 PowerShell 6 以上)。還沒裝的話先執行:
winget install GitHub.Copilot; winget install Microsoft.PowerShell
- 建立快捷指令:開啟 PowerShell(建議用 PowerShell 7:按 Win 鍵輸入
pwsh),貼上整段後按 Enter。看到綠色「完成!請繼續步驟 2。」即可。要換 Key 時改上方的 Key 再執行一次,會覆蓋舊的設定。& { # 允許 PowerShell 載入個人設定檔(只影響目前使用者;已設定過也沒關係) powershell.exe -NoProfile -Command "Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Force -ErrorAction SilentlyContinue" # 快捷指令本體:cgd = DeepSeek V4.1 Flash、cgs = Claude Sonnet 5.5 $block = @' # >>> copilot-litellm >>> # MAX_PROMPT_TOKENS 是輸入預算,不是 context 總量:context 上限 - 輸出上限 # deepseek-v4.1-flash:1,048,576 - 393,216 = 655,360 # claude-sonnet-5-5 :1,000,000 - 128,000 = 872,000 function Start-CopilotLiteLLM([hashtable]$Settings, [object[]]$Options) { $saved = @{} foreach ($k in $Settings.Keys) { $saved[$k] = [Environment]::GetEnvironmentVariable($k) [Environment]::SetEnvironmentVariable($k, $Settings[$k]) } try { copilot @Options } finally { foreach ($k in $saved.Keys) { [Environment]::SetEnvironmentVariable($k, $saved[$k]) } } } function cgd { Start-CopilotLiteLLM @{ COPILOT_PROVIDER_TYPE = 'openai' COPILOT_PROVIDER_WIRE_API = 'responses' COPILOT_PROVIDER_BASE_URL = 'https://llm.nikku.dev/v1' COPILOT_PROVIDER_API_KEY = '' COPILOT_MODEL = 'deepseek-v4.1-flash' COPILOT_PROVIDER_MAX_PROMPT_TOKENS = '655360' COPILOT_PROVIDER_MAX_OUTPUT_TOKENS = '393216' } (@('--yolo', '--reasoning-effort', 'max', '--model', 'deepseek-v4.1-flash') + $args) } function cgs { Start-CopilotLiteLLM @{ COPILOT_PROVIDER_TYPE = 'anthropic' COPILOT_PROVIDER_BASE_URL = 'https://llm.nikku.dev' COPILOT_PROVIDER_API_KEY = '' COPILOT_MODEL = 'claude-sonnet-5-5' COPILOT_PROVIDER_MAX_PROMPT_TOKENS = '872000' COPILOT_PROVIDER_MAX_OUTPUT_TOKENS = '128000' } (@('--yolo', '--reasoning-effort', 'high', '--model', 'claude-sonnet-5-5') + $args) } # <<< copilot-litellm <<< '@ # 寫進 Windows PowerShell 5.1 與 PowerShell 7 的個人設定檔(重新執行會先移除舊的區塊) $docs = Split-Path (Split-Path $PROFILE.CurrentUserAllHosts) foreach ($f in "$docs\PowerShell\profile.ps1", "$docs\WindowsPowerShell\profile.ps1") { $old = if (Test-Path $f) { [string](Get-Content $f -Raw) } else { '' } $old = ($old -replace '(?s)# >>> copilot-litellm >>>.*?# <<< copilot-litellm <<<', '').TrimEnd() $text = if ($old) { "$old`r`n`r`n$block`r`n" } else { "$block`r`n" } New-Item -ItemType Directory -Force (Split-Path $f) | Out-Null [IO.File]::WriteAllText($f, $text, (New-Object Text.UTF8Encoding $true)) } Write-Host '完成!請繼續步驟 2。' -ForegroundColor Green } - 重新載入設定(或關掉 PowerShell 再開一個):
. $PROFILE.CurrentUserAllHosts
- 啟動 Copilot:在專案資料夾輸入其中一個。
DeepSeekClaude
cgd
cgs
- 檢查設定:查看 BYOK(自訂 Provider)支援的變數,並實際連線測試,回覆
OK即成功。copilot help providers
cgs -p "Reply with just OK"
- 已安裝 GitHub Copilot CLI。還沒裝的話先執行:
brew install --cask copilot-cli
- 建立快捷指令:開啟「終端機」,貼上整段後按 Return。會寫進
~/.zshrc;重新執行會先移除舊的區塊。看到「完成!請繼續步驟 2。」即可。要換 Key 時改上方的 Key 再執行一次。[ -f ~/.zshrc ] && sed -i '' '/^# >>> copilot-litellm >>>$/,/^# <<< copilot-litellm <<<$/d' ~/.zshrc cat >> ~/.zshrc <<'EOF' # >>> copilot-litellm >>> # MAX_PROMPT_TOKENS 是輸入預算,不是 context 總量:context 上限 - 輸出上限 # deepseek-v4.1-flash:1,048,576 - 393,216 = 655,360 # claude-sonnet-5-5 :1,000,000 - 128,000 = 872,000 alias cgd='COPILOT_PROVIDER_TYPE=openai COPILOT_PROVIDER_WIRE_API=responses COPILOT_PROVIDER_BASE_URL=https://llm.nikku.dev/v1 COPILOT_PROVIDER_API_KEY= COPILOT_MODEL=deepseek-v4.1-flash COPILOT_PROVIDER_MAX_PROMPT_TOKENS=655360 COPILOT_PROVIDER_MAX_OUTPUT_TOKENS=393216 copilot --yolo --reasoning-effort max --model deepseek-v4.1-flash' alias cgs='COPILOT_PROVIDER_TYPE=anthropic COPILOT_PROVIDER_BASE_URL=https://llm.nikku.dev COPILOT_PROVIDER_API_KEY= COPILOT_MODEL=claude-sonnet-5-5 COPILOT_PROVIDER_MAX_PROMPT_TOKENS=872000 COPILOT_PROVIDER_MAX_OUTPUT_TOKENS=128000 copilot --yolo --reasoning-effort high --model claude-sonnet-5-5' # <<< copilot-litellm <<< EOF echo '完成!請繼續步驟 2。'
- 重新載入設定(或關掉終端機視窗再開一個):
source ~/.zshrc
- 啟動 Copilot:在專案資料夾輸入其中一個。
DeepSeekClaude
cgd
cgs
- 檢查設定:查看 BYOK(自訂 Provider)支援的變數,並實際連線測試,回覆
OK即成功。copilot help providers
cgs -p "Reply with just OK"
參數說明(給工程師)
| 參數 | cgd | cgs | 說明 |
|---|---|---|---|
COPILOT_PROVIDER_TYPE | openai | anthropic | Claude 走 Anthropic 原生格式,Copilot 會送出 adaptive thinking 與提示快取斷點 |
COPILOT_PROVIDER_WIRE_API | responses | — | OpenAI Responses API,只用於 openai 類型 |
COPILOT_PROVIDER_BASE_URL | …/v1 | 不加 /v1 | anthropic 類型會自己接上 /v1/messages |
COPILOT_MODEL + --model | 兩處都要寫 | 只寫環境變數會被你在 /model 選過的模型蓋掉 | |
…_MAX_PROMPT_TOKENS | 655,360 | 872,000 | 輸入預算 = context 上限 − 輸出上限,決定何時自動壓縮對話 |
…_MAX_OUTPUT_TOKENS | 393,216 | 128,000 | 模型的輸出上限 |
--reasoning-effort | max | high | Sonnet 5.5 官方預設 high,是品質與成本的平衡點 |
--yolo | 兩者皆開 | 工具、路徑、網址全部自動允許,不再逐一詢問 | |
常見問題
這次想用更高(或更低)的推理強度
在指令後面加上參數即可,會覆蓋預設值,例如 cgs --reasoning-effort xhigh。DeepSeek 可用 low / high / max;Claude 可用 low / medium / high / xhigh / max。
想換一把新的 API Key
在上方輸入新的 Key,重新執行步驟 1 與步驟 2。舊的設定區塊會被整段取代,不會重複。
啟動時出現「No token count multiplier is known…」
目前版本的 Copilot CLI 還沒內建 Sonnet 5.5 的 token 估算係數,只影響本機的用量估算,不影響請求內容,可以忽略。
Key 存在哪裡?
以明文寫在個人設定檔:Windows 是「文件」資料夾下的 PowerShell\profile.ps1 與 WindowsPowerShell\profile.ps1,Mac 是 ~/.zshrc。請不要把這些檔案分享給別人。