dsh-magpie-connector:把自托管 Magpie 网关接进 DeepSeek Harness

前言

在 DeepSeek Harness(DSH)里接外部模型,常见做法是逐个配置厂商 API 或订阅类插件。若你已经在内网或 Tailscale 上跑 Magpie 网关,由 Magpie 统一管理登录、账号、路由和上游出口,DSH 侧仍需要一条稳定的 provider 路由:拉模型目录、走 Chat Completions 或 Responses、在 Web UI 里选模型并看到用量。

下面介绍社区插件 dsh-magpie-connector(维护者 prgrmrwy,分类:模型推理)。它把自托管 Magpie 网关注册为 DSH 的一个 LLM provider,路由名仍为 dsh-magpie-connector;模型按网关返回的 owned_by 在选模型界面分组展示,并附带只读用量卡片、模型可见性与默认 reasoning effort、以及按会话的 fast mode。Magpie 继续管网关侧能力,插件只补 DSH 侧适配。

这是什么

dsh-magpie-connector 是 DeepSeek Harness 的 Web 侧插件(npm 包名同插件名,当前资料中版本 0.1.2,许可证 MIT)。一句话:用一条网关 URL 和一把 key,让 DSH 把 Magpie 当作单一 provider 使用,同时在 UI 里按上游厂商(Claude、GPT 等)分组展示模型与设置。

核心功能

以下能力均来自项目 README 中的说明表与配置章节。

网关直连(基础)

配置一个网关 API 地址和一个 key。模型目录来自网关的 GET /models;支持 Responses 的模型走 Responses,其余走 Chat Completions。文本、工具多轮、图片、用量、取消以及 DSH 管理的重试均可经插件转发。

按上游 provider 分组(插件特征)

模型选择器会出现 Magpie (Claude)、Magpie (GPT)、Magpie (<其他 owned_by>) 等分组标题,背后路由仍是同一个 dsh-magpie-connector。设置页与用量卡片使用相同分组;仅出现在用量里、不在目录中的 provider 也不会被丢掉。

说明:按分组标题展示模型,需要 ohmydsh 的 Pet 兼容层为审阅过的 DSH 0.2.0-rc.2 pin 构建的五包 Host 扩展。 stock 的 rc.2 仍可用该路由正常生成,但 provider 列表是扁平的。

Cloudflare Access 远程连接

网关藏在 Cloudflare Tunnel + Access 后面时,可在高级连接里保存 Access 服务令牌的 Client ID 与 Secret。此后每次请求除 Bearer key 外还会带上 CF-Access-Client-Id / CF-Access-Client-Secret,且仅 HTTPS。切回 Direct 并保存会清除已存的 Access 凭据。

只读用量卡片

每个上游账号可显示计划、到期、窗口读数以及网关提供的 Codex reset credits 等。打开设置时读一次;每张卡片上的 Refresh 才会重新向 Magpie 拉该账号。用量条超过 70% 变橙,90% 变红。

模型可见性与默认 effort

按 provider:不改动则跟随网关目录;也可保存显式 allowlist,新模型默认隐藏。按模型:可保存默认 reasoning effort,DSH 在下次请求时应用。

按会话 fast mode

当模型在网关上声明 priority 服务 tier 时,composer 旁会出现 standard/fast 切换(资料中举例为当前 Magpie 上的 Codex/GPT 模型)。选择按会话保存在 host 内存,请求会附加 service_tier: "priority"。

安装与启用

官方安装命令如下(资料原文,勿自行拼接 github:owner/repo 形式):

dsh plugin --profile web add dsh-magpie-connector

安装后重启 DSH 并刷新 Web 页面。资料写明在 ohmydsh 中也可启用本地 dsh-magpie-connector manifest 条目并重新构建。测试环境为 DSH 0.2.0-rc.2、Web UI、Node.js >=22.19。

插件以当前 DSH 进程权限运行;安装前请自行查看源码与 MIT 许可证,确认网关地址与 key 的暴露范围是否符合你的安全策略。

典型用法:连接与同步目录

  1. 打开 Settings → Magpie。
  2. 填写网关 API URL,必须包含 /v1,例如:
http://192.168.1.20:3425/v1
  1. 填写网关 key。DSH 凭据里以 MAGPIE_API_KEY 存储;若启动环境里已注入 key,设置页中为只读。地址、可见性与默认 effort 写在 $DSH_HOME/plugins/dsh-magpie-connector/settings.json,key 不会写入该文件,也不会经 settings API 返回。
  2. 保存。保存连接会同步模型目录;Refresh model list 可再次同步。资料说明没有目录轮询。

高级连接(默认展开):

  • Direct(默认):网关 URL 可直接访问。局域网或 Tailscale 均可,例如加入 tailnet 后使用 http://<host>.<tailnet>.ts.net:3425/v1,插件内无需额外配置。
  • Cloudflare Access:见上文;Free/Pro 计划在源站 100 秒内无响应时可能返回 524。

用量为空时:单卡 Refresh 只刷新该账号;连接面板上的 Fetch models and usage 会先重新同步目录再让 Magpie 读所有账号。受限的 held key 无法初始化空缓存时,需 Magpie 管理员先读取用量。

行为与边界(使用前建议了解)

  • 重试:失败请求由 DSH 重试,插件不重放。策略与 dsh-plugin-subscriptions 相同(10 次、指数退避 1s–60s、±20% jitter、尊重 Retry-After)。TIMEOUT、TRANSPORT、SERVER、RATE_LIMIT、EMPTY_RESPONSE 可重试;401/403、配额用尽、上下文溢出等 4xx 不重试。
  • 默认输出 token 预算:网关的 max_output_tokens 是模型容量,不是每次请求的默认值。插件交给 DSH 的默认预算为 min(capacity, max(1, window/4, window/2 − 65536)),为 compaction 留空间;显式 maxTokens 不受影响。
  • 流式超时:只有完全无数据才结束流;header、SSE 与心跳都算活跃。连续 300 秒无任何数据会以 TIMEOUT 结束(消息含 MAGPIE_STREAM_TIMEOUT)。
  • 改连接不杀进行中的任务:新地址或 key 会立刻隐藏旧目录与卡片,已准备或运行中的生成仍用捕获时的地址与 key 完成。
  • 传输面较窄:Host 经私有 undici dispatcher 直连配置的网关,不走全局代理;拒绝重定向。仅允许 GET /models、POST /responses、POST /chat/completions、GET /magpie/quotas/cards、POST /magpie/quotas/refresh;不调用 Magpie GUI 的 /api/* 管理端点。自定义 header、mTLS 等需通过 Issue/PR 讨论。
  • 不支持 stop 序列:会在发请求前失败(MAGPIE_STOP_UNSUPPORTED),因 Magpie 无法跨路径保留 stop。

适用场景与注意

适合已经在跑 自托管 Magpie 网关、并希望 DSH Web UI 把它当作单一 provider、同时需要分组选模型、只读用量与 per-session fast mode 的开发者。不适合期望插件替 Magpie 做账号登录、GUI 管理或任意 HTTP 代理的场景——这些应留在 Magpie 或网关出口代理上。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本文事实来自插件 GitHub README 与 package 元数据,使用前请以仓库最新文档为准。

结尾

dsh-magpie-connector 在 DSH 侧补齐 Magpie 网关接入:一条 provider 路由、按上游分组的可视化、用量卡片与模型策略,以及可选的 Cloudflare Access 与 fast mode。若你的部署已是 Magpie + DSH,可按上文命令安装并在 Settings → Magpie 完成连接。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye