deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:masknull/dsh-qoder-connect
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English | 简体中文
把 Qoder 订阅的模型以个人访问令牌(PAT)接入 DeepSeek Harness(DSH)的社区插件。一个插件同时服务两条 Qoder 产品线,各自一张设置卡片、一个 provider、一套凭证与模型目录,互不混用:
| 变体 | provider id | 卡片标题(中文界面) | PAT 生成站点 |
|---|---|---|---|
| 国内版 | qoder |
Qoder(国内版) | qoder.com.cn |
| 国际版 | qoder-global |
Qoder Global(国际版) | qoder.com |
只需要哪一版就只配哪一版:未保存 PAT 的变体不显示模型分组,另一版完全不受影响。流式输出、推理内容、工具调用走插件内置的 Qoder 传输层;对话循环、压缩与权限始终由 DSH 本体掌控。
qoder(china)与 qoder-global(global)各有自己的凭证文件、路由与已保存目录——qoder.com 生成的令牌对中国区无效,反之亦然,两套永不互串。x<priceFactor>:模型名后直接拼上游报价的价格倍率(如 某模型 · x0.79,免费为 x0),来自目录接口的 price_factor 字段,仅作展示、不影响请求;上游未报倍率的模型不显示后缀,不会凭空补一个数。在「Qoder 侧栏展示」卡片开启后,侧栏底部出现该变体的额度小卡;点击小卡在中间面板打开「Qoder 额度」明细,按套餐逐行展示,可随时在两版之间切换。
国内版(侧栏点击后):

国际版(侧栏点击后):

「Qoder 侧栏展示」卡片控制两张侧栏小卡的显隐与刷新间隔(间隔对两卡同时生效):

保存 PAT 后,模型选择器出现 Qoder 分组,模型名后跟随价格倍率(x0.5、x0 等):

「上下文窗口」页按模型列出容量与最大声明值,顶部是「使用上游声明的最大上下文窗口」开关:
国内版:

国际版:

两张变体卡片均提供「模型开关」页(位于「上下文窗口」与「额度明细」之间):支持即时搜索模型、单独开启/关闭指定模型,以及全选后一键「批量开启」或「批量关闭」;关闭的模型不会出现在模型选择器中。
支持在设置卡片中开启每日自动签到,并自定义各版本的签到时刻(默认 10:00,按 UTC+8);在卡片底部的「签到日志」面板中查看签到流水、立即签到或清空日志:

前置条件:
0.1.5-rc.1 及以上(本插件 peer 依赖 @deepseek-ai/* ^0.1.5-rc.1 线);^22.19.0 || >=24.0.0(package.json engines);# 从 GitHub 安装(推荐)
dsh plugin --profile web add github:masknull/dsh-qoder-connect
# 或已发布 npm 后从 npm 安装
dsh plugin --profile web add dsh-qoder-connect
按你使用的 profile 换 --profile 的值(web / desktop / tui,如 dsh plugin --profile desktop add dsh-qoder-connect)。装到哪个 profile,数据就落在哪个 profile 目录里,web / desktop / tui 各自独立。没有浏览器卡片的终端环境(TUI)下依旧可用 CLI 保存 PAT 并驱动模型;设置卡片与侧栏额度卡需要 Web/Desktop 界面。
(卡片内也有同样指引:「请先在 qoder.com.cn 的账号设置(账号 → 个人访问令牌)中生成 PAT,再粘贴到下方输入框。」)
DSH → 设置 → 插件 → 对应卡片,展开后把 PAT 粘贴进密码输入框,点「保存」(期间显示「校验并保存中…」)。保存动作会先经 Qoder 校验令牌对该变体的区域有效,失败则不落盘并提示「PAT 无效或已过期 — 请到账号设置重新生成后再试。」两版各填各的卡片即可两组并存。
不方便走卡片的场景可用环境变量:未保存过凭证文件时插件读取 env 兜底——
| 变体 | 环境变量 |
|---|---|
qoder(china) |
QODER_CN_PERSONAL_ACCESS_TOKEN |
qoder-global |
QODER_PERSONAL_ACCESS_TOKEN |
优先级为 文件 > env:只要该变体保存过有效的凭证文件,环境变量就不再生效(保存的令牌永远压过游离的 env)。env 来源的令牌在卡片上标为「来源:环境变量」,且没有保存时间。
插件的全部自有文件收在数据目录一处:<profile>/.dsh-qoder-connect/(凭据在根,可重建的缓存在 state/ 子目录,「清缓存」永远碰不到凭据):
<profile>/.dsh-qoder-connect/
├── .qoder-auth.json # 中国版 PAT({version:2, pat, region, savedAt})
├── .qoder-global-auth.json # 国际版 PAT
├── checkin-status.json # 签到状态与历史日志记录
└── state/
├── .qoder-catalog.json # 中国版按账号保存的模型目录
├── .qoder-global-catalog.json
├── .qoder-probe.json # 中国版推理档位探测记录
├── .qoder-global-probe.json
├── .qoder-host-heartbeat.json # host 心跳(doctor 判断宿主是否在跑)
└── .qoder-machine-id # 传输层机器标识种子(不落 ~/.qoder)
数据目录按 profile 归属(在 $DSH_HOME/profiles/ 下找声明本插件的 profile),无法确定时回落到 Harness home;环境变量 DSH_QODER_DATA_DIR 可显式覆盖。
pnpm install
pnpm run build # tsdown 产出 lib/(宿主 bundle + client bundle)
pnpm test # vitest run(tests/**/*.spec.ts)
pnpm run test:qoder # node --test(tests/qoder/*.test.ts,Qoder 传输层用例)
pnpm run typecheck # tsc:宿主 + client 两份 tsconfig
pnpm run check # typecheck + test + test:qoder + build 一条命令全过
Qoder 传输层的上游 node:test 用例已移植进 tests/qoder/(用 pnpm run test:qoder 跑,原件 reference-qoder-tests/ 已移除);命令以 package.json scripts 为准。
本项目按 MIT 许可发布,双上游出处详见 NOTICE。本仓库与 Qoder、DeepSeek 官方均无关联,是社区适配器——非官方实现。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。