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