前言¶
在 DeepSeek Harness(DSH)里做多站点 LLM 路由时,ManageAPI 负责选站、比价、探针和记账,但 daemon 要自己起停、网关 Key 要另填客户端、真实流量往往回写不到路由层。下面介绍插件 dsh-manage-api(维护者 ZYH1207,分类:客户端):它是 ManageAPI 的 DSH 插件端,把守护进程生命周期、原生设置面板、真实用量回写和预算熔断接到 Cordis 宿主里,而不是再套一层独立 Web 壳。
这是什么¶
dsh-manage-api 当前版本 0.12.1(MIT 许可证,Node >=20),仓库 ZYH1207/dsh-manage-api,目录页 skillhub.cn/plugins/ZYH1207/dsh-manage-api。运行时本体来自 ZYH1207/ManageAPI,可通过 config.runtimeDir 指向本机目录,或安装可选 peer 依赖 manage-api(^0.3.0)。
插件不重复实现选站与记账:写操作一律走 daemon HTTP,宿主进程不写 db.json。DSH 社区插件目录是独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
界面与入口¶
- 主面板:左侧栏 ManageAPI 图标(与「插件」「任务板」同级),中央主视图整页打开;可通过
mainPanel: false仅保留设置分区。 - 设置页:设置 → ManageAPI,含概览 / 比价 / 决策 / 探针 / 用量等常驻分区。
- 会话内:助手消息下方的会话成本 chip(
⇄ N tok / M 次);命令/manage系列。
面板 UI 复用 ManageAPI 网页版样式(作用域化内联,非 iframe),明暗主题跟随宿主。
守护进程与代理¶
- attach-or-spawn:探测
/api/health通则 attach,否则按配置自启;DSH 退出时托管自有实例一并停止。 - 同源只读代理:
webServer.register('/api/manage-api/*'),仅 loopback + Origin 校验。 - 写操作白名单:
POST /api/manage-api/write→lib/write-proxy.js转发 daemon,不直连 4319 全管理面。
路由、模型与网关¶
- 站点 / Key 管理、比价改价、决策手动排序、基准价与免费池写操作、网关开关、忽略模型、模型接入(写 DSH 的
manage-apiprovider 与默认模型)等,与 README 能力表一致。 - 模型列表动态化(
llm.registerModelDiscovery)因命名空间归属llm-pi-ai未对第三方开放;改用manageapi_models工具、/manage models、设置页比价子页查看全量模型。 - 接入页不再展示网关 Key / adminToken(host 侧
sanitizeState());DSH 仍通过本机 provider 走 daemon/v1。
观测、回写与熔断¶
- 请求观测:
llm/streamtee,取 usage / finish / ttft。 - 非 ManageAPI 渠道真实用量:
POST /api/ingest/usage(ingestExternalUsage)。 - 系统提示注入站点 / 比价 / 用量上下文(
promptContext,约 30s 缓存)。 - 工具:
manageapi_status/manageapi_models/manageapi_usage;预算熔断作用于工具调用(tools.guard+ 设置页横幅)。
安装与启用¶
从 GitHub 安装(官方 README 原文):
dsh plugin --profile desktop add "github:ZYH1207/dsh-manage-api"
本地链接开发示例:
dsh plugin --profile desktop add "link:D:/AgentWorkPlace/DSH/dsh-manage-api"
装好后重启 DSH 或在插件页重载,打开 设置 → ManageAPI。开发期还可把 "dsh-manage-api" 加入 profile 的 package.json 里 dsh.profile.bundles。
配置项在 cordis.patch.yml 的 config 段,例如:
config:
port: 4319
autoStart: true
runtimeDir: ""
waitMs: 10000
ingestExternalUsage: true
promptContext: true
mainPanel: true
budget:
sessionTokens: 0
dailyTokens: 0
budget 为 0 表示不设限;超限后拒绝工具调用,模型请求仍由宿主直接发出。
运行时解析顺序:runtimeDir → npm 包 manage-api → 包内 runtime/ → 同仓开发目录。
典型用法¶
会话里使用 /manage(结果不进消息历史、不发给模型):
/manage 概览:站点数 / 供给数 / 最划算的站 / 今日用量 / 预算
/manage models 模型比价(★ = 该模型最便宜的站)
/manage models glm 只看匹配的模型
/manage usage 今日全渠道用量 + 本进程观测到的会话
/manage budget 本会话 / 今日预算与是否已熔断
模型接入:接入页从未忽略模型中选一项,写入 DSH provider 并设为默认。接入免费模型:免费页开关打开后,免费池模型以 free/模型名 接入。
面板显示 daemon「未运行」但本机 4319 有旧进程时,可关旧进程让插件 spawn(mode: owned),或使用设置页「启动托管」/「重启托管」。
适用场景与注意¶
适合已在用或打算用 ManageAPI 做站点比价与智能路由、又希望全程留在 DSH 里的开发者。插件以当前 DSH 进程权限运行,安装前应阅读仓库源码与 MIT 许可证;路由仅允许 loopback,写操作要求 application/json。
排障可参考 README:例如面板 401 / 非 JSON 多与 webServer 注册时机有关(已改为依赖注入);DSH 能看到模型但调不通,常见原因是 daemon 未跑且 provider 指向 127.0.0.1:4319。
结尾¶
经过上面的步骤,dsh-manage-api 把 ManageAPI 的 daemon、面板与 DSH 的 provider / 工具 / 预算守在一套插件里。进一步了解见 目录页 与 GitHub 仓库。