前言¶
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 工具直调入口)。
- 仓库:https://github.com/ptrel1/dsh-postapi-bridge
- 社区目录页:https://www.skillhub.cn/plugins/ptrel1/dsh-postapi-bridge
- 当前仓库版本(package.json):0.6.7
- 许可证:MIT;运行环境:Node.js >= 20
npm 上同名包仍停留在 0.1.0,资料明确说明缺少后续安全加固与接线,应以 GitHub 仓库为准,不要用 dsh plugin add dsh-postapi-bridge 从 registry 安装。
核心功能¶
人类 Web 通道¶
- 提供
/login、/logout登录与会话管理(自适应主题登录页)。 - 支持多账号独立权限与 Web 账号管理面板。
- 本机回环(如
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 请求体示例,但接口语义清晰,可按下面步骤自测:
- 完成安装并重启
dsh-web,配置网关 Token(及可选的config.channels)。 - 调用健康检查确认服务与审计状态:
curl -sS "https://你的域名/api/dsh/v1/health"
- 带 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 '{}'
- 人类侧在浏览器访问
/login完成 Web 登录;公网部署时务必同时理解 DSH 官方对/api/*的门禁与插件对机器通道的 Token 要求。
与 MaiBot 的客户端侧对接,资料提到可配合 maibot_dsh_bridge;具体接线以各仓库文档为准。
适用场景与注意¶
适合谁
- 需要把 DSH Agent 任务暴露给机器人、IM 或流水线,且希望用标准 HTTP + Token,而不是仅本机 Cookie。
- 需要在公网或反向代理后提供 Web 多账号登录与管理,并与机器 API 并存。
- 已使用或计划使用 DSH web profile(插件
dsh.client.platform为web)。
使用前请知悉
- 插件与 DSH 进程同权限运行;安装前请阅读 https://github.com/ptrel1/dsh-postapi-bridge 源码与 MIT 许可证,自行评估公网暴露与 Token 保管。
- 勿用滞后版本的 npm 包;安装命令以 README 中的
git+https://github.com/ptrel1/dsh-postapi-bridge.git为准。 - DSH 0.1.5 之前 README 曾描述需改源码加
requireSession;0.1.5+ 官方已内置 browserAuth 门禁,一般无需再打补丁。公网安全与网络拓扑的完整决策见仓库内skill/public-network-auth-guide.md(若存在)。 - SkillHub 等社区目录独立于 DeepSeek / 幻方,用于发现插件,不等同于官方应用商店。
结尾¶
dsh-postapi-bridge 把「Web 多账号登录」和「机器侧 POST / REST 网关」收进一个 DSH 插件:人类走 /login,自动化走 /api/dsh/v1/task 与 /api/dsh/v1/mcp/tool,并辅以审计与机器通道 fail-closed 策略。