前言¶
在 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