@dmh2002/dsh-connect-qoder

modeltested: passnpmMIT

Connects Qoder (Lingma CN / international) models to DSH through their PATs, with a per-region multi-account pool, daily check-in, automatic failover, and read-only credit visibility.

下载量 / Downloads
8,901
依赖体积 / node_modules
81.53 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add @dmh2002/dsh-connect-qoder

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

<p align="center">

<img src="docs/assets/dsh-connect-qoder-usage-card.png" width="640" alt="dsh-connect-qoder 设置页:国内版 / 国际版两个 tab,账号池、积分、一键签到与自动换号" />

<img src="docs/assets/dsh-connect-qoder-settings-page.png" width="640" alt="设置 → Qoder 页:标题、三条核心用途、活动瓦片,以及账号池(每账号一行身份 + 一行原因)" />

</p>

<h1 align="center">dsh-connect-qoder</h1>

<p align="center"><b>把 Qoder(通义灵码国内版 / 国际版)的模型接入 DeepSeek Harness,并提供账号池、每日签到、积分读数与模型管理。</b></p>

<p align="center">

<a href="README.en.md">English</a> ·

<a href="#安装">安装</a> ·

<a href="#工作原理">工作原理</a> ·

<a href="#配置">配置</a> ·

<a href="#账号池">账号池</a> ·

<a href="CHANGELOG.md">更新日志</a> ·

<a href="https://github.com/dingminhua/dsh-connect-qoder/issues">问题反馈</a>

</p>

<p align="center">

<a href="https://www.npmjs.com/package/%40dmh2002%2Fdsh-connect-qoder"><img src="https://img.shields.io/npm/v/%40dmh2002%2Fdsh-connect-qoder?style=flat-square&label=npm&color=cb3837" alt="npm version"></a>

<a href="https://www.npmjs.com/package/%40dmh2002%2Fdsh-connect-qoder"><img src="https://img.shields.io/npm/d18m/%40dmh2002%2Fdsh-connect-qoder?style=flat-square&label=downloads&color=cb3837" alt="npm downloads"></a>

<a href="https://github.com/dingminhua/dsh-connect-qoder/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/dingminhua/dsh-connect-qoder/ci.yml?branch=main&style=flat-square&label=tests" alt="test status"></a>

<a href="LICENSE"><img src="https://img.shields.io/github/license/dingminhua/dsh-connect-qoder?style=flat-square" alt="MIT license"></a>

<a href="https://github.com/dingminhua/dsh-connect-qoder/stargazers"><img src="https://img.shields.io/github/stars/dingminhua/dsh-connect-qoder?style=flat-square" alt="GitHub stars"></a>

</p>

一个独立的 DeepSeek Harness (DSH) bundle 插件。它把 Qoder 账号的模型接到 DSH 的模型选择器,同时提供模型管理与只读的用量概览。国内版与国际版是两个并行的供应商(qoder / qoder-global),可同时使用;插件的设置页以 tab 区分两者,方便统一管理。

Qoder 官方不提供 OpenAI 兼容端点(其官方 SDK 只是 agent 启动器),因此本插件直连 Qoder 的 cosy 网关,实现了协议的最小客户端,无需在 Qoder 桌面端登录——只需一个 PAT(Personal Access Token)。

功能特性

  • 双供应商并行接入(国内版 + 国际版) —— 国内版注册为 qoder provider(gateway.qoder.com.cn),国际版注册为 qoder-global provider(api1.qoder.sh)。配置了 PAT 的区域其模型会出现在 DSH 模型选择器里:两个区域都有 PAT 时两组同时可选,不同会话可以各选一边,互不干扰。没有 PAT 的区域不列出任何模型(一个请求也发不出去,列出来只会点到就失败);配置 PAT 后「刷新模型」即可让模型自动出现——provider 本身始终注册着,配置入口在「设置 → Qoder」。模型名内嵌上游积分倍率(如 Qwen3.8-Flash · x0.00),与 Qoder 自身模型菜单一致。

