SKILL.md 的本地目录,就可以用 comet eval 评估一个 Skill。即使你还没有预先编写评估用例,Eval 也会根据 Skill 的内容自动生成 2–4 个评估用例并运行。本文按实际使用顺序介绍:先跑通一次,再选择 Agent 和评估后端,然后配置任务、生成报告和定位失败原因。
你要准备什么
必需内容
- 已安装
@rpamis/comet。npm 包自带 eval harness,不需要 clone Comet 仓库。 - 一个本地 Skill 目录,里面包含
SKILL.md。 - 运行真实评估时,需要
uv、Python 3.11+、Docker、选定的 Agent CLI 和对应模型凭证。
--collect 只做静态发现和配置检查,不启动 Agent、Docker、插件、凭据或网络请求。因此可以先用它检查 Skill,不必一开始就准备完整的模型环境。
如果要选择 Claude Code 以外的 Agent,先阅读 Eval Agent 启动配置,确认对应的 CLI、认证方式和模型协议。
用户级 .env 配置
普通用户不需要 clone Comet 源码,也不需要进入源码目录下的 eval/。第一次运行任意
comet eval 命令时,CLI 会自动创建完整的用户级配置文件:
- Windows:
%USERPROFILE%\\.comet\\eval\\.env - macOS/Linux:
~/.comet/eval/.env
.env。
自动生成的模板包含全部用户可配置参数,按以下几组组织:
模板中的参数默认都是注释,不填写的项目不会改变默认行为。真实 API key 只应放在用户级
.env 或当前 shell,不能写入 Skill、manifest、报告或公开仓库。
支持哪些评估 Agent
comet eval 默认使用 claude-code。主 Agent、用户模拟器和可选的 Judge 都可以使用以下 Agent:
自定义 Agent 适配器是用户级进阶能力,不需要 clone Comet 源码。只有需要修改内置 Eval harness、
任务或 Docker 环境时,才需要参考进阶配置。
第一次运行
先做不调用模型的预检查,再运行一次低成本冒烟,最后根据需要运行完整任务集:comet/eval.yaml,或者 manifest 中没有 evaluation.tasks 和 recommendedTasks 时,普通运行会根据 Skill 内容自动生成 2–4 个评估用例,冻结并缓存后再执行。你不需要先手写任务就能开始评估。--quick 不会使用这些自动生成的用例,而是固定运行 generic-skill-smoke,验证 Skill 能被注入、调用并产出 result.md。
target 怎么传
目录、直接的SKILL.md 和 manifest 都可以作为 target:
--project 指定保存运行状态和报告的项目目录:
配置评估 Agent 和 Judge
最简单的方式是在命令行选择主 Agent:comet/eval.yaml,在这个文件中配置默认 Agent。例如目录结构如下:
comet eval ./my-skill 时,Comet 会自动发现 ./my-skill/comet/eval.yaml。你也可以直接把这个文件作为 target 传入:
eval.yaml 中配置默认 Agent。CLI 选项优先于 manifest:
选择评估后端
--suite 选择评估后端。三种后端使用同一套 target、任务和 Agent 配置,区别在于结果是否同步到外部评估服务:
Langfuse 示例:
--collect 一起使用:
--collect --suite langfuse 不初始化 SDK、不联网,也不会下载插件。
报告有哪些类型
评估状态和报告默认写入 target 所属项目的:--html 时,评估仍然会生成 summary.md。需要 HTML 时运行:
--report-config <path> 或 COMET_EVAL_REPORT_CONFIG 自定义报告输出。CLI 会打印 Experiment 和 Report path,查找报告时以本次输出为准。
看报告时先关注三件事:
- 评估是否通过。
- 失败归因是
harness、workflow、task还是model。 - 是否缺少预期 artifact,以及 token、cost、duration 是否异常。
harness 通常表示环境或依赖问题,workflow 表示 Skill 流程没有达到预期,task 表示任务定义或校验条件有问题,model 表示模型行为或调用不稳定。
怎么自定义任务
任务按以下优先级选择:- CLI 指定的
--task。 --quick使用的generic-skill-smoke。- manifest 中的
evaluation.tasks。 - manifest 中的
recommendedTasks或任务包source。 - 没有可用任务时,根据 Skill 内容自动生成并缓存 2–4 个评估用例。
comet/eval.yaml,并在其中的 evaluation.tasks 下声明 inline task。例如:
引用 Skill 包内的任务包
如果任务需要独立的task.toml、instruction.md、Docker 环境或验证脚本,可以把任务包放在 Skill 目录内,再通过 source 引用。推荐的目录结构如下:
comet/eval.yaml 中,用 evaluation.tasks[].source 指向任务包。这里的 source 相对于 Skill 包根目录(包含 SKILL.md 的目录),不是相对于 comet/ 目录:
task.toml 字段、验证脚本、profile 和 Docker 配置说明,见配置评估与自定义 Task。
task.toml 声明任务元数据、Docker 环境、需要检查的产物和验证脚本:
instruction.md 是发给 Agent 的任务指令:
environment/Dockerfile 提供任务运行和校验所需的基础环境:
validation/test_summary.py 在任务容器内检查 Agent 是否产出了符合要求的文件:
eval-tasks/writes-summary/task.toml 描述任务的环境和校验方式,instruction.md 是发给 Agent 的任务指令;如果需要 Docker 或确定性校验脚本,就分别放在同一个任务包的 environment/ 和 validation/ 下。source 任务不能同时写 inline task 的 prompt 或 expect 字段,且 Comet 会检查任务包中确实存在 task.toml 和 instruction.md。
配置后可以直接传 Skill 目录,Comet 会自动发现 comet/eval.yaml;也可以直接传 manifest:

