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

LLM 兼容自愈 Semidia/dsh-llm-compat-healer

DeepSeek Harness
Semidia73 天前有提交已提供中文文档扫描:含敏感能力

自动修复中转网关模型能力声明错误,恢复请求

27.2/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Semidia/dsh-llm-compat-healer
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/07·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 73 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(dependency_conflict · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件写入剪贴板(不计风险)
查看扫描证据(共 12 处,展示前 12 条)
  • 读取本地文件
    lib/index.js:107
    if (!existsSync(PROFILE_DIR)) mkdirSync(PROFILE_DIR, { recursive: true })
  • 写入本地文件
    lib/index.js:107
    if (!existsSync(PROFILE_DIR)) mkdirSync(PROFILE_DIR, { recursive: true })
  • 写入本地文件
    lib/index.js:117
    appendFileSync(join(PROFILE_DIR, 'dsh-llm-compat-healer.log'), `[${new Date().toISOString()}] ${msg}\n`)
  • 写入本地文件
    lib/index.js:130
    writeFileSync(join(PROFILE_DIR, ERROR_LOG_NAME), body ? `${body}\n` : '', 'utf8')
  • 读取本地文件
    lib/index.js:136
    const text = readFileSync(join(PROFILE_DIR, ERROR_LOG_NAME), 'utf8')
  • 写入剪贴板
    lib/client.js:390
    navigator.clipboard.writeText(text).then(function() { setStatus("已复制 " + errors.length + " 条错误"); });
  • 读取本地文件
    test-client.mjs:5
    const source = readFileSync(new URL('./lib/client.js', import.meta.url), 'utf8')
  • 写入本地文件
    test-host.mjs:8
    mkdirSync(testRoot, { recursive: true })
  • 读取本地文件
    test-host.mjs:193
    assert('未匹配错误落盘', existsSync(join(testRoot, 'dsh-llm-compat-healer-errors.jsonl')))
  • 读取本地文件
    test-host.mjs:194
    const errorFile = readFileSync(join(testRoot, 'dsh-llm-compat-healer-errors.jsonl'), 'utf8')
  • 读取本地文件
    test-host.mjs:240
    assert('errors/clear 后 JSONL 为空', readFileSync(join(testRoot, 'dsh-llm-compat-healer-errors.jsonl'), 'utf8') === '')
  • 读取本地文件
    test-schema.mjs:46
    const source = readFileSync(entry, 'utf8')
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 自动修复模型能力声明
  • 恢复请求失败
  • 设置页配置字段

LLM 兼容自愈插件:自动检测并修复中转/网关未正确声明模型能力导致的请求失败(thinking/reasoning 兼容),提供设置页 UI 配置全部 pi-ai 字段

README

由 DeepSeek 最新模型翻译生成
dsh-llm-compat-healer LLM 兼容自愈插件:自动检测并修复「中转/网关未正确声明模型能力」导致的请求失败(reasoning_content、developer 角色等兼容问题),并为 llm-pi-ai 配置提供完整的设置页 UI 和中文错误摘要。 解决的问题 使用中转/聚合 API(如某公益中转、某聚合网关)时,如果 provider 的模型列表没有正确声明 reasoningEfforts / compat(如 thinkingFormat: deepseek、supportsDeveloperRole: false),DeepSeek 兼容接口可能会返回: {"message":"The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error"} (400 错误)。本插件自动检测该错误并修复配置,无需手动编辑 settings.yaml。 三层机制 1. agent/request-error 监听(自愈):命中规则表 → 标记问题 provider + 异步幂等补齐或校正目标兼容字段;未命中 → 记录到「未匹配错误」队列供 UI 查看(学习机制)。
展开完整文档(README 剩余 1 节)
dsh-llm-compat-healer

LLM 兼容自愈插件:自动检测并修复「中转/网关未正确声明模型能力」导致的请求失败(reasoning_content、developer 角色等兼容问题),并为 llm-pi-ai 配置提供完整的设置页 UI 和中文错误摘要。

解决的问题

使用中转/聚合 API(如某公益中转、某聚合网关)时,如果 provider 的模型列表没有正确声明 reasoningEfforts / compat(如 thinkingFormat: deepseek、supportsDeveloperRole: false),DeepSeek 兼容接口可能会返回:

{"message":"The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error"}

(400 错误)。本插件自动检测该错误并修复配置,无需手动编辑 settings.yaml。

三层机制

1. agent/request-error 监听(自愈):命中规则表 → 标记问题 provider + 异步幂等补齐或校正目标兼容字段;未命中 → 记录到「未匹配错误」队列供 UI 查看(学习机制)。
2. agent/request 拦截(当前会话立即恢复):对问题 provider 的请求,在发出前把 thinking 关掉——模型声明了 off 档位则设 reasoningEffort: 'off',否则删除该字段。配置修复会保留模型的 DeepSeek 推理协议能力,使历史 assistant 消息仍能补齐 reasoning_content。对于明确拒绝 developer 角色的 OpenAI 兼容端点,自动补 supportsDeveloperRole: false,把系统提示改发为 system。无需重启。
3. RPC + 设置页 UI:读写 llm-pi-ai 全部字段、一键补全、扫描全部补齐、查看错误日志。

功能

- 设置页新增「LLM 兼容」分区(settings.section,id=llm-compat-healer)
- 每个 provider 卡片:
- reasoning 下拉
- 按 api 显示公开 compat 字段;布尔字段支持「未设置 / 启用 / 禁用」
- 模型行 reasoningEfforts 和模型级 compat JSON 编辑 + 一键补全
- 顶部:「扫描全部补齐」「刷新」按钮
- 「未匹配错误」面板:把认证/权限、用量限制、网络、模型兼容和未知上游错误归类为中文摘要,同时保留脱敏后的原始详情,支持复制和清空

可配置 compat 字段

UI 只暴露 pi-ai 明确允许部署配置的 20 个字段;字段写在 provider 的 compat 下时作为默认值,写在模型的 compat 下时覆盖 provider 默认值。

| 协议 | 字段 |
| openai-completions | supportsStore、supportsDeveloperRole、supportsReasoningEffort、supportsUsageInStreaming、maxTokensField、requiresToolResultName、requiresAssistantAfterToolResult、requiresThinkingAsText、requiresReasoningContentOnAssistantMessages、thinkingFormat、chatTemplateKwargs、supportsStrictMode、cacheControlFormat、supportsLongCacheRetention |
| openai-responses、azure-openai-responses、openai-codex-responses | supportsDeveloperRole、supportsStrictMode、supportsLongCacheRetention |
| anthropic-messages | supportsEagerToolInputStreaming、supportsLongCacheRetention、supportsCacheControlOnTools、supportsTemperature、forceAdaptiveThinking、allowEmptySignature、supportsStrictTools |
| bedrock-converse-stream | supportsStrictMode |

reasoningEfforts 是模型级字段,支持 { "off": null, "high": "high" } 或 false。只有 off 的 efforts map 不被 Harness 接受;真正的非推理模型应使用 false。但对命中 reasoning_content 400 的 DeepSeek 兼容模型,不能使用 false,因为这会同时关闭历史消息的 DeepSeek 重放适配;自动补全会保留已有的非 off 推理档位,补上 off,必要时增加 high 作为合法能力声明,并把 provider 级 reasoning 设为 off。这样当前轮默认不思考,历史 assistant 消息仍会附带空 reasoning_content。对于没有显式模型列表的 catalog provider,页面只编辑 provider 级配置。

pi-ai 明确 withheld 的内部字段不会被本插件自动猜测或写入,例如 openRouterRouting、vercelGatewayRouting、sessionAffinityFormat、supportsToolSearch、supportsExplicitPromptCacheMode、supportsToolReferences。

数据安全与未知错误

- 自动补全和 UI 保存均使用 settings.mutate 的 path operation;模型数组由当前完整快照生成,不会因深合并数组而丢失其他模型。
- 「扫描全部补齐」基于同一配置快照生成全部 provider 的 path operations,并只调用一次 settings.mutate,避免首次配置热更新中断当前 RPC。统一提交失败时,需要修改的 provider 一致报告脱敏错误,原本已完成的 provider 仍报告成功。
- config/read 对 header、token、secret 等值脱敏;UI 回写时会从当前 Host 配置恢复脱敏字段,apiKeyEnv 等环境变量名称不会被误当作密钥。
- 未匹配错误只记录,不猜测修改配置;队列最多保留 100 条,并持久化到 profile 目录的 dsh-llm-compat-healer-errors.jsonl,诊断文本会脱敏。
- 未知未来接口错误可以从设置页面板复制或清空;补充新规则前不会自动改变请求行为。

安装

1. 克隆到任意开发目录
2. 在 profile 的 node_modules 下建 junction: New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-llm-compat-healer" -Target "<插件仓库的完整路径>"

3. 在 cordis.patch.yml 追加 insert 条目:
- id: dsh-llm-compat-healer
name: dsh-llm-compat-healer

4. 重启 dsh web

开发

npm test # 可移植测试:规则、Host/RPC、脱敏、Client 字段契约
npm run test:harness # Harness 安装绑定测试:schema 与最终 reasoning_content HTTP 重放
npm run test:all # 运行全部测试

安装绑定测试会优先从当前 Node 依赖树解析 @deepseek-ai/dsh-llm-pi-ai 与 @earendil-works/pi-ai。如果插件源码不在 Harness 的依赖树内,可分别设置 DSH_LLM_PI_AI_ENTRY 和 PI_AI_OPENAI_COMPLETIONS_ENTRY 为当前 Harness 安装中的完整文件路径。

验证

- shot-lch.cjs:页面验收(UI 渲染、无 JS 错误)
- shot-lch-scan.cjs:scan-fix 功能验收(扫描全部补齐、settings.yaml 结构保持和幂等执行)

安全

- 事件监听器绝不原位修改 payload(经验库十七)
- settings.mutate 只修改命中规则所需的兼容字段,并从完整快照替换模型数组;不删除或覆盖无关 provider 字段和非目标模型
- 未匹配错误只做记录,不做任何修改

License

MIT
预览分享卡片长什么样 ↓Semidia/dsh-llm-compat-healer
分享 · DeepSeek Harness Hub
Semidia/dsh-llm-compat-healer

自动修复中转网关模型能力声明错误,恢复请求

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部