前言¶
在 DeepSeek Harness(DSH)里跑智能体时,常见防护集中在「读回审阅」或「命令拦截」:用第二个模型重读回合、根据退出码核对目标、或阻止破坏性 shell 命令。PR 合并前,不少团队还会在 CI 里用 scope 策略和残留扫描拦不合规 diff。问题是:智能体每次 write / edit / str_replace_editor 落盘时,若没有在运行时做同样的确定性检查,问题文件已经写入磁盘,只能等 PR 阶段再发现。
下面介绍社区插件 dsh-pr-gate(维护者 zhengqiuyang),它把与 agent-pr-gate 在 CI 侧使用的 scope 策略和残留规则,挂到 DSH 的工具执行链上,在写入前拒绝、写入后扫描,并留下可给 CI 消费的 JSONL 账本。信任路径上不调用 LLM。
这是什么¶
dsh-pr-gate 是 DSH 的 admin-security 类插件,目录页见 SkillHub,源码在 GitHub。npm 包版本为 0.1.0(MIT)。
一句话定位:对智能体每一次文件写入做 scope 策略 + 残留扫描,并把原先留在 PR/CI 的门控前移到 写入当下。
核心功能¶
插件在三个阶段工作,均来自 README 中的说明:
| 阶段 | Hook | 确定性行为 |
|---|---|---|
| 写入前 | tools/pre-execute |
Scope 策略:deny 的 glob 始终优先;allow 非空时表示「只允许这些路径」。被拒绝的写入不会落盘 |
| 写入后 | tools/post-execute |
对写入文本做残留扫描(例如面向审阅者的注入文案、被跳过的测试、调试标记等)。默认 residueMode: warn 只记录;设为 block 时会让写入失败并给出纠正反馈 |
| 全程 | JSONL ledger | 每个决策一行:工具、路径、动作、内容的 sha256、匹配模式、残留类型等。CI 中的 agent-pr-gate 可把该文件当作会话侧记录消费 |
一套策略,两个 enforcement 点:配置项 policyFile 可指向仓库里的 agent-pr-gate.yaml,与会话内 enforcement 与 CI 侧 allow/deny 对齐(策略条目会 union)。也可以不用文件,仅在插件配置里写 inline 的 allow / deny。
Scope 的 glob 语义与残留规则从 sibling 项目 agent-pr-gate vendored 同步(开发时用 npm run sync)。
安装与启用¶
官方安装命令(README 原文,默认 profile):
dsh plugin --profile default add dsh-pr-gate
README 说明:从 npm 安装,无需 build,也无需 allowBuilds 授权;仓库内已带预构建的 lib/。
兼容性(资料原文):
- DSH:在 0.2.x 线验证(资料中的源码快照为 0.2.1-alpha.2);任意 profile 可通过
dsh plugin add安装 - Node:>= 20(CI 矩阵含 Node 20/22/24,Ubuntu 与 Windows)
安装后启动 DSH 时,日志中会出现类似 [dsh-pr-gate] active: … 的提示(README Compatibility 一节中的 disposable-profile 验证描述)。
典型配置¶
在 DSH 插件配置中增加(示例来自 README):
- id: dsh-pr-gate
name: dsh-pr-gate
config:
tools: [write, edit, str_replace_editor]
allow: [src/**, docs/**] # 非空 = 只允许这些
deny: ["**/*.pem", .github/workflows/**]
policyFile: "" # 或例如 agent-pr-gate.yaml
residueMode: warn # warn | block
ledgerPath: .dsh-pr-gate/session.jsonl
tools 列出需要门控的写入类工具;ledgerPath 指定账本路径。若仓库已有 agent-pr-gate 的 YAML,把 policyFile 指过去即可与 CI 共用同一套策略文件。
适用场景与注意¶
适合谁:已经在 PR 或 CI 里用 agent-pr-gate(或同类 scope + 残留规则)的团队,希望在 DSH 会话里 写入前即拦截 越界路径或敏感文件,并在写入后捕获明显「残留」内容,同时保留 deterministic 账本供后续 CI 对齐。
权限与安全:插件随当前 dsh 进程权限 运行,能 hook 到配置中的写入工具。安装前应阅读 源码与 LICENSE,确认策略与账本路径符合本仓库规范。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
边界:README 写明信任路径零 LLM;路线图中有 bash 写启发式、ledger 到 GitHub check-run 等项,当前以 README 表格中的三阶段能力为准。若 DSH 官方或审阅类插件 later 提供同类确定性写入门控,维护者在 README「Kill criteria」中说明可能冻结在最后一个可用版本。
结尾¶
经过上面的步骤,你可以在默认 profile 安装 dsh-pr-gate,用 allow / deny 或 policyFile 对齐 CI 策略,并选择 warn 或 block 处理残留扫描结果。写入决策会落在 ledgerPath 指定的 JSONL 中,便于与 agent-pr-gate 的 PR 检查衔接。
- 目录页:https://www.skillhub.cn/plugins/zhengqiuyang/dsh-pr-gate
- GitHub:https://github.com/zhengqiuyang/dsh-pr-gate