dsh-jev-context-gate:DSH 智能规则与上下文门控

前言

在 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 目录保留全部名称并缩短简介。
  • 默认比例:thresholdRatio 0.8、headroomRatio 0.06、targetRatio 0.4、retainRatio 0.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 插件导入流程为准。启用前请确认:

  1. DSH 版本满足 0.2.1-alpha.1+(或兼容 0.2)。
  2. 若需 contextPolicy,先按补丁说明打补丁并重建 Host。
  3. 在插件列表中点击本插件进入详情页配置(设置菜单不再重复该入口)。

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. 在界面配置一条规则

  1. 打开 插件 → 智能规则,确认 Jev 总开关符合预期。
  2. 新建或编辑规则:按 事件 → 待判断内容 → 题目 → 选项与行为 填写;弹窗内保存,取消则撤销本次编辑。
  3. 为需要概率判定的规则选择判定模型;保存后在该事件触发时读取内容并执行达阈值的选项动作。

例如启用并编辑预置 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 注入链路。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye