dsh-router-qoder:在 DSH 裏接入 Qoder 國內版與國際版

前言

在 DSH 裏做多供應商路由時,常見做法是裝 dsh-router 核心,再按目標平臺掛供應商插件。Qoder(阿里 AI 編碼平臺)官方沒有 OpenAI 兼容聊天端點,對話走 cosy 簽名網關和私有請求體,響應是套了一層 OpenAI 形狀的 SSE。若要在路由面板裏統一管理 Qoder 賬號、模型與回退,需要專門的供應商實現。dsh-router-qoder(維護者 CARVIN94)就是爲 dsh-router 註冊 Qoder 與 Qoder Global 兩個區域的插件;單獨安裝它不會生效,面板、賬號池、組合回退與模型策略仍在覈心裏。

這是什麼

npm 包名 dsh-router-qoder,當前版本 0.1.2,MIT 許可證,要求 Node.js >=20,並聲明支持 DSH 0.2.0+。插件通過 cordis 服務 router.suppliers 向核心註冊兩個供應商 id:qoder(國內,gateway.qoder.com.cn / openapi.qoder.com.cn)與 qoder-global(國際,api1.qoder.sh / openapi.qoder.sh)。兩區協議與契約相同,共用一份實現,差異只在區域 profile 與主機表。這兩個 id 同時是憑證與配置的存儲鍵,修改 id 會導致已添加賬號從存儲中「消失」,不宜隨意改名。

與 CodeBuddy 族插件的兩處不同 worth 記住:認證走 PAT(pt- 開頭),不是 OAuth;上游不是 OpenAI 兼容 URL,插件負責 cosy 會話、jobToken 交換,並把 Qoder SSE 轉成核心能消費的 OpenAI SSE。

核心功能

下面按 README 中「能力」表歸納,均爲插件對單個賬號調通上游的職責;選號、冷卻、遍歷回退由 dsh-router 核心負責。

添加賬號(PAT)
面板粘貼 pt-… 即可。添加時會真實交換一次 jobToken 校驗,錯誤 PAT 不會落盤;同一 PAT 不重複建號。帶 Bearer 前綴也會被識別並剝掉。

模型列表
「獲取模型」從上游 GET /algo/api/v2/model/list 實時拉取。面板顯示 display_name,組合與請求仍用上游 key;用顯示名請求會 404。上游的 auto 不在列表中(默認路由,非可描述模型)。無 PAT 時列表爲空,屬預期行爲。

對話
直連 cosy 網關,請求經私有模板與 cosy 編碼簽名;響應 SSE 轉爲 OpenAI SSE,含 reasoning_content、tool_calls、usage、[DONE] 等。非流式請求也由核心聚合 SSE,插件只產 OpenAI SSE 字節流。

圖文與思考強度
請求含 image_url / input_image 時按次設置 model_config.is_vl;推理等級在頂層與 parameters 兩處同時寫入(與官方客戶端一致)。auto/空/none/off 不下發。

積分與簽到
積分來自 sash 用量接口剩餘量求和,內存緩存 10 分鐘;讀不到報 -1(非 0),由核心保留上次持久化值。簽到走活動接口 claim,已領與 409 視爲冪等成功。

多賬號池
核心按池策略選號;插件只回報單次成敗與語義狀態(如 rate_limit、quota、no_such_model 等)。業務錯誤碼優先於 HTTP 狀態歸類,避免把「當日額度用盡」誤判爲憑據失效。

安裝與啓用

需要 DSH 0.2.0 及以上。先裝核心,再裝本插件,然後重啓 dsh web:

dsh plugin --profile web add dsh-router-core
dsh plugin --profile web add dsh-router-qoder

dsh plugin add 會在 profile 裏執行 pnpm add,並把聲明瞭 dsh.bundle.patch 的包(本插件的 cordis.patch.yml)加入 bundle 棧。重啓後面板「供應商」應出現 Qoder 與 Qoder Global 兩張卡片。

本地開發可將 profile 的 dependencies 指向 link:/path/to/dsh-router-qoder,改代碼後 pnpm build 再重啓 dsh web。

取 PAT 與典型用法

兩個區域各簽發一份 PAT,互不通用;貼錯區域會在 jobToken 交換階段失敗。

卡片 控制台 入口
Qoder(國內) qoder.cn 設置 → 個人訪問令牌 → 創建
Qoder Global qoder.com Settings → Personal Access Tokens → Create token

國際版控制台是 qoder.com,不是網關域名 qoder.sh。令牌只在創建時完整顯示一次,勿提交進倉庫或 issue。格式與作用域見官方文檔:國內認證、國際 Authentication。

典型步驟:

  1. 重啓 dsh web。
  2. 面板 → 供應商 → 對應卡片 → 添加 API key → 粘貼 PAT。
  3. 點「獲取模型」,勾選要用的模型(記住請求用 key,不是 display_name)。
  4. 請求模型可寫 qmodel_38max,或帶別名前綴 qoder/qmodel_38max(插件會剝前綴)。

README 中 2026-10-28 國內版模型快照(上游會變,以面板爲準)示例:Qwen3.8-Max 對應 key qmodel_38max,Kimi-K3.1-Pro 對應 kmodel_latest 等;命名規律勿用來猜 key。

適用場景與注意

適合誰
已在用 dsh-router 做 OpenAI 形態統一齣口,且需要在同一面板管理 Qoder 國內/國際賬號、模型目錄、積分與活動領取的 DSH 用戶。

分工邊界
策略(AccountPool、冷卻、禁用、組合回退)全在 dsh-router 核心;契約細節見核心的 docs/suppliers.md。

運行權限
插件隨當前 DSH 進程加載,以該進程權限訪問網絡與本地 profile 中的 credentials.sqlite、supplier-config.json。安裝前建議閱讀倉庫源碼與 MIT 許可證,確認 PAT 存儲方式可接受。

國際版限制
README 提到國際版 sash 面(積分/簽到)可能需要設備風控頭,屬上游側約束,以 issue 與後續版本說明爲準。

結尾

dsh-router-qoder 把 Qoder 兩區的 PAT 認證、cosy 網關對話和 OpenAI SSE 適配收進 dsh-router 供應商體系,與核心分工清晰:插件管單號上游,核心管池與路由。社區目錄頁:SkillHub · dsh-router-qoder;源碼與完整說明:GitHub · CARVIN94/dsh-router-qoder。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