Skip to main content
你只需要一个包含 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
CLI 只会创建缺失文件,不会覆盖已有文件。首次运行会在输出中显示实际路径;打开这个文件, 按需填写参数后再次运行即可。当前 shell 中已经设置的环境变量优先于 .env 自动生成的模板包含全部用户可配置参数,按以下几组组织: 模板中的参数默认都是注释,不填写的项目不会改变默认行为。真实 API key 只应放在用户级 .env 或当前 shell,不能写入 Skill、manifest、报告或公开仓库。

支持哪些评估 Agent

comet eval 默认使用 claude-code。主 Agent、用户模拟器和可选的 Judge 都可以使用以下 Agent:
自定义 Agent 适配器是用户级进阶能力,不需要 clone Comet 源码。只有需要修改内置 Eval harness、 任务或 Docker 环境时,才需要参考进阶配置
非预定义 Agent 的注册、凭据和 CLI 约定见Eval Agent 启动配置。 仅仅把可执行文件放到 PATH 上不会自动启用它。 如果看到评估瞬间结束且没有真实运行,通常是 Docker、Agent CLI 或模型凭证没有准备好;harness 在这些情况下通常会跳过,而不是伪造一次成功运行。

第一次运行

先做不调用模型的预检查,再运行一次低成本冒烟,最后根据需要运行完整任务集:
没有 comet/eval.yaml,或者 manifest 中没有 evaluation.tasksrecommendedTasks 时,普通运行会根据 Skill 内容自动生成 2–4 个评估用例,冻结并缓存后再执行。你不需要先手写任务就能开始评估。--quick 不会使用这些自动生成的用例,而是固定运行 generic-skill-smoke,验证 Skill 能被注入、调用并产出 result.md

target 怎么传

目录、直接的 SKILL.md 和 manifest 都可以作为 target:
没有 manifest 时,Comet 会在内存中合成基础配置,不会改写 Skill 源文件。Skill 在仓库外时,用 --project 指定保存运行状态和报告的项目目录:

配置评估 Agent 和 Judge

最简单的方式是在命令行选择主 Agent:
也可以在被评估 Skill 的根目录下创建 comet/eval.yaml,在这个文件中配置默认 Agent。例如目录结构如下:
当你运行 comet eval ./my-skill 时,Comet 会自动发现 ./my-skill/comet/eval.yaml。你也可以直接把这个文件作为 target 传入:
eval.yaml 中配置默认 Agent。CLI 选项优先于 manifest:
主 Agent 和 LLM-as-Judge 可以使用不同的 Agent、模型、API 地址和凭据。Judge 不会默默继承主 Agent 的模型或凭据;启用 Judge 时,需要单独提供 Judge 配置。

选择评估后端

--suite 选择评估后端。三种后端使用同一套 target、任务和 Agent 配置,区别在于结果是否同步到外部评估服务: Langfuse 示例:
如果只是检查任务和配置,任何后端都可以和 --collect 一起使用:
--collect --suite langfuse 不初始化 SDK、不联网,也不会下载插件。

报告有哪些类型

评估状态和报告默认写入 target 所属项目的:
不带 --html 时,评估仍然会生成 summary.md。需要 HTML 时运行:
也可以用 --report-config <path>COMET_EVAL_REPORT_CONFIG 自定义报告输出。CLI 会打印 ExperimentReport path,查找报告时以本次输出为准。 看报告时先关注三件事:
  1. 评估是否通过。
  2. 失败归因是 harnessworkflowtask 还是 model
  3. 是否缺少预期 artifact,以及 token、cost、duration 是否异常。
失败归因的含义是:harness 通常表示环境或依赖问题,workflow 表示 Skill 流程没有达到预期,task 表示任务定义或校验条件有问题,model 表示模型行为或调用不稳定。

怎么自定义任务

任务按以下优先级选择:
  1. CLI 指定的 --task
  2. --quick 使用的 generic-skill-smoke
  3. manifest 中的 evaluation.tasks
  4. manifest 中的 recommendedTasks 或任务包 source
  5. 没有可用任务时,根据 Skill 内容自动生成并缓存 2–4 个评估用例
如果自动生成的任务不够贴合你的 Skill,请在被评估 Skill 的根目录下创建或编辑 comet/eval.yaml,并在其中的 evaluation.tasks 下声明 inline task。例如:

引用 Skill 包内的任务包

如果任务需要独立的 task.tomlinstruction.md、Docker 环境或验证脚本,可以把任务包放在 Skill 目录内,再通过 source 引用。推荐的目录结构如下:
在 Skill 根目录的 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 的 promptexpect 字段,且 Comet 会检查任务包中确实存在 task.tomlinstruction.md 配置后可以直接传 Skill 目录,Comet 会自动发现 comet/eval.yaml;也可以直接传 manifest:
任务可以检查文件、文本、JSON 或命令结果;任务工作区和期望产物必须留在允许的 Skill 包或评估工作区内。 只有需要自定义 Docker 环境、验证脚本、profile 或 treatment 时,才需要继续阅读配置评估与自定义 Task

一次推荐的评估流程

进一步阅读

最后修改于 2026年8月13日