dsh-postapi-bridge:为 DSH 提供 HTTP 网关与 Web 多账号鉴权

前言

DeepSeek Harness(DSH)默认面向本机浏览器:会话依赖 Cookie,核心能力走 /api/* RPC。若要把 Agent 调度接到 MaiBot、飞书、微信机器人或 CI/CD,常见做法是再写一层代理,或只在 127.0.0.1 上跑脚本——公网域名、容器内调用、跨域 Bearer 鉴权往往要单独拼一套。

下面介绍社区插件 dsh-postapi-bridge(维护者 ptrel1,分类:联网工具)。它在 DSH web profile 上增加登录页、多账号管理与机器侧 REST 网关,让外部系统用 Token 走 POST 调度任务、调用 MCP 工具,而不必改 DSH 核心源码(DSH 0.1.5+ 场景下,官方已在 connection 层提供 /api 前置登录门禁,插件负责人类通道与机器通道本身)。

这是什么

dsh-postapi-bridge 是 DSH 的双半侧扩展插件:一侧是人类 Web 登录与用户管理;另一侧是为外部系统提供的轻量 HTTP POST / RESTful 任务调度与会话相关网关(含 MCP 工具直调入口)。

npm 上同名包仍停留在 0.1.0,资料明确说明缺少后续安全加固与接线,应以 GitHub 仓库为准,不要用 dsh plugin add dsh-postapi-bridge 从 registry 安装。

核心功能

人类 Web 通道

  1. 提供 /login、/logout 登录与会话管理(自适应主题登录页)。
  2. 支持多账号独立权限与 Web 账号管理面板。
  3. 本机回环(如 127.0.0.1)可按 DSH 与插件语义免密直通;公网未登录访问受官方与插件共同约束(DSH 0.1.5+ 对 /api/* 未登录返回 401 为预期行为,不是故障)。

机器 POST API 通道

面向 MaiBot、微信机器人、飞书、CI/CD 等,提供不依赖 Cookie 的 HTTP API:

  • 鉴权:Authorization: Bearer <Token> 或 X-Gateway-Token。
  • 非本地请求对 /api/dsh/v1/* 采用 fail-closed:无有效 Token 一律拒绝;/api/dsh/v1/health 健康检查可免 Token。
  • 严格回环判定不依赖可被伪造的 X-Forwarded-For 单独免鉴权(资料 v0.6.4 安全加固说明)。

主要 HTTP 接口

路径 方法 鉴权 说明
/login GET / POST 表单账号密码 Web 登录与会话
/logout GET / POST Cookie 登出
/api/dsh/v1/health GET 免密或 Token 健康与状态;启用审计时响应含 "audited": true
/api/dsh/v1/task POST Bearer / X-Gateway-Token 调度 DSH 引擎派发 Agent 任务
/api/dsh/v1/mcp/tool POST Bearer / X-Gateway-Token 直接调用 DSH 工具(如 bash、read)

溯源审计(v0.3.0 起)

对 /api/dsh/v1/* 请求可落审计:进程日志前缀 [postapi-audit],以及插件数据目录下 data/access-log.jsonl(默认超 5MB 轮转保留 3 份)。可通过 config.channels 或环境变量 DSH_GATEWAY_CHANNELS(JSON,token 到通道名映射)区分调用来源;config.accessLogDir 可自定义审计目录。修改配置后需重启 DSH web 服务。

与 DSH 长任务的关系(背景)

外部系统经网关驱动长任务时,DSH 的 compaction 会先对超大 tool 结果做语法级剪枝(dsh-compaction-tool-result-pruner),仍超预算再经 LLM 摘要(dsh-compaction-basic)。这对跨多次 POST 的网关长流程有助于控制上下文体积;细节见仓库 README 中的说明表。

安装与启用

推荐从 GitHub 源码安装到 web profile:

dsh plugin --profile web add git+https://github.com/ptrel1/dsh-postapi-bridge.git

安装后重启 DSH web 服务使插件生效:

supervisorctl restart dsh-web

本地开发或定制时,可使用 link 方式挂载本地目录(路径按你的机器调整),同样需重启 dsh-web。资料中的示例:

cd ~/.dsh/profiles/web
dsh plugin --profile web add link:/main/app/github/dsh-postapi-bridge
supervisorctl restart dsh-web

机器通道 Token、通道映射等配置项以仓库 README 与插件 settings 为准;改完配置后按上述方式重启。

典型用法思路

资料未给出完整 curl 请求体示例,但接口语义清晰,可按下面步骤自测:

  1. 完成安装并重启 dsh-web,配置网关 Token(及可选的 config.channels)。
  2. 调用健康检查确认服务与审计状态:
curl -sS "https://你的域名/api/dsh/v1/health"
  1. 带 Token 调度任务或直接调工具(将 YOUR_TOKEN 与 JSON body 换成实际值;body 字段以仓库文档为准):
curl -sS -X POST "https://你的域名/api/dsh/v1/task" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
curl -sS -X POST "https://你的域名/api/dsh/v1/mcp/tool" \
  -H "X-Gateway-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
  1. 人类侧在浏览器访问 /login 完成 Web 登录;公网部署时务必同时理解 DSH 官方对 /api/* 的门禁与插件对机器通道的 Token 要求。

与 MaiBot 的客户端侧对接,资料提到可配合 maibot_dsh_bridge;具体接线以各仓库文档为准。

适用场景与注意

适合谁

  • 需要把 DSH Agent 任务暴露给机器人、IM 或流水线,且希望用标准 HTTP + Token,而不是仅本机 Cookie。
  • 需要在公网或反向代理后提供 Web 多账号登录与管理,并与机器 API 并存。
  • 已使用或计划使用 DSH web profile(插件 dsh.client.platform 为 web)。

使用前请知悉

  1. 插件与 DSH 进程同权限运行;安装前请阅读 https://github.com/ptrel1/dsh-postapi-bridge 源码与 MIT 许可证,自行评估公网暴露与 Token 保管。
  2. 勿用滞后版本的 npm 包;安装命令以 README 中的 git+https://github.com/ptrel1/dsh-postapi-bridge.git 为准。
  3. DSH 0.1.5 之前 README 曾描述需改源码加 requireSession;0.1.5+ 官方已内置 browserAuth 门禁,一般无需再打补丁。公网安全与网络拓扑的完整决策见仓库内 skill/public-network-auth-guide.md(若存在)。
  4. SkillHub 等社区目录独立于 DeepSeek / 幻方,用于发现插件,不等同于官方应用商店。

结尾

dsh-postapi-bridge 把「Web 多账号登录」和「机器侧 POST / REST 网关」收进一个 DSH 插件:人类走 /login,自动化走 /api/dsh/v1/task 与 /api/dsh/v1/mcp/tool,并辅以审计与机器通道 fail-closed 策略。

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

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

Xiaoye