DeepSeek Harness 的 rtk 命令改寫橋

前言

在用 DeepSeek Harness(DSH)寫智能體時,經常會遇到 shell 命令輸出太長、上下文被佔滿的問題。傳統做法要麼讓模型重試、要麼手動截斷,體驗並不順滑。rtk(Runtime Token Keeper)能對命令輸出做壓縮,但需要顯式調用 rtk rewrite。dsh-rtk-bridge 這個插件把這兩件事串起來:讓模型調用 pwsh / bash 時,插件自動用 rtk 查找等價命令並改寫執行,把壓縮後的輸出直接放進上下文。

這是什麼

dsh-rtk-bridge 是 DeepSeek Harness 的一個工作流插件,由 b1inkie 維護。它包裝 DSH 的 shell 工具,在模型發起 pwsh 或 bash 時,先嚐試用 rtk rewrite 改寫命令。命中等價命令後,執行改寫後的命令,讓 rtk 的壓縮輸出進入上下文;如果改寫失敗(rtk 缺失、無等價命令、改寫不安全等),則原樣執行。

核心功能

  • 自動改寫並執行:插件包裝 shell 工具的 execute,直接運行 rtk ...,不需要模型重試。
  • 支持 pwsh / bash:Windows 走 pwsh,Linux / macOS 走 bash。
  • 失敗放行:rtk 缺失、版本過舊、無等價命令、超時、改寫結果不安全時,執行原命令。
  • Windows 安全名單:不會把 ls / grep / find 等改寫成 Windows 上不可用的 rtk 子命令。
  • 防重複前綴:rtk ...、rtk.exe ... 以及帶環境變量前綴的 rtk 命令原樣執行。
  • 清理噪音:移除 rtk 輸出裏的 [rtk] No hook installed 等提示。
  • 兜底:工具定義不可寫時自動切到 tools/execute 短路,繼續改寫。
  • 狀態命令:/rtk 查看 rtk 路徑、版本、計數、沙箱狀態,並可運行時開關。

要求

  • DeepSeek Harness(已在 0.1.5-rc.1 驗證)
  • rtk >= 0.23.0
  • Node >= 22.19

rtk 安裝:https://www.rtk-ai.app/docs/getting-started/installation/

不想手動裝:裝完插件後在 DSH 裏執行:

/rtk install

它會從官方 GitHub Release 下載當前平臺的 rtk,校驗 checksums.txt 裏的 SHA256,解壓到 ~/.dsh/rtk-bridge/bin,不需要自己找二進制或改 PATH。

插件查找順序:

  1. rtkPath 配置
  2. DSH_RTK_BIN / RTK_BIN
  3. /rtk install 安裝的 ~/.dsh/rtk-bridge/bin/rtk[.exe]
  4. PATH 上的 rtk / rtk.exe
  5. ~/.local/bin、~/.cargo/bin、%LOCALAPPDATA%\Programs\rtk、WinGet Links

安裝

插件市場(桌面端)

「設置 → 插件市場 → 自定義安裝 → GitHub」:

https://github.com/b1inkie/dsh-rtk-bridge

命令行

dsh plugin --profile web add -w "github:b1inkie/dsh-rtk-bridge#<commit-sha>"

本地開發

# dev.patch.yml
- insert:
    - id: rtk-bridge-dev
      name: 'D:/path/to/dsh-rtk-bridge/lib/index.js'
      config:
        debug: true
dsh --profile web --patch D:/path/to/dev.patch.yml

配置

在 profile 的 cordis.patch.yml 中覆蓋:

- id: rtk-bridge
  config:
    enabled: true
    mode: rewrite            # rewrite | suggest
    intercept: auto          # auto | patch | dispatch
    tools: [pwsh, bash]
    rtkPath: ''
    installVersion: latest   # 或固定 X.Y.Z
    downloadBase: https://github.com/rtk-ai/rtk/releases
    timeoutMs: 2000
    excludedSubcommands: []
    rewriteWhenConfined: false
    debug: false
字段 默認 說明
enabled true 總開關
mode rewrite rewrite 執行改寫命令;suggest 改爲 deny 並提示改寫命令
intercept auto auto 包裝 execute,失敗時切 dispatch;patch 只包裝;dispatch 只走 tools/execute 短路
tools [pwsh, bash] 要攔截的 shell 工具
rtkPath '' 顯式指定 rtk 可執行文件
installVersion latest /rtk install 下載的版本,可填 X.Y.Z
downloadBase 官方 releases 下載源,GitHub 不可達時可換鏡像
timeoutMs 2000 rtk rewrite 超時
excludedSubcommands [] 不改寫的 rtk 子命令
rewriteWhenConfined false Windows 受限沙箱裏是否強制嘗試
debug false 輸出改寫日誌

/rtk 命令

命令 作用
/rtk / /rtk status rtk 路徑、版本、工具狀態、計數器、沙箱狀態
/rtk verify 重新探測 rtk
/rtk install [version] 下載並安裝 rtk(SHA256 校驗)
/rtk rewrite git status 預覽改寫結果
/rtk gain rtk 全局節省統計
/rtk on / /rtk off 運行時開關
/rtk stats 改寫 / 回退 / 失敗計數

典型用法

執行一次 git status 後,/rtk status 的 rewrites 應增加;/rtk gain 可查看 rtk 自己的統計。

rtk --version
rtk rewrite "git status"

適用場景與注意

  • 適合希望減少命令輸出長度、避免模型被長文本佔滿上下文的工作流。
  • 插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證。
  • Windows 受限沙箱下(read-only / workspace-write),rtk 無法抓取子進程輸出,插件默認暫停改寫,原命令照常執行。需要完整功能請使用 danger-full-access。
  • 只處理 shell 工具(pwsh / bash),不處理 read / grep / fs 等原生工具。
  • 壓縮由 rtk 完成,DSH 負責超長截斷。

短結尾

dsh-rtk-bridge 讓 rtk 的命令改寫能力在 DSH 中無縫接入,減少模型輸出壓力。插件主頁:https://github.com/b1inkie/dsh-rtk-bridge

羽毛球分组比赛记分
小程序二维码

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

小夜