dsh-provider-mgoole:在 DSH 模型页接入芒果 AI 网关

前言

在 DeepSeek Harness(DSH)里接第三方 OpenAI 兼容网关,常见做法是改配置、写 patch,或自己拼一套模型设置界面。若希望走 Harness 自带的「设置 → 模型」卡片(API Key、端点、协议、模型列表、「获取可用模型」),需要把 provider 注册到 Harness 能识别的 settings 命名空间,并在启用/停用插件时正确增删条目,同时避免 patch 里的静态 config 把卡片锁死。

社区插件 dsh-provider-mgoole(维护者 sendya,分类:模型推理)做的是一件事:启用时在原生 llm-pi-ai 命名空间写入芒果 AI(mangoai-official)provider,停用时移除;密钥经 Harness 凭证服务写入,不进入仓库或 patch 文件。

这是什么

@sendya/dsh-provider-mgoole 是一个 DSH bundle 插件。它把 芒果AI (MangoAI) 的 OpenAI 兼容网关登记为模型 provider,并使用 Harness 自带的 pi-ai 模型页编辑器(与 llm-pi-ai 命名空间对应的那套界面)。

项 值
Route id mangoai-official(固定)
默认端点 https://mgoole.com/v1
协议 openai-responses
凭证环境变量引用 MGOOLE_API_KEY
Settings 命名空间 llm-pi-ai

核心功能

下面介绍插件实际做的两件事。

注册与卸载 provider

  • 启用插件:通过 settings.mutate('llm-pi-ai', …) 设置 providers.mangoai-official。
  • 禁用插件:从同一命名空间 unset 该 provider,模型页上的芒果 AI 入口随之消失。

cordis.patch.yml 只插入一行插件清单(id: mangoai-provider, name: @sendya/dsh-provider-mgoole), deliberately 不带 config。provider 的字段在运行时写入 settings,这样既能用到原生模型卡片,又不会在保存配置时触发「被 home patch 覆盖」导致卡片不可编辑。

首次安装时的默认项

若配置里还没有 providers.mangoai-official,插件会写入默认值(已有条目不会被覆盖,你在 UI 里的修改会保留):

providers.mangoai-official:
  displayName: 芒果AI
  apiKeyEnv: MGOOLE_API_KEY
  api: openai-responses
  baseURL: https://mgoole.com/v1
  models:
    - deepseek-v4-flash
    - deepseek-v4-pro
    - deepseek-v4.1-flash

deepseek-v4.1-flash 在资料中标注了 contextWindow、maxTokens、多模态与 reasoningEfforts 等能力;完整列表以你在模型页点击「获取可用模型」后拉取的为准。

实现要点(供排查问题时对照)

插件主体为 index.js(Host 插件,inject: ['settings']),不含协议实现或客户端半部。因在 Loader 事务内不能直接改配置,写入 settings 时会通过 HMR 的 AsyncLocalStorage 显式 exit 后再 settings.mutate。禁用时的删除还依赖挂在 ctx.root 上的 plugin-manager/changed 监听及若干回退路径,避免事务嵌套报错(HMR transactions cannot be nested)。

安装与启用

环境要求(来自 README):

  • DeepSeek Harness 0.2.1-rc.2 或更新(需要 settings.mutate、llm-pi-ai 可配置,以及模型页的 llm-pi-ai / deepseek 布局)。
  • Node.js ≥ 20。

从 GitHub 安装:

dsh plugin add github:sendya/dsh-provider-mgoole

本地目录开发时可使用:

dsh plugin add link:/path/to/dsh-provider-mgoole

安装后打开 设置 → 插件,启用该插件。随后在 设置 → 模型 中会出现名为 芒果AI 的 provider,使用自带的编辑器填写 API Key,再点 获取可用模型 拉取线上模型列表。

完全移除插件:

dsh plugin remove @sendya/dsh-provider-mgoole

(先禁用会从 settings 中删掉 providers.mangoai-official;remove 用于从插件列表卸载包。)

典型用法

  1. 执行上述 dsh plugin add 命令并启用插件。
  2. 进入 设置 → 模型,选中芒果AI,输入 API Key(也可在环境中配置 MGOOLE_API_KEY,与 apiKeyEnv 对应)。
  3. 确认端点为 https://mgoole.com/v1、协议为 openai-responses(默认值)。
  4. 点击 获取可用模型,在列表中选择要用的模型,按 Harness 常流程在智能体或对话里选用该 provider 下的模型。

调试安装/卸载决策时,可开启环境变量并启动 Web:

DSH_MANGOAI_DEBUG=1 dsh web

日志写入 /tmp/mangoai-plugin.log。

适用场景与注意

适合谁:已在用或打算用芒果 AI(mgoole.com)OpenAI 兼容网关的 DSH 用户,希望少写自定义 patch,直接在原生模型页管理密钥和模型列表。

权限与安全:插件以当前 dsh 进程权限运行,会修改本机 Harness 的 settings。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证;API Key 经凭证服务保存,不会写入本插件仓库。

生态说明:DSH 社区插件目录站点 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 为准。当前 package 版本为 1.0.0,GitHub 星标为 0(以目录页展示为准)。

结尾

dsh-provider-mgoole 把芒果 AI 网关接到 Harness 原生模型设置卡片上,启用即注册、禁用即移除,并避开 patch 静态 config 导致卡片不可保存的问题。需要细节与更新时,可看目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/sendya/dsh-provider-mgoole
  • GitHub:https://github.com/sendya/dsh-provider-mgoole
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