-2026-W29:Desktop v2 與 subagent 在 WSL 下的配置要點)
1. OpenCode 2026-W29 一周動態(tài)里最值得動手的部分OpenCode 在 2026-07-10 到 2026-07-17 這一周連發(fā)六個穩(wěn)定版從 v1.17.19 一路推到 v1.18.3。如果你只關(guān)心“我本地要不要升級、升完怎么確認(rèn)生效”那這一周真正需要動手驗證的其實就三件事Desktop v2 的默認(rèn)切換、subagent 的默認(rèn)深度邊界、以及 WSL 下 server ready 的啟動順序。這三個點分別對應(yīng) v1.18.0、v1.18.2、v1.18.3也是本周唯一能讓你在終端里跑出明確結(jié)果的變化。先說清楚 OpenCode 是什么、適合誰。它是一個開源的 AI 編碼代理coding agent可以在終端 TUI 里跑也可以走 Desktop 圖形界面支持接入 OpenAI-compatible 的模型網(wǎng)關(guān)能讀代碼、改文件、跑命令、做任務(wù)分解。適合三類人一是習(xí)慣在終端里干活的開發(fā)者二是想把模型調(diào)用統(tǒng)一到一個 Base URL 上的團(tuán)隊三是需要 subagent 做任務(wù)編排的自動化玩家。這一周它變化密集但密集不等于都要跟下面我按“能復(fù)制、能驗證”的順序拆開。Desktop v2 在 v1.18.0 完成遷移并保留舊布局開關(guān)v1.18.1 修了 Settings 里 provider 分組的間距v1.18.3 又修了 Home 的 sticky header、session list 滾動和 command palette 搜索。聽起來都是小修但組合起來意味著新布局已經(jīng)進(jìn)入密集修補(bǔ)期而不是“一次切換就穩(wěn)”。同一周還有 Plan/Build 切換在新布局里消失或卡住的反饋#37070、#36997、#37101所以重度 Desktop 用戶升級時應(yīng)該把它當(dāng)受控遷移先備份會話數(shù)據(jù)把舊布局開關(guān)當(dāng)成明確回退路徑。subagent 這塊是本周最容易被忽略但最實用的改動。v1.18.2 默認(rèn)阻止 subagent 再啟動嵌套 subagent需要時用subagent_depth顯式配置。這個默認(rèn)值改動的意義在于以前你寫一個任務(wù)分解subagent 可能自己再拉一層成本和執(zhí)行面會意外放大現(xiàn)在默認(rèn)只跑一層想遞歸得自己開。對做自動化編排的團(tuán)隊這是省錢的默認(rèn)值對安全敏感的團(tuán)隊要記住它只是深度限制不等于權(quán)限沙箱external_directory: deny對 subagent 的邊界問題#34987和 Plan mode 可被繞過的反饋#34190本周仍未收口。WSL 是第三個必須單獨說的點。v1.18.3 明確要求 Desktop 在 WSL server 加載完成后才報告 ready這修的是啟動順序問題。但同一周仍有 Desktop restart 時報 WSL notification server 不存在的反饋#37171以及 Windows x64 升級 v1.18.3 后異常#37451。所以 WSL 用戶升級后不能只看“能打開”要專門驗證重啟、恢復(fù)會話、以及 server ready 的時序。下面我會給出可復(fù)制的 settings 片段和驗證命令讓你自己核對本地環(huán)境是否真的生效。2. 用 TaoToken 作為 OpenCode 的模型入口Base URL 與 Key 準(zhǔn)備在動 Desktop v2 和 subagent 之前先把模型入口固定下來否則你驗證 subagent 時連模型都調(diào)不通排障會混在一起。OpenCode 支持 OpenAI-compatible 的 provider所以你可以把 Base URL 指向 TaoToken 的 API 端點用一把 Key 統(tǒng)一管理模型調(diào)用。TaoToken 的 API 地址是https://taotoken.net/api官網(wǎng)入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentKey 在控制臺的 API Keys 頁面創(chuàng)建。這里要強(qiáng)調(diào)一個順序先拿 Key再寫配置最后才啟動 subagent。很多人反過來先跑起來發(fā)現(xiàn) 401再去翻配置結(jié)果把 provider 問題和 subagent 問題攪在一起。我建議你按下面的順序走一遍。第一步打開控制臺創(chuàng)建 Key。地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole_keyutm_campaignrewrite登錄后在 API Keys 里新建一個復(fù)制出來。這個 Key 只顯示一次建議直接存進(jìn)環(huán)境變量不要硬編碼進(jìn)倉庫。第二步確認(rèn)你要用的模型 ID。OpenCode 里模型是用provider/model的形式寫的比如openai/gpt-5.6這種。TaoToken 作為 OpenAI-compatible 網(wǎng)關(guān)模型 ID 以你控制臺里實際可用的為準(zhǔn)。本周 OpenCode 側(cè)對 GPT-5.6 的 context limit、Luna 的 OAuth 路徑、xAI 的 response storage 都做了修正v1.17.19、v1.17.20所以如果你用 GPT-5.6升級到 v1.18.3 后再驗證會更貼近實際行為。第三步把 Base URL 和 Key 寫進(jìn) OpenCode 的配置。OpenCode 的 provider 配置支持自定義baseURL和apiKey你可以用環(huán)境變量引用避免明文。下面這段是可直接復(fù)制的 JSON 片段路徑放在你的 OpenCode 配置目錄下通常是~/.config/opencode/opencode.jsonWSL 里就是 WSL 用戶的家目錄{ $schema: https://opencode.ai/config.json, provider: { taotoken: { npm: ai-sdk/openai-compatible, name: TaoToken, options: { baseURL: https://taotoken.net/api, apiKey: {env:TAOTOKEN_API_KEY} }, models: { gpt-5.6: { name: GPT-5.6 } } } }, model: taotoken/gpt-5.6 }注意apiKey用的是{env:TAOTOKEN_API_KEY}這是 OpenCode 的環(huán)境變量插值語法。你在 WSL 的~/.bashrc或~/.zshrc里加一行export TAOTOKEN_API_KEYsk-你的Key然后source ~/.bashrc讓它生效。這樣配置里不出現(xiàn)明文 Key換機(jī)器也好遷移。如果你更習(xí)慣用 TOML 風(fēng)格或者項目級配置OpenCode 也支持在項目根目錄放配置覆蓋全局但 Base URL 和 Key 這兩項建議只在全局配一次避免多個項目各寫一份導(dǎo)致排障時找不到源頭。這里插一句關(guān)于 Coding Plan 的說明。如果你不是臨時驗證而是打算長期用 OpenCode 做編碼和 Agent 編排可以看一下 Coding Plan地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。它的定位是給長期編碼場景用的額度方案和按量調(diào)用是兩條路。本周 subagent 默認(rèn)深度限制落地后遞歸調(diào)用變少了長期跑編排的成本曲線會更可控這時候評估套餐比按量更劃算。配置寫完先別急著開 Desktop。先在終端里用 OpenCode 的 TUI 跑一次最小請求確認(rèn) Base URL 和 Key 通了再進(jìn) Desktop v2 和 subagent 的驗證。這樣出問題時你能明確知道是 provider 層還是 UI 層。3. 可復(fù)制配置Desktop v2、subagent_depth 與 WSL 啟動設(shè)置這一節(jié)給你三份可直接復(fù)制的配置片段分別對應(yīng) Desktop v2 布局、subagent 深度、以及 WSL 下的啟動行為。每一份都標(biāo)了路徑和字段含義你按需取用。先說 Desktop v2 的布局開關(guān)。v1.18.0 完成遷移后保留了新舊布局切換設(shè)置這是本周最重要的回退路徑。如果你升級 v1.18.3 后遇到 Plan/Build 切換消失或卡住#37070、#37101第一件事就是切回舊布局而不是反復(fù)重啟。Desktop 的設(shè)置項在 Settings 里對應(yīng)的配置字段可以寫進(jìn)全局配置{ desktop: { layout: legacy, session: { restoreOnStartup: true } } }layout設(shè)為legacy就是舊布局設(shè)為v2或留空走新布局。我建議重度多會話用戶先設(shè)legacy等 Plan/Build 的 issue 關(guān)閉后再切回。restoreOnStartup控制啟動時是否恢復(fù)上次會話v1.18.0 修了 timeline 斷線重連和歷史回填這個開關(guān)配合使用能減少冷啟動時的會話丟失。第二份是 subagent 深度配置。v1.18.2 默認(rèn)阻止嵌套 subagent需要顯式開subagent_depth。這個字段寫在 agent 或任務(wù)配置里{ agent: { build: { subagent_depth: 1 } } }subagent_depth: 1表示允許一層 subagent也就是主 agent 可以拉起子 agent但子 agent 不能再拉。默認(rèn)值是 0 或未啟用嵌套具體以你版本的行為為準(zhǔn)。如果你確實需要兩層編排把它設(shè)成 2但要清楚每加一層成本和執(zhí)行面都會放大而且本周的權(quán)限邊界問題#34987、#34190還沒收口深度越大越難審計。安全敏感的團(tuán)隊?wèi)?yīng)該把容器和系統(tǒng)權(quán)限放在 OpenCode 之外不要指望subagent_depth當(dāng)沙箱用。第三份是 WSL 下的啟動相關(guān)設(shè)置。v1.18.3 要求 Desktop 在 WSL server 加載完成后才報告 ready這修的是時序。但 WSL 用戶仍要自己確認(rèn) server 是否真的起來了。你可以在 WSL 里檢查 OpenCode 的 server 進(jìn)程和端口ps aux | grep -i opencode ss -tlnp | grep -i opencode如果 Desktop 報 WSL notification server 不存在#37171先確認(rèn) WSL 發(fā)行版里 OpenCode 的 server 是否在跑再看 Desktop 是不是在 server ready 之前就發(fā)了請求。v1.18.3 的 ready 時序修復(fù)應(yīng)該能緩解但重啟場景仍需單獨驗證。另外 Windows x64 升級 v1.18.3 后有異常反饋#37451Windows 用戶建議先在單機(jī)測試升級別直接推給整個團(tuán)隊。把這三份配置放一起看你會發(fā)現(xiàn)本周的改動都圍繞“邊界”和“時序”Desktop v2 是布局邊界subagent_depth 是遞歸邊界WSL ready 是啟動時序。配置寫對了驗證才有意義。下一節(jié)給你具體的驗證請求和成功結(jié)果長什么樣。4. 驗證請求在 WSL 里啟動 subagent 并核對成功結(jié)果配置寫完接下來是驗證。這一節(jié)給你可復(fù)制的命令和預(yù)期輸出讓你確認(rèn) Base URL、subagent、WSL 三件事都真的生效而不是“看起來能打開”。第一步驗證 provider 連通。在 WSL 終端里先確認(rèn)環(huán)境變量已加載echo $TAOTOKEN_API_KEY應(yīng)該輸出你的 Key前綴通常是sk-。如果為空說明~/.bashrc沒 source 或者你開的是新 shell 沒繼承。然后直接用 curl 打一次 TaoToken 的 API確認(rèn) Base URL 和 Key 都對curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ | head -c 500成功的話你會看到一段 JSON里面有data數(shù)組和模型列表。如果返回 401說明 Key 不對或沒帶上如果返回連接錯誤檢查網(wǎng)絡(luò)和 Base URL 拼寫。這一步過了說明 provider 層沒問題后面 subagent 出問題就不用懷疑 Key 了。第二步在 OpenCode TUI 里跑一次最小對話。啟動 OpenCodeopencode進(jìn)入 TUI 后輸入一句簡單的話比如讓它解釋一個函數(shù)。預(yù)期結(jié)果是模型正常返回且你能在界面上看到用的是taotoken/gpt-5.6。如果這里報model not found檢查配置里的模型 ID 是否和控制臺一致如果報reading choices之類的解析錯誤通常是網(wǎng)關(guān)返回格式和客戶端預(yù)期不匹配先確認(rèn) Base URL 指向的是https://taotoken.net/api而不是別的路徑。第三步驗證 subagent。這是本周的重點。在 OpenCode 里觸發(fā)一個會用到 subagent 的任務(wù)比如讓它“分解這個重構(gòu)任務(wù)并分別處理”。v1.18.2 之后默認(rèn)只跑一層 subagent。你可以觀察輸出里 subagent 的層級如果只看到一層子任務(wù)說明默認(rèn)深度限制生效如果你配了subagent_depth: 1且看到兩層說明配置被讀取了。成功的結(jié)果是主 agent 拉起子 agent子 agent 完成任務(wù)后返回主 agent 匯總整個過程沒有無限遞歸。第四步驗證 WSL 啟動時序。關(guān)掉 Desktop在 WSL 里確認(rèn) server 停止然后重新打開 Desktop觀察它是否等 server ready 后才顯示就緒。你可以在 WSL 里同時開一個終端盯日志tail -f ~/.local/share/opencode/logs/*.logv1.18.3 之后Desktop 應(yīng)該在 server 加載完成后才報 ready。如果你看到 Desktop 先報 ready、server 后起來說明時序還有問題這時候檢查是不是舊版本殘留或者 WSL 發(fā)行版沒重啟。重啟 WSL 發(fā)行版可以用wsl --shutdown然后在 Windows 側(cè)重新進(jìn)入 WSL。這一步能清掉很多啟動順序的殘留狀態(tài)。四個驗證都過了你本地環(huán)境就算真正生效了。任何一步失敗下一節(jié)的排錯對照表能幫你快速定位。5. 本篇常見錯排查401、local proxy failed、reading choices 與 OAuth這一節(jié)按真實報錯來對照。本周 OpenCode 的 issue 里provider 鑒權(quán)、WSL 啟動、subagent 權(quán)限是三類高頻問題我把它們和你的配置對應(yīng)起來。先看 401。這是最常見的表現(xiàn)是請求返回401 Unauthorized。原因通常有三個Key 沒設(shè)進(jìn)環(huán)境變量、Key 復(fù)制時帶了空格、或者 Base URL 寫錯導(dǎo)致請求打到了別的端點。排查順序是先echo $TAOTOKEN_API_KEY確認(rèn)非空再用 curl 直接打https://taotoken.net/api/v1/models確認(rèn) Key 有效最后檢查配置里的baseURL是不是https://taotoken.net/api。注意不要寫成帶/v1的完整路徑又讓客戶端再拼一次容易變成/api/v1/v1/models。再看local proxy failed。這個報錯通常出現(xiàn)在客戶端嘗試走本地代理但代理沒起來的時候。如果你在 WSL 里跑檢查是不是有環(huán)境變量指向了一個不存在的本地端口比如HTTP_PROXY或HTTPS_PROXY設(shè)成了127.0.0.1:某端口但那個端口沒服務(wù)。用env | grep -i proxy看一下如果有殘留就 unset 掉。OpenCode 直連 TaoToken 的 API 不需要本地代理清掉這些變量往往就好了。然后是reading choices。這個報錯一般出現(xiàn)在客戶端解析模型返回時預(yù)期是 OpenAI 格式的choices數(shù)組但實際拿到的結(jié)構(gòu)不對??赡艿脑駼ase URL 指向了一個非 OpenAI-compatible 的端點或者模型 ID 寫錯導(dǎo)致網(wǎng)關(guān)返回了錯誤結(jié)構(gòu)。排查方法是先用 curl 打一次 chat completions看返回里有沒有choicescurl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d {model:gpt-5.6,messages:[{role:user,content:hi}]} \ | head -c 800如果返回里有choices說明網(wǎng)關(guān)沒問題問題在客戶端配置如果沒有檢查模型 ID 和請求路徑。OAuth 相關(guān)的報錯要單獨說。本周 v1.17.19 和 v1.17.20 修了 Luna Responses Lite OAuth 和 GPT-5.6 的 Codex context limit但 #36181new session 未自動加載 auth.json仍開放。如果你用 OAuth 而不是 API Key遇到model not found或鑒權(quán)失敗先確認(rèn) auth.json 的位置和內(nèi)容。OpenCode 的 OAuth 憑據(jù)通常在配置目錄下新建會話時可能沒自動加載。這時候可以手動檢查ls -la ~/.config/opencode/ cat ~/.config/opencode/auth.json如果 auth.json 存在但新會話沒讀到可能是版本問題升級到 v1.18.3 再試。如果你同時用 API Key 和 OAuth建議在配置里明確指定用哪個避免客戶端在兩條路徑之間搖擺。最后是 subagent 權(quán)限相關(guān)的報錯。如果你看到 subagent 被拒絕訪問某個目錄或者 Plan mode 下命令被繞過這不是配置寫錯而是本周仍未收口的邊界問題#34987、#34190。external_directory: deny對 subagent 的傳播可能不完整Plan mode 也可能被gh之類的命令繞過。這類問題不能靠改配置解決只能等上游修復(fù)同時把真正的隔離放在容器或系統(tǒng)權(quán)限層。安全敏感的團(tuán)隊不要因為subagent_depth限制了遞歸就放松外部隔離。把這幾類報錯和你的配置對照一遍大部分問題能自己定位。如果 401 和 reading choices 都排除了subagent 還是不工作那大概率是深度配置或權(quán)限邊界的問題去看 issue 狀態(tài)而不是反復(fù)改 Key。6. 把這一周的變化落到你的工作流里這一周 OpenCode 的六個穩(wěn)定版真正需要你動手的就是三件事把 Base URL 和 Key 固定到 TaoToken把 Desktop v2 的布局開關(guān)當(dāng)成回退路徑把 subagent_depth 和 WSL ready 時序驗證一遍。provider 兼容修復(fù)GPT-5.6、Luna、xAI可以直接采用但按模型逐個回歸Desktop v2 的核心遷移已發(fā)布Plan/Build 和多 tab 可讀性仍有反饋重度用戶先備份再升級subagent 默認(rèn)深度限制降低了失控風(fēng)險但權(quán)限邊界沒收口安全隔離要放在 OpenCode 之外。如果你只是臨時驗證模型連通用模型對話頁面快速試一把就行地址是https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite。如果你要長期跑編碼和 Agent 編排Coding Plan 更合適地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。Key 管理和接入文檔分別在 API Keys 和文檔頁排障時先看文檔再改配置能省很多來回。最后留一個我自己的習(xí)慣每次升級 OpenCode 后先跑一遍 curl 驗證 Base URL再進(jìn) TUI 跑最小對話最后才開 Desktop 和 subagent。這個順序能把 provider 層、客戶端層、UI 層的問題分開出錯了也知道去哪找。本周 WSL 和 Windows 的反饋偏多Windows 用戶升級 v1.18.3 前先在單機(jī)測別直接推給團(tuán)隊。