<img src="docs/assets/dsh-connect-qoder-model-picker.png" width="360" alt="DSH 模型选择器:Qoder 与 Qoder Global 两个分组,模型名带积分倍率" />

  • 设置页自成一处 —— 配置界面是 DSH 设置面板左侧导航里的独立一页(设置 → Qoder),与「账号与余额 / 通用设置 / 模型 / 插件」并列,不再藏在插件市场的插件详情页里。页面自上而下是:标题 → 一句话总述 → 三条核心用途 → 正文。
  • 双 tab 切换 —— 页面顶部为「国内版 / 国际版」两个 tab,各含独立的 PAT、模型管理与用量概览;每个 tab 的目录、勾选与状态完全隔离。
  • 正文按「账号 / 模型 / 诊断」分栏 —— 每个区域 tab 之下再把正文分成三栏。账号栏是账号池、积分读数开关与关于凭据的每一条说明(点一下即生效);模型栏是勾选、上下文档位、思考强度与逐模型测试(草稿,点「保存」才落地)——两者的提交语义本来就不同,分开之后保存按钮就挨着它保存的东西。切栏不重新拉取、不丢未保存的草稿(非活动栏仍挂载)。诊断栏是一张只读的事实表:区域、上游域名(与真正发请求的主机名同一处事实)、服务账号、凭据来源、积分读取时刻、目录模型数、已启用数、账号池开关,以及上游最近一次错误的原文——它存在的唯一理由是被整段贴进问题反馈,所以里面没有任何会改设置的控件。
  • 可单独关闭任一版本供应商 —— 每个 tab 右侧有一个勾选框(默认都勾选)。取消勾选即把该供应商从 DSH 模型选择器里彻底撤掉(不是只藏起 tab):它的路由与「设置 → 模型」页的目录条目一并摘除。PAT、用量与勾选全部保留,重新勾选即完整恢复。注意:若某会话此前选中的正是被关闭供应商的模型,该会话再调用会报 NO_ADAPTER。
  • 模型管理 —— 从上游刷新完整模型目录,逐项勾选启用或禁用;模型行显示倍率((0.50x))、上下文/输出上限、思考强度档位与免费标记,行右有「图片」「可关闭思考」开关、上下文档位选择器与「测试」按钮。勾选状态写入本地配置,立即同步到模型选择器。目录里有几个模型就排几行,列表自己不设高度上限、不出内滚动条——这条列表的用途是「看见并勾选模型」,只露七八行、把其余的藏进第二条滚动条(面板本身已经在滚)会让「有这个模型吗」变成一个需要先发现、再去拖的动作;要看全就滚页面。上游的 auto 不列出来:它是该区的默认路由,网关在请求时才决定把它解析成哪个模型,所以价格与上下文都由别人临时决定,插件无法如实描述——它不是模型,不该占一行让你勾选。

