dsh-jev-context-gate
This release requires DSH 0.2.1-alpha.1 or a compatible 0.2 release. See compatibility details.
English | 简体中文
DSH 的智能规则插件(包名 dsh-jev-context-gate)。插件 → 智能规则 → 配置可配置事件判断、内容筛选和动作执行;DSH 0.2 的配置按插件入口 ID dsh-jev-context-gate 读写。选择独立判定模型后,按事件读取待判断内容、提出选择题,并执行获选选项配置的行为。普通模型使用 LLM JSON 估计选项概率;型号以 jev- 开头时标为 Jev 原生,原生结构化调用仍需模型提供商接入。
统一上下文策略
状态预览只缩短结构化数组,不截断无法解析的事实或授权文本;无法缩至预览预算时保留原文,由正常压缩处理。
版本按发布序号判断,表面头部替换不会让旧状态覆盖新状态。复制会话后重新绑定本会话的查询序号;运行状态复用已记录的完整分节,其余视图携带捕获原文。旧版本复制若缺失源全文,保留现有视图并要求刷新来源后再查询。
contextPolicy 默认开启,独立于模型判定总开关。快照和目录按 source.kind、source.plugin、source.contextKey、source.form 确定同一会话内的身份;snapshot、catalog 保留最新版本,普通用户消息保持原样。一个插件提供多份同类状态时必须指定不同 contextKey。旧状态通过带计量记录的空 developer 节点撤下,原始日志保留。大型状态提供数组数量和少量条目,技能目录保留所有名称并缩短简介;模型通过 context_read 按原始序号分页读取完整内容。
项目指令只对 agent-instructions 提供者记录的完整批次去重,要求正文、文件身份、摘要版本及来源元数据全部一致。内容或版本不同的批次保持原样,压缩摘要不能代替正文。成功压缩后,目录和指令在同一次请求冻结前补回日志;部分指令仍在尾部时,按原顺序重新记录基线、后续修改与删除通知,避免旧基线覆盖新规则。指令发现及文件读取预算仍归原提供者配置,不由本插件扩大。
请求在实际路由、完整输入和工具定义入日志后执行策略,再检查压缩压力。阈值统一取窗口的 thresholdRatio 与扣除输出预留、headroomRatio 后预算的较小值;压缩目标与保留尾部按剩余消息预算的 targetRatio、retainRatio 计算,适用于所有模型。默认比例依次为 0.8、0.06、0.4、0.16;状态预览上限为 12000 字符,目录描述上限为 96 字符,数组预览 3 项,详情页 4096 字符。这些值均可通过插件配置的 contextPolicy 修改。输出预留仍采用适配器声明的有效值,不假定服务端执行了本地输出上限。
启用前必须应用 宿主补丁 并重建涉及的 Host 包。补丁增加完整请求检查入口、固定本次路由容量、压缩目标策略和快照原始版本识别;策略实现由本插件维护。另一台电脑先核对 补丁说明 的基线与依赖补丁,运行 git apply --check 后应用;上游更新后重新检查。缺少补丁时开启策略会报错;设置 contextPolicy.enabled: false 可保留已有智能规则。插件卸载撤销工具和监听,已记录的替换继续参与会话回放。
0.1.22
扩展事件的候选参数允许只有一项。选择“裁剪”时,emit() 返回的 parameters 才把该参数替换为入选项;选择“注入额外内容”时,参数保持原样,入选项仍在 selections 中返回。事件提供者依据返回参数决定实际写入或裁剪。
0.1.21
事件、判断输入与动作目标分开配置。规则可以选择“扩展事件”,填写事件 key、显示名称及作为判断输入的参数 key;已连接的事件提供者会列出可选参数及其显示名称。未连接提供者的规则可保存,但不会触发。事件提供者可注册如群消息、个人消息或每日记录的事件,需传入稳定事件 ID、当前 Agent 和参数;Jev 本身不假装监听尚未接入的外部渠道。
“调用外部动作”属于具体选项,动作参数可增删,参数 key 与显示名称分别保存。内置 tool 适配器可调用任何已安装工具,并把生成消息写入指定参数;arg.* 参数会作为该工具的其他参数。rabi 只是一个可选适配器,渠道、对象类型、对象 ID、Route ID、等待回复及检查间隔都在动作参数中,可改为个人或其他受 Rabi 支持的目标;未安装 Rabi 时不影响其他规则。旧工作群配置在读取时迁移到选项动作,不再由规则顶层的群字段决定行为。两条预置规则的事件、监听工具、题目、选项及动作均可编辑。
扩展插件可通过 ctx.inject(['jev'], scope => scope.jev.registerEvent({ key, display, parameters })) 注册事件,随后调用 scope.jev.emit({ key, id, agent, parameters, signal });注册返回撤销函数。动作适配器通过 scope.jev.registerAdapter({ key, display, parameters }, handler) 注册。参数定义使用稳定 key 和独立 display,可附 required、kind 和 defaultValue。当前版本没有内置群消息接收事件;要监听群,须由消息来源插件注册并投递该事件。等待回复仍由当前进程持有,重启后不会自动恢复。
扩展事件可选择“事件参数作为选项”:提供者传入字符串数组或 { id, text } 数组,规则按当前判断内容一次评分,并用阈值、前/后 N 项等配置筛选。emit() 返回处理后的 parameters 和逐规则入选项 selections;提供者负责将返回值应用到它拥有的事件,例如替换待注入目录。没有固定的渠道或候选总数,实际数量受模型输入输出容量和 64000 字候选内容上限约束。
通用工具动作可在动作参数中设置 toolName、messageArgument 和任意 arg.<工具参数名>;若目标工具支持幂等 ID,再设置 idempotencyArgument 为目标工具的参数名。相同会话、事件和规则会得到同一个 ID;目标工具是否去重由其自身实现负责。
0.1.20
规则新增“工具调用前”和“工具调用后”事件。可从当前工具目录选择监听对象,也可输入确切工具名、rabiroute_* 一类前缀或 *。工具调用前的选项可配置“拦截工具调用”;调用后的选项可补充上下文,或经 Rabi 向工作群发送进度和问题。
预置“工作群进度更新”判断 Rabi 工具结果是否值得主动报告;“工作群提问并等待”判断当前会话是否有必须请群成员解答的问题。两条规则默认关闭,须在编辑弹窗填写精确 Route ID、群 ID、人格 ID 后启用。群消息由判定模型根据事件和可编辑动作说明生成,经 rabiroute_agent_send 发送;只有 Rabi 返回已发送的渠道回执才视为成功。提问后每 10 分钟通过 rabiroute_manager_api 查询新入站消息,最长检查次数也可配置;引用原提问的回复直接续投,未引用的消息先判定是否回答了问题。轮询由当前 DSH 进程持有,进程重启会结束这次等待。
0.1.17
动态筛选在一次模型请求中提交全部候选项,要求返回每项的 0–1 评分,再按规则选取评分前 N 个、后 N 个、大于 N% 或小于 N% 的项。没有固定的 100 项分批上限;模型提供商仍须容纳本次完整输入和输出。旧规则的最低相关度可在“附加最低评分”中修改。
“选项与行为”可选手动配置、待判断内容作为选项、固定内容逐行作为选项,或脚本生成选项。待判断内容支持按换行、空格或指定字符串拆分。动态选项的行为可设为裁剪或注入额外内容;前置事件的裁剪只注入入选内容,保留用户原消息。Skill 目录事件提供 skills 参数供选择,界面显示“当前可用 Skill”,保存稳定参数 key,显示文案 display 可独立本地化。Skill 目录的裁剪会把入选项返回给事件,替换本次目录;默认“Skill 裁剪”保留前 10 项,数量可改。
0.1.16
“Skill 裁剪”的保留数量直接在编辑弹窗的“最多保留多少条”中修改,例如从 10 改为 5。一次判定对候选项分别评分;最多 100 条候选为一批,超过时分批评分并对入围项复评,不为每个 Skill 单独发送一次请求。即使候选数量不超过保留数,也会按最低相关度筛选。
同一筛选能力也支持自定义内容:添加规则,事件选“用户发送消息”,判定方式选“筛选自定义候选”,每行输入一条注意事项,选择待判断内容、设置题目和“最多保留多少条”。入选内容会注入当前会话。候选来源也可改为“筛选脚本候选”;脚本每次事件发生时执行,可读取本机文件,返回字符串数组或 { id, text } 数组。候选至少 2 条、最多 500 条,总内容不超过 64000 字;保留数量为 1–50。
0.1.15
规则列表直接显示标题和说明。点击“编辑”在独立弹窗中配置事件、待判断内容、题目和选项行为;弹窗内保存,取消会撤销本次编辑。旧规则缺少标题时,列表以说明作为名称,标题和说明都为空时显示“未命名规则”。
0.1.14
新增配置规则“Skill 裁剪”:事件为 Skill 目录准备注入,输入为当前可见会话上下文,题目为“与当前上下文最相关的 Skill 有哪些?”,候选选项由可用 Skill 的名称和简介动态生成,动作参数为保留数量 10。判定模型给候选项分别打相关度分数,主模型只收到保留的简介。标题、题目、输入、阈值和保留数量都可在规则里编辑;规则可关闭。前置规则的选项也可指定一个 Skill 名称,命中时由 DSH Skill 服务加载并注入其正文。另有“Skill 正文准备注入”事件:每次 Jev 准备注入自己选中的 Skill 时,按规则分别判断,可继续、跳过或附加上下文。用户显式调用的 Skill 保持原有宿主行为。
0.1.13
规则标题、规则说明和题目标题分别保存。收起的卡片显示规则标题与说明;编辑时一次只展开一条规则,选项动作内容按需展开,保存操作位于列表上方。旧规则没有标题时显示规则序号,可在编辑区补填。
0.1.11
规则页在浏览器接收到旧格式规则时先迁移再渲染,避免首屏短暂崩溃。
0.1.10
- 每条规则有独立开关和可编辑说明;收起时显示说明、题目与内容来源。编辑区按“事件 → 待判断内容 → 题目 → 选项与行为”紧凑排列,详细帮助按需展开。每个选项分别设置动作类型及文字参数,未选中的行为不会执行。
- 事件可选“用户发送消息”或“工具返回结果”。内容可选最新用户消息、当前步骤可见文本、本轮工具结果或自定义固定文字。运行时读取的内容在规则页说明。
- 题目可直接配置标题和选项,也可由自定义 JavaScript 生成标题和选项文案。脚本在本机工作线程执行,可自行读取文件,必须返回同一组选项 ID;脚本不能修改选项行为。
- Jev 有一个总开关。测试是规则页内的独立视图,由“打开测试页面”进入;测试不执行规则或修改会话。
- 旧规则在读取时迁移为“是/否”或“有失败/全部成功”的选项行为;旧前置、后置开关保留兼容字段,但不再控制运行。
规则语义
| 字段 | 可配置内容 | 运行时含义 |
|---|---|---|
| 规则标题、规则说明 | 分别输入 | 用于识别和解释规则,不发送给判定模型 |
| 事件 | 用户发送消息、Skill 目录准备注入、Skill 正文准备注入、工具返回结果、工具调用前、工具调用后 | 前三个在 agent/pre-step,工具调用前后在工具管线,旧工具结果事件在含工具结果的 llm/stream |
| 待判断内容 | 下拉选择来源,或自定义文字 | 动态来源在事件发生时读取;自定义文字按原样使用 |
| 题目 | 直接配置或生成脚本 | 标题与 2–16 个选项一同发给判定模型 |
| 选项 | 文案、动作类型、动作参数 | 最高概率选项达到规则阈值后才执行该选项动作 |
前置动作“补充主会话上下文”会追加一条插件消息;“注入 Skill 正文”按选项中配置的名称加载。Skill 事件的“跳过此次 Skill 注入”只作用于当前候选 Skill;若启用了 Skill 事件规则但判定不可用,本次注入不执行。工具结果事件的动作“在答复末尾追加提醒”发生在原始流结束前,不会撤回已显示文字。判定失败、脚本失败、无事件内容、结果无效或超过上下文预算时不执行动作。普通模型概率是自报估计,不是校准置信度。
“Skill 裁剪”处理宿主注入的 Skill 简介目录,不是批量加载 Skill 正文。目录规则判定失败时保留宿主原目录并写入警告;旧会话此前已记录的完整目录仍留在历史中,新会话首次注入即按规则裁剪。
题目脚本
脚本正文接收 event(before、skill-catalog、skill-injection、after、tool-before 或 tool-after)、input(本次待判断文字)和 options([{ id, label }])。它可以使用 await import(...) 和本机文件 API,须在 5 秒内返回:
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 权限;仅配置自己信任的代码。输出只能改变标题和选项文案,动作始终来自已保存规则。
开发与发布
npm run check
npm pack --dry-run
发布顺序:提交并推送源码和版本标签 → 确认远端 SHA → 更新私有 plugins.json 中的固定 SHA 与版本 → Import → 重启 DSH → 回读安装包和浏览器交互。不要用 link:、file: 或 workspace: 作为安装源。
限制
Jev 原生结构化调用尚未接入;普通模型返回的概率未经校准。追加提醒不能阻止此前已经流式显示的文字。插件不会验证模型给出的事实结论。
MIT
Plugin display metadata
The plugin list shows Smart rules in English and 智能规则 in Chinese, following the DSH interface language. locale/en.json and locale/zh.json provide the title and description; icon.svg supplies self-contained artwork. The package exports and publishes these resources. The icon is adapted from Lucide; see ICON_LICENSE.txt.
插件设置入口
在插件列表中点击本插件进入详情页,即可使用原有配置和操作界面;设置菜单不再重复显示该插件入口。
The icon uses a centered 36 × 36 viewBox to leave more space around the artwork inside the plugin icon frame.
No comments yet. Be the first to write one.