前言¶
在 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 用于从插件列表卸载包。)
典型用法¶
- 执行上述
dsh plugin add命令并启用插件。 - 进入 设置 → 模型,选中芒果AI,输入 API Key(也可在环境中配置
MGOOLE_API_KEY,与apiKeyEnv对应)。 - 确认端点为
https://mgoole.com/v1、协议为openai-responses(默认值)。 - 点击 获取可用模型,在列表中选择要用的模型,按 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