Back to home

QvShui

dsh-llm-qwen

Qwen (DashScope) LLM 适配器插件

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-llm-qwen

让 DeepSeek Harness 使用通义千问(Qwen / DashScope)API 的 LLM 适配器插件,可分发。

ctx.llm 上注册 qwen provider 路由,走 DashScope 的 OpenAI 兼容协议(https://dashscope.aliyuncs.com/compatible-mode/v1), 与 dsh-llm-deepseek 同一套架构:传输层适配器 + 每请求解析的连接事实/密钥。 插件内不含任何 API key,密钥完全由用户在界面或凭证文件里管理。

能力

  • 流式对话(stream_options.include_usage,token 用量上报)
  • Qwen3 思考模式:enable_thinking + reasoning_effort(off/high/max 三档, 网关还支持 low/medium),思考内容经 delta.reasoning_content 流入 harness 的 reasoning 块
  • 工具调用(delta.tool_calls + finish_reason: tool_calls,含多轮工具结果回传)
  • 图片输入(qwen3-vl 系列:user 内容转 image_url data-URL,经 attachments 服务读取)
  • 错误映射:401/403→AUTH、429→RATE_LIMIT、余额不足→QUOTA、 上下文超限→CONTEXT_WINDOW_EXCEEDED、5xx→SERVER
  • 流空闲看门狗、LLM 重试策略(llm/stream waterfall 兼容)

安装

  1. 把本包(dsh-llm-qwen/)放进 profile 的 node_modules: cp -r dsh-llm-qwen ~/.dsh/profiles/node_modules/
  2. 在 profile 补丁 ~/.dsh/profiles/web/cordis.patch.yml 里加一行 (注意:新增行必须用 insert: 包裹;裸 - id: 只能覆盖已存在的行, 目标不存在会被静默丢弃):
- insert:
    - id: llm-qwen
      name: 'dsh-llm-qwen'
      config:
        baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
        thinking: enabled
        reasoningEffort: high
  1. 重启 dsh web。重启后 设置→模型 里出现 Qwen (DashScope) 提供商。

密钥:在前端填写,绝不进插件

插件自带前端设置页(client 半边,dsh.client 双端包):

  • 设置 → Qwen (DashScope):API Key 输入框 + 已配置/未配置状态,保存即写入 ~/.dsh/.credentials.yamlDASHSCOPE_API_KEY(插件默认凭证引用名), 每请求实时读取,改完立即生效,无需重启。
  • 也可以手动编辑 ~/.dsh/.credentials.yaml,或导出环境变量 DASHSCOPE_API_KEY(环境变量优先级最高)。
  • 想换一个凭证引用名:在 settings.yamlllm-qwen: { apiKeyEnv: 别的名字 }, 再把 key 存到那个名字下即可。

说明:设置→模型 页只对 llm-deepseek / llm-pi-ai 两个内置命名空间提供内联编辑, 第三方插件在那里的行只会显示"其余字段在 settings.yaml 中"的提示(产品写死)。 因此插件的 key 管理入口放在自己注册的设置页里,与 Models 页走同一套凭证服务。

模型目录(默认 17 个)

Qwen3 全家 + 网关提供的第三方模型,选择器里直接可选:

  • Qwen:qwen3.8-maxqwen3.7-maxqwen3.7-flashqwen3.6-plusqwen3.6-flashqwen3-coder-plusqwen3-coder-flashqwen3-vl-plus(图)、qwen3-vl-flash(图)
  • 第三方(经千问网关):deepseek-v4-flash(预览版)、deepseek-v4-flash-0731(正式版)、 deepseek-v4-pro(预览版)、deepseek-v4-pro-0813(正式版)、deepseek-v3.2glm-5.2

网关共提供 238 个模型 id,想用目录外的:在 settings.yamlllm-qwen: 段:

llm-qwen:
  models:
    - { id: qwen3.5-omni-plus, name: 'Qwen3.5 Omni Plus' }
    - { id: MiniMax/MiniMax-M3, name: 'MiniMax M3' }   # 需先在该账号开通对应产品

适配器不校验模型 id,未开通的产品会在请求时报 400「product is not activated」。

配置(llm-qwen: settings 段,热更新,可省略全部)

默认说明
apiKeyEnvDASHSCOPE_API_KEY凭证引用名(Models 页填的 key 就存这里)
baseURLhttps://dashscope.aliyuncs.com/compatible-mode/v1兼容模式端点
thinkingenabled是否默认启用思考
reasoningEfforthighoff / high / max
maxTokens16384默认输出上限
defaultContextWindow131072默认上下文窗口
modelsDEFAULT_MODELS模型目录(id/name/contextWindow/maxTokens/inputModalities)
streamIdleTimeoutMs300000流空闲超时
retryPolicy标准重试@deepseek-ai/dsh-llm

测试

node test/e2e.mjs(用 DASHSCOPE_API_KEY/QWEN_DASHSCOPE_API_KEY 环境变量或 ~/test_qwen_api.txt 里的 key,直连真实网关):

  • 流式对话、思考流、工具调用、工具结果回传、qwen-vl 图片输入、401 错误映射、 模型元数据、schemastery 归一化配置回归、第三方模型(deepseek-v4-flash)经网关直连 —— 28 项全过(qwen3.7-flash、qwen3.8-max、deepseek-v4-flash 均已验证)。