前言¶
DeepSeek Harness(DSH)設置頁內置的「獲取可用模型」按鈕對 catalog 裏的 provider 不髮網絡請求,它直接返回打包在 pi-ai npm 包裏的靜態快照(OpenCode Go 通常是 19 個模型)。服務端的模型列表變動頻繁(上新、下線、暫不可用),靜態快照永遠滯後。要獲取真實的可用模型列表,需要走真實路徑:GET /models 拉全集 → 逐個實測 → 寫回 settings.yaml。
插件介紹¶
dsh-opencode-models 是 DeepSeek Harness(DSH)的一個插件。在設置頁新增一欄「OpenCode Go 模型同步」,一鍵拉取 OpenCode Go 服務端的全部模型、逐個實測可用性與視覺能力,並把可用模型寫回 llm-pi-ai 的模型列表。
- 維護者:Retr67
- 許可證:MIT
- 技術特點:零構建、零運行時依賴
安裝與啓用¶
使用 npx 安裝:
npx -y @deepseek-ai/dsh plugin --profile web add https://github.com/Retr67/dsh-opencode-models
安裝後重啓 dsh web 並刷新頁面。
使用步驟¶
- 打開 dsh 設置,找到 OpenCode Go 模型同步;
- 點擊 「更新最新 OpenCode Go 模型列表」;
- 等待進度完成(約 1 分鐘:拉列表 + 全部模型兩輪探測)。頁面會顯示新增、保留、移除以及服務端拒絕的模型。
核心功能與策略¶
插件對每個模型發兩類微型真實請求(max_tokens: 1,併發 6)來判定狀態:
- 文本 ping:200 → 可用;400/401 → 明確拒絕(不進列表);403 → 需數據政策 opt-in;5xx → 暫時故障(保留);網絡錯誤 → 無法判定(保留)。
- 圖像 ping:發送 1x1 PNG,200 → 標註
input: [text, image];否則純文本。
寫回 settings.yaml 時有以下保護策略:
- 無變化不寫:列表與當前配置一致時不觸碰文件。
- 大量失敗中止:超過一半模型”無法判定”(網絡層異常)時放棄本次寫回,絕不清空列表。
- 保留手工元數據:已有條目的
name/contextWindow/maxTokens原樣保留。 - 新條目不寫死規格:新模型只寫
id/name(+ 實測的視覺、思考檔位),contextWindow與maxTokens交給 dsh 自己從內置的 pi-ai catalog 解析真實規格。
上下文窗口與最大輸出來源¶
模型條目沒有聲明 contextWindow / maxTokens 時,插件按以下順序解析:
- 內置 pi-ai catalog 裏該模型的真實條目(例如
kimi-k3→ 上下文 1048576、輸出 131072)。 - catalog 不認識時,回落到路由的
defaultContextWindow/defaultMaxTokens(dsh 默認 262144 / 32768)。
由此推論:不要手填猜的值,一旦條目裏寫了 contextWindow,它就永久覆蓋 catalog 的真實規格。
配置與兼容性¶
默認目標 provider 是 opencode-go。如需調整,在 profile 的 cordis.patch.yml 裏按 entry id 覆蓋:
# ~/.dsh/profiles/web/cordis.patch.yml
- id: opencode-models
config:
provider: opencode-go
concurrency: 6
timeoutMs: 25000
- 兼容性:dsh ≥ 0.1.0-rc.7(在 0.1.2-alpha.x 上開發驗證)。
- 思考強度:同步的模型帶
reasoningEfforts聲明,WebUI 出現思考強度選擇器(關閉 / Minimal / Low / Medium / High / Max)。手動設爲false可禁用。
結尾¶
本插件通過真實探測填補了靜態快照的缺口,能自動補齊上新模型、移除下線模型,並標註視覺能力。所有探測請求會攜帶該 provider 路由配置裏的 headers,部分聚合網關(如 OpenCode Go)要求 x-opencode-session 請求頭,請確保配置正確。