前言¶
在 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 倉庫。