dsh-acp-for-bitfun:通過 ACP 把 BitFun 接入 DSH 作爲 subagent

前言

在 DeepSeek Harness(dsh)裏跑多智能體協作時,常見做法是在主會話裏直接掛一堆工具,或者自己寫橋接層把外部 Agent 接進來。BitFun 本身提供基於 Agent Client Protocol(ACP)v1 的 CLI 服務,但 dsh 會話並不會自動識別它。

dsh-acp-for-bitfun 是一個 dsh 插件 bundle,通過 ACP over stdio 把 BitFun 註冊爲 dsh 的 subagent provider。安裝並啓用後,dsh 裏任意會話都可以用 subagent_bitfun 工具把任務委託給 BitFun 執行,而不必在主會話裏重複實現 BitFun 的能力。

下面介紹這個插件的定位、工作原理、安裝配置與驗證步驟。事實依據來自 SkillHub 目錄頁GitHub 倉庫 README

這是什麼

dsh-acp-for-bitfun 由維護者 bobleer 發佈,分類爲聯網工具,當前版本 0.1.0,許可證 MIT。

一句話定位:把 BitFun Agent Runtime 以 subagent 形式暴露給 dsh,模型通過 subagent_bitfun 工具調用 BitFun 完成任務。

工作原理

插件複用 dsh 官方的 @deepseek-ai/dsh-subagent-acp 作爲 ACP 客戶端,並通過 @deepseek-ai/dsh-tool-subagent 掛載工具。每次委託會 spawn 一個獨立的 bitfun acp 子進程,完成 initialize → session/new → session/prompt,流式收集 agent_message_chunk,任務結束後按 EOF 寬限 6s → SIGTERM → SIGKILL 的順序關閉子進程。

dsh 會話 ──subagent_bitfun 工具──▶ dsh-subagent-acp (ACP 客戶端)
                                        │ 每個任務 spawn 一個獨立進程
                                        ▼
                              bitfun acp (ACP server, stdio JSON-RPC)
                                        │
                                        ▼
                              BitFun Agent Runtime

BitFun 子進程在 SIGTERM 下立即退出,會話數據由 BitFun 自身持久化。

前置條件

安裝插件前,先確認以下環境可用:

  1. BitFun CLI:安裝後運行 bitfun acp doctor 應通過(BitFun 的 ACP server 內置於 CLI)。要求 BitFun >= 0.2.17
  2. dshnpx @deepseek-ai/dsh --version,需要 >= 0.1.0-rc.6,與插件依賴的 subagent 包版本匹配。
  3. pnpmdsh plugin 通過 pnpm 安裝 bundle。

deepseek-harness 目前處於 developer preview,插件依賴其 rc 版本;升級 dsh 時請同步升級本 bundle。

安裝與啓用

先把 bundle 加進你的 dsh profile,再啓動 web 界面:

# 從 npm 安裝
dsh plugin --profile web add dsh-acp-for-bitfun

# 或從本地 checkout 安裝
dsh plugin --profile web add ./dsh-acp-for-bitfun

# 啓動
dsh web

加載時插件會用 bitfun --version 探測 BitFun CLI。若不在 PATH 上,啓動會直接失敗(fail loud),錯誤信息會提示安裝 BitFun 或配置絕對路徑。

配置

在 profile 的 cordis.patch.yml(路徑爲 $DSH_HOME/profiles/<name>/cordis.patch.yml)裏按 id 覆蓋:

- id: bitfun-acp
  name: dsh-acp-for-bitfun
  config:
    command: /absolute/path/to/bitfun   # 默認 'bitfun'(PATH 解析)
    providerName: bitfun                # 默認 'bitfun'
    toolName: subagent_bitfun           # 默認 'subagent_bitfun'
    permission: reject                  # 'reject' | 'allow'
    acpArgs: ['acp']                    # 默認 ['acp']
    env: {}                             # 傳給 BitFun 子進程的額外環境變量
    checkOnStart: true                  # 加載時探測 bitfun,缺失則啓動失敗
配置項 默認值 說明
command bitfun BitFun CLI 可執行文件:PATH 上的名字或絕對路徑
providerName bitfun ctx.subagents 上的 provider 名
toolName subagent_bitfun 模型可見的工具名
permission reject BitFun 權限請求的自動應答策略(reject / allow
acpArgs ['acp'] 追加在 command 後的參數
env {} BitFun 子進程的額外環境變量
checkOnStart true 加載時探測 command --version,缺失則 fail loud

permission 設爲 reject 時,BitFun 發起的權限請求會被自動拒絕;若你希望 BitFun 在無人工確認下執行更多操作,可改爲 allow,但需自行評估風險。

驗證

經過上面的安裝與配置,按下面三步確認插件可用:

  1. BitFun 側自檢:
   bitfun acp doctor
  1. 在 dsh 配置樹裏確認插件行:
   dsh --profile web --dump-config | grep -A 2 bitfun
  1. 在 dsh 會話裏讓模型調用 subagent_bitfun 工具,委託一個簡單任務(例如「用 subagent_bitfun 回覆 hello」),確認返回 BitFun 的輸出。

典型用法

啓用插件後,主會話中的模型會把 BitFun 當作 subagent 工具使用。你不需要手寫 ACP 客戶端代碼;只要在對話裏描述任務,模型即可通過 subagent_bitfun 把執行交給 BitFun。

例如驗證階段可以讓模型執行:「用 subagent_bitfun 回覆 hello」。每次調用都會啓動獨立的 bitfun acp 進程,適合把 BitFun 擅長的聯網檢索、代碼執行等能力 offload 到專用 Agent,而主會話繼續負責編排與彙總。

適用場景與注意

適合誰

  • 已在用 dsh 編排多步任務,希望把部分子任務交給 BitFun 的開發者。
  • 需要標準 ACP 對接、不想自己維護 stdio JSON-RPC 橋接的團隊。
  • 想在同一 dsh profile 裏組合多個 subagent provider 的場景。

注意事項

  • 插件以當前 dsh 進程的權限運行;BitFun 子進程繼承相同權限與環境。安裝前應檢查源碼與 MIT 許可證,確認 permission 策略符合你的安全要求。
  • checkOnStart: true 時,BitFun CLI 缺失會導致 dsh 啓動失敗,這是有意爲之的 fail loud 行爲。
  • SkillHub 是面向中國用戶的 Skills 社區目錄,與 DeepSeek / 幻方無官方從屬關係;插件分發與維護以 GitHub 倉庫爲準。

鏈接

  • SkillHub 目錄頁:https://www.skillhub.cn/plugins/bobleer/dsh-acp-for-bitfun
  • GitHub 倉庫:https://github.com/bobleer/dsh-acp-for-bitfun
羽毛球分组比赛记分
小程序二维码

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

小夜