dsh-context-proxy:爲 DeepSeek Harness 提供按需上下文檢索

前言

在 DeepSeek Harness(DSH)的智能體鏈路中,模型有時需要回看已經發生的會話內容,而不是一直把完整歷史壓在上下文裏。dsh-context-proxy 提供一層輕量的按需上下文檢索能力:它面向模型暴露幾個讀取工具,讓調用方可以按事件、窗口或文本片段從已持久化的 DSH 歷史中取回所需內容。

下面介紹 dsh-context-proxy 的定位、核心工具、安裝方式和使用注意事項。

插件定位

dsh-context-proxy 是一個面向 DeepSeek Harness 的薄層上下文檢索插件。

  • 維護者:EvilIrving
  • 許可證:MIT
  • 一句話定位:Thin on-demand context-retrieval layer for the DeepSeek Harness.

它主要解決的是“按需讀取已持久化歷史”的問題,給模型提供三個上下文檢索工具,而不是要求調用方自行解析完整會話日誌。

核心工具

dsh-context-proxy 提供三個工具:context_querycontext_slicecontext_grep

工具 依賴後端 返回內容
context_query sessionQuery.filterEvents 輕量匹配項,格式爲 { seq, type, text }
context_slice sessionQuery.readEvent 單個事件,以及有限的 before / after 窗口
context_grep subprocess 打包的 rg,或 sessionQuery.filterEvents 匹配項,格式爲 { text, citation }

幾個結果都帶有可複用的引用。引用是 replay-safe 的,形式上使用:

  • session:<seq>
  • path:line

也就是說,檢索結果不只是文本,還保留了後續可以定位回來的標識。

安裝與啓用

如果從插件源安裝,可以使用下面命令:

dsh plugin --profile <name> add github:EvilIrving/dsh-context-proxy

如果本地已經有一份 checkout,也可以從本地路徑安裝:

dsh plugin --profile <name> add ./dsh-context-proxy

這裏的 <name> 需要替換爲實際使用的 DSH profile 名稱。

啓用後的行爲

安裝後,dsh-context-proxy 會把三個上下文工具註冊給模型調用:

1、context_query

用於按已有字段查找匹配項,返回結構是:

{
  "seq": "seq",
  "type": "type",
  "text": "text"
}

2、context_slice

用於讀取單個事件,並返回該事件前後有限的窗口內容。這裏的 beforeafter 都是有限窗口,不是一次性返回整個歷史。

3、context_grep

用於文本檢索。它可以通過 subprocess 調用打包的 rg,也可以回退到 sessionQuery.filterEvents。返回結構是:

{
  "text": "text",
  "citation": "citation"
}

其中 citation 可以是 path:line,也可以是 session:<seq>

依賴與降級

dsh-context-proxy 對後端服務有明確區分:

  • sessionQuery 是可選服務。
  • subprocess 是可選服務。
  • tools 是硬依賴,標記爲 inject

如果缺少 sessionQuery 後端,每個工具會返回 isError 結果,而不是一直等待。這樣可以讓調用方快速看到失敗原因,而不是卡在一個不可用的後端上。

context_grep 使用打包的 ripgrep,來自 @vscode/ripgrep,因此不需要系統裏單獨安裝 rg

適用場景

dsh-context-proxy 適合這類 DSH 使用場景:

  • 模型需要從已持久化的會話歷史中按事件讀取上下文。
  • 調用方需要圍繞某個事件獲取有限前後窗口,而不是把整段歷史一次性放入上下文。
  • 需要對文本做檢索,並保留 session:<seq>path:line 這樣的可定位引用。

注意事項

使用 dsh-context-proxy 時,建議先明確以下幾點。

1、插件以當前 dsh 進程權限運行

它不是完全隔離的外部服務。安裝前應檢查源碼,並確認許可證和使用方式是否符合項目要求。該插件許可證爲 MIT。

2、它通過 seams 讀取上下文

在當前插件的讀取路徑中,這裏不寫文件,只通過 seams 讀取上下文。相關 bundle writing 未做沙箱化,因此應把它放在當前 dsh 進程權限範圍內理解。

3、context_grep 的行解析格式是 path:line:text

如果 spill path 中包含換行,會干擾解析。事實說明中提到,absolute spill paths 不會出現這種問題,但使用自定義路徑時需要注意路徑本身的可解析性。

4、未提供 spill path 時,fallback 文本掃描是 literal,不是 regex

也就是說,當 context_grep 沒有可用的 spill path 時,它回退到 sessionQuery 的文本掃描。這種掃描是 literal 匹配,不是正則表達式匹配。

鏈接

  • GitHub:https://github.com/EvilIrving/dsh-context-proxy
  • 目錄頁線索地址:https://www.skillhub.cn/plugins/EvilIrving/dsh-context-proxy
羽毛球分组比赛记分
小程序二维码

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

小夜