前言¶
在 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_query、context_slice、context_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
用於讀取單個事件,並返回該事件前後有限的窗口內容。這裏的 before 和 after 都是有限窗口,不是一次性返回整個歷史。
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