deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:modesthub/dsh-sensenova-freeapi
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
简体中文 | English
dsh-sensenova-freeapi 是一个非官方的 DeepSeek Harness(DSH)LLM 提供商插件,基于一切皆插件(everything-is-a-plugin)架构注册 sensenova 提供商路由,对接 SenseNova(OpenAI 兼容 API)。它内置多账户 API-Key 轮换、运行态 / 阻塞态双列表状态机、实时模型目录与 Models 页设置面板,把渠道限流从「错误轰炸」变成「稳定服务」。
参考实现:
@mars-sea/dsh-commandcode-provider(MIT)。本插件只保留多账户连接能力;登录流程、用量面板、套餐窗口、命令行工具均已裁剪。
到 https://platform.sensenova.cn/login 注册并登录(支持手机号 / 邮箱)。
进入控制台 https://platform.sensenova.cn/console,在「API Key 管理」中创建密钥。每个 API Key 对应一次限流额度,多申请几把即可显著提升吞吐。
📷 账户配置界面示意(控制台申请多个 API Key 的位置):
SenseNova 的限流额度是账户级 / 端点级的(同一账户内多把 Key 共享同一个额度桶),因此把 API Key 分散到 ≥ 2 个账户才能绕开单账户瓶颈。
在 Models 页配置 accounts[] 时,把不同账户的 Key 交替排列,例如有 2 个账户 A、B,则填写顺序为:
A1 B1 A2 B2 A3 B3 …(即 121212 交替)
这样每把 Key 之间天然错位,轮换时不会在同一账户内打转,显著降低单账户触顶概率。
以下结论来自垃圾站长程实测校准(2026-09),按首选用途排序:
| 模型 | 能力 / 说明 | 推荐度 |
|---|---|---|
deepseek-v4-flash |
首选。DeepSeek V4 Flash(0731),任意时段使用都只比 DeepSeek 官方 API 慢一点点;低成本、1M 上下文、支持思考/工具调用 | ⭐⭐⭐⭐⭐ |
sensenova-6.8-flash-lite |
6.8-flash-lite 走轻量专属额度池,真视觉(读图、截图唯一可靠)、墙钟最快(26.6× 提速) |
⭐⭐⭐⭐⭐(读图首选) |
kimi-k3 |
月之暗面旗舰多模态 Agent,原生态视觉 + 1M 上下文,适合长程编程/知识工作 | ⭐⭐⭐⭐ |
glm-5.2 |
智谱长程 Agent,持续吞吐最高(比 deepseek-flash 快 201%、延迟快 45%),但无视觉(读图会幻觉) |
⭐⭐⭐⭐(纯文本/长程) |
⚠️ deepseek-flash(DeepSeek V4.1 Flash) |
不建议:实测高峰期很慢、低峰期也只能达到官网 API 一半速度及以下 | ❌ |
💡 一句话结论:日常/代码/Agent 用
deepseek-v4-flash;要读图用sensenova-6.8-flash-lite;追求极限文本吞吐且不读图用glm-5.2。不要用deepseek-flash(V4.1)。
🔭 搭配推荐(视觉辅助):主模型用
deepseek-v4-flash(快且稳、成本低),图片识别交给视觉辅助插件 —— 安装dsh-sensenova-vision-aid后,收到图片识别请求会自动派生子 agent 切换到 SenseNova 视觉模型(sensenova-6.8-flash-lite→deepseek-flash→kimi-k3故障转移),并自动复用本插件同一把 key(默认reuseFreeapiCredentials=true,无需再配第二把 key)。最合适的组合:deepseek-v4-flash处理文本/代码/Agent + vision-aid 辅助视觉,又快又好。
SenseNova 渠道对单 key 存在 TPM / RPM 并发与配额限制,瞬时超限会抛 429。多数插件的做法是报错 + 重试,连续限流时陷入正反馈死锁:计数只在 2xx 清零 → 短路导致零成功 → 计数永不清零 → 短路永不解除 → 只能重启进程。
本插件换了一个思路:限流不是事故,是运行常态。用两个显式列表管理每一把 API Key 的状态:
三条不可让步的性质(与旧「全池短路」机制的本质区别):
为什么必须探测恢复:Agent 请求只会选中运行态的 Key,阻塞态的 Key 不会被任何请求命中。若无人试探,它就永远回不来——调度器每隔
probeInitialMs(默认 15s,恰好量级匹配请求数桶恢复周期)用一次最小请求探一下,成功即复活。
1 个默认账户 + 多个额外账户(accounts[],各配独立 apiKeyEnv 凭据引用),共享同一 base URL。exclude(401 或配额轮换)的 Key 会从下一位置环回,避免旧实现「前两把反复、第 3+ 把轮不到」的问题。本项目所有关键参数都不是拍脑袋,而是在长程运行中实测校准的:
| 实测项 | 结论 | 依据 |
|---|---|---|
| Retry-After 上限 | 提到 60_000ms(原 3000ms 与 TPM 60s 窗口量级不符) |
长程实测 |
| 排队超时 | 默认 60s,与 TPM 窗口对齐,排队必须有界 | design D4/D6 实测 |
| 双列表状态机 | 取代「全池饱和短路」正反馈死锁 | 重构 |
| 环回轮换修复 | 排除项后必须从下一位置环回 | 9265 条 429 日志统计 |
| 探测间隔 | 15s 起、×2 退避、60s 封顶 | 实测 |
time / model / error.code / account fingerprint / retryFloorMs / probeHits / poolRunning / poolBlocked / rotated / attempt。# 本地路径装入(推荐用于接入 DSH 验证)
dsh plugin --profile <name> add /path/to/dsh-sensenova-freeapi
# GitHub 发布后
dsh plugin --profile <name> add github:modesthub/dsh-sensenova-freeapi
# 或 npm 发布后
dsh plugin --profile <name> add dsh-sensenova-freeapi
然后在「模型」页配置 SenseNova:
SENSENOVA_API_KEYhttps://token.sensenova.cn/v1| 字段 | 类型 | 默认 | 含义 |
|---|---|---|---|
apiBase |
string | https://token.sensenova.cn/v1 |
所有账户共享的 base URL |
apiKeyEnv |
credential-ref | SENSENOVA_API_KEY |
默认账户凭据引用 |
accounts[] |
array | [] |
额外账户:{ id, label, apiKeyEnv } |
activeAccount |
string | "" |
首选账户 id;空 = 自动 / 首个可用 |
quotaRotation |
bool | false | 配额类 429 是否粘性换 Key |
concurrency |
int | 1 | 每 Key 并发闸上限(达限排队 FIFO) |
queueTimeoutMs |
int | 60000 | 排队等待上限 |
poolPolicy.kickThreshold |
int | 2 | 连续多少次 tpm 限流踢出运行态 |
poolPolicy.probeInitialMs |
int | 15000 | 首次探测间隔 |
poolPolicy.probeBackoffFactor |
int | 2 | 探测失败退避倍率 |
poolPolicy.probeMaxMs |
int | 60000 | 探测间隔上限 |
poolPolicy.capacity |
int | 10 | 池容量上限 |
errorLog |
bool | true | 是否记录限流事件到错误日志 |
API Keys 一律经 DSH 凭据服务存储,永不写入日志、永不发送给模型。
pnpm install
pnpm run typecheck
pnpm run build # tsdown → lib/
pnpm test # node --import tsx --test tests/**/*.test.ts
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。