在 tools/pre-execute 上用 Jev(TypeSafe AI 的非生成式决策模型)对待执行的工具调用分类——高置信高危拒绝、存疑转审批——并在 approval/request 上对明确授权且可逆的调用做带参数证据门控的自动批准。另子类化 session-reference resolver,让引用快照按 Jev 打分保留消息而非最旧优先丢弃。任何 provider 故障均回退原生行为;提供 shadow 模式与 /jev-stats 统计命令;支持 TypeSafe 或 OpenRouter 入口;64 个测试。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-jev-interceptor
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:AskTheWay/dsh-jev-interceptor
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
⚡ 每个工具调用、每条被召回的消息,毫秒级裁决——单次成本约百万分之二美元。
你的 agent 最烧钱的坏习惯:拿会写诗的 LLM 回答是非题,以及按年龄截肢你的上下文。本插件把 Jev——那个九月刷屏全网的非生成式"System One"模型——接进 DeepSeek Harness 里 LLM 大材小用、规则又全盲的判断点。
中文 | English


Web 面板(侧栏 ⚡ → Jev 决策):实时 KPI 与净收益卡、可筛选的决策明细(每行带完整证据)、跟踪采纳情况的影子阈值建议、一键连接测试。以上全部是真实插件跑真实决策的截图。
一口气说完它做什么: 工具调用执行前,Jev 用一次约 $0.00002 的请求完成风险、可逆性、任务匹配度、注入嫌疑四重分类——高置信高危直接拒绝,中风险升级人工,明确授权且可逆的不再浪费你点审批弹窗。而当 @ 引用旧会话注入快照时,Jev 逐消息给它对当前任务的价值打分——让错误堆栈活过字节预算,而不是最旧的那句寒暄。任何存疑、超时、没 key,都降级回 dsh 原生行为。不需要配置任何"退路",也绝无放宽权限的可能。
为什么值得做
dsh 出厂没有任何逐调用风险分类——pre-execute 瀑布的兜底就是裸 allow。唯一的内置先例 experimental/auto-review 用生成式 LLM 干这活:每次工具调用一个完整模型请求、temperature 0、手写 JSON 文本协议,官方自认慢、贵、实验性。这是让 System-2 抄写员去干 System-1 反射的活:
| auto-review(生成式 LLM) | dsh-jev-interceptor(Jev) | |
|---|---|---|
| 决策形态 | 逐 token 生成 JSON 再解析,全靠祈祷 | 类型化 choice/noul 答案——类型错误结构性不可能 |
| 单次成本 | 一次完整 LLM 请求 | 约 $0.00002(实测:501 输入 token) |
| 延迟 | 秒级 | provider 侧约 100ms(TypeSafe 报告的 p50);美西之外端到端约 1s |
| 不确定性 | 藏在散文里 | 每问带概率分布 + 校准置信度 |
| 失败路径 | 解析兜底 → deny | 低置信 → next()——绝不硬拍 |
TypeSafe 官方宣称 Jev 在分类工作负载上比 LLM 快最高 200 倍、便宜最高 400 倍——本插件就是把这个数字落进真实 agent harness,收据在 /jev-stats 里。
我们相信这是 dsh 生态第一个 System-1 决策插件。决策模型在 dsh 中的完整地图——本插件的两个挂点 + 另外十一个已核实挂点(语义模型路由、上下文保留打分、图像卸载预规划、工人报告核验……)——见 docs/jev-usage-points.zh.md。
没人谈论的 FIFO 痛点
在 dsh 里 @ 引用一个旧会话时,harness 注入它的一份有界快照——当快照超出字节预算,就从最旧开始丢。纯 FIFO,零语义。你贴在会话开头的报错信息、开启整件事的三行提问?最先被丢。"谢谢!"和"好,继续"?留下了——因为更新。
dsh 官方的保留算法对此很坦诚:丢最旧的、再截最长的,完事。本插件的 jev-session-reference 行接管这个决策(子类化官方 resolver,@ 补全、预算、溢出存储、取消全部原样继承):一次 Jev fan-out 给每条可丢弃消息打分——噪音 / 背景 / 相关 / 关键——丢弃顺序变成最没价值的先走,截断时先砍废话再砍实质。checkpoint 和最新一条的保护与官方完全一致,字节预算的守恒与官方完全一致;sessionReferenceEnabled: false(默认)时这一行的渲染与原版逐字节相同。
shadow 模式先给你收据再谈信任:每次注入都记录反事实对照——FIFO 丢掉了哪些评分本会保住的消息——看清了再切 enforce。
60 秒上手
dsh plugin --profile <name> add dsh-jev-interceptor
# 在 profile 的 cordis.patch.yml 里
- id: jev-interceptor
name: dsh-jev-interceptor
config:
enabled: true
mode: shadow # 先观察模式:记录每个决策,不执行任何干预
provider: typesafe # 或 'openrouter'(今天就能用,无需候补)| 'custom'
无需改 YAML。 装好后在聊天框里控制一切——命令持久化到 profile、下一个工具调用即生效、无需重启:
/jev-on # 启用(默认 shadow 模式——只记录,不执行)
/jev-stats # 看它怎么判,含完整概率分布
/jev-log 20 --json # 最近 N 条决策明细;--json/--csv 导出原始数据
/jev-impact # 底线数字:省掉的点击、拦截、成本与延迟
/jev-calibrate # 影子数据阈值建议(面板一键应用)
/jev-allowlist # 预批准名单:查看影子推荐、加/删工具
/jev-mode enforce # 数字满意后升级
/jev-off # 回到原生行为
正常使用你的 agent。shadow 模式下每个决策(含完整概率分布)都落入遥测;/jev-stats 汇总:
[guard] calls: 41 degraded: 0 cached: 9
actions: delegate=33 ask=6 deny=2
input tokens: 18234 est. cost: $0.000766
latency: p50 247ms p95 512ms max 611ms
数字满意?把 mode 改成 enforce。这就是全部的上线方案——先观察,再信任,绝不硬拍。
收据(真实使用数据,非跑分)
六周的自用(2026-09-22 → 11-07,19 个活跃日、10 个会话、310 次判断——/jev-impact 随时从你自己的遥测渲染这张表):
- 预批准路径尚未触发(名单有意保持为空——guard 遥测显示每个候选工具的历史上都至少有一次中风险或注入嫌疑判定,推荐器诚实地一个都不推荐),误批指标尚无样本(0/0,如实显示「无样本」而不是「0」)——实际被检验的是:8 次不确定调用转人工、0 次高风险漏拦
- 决策总成本 $0.0090(180 次计费判断共 214,323 input tokens)
- 129 次判断降级回原生行为,行为零差异——fail-closed 说到做到
校准自带闭环:每次 /jev-calibrate 都会留一份报告快照;下次运行会告诉你上次哪些建议被采纳(✓)、未采纳(·)、被手动改写(↔),以及一致率桶怎么变。
安全模型(真正值得细读的部分)
- 永不返回
allow。 "无异议"用next()表达,链上后续 listener(外部 hook、auto-review)的否决权完好无损。 - 处处 fail-closed。 无 key / provider 冷却 / 超时 / 解析不匹配 / 内部错误 → 委托回原生行为。审批服务的
never策略在任何 listener 之前执行,本插件在结构上就无法放宽它。 - 证据门控的自动批准。
allowed-once必须有参数证据:只有 guard 升级过的调用(新鲜条目、会话与工具都匹配)才可能被自动批;hook 请求与沙箱提级不携带参数,一律转人工。 - 注入感知。 工具参数只进 Jev
state数据字段;instructions是固定文案;疑似注入的答案触发升级而非压制。(Jev 官方承认可被对抗内容影响——所以本插件的拦截是加速器,永远不是最后防线。) - 输入限界。 参数头尾预览 + 尾部消息摘要——Jev 官方指引就是"代码先过滤,只发问题需要的字段"。
- 构造级韧性。 每次尝试墙钟超时、429/529 单次重试、连续失败进冷却(超时也计数)、并发上限、LRU 决策缓存、排队有界的信号量。provider 挂掉的代价是零行为差异,不是你的 harness。
- 接管行按层禁用。
jev-session-reference行替换了上游session-reference行;在 Plugins 页单独关掉这一行会落得没有任何 session-reference 在运行。移除接管请禁用整个dsh-jev-interceptorbundle 层(setBundleEnabled(false)),上游行随之恢复。 - 拦截可解释。 每次
ask/deny都带着人读理由和完整证据摘要直达审批卡与被拦工具行(jev-guard: 中风险调用,需人工确认(risk=medium 0.72 · irrev=0.30 · inj=0.01))。行首jev-guard:前缀是安全协议——预批钩子靠它拒绝自动批守门人自己的升级。 - 可观测。 每个决策落入
<dsh-home>/plugins/dsh-jev-interceptor/telemetry.jsonl(遵循$DSH_HOME),带callId关联与供校准重放的全精度scores数值;日志超 20MB 自动轮转。/jev-stats按挂点汇总、/jev-log看单条明细、Web 面板全部图表化。 - 校准而非拍脑袋。
/jev-calibrate把影子遥测喂给同一个决策矩阵做反事实重放,输出阈值调整建议(±0.05 步长、常规建议 ≥30 样本——出现误批危险信号时 ≥10 条即建议收紧,仅收紧方向;注入阈值永不放松、绝不自动应用)。
以上全部由 169 个测试锁定,包括对抗评审的回归用例(曾可能挂死工具管线的并发泄漏、跨会话 callId 碰撞、无证据自动批准)。
配置
一切皆配置项——超时、冷却、并发、缓存、各挂点阈值、工具名单——见 src/config.ts 的 Config schema。值得注意的默认值:
- 只读工具(
read、read_image、grep、glob、todo_write)零成本直通; - Auto 权限预设完全让位给
auto-review(不双重审查、不双重计费); - 预批白名单默认为空——在
preapproveToolAllowlist里点名工具之前,任何调用都不会被自动批准。
停滞检测(v0.5,opt-in,默认关)——dsh 的 repeat-tool-reminder 只能识别精确重复;换参数的死循环对它不可见。同一工具换参失败 ≥4 次时,一次 Jev fan-out 判断"无进展 + 同类失败",高置信则(仅 enforce 模式;shadow 只在遥测里记一条 would-be 提醒)注入一条提醒让 agent 停下换路(observe-and-enrich——绝不拦截结果):
stagnationEnabled: true # 默认 false
stagnationTriggerCount: 4 # 换参失败几次后发起判断
stagnationConfidenceMin: 0.85 # 双 noul 都过此门才提醒
stagnationCooldownMs: 300000 # 同一工具每 5 分钟最多提醒一次
语义会话保留是独立的一行(默认关闭且逐字节等同原版):
- id: jev-session-reference
config:
sessionReferenceEnabled: true # false(默认)= 纯透传
mode: shadow # 记录"会怎么保",实际渲染仍走官方 FIFO
provider: openrouter
apiKeyEnv: OPENROUTER_API_KEY
OpenRouter 今天就能用、无需候补(decisions 模型在那里走专用端点):
provider: openrouter
apiKeyEnv: OPENROUTER_API_KEY
客户端直说 state + questions 线协议,TypeSafe 直连、OpenRouter 与 Apache-2.0 本地平替 Laya 完全同构——provider 可随时切换,闭源供应商永远成不了锁定。
开发
npm install --legacy-peer-deps # devDeps 钉在当前一代 dsh API
npm run typecheck # src + tests,对真实 @deepseek-ai 类型
npm test # vitest,169 个测试,无需网络
npm run build # tsc -> lib/
node scripts/smoke.mjs # 对真实 provider 跑一次决策
路线图
审批闭环(v0.1)、语义会话保留(v0.2)、图像卸载预规划(v0.4)、停滞检测(v0.5)已落地。已核实的下一战场——让"选择"而不只是"安全"用上 System-1(完整目录):
- 内容感知模型路由——例行步骤走便宜档,硬仗上强模型
- 工人报告核验——子代理说"做完了",得有东西查一查
许可证
链接
同类插件
kenryu42/cc-safety-net★ 1900
执行前守卫,在工具调用运行前拦截破坏性 Git 与文件系统命令,以及对 SSH 密钥、.env 等机密文件的访问。
ADWMC/helm-d#helmd★ 984
DeepSeek Harness 的安全分析插件:33 个工具覆盖六大安全域、证据/报告与工具集,并提供案件生命周期、路由和工具账本;按会话绑定的案件工作区支持证据链、E 编号校验与可复现结论(repro_cmd);内置 362 篇按需参考、三档可热切换人设,以及带案件状态恢复的破甲 / Case / 拦截 / 关于四页工作台。
toby-bridges/api-relay-audit★ 904
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
SeaOf0/dsh-redteam-model★ 807
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
howmp/dsh-pentest★ 616
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
PerryLink/dsh-auto-review★ 244
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。