把 BitFun agent 通过 ACP 协议接入 DSH,会话中可用 subagent_bitfun 工具把任务委托给 BitFun 执行。
- 语言
- JavaScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add github:bobleer/dsh-acp-for-bitfun在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 bobleer/dsh-acp-for-bitfun:先查看仓库 https://github.com/bobleer/dsh-acp-for-bitfun.git 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
把 BitFun 这个本地 agent 通过 ACP(Agent Client Protocol)接入 DSH,让模型在 dsh 会话里通过 subagent_bitfun 工具把任务转交给 BitFun 执行,免去手动在两个工具之间来回切换。
核心能力
- 在 DSH 里注册 BitFun 作为 subagent provider,模型可以直接调用
- 每次委托启动一个独立的
bitfun acp子进程,跑完自动回收 - 通过流式通道回传 BitFun 的
agent_message_chunk,主会话能看到过程 - 加载时探测
bitfunCLI 是否可用,缺失直接 fail loud,避免运行中才报错 - 支持覆盖工具名、权限应答策略、子进程参数和环境变量
- 复用 dsh 官方
subagent-acp与tool-subagent两个包,无需自己实现 ACP 客户端
技术实现
- 语言: JavaScript(ESM,
"type": "module") - 关键依赖:
@deepseek-ai/dsh-subagent-acp(ACP 客户端)、@deepseek-ai/dsh-tool-subagent(挂载模型可见工具)、@deepseek-ai/schemastery(配置 schema) - 架构模式: DSH Cordis bundle patch ——
cordis.patch.yml注入一个bitfun-acp插件节点,index.js的apply(ctx, config)在节点挂载时探测 CLI、注册 provider、再挂载工具 - 入口文件:
index.js
适用场景
你已经在用 BitFun 做日常编码/重构,又同时使用 DSH 做 AI 协作,希望让 DSH 的模型把"派给 BitFun"的活儿在一次对话里自动完成,不用中途切窗口、复制粘贴。同时也适合把 BitFun 接到 DSH 的多 agent 流水线里,让它作为下游执行单元被调度。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness (dsh) | >= 0.1.0-rc.6 | 与插件依赖的 subagent 包对齐 |
| BitFun CLI | >= 0.2.17 | 内置 ACP v1 server,需通过 bitfun acp doctor 自检 |
| Node.js | 未声明 | 源码未声明,由宿主 dsh 决定 |
| 平台 | 跨平台 | 纯 JS + Node 子进程,未声明 OS/CPU 限制 |
| 原生模块 | 无 | 依赖均为纯 JS |
安装方式
dsh plugin --profile web add github:bobleer/dsh-acp-for-bitfun
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
command | 字符串 | BitFun CLI 可执行文件:PATH 上的命令名或绝对路径 | bitfun |
providerName | 字符串 | DSH 里这个 provider 的注册名,用于工具路由 | bitfun |
toolName | 字符串 | 模型在会话里看到的工具调用名 | subagent_bitfun |
permission | allow / reject | BitFun 询问权限时自动应答的策略 | reject |
acpArgs | 字符串数组 | 跟在 command 后面的额外参数 | ['acp'] |
env | 键值对 | 透传给 BitFun 子进程的环境变量 | {} |
checkOnStart | 布尔 | 加载插件时是否探测 CLI 是否可用 | true |
常见问题
Q: 用这个插件需要先装 BitFun 吗?
A: 是的。插件加载时会探测 bitfun 命令,找不到就直接报错退出,不会等到第一次委托才失败。请按 README 装好 BitFun CLI,并跑 bitfun acp doctor 确认 ACP server 正常。
Q: 模型在会话里看到的是什么工具名?
A: 默认是 subagent_bitfun。如果你启用了其他 subagent 工具想避免重名,可以把配置里的 toolName 改成别的名字。
Q: BitFun 不在 PATH 里怎么办?
A: 在 profile 配置里把 command 改成 BitFun 可执行文件的绝对路径,比如 /usr/local/bin/bitfun,插件就不会再依赖 PATH 查找。
Q: BitFun 在执行中弹出权限请求怎么处理?
A: 配置项 permission 控制自动应答。默认 reject(拒绝),保守安全;如果跑的是批量脚本不希望被打断,可以改成 allow 一律放行。
Q: dsh 主版本要求是什么?
A: 需要 >= 0.1.0-rc.6,和插件依赖的 subagent 包版本严格对齐。deepseek-harness 目前还是 developer preview,升级 dsh 时建议同步升级这个 bundle。
Q: 任务数据存在哪里?
A: BitFun 子进程自己负责持久化,dsh 这边只负责启子进程、回传结果、回收子进程。具体存哪、用什么格式,由 BitFun 自己决定。
Q: 怎么卸载?
A: 在对应 profile 里把 dsh-acp-for-bitfun 这一行从 cordis.patch.yml 移除,或用 dsh plugin remove 卸载;之前产生的 BitFun 会话数据不受影响。
上手难度
入门 — 只要装好 BitFun CLI 并把 bundle 加到 profile,模型就能在下次会话直接调用 subagent_bitfun,零代码门槛;进阶场景(自定义路径、权限放行、批量任务)只需改几行 YAML。
已知问题与限制
- 暂未发布到 npm registry,目前需要从 GitHub 安装(来源:TODO.md)
- 没有自动化冒烟测试覆盖 ACP 协议层的 initialize/prompt 往返(来源:TODO.md)
- 当前依赖锁定在
0.1.0-rc.6,需随 dsh rc 节奏手动升级(来源:TODO.md) - 每次委托都冷启动一个
bitfun acp子进程,没有连接复用,长任务频繁调度时开销较大(来源:TODO.md) checkOnStart=true时,BitFun CLI 缺失会让插件加载直接失败而非优雅降级(来源:index.js:74-84)
BitFun 支持 ACP deepseek-harness。
一个 DeepSeek Harness (dsh) 插件 bundle:
通过 Agent Client Protocol (ACP) v1 over stdio 把 BitFun
接入 dsh,作为 dsh 会话的 subagent。dsh 里任意会话都可以用 subagent_bitfun
工具把任务委托给 BitFun 执行。
工作原理
dsh 会话 ──subagent_bitfun 工具──▶ dsh-subagent-acp (ACP 客户端)
│ 每个任务 spawn 一个独立进程
▼
bitfun acp (ACP server, stdio JSON-RPC)
│
▼
BitFun Agent Runtime
- 本 bundle 复用 dsh 官方的
@deepseek-ai/dsh-subagent-acp作为 ACP 客户端:每次委托启动一个全新的bitfun acp子进程,完成initialize → session/new → session/prompt并流式收集agent_message_chunk。 - 工具通过
@deepseek-ai/dsh-tool-subagent挂载,模型见到的工具名默认为subagent_bitfun。 - 任务结束时关闭子进程 stdin(EOF 宽限 6s → SIGTERM → SIGKILL),BitFun 子进程 在 SIGTERM 下立即退出,会话数据由 BitFun 自身持久化。
前置条件
- BitFun CLI:安装后确认
bitfun acp doctor通过(BitFun 的 ACP server 内置于 CLI)。 - dsh:
npx @deepseek-ai/dsh --version, 需要>= 0.1.0-rc.6(与依赖的 subagent 包版本匹配)。 - pnpm:
dsh plugin通过 pnpm 安装 bundle。
安装
# 把 bundle 加进你的 dsh profile(从 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 |
验证
-
BitFun 侧自检:
bitfun acp doctor -
dsh 配置树里确认插件行:
dsh --profile web --dump-config | grep -A 2 bitfun -
在 dsh 会话里让模型调用
subagent_bitfun工具,委托一个简单任务 (例如 "用 subagent_bitfun 回复 hello"),确认返回 BitFun 的输出。
兼容性
- BitFun
>= 0.2.17(ACP v1 server,bitfun acp)。 - dsh
>= 0.1.0-rc.6。 - deepseek-harness 目前处于 developer preview,插件依赖其
rc版本, 升级 dsh 时请同步升级本 bundle。
License
收录徽章
[](https://deepseek-plugin.org/plugins/bobleer/dsh-acp-for-bitfun)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。