基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-10-23 04:17

安全过滤器怎么测?先验证测试本身可靠

dev.to · AI#安全评测#开源#测试
Editor brief · 编辑速览

MIT 许可的 enki-harness 用恶意与无害近似样本、恒定放行或拦截的对照,以及规则消融来检验过滤器和测试框架。新增模型评判功能会重复提交样本并报告拦截率,避免单次回答掩盖波动。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

安全过滤器通过了自己写的测试,离「可靠」还有多远?enki-harness 作者给出的答案是:先证明测试能识破一个糟糕的过滤器,再讨论分数。他用新增的 hb judge 反复测试产品里的审核步骤,发现自家固定、无害的提示词也会被误拦,频率约为 1/40。

这篇值得程序员读的地方,不是又多了一个测试工具,而是它展示了怎样用对照、重复运行和预先声明的失败条件,检查那些看起来已经通过验证的 AI 功能。

测试全绿,可能只是题目出得太顺手

作者认为,自己写过滤器,再自己写测试,很容易只覆盖已经想到的情况。enki-harness 是一个免费、采用 MIT 许可证的测试框架,试图补齐几类容易漏掉的验证:

  • Twins:每个应该拦截的案例,都配一个措辞近似、但应该放行的无害案例,检查过滤器是否误伤。
  • Controls:加入始终放行、始终拦截的简陋替身。如果它们也能过关,测试框架就有问题。
  • Rules off:逐条以及两两关闭规则,寻找不起作用的规则,以及相互抵消的组合。
  • Attacker slice:用不同于常规案例生成器的另一个生成器,构造 leet 字符替换、插空格、拉长字符等变体。
  • Falsifier:运行前写下什么结果能推翻自己的判断,并记录时间,避免看到结果后再改口径。

先让验证关卡全部通过,再给总分。

这里的「关卡」是在检查测量方法是否可信。一个始终拦截的过滤器,可能抓住全部危险输入,却也拒绝了全部正常请求;只有正例命中率,很容易把这种东西评成高分。

工具本体只用 Python 标准库,运行它无需通过 pip 安装依赖。它既能提供仅限 localhost 的本地网页,也能作为 MCP server 接入编程助手。原文给出的调用表达是 test my filter in filters/swear.py with enki-harness。作者还称,一条注册命令可接入 Claude Code、VS Code/Copilot、Cursor、Codex、Claude Desktop 和 Windsurf,并先备份配置,但没有贴出具体命令。

模型过滤器要测拦截频率,单次通过不够

这次新增的 add-on #1「hb judge」,针对的是由 AI 模型执行的过滤步骤。它会把每个案例发送多次,报告拦截率,减少单次幸运回答造成的误判。

作者通过 Ollama 在本地运行 Llama Guard 3 8B,无需 API key,没有按次调用费用,测试内容也不离开机器。这里的「免费」指调用费用,本地硬件和运行时间仍然需要自己承担。

他测试的是自家产品图片功能中的提示词审核:输入全是团队写好的固定句子,描述普通成年人的肖像,没有任何用户文本。重复运行后,这些句子仍会随机被拦,约每 40 次出现 1 次;被拦的句子会变,也没有连续两次拦住同一句。

作者原本准备花一个晚上修改措辞,后来发现,已经上线使用的普通卡通风格提示词也有相近的误拦频率,于是放弃了这个修复方向。他们只移除了这个功能中针对自家固定文本的审核,生成后图片上的检查继续保留。

先确认不稳定发生在哪一层,再决定要不要改提示词。

测试过程还暴露了两个工程问题。首次运行时,本地模型仍在加载,必须通过的对照案例失败,整轮结果因此作废;工具随后加入预热调用。另一个问题是,400 次调用长时间没有输出,看起来像卡死,于是现在每 25 次调用打印一次进度。

我的判断

我认同它把误伤案例、无效替身和重复运行放在分数前面。对于 AI 功能,测试脚本跑完和测量结果有效,是两件需要分别确认的事。

但作者把噪声归因于模型,证据还不够完整。原文没有给出完整逐行结果、采样参数、每条提示词的重复次数,也没有交代随机性来自模型本身还是推理配置。现有描述支持「审核结果存在波动」,尚不足以彻底排除措辞的影响,更不能把约 1/40 当成 Llama Guard 3 8B 的通用误报率。

移除审核也有严格前提:该步骤只检查团队控制的固定文本。如果换成用户自由输入,就不能照搬。与继续改写提示词相比,作者的做法有重复测试作为依据;但他们没有提供改写前后的对照实验,所以「改写不会解决问题」仍是针对这次观察的经验判断。

开源权重的实际优势是便于本地重复测量和查看结果。封闭 API 同样可以做重复实验,只是调用成本与可控制范围不同,原文没有提供两者的成本对照数据。

能拿来做什么

  • 给现有过滤测试补上成对案例:一个必须拦截,一个措辞接近但必须放行,同时观察漏拦和误拦。
  • 如果 Node 服务调用模型做审核,对同一批输入重复运行并记录逐条结果,先确认波动范围,再修改提示词。
  • 在本地模型测试流程里加入预热、对照案例和进度输出;对照失败时让本轮结果作废,避免把加载失败算成模型表现。
  • 检查图片生成流程里每道审核接收什么输入。对于完全由团队控制的固定文本,可以评估该步骤是否重复,但应单独确认生成后图片检查仍然有效。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
Agent 技能发布前,如何检查指令与外传风险
下一篇
编码代理流水线为何把九成任务交给脚本

资讯速览

dev.to · AI · 2026-10-23 04:17

AI 评分 8.0 / 10

相关标签

#安全评测#开源#测试

继续阅读

  • 项目规则膨胀,让编程代理启动即超上下文
  • Agent 技能发布前,如何检查指令与外传风险
  • 编码代理流水线为何把九成任务交给脚本
  • 大模型响应慢,先拆解请求耗时
  • 用 Expo 为移动应用接入端侧 AI