mcpField
E
evaluate-skill

evaluate-skill

github.com/every-app测试与质量25.9k101 次安装1 天前更新
代码仓库

关于 evaluate-skill

evaluate-skill 是通过隔离的 Codex 会话连接本地 MCP 端点,测试并比较技能修改的工作流。它收集报告和工具调用记录,并提供评分标准与检查项来评估审计质量。

主要功能

  1. 01运行隔离的 Codex 会话
  2. 02冻结技能副本并记录哈希
  3. 03通过网关限制 MCP 调用
  4. 04收集报告、事件和工具记录
  5. 05按加权标准评估结果

适用场景

  1. 01比较 SEO 审计技能的不同版本
  2. 02在留出网站上测试技能表现
  3. 03追查审计错误源于工具还是推理

MCP 相关

该工作流通过网关将评估会话连接到本地 MCP 端点,并限制可用工具和项目 ID。它通过 MCP 调用收集审计数据,也支持使用 MCP 操作进行清理。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/every-app/open-seo --skill evaluate-skill

安装后在 Claude Code 中输入/evaluate-skill确认已加载。

详细介绍

评估一项技能

技能编辑的效果,取决于它生成的报告质量。此工作流会在以下会话中运行候选技能:会话只能获取技能文件、一行业务简介和一个锁定的本地 MCP 端点,然后比较生成的结果。

前提条件

  • 本地服务处于无身份验证模式:在 .env.local 中设置 AUTH_MODE=local_noauth,然后运行 pnpm db:migrate:local 和 pnpm dev(或 pnpm dev:agents)。将它输出的 URL 追加 /mcp 后作为 --endpoint 传入。使用默认本地 D1,绝不使用远程绑定或远程 Postgres。请妥善保密;该服务没有登录机制。
  • 命令行中可用 codex CLI。运行时会使用其配置的默认模型,并启用高推理强度;如需注明模型名称,请从事件日志中记录解析后的模型。
  • 研究额度:本地服务仍会调用 DataForSEO。一次审计运行会发起 20 到 40 次工具调用。比较所需之外,不要运行更多会话。

运行

node .agents/skills/evaluate-skill/scripts/run.mjs \
  --skill seo-audit \
  --site example.com --site holdout.example \
  --brief "Evaluation brief: Acme at example.com sells <what>. The goal is relevant organic visitors who could become customers. No first-party analytics are connected." \
  --brief "Evaluation brief: <the holdout business>. ..." \
  --endpoint http://<local-dev-host>/mcp

运行大约需要 10 到 14 分钟,并行执行。请将脚本作为后台进程启动,因为工具调用超时若终止 shell,也会终止会话:

(nohup node .agents/skills/evaluate-skill/scripts/run.mjs ... > .logs/eval.log 2>&1 &)

脚本会为每个网站执行以下操作:

  1. 将候选技能和 seo-report 复制到新的临时文件夹。运行期间的编辑不会更改其指令;清单会记录技能的哈希值。
  2. 创建一个仅以简介为初始内容的新本地项目。
  3. 在本地 MCP 前启动一个网关,该网关仅允许固定的工具列表,并拒绝任何针对其他项目 ID 的调用;然后在启动前测试该拒绝机制。
  4. 以临时模式运行 codex exec,忽略用户配置、记忆、应用、插件和多 Agent,并且仅由技能的自我审查功能充当审查者。
  5. 在输出文件夹下保存报告 HTML、所有 MCP 调用及响应、事件流和最终消息。

使用 node .agents/skills/evaluate-skill/scripts/report-text.mjs <out>/*-report.html 阅读报告。每个会话的工作笔记(对于 seo-audit,为 opportunities.md 和 evidence/)保存在其临时文件夹中,具体位置记载于 manifest.json。

隔离规则

  • 指令: 仅使用冻结副本。绝不要让会话指向工作树。
  • 对话: 每次运行都使用新的 codex exec。绝不恢复或分叉会话。
  • 数据: 每次运行都创建一个新项目,且仅以用户提供的简介为初始内容。绝不要将评估者笔记、先前报告或参考答案写入任何会话可读取的项目。
  • 提示词: 每个变体都使用相同的中性提示词。不要提及预期发现、目标关键词或评分标准。
  • 评估材料(评分标准、参考审计、先前报告)应存放在会话文件夹和仓库之外。原始产物应放在被忽略的 .logs/ 中。

这是实用层面的隔离,并非安全边界:各会话共享本地账户、服务提供商缓存和组织级限制。

比较

至少运行你正在调优的网站的两个会话,并在一个形态不同的备用网站上运行一个会话,这样就能发现只适用于某家公司的答案的指令。保留每次运行的结果,包括失败的结果;不要从多次运行中挑出最好的,然后就说技能已经修好。

先给每份报告评分,再打开工具调用轨迹,然后阅读轨迹,将任何失误归类为发现、工具、推理或报告问题。对于审计报告:

维度权重优秀的报告……
发现与覆盖25%阅读商业页面及其同类页面、工具和技术路径;出现信号时扩大范围
诊断与证据20%检查实时页面和实时结果;区分观察结果与原因;记录来源、日期和设置
商业价值与规模20%将每项行动与真实买家关联;比较相互竞争的机会;绝不捏造转化或收入
优先级15%优先提出针对已证实问题、面向潜在买家的范围明确的改动;将维护和大范围计划放在后面
校准10%即使没有分析数据也能做出有用判断;不做证据无法支撑的惩罚性判断、因果判断或趋势判断
沟通与可执行性10%明确指出页面、改动和原因;精简报告时仍保留重要发现

出现重大事实错误时,分数不再重要。在信任报告中的数字前,请另请一个模型根据该次运行自己的 MCP 日志重新计算所有实时排名。

适用于不同网站的覆盖检查:

  • 重要类别中的同类页面(比较、定价、模板、地点)已并排阅读,并且已发现只是在共用答案中替换名称的页面。
  • 对于某个查询已经排名靠前的页面,应予以保护,而不是改写。
  • 每个严肃候选项最终都应成为一项建议,或成为附有合理原因的表格行。“以后再说”之类含糊说法不合格。
  • 应将搜索量、访问量和收入区分开;不得将美国的需求乘算为全球数据。

过往评估的启示

  • 指令越长,效果越差。 一份包含 3,600 个词、全是注意事项的技能,表现不如一份包含 2,200 个词且流程固定的技能。应增加步骤,而不是警告。
  • 强制比较。 先列出候选清单再起草报告的会话保留了诊断结论;直接根据研究起草的会话则按原始查询量排序。
  • 展示被排除的候选项。 报告中的“我们还检查了什么”表格,可以防止重要发现因报告缩短而消失。
  • 单次快照会误导。 相隔几分钟进行两次检查,排名在第 8 至第 12 位之间的结果就可能发生变化;技能会重新运行决定性查询并报告两次结果。
  • 标签胜过备注。 读者不接受“17 条自然搜索结果中的第 10 条”和箭头;现在表格会标明“第 10 位(第 1 页)”,并在表头中注明市场和日期。

清理

每次运行的项目、报告和审计都可以通过 MCP 使用 delete_report、delete_site_audit 和 update_project_context 删除,也可以保留在本地数据库中。每次运行新建一个项目,比证明旧项目已清理干净更简单。完成后停止本地服务。

评论

支持 Markdown