DeepTrial/dsh-bash-rtk:把符合条件的 DSH bash 命令交给 rtk 压缩输出

前言

在 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 status
  • cargo 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

插件提供:

  • RtkBashExecutor
  • RtkSandboxBashExecutor

其中还包含一个可选 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.0
  • PATH 中存在 rtk
  • 运行 rtk --version 时退出码为 0

这里有一点要特别注意:插件不会打包、安装、固定或管理 rtk。用户需要单独安装并更新 rtkrtk 的版本和插件版本相互独立,不需要保持一一对应。

安装插件

下面命令从 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

可以把它理解成一个执行前的命令解析层:

  1. 先判断命令是否简单。
  2. 再判断命令是否属于可路由范围。
  3. 最后判断 rtk 是否可用。
  4. 只有同时满足条件,才把命令改写为 rtk <command>
  5. 任何一步不满足,命令都保持原样执行。

配置与版本边界

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
  • 在启用前会检查插件源码、依赖和许可证。

使用前要注意

  1. 插件默认禁用,安装后不启用就不会改变执行链路。
  2. 插件不安装、不固定、不管理 rtk
  3. rtk 版本和插件版本相互独立。
  4. 所有 @deepseek-ai/dsh-* peer 依赖都是 optional,缺失时插件仍会以透传方式运行。
  5. dsh 版本范围明确排除了 0.2.0+
  6. 插件会以当前 dsh 进程具备的权限执行命令,因此安装前应检查源码与许可证。
  7. 本文只依据已核实资料描述命令白名单;完整白名单未包含在已核实材料中,不应据此推断所有命令都会或不会经过 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 / 幻方无官方从属关系,也不是官方应用商店。
羽毛球分组比赛记分
小程序二维码

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

小夜