前言¶
在 DeepSeek Harness(DSH)裏做智能體時,工具輸出會直接進入模型上下文。像 bash、job_output 這類工具,有時會返回很長的命令輸出;如果原樣交給模型,會明顯增加 token 和上下文佔用,但也可能丟掉退出碼、超時、信號等狀態信息。
dsh-rtk-filter 的處理方式是:當工具結果滿足條件時,把正文交給外部 rtk CLI 精簡,再把 RTK 的輸出作爲模型可見內容。它不改寫工具的 canonical value,也保留末尾狀態標記;外部依賴不可用或失敗時,會靜默回退到原始輸出。
DSH 插件生態中的社區目錄是獨立站點,不是 DeepSeek 或幻方的官方應用商店。
這是什麼¶
dsh-rtk-filter 是一個 DSH 插件,由 Aeternus123 維護,許可證爲 MIT。
它的作用是:把過大的命令輸出通過外部 rtk CLI 管道處理,然後把 RTK 精簡後的文本交給模型,而不是把原始大段文本直接放進模型上下文。它註冊的是 tools/post-execute result transformer,在工具 dispatch 之後、lossless materialization 之前替換模型可見內容。
它依賴外部 rtk CLI。若 rtk 不存在、執行失敗、超時、被取消、沒有輸出或輸出無變化,插件會保留原始輸出。
核心功能¶
- 只處理符合條件的結果:
accept決策、非失敗結果、工具名在配置列表中、內容爲純文本、字節數不低於minBytes。 - 註冊
tools/post-executeresult transformer,替換的是模型可見內容,不改工具 canonical value。 - 保留末尾狀態標記,例如:
[exit code: N][killed by signal: ...][timed out after Nms][sandbox: ...][status: ...]- 當
rtk缺失、非零退出、超時、被取消、無輸出或輸出未變化時,靜默降級爲原始輸出。 - 支持裸命令名。若配置裏寫
rtk,插件會探測候選目錄,例如: ~/.cargo/bin/opt/homebrew/bin/usr/local/bin/opt/local/bin~/.local/bin- 支持
rtk pipe模式,也支持可選 filter,例如-f cargo-test。
安裝與啓用¶
準備 rtk¶
先確認本機已經安裝 rtk。例如:
brew install rtk
如果未安裝,插件會靜默降級,不會讓命令執行失敗。
GitHub 安裝¶
用 DSH CLI 安裝:
dsh plugin --profile web add github:Aeternus123/dsh-rtk-filter
這條命令以 web profile 爲例。安裝後,包內自帶的 cordis.patch.yml 會自動生效。
本地掛載¶
如果是本地開發,也可以把插件掛到 profile 的 node_modules 裏:
mkdir -p ~/.dsh/profiles/web/node_modules
ln -s /path/to/dsh-rtk-filter ~/.dsh/profiles/web/node_modules/dsh-rtk-filter
然後在 profile 的 cordis.patch.yml 裏追加掛載配置。
掛載配置¶
以下是一個基本配置示例:
- insert:
- id: rtk-filter
name: dsh-rtk-filter
config:
command: /opt/homebrew/bin/rtk
args: ['pipe']
minBytes: 2048
這段配置做了三件事:
- 指定
rtk可執行文件路徑。 - 使用
pipe模式,即 stdin 進原始文本,stdout 出精簡文本。 - 設置
minBytes: 2048,低於該字節數的輸出直接放行。
DSH 的 bash 工具使用非登錄 shell,可能不會繼承終端裏的 PATH。因此推薦寫 rtk 的絕對路徑,例如 /opt/homebrew/bin/rtk。如果寫裸名 rtk,插件會嘗試探測上面列出的候選目錄。
典型用法¶
通用 pipe 模式¶
最直接的配置是使用 pipe:
- insert:
- id: rtk-filter
name: dsh-rtk-filter
config:
command: /opt/homebrew/bin/rtk
args: ['pipe']
minBytes: 2048
pipe 模式對應“stdin 進原始文本,stdout 出精簡文本”的使用方式。
指定 filter¶
如果主要處理某類輸出,可以給 rtk pipe 指定 filter:
- insert:
- id: rtk-filter
name: dsh-rtk-filter
config:
command: /opt/homebrew/bin/rtk
args: ['pipe', '-f', 'cargo-test']
minBytes: 2048
這裏使用 -f cargo-test,適合主要處理 cargo 測試輸出的工作流。
需要注意:rtk pipe 只會在輸入匹配指定 -f filter 時才真正壓縮;不匹配的輸入會原樣透傳。插件檢測到輸出無變化時,也不會追加額外提示。
適用場景與注意¶
適合使用 dsh-rtk-filter 的場景:
- 智能體經常執行
bash、job_output等命令,輸出經常偏大。 - 希望減少模型上下文佔用,但保留退出碼、超時、信號等狀態標記。
- 已有
rtkCLI,並希望通過 DSH 插件統一管理輸出精簡邏輯。
使用前需要注意:
- 插件依賴外部
rtkCLI。rtk不可用或執行失敗時,插件保留原始輸出。 - 插件只改模型可見內容,不改工具的 canonical value。
rtk pipe配合-ffilter 時,不匹配輸入會原樣透傳。- DSH bash 工具可能不繼承終端 PATH,建議配置
rtk絕對路徑。 - 插件以當前 DSH 進程權限運行。安裝前應檢查源碼與 MIT 許可證。
- 運行環境要求 Node
>=20。 - Peer dependencies 包括:
@deepseek-ai/cordis ^4.0.0@deepseek-ai/dsh-llm ^0.1.0-rc.6@deepseek-ai/dsh-tools ^0.1.0-rc.6@deepseek-ai/schemastery ^3.18.0
鏈接¶
- GitHub:
https://github.com/Aeternus123/dsh-rtk-filter - 目錄頁:本文資料未提供已覈實 URL;可按插件名
dsh-rtk-filter在社區目錄中檢索。