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
羽毛球分组比赛记分
小程序二维码

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

小夜