前言¶
在 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、socket0600),通過 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 發話。
典型用法流程¶
經過上面的步驟,日常使用可以概括爲:
- 在 DSH 中保持目標 DS Bot 會話可用(插件不負責創建會話)。
- 啓動 DSH,確保 openbot-artist-bridge 的 host 半監聽配置的
socketPath。 - 在 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。