dsh-rtk-optimizer:壓縮 Shell 可見輸出與 RTK 命令改寫建議

前言

在 DeepSeek Harness 裏跑智能體時,bash 或 shell 工具會把大段終端原文塞進模型可見的 content。測試通過行、重複日誌和 ANSI 着色會佔上下文,卻不一定幫助下一步推理。若還要把本地命令交給 RTK(Reduce Token Kit)做改寫,通常得另裝工具、自己拼流程。下面介紹社區插件 dsh-rtk-optimizer:在 tools/post-execute 階段對指定 shell 工具做有損文本投影,並暴露顯式工具調用 RTK 的 rewrite,不依賴外部付費服務。

這是什麼

dsh-rtk-optimizer(npm 包名 @lightjunction/dsh-rtk-optimizer,v0.1.0)由維護者 LIghtJUNction 發佈,分類爲工作流。它做兩件事:壓縮 DSH shell 工具返回給模型的可見輸出;在需要時通過 rtk_rewrite 給出本地 RTK CLI 的命令改寫建議。實現思路參考 MasuRii/pi-rtk-optimizer(MIT),這是面向 DSH 的獨立實現,未複製上游源碼;與 pi 版差異見 README 中的「v0.1 與 pi 來源的差異」。

核心功能

自動壓縮模型可見 content

默認監聽 bash、shell 的 tools/post-execute(DeepSeek Harness 0.2.1-rc.2 下官方 dsh-tool-bash 註冊名是 bash)。插件會:

  • 去掉 ANSI 控制序列;
  • 聚合逐條成功測試行、合併連續重複的普通輸出;
  • 僅在 UTF-8 字節數確實變少時採用結果,不截斷輸出;
  • 保留失敗、錯誤、警告和退出狀態相關文本。

只改模型可見的 content,保留工具 schema 校驗後的 canonical value、stdout/stderr 和退出碼。PTC 程序拿到的 value 不會變短;這不是對原始日誌、賬單或精確 token 的壓縮。不處理 read/edit/hashline 工具或基礎設施失敗結果;其他 post-policy 的 block 或 value 替換仍會被尊重。

三個 Cordis 工具

安裝並重啓 profile 後,應能看到 rtk_rewrite、rtk_compact、rtk_stats。

rtk_rewrite:傳入待分析的 shell 命令字符串,在宿主側執行 rtk rewrite <完整命令>,不會執行建議後的命令。返回 command、rewritten、available、reason。未安裝 RTK 時保留原命令並設 available:false;rewrite 階段進程上限 3 秒,支持取消,並限制輸出大小。上游 rewrite 退出碼 0/3 視爲成功,1 表示無需改寫。

rtk_compact:對已有終端文本做顯式壓縮,單次最多 1 MiB;不應傳入源碼或編輯錨點。

rtk_stats:參數爲 {},返回本插件實例生命週期內自動處理的文本塊數量及原始/輸出字節量;非按 session 持久統計,多個文本塊分別計數。

輸出壓縮不需要安裝 RTK;只有命令建議依賴 PATH 中的 rtk 可執行文件。

安裝與啓用

環境要求:Node.js 24+、DeepSeek Harness 0.2.1-rc.2。當前爲源碼交付,README 未表示 npm 已公開發布。

在已安裝 monorepo 依賴的目錄執行:

npm run check --workspace @lightjunction/dsh-rtk-optimizer
cd plugins/dsh-rtk-optimizer
npm pack
dsh plugin --profile web add "$PWD/lightjunction-dsh-rtk-optimizer-0.1.0.tgz" --ignore-scripts

重啓目標 profile(示例爲 web,其他 profile 替換 web),確認三個 RTK 相關工具已註冊。

本地校驗:

npm run check --workspace @lightjunction/dsh-rtk-optimizer

典型用法

命令改寫建議

{"command":"git status"}

模型或流程調用 rtk_rewrite 並傳入上述參數即可;插件用參數數組啓動 RTK,不代爲執行改寫後的 shell。

顯式壓縮終端文本

{"text":"<測試或構建終端輸出>"}

調用 rtk_compact,傳入需要投影的終端輸出字符串。

配置項

字段 含義
root 宿主絕對工作區路徑;默認來自當前 agent 的 workingDirectory;無 agent 時調用 rtk_rewrite 必須設置
executable RTK 可執行文件路徑
auto 默認 true;false 關閉自動 content 轉換,仍保留三個工具
toolNames 默認 bash/shell;設爲 [] 表示不監聽任何工具

本地 RTK 進程只使用宿主文件系統,不接入 DSH remote world/sandbox。禁用 auto 可用於需要完整終端證據的場景。其他工具的 finalizeContent 仍可能再次覆蓋 content,本插件不能保證任意第三方插件組合下的最終 content。

適用場景與注意

適合:長期在 DSH 裏用 bash/shell 跑測試與構建、希望在不丟失敗信息的前提下減小模型可見噪音;已安裝 RTK、希望由智能體顯式調用 rtk_rewrite 獲取改寫建議(首版不會自動改寫已派發的 bash 命令,與 pi 上游行爲不同)。

能力與邊界(README 已說明):v0.1 僅含 ANSI、成功測試行與連續重複行處理,不具備上游全部構建/lint/Git 語義過濾、源碼過濾、TUI 設置或截斷策略;不替代 dsh context pruner。

插件以當前 dsh 進程權限在宿主文件系統上運行;安裝前請閱讀倉庫源碼與 MIT 許可證(含 UPSTREAM.md、NOTICE)。DSH 社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-rtk-optimizer 把 shell 輸出的模型側投影和 RTK 改寫建議收進同一套 DSH 插件:自動壓縮可關、改寫走顯式工具、canonical 值與 stderr 仍保留供程序使用。

  • 目錄頁:https://www.skillhub.cn/plugins/LIghtJUNction/dsh-rtk-optimizer
  • 倉庫:https://github.com/LIghtJUNction/dsh-rtk-optimizer
羽毛球分组比赛记分
小程序二维码

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

小夜