<img src="docs/assets/dsh-connect-qoder-model-management.png" width="640" alt="模型管理区:逐模型显示倍率、最大上下文/输出、思考强度档位,以及图片/可关闭思考/上下文档位与测试按钮" />

  • 活动优惠徽标 —— 上游在模型目录里自带活动规则(promotion:文案、时段、时区),模型行就在名字旁画一枚小胶囊,如「错峰 4 折」。文案原样来自上游(中文界面取 badge.zh,英文界面取 badge.en),插件不翻译也不改写;悬停给出上游的说明、时段与时区,以及活动文档链接原文。什么时候画由渲染时刻决定:有上游声明的墙钟时段(支持跨零点、按上游时区算)就按时段现算,没有时段才退回上游的 active——所以夜里读到的目录不会把徽标冻结到第二天早上,早上启动的进程也不会因此整晚不显示;没有活动字段的模型什么都不画。同一枚徽标也画在宿主的模型选择器里(conversation.input.model.label 槽位,issue #12)——选择器才是做选择的地方,与卡片共用同一套判定、文案与样式。取证与判定规则见 [docs/PROMO_BADGE.md](docs/PROMO_BADGE.md)。

<img src="docs/assets/dsh-connect-qoder-promo-badge.png" width="640" alt="模型管理区:Qwen3.8-Max 与 Qwen3.7-Plus 两行在倍率之后、模型名之外各有一枚蓝色胶囊,文案分别是上游自己写的「错峰 4 折」与「错峰4折」" />

  • 模型可用性测试 —— 每个模型行有一个「测试」按钮,直达上游确认该模型此刻能否使用:限流(429)报「被限流」、凭据无效报「凭据无效」、内容审核拒绝报「内容被审核拒绝」、额度耗尽报「额度已耗尽」,其余上游瞬时故障如实分类。探测在后台发起,凭据不会传到页面;结果不写入设置,也不改变你已保存的勾选。它发的是真实请求(会消耗少量上游额度),因此只能按单个模型手工点,没有「测试已勾选」这类批量按钮。
  • 每日签到 —— Qoder 有官方每日签到活动(个人用户每天可领 100 Credits,30 天有效)。账号池提供「一键签到所有账号」:逐账号领取、已领过的按幂等处理(不重复领取、不算失败),签到后积分自动刷新。国内版与国际版都已接通(国际版需要本机 Qoder 客户端的设备风控组件,取不到时如实报错而不是假装「今天没有活动」)。
  • 活动(只读,可关) —— 卡片在区域作用域内、额度读数之下是一组活动瓦片,逐条列出上游当前下发的活动:每日 100 Credits 签到行(带额度与「可领取 / 已领取」状态)与「1024 创造力集结」「首月订阅 Credits 翻倍」这类 banner(VIEW_DETAILS)。瓦片按栏宽自动排两列(auto-fill + 260px 下限),描述限两行、全文在悬停里,状态与「查看详情」贴底对齐;上游下发的活动条数不多时它们并排而不是各占一行,612px 的正文栏里三条活动约占 180px。每个区域可以单独关掉(设置页的「显示活动」,默认开,regions.<region>.showCampaigns;关掉后这一页直接从 tab 栏开始,不发那条 /campaigns 请求)。标题与描述原样来自上游(按界面语言取 zh / en,缺哪边用另一边),「查看详情」是真正的链接(上游的 detailUrl,缺失时退回活动落地页);只读,不签到、不改账号。上游没下发就显示「当前没有活动」,读不到则显示原因(不是装作没有)。此前本插件只读签到用的那一小片活动数据,banner 行被整行跳过(用户实拍 2026-10-25),现已整份读取。
  • 积分(只读) —— 账号池逐账号显示剩余积分、积分何时作废与套餐何时到期(来自 Qoder 的 sash/api/v2/me/usage,凭 jt- jobToken 查询);3 天内到期的积分金额会高亮。查询是只读的、不消耗积分;读不到时(凭据被拒 / 上游未响应)如实说明原因并给出路,不留一片空白。
  • 两个到期日是两件事(issue #31):qoderUsage.expiresAt 是账号级套餐 / 14 天试用到期(实测它等于 userId 前缀 + 14 天),不是任何一个积分包的到期 —— 它现在单独显示为「套餐 {at} 到期」,不参与「临期积分」高亮,也不参与池排序。
  • 积分到期来自签到批次:上游只在签到活动里给过 validity.days(30 天),所以插件在领到的那一刻记下 claimAtMs 与数额并落盘($DSH_HOME/.qoder-pool.<region>.json 的 credits),按 FIFO 记账、按悲观上界显示(取最早一批还没过期的)。上游不告诉我们「已花掉的是哪一批」,报晚了等于没有提醒,所以宁可早报几天。claimAtMs 缺席(旧记录 / 只见过「已领取」)时不显示,宁缺勿错;文案写明「最早一批签到积分约 {at} 到期」,不冒充上游的确定时刻。
  • 安全 loopback shim —— 每区域一个随机端口 + 进

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::46,最后更新 2026-11-06

Links

GitHub · Homepage · npm

Same category