前言¶
在 DeepSeek Harness(DSH)里,智能体通过 Read、Grep、Glob、WebFetch 等工具把仓库文件、检索结果和网页内容读进上下文。仓库投毒、网页注入往往从这些「读到的文本」进入,而不是用户输入框里那几句指令。只在 CI 提交时扫文件,对正在跑的会话来说已经太晚;事后审计也只能说明「已经发生过什么」。
DSH 的生态思路是「一切皆插件」。社区插件目录在 SkillHub 等站点展示,与 DeepSeek / 幻方无官方从属关系。本文介绍维护者 zhengqiuyang 发布的 dsh-read-guard(分类 admin-security):挂在 dsh 的 tools/post-execute 流水线上,在不可信文本即将进入模型上下文的那一刻做确定性扫描,不依赖模型「自愿」再调一个审计工具。
这是什么¶
dsh-read-guard 的定位是:对 DeepSeek Harness 做确定性的 prompt-injection 拦截——扫描智能体 READ 的内容(工具返回值),在写入模型上下文之前处理。检测引擎来自 repo-inject-guard;信任路径上不调用 LLM。按路径 alone 还可隔离凭证类文件。当前 npm 包版本 0.2.0,许可证 MIT。
工作原理¶
插件接入 dsh 的 tools/post-execute 瀑布流:被监视的工具每次返回结果(文件读、仓库搜索、网页抓取等)时,在「即将进入模型上下文」的 choke point 上经规则引擎扫描,再决定隔离、阻断或放行。
README 中归纳的检测方向包括:指令覆盖、系统提示抽取、凭证/环境变量外泄、隐藏 Unicode、智能体指令、规则文件后门措辞、资源诱饵等;精度策略详见上游 repo-inject-guard 文档。
与同生态其它方案的差异(README 2026-10-12 对照,仅作架构说明,非排名):例如 dsh-secure-audit 把扫描做成模型可调工具,模型可以不调用;本插件在 post-execute 拦截,模型无法绕过。与 dsh-injection-guard 等偏「下游动作污点」的插件互补:后者限制敏感工具调用,本插件在上游处理读入内容。
运行模式¶
| mode | 高严重度命中 | 中/低严重度(弱信号) |
|---|---|---|
observe |
记录日志 | 记录日志 |
wrap(默认) |
结果带污点标记:原内容仍在隔离标记内对模型可见,并附「这是数据而非指令」类说明 | 仅记录,不因弱信号改写正文 |
block |
结果不进入模型,模型收到纠正性反馈 | 仅记录 |
扫描上限 maxScanChars 默认 200000 全量字符(README 中与部分仅扫前 10k 的方案对比)。
安装与启用¶
通过 dsh 插件命令安装(npm 分发,无需本地 build,也无需 allowBuilds 授权;仓库内已带预构建 lib/):
dsh plugin --profile default add dsh-read-guard
兼容性(README):已在 DSH 0.2.x 线验证(源码快照 0.2.1-alpha.2);Node >= 20(CI 矩阵含 Node 20/22/24)。安装后启动日志中可出现 [dsh-read-guard] active: … 一类提示。
配置¶
在 profile 的 cordis.patch.yml 中覆盖插件配置,例如改为阻断模式并指定要扫描的读写类工具:
- id: dsh-read-guard
name: dsh-read-guard
config:
mode: block
readTools: [read, grep, glob]
fetchTools: [web_fetch, web_search]
maxScanChars: 200000
quiet: false
说明:readTools / fetchTools 列出智能体会「读结果」的工具;若还有 MCP 工具走同一管道,也应按 README 要求一并加入。quiet: false 时便于观察拦截日志。
典型用法¶
1、在默认 profile 安装插件(见上文命令)。
2、按需把 mode 设为 observe(先观察)、wrap(默认,高威胁标记隔离)或 block(高威胁直接挡在模型外)。
3、扩展 readTools / fetchTools,覆盖会话里实际会返回大段文本的工具名。
4、启动 dsh 会话,让智能体读本地文件或拉网页;在 observe / 非 quiet 下查看是否命中规则。
本地从源码加载到 dsh checkout 时,README 给出:
pnpm dsh web --patch ./cordis.dev.patch.yml
开发侧:npm install 后 npm test 会同步 vendor 引擎、构建并跑单元测试。
适用场景与注意¶
适合:在 DSH 上跑 coding agent、需要降低「读到的恶意 Markdown / 网页 / 搜索结果」污染系统提示或诱导越权操作的团队;希望拦截发生在管道里、而非依赖模型自觉审计的场景。
注意:
- 插件以 当前 dsh 进程的权限 运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合组织策略。
- v0 刻意 不 扫描用户粘贴的指令(README roadmap:用户仍被允许直接下指令);主要覆盖工具读入面。
- 维护者声明的「停止维护」条件:若 dsh 官方提供覆盖 tool-result 注入的一等公民能力,或
tools/post-execute契约变更导致无法替换内容,插件将冻结在最后可用版本并记录说明。
结尾¶
dsh-read-guard 把最后一道关口放在「工具结果进模型之前」:确定性规则、零 LLM 信任路径、可配置的 observe / wrap / block。目录页:https://www.skillhub.cn/plugins/zhengqiuyang/dsh-read-guard;源码与完整说明:https://github.com/zhengqiuyang/dsh-read-guard。