前言¶
DeepSeek Harness(dsh)的模型列表來自各 llm-provider 適配器。若你想用 OpenCode Zen 的免費模型車道,常見做法是自建 HTTP 代理、改 provider 的 baseURL,或自己維護 API Key 與可用性判斷。Zen 免費車道對客戶端身份有閘門要求,直接按普通 OpenAPI 端點配置,容易遇到 403 FreeTierError、426 UpgradeRequired,或在限流時反覆出現 429 FreeUsageLimitError,模型目錄裏還會混進當前其實不可用的 -free 條目。
下面介紹社區插件 dsh-zen-proxy(維護者 Yee-h,分類:聯網工具)。它以進程內 llm-provider 方式註冊 OpenCode Zen 免費車道,注入官方 OpenCode 桌面客戶端所需的請求頭,並按週期探測後只把判定可用的免費模型放進模型選擇器。當前 README 說明:新版本已移除本地 HTTP 代理面,不再需要監聽端口、寫 settings.yaml 或用戶 API Key。
這是什麼¶
dsh-zen-proxy 是一個 dsh 插件(npm 包名 dsh-zen-proxy,當前資料中版本 0.2.2,MIT 許可證)。它把 OpenCode Zen 的免費模型接成 dsh 的原生 provider:裝上並重啓宿主後,可在桌面端模型選擇器裏直接使用 Zen 免費模型。
憑據爲上游池化的 Bearer public,由插件攜帶;插件每 10 分鐘(可配置)拉取上游清單、過濾 id 以 -free 結尾的模型並逐個探測,僅將「可用」與「地區受限」兩類結果分別掛到兩條路由分組(展示名分別爲「OpenCode Zen 免費模型」與「OpenCode Zen 免費模型(地區受限)」)。付費模型、判定不可用及尚未完成判定的模型不會出現在目錄中。
社區目錄頁:SkillHub - dsh-zen-proxy。源碼與說明:GitHub - Yee-h/dsh-zen-proxy(資料中 GitHub 星標約 3、fork 約 2)。
核心功能¶
兩條模型路由¶
dsh 的 listModels / normalizeModelInfo 契約中沒有「不可用」字段,插件用路由分組表達可用性:
| 路由 id | 含義 | 目錄內容 |
|---|---|---|
opencode-free |
免費模型(主分組) | 最近一次探測判定爲可用的免費模型 |
opencode-free-region |
免費模型(地區受限) | 最近一次探測判定爲地區受限的免費模型 |
「免費」判據爲模型 id 以 -free 結尾(上游清單項僅有 id / object / created / owned_by)。
探測與目錄更新¶
- 掛載後立即異步發起一輪探測,不阻塞掛載;之後按配置週期重複(默認 10 分鐘)。
- 可用性判定需解析流式數據幀:HTTP 200 仍可能在流裏攜帶錯誤對象,插件按 README 描述的順序分類失敗類型。
- 瞬時故障(限流、上游 5xx、網絡失敗)在連續 3 次以內保留此前判定;整輪全部限流時探測間隔指數退避(下限爲配置週期,上限 1 小時)。
403 FreeTierError或426 UpgradeRequired視爲插件級失敗,兩條路由清空並記錄診斷;清單拉取失敗僅作廢本輪,既有目錄保持不變。- 最近一次判定持久化到
$DSH_HOME/zen-proxy/availability.json(未設置DSH_HOME時爲宿主配置根下同名路徑),重啓後在首輪探測完成前可反映上次已知狀態。
上游身份與協議¶
清單:GET https://opencode.ai/zen/v1/models。對話按模型 id 選擇 chat 或 responses 族(muse-spark* 走 responses,其餘走 chat;README 註明該判據在本機無法完全證真)。
每個上游請求攜帶六個身份頭(節選 README 示例):
user-agent: opencode/<version> # version >= 1.18.0
authorization: Bearer public
x-opencode-client: desktop
x-opencode-project: global
x-opencode-session: ses_<12 hex><14 base62>
x-opencode-request: msg_<12 hex><14 base62>
請求體需 stream: true 並聲明工具數組(含 bash、glob、grep、read 等閘門要求的工具名;插件會按 README 規則映射調用方工具)。
因 Zen 免費車道只接受 user-agent: opencode/<version>(不低於 1.18.0),與 dsh 默認的 deepseek-harness/... attribution 互斥,插件在此覆蓋 user-agent 以過閘;README 在 src/identity.js 處有源碼級說明。
思考強度菜單¶
模型選擇器中的「思考強度」由插件提供:上游網關實際主要受輸出預算上限影響,插件將 light / balanced / deep 三檔折算爲 max_tokens(chat 族)或 max_output_tokens(responses 族),並可在配置中配合模型容量(詳見 README「思考強度」一節)。
安裝與啓用¶
profile 由 pnpm 管理;請用 dsh plugin 或 pnpm install,不要用 npm install 以免 lock 文件不一致。
1. 桌面端插件管理器(推薦)¶
在桌面端「設置 → 插件」中安裝 dsh-zen-proxy(本地 checkout 或 git 地址均可)。插件管理器會調用該 profile 的包管理器安裝,並把包名自動追加進 package.json 的 dsh.profile.bundles(缺少該條目時 bundle 不會被當作 profile 層加載)。
2. 命令行安裝¶
dsh plugin --profile desktop add git+https://github.com/Yee-h/dsh-zen-proxy.git
# 或在本地 checkout 時:
# dsh plugin --profile desktop add file:C:/path/to/dsh-zen-proxy
dsh plugin 只透傳參數給包管理器,不會自動寫回 dsh.profile.bundles。裝完後可重啓宿主讓其 reconcile(檢測到帶 bundle patch 的依賴時追加 bundles),或手工編輯 $DSH_HOME/profiles/desktop/package.json:
{
"dsh": {
"profile": {
"bundles": [
"dsh-zen-proxy"
]
}
}
}
3. 重啓宿主¶
本包通過 cordis.patch.yml 注入 loader 條目(id:zen-proxy)。插件無瀏覽器半身,無需額外 dsh.client 配置。
4. 可選配置¶
| 字段 | 默認值 | 說明 |
|---|---|---|
probeIntervalMinutes |
10 |
探測週期(分鐘);運行中修改後下一輪生效 |
opencodeVersion |
1.18.31 |
僞裝 OpenCode 版本;低於 1.18.0 會回退到門檻值並記診斷 |
不再需要把 provider 的 baseURL 指向本地端口,也不再需要 settings.yaml。
典型用法¶
經過上面的安裝與重啓步驟後,在 dsh 桌面端打開模型選擇器,在 OpenCode Zen 免費模型 或 OpenCode Zen 免費模型(地區受限) 分組中選擇已出現在目錄中的 -free 模型即可開始對話。首次掛載後目錄可能在首輪探測返回前爲空或沿用上次持久化結果,屬 README 描述的正常行爲。
若剛完成一輪探測後立即對話遇到 429 RATE_LIMIT,README 實測建議等待約一分鐘再試;探測流量使用獨立 session,與用戶對話 session 隔離,避免探測佔滿對話配額。
適用場景與注意¶
適合誰: 已在用 dsh 桌面 profile、希望在不配置 API Key 的前提下試用 OpenCode Zen 免費模型,並依賴插件自動維護「當前可用」模型列表的開發者。
運行與信任邊界: 插件在 dsh 進程內以 llm-provider 身份發起對外 HTTPS 請求,並覆蓋部分 attribution 頭以符合上游閘門。安裝前應閱讀 源碼倉庫 與 MIT 許可證,確認可接受其行爲與網絡出站範圍。Node 引擎要求見 package.json:^22.19.0 || >=24.0.0。
已知限制(摘自 README): 部分 muse-spark 地區受限模型在本機出口無法走通真實可用鏈路,只能驗證歸類;responses 協議族在本機同樣受限。地區受限與限流的先後關係會導致限流時先看到 429 而非 RegionError,插件用寬限邏輯保留此前的地區歸屬。
SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係,插件由社區維護,可用性與上游政策變化請以實際探測結果爲準。
結尾¶
dsh-zen-proxy 把 OpenCode Zen 免費車道從「自建代理 + 手改 baseURL」收成「安裝 bundle、重啓、在模型選擇器裏選模型」的路徑,並用週期性探測減少把不可用免費模型當成可選項的情況。需要細節、配置與探測語義時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/Yee-h/dsh-zen-proxy
- GitHub:https://github.com/Yee-h/dsh-zen-proxy