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

思考强度配置 hytime/dsh-thinking-effort

DeepSeek Harnessv0.3.12
hytime2 天前有提交已提供中文文档扫描:含敏感能力

为 DSHDeepSeek Harness 的 llm-pi-ai 第三方模型补充可配置的思考强度档位,并设置子…

53.3/100
综合分
57
GitHub 星标
1,105
npm 周下载
—/5
用户评分

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

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

状态速览

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

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

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

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

✓npm 包@hytime/dsh-thinking-effort @ 0.3.12
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖要求 >=0.1.0-rc.7 · 最新 0.2.1-rc.5 兼容
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 17:39:52

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

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

读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
  • 写入本地文件
    lib/index.js:14
    writeFileSync(MARKER, JSON.stringify({
  • 读取本地文件
    lib/index.js:1480
    const info = await stat(path).catch((error) => {
  • 读取本地文件
    lib/index.js:2427
    read: (path) => readFile(path, "utf8")
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-settings@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 配置推理强度默认值
  • 协议感知网关兼容
  • 补充思考强度档位

DeepSeek Harness 插件,为 llm-pi-ai 模型提供推理强度默认值和协议感知网关兼容配置。

v0.3.122026-11-02
· 兼容性 · 版本映射窗口扩展至 <0.2.3-0。DSH 0.2.1-rc.5 的插件使用 API 面与 0.2.1-rc.4 保持兼容;Chat 推理正文 Slot 新增的 rawText 不由本插件使用。 · DSH 0.2.2-alpha.2 的 agent/request 不再允许改写推理强度。本插件在具备 agent.model.select() 的宿主上,于 agent/created 阶段为子代理记录配置档位;旧宿主继续使用 waterfall fallback。 · 适配 DSH 0.2.2-alpha.2:agent/request 不能再改推理强度。暴露 agent.model.select() 的宿主在 agent/created 阶段套用配置好的子代理默认值;旧宿主保留 waterfall fallback。 · Cordis 对等版本范围包含 4.0.6-alpha.1。本插件用到的设置 API 和模型目录接口仍兼容;18 个网关兼容字段全部可用。 · pi-ai 的 supportsMidConvoEffort: 'withhold' 不新增可配置字段。路由默认值现为 defaultContextWindow: 1000000 和 defaultMaxTokens: 128000;本插件只改显式声明的单模型 contextWindow 值。 · 新增的 ja/es/fr/de/ru/pt 语言不会与本插件自有命名空间冲突;宿主已注册的 ja 会被跳过。 · Web 验证 在干净的 DSH 0.2.2-alpha.2 Web 配置档上,父级用 sub2api/gpt-5.6-luna 以 max 委派给子级。子级在 modelSelection 和实际请求头里都用 high,成功完成,返回 SUBAGENT_SMOKE_OK。
v0.3.112026-10-20
· 修复 / Fixed · 修复子 agent 默认档位在请求已带父会话继承档位时被忽略:旧逻辑把任何已存在的档位当作显式指定而直接返回,导致父会话已选定档位、沿用其路由的子 agent 不使用配置值。未配置默认档位时仍不改动请求。 · Apply the configured subagent default effort to subagent requests that already carry the parent session's effort by inheritance: the guard treated any present effort as an explicit user choice, so a child that inherited a named effort on the same route never used the setting. An unset default still leaves the request untouched. · 设置页配色改为优先使用 DSH 主题令牌(--dsw-alias-* / --dsw-shadow-*),并在宿主未提供令牌时回退到原有 iOS 配色,因此启用主题插件后设置页不再与整体界面割裂。新增 foreground 令牌用于主按钮文字与开关滑块,避免在深色主题下用写死的白色。 · The settings page now prefers DSH theme tokens (--dsw-alias-* / --dsw-shadow-*) and falls back to the previous iOS palette when the host exposes none, so it no longer clashes with the rest of the interface once a theme plugin is enabled. A new foreground token drives primary-button text and the switch knob instead of a hard-coded white, which keeps them legible on dark themes. · 文档 / Documentation · 在「重要限制」补充说明:档位发送的值不一定代表 token 预算。部分网关把它当作提示词指令,会把 high / max / xhigh 折叠成同一行为、把 medium 当作不附加说明,或在参数缺失时回退到自己的默认值;这类网关通常要把 off 填成 none 才真正关闭思考。 · Document that a level's value is not necessarily a token budget: some gateways treat it as a prompt instruction, fold high / max / xhigh onto one behaviour, treat medium as saying nothing, or fall back to their own default when the parameter is absent. On those gateways an off value of none is usually what actually disables thinking. --- 本页在发布后补记了设置页主题令牌适配(PR #41)。该改动随本版本发布,但当时的 CHANGELOG 条目遗漏,此处补上以免升级者找不到外观变化的来源。 This page was amended after publication to record the settings-page theme-token change (PR #41). The change shipped in this version, but its changelog entry was missed at the time; it is recorded here so anyone wondering about the appearance change can trace it.
v0.3.102026-10-14
· 修复 / Fixed · 修复 Composer 在会话模型投影暂缺时回退到全局默认模型、导致档位刻度跳变及档位操作提交错误模型的问题;支持公开会话投影的宿主会保留已确认选择,主动切换仍立即生效。 · Fix Composer falling back to the global default model during session-selection projection gaps, which changed the effort scale and could submit an effort change for the wrong model. Hosts exposing the public session projection retain the confirmed selection while explicit switches remain immediate.
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-thinking-effort 为 DSH(DeepSeek Harness) 的 llm-pi-ai 第三方模型补充可配置的思考强度档位,并设置子 agent 的默认思考强度。 - English README - 日本語 README - 한국어 README - 安装指南 - English installation guide - 日本語インストールガイド - 한국어 설치 안내 - 版本更新日志 - 日本語 changelog - 한국어 changelog 兼容边界: DSH Runtime compatibility 只负责 Settings 传输:新版 DSH 使用 remote.settings,旧版 DSH 使用 connection.api.settings。插件按运行时实际能力进行探测;旧版没有 Remote provider 时不会因此要求可选的 Remote 服务。 Gateway Protocol compatibility 是独立的一层。DSH schema 提供时,插件支持 18 个常用标量 llm-pi-ai.compat 字段,按角色与推理、格式与输出、流式与工具、存储与缓存 4 组组织。boolean 字段可设为「自动」「支持」或「不支持」,enum 字段可设为「自动」或具体取值,number 字段可填整数或保持「自动」。
展开完整文档(README 剩余 1 节)
dsh-thinking-effort

为 DSH(DeepSeek Harness) 的 llm-pi-ai 第三方模型补充可配置的思考强度档位,并设置子 agent 的默认思考强度。

- English README
- 日本語 README
- 한국어 README
- 安装指南
- English installation guide
- 日本語インストールガイド
- 한국어 설치 안내
- 版本更新日志
- 日本語 changelog
- 한국어 changelog

兼容边界: DSH Runtime compatibility 只负责 Settings 传输:新版 DSH 使用 remote.settings,旧版 DSH 使用 connection.api.settings。插件按运行时实际能力进行探测;旧版没有 Remote provider 时不会因此要求可选的 Remote 服务。

Gateway Protocol compatibility 是独立的一层。DSH schema 提供时,插件支持 18 个常用标量 llm-pi-ai.compat 字段,按角色与推理、格式与输出、流式与工具、存储与缓存 4 组组织。boolean 字段可设为「自动」「支持」或「不支持」,enum 字段可设为「自动」或具体取值,number 字段可填整数或保持「自动」。DSH 0.1.0-rc.7 不提供网关兼容设置;0.1.0-rc.8 至 <0.1.2-alpha.1 支持其他字段,但没有 supportsFinishReason 和 supportsThinkingTokenBudget;0.1.2-alpha.1 至 <0.1.3-alpha.2 提供其中 15 个,0.1.3-alpha.2 及更高版本在 schema 支持时提供全部 18 个字段。安装并启用可选的 dsh-llm-openai-completions transport 后,它可以接管符合条件的自定义 OpenAI 兼容思考模型供应商。「自动」会取消当前层覆盖,并恢复继承链中的下一层取值。

DSH 0.1.2-alpha.1 及更高版本通过 LocaleRuntime 支持语言包注册外部 locale ID。本插件会动态注册 ja 和 ko,无需维护 DSH fork。只支持固定内置 locale ID 的旧版 DSH 仍只能使用 zh 和 en。

发布包的运行入口是 lib/index.js(Host)和 lib/client.js(Client)。修改 TypeScript 或 locale 源文件后,运行 pnpm run build,再启动 DSH 或打包插件。当前 DSH 没有公开的 semver metadata 契约,因此运行时能力探测是权威来源。只有显式 metadata 或测试输入提供时才使用可选版本;未知合法版本仍按实际能力运行。插件同时支持新版 remote.settings 和旧版 connection.api.settings。

Host 在宿主提供 Settings installSection 时用它注册插件自有的 dsh-thinking-effort namespace,否则回退到旧版 register 路径。在 0.1.7 及以后的 entry-config 模型下这两条路径都不存在,设置分区改由导出的 Config 提供。插件不在运行时依赖 @deepseek-ai/dsh-settings,因此在配置为 autoInstallPeers: false 的 DSH profile 中也能干净安装,不会引入第二份 Cordis 运行时。

DSH 版本兼容

| DSH 范围 | 网关兼容设置 |
| 0.1.0-rc.7 | 不支持 |
| 0.1.0-rc.8 至 <0.1.2-alpha.1 | schema 暴露时可用,但没有 supportsFinishReason 和 supportsThinkingTokenBudget |
| 0.1.2-alpha.1 至 <0.1.3-alpha.2 | schema 暴露时支持 15 个字段;thinkingTokenBudgetField、vllmPriority 与 supportsMaxOutputTokens 尚未提供 |
| 0.1.3-alpha.2 至 <0.2.3-0 | schema 暴露时支持全部 18 个字段。该区间横跨 0.1.7 的设置重写与 0.2.0 至 0.2.2 各线,均已验证保持相同的可编辑字段集合。达到或超过该上限的版本不做映射:插件照常工作,改为跟随运行时宿主实际报告的能力 |

从 DSH 0.1.0-rc.8 起,后续支持范围均以运行时 schema 暴露为准。上表表示各 DSH 版本最多可用的字段集合;当前网关协议还可能进一步缩小集合。

实际可配置字段需要同时满足三项条件:DSH 版本支持、运行时 schema 暴露,以及当前路由的 api 协议支持。不支持的字段不会显示,也不会写入 Settings。18 个字段中,openai-completions 支持除 supportsMaxOutputTokens 之外的全部字段;openai-responses、azure-openai-responses 和 openai-codex-responses 只支持 supportsDeveloperRole、supportsStrictMode、supportsLongCacheRetention 和 supportsMaxOutputTokens。如果 api 缺失或无法识别,最终仍以运行时 schema 和 DSH 校验为准。

DSH 0.1.7 起改为从 Loader 条目自身的 Config schema 派生设置表单(entry-config 模型);没有导出该 schema 的插件不会出现设置表单。本插件已导出该 schema,因此在 0.1.7 及以后,它的设置分区使用 Loader 条目 ID thinking-effort;0.1.0-rc.7 至 0.1.6 仍使用注册的 namespace dsh-thinking-effort,客户端会自动解析宿主实际发布的那个 ID。subagentEffort 现在存放在本插件自己的分区,且在 0.1.7 及以后旧的 llm-pi-ai 位置不再是回退读取来源:该分区的 schema 只声明了 providers,宿主会拒绝写入其他路径,并从它上报的用户层中丢掉未声明的键。所以升级前存在那里的子 agent 默认值会显示为未设置,需要在插件的设置卡片里重新选择一次。本插件在 0.1.7 之前导出的快照仍把该值放在 llm-pi-ai 里;导入时插件会把该值迁移到自己的分区——这也正是同一批次里的 providers 能被接受的原因(只要有一个写入路径不是 volatile,宿主就会拒绝整个批次)。0.1.7 及以后设置保存在当前 profile 的 cordis.patch.yml,而不再是 ~/.dsh/settings.yaml(0.1.7 不再使用该文件)。

为什么需要它?

DSH 的 llm-pi-ai 适配器允许你手工声明第三方模型,但这些模型通常没有 reasoningEfforts 配置。因此,Composer 的模型选择器不会显示「推理等级」,你也无法把网关实际支持的值(例如 ultra)映射到 DSH 的标准档位。

这个插件解决的是配置层问题:

- 为你自己 profile 声明的、缺少档位的模型补上默认选项,安装后即可在 Composer 中看到「推理等级」;只由组合 base 或 schema 默认值提供的模型不会被补全,跳过的数量会写入宿主日志;
- 在设置页按模型自定义档位,并把 high 映射为网关需要的任意字符串,例如 ultra;
- 为子 agent 设置统一的默认思考强度,并用它覆盖子 agent 从父会话继承来的档位(包括你在 Composer 里为父会话选定的档位);
- 子 agent 的自定义线上值会按实际模型的 reasoningEfforts 映射回标准档位,找不到映射时按未配置默认档位处理、不改动请求;
- 不修改已经存在的用户自定义档位,避免覆盖现有配置。

适合谁?

如果你满足下面任一情况,这个插件通常值得安装:

- 通过 llm-pi-ai 手工接入了 OpenAI 兼容或其他第三方模型;
- 模型接口支持思考强度,但 DSH 的模型选择器没有显示对应选项;
- 不同网关使用不同的线上值,需要把 DSH 的 high、max 等档位映射为 ultra、reasoning 等字符串;
- 希望控制子 agent 的成本与响应质量,而不影响主 agent 的显式配置。

如果你只使用 DSH 内置模型,且 Composer 已经提供正确的推理等级,这个插件不是必需品。

标识说明

这几个名称职责不同,请不要混用:

| 名称 | 用途 |
| @hytime/dsh-thinking-effort | npm 包名、浏览器 bundle 请求路径、模块加载器注册 ID 和宿主/客户端运行时 ID,安装、升级和卸载时使用 |
| thinking-effort | Cordis 组合条目 ID 和设置页 Slot ID |

功能概览

| 功能 | 作用 |
| 默认档位补齐 | 为用户层中缺少配置的模型添加 off、high、max,不覆盖已有自定义值;只由组合 base 或 schema 默认值提供的模型不补全,并在宿主日志中报出数量 |
| 模型级编辑 | 在「设置 → 模型能力与档位」中逐模型勾选档位并填写线上值;catalog/modelOverrides 和 models[] 模型都可编辑 compat |
| 网关兼容配置 | 按 provider 全局或单个模型配置 18 个常用标量字段,按角色与推理、格式与输出、流式与工具、存储与缓存分组并默认收起 |
| OpenCode 会话 Header | 按精确模型启用动态 x-opencode-session,默认生成与 DSH 会话绑定的确定性 ses_ 值(提供 template / expression / script 等模式以应对上游格式变化),不保存固定 Header 值 |
| OpenCode user-agent 覆盖 | 按 provider/model(含自定义路由)改写 user-agent 以模仿上游客户端,可为不同路由配置不同值;默认关闭 |
| 网关值映射 | 例如 DSH 选择 high 时,实际向网关发送 ultra |
| 配置备份与方案 | 把当前配置导出成 JSON 文件用于跨机器迁移;在本机保存多份命名方案并可在其中切换;导入前可选择「合并」或「替换」并预览影响范围 |
| 子 agent 默认值 | 把配置的档位应用到子 agent 请求,覆盖子 agent 从父会话继承来的档位;未配置时不动请求,子 agent 继续继承父会话档位 |
| 快捷预设 | 一键应用官方 DeepSeek 风格或通用档位组合 |
| Composer 分档滑块 | 运行时提供 modelDirectories 服务时,注册 Composer 的可选 seat,显示当前 provider/model 的宿主已解析推理档位 |
| 多语言设置 | 已包含中文、English、日本語和한국어字典;日语/韩语切换使用 DSH 的语言包支持 |

安装、升级与卸载

DSH 插件必须通过官方 dsh plugin 命令安装。普通 pnpm install 只会把包放入当前 Node.js 项目,不能替代 DSH profile 的依赖和 bundle 注册;也不要手工编辑 profile 的 package.json。

1. 确认 profile

echo "DSH_HOME=${DSH_HOME:-$HOME/.dsh}"
ls "${DSH_HOME:-$HOME/.dsh}/profiles"
dsh --version

将正在运行的 profile 名称替换下面命令中的 <profile>,例如 web。

2. 安装最新版本

dsh plugin --profile <profile> add @hytime/dsh-thinking-effort

安装指定版本:

dsh plugin --profile <profile> add @hytime/dsh-thinking-effort@0.3.12

官方 CLI 会同时更新 profile 依赖、锁文件和 dsh.profile.bundles,无需手工追加 YAML。

3. 升级

dsh plugin --profile <profile> update @hytime/dsh-thinking-effort

4. 卸载

dsh plugin --profile <profile> remove @hytime/dsh-thinking-effort
rm -f "${DSH_HOME:-$HOME/.dsh}/thinking-effort-loaded.json"

宿主侧改动需要重启 DSH;浏览器侧刷新 Web 页面。

完整的迁移、验证和排查步骤请查看 INSTALL.md。

从旧包迁移

旧版本可能使用以下依赖:

dsh-thinking-effort
github:hytime/dsh-thinking-effort

如果旧依赖仍然存在,使用官方命令迁移:

dsh plugin --profile <profile> remove dsh-thinking-effort
dsh plugin --profile <profile> add @hytime/dsh-thinking-effort@0.3.12

如果旧依赖已经被其他工具移除,但 profile 的 bundle 列表仍残留旧名称,先从旧 profile 的 pnpm-lock.yaml 找到旧 GitHub commit,再使用官方命令恢复并移除:

dsh plugin --profile <profile> add github:hytime/dsh-thinking-effort#<old-commit>
dsh plugin --profile <profile> remove dsh-thinking-effort
dsh plugin --profile <profile> add @hytime/dsh-thinking-effort@0.3.12

不要把 dsh-thinking-effort 添加到新的 dsh.profile.bundles 中。

快速使用

1. 打开 DSH「设置 → 模型能力与档位」。
2. 使用页面顶部的「页面语言」选择中文、English、日本語或한국어。DSH 默认优先使用已保存的语言,其次使用浏览器语言,最后回退 English;选择会持久化到 DSH。
3. 在「子 agent 默认档位」卡片中选择要应用到子 agent 请求的默认档位,然后点击「应用」。
4. 使用「一键设置」将官方 DeepSeek 风格或通用预设应用到全部模型,或展开供应商和模型进行详细配置。
5. 使用搜索框按模型名称或 ID 筛选。模型行会显示文字/图像输入能力、已声明的上下文长度,以及打开单模型设置的按钮。
6. 勾选需要的标准档位,并填写发送给网关的线上值。例如:

| DSH 档位 | 网关线上值 |
| off | 留空,表示不发送 |
| high | ultra |
| max | max |

7. 在模型编辑器中,只有目标模型确实需要 x-opencode-session 时才启用「OpenCode 会话 Header」。它默认关闭,会从当前 DSH 会话生成确定性的 ses_ 值,不会在同一路由的其他模型或不同 provider 之间继承;拨动开关即立即保存,没有单独的保存按钮。上游格式变化时参考生成器章节。
8. 回到 Composer,选择对应模型后即可使用推理档位滑块。

Composer 推理档位滑块

当 DSH Web 运行时提供 modelDirectories 服务时,客户端会为可选 conversation.input.model seat 注册一个有意压过官方模型选择器的实现——这个槽是单占位槽,优先级越低越胜出——不会修改 Composer 本身。滑块读取当前精确 provider/model 在宿主侧解析后的 reasoning.efforts 数组,因此只显示该模型当前生效的档位。选择档位提交的是普通会话模型选择,不会写入插件的 Settings 文档。

模型声明了 defaultEffort 时,滑块会显示对应档位。模型未声明 defaultEffort 时,面板额外提供「跟随模型默认」;提交时不会设置推理档位覆盖值。控件使用宿主 --dsw-* 语义 token,不维护自己的主题偏好,会跟随当前浅色或深色主题。

运行时未提供 modelDirectories 服务时,不会注册这个 seat;设置页和旧版 Settings 传输回退仍可使用。插件不修改 DSH Composer、ui-conversation 或 ui-model-selection 包。

设置页右下角会显示当前安装版本,例如 v0.1.14。

网关兼容配置

provider 的 compat 区域是该 provider 下全部模型的全局默认值。设置页将 18 个字段按 4 组组织并默认收起。请使用 DSH 官方 YAML 配置结构:

providers:
qwen-gateway:
compat:
supportsDeveloperRole: false
maxTokensField: max_tokens
models:
- id: qwen-plus
- id: qwen-thinking
compat:
maxTokensField: max_completion_tokens

逐字段独立按以下顺序取值:model → provider → base/catalog → protocol。URL/hostname 不会作为 compat 来源。模型值只覆盖当前字段。「自动」(Auto)会删除当前层字段,恢复 provider 继承,并让继承链中的下一层生效。provider 默认值会应用到该路由的所有模型,模型级修改只影响当前模型。对同一路由(provider)而言,非空的 models[] 和非空的 modelOverrides 互斥;官方 schema 会拒绝该无效配置,插件遇到异常数据时 fail closed。

设置页的 provider 全局区域用于修改该 provider 下全部模型的默认值。catalog/modelOverrides 模型和 models[] 模型都能展开后编辑单模型 compat:前者只对目标字段使用 modelOverrides.<model>.compat 下的字段级 set/unset,后者通过一个完整的 providers.<route>.models 数组 set 写回,同时保留其他模型和字段。模型级修改不会影响其他模型。

这些 compat 值属于控制面配置。它们不实现或替代网关 transport;网络请求仍由外部 transport 负责。

OpenCode 会话 Header 生成器

模型编辑器提供独立的「OpenCode 会话 Header」开关。它默认关闭,保存在插件自有的设置分区中,不写入 llm-pi-ai.compat。只有确实需要 x-opencode-session 的精确 provider/model 才应启用;同一路由中的其他模型(包括 GPT 模型)不会继承该设置。拨动开关即立即保存,没有单独的保存按钮;重新打开模型时显示的是已持久化的值。

启用后、未配置 format 时,Host 会发送符合 ses_ 规范形态、由当前 DSH 会话确定性派生的值:ses_ + 12 位十六进制(48 位毫秒时间戳,会话内首次使用时铸造一次)+ 14 位 Base62(对归一化的 DSH 会话 ID 取 80 位 SHA-256 摘要)。同一 DSH 会话总是发送同一个值:该值按会话粘性保留,有界缓存淘汰只丢弃缓存值、绝不丢弃首次铸造的铸币,因此被淘汰的会话再次访问时值仍不变;只有 DSH 重启且处于 firstUse 模式时才会重新铸造 hex 时间戳(time: hash 则完全无状态)。14 位后缀因为是派生而非存储,在 DSH 重启后依然稳定。不同会话(包括每次子 agent 运行)派生不同值。

生成器参数可在设置页的会话值生成器卡片中调整,也可在设置文档中手写:0.1.7 及以后是当前 profile 的 cordis.patch.yml 中的 opencodeSession.format 分区(由 Loader 条目 ID thinking-effort 定位);0.1.0-rc.7 至 0.1.6 是 dsh-thinking-effort.opencodeSession.format,例如 ~/.dsh/settings.yaml。两种方式等价。共四档,可应对上游格式变化而无需重建插件:

- ses-derive(默认)——上面的规范生成器。time: firstUse 按会话铸造一次 hex 段;time: hash 改为从会话摘要派生,使整个值在任何机器上完全一致。
- passthrough——旧行为:发送原始 DSH 会话 ID。
- template——带 {hex12}、{tail62}、{sessionId}、{rawSessionId}、{sha256}、{now}、{provider}、{model} 占位符的字符串。
- expression——使用同一上下文的受限加法表达式,另提供 sha256、slice、lower、upper 辅助函数,例如 'ses_' + hex12 + tail62。
- script——导出 format(context) 的 JS 文件的绝对路径,文件变更时热加载;加载或求值失败时回退到 ses-derive。

可选的 validate 正则配合 onInvalid: warn | drop | send 校验产物是否符合上游最新要求(默认 warn)。适配器或调用方已经提供的 x-opencode-session 会被保留、绝不覆盖。该设置不会选择或修改 openai-completions、openai-responses 或 anthropic-messages 协议。完整配置参考见 INSTALL.zh.md。

Sub2API、CPA 和其他中转服务必须保留并继续把 x-opencode-session 转发给 OpenCode 上游。llm-pi-ai.providers.<route>.headers.x-opencode-session 这类静态 route Header 不能替代本功能:它会让所有会话共用一个值,无法提供按会话路由和提示词缓存亲和性。修改 Host 后需要重启 DSH;修改 Settings 或 Client 后需要刷新 Web 页面。

OpenCode user-agent 覆盖

部分上游还会校验 user-agent 头。llm-pi-ai 适配器会在每个 provider 请求上强制盖上自己的归因 user-agent(deepseek-harness/…)并删除 provider 配置的同名头,因此无法通过 DSH 本身修改。本插件在请求离开发送前的最后一层改写它——按 provider/model 生效、默认关闭。下面的 YAML 展示 0.1.7 之前版本读取的 namespace 形态:

dsh-thinking-effort:
opencodeSession:
userAgent:
value: "opencode/1.18.31 ai-sdk/provider-utils/4.0.23 runtime/bun/1.3.14"
providers:
opencode-go:
enabled: true # 整条路由 sundrawnewapi-private: value: "opencode/1.18.31" # 可选的路由级值 models: mimo-v2.5-free: true # 精确模型

- value 是总开关:为空或缺失时全局不生效。
- 命中判定:路由的 enabled 为 true(全部模型)或精确模型被开启;自定义路由直接用其 provider 名作为 key。
- 路由自己的 value 优先于总 value。
- 未命中的请求保持 DSH 的归因 user-agent 不变。

它与上面的会话 Header 作用于同一请求层,可以叠加使用,两者同时开启即可完整模仿上游客户端。完整参考见 INSTALL.zh.md;修改 Host 后需要重启 DSH。

配置备份与方案

「配置备份与方案」卡片位于语言选择器和「子 agent 默认档位」卡片下方,可以导出当前配置、在本机保存命名方案,并导入先前导出的文件。

1. 点击「导出当前配置」下载 dsh-config-<时间戳>.json。文件按原样包含 llm-pi-ai 用户层与本插件自有设置分区的配置(0.1.0-rc.7 至 0.1.6 的键为 dsh-thinking-effort,0.1.7 及以后为 Loader 条目 ID thinking-effort):凭据值不会被导出(provider 只记录保存密钥的环境变量名 apiKeyEnv),但这些分区里的值都会原样写入,放在 provider headers 里的明文 token 就是其中之一。请妥善保管。
2. 在「方案库」中输入名称后点击「保存当前配置」,即可把当前配置存为命名方案;「导出」写成文件,「删除」移除方案,最多保存 20 份。「应用」切回方案时走的是与导入相同的预览,默认的「合并」会保留方案里没有的 provider,要完全还原需在预览中改选「替换」。
3. 点击「导入配置」中的「选择文件…」后,「导入预览」会先列出新增 / 覆盖 / 删除的条数,确认之前不会写入任何内容。
4. 导入默认使用「合并」(保留文件里没有的配置);「替换」必须显式选择,它会删除文件里没有的 provider。点击「确认导入」会先把当前配置存为「导入前的自动备份」,再写入变更;还原这份备份同样走这个预览。

导出与导入复用插件现有的 Settings 通道,因此新版 Remote Settings 与旧版 connection.api.settings 都可以使用。结果显示某个 namespace 需要重启时,重启 DSH 后生效。

导入快照时默认只迁移能力配置;provider 的 baseURL、apiKeyEnv、headers 与 opencodeSession.format.script 属于本机部署接线,需在预览中显式勾选「同时导入端点与凭据」才会生效。

旧数据自动迁移

DSH 0.1.7 会把 settings.yaml 重命名并只导入一次,而更早版本的插件在 0.1.7 上加载失败,因此你此前设置的思考档位或模型开关可能只留在 settings.yaml.imported 里。插件会在启动时扫描该文档、尚未重命名的 settings.yaml 以及活的 llm-pi-ai 用户层;当发现属于本插件、而你的设置分区尚未声明的值时,会在设置页上方弹出询问:「迁移」把它们写入本插件的设置分区,「稍后」在本次页面加载内不再追问,「不再询问」则记录下这一次的具体内容,仅当旧数据之后发生变化才会再次提示。在你点击「迁移」之前不会写入任何旧数据值,且迁移只补齐你尚未设置的值,绝不覆盖。写入前,插件会把当时的设置存进「配置备份与方案」的回滚槽(autoBackup,来源标记为 migration),并与迁移值在同一批写入中落盘。想按需检查旧数据时,使用「配置备份与方案」卡片中的「重新扫描旧数据」。

设置页界面

页面顶部是语言选择器;其下方的「子 agent 默认档位」卡片设置应用到子 agent 请求的档位,覆盖子 agent 从父会话继承来的档位。「一键设置」负责批量应用预设。供应商和模型列表支持展开/收起;每个模型行显示输入能力、上下文长度,并在设置区域提供网关兼容控件。models[] 保存使用完整数组 set,而不是数组索引 path op。上下文长度输入还支持用 k(大小写不限)表示 1024 倍,例如 64k 即 65536。页面按与 dsh-web-mobile 相同的断点(1023px / 767px / 480px)在窄屏重排:成对字段降为单列、标签堆叠在控件上方、固定控件宽度被释放,因此手机上无需横向滚动即可操作。

中文模型能力与档位设置页

完整的中英日韩截图集见 docs/SCREENSHOTS.md。

工作方式

- 宿主侧: 插件读取 llm-pi-ai 设置,在启动和设置变更时扫描 models 与 modelOverrides,只为缺少 reasoningEfforts 的模型补充默认档位。补齐只写入用户层,因此覆盖的是你自己 profile 声明的模型:由组合 base 或 schema 默认值提供的模型在该层没有可写入的条目,插件不会为其补全,并在宿主日志中说明跳过了多少个。插件同时读取模型级 OpenCode 会话设置,只在匹配的 llm/stream 请求中注入按 opencodeSession.format 生成(默认 ses-derive)的 x-opencode-session,并为 opencodeSession.userAgent 命中的模型改写 user-agent(否则会被 llm-pi-ai 适配器的归因头强制覆盖)。
- 客户端: 通过 DSH Settings Remote(ctx.remote.settings)注册设置页;运行时提供 modelDirectories 服务时,为可选 Composer seat 注册有意压过官方模型选择器的实现(该槽为单占位槽,优先级越低越胜出),并显示宿主已解析的推理档位滑块。模型编辑器把 OpenCode 会话 Header 设置保存在插件自有 namespace,与 llm-pi-ai.compat 分开。四种文案分别维护在 src/locales/zh.json、src/locales/en.json、src/locales/ja.json 和 src/locales/ko.json,发布前生成到客户端 bundle。
- 子 agent: 0.1.7 及以后默认值存储在本插件自有设置分区的 subagentEffort(0.1.0-rc.7 至 0.1.6 为 llm-pi-ai 用户层)。宿主优先读取插件自有分区,再回退 llm-pi-ai;只有 0.1.7 之前的版本会把值放在后者,因为 entry-config 分区只声明 providers。具备 agent.model.current() 和 agent.model.select() 的宿主会在 agent/created 阶段、子 agent 首个模型步骤前应用配置档位;较早宿主继续使用 agent/request waterfall 回退。未配置默认值或自定义线上值无法在目标模型上解析时,插件不改动当前选择,子 agent 继续继承父会话档位。
- 版本信息: 设置页右下角显示当前安装版本,例如 v0.1.14;DSH 插件列表从已安装包的 package.json.version 读取同一版本。

安装验证

grep -n "@hytime/dsh-thinking-effort" \
"${DSH_HOME:-$HOME/.dsh}/profiles/<profile>/package.json"
dsh --profile <profile> --dump-default-config

组合树应包含:

- id: thinking-effort
name: '@hytime/dsh-thinking-effort'

且不应再包含:

name: dsh-thinking-effort

宿主加载标记位于:

cat "${DSH_HOME:-$HOME/.dsh}/thinking-effort-loaded.json"

重要限制

- DSH 的 llm-pi-ai 适配器固定提供 7 个标准档位:off、minimal、low、medium、high、xhigh、max。插件不能增加第 8 个显示名称,但可以为每个档位填写任意线上值。
- 非 off 档位必须填写线上值;off 留空表示不发送该参数。
- 子 agent 使用的模型必须支持所选档位,否则网关可能返回 UNSUPPORTED_REASONING_EFFORT。
- off 和未设置都可能表现为不发送 reasoning 参数,是否真正关闭思考取决于第三方网关的协议语义。
- 档位发送的值不一定代表 token 预算。部分网关把它当作提示词指令,会把多个档位折叠成同一行为(例如把 high 改写为 xhigh)、把 medium 当作「不附加任何说明」,或在参数缺失时回退到自己的默认值。在假定某个档位会改变思考长度之前,先查网关的 chat template 或文档;这类网关通常要把 off 的值填成 none 才真正关闭思考。
- Composer 滑块只在 Web 运行时提供可选 modelDirectories 服务时注册。该服务不可用时,不会注册 seat,插件也不会修改 Composer。
- 宿主逻辑修改需要重启 DSH;Settings、locale 和 Client bundle 修改需要刷新 Web 页面。
- 「配置备份与方案」的方案库和导入前的自动备份都保存在插件自有的设置分区中,不会随导出文件迁移。要把命名方案带到另一台机器,需要逐个「导出」再在目标机器上导入。

CI 与发布维护

- Pull Request 和推送到 main 会在 Node 22.19.0 与 24.x 上运行质量矩阵。
- workflow 使用 pnpm install --frozen-lockfile;依赖变更时,维护者必须提交 pnpm-lock.yaml。
- 普通 CI workflow 不会发布 npm;发布只由 publish.yml 接收匹配的 v<version> tag 后执行。
- 创建发布 tag 前,维护者先更新 package.json 版本和各语言 CHANGELOG,提交这些变更,再创建匹配的 v<version> tag。tag 指向的提交必须位于 main 历史中。
- npm 包必须配置 GitHub Trusted Publisher:仓库为 hytime/dsh-thinking-effort,workflow 为 publish.yml。发布使用 GitHub OIDC 生成 provenance,不需要 NPM_TOKEN。
- 发布前 workflow 会按 rc7 → rc2 → alpha2 → namespace → entry 顺序构建并测试五个官方 DSH 能力代表:dsh-v0.1.0-rc.7(0.1.0-rc.7)、dsh-v0.1.1-rc.2(0.1.1-rc.2)、dsh-v0.1.3-alpha.2(0.1.3-alpha.2)、dsh-v0.1.6-alpha.1(0.1.6-alpha.1)和 dsh-v0.1.7-alpha.1(0.1.7-alpha.1);通过官方 dsh plugin 命令安装并执行真实兼容检查,0.1.6-alpha.1(namespace 模型)和 0.1.7-alpha.1(entry-config 模型)两个代表版本都会运行真实浏览器 DOM 探针。
- workflow 不会自动修改版本或任何 CHANGELOG;如果 npm 中已经存在相同版本,发布也会被阻止。

排查

- 官方组合配置失败: 执行 dsh --profile <profile> --dump-default-config,检查是否仍有旧的 name: dsh-thinking-effort。
- 设置页没有出现: 重启 DSH 后刷新 Web 页面,确认 profile 的 bundle 清单包含 @hytime/dsh-thinking-effort。
- 宿主没有补齐: 检查 $DSH_HOME/thinking-effort-loaded.json 是否存在;日志前缀为 [@hytime/dsh-thinking-effort]。
- 写入档位失败: 检查非 off 档位是否填写了线上值,并确认目标模型配置仍然存在。
- 子 agent 报 UNSUPPORTED_REASONING_EFFORT: 改用该模型支持的档位,或把「子 agent 默认档位」选回「继承父会话档位」(不覆盖,让子 agent 继续继承)。

许可证

MIT
预览分享卡片长什么样 ↓hytime/dsh-thinking-effort
分享 · DeepSeek Harness Hub
hytime/dsh-thinking-effort

为 DSHDeepSeek Harness 的 llm-pi-ai 第三方模型补充可配置的思考强度档位,并设置子…

这是你的仓库?认领条目

回到顶部