news 2026/9/26 13:41:32

AI Agent技能质量如何保证:NotFair的LLM-as-Judge评估与E2E路由测试体系全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Agent技能质量如何保证:NotFair的LLM-as-Judge评估与E2E路由测试体系全解析

AI Agent技能质量如何保证:NotFair的LLM-as-Judge评估与E2E路由测试体系全解析

【免费下载链接】notfair-pluginOpen-source SEO, GEO, and marketing skills for AI agents.项目地址: https://gitcode.com/gh_mirrors/to/notfair-plugin

NotFair Plugin 是一个开源的 SEO、GEO 与营销技能插件包,为 Claude Code、Codex 等 AI Agent 提供 48 个可执行技能。它的独特之处在于:每个技能(SKILL.md)都配套了一套可量化、可复现的质量保障体系——用 LLM-as-Judge 给文档质量打分,用 E2E 路由测试验证技能会不会被正确触发。本文带你完整了解这套 Agent 技能质量评估机制。

一、为什么 AI Agent 技能需要质量评估?

普通软件测试看"功能是否跑通",而AI Agent 技能(本质是一份给模型阅读的操作手册SKILL.md)要回答三个更难的问题:

  • 文档够不够清楚?模型读完指令后,是否知道该调哪些脚本、传什么参数、输出长什么样?
  • 技能会不会被错误触发?用户问"CSS 布局坏了",SEO 审计技能是不是不该跳出来?
  • 产出物质量如何?跑完一整轮 SEO 审计,生成的报告有没有"Quick Wins"、建议是否具体可执行?

NotFair 针对这三层问题,构建了三个测试层级:llm-judge(文档质量)、e2e(完整执行)、routing(路由触发),全部放在 test/ 目录中。

二、LLM-as-Judge:让 AI 给技能文档打分

三维评分标准:清晰度、完整度、可执行性

核心实现在 test/helpers/llm_judge.py。它用便宜的 Gemini Flash 模型(gemini-2.0-flash、temperature=0.0)充当"评审",对技能文档的每个章节按 1-5 分打分:

维度考察点及格线
clarity 清晰度Agent 能否仅凭描述理解每一步在做什么≥ 4
completeness 完整度命令、参数、预期行为是否都有文档记录≥ 4
actionability 可执行性Agent 能否不追问就直接正确执行≥ 4

评审提示词定义在 judge() 函数,强制模型只返回 JSON,并附一句reasoning解释扣分原因——失败时一眼就能看出问题在哪。

报告质量也有专属评审

除了评"文档",NotFair 还评"产出"。seo_report_judge()会检查 Agent 生成的 SEO 报告是否满足四项硬指标(llm_judge.py):

  • ✅ 包含带具体 URL 和查询词的Quick Wins区块
  • ✅ 建议具体可执行(而非"提升你的 SEO"这类空话)
  • ✅ 含 30 天行动计划
  • ✅ 至少一条建议量化了预期影响(如预计点击增长)

一次完整跑 LLM-judge 套件成本仅约$0.05,门槛低到可以在每次修改文档后随手运行。

三、E2E 路由测试:技能会不会被"叫错名"

这是整套体系中最巧妙的部分。路由测试(test/test_skill_routing_e2e.py)验证的不是"技能能不能干活",而是技能的 description 写得够不够精准——因为它决定了 Agent 何时加载这个技能。

正反两组提示词对照

测试定义了 SHOULD_TRIGGER 与 SHOULD_NOT_TRIGGER 两组真实用户话术:

应触发 ✅不应触发 ❌
"网站流量上月掉了 40%,帮我查原因""CSS Grid 在移动端布局错位"
"帮我做一次 SEO 审计""优化一个 200 万行表的 SQL 查询"
"我想看 Google 里排名靠前的关键词""帮我写一篇远程团队项目管理博客"

判定方式:不靠模型自我报告

如何判断技能真的被调用了?NotFair 使用特征标记法:检查输出中是否出现phase 1、quick wins、analyze_gsc等 SEO 流程专属词汇,或 Agent 是否真的调用了analyze_gsc脚本。此外还有一个防御性设计——超时/崩溃等 harness 故障绝不允许静默通过"不应触发"用例(test_skill_routing_e2e.py),避免"测试没跑起来 = 通过"的假阳性。

四、E2E 执行测试:用 Mock 数据跑完整工作流

真正的端到端测试在 test/test_skill_e2e.py。它通过 session_runner.py 以子进程方式启动claude -p,解析stream-json输出,完整记录工具调用链、轮次、耗时与费用。

