前言¶
在 DeepSeek Harness(DSH)里跑智能体,常见压力来自两类问题:一是请求发出前上下文已经撑满窗口,Skill 目录、工具状态和项目指令挤在一起,主模型还没开始推理就先丢信息;二是希望在固定节点做「先判断、再动作」——例如用户消息后筛注意事项、Skill 注入前裁剪目录、工具调用前后拦截或补上下文——而不是全靠主模型一次猜完。
宿主自带的路由和压缩能力可以兜底,但很难按业务配置「在什么事件、读什么内容、选哪个选项、执行哪种动作」。维护者 vb2250158 发布的 dsh-jev-context-gate(包名 dsh-jev-context-gate,界面分类为工作流,列表中显示为「智能规则」/ Smart rules)就是面向这类需求的 DSH 智能规则插件:在可配置事件上读取待判断内容,用判定模型做选择题(或候选项评分),再执行选项里配置的行为。本文介绍其定位、能力与配置要点;事实以 GitHub 仓库 README 为准。社区目录见 SkillHub 插件页(与 DeepSeek / 幻方无官方从属关系)。
这是什么¶
- 定位:DSH 的智能规则插件,入口在 插件 → 智能规则;DSH 0.2 下配置按插件入口 ID
dsh-jev-context-gate读写。 - 版本与许可:当前发布包版本 0.1.36(见仓库
package.json);许可证 MIT。 - 运行要求:需要 DSH 0.2.1-alpha.1 或兼容的 0.2 发行版;详见仓库
docs/dsh-0.2-compatibility.md。 - 判定方式:可为规则选择独立判定模型。普通模型通过 LLM 返回 JSON 估计各选项概率;模型 ID 以
jev-开头时标为 Jev 原生(原生结构化调用仍依赖模型提供商接入,当前限制见下文)。
插件简介(英文):Data-driven preflight and evidence-aware context gates for DeepSeek Harness——用数据驱动的前检与带证据意识的上下文门控,在请求链路的关键事件上插入可配置判断与动作。
核心功能¶
规则引擎(Jev)¶
每条规则包含:规则标题与说明(不发给判定模型)、事件、待判断内容、题目(标题 + 2–16 个选项,或由脚本生成标题/选项文案)、选项与行为(文案、动作类型、动作参数)。最高概率选项达到规则阈值后才执行对应动作;未选中选项的行为不会执行。
事件类型(运行时挂载点见 README「规则语义」表):
| 事件 | 典型用途 |
|---|---|
| 用户发送消息 | 前置判断、自定义候选筛选等 |
| Skill 目录准备注入 | 例如预置「Skill 裁剪」:对简介目录做相关度评分并保留前 N 条 |
| Skill 正文准备注入 | 对 Jev 准备注入的 Skill 分别判断:继续、跳过或附加上下文 |
| 工具返回结果 | 在含工具结果的流上处理 |
| 工具调用前 / 工具调用后 | 拦截调用、补充上下文、经 Rabi 发进度或提问等 |
待判断内容可来自:最新用户消息、当前步骤可见文本、本轮工具结果、自定义固定文字,或事件动态参数。
选项来源包括:手动配置、「待判断内容作为选项」、固定内容逐行、脚本生成,以及扩展事件的「事件参数作为选项」(字符串或 { id, text } 数组,可配合阈值、前/后 N 项等筛选)。
动作类型示例:补充主会话上下文、注入 Skill 正文、跳过此次 Skill 注入、在答复末尾追加提醒、拦截工具调用、调用外部动作(内置 tool 适配器可调任意已安装工具;可选 rabi 适配器用于渠道消息等)。扩展插件可通过 ctx.inject(['jev'], …) 注册事件与动作适配器(见 README 0.1.21)。
Jev 有总开关;规则页内提供测试视图(「打开测试页面」),测试不执行规则、不修改会话。
统一上下文策略(contextPolicy)¶
除规则外,插件提供 contextPolicy(默认开启,独立于 Jev 总开关),用于在长上下文场景下统一处理状态预览、快照与项目指令压缩策略:
- 状态预览只缩短结构化数组,不截断无法解析的事实或授权文本;缩不进预览预算时保留原文,交给正常压缩。
- 快照/目录按
source.kind、source.plugin、source.contextKey、source.form区分同会话身份;同一插件多份同类状态须用不同contextKey。 - 模型可通过
context_read按原始序号分页读取完整内容;大型状态在预览中给出数组数量与少量条目,Skill 目录保留全部名称并缩短简介。 - 默认比例:
thresholdRatio0.8、headroomRatio0.06、targetRatio0.4、retainRatio0.16;状态预览上限 12000 字符,目录描述 96 字符,数组预览 3 项,详情页 4096 字符——均可通过插件配置contextPolicy修改。
启用 contextPolicy 的前置条件:必须应用仓库内 宿主补丁 patches/2026-10-10-request-context-policy.patch 并重建涉及的 Host 包;缺少补丁时开启会报错。若暂不打补丁,可设 contextPolicy.enabled: false 以保留智能规则功能。补丁应用步骤见 patches/README.md(含 git apply --check 与上游更新后重检说明)。
预置与扩展能力摘要¶
- Skill 裁剪(0.1.14 起):事件为 Skill 目录准备注入,对候选项打相关度分,主模型只收到保留的简介;默认保留 10 条,可在规则「最多保留多少条」中修改。
- 工作群相关规则(0.1.20,默认关闭):依赖 Rabi 与
rabiroute_*工具;须在编辑弹窗填写 Route ID、群 ID、人格 ID 后启用;提问后的轮询由当前 DSH 进程持有,重启会结束等待。 - 动态筛选(0.1.17):一次请求对全部候选项返回 0–1 评分,再按前 N、后 N 或百分比阈值选取;候选脚本 2–500 条、总内容不超过 64000 字,保留数量 1–50。
安装与启用¶
已抓取资料未给出形如 dsh plugin add … 的公开一行安装命令。仓库 README 描述的维护者发布流程为:提交并推送源码与版本标签 → 确认远端 SHA → 更新私有 plugins.json 中的固定 SHA 与版本 → Import → 重启 DSH → 回读安装包与浏览器交互;并明确不要用 link:、file: 或 workspace: 作为安装源。
实际安装方式请以 SkillHub 目录页 或你所在环境的 DSH 插件导入流程为准。启用前请确认:
- DSH 版本满足 0.2.1-alpha.1+(或兼容 0.2)。
- 若需 contextPolicy,先按补丁说明打补丁并重建 Host。
- 在插件列表中点击本插件进入详情页配置(设置菜单不再重复该入口)。
peer 依赖(节选,见 package.json):@deepseek-ai/cordis、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-skill、@deepseek-ai/dsh-settings 等均要求 >=0.2.1-alpha.1 <0.3.0 区间。
典型用法¶
1. 在界面配置一条规则¶
- 打开 插件 → 智能规则,确认 Jev 总开关符合预期。
- 新建或编辑规则:按 事件 → 待判断内容 → 题目 → 选项与行为 填写;弹窗内保存,取消则撤销本次编辑。
- 为需要概率判定的规则选择判定模型;保存后在该事件触发时读取内容并执行达阈值的选项动作。
例如启用并编辑预置 Skill 裁剪:将「最多保留多少条」从 10 改为 5,即可在 Skill 目录注入前只保留相关度更高的简介条目。
2. 用户消息 + 自定义候选筛选¶
添加规则:事件选 用户发送消息,判定方式选 筛选自定义候选,每行一条注意事项;配置题目与「最多保留多少条」。入选内容会注入当前会话。也可将候选来源改为 筛选脚本候选:脚本在每次事件发生时于本机工作线程执行(5 秒内返回),可读文件,返回字符串数组或 { id, text } 数组。
3. 题目脚本(仅改标题与选项文案)¶
脚本接收 event、input、options,须返回 { title, options };不能修改选项行为。示例(来自 README):
const fs = await import('node:fs/promises')
const extra = await fs.readFile('C:/rules/question.txt', 'utf8')
return {
title: extra.trim() + ':这条消息需要调查吗?',
options: options.map(option => ({ id: option.id, label: option.label })),
}
脚本拥有本机 Node 权限,只配置你信任的代码。
4. 扩展事件(其他插件)¶
注册与投递示例(概念来自 README 0.1.21):
ctx.inject(['jev'], scope => scope.jev.registerEvent({ key, display, parameters }))
// 撤销函数由 registerEvent 返回
scope.jev.emit({ key, id, agent, parameters, signal })
emit() 在扩展场景下可返回处理后的 parameters 与逐规则 selections;事件提供者负责写回自己的事件数据(例如替换待注入目录)。
适用场景与注意¶
适合谁
- 需要在 agent/pre-step 或 工具管线 上做可重复、可配置的「判断 → 动作」,又不想把逻辑全写进单次 Prompt 的 DSH 用户。
- Skill 很多、目录简介占窗口,希望 按当前上下文裁剪 Skill 目录 再交给主模型的场景。
- 长会话需要 统一上下文策略(预览、快照、
context_read分页)且愿意按文档打 Host 补丁的团队。
限制与风险(README 明确说明)
- Jev 原生结构化调用尚未完全接入;普通模型返回的概率是自报估计,不是校准置信度。
- 判定失败、脚本失败、无事件内容、结果无效或超过上下文预算时不执行动作;插件不验证模型给出的事实结论。
- 「在答复末尾追加提醒」发生在原始流结束前,不能撤回已流式显示的文字。
- 插件以当前 DSH 进程权限运行;题目脚本、筛选脚本可读本机文件——安装前应阅读源码与 MIT 许可证,仅启用可信规则与脚本。
- 卸载插件会撤销工具与监听,但已记录的替换仍参与会话回放。
结尾¶
dsh-jev-context-gate 把 DSH 里「何时读什么、问什么、选中后做什么」收成可编辑的智能规则,并在可选的 contextPolicy 下统一长上下文的预览与压缩策略;与「一切皆插件」的 DSH 生态一致,适合作为工作流类扩展接入会话与 Skill 注入链路。