为自定义供应商补全上下文与思考等级
28.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add IQzhan/dsh-model-caps该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 52 处,展示前 41 条)
- 读取本地文件build-model-caps.mjs:91
readFile(CORE, 'utf8'), - 读取本地文件build-model-caps.mjs:92
readFile(SYNC, 'utf8'), - 读取本地文件build-model-caps.mjs:93
readFile(HOST, 'utf8'), - 读取本地文件build-model-caps.mjs:94
readFile(CLIENT, 'utf8'), - 写入本地文件build-model-caps.mjs:163
await mkdir(OUT_PACKAGE, { recursive: true }) - 删除本地文件递归build-model-caps.mjs:164
await rm(join(OUT_PACKAGE, 'lib'), { recursive: true, force: true }) - 删除本地文件build-model-caps.mjs:165
await rm(join(OUT_PACKAGE, 'cordis.patch.yml'), { force: true }) - 写入本地文件build-model-caps.mjs:166
await mkdir(join(OUT_PACKAGE, 'lib'), { recursive: true }) - 写入本地文件build-model-caps.mjs:167
await writeFile(join(OUT_PACKAGE, 'package.json'), `${JSON.stringify(manifest, null, 2)}\n`, 'utf8') - 写入本地文件build-model-caps.mjs:168
await writeFile(join(OUT_PACKAGE, 'README.md'), [ - 写入本地文件build-model-caps.mjs:180
await writeFile(join(OUT_PACKAGE, 'cordis.patch.yml'), bundlePatch, 'utf8') - 写入本地文件build-model-caps.mjs:181
await writeFile(join(OUT_PACKAGE, 'lib', 'index.cjs'), `${hostModule}\n`, 'utf8') - 读取本地文件build-model-caps.mjs:192
if (!existsSync(join(dir, 'cordis.patch.yml'))) continue - 读取本地文件build-model-caps.mjs:196
const existing = await readlink(link).catch(() => undefined) - 删除本地文件递归build-model-caps.mjs:199
await rm(link, { recursive: true, force: true }) - 删除本地文件递归build-model-caps.mjs:201
await rm(link, { recursive: true, force: true }) - 执行外部命令固定命令publish-via-actions.mjs:24
const run = spawnSync('gh', args, { - 执行外部命令来自配置/变量publish-via-actions.mjs:37
const run = spawnSync(npm, ['view', PACKAGE_NAME, 'version'], { - 执行外部命令来自配置/变量run-tests.mjs:18
const run = spawnSync(process.execPath, [file], { encoding: 'utf8' }) - 读取本地文件run-tests.mjs:28
const readme = readFileSync(new URL('./README.md', import.meta.url), 'utf8') - 读取本地文件run-tests.mjs:29
const zh = readFileSync(new URL('./README.zh.md', import.meta.url), 'utf8') - 读取本地文件test-client.mjs:14
clientSource = readFileSync(clientPath, 'utf8') - 读取本地文件test-client.mjs:20
const source = readFileSync(join(ROOT, 'dsh-model-caps.client.js'), 'utf8') - 读取本地文件test-docs.mjs:12
check('core docs exist', DOCS.filter((name) => !existsSync(join(ROOT, name))), []) - 读取本地文件test-docs.mjs:14
const en = readFileSync(join(ROOT, 'README.md'), 'utf8') - 读取本地文件test-docs.mjs:15
const zh = readFileSync(join(ROOT, 'README.zh.md'), 'utf8') - 读取本地文件test-docs.mjs:48
existsSync(join(ROOT, 'docs', 'images', 'models.png')), - 读取本地文件test-docs.mjs:49
existsSync(join(ROOT, 'docs', 'images', 'thinking.png')), - 读取本地文件test-docs.mjs:51
check('publish workflow exists', existsSync(join(ROOT, '.github', 'workflows', 'publish.yml')), true) - 读取本地文件test-package.mjs:32
/^ *import /m.test(readFileSync(join(ROOT, 'package', 'lib', 'index.cjs'), 'utf8')), false) - 读取本地文件test-package.mjs:34
const clientSource = readFileSync(join(ROOT, 'package', 'lib', 'client.cjs'), 'utf8') - 读取本地文件test-package.mjs:38
const patch = readFileSync(join(ROOT, 'package', 'cordis.patch.yml'), 'utf8') - 读取本地文件test-portability.mjs:17
const missing = named.filter((name) => !existsSync(join(ROOT, name))) - 读取本地文件test-portability.mjs:19
const files = named.filter((name) => existsSync(join(ROOT, name))).map((name) => join(ROOT, name)) - 读取本地文件test-portability.mjs:20
for (const entry of readdirSync(ROOT)) { - 读取本地文件test-portability.mjs:27
if (existsSync(join(ROOT, artifact))) files.push(join(ROOT, artifact)) - 读取本地文件test-portability.mjs:45
if (statSync(file).isDirectory()) continue - 读取本地文件test-portability.mjs:46
const text = readFileSync(file, 'utf8') - 写入本地文件test-support.mjs:13
mkdirSync(SCRATCH, { recursive: true }) - 删除本地文件递归test-support.mjs:19
rmSync(path, { recursive: true, force: true }) - 执行外部命令来自配置/变量verify.mjs:4
const run = spawnSync(process.execPath, [step], { stdio: 'inherit' })
扫描于 2026/11/1(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 补全上下文窗口
- 补全输出上限
- 补全思考等级
给自定义 DeepSeek Harness 服务商补上空白的上下文窗口、输出上限、思考等级与思考线协议兼容。
README
由 DeepSeek 最新模型翻译生成dsh-model-caps
English · 简体中文
一个轻量的 DeepSeek Harness 插件。它给自定义供应商补上空白的上下文窗口、输出上限、思考等级,以及思考线协议相关的 compat,这样在对话里选模型时就和内置供应商一样,并能正确发包——不用再去 settings.yaml 里手写这些项。已经写过的值会保留。不会增删模型。
设计真源: DESIGN.zh.md。默认轨是 OpenAI 兼容;Anthropic 由用户自选。一个自定义路由只有一种 api。
怎么用
装好后,打开对话,像选内置模型一样从自定义供应商里选模型即可。空白的容量和思考字段已经由插件补好。
自定义供应商出现在模型菜单
自定义供应商(上图里的 B.AI、dashscope)和别的路由排在同一份菜单里。换模型就在这里点;没有单独的设置页。
思考等级菜单
模型有思考等级表时,底栏会露出档位(Default / Low / High / Max …)。选一档即可;插件自动写入的 compat 会按当前 Completions 或 Anthropic 路由去对齐能发出的线协议。
手写的 compat、非标准线值、以及 reasoningEfforts: false 都不会动。
展开完整文档(README 剩余 1 节)
dsh-model-caps
English · 简体中文
一个轻量的 DeepSeek Harness 插件。它给自定义供应商补上空白的上下文窗口、输出上限、思考等级,以及思考线协议相关的 compat,这样在对话里选模型时就和内置供应商一样,并能正确发包——不用再去 settings.yaml 里手写这些项。已经写过的值会保留。不会增删模型。
设计真源: DESIGN.zh.md。默认轨是 OpenAI 兼容;Anthropic 由用户自选。一个自定义路由只有一种 api。
怎么用
装好后,打开对话,像选内置模型一样从自定义供应商里选模型即可。空白的容量和思考字段已经由插件补好。
自定义供应商出现在模型菜单
自定义供应商(上图里的 B.AI、dashscope)和别的路由排在同一份菜单里。换模型就在这里点;没有单独的设置页。
思考等级菜单
模型有思考等级表时,底栏会露出档位(Default / Low / High / Max …)。选一档即可;插件自动写入的 compat 会按当前 Completions 或 Anthropic 路由去对齐能发出的线协议。
手写的 compat、非标准线值、以及 reasoningEfforts: false 都不会动。
它写什么
自定义供应商是 llm-pi-ai 里同时带有 api、baseURL 和至少一个模型的路由。openai、google 这种目录路由不动。
每个字段的空白按此顺序合并(见 DESIGN.zh.md §5):
1. 供应商自己的 GET {baseURL}/models。
2. pi-ai 内置目录(宿主里有时):按规范化 id 匹配,优先同 api,否则厂商行;再投影到当前路由协议。可叠加 maker 的 Completions thinkingFormat;仅有 Anthropic 命中时只补菜单,不伪造 deepseek 线。
3. models.dev 厂商行补剩余空隙(无内置命中时还有薄方言兜底)。
id 查找:精确 → 去掉 scheme: / 取路径叶 → 剥日历日期 → 剥后面还有段名的 vN.M(deepseek-v4.1-flash → deepseek-v4-flash;裸 mimo-v2.5 不剥)。FlashX 与 Flash 不互相折叠。
写入:contextWindow、maxTokens、空白 name、空白 input(text / image)、reasoningEfforts、自动 compat。目录形自动填可刷新。不写路由级思考预算。
安装
从 npm 安装,然后重启 dsh web:
dsh plugin --profile web add dsh-model-caps
需要 Node 24 或更高版本。挂载时会补一次;之后在设置里保存供应商,也会再补一次。没有单独的设置页。
在本仓库里开发,继续用本地链接,不要用 npm 上的包盖掉它:
node build-model-caps.mjs
dsh plugin --profile web add ./package
更新 / 卸载
npm 安装之后:
dsh plugin --profile web update dsh-model-caps
然后重启 dsh web。在本仓库里改代码,则重新构建本地链接:
git pull && node build-model-caps.mjs
卸载:dsh plugin --profile web remove dsh-model-caps。手写线值和 compat 不会被改。只含标准等级名的思考等级可能会被刷新;卸掉插件不会把这次刷新撤回去。
发布新版本
node publish-via-actions.mjs 1.0.1
这会在 GitHub 上启动 publish.yml,并等到跑完。版本号要比 npm 上的更高。也可以自己打开 Actions 手动跑 publish.yml。
第一次使用前,到 npm 这个包的设置里添加 Trusted Publisher:用户 IQzhan,仓库 dsh-model-caps,工作流文件名 publish.yml,并允许直接 npm publish。
目录结构
| 路径 | 作用 |
| dsh-model-caps-core.js | 纯策略:索引、匹配、投影、合并、planMutations |
| dsh-model-caps-sync.js | IO:listing、models.dev、可选内置目录、mutate |
| dsh-model-caps.host.js | Cordis 挂载与触发 |
| dsh-model-caps.client.js | 不画设置页 |
| build-model-caps.mjs | 构建 package/ |
| DESIGN.md / DESIGN.zh.md | 设计真源 |
| docs/images/ | README 截图 |
| publish-via-actions.mjs | 经 Actions 触发并等待 npm 发布 |
测试
node verify.mjs
8 个套件。 测试临时文件写在仓库内 .tmp/。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
IQzhan/dsh-model-caps
为自定义供应商补全上下文与思考等级
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1