关键设计是零真实凭证:测试夹具 test/fixtures/ 提供了mock-gcloud.sh和sample_gsc_data.json,把真实的 Google 数据拉取替换为确定性的模拟数据,Agent 就能走完整 6 个阶段的 SEO 审计,且每次结果可复现。

五、省钱的巧思:基于 Git Diff 的测试选择

LLM 测试不是免费的,NotFair 用 test/helpers/touchfiles.py 实现了差异触发:每个测试声明自己依赖哪些文件(如"路由测试只依赖skills/seo-analysis/SKILL.md"),运行时对比基线分支的 diff,只有相关文件被改过才执行该测试。修改了 Ads 技能,SEO 的评估就自动跳过——测试成本与实际改动精准挂钩。

六、结果持久化:每次评估都留下"体检报告"

所有层级共用 test/helpers/eval_store.py 的结果收集器,在进程退出时把本次评估写入~/.toprank-evals/,文件名包含版本号、分支、git SHA 和时间戳,JSON 内容记录每个用例的通过状态、耗时、花费、评审分数与推理过程,并在终端打印一张汇总表格。这让"技能质量"像性能指标一样,可以随版本演进被追踪和对比。

此外,还有一层免费的静态守卫:test/unit/test_skill_descriptions.py 无需任何 API Key,直接检查全部技能的 description 是否超过 1024 字符上限、以及各模型封装层与源文档是否保持同步——描述超长的技能会挤占 Agent 的上下文,这是最便宜的质量防线。

七、这套体系给开源 Agent 项目的启示

NotFair 的做法可以总结为一句话:把"技能质量"从玄学变成工程。

  • 🔍文档质量可打分:LLM-as-Judge 用三维 1-5 分制,让SKILL.md的每次改动都有回归信号;
  • 🎯触发行为可验证:正/反提示词对照 + 特征标记检测,杜绝技能误触发与漏触发;
  • 💰测试成本可控:Mock 数据零凭证、diff 选择按需执行、廉价模型当评审;
  • 📊结果可追溯:JSON 持久化 + git SHA 绑定,质量随版本可比。

如果你正在为 AI Agent 编写技能,这套 test/ 下的方案(评审器、会话运行器、diff 选择器、结果收集器)是非常值得借鉴的起点。

更多技能文档见 skills/ 与 seo/seo-analysis/SKILL.md,项目概览参考 README.md。

【免费下载链接】notfair-pluginOpen-source SEO, GEO, and marketing skills for AI agents.项目地址: https://gitcode.com/gh_mirrors/to/notfair-plugin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 13:40:19

考虑直流电压动态的跟网型VSC正负序阻抗建模与扫频验证

做并网变流器稳定性分析,正负序阻抗建模是绕不开的一环。前几年做新能源场站次同步振荡复现时,我最头疼的就是:时域仿真里振荡现象清清楚楚,但手里没有一台能解释机理的解析模型。后来把跟网型(GFL)VSC的阻…

作者头像 李华
网站建设 2026/9/26 13:40:15

风储深度调峰优化调度:Matlab建模与求解实战

做电力系统仿真的朋友,估计都遇到过这种需求:导师或者领导丢来一句话,“风储深度调峰模型,你用 Matlab 给我跑一下,最好能出图”。风储深度调峰模型,说白了就是把风电和储能当作调节资源,参与电…

作者头像 李华
网站建设 2026/9/26 13:40:08

代运营排行榜的水有多深?一套筛选靠谱服务商的可落地方法

1. 代运营这个行业,为什么榜单越来越不靠谱做电商的朋友,尤其是品牌刚起步、店铺还没跑通的中小卖家,几乎都动过找代运营的念头。你打开任意一个搜索平台,输入"代运营"三个字,跳出来的全是各种"十大品牌…

作者头像 李华
网站建设 2026/9/26 13:38:43

video-use:从摄像头预览到录制回放的浏览器多媒体实践

看到 video-use 这个名字,我第一反应是:这不就是把视频功能常用的那段代码抽出来吗?等真在项目里跑了一圈,才发现这个“用”字特别容易翻车——摄像头权限、编码容器、移动端回放,哪一环没捋清楚,线上就是一…

作者头像 李华
网站建设 2026/9/26 13:37:46

中文乱码全解析:从编码原理到Windows、Linux、macOS实战修复

1. 乱码不是玄学,是编码链路里某一环对不上干开发这行十几年,被问得最多的问题里,"为什么我这里中文显示成乱码"绝对排前三。很多人第一次遇到乱码时的反应是"电脑坏了""软件有bug",其实乱码从来不…

作者头像 李华