dsh-localqwen-rolefix 今日发布
面向 DeepSeek Harness(DSH)的插件
dsh-localqwen-rolefix 是一个面向 DeepSeek Harness(DSH)的插件,专门解决 DSH 连接本地 SGLang 或 vLLM 部署的 Qwen 模型时开启推理强度(reasoning effort)导致的 HTTP 400 报错问题。
问题根源在于:当用户为 Qwen 模型开启 reasoningEffort 时,DSH 会使用 role: developer 而非标准的 role: system 发送系统提示词。然而 SGLang 的 Qwen3.x 聊天模板仅接受 system/user/assistant/tool 四种角色,遇到 developer 角色时会直接返回 HTTP 400「Unexpected message role」错误。更麻烦的是,DSH 会将这个 400 误判为 CONTEXT_WINDOW_EXCEEDED(上下文超限),导致错误信息与真实原因完全不符,用户很难定位问题。
该插件的修复机制非常巧妙:在请求发送前,将模型描述符中的 compat.supportsDeveloperRole 动态设为 false,使得角色回退到标准的 system;同时保留 model.reasoning = true,确保推理强度菜单和 reasoning_effort 参数仍然可用。每次请求时自动重新应用,因此即使 DSH 热重载配置,插件也会自动修复,无需修改 DSH 源码,重启后依然有效。
安装方式极为简单,一行命令即可:dsh plugin --profile web add dsh-localqwen-rolefix。插件包声明了 dsh.bundle,会自动加入 Profile 层叠,无需手动配置路径。已验证在 DSH 0.1.0-rc.6 + SGLang + Qwen3.8-27B(qwen3_5 架构)上运行正常。
如果你在本地使用 Qwen 系列模型搭配 DSH,并且遇到了莫名其妙的「上下文超限」报错,这个插件值得一试。
评论与建议
登录 后参与评论或提建议