litestartup-com/dsh-api-gateway ↗★ 0
dsh-api-gateway
Open-source API Gateway plugin for DeepSeek Harness: give any third-party client a simple REST + SSE interface to chat with your agents.
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗dsh-api-gateway
给 DeepSeek Harness 的开源 API Gateway 插件:任何第三方客户端都能通过一组极简的 REST + SSE 接口与你的 Agent 会话交互,完全绕开 Web GUI。API 会话与 GUI 会话驱动的是同一套 Agent 机器(inbox + 会话日志),互不依赖。
特性
- REST + SSE:7 个端点,token 级流式回包(
assistant/chunk),回合结束自动关流 - GUI 管理卡片:设置 → 插件 → 可配置 → API Gateway(状态 / 软开关 / 密钥轮换)
- 灵活配置:组合行配置 + 调用时参数(
provider/model/maxTokens/cwd) - 原生能力:API 会话自动挂载默认 agent preset(工具、技能与 GUI 会话一致)、继承默认模型选择
- 工作区归属:API 会话与 GUI 会话一样落进工作区(侧边栏分组显示,不再进「未分组」)
- 会话续聊:discover 发现会话 → 只读任意会话历史 → adopt 接管(在线共驾 / 冷会话恢复),UI 里聊到一半的会话可无缝交给第三方继续
- 干净卸载:删一行组合配置即可
安装(两步)
# 1. 安装 npm 包(在你的 DSH 部署目录)
pnpm add dsh-api-gateway
# 2. 在你的宿主组合(cordis.yml)中加一行插件行,然后重启。
# 行格式与组合内现有行一致(- id: … / name: 包名 / config: …):
- id: api-gateway
name: dsh-api-gateway
config:
prefix: /api-gw/v1 # 可选,默认 /api-gw/v1
enabled: true # 可选,默认 true
apiKeys: [] # 可选,预置静态 API 密钥
allowKeyProvision: true # 可选,允许首次 POST /key 自助发放
adminKey: change-me # 可选;设置后启用 admin 端点与 GUI 卡片开关
maxSessions: 20 # 可选,并发会话上限
workspaceMode: auto # 可选:auto(默认,会话自动挂入工作区)/ ungrouped(保持不挂载)
defaultWorkspacePath: '' # 可选:auto 模式下无 cwd 时的默认归属目录
allowDiscover: true # 可选:允许 GET /sessions/discover(列出全部会话)
allowAdopt: true # 可选:允许 POST /sessions/:id/adopt(接管任意会话)
corsOrigin: '*' # 可选:CORS 源('*' 或具体域/数组;公开部署建议收敛)
exposeErrors: true # 可选:错误响应是否带内部细节(公开部署建议 false)
sseHeartbeatMs: 30000 # 可选:SSE 心跳间隔(毫秒),0 关闭
bodyTimeoutMs: 30000 # 可选:请求体读取超时(毫秒)
完整示意见 examples/cordis.yml。
宿主组合归属说明:API Gateway 发布的是跨会话共享的 HTTP 面,应挂在宿主组合(host composition),而不是某个 agent preset。
卸载
删掉组合里的 dsh-api-gateway 行(可选 pnpm remove dsh-api-gateway),重启。
快速开始
BASE=http://127.0.0.1:3080/api-gw/v1
KEY=$(curl -s -X POST $BASE/key | jq -r .apiKey) # 首调领钥,仅一次有效(见「安全模型」)
SID=$(curl -s -X POST $BASE/sessions -H "Authorization: Bearer $KEY" | jq -r .sessionId)
curl -N $BASE/sessions/$SID/stream -H "Authorization: Bearer $KEY" & # SSE 流式回包
curl -s -X POST $BASE/sessions/$SID/messages \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"content":"你好,介绍一下你自己"}'