DeepSeek Harness 插件:dsh-ai-bridge

前言

DeepSeek Harness(DSH)支持通过插件扩展能力。在多模型协作的场景下,一个 DSH 会话里通常只运行一个模型,另一个 AI(例如在浏览器、脚本或自动化流程中)难以直接参与对话。dsh-ai-bridge 提供了一条本地 HTTP 通道,让外部 AI 能把提示词写入 DSH 会话,同时 DSH 的回复也同步到外部,实现双向对话。

它是什么

dsh-ai-bridge 是一个 DSH 插件,由 jhhjy 维护。它的核心作用是充当「接线板」:外部 AI 通过本机 HTTP 服务把提示词投进 DSH 会话,DSH 的回复则写入 outbox 供外部读取。所有操作都在本地完成,不对外暴露端口。

核心功能

  • 入站队列:外部 AI 发送提示词,插件将其作为真正的用户消息投进会话(会唤醒 agent)。
  • 出站队列:DSH 的每条回复自动写入 outbox,外部 AI 可按时间戳增量拉取。
  • 标注与区分:外部输入会被标注为「【外部 AI 输入 · 来自 X】」,避免误判。
  • 可配置目标会话:可选择跟随最近活跃会话,或钉死某一个。
  • 状态与队列管理:在设置页查看入站队列(未投递/已投递/已处理)和出站列表。
  • 主动发一条:支持从 DSH 侧主动写消息到 outbox。
  • 令牌轮换:可随时更换令牌,提升安全性。
  • 自检接口:提供 /diag 接口检查目标会话、agent 方法与投递通道。

安装与启用

插件为纯 JS 的 Cordis bundle,无需构建。

  1. 拿到源码
git clone https://github.com/OWNER/dsh-ai-bridge.git "$env:USERPROFILE\.dsh\plugins\dsh-ai-bridge"

(也可直接解压 zip 到 %USERPROFILE%\.dsh\plugins\dsh-ai-bridge。)

  1. 挂进 profile

方式 A(推荐):在 DSH 里对 agent 说「把这个本地包装成插件」,它会用 plugin_manager 的 install_bundle 指向该目录,走 link 安装。

方式 B(手工两步):编辑 %USERPROFILE%\.dsh\profiles\<profile>\package.json

  • dependencies 加一行 "dsh-ai-bridge": "link:../../plugins/dsh-ai-bridge"
  • dsh.profile.bundles 加一行 "dsh-ai-bridge"

然后重开 DSH。

  1. 启用

设置 → 接线板。首次打开会看到「接入说明」,点击「复制给另一个 AI」,把地址 + 令牌 + 示例复制到另一窗口,按说明操作即可。

典型用法

外部 AI 发送提示词(示例,PowerShell):

$json  = '{"from":"Claude","text":"看一下这个报错"}'
$bytes = [System.Text.Encoding]::UTF8.GetBytes($json)
Invoke-RestMethod -Method Post -Uri "http://127.0.0.1:PORT/api/ai-bridge/post" `
  -Headers @{"x-bridge-token"="<TOKEN>"} `
  -ContentType "application/json; charset=utf-8" -Body $bytes

DSH 回复会自动写入 outbox,外部 AI 通过 /outbox?since=<ms> 按时间戳增量拉取。

HTTP API

基础地址:http://127.0.0.1:<DSH 端口>/api/ai-bridge。写操作需要 x-bridge-token(也支持 ?token=)。

方法 路径 作用
GET /state 全量状态(开关、目标会话、队列、令牌、会话列表)
POST /post 外部 AI 发提示词 {from, text},按配置自动投递
GET /outbox?since=<ms> 按时间戳增量拉取 DSH 的消息
POST /reply 主动写一条给出站(模型工具 ai_bridge 也会调用)
POST /deliver 把某条入站消息立刻投递给模型 {id}
POST /ack 把入站消息标记为已处理 {ids: []}
POST /config 修改开关 / 目标会话
POST /rotate-token 换令牌
GET /diag 运行时自检(目标会话、agent 方法、投递通道)

中文必须走 UTF-8。常见错误是发送端按 ANSI/GBK 编码,导致接收端显示 ???。

投递实现

优先使用官方入口 sessionController.prompt({ sessionId, mode:'queue', content:[{type:'text', text}] }),即真正的用户消息,会唤醒 agent;该服务不可用时退化为 agent.inject() + agent.followup()。

安全与数据

  • 服务仅运行在 DSH 自己的 loopback HTTP 上,不额外开端口、不对外暴露。
  • 写接口校验令牌,可随时轮换。
  • 请求体上限 1 MB,单条文本上限 16k。
  • 数据保存在 <DSH_HOME>/ai-bridge/:state.json、inbox.jsonl、outbox.jsonl(追加写、坏行跳过)。

兼容性

  • 需要 DSH 提供 webServer(同源 HTTP)。
  • sessionController / agents / sessions 为可选读取。
  • 浏览器半侧使用 settings.section 槽位;宿主不提供该槽位的旧版本上页面不出现,但投递仍可用。

适用场景

适合需要在 DSH 会话中与外部 AI(浏览器窗口、脚本、自动化流程)进行双向对话的场景。安装前应检查源码与许可证。

卸载

从 profile 的 dsh.profile.bundles / dependencies 删掉对应行,删除 node_modules/dsh-ai-bridge,重启 DSH 即可。数据目录可保留。

License

MIT

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

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

Xiaoye