Перейти к содержанию

Eval

Eval привязывает версионированный эталонный evaluation-профиль к одному конкретному локальному графу сетапа или ко всем объявленным адаптациям одной версии компонента и выполняет локальные детерминированные проверки. Он не устанавливает, не публикует и не обращается к API модели.

Профиль одинаков для всех вызывающих. План фиксирует сетап, harness, провайдер и раннер. Запуск подтверждается дайджестом плана. Команды status и show читают неизменяемые локальные свидетельства. Повторный eval show с тем же run_id возвращает те же байты.

Таблица команд

Команда Изменяемость Подтверждение Когда
ai-stp eval profile read none показать версионированный эталонный профиль для всех или одного типа компонента
ai-stp eval plan plan none привязать этот профиль к адаптациям харнесса этого сетапа
ai-stp eval component plan plan none привязать этот профиль ко всем адаптациям одной версии компонента
ai-stp eval run apply plan_digest выполнить локальные детерминированные проверки для одного подтверждённого плана сетапа
ai-stp eval component run apply plan_digest выполнить локальные детерминированные проверки для одного подтверждённого плана компонента
ai-stp eval component status read none прочитать неизменяемый статус одного локального прогона оценки компонента
ai-stp eval component show read none показать полные неизменяемые локальные свидетельства одного прогона оценки компонента
ai-stp eval status read none прочитать неизменяемый статус одного локального прогона оценки сетапа
ai-stp eval show read none показать полные неизменяемые локальные свидетельства одного прогона оценки сетапа

--json — глобальный флаг. Всегда передавайте его. eval run и eval component run требуют --expected-plan-digest. Флага --confirm не существует. План сетапа включает только адаптации харнесса этого сетапа. План компонента включает каждую объявленную адаптацию версии.

Profile

ai-stp eval profile --json
ai-stp eval profile --type skill --json

--type опционален. Если указан — одно из значений: instruction, skill, mcp, hook, command, agent, plugin, setting.

Поля успеха: profile_id, scope, component_types, preconditions, checks, eval_permissions, profile_version. Каждая проверка содержит check_id, method, runner, assertion, tolerance, budget. Permissions перечисляют filesystem, network и process posture. Поля бюджета включают timeout_seconds и max_output_bytes.

Plan

ai-stp eval plan \
  --setup-id <setup_id> \
  --setup-version 1.0 \
  --harness-version 0.140.1 \
  --provider-version 1.2.3 \
  --runner-version 1.0.0 \
  --json

Обязательные: --setup-id, --setup-version, --harness-version, --provider-version, --runner-version. --component-id — повторяемый: опциональное точное подмножество графа сетапа.

Сетап уже должен существовать локально в точной версии X.Y. Eval его не собирает.

Поля успеха: plan_id, plan_digest, profile, setup_id, setup_version, setup_passport_digest, setup_artifact_digest, harness_id, harness_version, provider_version, runner_version, components, planned_at. Каждая координата компонента содержит stable_id, version, passport_digest, artifact_digest, component_type.

Run

ai-stp eval run \
  --plan-id <plan_id> \
  --expected-plan-digest sha256:... \
  --json

--plan-id и --expected-plan-digest обязательны. Дайджест — тот, что вернул eval plan. Изменённый граф — это новый план.

Запуск выполняет local-static проверки из профиля. Он не применяет сетап и не обращается к модели.

Поля успеха: run_id, result_digest, plan, status, executed_at, checks. Каждый результат проверки содержит check_id, method, runner, status, message. Также присутствуют: immutable_published_bytes_changed, provider_permissions_used.

Status и show

ai-stp eval status --run-id <run_id> --json
ai-stp eval show --run-id <run_id> --json

--run-id обязателен. Оба ответа используют ту же схему результата. status — краткое неизменяемое представление; show — полные свидетельства. Ни одна из команд не перезапускает проверки.

Счастливый путь

select confirm --proposal <id>          # или setup compose apply
→ eval profile --type skill
→ eval plan --setup-id <id> --setup-version <X.Y> --harness-version … --provider-version … --runner-version …
→ eval run --plan-id <plan_id> --expected-plan-digest sha256:...
→ eval status --run-id <run_id>
→ eval show --run-id <run_id>

Зелёный eval — локальное свидетельство. Это не component_verified, не публикация и не установка. Подписанные аттестации добавляются через attestation sign, когда они нужны плану публикации.

Именованные поля успеха

Команда Поля для чтения
profile profile_id, checks, eval_permissions
plan plan_id, plan_digest, setup_passport_digest, components
run / status / show run_id, result_digest, status, checks, executed_at

Для запуска также читайте immutable_published_bytes_changed и provider_permissions_used. Изменение опубликованных байтов во время eval — сигнал остановиться, а не деталь, которую можно проигнорировать.

Отказы

Что вы видите Что это значит Что делать
AI_STP_VALIDATION_ERROR отсутствует обязательная версия или id, либо --type не входит в закрытый набор прочитайте descriptor
AI_STP_NOT_FOUND такая версия сетапа или id плана отсутствуют локально сначала compose или confirm сетап
AI_STP_PLAN_STALE --expected-plan-digest больше не совпадает выполните eval plan заново
AI_STP_PRECONDITION_FAILED предварительное условие профиля не выполнено прочитайте preconditions; исправьте граф
AI_STP_USER_DECISION_REQUIRED дайджест не передан передайте --expected-plan-digest
интерпретация status: failed как ok: false envelope всё ещё может быть успешным отчётом о проваленных проверках читайте status и message каждой проверки
изобретение --confirm запуск подтверждается дайджестом плана не добавляйте boolean-флаг
просьба eval вызвать модель этот продукт этого не делает остановитесь; флага для ключа модели не существует

Eval permissions — это заявленная posture профиля. Это не установка провайдера и не сетевое исключение для harness.

Связанные ссылки

Флаги берутся из continuation argv

ai-stp task intents --json

Не дампьте help --agent как прелюдию. Флаги текущей задачи — в continuation argv.

Эта страница группирует команды eval, чтобы человек мог их найти. Если эта страница и CLI расходятся, следуйте CLI.