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
羽毛球分组比赛记分
小程序二维码

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

小夜