跳转到主要内容
Skill 的难点不只是“最后答案对不对”,还包括 agent 是否在正确场景加载 Skill、是否遵循 Skill 里的流程、是否调用了该调用的工具。niceeval 适合把这些都变成可重复运行的 eval。 这类 eval 通常也采用 Sandbox 模式。你给 agent 一个真实任务,让它在带 Skill 的环境中执行;验证阶段检查产物、测试结果和行为痕迹。

评什么

  • Skill 是否会被正确触发。
  • Skill 指令是否让 agent 走预期流程。
  • Skill 是否改善 pass rate、成本或耗时。
  • Skill 是否避免了错误工具、错误文件或错误命令。

定义实验与安装 Skill

export default defineExperiment({
  description: "claude-code",
  agent: claudeCodeAgent(
    {
      skill: ["username/repo"]
    }
  ),
  model: "claude-sonnet-4-6",
  sandbox: "docker",
  runs: 3,
  earlyExit: false,
  budget: 10,
})
username/repo 是你在 GitHub 上的 Skill 仓库。 对应的agent adapter 将使用npx skill add为你添加与配置对应的skill.

写 Eval

EVAL.ts
import { test, expect } from "vitest";
import { readFileSync } from "node:fs";

test("adds schema validation", () => {
  const src = readFileSync("src/input.ts", "utf-8");
  expect(src).toContain("email");
  expect(src).toContain("age");
  expect(src).toMatch(/schema|Schema|zod|validator/);
});

test("project tests pass", async () => {
  // 如果 package.json 里已有 test 脚本,niceeval 会在验证阶段跑它。
  expect(true).toBe(true);
});
如果 agent 的 transcript 会暴露 Skill 加载事件,可以用 o11y 或 event stream 检查;如果不同 agent 的事件名不稳定,优先验证最终产物和真实测试。

运行

pnpm exec niceeval exp 实验名

下一步

  • Fixtures — 组织任务和验证脚本。
  • Experiments — 做有 Skill / 无 Skill 的对照实验。
  • 评分指南 — 把最终结果和行为约束一起评分。