dsh-gateway-presets

by menger-8

3 工具与能力github收录于 08-23

DeepSeek Harness 里的第三方网关预设,思考强度开箱即用

Third-party gateways in DeepSeek Harness, with thinking intensity that just works.

安装

dsh plugin --profile web add github:menger-8/dsh-gateway-presets

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

让任意第三方网关接入 DeepSeek Harness 后,思考强度自己就能选。

我们解决了什么问题

接入第三方网关(火山方舟、各类中转站、自建服务……)时,DeepSeek Harness 有两个让人头疼的问题:

  1. 思考强度(推理等级)选不了——模型选择器里根本没有这个选项;
  2. 就算手动配置想打开它,一选就报错 400,例如:
    {"message":"... messages[0].role: unknown variant `developer`, expected one of `system`, `user`, `assistant`, `tool`"}
    

原因一句话:每个网关的"方言"不一样(系统角色用 system 还是 developer、推理参数用哪种格式、输出上限用哪个字段……),而 Harness 只能靠 URL 猜,私有网关的 URL 猜不出方言,于是要么不敢给选项,要么给了就发错参数。

我们的解法:一个插件,内置一张"网关方言表"(按域名匹配),并给这些网关的模型声明好思考档位——装上、挂载、写好你的网关地址,思考强度立刻可选、可用。火山方舟是第一个经实测的内置条目;任何其他网关都可用内置探测脚本实测后,以一条数据贡献进来。

快速开始

pnpm add @menger-8/dsh-gateway-presets

在你的 cordis.yml 里挂载插件并声明你的网关:

- id: gateway-presets
  name: '@menger-8/dsh-gateway-presets'
  config:
    providers:
      my-gateway:
        baseURL: https://ark.cn-beijing.volces.com/api/coding/v3
        apiKeyEnv: MY_GATEWAY_API_KEY
        models:
          - id: deepseek-v4-flash-ga-260731
            reasoningEfforts:
              off: null
              high: high
              max: max

然后照常启动 dsh web——在模型选择器里选你网关下的模型,推理等级(Off/High/Max)就在那里。

工作原理

  • 方言表(presets):按主机名钉住九个 compat 事实——supportsDeveloperRole(developer/system 角色)、thinkingFormat(推理参数格式)、maxTokensField(输出上限字段)等。内置 *.volces.com(火山方舟:拒绝 developer 角色,已实测);config.presets 可扩展或替换。
  • 每模型档位(reasoningEfforts):你声明模型支持的档位,插件据此开放选择器;请求按方言表正确发出。
  • 不依赖上游改动:插件自带一条 pi-ai 适配器,直接注册进 Harness 的 LLM 缝,原版 DeepSeek Harness 即可使用(见下方"使用前提")。

配置参考

- id: gateway-presets
  name: '@menger-8/dsh-gateway-presets'
  config:
    presets:                 # 按主机名追加/替换方言事实
      'gateway.example.com':
        supportsDeveloperRole: false
        thinkingFormat: deepseek
    providers:               # 本插件接管的网关路由
      my-gateway:
        displayName: My Gateway
        baseURL: https://gateway.example.com/v1
        apiKeyEnv: MY_GATEWAY_API_KEY      # 凭据引用,经 credentials 服务解析
        models:
          - id: think-model
            name: Think Model
            reasoningEfforts:
              off: null
              high: high
              max: max

九个方言开关:thinkingFormat、supportsReasoningEffort、supportsStore、supportsDeveloperRole、maxTokensField、requiresToolResultName、requiresAssistantAfterToolResult、requiresThinkingAsText、requiresReasoningContentOnAssistantMessages。

贡献一个新网关

三步,一条数据 + 一次探测:

  1. 跑探测(密钥在 $DSH_HOME/.credentials.yaml 里,脚本绝不打印):
    powershell -File tools/probe-gateway.ps1 -BaseUrl https://<网关>/v1 -KeyRef <密钥名>
    
  2. 只保留探测证实的事实:developer 角色请求 400 → supportsDeveloperRole: false;OpenAI 方言被拒而 thinking.type 成功 → thinkingFormat: deepseek;被接受的档位即为可声明档位;
  3. 把条目加进 src/builtin.ts(注释里点名依据),提 PR。

探测输出就是"这个网关到底支持什么"的答案,请一并贴进 PR 描述。

使用前提

本插件自带适配器,原版 DeepSeek Harness 即可使用,无需任何核心补丁。同时它也会在具备 llm-gateway-compat-presets 消费缝隙的构建(如 Menger-8 fork)中提供该服务,与内核预设机制互操作;上游采纳进度见 Discussion #564。

许可证

MIT

原始 README: https://github.com/Menger-8/dsh-gateway-presets/blob/main/README.zh.md ↗