dsh-openbot-artist-bridge:把 OpenBot 對話接到 DSH 裏已有的 DS Bot

前言

在 DeepSeek Harness(DSH)裏跑 DS Bot 時,工作區、記憶和 Bot 身份都綁在 DSH 會話上。若同時在 OpenBot Desktop 裏用 Agent Client Protocol(ACP)和另一個前端對話,默認會是兩套進程、兩套上下文,很難讓兩邊共用同一個 Bot。

維護者 shiyoungwoo 的客戶端插件 dsh-openbot-artist-bridge 做的是中間適配:OpenBot 仍走 ACP,DSH 側仍是你已經配置好的 DS Bot;插件只轉發提示並把回覆流式回傳,不另起 Bot、不單獨佔一套 DSH 進程。下面介紹它的定位、架構和可復現的安裝步驟。

這是什麼

一句話:Connect OpenBot ACP conversations to an existing DS Bot inside DeepSeek Harness(倉庫 README 原文)。

  • 分類:客戶端(社區目錄 skillhub.cn)。
  • 許可證:MIT(package.json 與 README 一致)。
  • 當前包版本:0.1.0(@local/dsh-openbot-artist-bridge)。

它是前端適配層;不是 Bot 創建器,不會啓動獨立 DSH,也不會接管已有會話。目標 Bot 必須已在 DSH 中通過 DS Bot 插件存在,且至少有一個 Bot 會話。

架構概覽

數據路徑如下(與 README 一致):

OpenBot Desktop
   │  ACP over stdin/stdout (newline-delimited JSON-RPC)
   ▼
acp_bridge.py  ──┐
                 │  AF_UNIX socket, newline-delimited JSON
                 ▼
runtime.mjs  (host half inside DSH)
   │  shared fetch /api/bot  +  sessionController.prompt
   ▼
DS Bot session in DSH
  • runtime.mjs(DSH 內 host 半):創建僅屬主可訪問的 AF_UNIX socket(父目錄 0700、socket 0600),通過 DSH 共享連接解析配置的 Bot,以 mode: 'queue' 投遞提示,並按 rpcId 將 session/event 關聯到對應請求。
  • acp_bridge.py(OpenBot 啓動的獨立進程):在 stdin/stdout 上實現 ACP,作爲客戶端連接上述 socket;僅聲明支持文本與 resource_link 類提示;取消某條提示時關閉該提示自己的連接,而非全局 cancel,避免打斷 Bot 上無關任務。

環境與依賴

使用前請對照 README 與 package.json 的 engines 字段:

  • DSH:>=0.2.1-rc.3 且 <0.3.0,並已安裝 DS Bot 插件且至少有一個 Bot 會話。
  • Node:>=22.19(package.json 寫爲 >=22.19.0)。
  • Python:3.9+(運行 ACP 前端 acp_bridge.py)。
  • 操作系統:macOS 或 Linux(依賴 AF_UNIX socket)。

安裝與配置

1、把 host 半裝進 DSH profile

官方 README 給出的安裝方式如下(路徑請換成你本機 clone 或下載後的目錄):

pnpm add link:/path/to/dsh-openbot-artist-bridge
# or: pnpm add github:shiyoungwoo/dsh-openbot-artist-bridge

說明:這是通過 pnpm 把插件包鏈入 profile,不是 dsh plugin add 形式的命令;以 README 原文爲準。

2、寫入 bundle 配置

將倉庫中的 cordis.patch.yml 複製進 profile 的 bundle 列表,或在自有 profile 補丁里覆蓋對應行。示例(佔位值需替換):

- id: local-openbot-artist-bridge
  name: '@local/dsh-openbot-artist-bridge'
  config:
    botId: session-your-bot-session-id
    socketPath: /absolute/path/to/dsh-openbot-artist-bridge/runtime/bridge.sock
    timeZone: Asia/Shanghai

配置項含義(README 中文說明與 Security notes 一致):

字段 說明
botId 必填,指向 DSH 裏已有 Bot 會話
socketPath 必填,acp_bridge.py 與 runtime.mjs 共用的 socket 絕對路徑
timeZone 默認 Asia/Shanghai
lookupTimeoutMs 可選,默認 15000
promptTimeoutMs 可選,默認 3600000

真實 botId、socketPath 應寫在 profile 覆蓋裏,不要提交到共享倉庫。

3、在 OpenBot 註冊 ACP 前端

在 OpenBot 中添加自定義 Agent,通過 stdin/stdout 啓動 Python 橋接腳本。示例(路徑改爲本機絕對路徑):

{
  "id": "dsh",
  "name": "DeepSeek Harness",
  "command": "/usr/bin/python3",
  "args": ["/absolute/path/to/dsh-openbot-artist-bridge/acp_bridge.py"]
}

若修改了 socketPath,需給 acp_bridge.py 傳入 --socket <path>;否則默認使用腳本同目錄下 runtime/bridge.sock。

4、重啓或啓用插件

重啓 DSH,或在 Plugins 頁面切換對應 bundle,即可從 OpenBot 向該 DS Bot 發話。

典型用法流程

經過上面的步驟,日常使用可以概括爲:

  1. 在 DSH 中保持目標 DS Bot 會話可用(插件不負責創建會話)。
  2. 啓動 DSH,確保 openbot-artist-bridge 的 host 半監聽配置的 socketPath。
  3. 在 OpenBot Desktop 中選擇註冊的「DeepSeek Harness」類 Agent,正常發起對話;ACP 經 acp_bridge.py 進入 socket,再由 runtime.mjs 進入 DS Bot 的 queue 模式提示鏈路。

插件對 prompt 類型的支持以 ACP 前端聲明爲準:文本與 resource_link;其它能力未在 README 中承諾。

安全與運行權限

  • Socket 僅屬主可訪問;若同一 turn 中有其它 DSH 用戶的 prompt 被檢測到,會拒絕並給出可讀說明,而不是靜默合併。
  • 單幀大小上限 8 MiB。
  • 插件在當前 DSH 進程權限下運行;安裝前應閱讀倉庫源碼與 MIT 許可證,確認 botId 指向的會話與工作區符合你的預期。

社區插件目錄站點與 DeepSeek / 幻方無官方從屬關係;本插件同樣屬於 DSH「一切皆插件」生態中的第三方客戶端擴展。

倉庫結構與自測

主要文件(README Files 節):

  • index.js — 插件入口,聲明配置並在 effect 中啓動 bridge。
  • runtime.mjs — host 半:socket 服務、Bot 解析、提示 relay。
  • acp_bridge.py — OpenBot 用的獨立 ACP 前端。
  • cordis.patch.yml — 帶佔位配置的 bundle 補丁。

維護者提供的測試命令:

npm test        # host half: real AF_UNIX socket, queueing, rpcId correlation, security cases
npm run test:acp  # ACP frontend: real stdin/stdout against a fake socket server

結尾

dsh-openbot-artist-bridge 解決的是「OpenBot ACP 前端 + DSH 內已有 DS Bot」之間的協議與進程邊界問題:一條 socket、同一 botId,讓 OpenBot 與 DSH 共用 Bot 身份、記憶與工作區,而不重複造 Bot。

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

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

小夜