关于 evaluate-skill
evaluate-skill 是通过隔离的 Codex 会话连接本地 MCP 端点,测试并比较技能修改的工作流。它收集报告和工具调用记录,并提供评分标准与检查项来评估审计质量。
主要功能
- 01运行隔离的 Codex 会话
- 02冻结技能副本并记录哈希
- 03通过网关限制 MCP 调用
- 04收集报告、事件和工具记录
- 05按加权标准评估结果
适用场景
- 01比较 SEO 审计技能的不同版本
- 02在留出网站上测试技能表现
- 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。请妥善保密;该服务没有登录机制。 - 命令行中可用
codexCLI。运行时会使用其配置的默认模型,并启用高推理强度;如需注明模型名称,请从事件日志中记录解析后的模型。 - 研究额度:本地服务仍会调用 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 &)
脚本会为每个网站执行以下操作:
- 将候选技能和
seo-report复制到新的临时文件夹。运行期间的编辑不会更改其指令;清单会记录技能的哈希值。 - 创建一个仅以简介为初始内容的新本地项目。
- 在本地 MCP 前启动一个网关,该网关仅允许固定的工具列表,并拒绝任何针对其他项目 ID 的调用;然后在启动前测试该拒绝机制。
- 以临时模式运行
codex exec,忽略用户配置、记忆、应用、插件和多 Agent,并且仅由技能的自我审查功能充当审查者。 - 在输出文件夹下保存报告 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 删除,也可以保留在本地数据库中。每次运行新建一个项目,比证明旧项目已清理干净更简单。完成后停止本地服务。