用途
add-eval 用于为某个工具或集合添加、更新 LLM 评估测试。它会创建一个新的评估场景,或更新已有场景,以覆盖新加入的工具。
适用情形:
- 通过 /add-tool 添加了新工具,希望补充评估覆盖;
- 修改了某个工具,需要更新对应评估场景;
- 想为已有集合新增工作流场景;
- /build-evals 因为评估文件已存在而跳过了该集合。
前置条件
运行前需确保:
- 集合已存在(src/umbraco-api/tools/{collection}/index.ts);
- 项目可构建:npm run build;
- 具备 LLM API key(评估测试使用 Claude Agent SDK,可用 Claude Code 订阅或 ANTHROPIC_API_KEY)。
参数
- 集合名称(必填):要添加评估覆盖的集合,例如 /add-eval form;
- 工具或场景提示(可选):要测试的内容,例如 /add-eval form "copy form workflow"。
若未提供提示,则将集合中的工具与已有评估测试覆盖进行对比,并建议缺失的部分。
Agent
- eval-test-creator:用于创建或更新评估测试文件(第 3 或第 4 步)。
关键规则
- 先构建再运行。评估测试针对 dist/index.js 运行,务必先执行 npm run build。
- 分开执行命令。构建和测试始终作为两次独立的 Bash 调用,切勿用 && 串联。
- 迭代提示词。评估测试具有概率性,测试失败通常应修改提示词。
- 开发时启用详细输出。创建或调试时始终设置 verbose: true。
工作流程
第 0 步:检查评估基础设施
检查评估设置是否存在:
- tests/evals/helpers/e2e-setup.ts
- tests/evals/jest.config.ts
若设置不存在,告知用户先运行 /build-evals {collection} 创建基础设施。本技能不创建评估设置文件。
第 1 步:了解当前覆盖情况
阅读集合工具与已有评估测试:
- src/umbraco-api/tools/{collection}/index.ts —— 集合中的所有工具;
- tests/evals/{collection}-*.test.ts —— 已有评估场景;
- 每个评估测试文件 —— 了解覆盖了哪些工具、在什么场景中。
建立清单:
- 已有评估覆盖的工具(出现在场景的 tools 和 requiredTools 数组中);
- 没有评估覆盖的工具;
- 已有工作流场景。
第 2 步:决定更新还是新建
根据清单和用户请求判断:
更新已有场景的情况:
- 新工具扩展了已有工作流(例如向 CRUD 场景加入 copy-form);
- 新工具是已有测试提示词的自然补充。
新建场景的情况:
- 新工具代表不同能力(例如搜索、层级、导入/导出);
- 加入已有场景会使提示词过于复杂;
- 没有已有场景覆盖该工具的领域。
第 3 步:更新已有场景(如适用)
更新已有评估测试时:
- 将新工具加入 COLLECTION_TOOLS 数组;
- 若该工具必须被调用,加入 requiredTools;
- 更新提示词,加入可演练新工具的步骤;
- 保持提示词清晰且顺序化,不要过长。
构建并运行:
npm run build
npm run test:evals -- --testPathPatterns="{collection}"
若测试失败,迭代提示词。常见修复:
- 让指令更明确;
- 加入搜索/列表步骤以动态查找 ID;
- 若提示词过于复杂,简化工作流。
第 4 步:创建新场景(如适用)
使用 eval-test-creator agent 创建 tests/evals/{collection}-{workflow}.test.ts。该 agent 负责测试模板与模式。
构建并运行:
npm run build
npm run test:evals -- --testPathPatterns="{collection}-{workflow}"
迭代提示词直到测试稳定通过。
第 5 步:报告
报告完成情况:
- 是更新了已有场景还是创建了新场景;
- 文件路径;
- 覆盖的工具;
- 测试通过状态;
- 需要进行的提示词迭代。