跳到正文
dsh-market 浏览插件 GitHub EN

Scorp1o117/dsh-reasoning-options

通过 DSH 设置为自定义 pi-ai 模型补充缺失的推理强度声明,启用原生强度选择器,并自动处理后续添加的模型。

Star 数 ★ 0 分类 模型与账号接入 收录于 2026-09-05 npm dsh-reasoning-options

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add dsh-reasoning-options

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

README

配置入口(DSH 0.2.0-rc.2 起)

在首页侧边栏打开 插件 → 已安装 → dsh-reasoning-options,直接在插件详情页配置并保存。配置页注册到官方的 plugins.bundle.config 接口;全局设置页不再重复显示配置入口。Web 与桌面版使用相同界面,本版要求 DSH 0.2.0-rc.2 或更新的 0.2.x 版本。现有配置无需迁移。

GitHub: Scorp1o117/dsh-reasoning-options · npm: dsh-reasoning-options · English

给 DeepSeek Harness 的 pi-ai 自定义模型(第三方网关) 自动补上「推理强度」选择器,并自动注入必需的网关路由 Header(如 OpenCode Go 的 x-opencode-session)。

为什么需要它

  1. 推理强度选框缺失:dsh 自带的 DeepSeek 模型在 Web UI 里有推理强度选项(off / low / high / max …),因为 DeepSeek 适配器为模型声明了 reasoning 能力。但通过 llm-pi-ai 配置的第三方网关模型(OpenCode Go、GOAT、火山方舟等)默认没有这个选项——pi-ai 只给「显式声明了 reasoningEfforts」的模型提供档位 UI,手工在 profile patch(cordis.patch.yml)里声明的模型都不会声明它。
  2. OpenCode Go 网关兼容:OpenCode Go 网关(opencode.ai/zen/go/v1)强制要求请求携带 x-opencode-session HTTP Header 用于请求分发与 Prompt Cache。缺少时会直接报错 400: {"type":"MissingSessionID", ...}。

本插件一并解决上述问题:扫描 llm-pi-ai 命名空间,给每个没有 reasoningEfforts 的模型写入全七档声明(off / minimal / low / medium / high / xhigh / max),给没设默认档位的 provider 加上 reasoning: high,并为 OpenCode Go provider 自动注入缺失的 x-opencode-session Header。写入走 dsh 原生 settings 管线(schema 校验 → 落盘 profile patch → 热生效)——用户完全不用手动改文件。

只负责「给用户一个更方便的选择入口」并保证网关连通性。具体选哪档、模型支不支持,由用户自己决定,插件不判断模型适配度。

桌面端安装

在桌面端的“插件”页面安装,或使用桌面端“应用 → 管理 dsh 命令”注册的命令:

dsh plugin --profile desktop add dsh-reasoning-options@0.3.1

重启桌面端以加载客户端插件。配置位于 $DSH_HOME/profiles/desktop。

兼容性(v0.3.1)

已在 DSH 0.1.7-rc.2(Web)与 0.2.0-rc.2(桌面端运行时)的一次性 Profile 验证。桌面端使用独立的 desktop Profile;其他预发布版本暂未验证。

安装

dsh plugin --profile web add dsh-reasoning-options

或手动在 profile patch 挂载:

- insert:
    - id: reasoning-efforts
      name: 'dsh-reasoning-options'
      config:
        enabled: true

工作原理

  1. 读取 llm-pi-ai 命名空间当前的用户层配置(settings.describe() 每次都会现读 profile patch 文件)。
  2. 对每个 provider 的每个模型:若没有 reasoningEfforts,生成对应变更,写入全七档声明。
  3. 对没设 reasoning 默认档的 provider 路由,补 reasoning: high。
  4. 对 OpenCode Go provider(baseURL 包含 opencode.ai),若缺少 session header 则自动注入 headers: { x-opencode-session: 'dsh-session' }。
  5. 所有写入经 pi-ai 自己的 schema 校验后持久化并热提交,dsh 原生 UI/请求链路随即生效。
  6. 幂等 + 串行:已有档位和已配置 Header 的项目不碰;补完后再扫描是空操作,不会反复写。同一时刻只跑一次扫描,多次触发不会互相抢配置文件锁。
  7. 触发时机:settings/document-updated(在 Web UI 里改模型)、app-boot/config-reload,以及每 pollIntervalMs 一次的兜底扫描。事件只置脏标记,真正的写入由插件自己的定时器上下文执行——因为 dsh 是在热重载事务内部发出设置变更事件的,而在该事务里再发起一次写入会被直接拒绝(HMR transactions cannot be nested)。

配置

字段 默认 含义
enabled true 设为 false 停止自动处理
autoSessionHeader true 是否自动为 opencode.ai 网关注入 x-opencode-session
sessionHeaderValue 'dsh-session' 自动注入的 x-opencode-session 默认值
pollIntervalMs 30000 兜底重扫周期(毫秒);0 关闭轮询,只响应事件

想改默认档位或 wire 值?补丁写入后它们就在 cordis.patch.yml 的 llm-pi-ai 段里,可随时手动调整,插件不会覆盖已有声明。

注意事项

  • 插件读取并改写 llm-pi-ai 命名空间,但不拥有它(pi-ai 独占注册)。所有写入都走公开的 settings.update API,与在 Web UI 手改等效。
  • 数组是整体替换,所以插件每次写入都会重述它触碰到的 provider 的完整 models 列表;写入时带上读取到的 revision,若期间该命名空间被别处改过就冲突重试而不是覆盖并发编辑者。
  • 插件写入的是 profile patch 中 llm-pi-ai 条目的 config,这一段会被整段重写(段内的 YAML 注释会丢失)。
  • 手工编辑 cordis.patch.yml 新增模型后不必重启 dsh:下一次轮询(默认 30 秒内)会补齐档位,并顺带让新模型热生效。把 pollIntervalMs 调小可缩短这个延迟。
  • 档位 wire 值为 OpenAI 兼容风格(low/medium/high/…)。绝大多数 OpenAI 兼容网关接受;个别网关若只认自己的写法,可在 cordis.patch.yml 里把对应模型的档位值改成它的写法。

配置页可设置自动补齐推理档位、自动会话标识头、会话标识值和检查间隔;保存后宿主按现有配置生命周期生效。

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。