前言¶
DeepSeek Harness (dsh) 的 terminal_read 工具通過 offset 和 count 分頁讀取保留的終端滾動緩衝區。當後端日誌輸出達到數萬行時,模型難以通過分頁定位感興趣的內容,只能從最新的輸出開始逐頁向後翻閱。dsh-tool-terminal-search 插件通過內容匹配解決了這個問題,允許模型通過子串或正則表達式直接檢索保留的日誌行。
簡介¶
這是一個爲 DeepSeek Harness (dsh) 提供的 terminal_search 工具插件,由 ystyle 維護。它屬於“聯網工具”類別,開源協議爲 MIT。該插件不修改上游包,而是基於公開的 ctx.terminals.read 接口構建,旨在讓模型在龐大的保留日誌中快速定位目標信息。
安裝與啓用¶
使用 dsh CLI 安裝插件,它會將 pnpm 命令轉發到配置文件目錄。安裝後,需要重啓 dsh 配置文件,模型才能獲得 terminal_search 工具。
- 執行安裝命令:
dsh plugin --profile web add dsh-tool-terminal-search
- 驗證安裝:
dsh plugin --profile web ls
- 重啓你的 dsh 配置文件。安裝完成後,模型將獲得
terminal_search工具,它與官方的terminal_open、terminal_send和terminal_read工具並列。
前置依賴:
- 需要安裝官方的 @deepseek-ai/dsh-tool-terminal 插件。
- 需要運行 dsh-terminal 或 dsh-terminal-bash 服務以支持 terminal_open、terminal_send 和 terminal_read。
核心功能¶
terminal_search 的行爲如下:
- 匹配模式:默認使用字面量子串匹配(類似
grep -F),無需轉義正則符號。若需正則表達式匹配,需傳入regex: true參數。 - 檢索範圍:插件會分頁讀取整個保留的滾動緩衝區(從最新到最舊),並在內存中匹配每一行。
- 返回順序:匹配到的行按時間倒序(最新優先)返回。
- 返回數據:
- 匹配的行內容。
- 每一行相對於最新的
offset,可直接用於後續的terminal_read調用。 - 精確的
matchCount(匹配數)、totalLines(保留總數)和truncated(是否被截斷)狀態。
- 性能機制:編譯後的正則表達式會經過一個全局的 FIFO 緩存,重複的模式不會重新編譯。
注意事項¶
- 版本要求:該插件依賴 dsh 0.1.2-alpha.5 發行版線。
- 數據範圍:搜索僅限於當前進程保留的滾動緩衝區(默認保留 10,000 行或 4MiB),與
terminal_read的行爲一致。 - 截斷處理:如果某一行讀取的字節數超過後端的
maxReadBytes,系統會減小分頁大小重試,以確保行偏移量準確。若單行超過閾值,該行會被截斷並標記truncated。 - 無上下文:插件僅返回匹配的行本身,不返回上下文行。若需上下文,需在獲取匹配行的
offset後,調用terminal_read讀取鄰近行。
生態背景¶
DeepSeek Harness 遵循“一切皆插件”的理念。本插件由社區開發者維護,收錄在獨立目錄中,與 DeepSeek 或幻方無官方從屬關係。插件開發過程包含類型檢查、單元測試和打包構建。
- 目錄地址:dsh-tool-terminal-search
- 源碼地址:GitHub