前言¶
在 DeepSeek Harness(DSH)这类“一切皆插件”的智能体运行框架里,bash 工具经常会产生冗长输出,例如构建日志、测试输出或仓库状态。dsh-bash-rtk 是 DeepTrial 维护的一个 DSH bash executor 插件,用来把符合条件的 shell 命令路由到 rtk(Rust Token Killer)处理,从而压缩工具输出、减少 token 消耗;工作目录、超时、环境变量、退出码和沙箱约束等执行语义保持不变。
下面介绍它的定位、能力、安装启用方式、典型用法,以及使用时的版本和安全边界。
这是什么¶
DeepTrial/dsh-bash-rtk 是一个 DSH bash executor 插件。
它的核心目标很具体:
- 在 DSH 的 bash executor 中识别符合条件的 shell 命令。
- 把简单且白名单内的命令交给
rtk执行。 - 让不适合的命令原样透传。
- 在
rtk不可用时退化为无操作透传。
已核实的基本信息如下:
- 维护方:
DeepTrial - 许可证:
MIT package.json版本:0.1.1- 仓库地址:https://github.com/DeepTrial/dsh-bash-rtk
核心功能¶
1. 只改写符合条件的命令¶
插件会对简单、白名单内的 shell 命令进行 rtk 包装。已给出的示例包括:
git status解析为rtk git statuscargo build --release解析为rtk cargo build --release
这意味着插件只处理它认为可以安全包装的命令,而不是把所有 bash 命令都强制改写。
2. 复杂命令原样透传¶
当命令包含 shell 元字符时,插件会保持原样,不改变实际执行的命令。已给出的示例是:
git status | grep x
该命令会保持为:
git status | grep x
原因是它属于复杂 shell 命令,不适合由插件静默改写。
3. 不在白名单中的命令也保持原样¶
已给出的示例是:
ls -la
该命令会保持为:
ls -la
原因是它不在插件认定的可路由命令范围内。完整白名单未包含在已核实资料中,因此这里只列 README 中已给出的示例。
4. rtk 不存在时自动退化为透传¶
如果 PATH 中没有 rtk,插件会把命令保持原样。已给出的示例是:
git status
在 rtk 缺失时,它仍然会保持为:
git status
这避免了因为缺少外部依赖而导致命令执行方式被改变。
5. 提供两套 executor¶
插件提供:
RtkBashExecutorRtkSandboxBashExecutor
其中还包含一个可选 overlay,用于替换默认 sandbox executor。这样可以在不同部署方式下选择更贴近原执行语义的 executor。
6. 支持强制开关 rtk 包装¶
配置项:
rtkAvailable: boolean
该字段用于强制开启或强制关闭 rtk 包装。适合在测试、非标准二进制路径部署,或明确希望绕过/启用 rtk 的场景中使用。
7. peer 依赖全部可选¶
插件声明了以下可选 peer 依赖:
"@deepseek-ai/dsh-bash-local"
"@deepseek-ai/dsh-bash-sandbox"
"@deepseek-ai/dsh-shell"
这些依赖全部标记为 optional。如果它们不存在,插件仍以透传方式运行,不会因此改变基础 bash 执行行为。
安装与启用¶
前提条件¶
使用前需要满足:
Node.js >= 20.0.0PATH中存在rtk- 运行
rtk --version时退出码为0
这里有一点要特别注意:插件不会打包、安装、固定或管理 rtk。用户需要单独安装并更新 rtk。rtk 的版本和插件版本相互独立,不需要保持一一对应。
安装插件¶
下面命令从 GitHub 最新 release tarball 安装插件:
dsh plugin --profile web add \
"https://github.com/DeepTrial/dsh-bash-rtk/releases/latest/download/dsh-bash-rtk-latest.tgz"
执行后,插件会被添加到 web profile,但此时并不会立即生效。
启用插件¶
插件默认处于禁用状态。安装后还需要在对应 profile 的 cordis.patch.yml 中启用:
- id: bash-rtk
disabled: false
启用后,重启或启动 DSH 使配置生效:
dsh web
经过上面的步骤,插件才会进入 DSH 的 bash 执行链路。
典型用法¶
下面这些示例来自已核实资料,可以直接用来理解插件的判定边界。
| 输入命令 | 解析后命令 | 原因 |
|---|---|---|
git status |
rtk git status |
简单且白名单内 |
cargo build --release |
rtk cargo build --release |
简单且白名单内 |
git status \| grep x |
git status \| grep x |
复杂 shell 命令,透传 |
ls -la |
ls -la |
不在白名单内,透传 |
git status,且 rtk 不存在 |
git status |
rtk 缺失,identity fallback |
可以把它理解成一个执行前的命令解析层:
- 先判断命令是否简单。
- 再判断命令是否属于可路由范围。
- 最后判断
rtk是否可用。 - 只有同时满足条件,才把命令改写为
rtk <command>。 - 任何一步不满足,命令都保持原样执行。
配置与版本边界¶
rtkAvailable¶
rtkAvailable 是插件提供的额外配置项,用于强制控制 rtk 包装。
它的取值类型为:
boolean
如果不依赖自动探测,或需要固定行为,可以显式设置这个字段。
dsh 版本范围¶
插件在 dsh.plugin.json 中声明的 dsh 版本范围是:
"engines": { "dsh": ">=0.1.0-rc.6 <0.2.0 || >=0.1.1-rc.1 <0.2.0-0" }
这个范围刻意排除了 0.2.0+。也就是说,该插件目前面向的是 0.1.x 预发布/构建线,不适用于未来可能的 0.2.0+ 主线。
适用场景与注意¶
适合谁¶
这个插件比较适合以下使用方式:
- 使用 DSH 的 bash 工具执行常见开发命令。
- 希望减少工具输出带来的 token 消耗。
- 希望插件默认保守,只在明确符合条件的命令上生效。
- 接受自行安装和更新
rtk。 - 在启用前会检查插件源码、依赖和许可证。
使用前要注意¶
- 插件默认禁用,安装后不启用就不会改变执行链路。
- 插件不安装、不固定、不管理
rtk。 rtk版本和插件版本相互独立。- 所有
@deepseek-ai/dsh-*peer 依赖都是 optional,缺失时插件仍会以透传方式运行。 dsh版本范围明确排除了0.2.0+。- 插件会以当前
dsh进程具备的权限执行命令,因此安装前应检查源码与许可证。 - 本文只依据已核实资料描述命令白名单;完整白名单未包含在已核实材料中,不应据此推断所有命令都会或不会经过
rtk。
结尾¶
DeepTrial/dsh-bash-rtk 的价值在于给 DSH 的 bash 执行链路增加一个保守、可关闭、可透传的 rtk 输出压缩入口。它只处理符合条件的简单命令,复杂命令、非白名单命令和 rtk 缺失场景都会保持原样,适合那些愿意单独维护 rtk、并希望减少 bash 工具输出的 DSH 使用者。
相关链接:
- GitHub:https://github.com/DeepTrial/dsh-bash-rtk
- 目录页:可在 DSH 社区目录中按
dsh-bash-rtk检索;社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,也不是官方应用商店。