Оценка предоставленных QA-данных
Требуется Bee 1.0.0-beta.15 с командой bee qa assess.
Передайте агенту одну оценку уже имеющихся данных, а затем следуйте указанным наблюдениям и следующим проверкам, не открывая заново каждый исходный отчёт. Команда читает локальные файлы и использует Git только для чтения. Она не запускает тесты, генераторы отчётов или вложения, не удостоверяет производителя, не даёт приёмку и не измеряет экономию.
Запуск объявленных проверок через qa run
Заголовок раздела «Запуск объявленных проверок через qa run»Описанная выше qa assess только диагностирует предоставленные данные. Для текущего checkout bee qa run выполняет явную JSON-спецификацию задачи с критериями и проверками; команды не выводятся из текста. Начните с действующего шаблона спецификации и просмотрите каждый исполняемый файл и аргумент до запуска:
bee qa run --help --jsonbee qa run --root /absolute/checkout --spec /absolute/task.json --jsonСпецификация содержит schemaVersion: 1, profile: "change-task", от 1 до 16 критериев и проверок. Критерий задаёт исходные paths и покрывающие их checkIds. Проверка repo-command указывает абсолютный executable, массив аргументов, исходные paths, дополнительные inputs и тайм-аут 1–300 секунд. code-analyze допускает native source/compiled или Roslyn compiled; покрытие тестами из этого не следует. Входы и идентификатор исходников снимаются до и после выполнения. Команда может писать файлы и запускать процессы; это не песочница. Внешний PATH не передаётся: используйте абсолютный интерпретатор или проверенную оболочку.
Код 0 означает verifiedCompletion=true только для объявленных проверок; 1 — repair_required, 4 — неверный вызов/спецификация, 5 — неполные данные или необходимость решения человека. Уровень доверия отчёта — in_process_only: сохранённый JSON не доказывает последующий запуск. Проверьте исходный вывод, качество проверок и субъективные критерии. Полный пример см. в расширенных CLI-сценариях, а отдельный отчёт владельца — в Планах.
1 · Выберите исходники и профиль
Заголовок раздела «1 · Выберите исходники и профиль»Начните в корне репозитория. Выберите локальный базовый коммит и либо текущий закоммиченный HEAD, либо worktree для текущих файлов. Пример фиксирует базу на текущем HEAD и оценивает рабочее дерево; при необходимости замените QA_BASE нужным коммитом сравнения. Если head задан коммитом, он должен совпадать с HEAD репозитория при неизменённых входных файлах. Коммиты не загружаются.
Встроенный профиль bee-cli описывает интеграцию QA CLI для linux-x64. Это не общий профиль для произвольного проекта, другой платформы или всего выпуска. Запуск импортёра на macOS не меняет целевую платформу.
Используйте оболочку с Git и Python 3. Этот код создаёт новый временный пакет вне репозитория и разрешает его физический путь, включая /private/tmp на macOS:
export QA_ROOT="$(pwd -P)"export QA_BASE="$(git -C "$QA_ROOT" rev-parse HEAD)"export QA_HEAD=worktreeexport QA_BUNDLE="$(python3 -c 'import pathlib,tempfile; print(pathlib.Path(tempfile.mkdtemp(prefix="bee-qa-demo-")).resolve())')"bee qa assess --helpВ следующих шагах используйте тот же репозиторий и пакет. --root, --base, --head и --profile обязательны; инициализация Bee и подключение к сервисам не нужны.
2 · Посмотрите, каких данных не хватает
Заголовок раздела «2 · Посмотрите, каких данных не хватает»qa_exit=0bee qa assess --root "$QA_ROOT" --base "$QA_BASE" --head "$QA_HEAD" \ --profile bee-cli --limit 5 --budget 16000 --json \ > "$QA_BUNDLE/preview.json" || qa_exit=$?test "$qa_exit" -eq 5Продолжайте только при успешной проверке кода выхода. Справка возвращает 0, неверные/неизвестные/повторные опции — 4, а каждая оценка намеренно возвращает 5. Код 5 означает, что диагностическая оценка не даёт приёмку; это не наблюдаемый код выхода тестового процесса и не доказательство падения тестов.
Без --evidence ожидаются decision: collect_evidence, missing_evidence и наблюдения о недостающем охвате. Изучите preview.json перед подготовкой реальных данных. Неразрешённые исходники или исчерпанный бюджет вывода не дают пригодной идентичности исходников.
3 · Подготовьте минимальный корректный пакет
Заголовок раздела «3 · Подготовьте минимальный корректный пакет»Пример записывает синтетические данные, а не результат запуска теста. Он создаёт один сбой TRX вне профиля с согласованной идентичностью теста и счётчиками. Индекс схемы 1 объявляет точный манифест исходников и политику из предварительного результата, а также фактическую длину файла в байтах и SHA-256. Время завершения и недоступные идентификаторы build/settings/toolchain/environment остаются неизвестными.
python3 - <<'PY'import hashlib, json, osfrom pathlib import Path
bundle = Path(os.environ["QA_BUNDLE"])preview = json.loads((bundle / "preview.json").read_text(encoding="utf-8"))source = preview["source"]["manifestSha256"]policy = preview["policyFingerprint"]assert source and policytrx = b'''<TestRun xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" id="11111111-1111-4111-8111-111111111111"> <TestDefinitions><UnitTest id="22222222-2222-4222-8222-222222222222"> <TestMethod className="Docs.Synthetic" name="Example"/> </UnitTest></TestDefinitions> <Results><UnitTestResult testId="22222222-2222-4222-8222-222222222222" executionId="33333333-3333-4333-8333-333333333333" testName="Synthetic example" outcome="Failed"/></Results> <ResultSummary outcome="Failed"><Counters total="1" executed="1" passed="0" failed="1" notExecuted="0"/></ResultSummary></TestRun>'''(bundle / "report.trx").write_bytes(trx)index = { "schemaVersion": 1, "runId": "docs-synthetic", "attemptId": "attempt-1", "completedAt": None, "bindings": {"source": source, "profile": "bee-cli", "policy": policy}, "acceptanceFingerprint": policy, "artifacts": [{"kind": "trx", "relativePath": "report.trx", "sha256": hashlib.sha256(trx).hexdigest(), "bytes": len(trx)}]}(bundle / "index.json").write_text(json.dumps(index) + "\n", encoding="utf-8")print(bundle / "index.json")PYrunId и attemptId обозначают предоставленный пакет. relativePath отсчитывается от каталога индекса. acceptanceFingerprint — поле привязки к политике; его заполнение не даёт приёмку. Копирование хеша исходников создаёт лишь заявление о содержимом, а вычисление хеша файла не удостоверяет производителя. Не подменяйте хеш исходников старого реального отчёта новым, чтобы скрыть несовпадение.
4 · Выполните оценку и прочитайте наблюдения
Заголовок раздела «4 · Выполните оценку и прочитайте наблюдения»qa_exit=0bee qa assess --root "$QA_ROOT" --base "$QA_BASE" --head "$QA_HEAD" \ --profile bee-cli --evidence "$QA_BUNDLE/index.json" \ --limit 5 --budget 16000 --json > "$QA_BUNDLE/assessment.json" || qa_exit=$?test "$qa_exit" -eq 5python3 -m json.tool "$QA_BUNDLE/assessment.json"При неизменённых исходниках пример даёт sourceAssociation: content_matches_claim, observedHistogram: {"Failed": 1} и decision: collect_evidence. У файла verification: bytes_checked; парсер может иметь статус complete, когда testVerdict равен failed. Обязательный охват профиля всё ещё отсутствует. historical_failure сохраняет синтетическое наблюдение, но неизвестное время завершения и другие привязки не позволяют сделать из него вывод о необходимости исправлять текущие исходники.
Читайте decision, reasonCounts, scopeCounts, artifacts и next вместе. При наличии данных details указывает хеш файла и номер наблюдения, чтобы агент мог затем открыть нужное исходное наблюдение. needs_judgment требует рассмотрения, но не классифицирует дефект автоматически. missing_result и not_executed не становятся успешными тестами. Частичный отчёт может сохранять сбои; некорректный ввод остаётся неубедительным и не устанавливает подтверждённое падение теста.
Все оценки сохраняют mode: diagnostics, trusted: false, acceptance: false и intentJudgment: required, включая пакеты только с успешными результатами. observedProducerExit остаётся null. reportedExit необязательной записи производителя — предоставленное заявление; summarizerExitCode парсера — отдельное значение.
5 · Продолжите с большим бюджетом вывода
Заголовок раздела «5 · Продолжите с большим бюджетом вывода»qa_exit=0bee qa assess --root "$QA_ROOT" --base "$QA_BASE" --head "$QA_HEAD" \ --profile bee-cli --evidence "$QA_BUNDLE/index.json" \ --limit 200 --budget 65536 --json > "$QA_BUNDLE/expanded.json" || qa_exit=$?test "$qa_exit" -eq 5--limit допускает 0–200 подробностей; --budget — 2048–65536 кодовых единиц UTF-16 без завершающего перевода строки. Они ограничивают представление после оценки. Проверяйте counts.returned, counts.omitted и counts.textTruncated: более короткий результат не означает меньше обязательств. Расширенный результат примера показывает пропущенные подробности, не меняя решения.
При output_budget_exceeded повторите запрос с большим бюджетом и тем же evidenceIndexSha256; проверьте также манифест исходников и хеши исходных файлов. Сокращённый ответ может явно опускать типы причин. Если исходники или данные изменились, считайте это новой оценкой, а не продолжением прежней. Это повторное изучение, а не кеш результатов.
Ограничения ввода и актуальности
Заголовок раздела «Ограничения ввода и актуальности»Храните индекс и файлы вне репозитория как обычные файлы без символических ссылок и компонентов reparse-point в пути. Используйте переносимые относительные пути без .., абсолютных путей и обратных косых черт. Ввод должен быть строгим UTF-8. Индекс допускает до 1 МиБ и 64 файлов; каждый файл — до 16 МиБ, вместе — до 64 МиБ. У снимка исходников и парсеров есть дополнительные ограничения; общее время команды ограничено десятью секундами. Слишком большой, недоступный или меняющийся ввод остаётся явно отмеченным.
source_mismatch означает несовпадение объявленных исходников со снятым содержимым. stale_evidence означает, что объявленное завершение было более 24 часов назад; отсутствующее время остаётся неизвестным, а будущее требует рассмотрения. Старые или несовпадающие наблюдения о сбоях сохраняются, но не доказывают текущий дефект. Поддерживаемой опции для обхода этих границ и выдачи доверия или приёмки нет. Команда не предоставляет запуск и выбор тестов, мутационное тестирование или дополнительные профили backend, Vue и мобильных приложений.