🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

思考等级管理 GaoHu1997/dsh-model-think-level

DeepSeek Harnessv1.1.8
GaoHu19974 天前有提交已提供中文文档扫描:含敏感能力

为 DSH 的第三方模型补齐思考等级:在官方 Models 页每个模型行注入 Thinking…

32.8/100
综合分
4
GitHub 星标
781
npm 周下载
—/5
用户评分

数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-model-think-level
npm 源 · dsh-model-think-level 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · security
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-model-think-level @ 1.1.8
✓Node 引擎要求 ^22.19.0 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/23 06:16:56

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 62 处,展示前 25 条)
  • 读取本地文件
    lib/index.js:191
    text = readFileSync(file, "utf8");
  • 写入本地文件
    lib/index.js:221
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:223
    writeFileSync(temporary, `${JSON.stringify(document, null, 2)}
  • 写入本地文件
    lib/index.js:226
    renameSync(temporary, file);
  • 删除本地文件
    lib/index.js:229
    unlinkSync(temporary);
  • 读取本地文件
    lib/index.js:639
    return parseKeyServes(JSON.parse(readFileSync2(file, "utf8")));
  • 写入本地文件
    lib/index.js:645
    mkdirSync2(dirname2(file), { recursive: true });
  • 写入本地文件
    lib/index.js:647
    writeFileSync2(temporary, `${JSON.stringify(document, null, 2)}
  • 写入本地文件
    lib/index.js:650
    renameSync2(temporary, file);
  • 删除本地文件
    lib/index.js:653
    unlinkSync2(temporary);
  • 读取本地文件
    lib/index.js:742
    return parseUiOrder(JSON.parse(readFileSync3(file, "utf8")));
  • 删除本地文件
    lib/index.js:756
    unlinkSync3(temporary);
  • 发起网络请求
    lib/index.js:1277
    const send = probe.send ?? ((input, init) => fetch(input, init));
  • 读取本地文件
    lib/index.js:3911
    if (existsSync(candidate)) return candidate;
  • 读取本地文件
    lib/index.js:3920
    return adapterSourcePatched(readFileSync4(path, "utf8")) ? "patched" : "stock";
  • 读取本地文件
    lib/index.js:3933
    if (!existsSync(manifest)) continue;
  • 删除本地文件
    lib/index.js:4098
    unlinkSync4(temporary);
  • 删除本地文件
    lib/index.js:6058
    unlinkSync5(temporary);
  • 请求外部主机www.w3.org
    lib/client.js:7
    "use strict";var _r=Object.defineProperty;var Ip=Object.getOwnPropertyDescriptor;var Op=Object.getOwnPropertyNames;var Dp=Object.prototype.hasOwnPrope
  • 发起网络请求
    lib/client.js:7
    "use strict";var _r=Object.defineProperty;var Ip=Object.getOwnPropertyDescriptor;var Op=Object.getOwnPropertyNames;var Dp=Object.prototype.hasOwnPrope
  • 请求外部主机www.w3.org
    lib/client.js:4421
    `;var Zn="bre:endpoints-changed",er="bre:settings-changed",tr="bre:balance-changed";var ir=require("react"),_d=require("react-dom");var k=require("rea
  • 请求外部主机u2026
    lib/client.js:4421
    `;var Zn="bre:endpoints-changed",er="bre:settings-changed",tr="bre:balance-changed";var ir=require("react"),_d=require("react-dom");var k=require("rea
  • 请求外部主机u2026
    lib/client.js:4421
    `;var Zn="bre:endpoints-changed",er="bre:settings-changed",tr="bre:balance-changed";var ir=require("react"),_d=require("react-dom");var k=require("rea
  • 请求外部主机www.w3.org
    lib/client.js:4421
    `;var Zn="bre:endpoints-changed",er="bre:settings-changed",tr="bre:balance-changed";var ir=require("react"),_d=require("react-dom");var k=require("rea
  • 发起网络请求
    lib/client.js:4421
    `;var Zn="bre:endpoints-changed",er="bre:settings-changed",tr="bre:balance-changed";var ir=require("react"),_d=require("react-dom");var k=require("rea
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:www.w3.org、u2026

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-model-selection@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-launch-environment
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 注入思考等级选项
  • 补齐第三方模型思考等级
v2.3.02026-10-30
· v2.3.0 · 生图 · 统一超时预算(deadline):一次 generate_image 调用的凭据读取、参考图读取、全部参数回退重试、响应体/图片下载和附件保存共享同一个总预算(配置页的超时下拉),重试不重新计时;超时或停止会向支持取消的依赖传递取消信号(忽略信号的外部操作与已被上游接受的任务不保证撤销)。 · 工具注册失败原因直接上卡:「生图服务」配置页不再有独立工具状态卡;注册失败时卡片顶部显示宿主给的原因(GET /dsh-model-think-level/image-config 的 tool.error),成功注册时不显示提示。 · 卡片命名时序收窄:图片卡片按 generate_image 立即注册,宿主报了撞名回落的别名后再跟随改名,不再依赖「页面打开时工具已注册成功」。 · 旧版「生图 MCP」清理增强:cordis.patch.yml 里带旧标记注释的块和没有标记的裸 - id: dsh-image-mcp 条目都能清掉;同一块里混插他人插件条目时不动它。 · 跨机同步 · 供应商启用开关与排序一起镜像进 ui-order.json;采纳文件里的停用集合时写回 localStorage,刷新/重开浏览器后不再回滚。 · 每次改动带严格递增时间戳,同一毫秒内的多次改动重启后也不会互相覆盖。 · 文件比本页新时立即采纳;本页时间戳不新时服务器回 409 并带回最新文档,旧标签页无法把别人的新顺序或开关回滚回去。 · 页面每分钟、以及标签页/窗口重新获得焦点时自动重新拉取,另一台机器的改动无需重启即可出现。 Full Changelog:
v1.1.72026-10-20
· 修复 · 供应商列表按钮保存后闪烁:插件保存设置引发的 host 重载会把收起行的 编辑/删除 按钮短暂置灰,列表因此"按下去是好的、保存完变灰又回来"。新增 settle-guard:写回前记住每行当时可用的按钮角色,重载期间保持其绘制不透明度(disabled 属性不动,按钮该灰多久还是多久),重载重新启用即释放;行卸载自动脱离看守,永久禁用按钮不受影响。 · Headers 页签模式保存确认:页签里保存后卡片收起,内联成功消息会随卡片一起消失;现在确认文案改走与 host 保存相同的顶部气泡(fold 模式保持原地显示)。 · 菜单弹层透底:MenuSurface 把填充与背景模糊画在首个空 aria-hidden 子层里;去重隐藏官方列表时不再误删这一层——否则弹层失去 ~58% 不透明填充与模糊,聊天内容直接透出。 Full Changelog:
v1.1.62026-10-19
· 新功能 · 长缓存保留开关:供应商高级配置在请求头下新增独立的「其他配置」一节,带「长缓存保留」开关,写路由 profile 的 compat.supportsLongCacheRetention(BODY 字段——请求头加不进也删不掉,只有这个 compat 开关能关)。关掉后 prompt_cache_key 与 prompt_cache_retention 不再发送,短时缓存不受影响。仅协议提供该开关时显示;新建供应商卡片(无可写路由)不显示。写入是立即生效的一步操作,只写该叶子键、不覆盖 compat 其他开关 · 模型页推理等级去重:插件编辑器所在的行收回官方自带的「推理等级」编辑区(0.2.1-rc.2 的 ModelReasoningEfforts,按官方类名主干 modelReasoning 定位,卸载时归还),同一字段只留一份控件 · 修复 · composer 菜单:识别上游直接开进模型列表的 popover 表面(role="group",历史会话已存选择解析不到时的形态)并照常挂副本切换器;官方搜索行所在面板不再重复挂第二个搜索框 · 变更 · ops.ts:新增 LONG_CACHE_FIELD / LONG_CACHE_PROTOCOLS 与 ProviderLongCache 读数(per-key 读原始层、区分显式值与继承值);供应商级设置叶子写入回复统一为 ProviderSettingReply · 测试:menu-discovery 补 inline 模型列表面板形态;新增 tests/long-cache.spec.tsx Full Changelog:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
DSH 模型思考等级 为 DSH 的第三方模型补齐思考等级:在官方 Models 页每个模型行注入 Thinking 开关和强度/模态编辑器(插件编辑器所在的行会隐藏官方自带的「推理等级」编辑区,同一个字段只留一份控件),在输入框模型菜单加供应商→模型选择器、视觉徽章与等级行,并带搜索、拖拽排序、供应商启用开关;以及按路由接管请求头与 user-agent。 模型选择器 供应商与模型选择器思考等级与模型搜索 - 每个模型行右侧会显示已声明的上下文窗口(如 128K、1M,留空则不显示),取自模型上配置的「上下文窗口」字段;该字段与「最大输出」都支持 K/M/B/T 简写(如 200K、1M),也接受纯数字与千分位写法。 - 被标记为「生图」的模型同样出现在选择器中:行尾多一个生图标记(画框 + 星芒,与视觉/思考徽章同组),供应商计数也把它计入。 供应商配置 供应商配置面板模型能力配置供应商高级配置 输入模态与生图 模型行的「输入模态」有三档:文本、图片、生图。三档互斥——勾选「生图」即把模型标记为图像生成模型(写入模型行专属的 inputImageGen 标记,同时清除文本/图片声明),输入框的模型切换列表照常展示它并加上生图标记;勾选文本或图片则回到普通对话模型并清除生图标记。
展开完整文档(README 剩余 1 节)
DSH 模型思考等级

为 DSH 的第三方模型补齐思考等级:在官方 Models 页每个模型行注入 Thinking 开关和强度/模态编辑器(插件编辑器所在的行会隐藏官方自带的「推理等级」编辑区,同一个字段只留一份控件),在输入框模型菜单加供应商→模型选择器、视觉徽章与等级行,并带搜索、拖拽排序、供应商启用开关;以及按路由接管请求头与 user-agent。

模型选择器

供应商与模型选择器思考等级与模型搜索

- 每个模型行右侧会显示已声明的上下文窗口(如 128K、1M,留空则不显示),取自模型上配置的「上下文窗口」字段;该字段与「最大输出」都支持 K/M/B/T 简写(如 200K、1M),也接受纯数字与千分位写法。
- 被标记为「生图」的模型同样出现在选择器中:行尾多一个生图标记(画框 + 星芒,与视觉/思考徽章同组),供应商计数也把它计入。

供应商配置

供应商配置面板模型能力配置供应商高级配置

输入模态与生图

模型行的「输入模态」有三档:文本、图片、生图。三档互斥——勾选「生图」即把模型标记为图像生成模型(写入模型行专属的 inputImageGen 标记,同时清除文本/图片声明),输入框的模型切换列表照常展示它并加上生图标记;勾选文本或图片则回到普通对话模型并清除生图标记。「自动获取思考等级」与后台自动补全同样会识别生图模型:端点列表的输出模态(如 output_modalities: ["image"])、知识库与模型命名(gpt-image、dall-e、flux、seedream 等)都会被识别并自动打上该标记。

指纹检测

指纹页签的每个检测结果卡可以逐行折叠/展开(默认收起):点行头的箭头或模型名即可展开,徽章、证据行与检测按钮始终在场。行头只留「N / 3 题」的进度,相似度等明细放在展开的结果卡里。

兼容字段与已有配置

1.1.4 起不再提供 thinkingTokenBudgetField、vllmPriority、supportsMaxOutputTokens 的专用编辑控件。已有值仍由 DSH 的 pi-ai 适配器使用;修改模型的思考档位或输入模态时,插件会保留这些值和其他手动兼容配置,避免覆盖供应商的定制行为。

需要调整旧值时,先备份当前 profile 的 cordis.patch.yml(位于 DSH 数据目录的 profiles/<profile>/),找到 llm-pi-ai 对应供应商、模型行的 compat,仅修改或删除所需字段,保存后重新加载该 profile:

- thinkingTokenBudgetField:令牌预算的请求字段名,可设为 thinking_token_budget、thinking_budget 或 thinking_budget_tokens。删除后使用默认字段;启用令牌预算的模型在后续适配或保存时可能重新补入 thinking_token_budget。若端点不支持令牌预算,应将 supportsThinkingTokenBudget 设为 false。
- vllmPriority:删除后不再发送定制的 vLLM 优先级。
- supportsMaxOutputTokens:删除后恢复适配器默认行为;保留 false 会继续关闭对应输出令牌参数。

不要删除整个供应商配置,也不要将包含 API key 的配置文件贴到公开 issue。

多密钥与按模型分流

同一个供应商可以登记多把密钥,请求进来时按「模型 → 密钥」自动分流:

- 密钥按列表顺序排队。一个模型如果多把密钥都能访问,先走列表靠前的那把;某把密钥对某模型请求失败时:401/403/408/429/5xx 自动换下一把能访问该模型的密钥重试;响应体说明「这个模型(或这个分组)没有它」时也换下一把——model_not_found、Model "…" is not supported by any configured account in this group、no available channel,以及中文的「模型不存在/不支持/无可用渠道」等文案都算,因为这说的是这把密钥所在的上游分组没有这个模型,换一把密钥可能就有。裸 404(如 404 page not found)与 400/422 这类请求本身的问题仍然不重试,立即返回。所有密钥都拒绝同一个模型时,返回的错误里会补一句「这个供应商的全部 N 把密钥都拒绝了模型 X,通常是各密钥所在的分组不同」,而不是只留一句看不懂的 404。被拒的那把密钥会记住这次失败(时长取自 Retry-After,没有就按「模型没有」10 分钟、「太频繁」60 秒、「额度耗尽」30 分钟、「连接被拒」60 秒推算,重复失败翻倍并封顶),下次请求自动排到健康密钥后面;「模型没有」这条只冷却这一对(密钥, 模型),同一把密钥的其它模型照常由它服务。冷却只是排序,密钥永远不会被真正丢弃——全体都在冷却时仍按原顺序尝试。
- 密钥能访问哪些模型在密钥面板的「模型」里手动圈定(候选就是该供应商已添加的模型,做成多选胶囊),也可留空表示不限制。插件不会主动探测 API 支持哪些模型;需要更多模型时用模型页的「获取模型」手动读取并勾选,见下文。
- 未圈定模型清单的密钥视为「通吃」,可以服务任何模型;圈定后只服务清单内的模型。
- 除了手写清单,插件还会记住每把密钥各自的目录读到过什么:宿主读取目录(模型页「获取模型」)时,插件按密钥逐把读取并把结果记在 key-index.json 同目录的 key-serves.json,只用于排序与提示,不写入你的清单。规则是「同一供应商下,别的密钥的目录里有这个模型、而这把没有」→ 这把不再作为该模型的候选;只有这一把的目录里有 → 它优先;没有任何密钥列出过(或还没读过)→ 当作未知,照旧都试。密钥面板的「模型」表单会显示这层观察结果,并给一个「用探测结果」按钮把它填进清单。某把密钥读取失败=未知,绝不会被当成「它什么模型都没有」;文件损坏时按空文件处理。
- 每把密钥行首有一个圆形对勾开关:亮起表示参与路由,灰色表示暂停使用。停用只是把密钥移出分流池,别名、模型清单与协议指定全部保留,重新点亮即恢复;最后一把启用中的密钥不允许停用(否则请求会回落到适配器自身的单密钥路径,仍然用刚被停用的那把签名)。
- 插件自身元数据保存在 DSH 数据目录的 dsh-model-think-level/key-index.json,只记录引用、别名、模型清单、协议指定、各协议族地址与启停状态,绝不保存密钥值(密钥值始终由 DSH 凭据库保管)。
- 新增供应商的表单在官方密钥输入框下方也带这套卡片式密钥列表:草稿密钥先暂存在本页,点「创建」供应商落库后自动写入,第一把草稿密钥自动成为启用密钥。挂载前已敲进官方输入框的值保留在原处——官方框保存的仍是那把密钥,下方的列表只收之后新增的。刷新页面会丢弃草稿,与表单自身行为一致;若 id 撞上已存在的供应商,草稿不会写入对方。

按密钥切换协议与多地址

有些供应商同一把密钥只在某一种线上协议下可用(例如同一家既有 OpenAI Chat Completions 端点、又有 Anthropic Messages 端点)。插件支持在密钥面板里给每把密钥单独指定协议:

- 「这个密钥可用的协议」默认「自动(按模型)」——每个请求按模型自己所属的协议族挑线路:claude 系模型走 Anthropic 地址(前提是供应商配置了对应族的地址),其余模型沿用该供应商自身配置的协议。也可为密钥指定 Anthropic / Chat Completions / Responses 中的一个;菜单只列出供应商已配置地址的那些档(已钉的档即使地址后来被清掉也会保留显示),选「自动」即解除指定。
- 给某把密钥指定协议后,命中该密钥的请求会真正换用对应的线上协议(不只是换 URL/鉴权头:请求体也按该协议重新编码),由插件在 pi-ai 适配层重新派发到 @earendil-works/pi-ai 的对应协议实现。
- 供应商可以按「地址家族」配置最多两个基础地址:一个 OpenAI 系(Chat Completions / Responses 共用)、一个 Anthropic 系。供应商卡片「API 地址」下方的「更多端点」会展开当前协议家族之外的其他家族地址行。密钥指定协议后,就用与之匹配的那个地址;「自动」档的密钥按模型所属族使用对应地址,模型不属任何已配地址的族时仍使用供应商自身的 baseURL。
- 若密钥指定的协议跨了地址家族(如 OpenAI 系 ↔ Anthropic 系)而供应商没有配置该家族的地址,这条指定不会生效:请求仍用供应商自身的协议和 baseURL,只由这把密钥签名。把 OpenAI 格式的请求体发到 Anthropic 家族的地址只会换来网关的 404/400(模型根本不会被调用),所以宁可不换。这条在每次调用时都重新判定,供应商地址补上后同一个模型立刻换用该协议的密钥。「自动」档同理:某族没有地址就回落到供应商自身的协议。
- 自动挑错线路有记忆:某族地址对一个模型返回了「还没产生内容就失败」(典型如网关 404)后,这个 (供应商, 模型) 组合的自动解析不再挑那一族,改用供应商自身协议,直到插件进程重启;成功过的线路也会被记住并优先使用。钉选协议的密钥不受这层记忆影响——钉选表达的是用户的明确意图,其失败只说明凭据问题。
- 两把密钥指定了不同协议(或「自动」档解析出了不同协议)时,先试哪把不再取决于列表顺序,而是按「这个模型看起来属于哪一族」排:模型名(含 anthropic/、openai/ 这类前缀或裸名;族名记号——claude、gpt、codex 等——后跟 -///:/./_ 分隔符或位于名字结尾才算)与密钥协议的家族一致者优先,其次是以本密钥自身地址就能直接服务的,再次是不一致但能回落到供应商主地址的,最后是跨族且没有自己地址的。请求会从排第一的密钥的协议开始——切协议意味着换请求体形状,一次只切一把密钥,失败后按此顺序换下一把。
- 同一协议(wire)的密钥会被当作一个池:先把这个池里的密钥都用完再换 wire,因为同一把密钥失败通常与协议无关;跨 wire 的切换排在池之后,且只有在上一次失败的请求还没开始产生内容时才会做。
- 请求进行到一半再失败(已经开始流式输出、或调用方已经主动取消)不会触发换密钥——客户端已经消费了已经发出的内容,重放只会产生重复输出。
- 密钥面板的「模型」选择是可点选的模型清单(该供应商已添加的模型做成多选胶囊),选中的模型才交给这把密钥;下面的「全部模型」表示不做限制。该项与其它操作按钮一样只在悬停时显示。
- 模型页供应商卡片的「获取模型」是宿主自带的一次普通目录读取:读到的模型在官方勾选列表里供你取舍,勾选后才写入供应商。插件不替你探测目录,也不会自动把任何模型写进供应商或密钥清单;模型清单的每一次变化都来自你的手动勾选、手动添加或密钥面板的「模型」圈定。插件只是顺带观察这次读取里每把密钥各自返回了什么(见上一条),并在多把密钥的目录合并时做一次保守过滤:只有当这个供应商的每一把启用密钥都成功给出了目录、且没有任何一把列出某模型时,该模型不出现在合并结果里(有密钥没读到=情况未知,不过滤)。

插件不再支持 Gemini 原生协议或专用端点。旧的 google-generative-ai 密钥协议指定会按无效值回到「自动」,旧的 gemini 端点字段会在读取时忽略,并在下次保存插件密钥索引时移除。模型知识库中的 Gemini 思考档位仍保留,供支持 OpenAI 兼容协议的网关使用;不会根据 Gemini/Gemma 模型名自动切换到原生协议。若供应商主协议曾被手工设置为 google-generative-ai,仍需改回宿主支持的协议,并填写对应的兼容地址;插件不会自动改写宿主供应商配置。

开发与验证

使用 Node.js ^22.19.0 || >=24。依次运行 npm ci、npm run typecheck、npm test、npm run build、npm run check:package。测试最多并行 4 个 worker,以控制 DOM 测试的内存占用;仍使用 Vitest 默认超时。

check:package 检查 npm 实际打包清单中的入口、截图和声明文件依赖,CI 与发布流程都会执行。类型声明所引用的 DSH 可选 peer 由宿主开发环境提供,不会自动安装额外宿主插件。

更新模型知识表后,可运行 npm run docs:models 生成可查阅的模型列表。node scripts/wire-repro.mjs 使用当前安装的 pi-ai,向本地回显服务发送测试请求,无需供应商凭据。
预览分享卡片长什么样 ↓GaoHu1997/dsh-model-think-level
分享 · DeepSeek Harness Hub
GaoHu1997/dsh-model-think-level

为 DSH 的第三方模型补齐思考等级:在官方 Models 页每个模型行注入 Thinking…

回到顶部