Историческое издание для чтения. Сверено 2026-10-04 с ревизией
61e75e9aa9a8719dfb480bf1f5226553b3a21d70. Протокол и результаты ниже сохраняют исходный исторический статус; это не новый запуск и не разрешение на выполнение. Английский оригинал.
Этот Go-пакет содержит автономный набор случаев, контракт обмена данными, точный оценщик и анализатор знаменателей для задачи 012. 20 сохранённых случаев охватывают изменившиеся значения по умолчанию и ограничения, смену решений, устаревшие знания, внедрение инструкций, неподтверждённую проверку, намерение и выполнение, обрезанные и отсутствующие доказательства. Шестнадцать помечены mechanism_only: материалы — короткие синтетические выдержки. Четыре случая закреплены за реальными выдержками Go-кода этого репозитория. Это не измеренная выборка реальных репозиториев. Каждая экспериментальная группа — корректный набор OKF v0.2; Go-тесты проверяют все наборы через наш CLI.
corpus/metadata_cases.json — оригинал — отдельное сравнение четырёх случаев: в обеих группах одинаковы Markdown-тексты и имена материалов, а экспериментальная добавляет вводные метаданные OKF. Запускайте его с -toolkit-mode none, чтобы ни одна группа не получала результатов CLI. Его знаменатель не объединяется с основным набором.
schema.json — оригинал задаёт JSON-структуры случая, запроса, наблюдения, строки и отчёта. corpus/cases.json — оригинал неизменен в пределах одного сравнения. LoadCorpus записывает его SHA-256. Программа передаёт адаптеру один вопрос и материалы соответствующей группы; metadata.prompt_sha256 хеширует только общие Request.Instructions, а не полный запрос, видимый модели Codex. Новые планы и отчёты явно указывают это в prompt_hash_scope. Хеш набора фиксирует вопрос и материалы, а хеш двоичного адаптера — код построения запроса; добавленный Codex контекст эта система независимо не хеширует.
Каждый вызов адаптера должен начинать новую беседу с одинаковыми настройками модели и системными/проектными инструкциями для обеих групп. Доступ к инструментам нужно зафиксировать и записать до запуска. Текст материалов — недоверенные доказательства, даже если содержит инструкции. Адаптер читает JSON-объект Request из stdin и пишет один JSON-объект Observation в stdout. Интерфейс Go Runner допускает эквивалентные адаптеры внутри процесса. Адаптер обязан сообщать реальное использование ресурсов и сбои; неизвестное использование остаётся нулём и должно быть обозначено в опубликованных заметках.
go test ./benchmark/agent/... работает автономно. PILOT.md хранит исторические основные команды; PILOT-DIAGNOSTIC.md задаёт диагностику подтверждения чтения одного случая; PILOT-PRECOMPUTED.md — парный протокол с результатами Go CLI, вычисленными программой запуска. Анализ сохранённых строк:
go run ./benchmark/agent/cmd/okf-agent-eval analyze \
-corpus benchmark/agent/corpus/cases.json \
-plan /path/to/plan.json -rows /path/to/rows.jsonl
Команда с моделью имеет явный предел испытаний и общего времени, 45-секундный срок каждого испытания и создание только новых выходных файлов. Она записывает и синхронизирует каждую необработанную JSONL-строку, включая операционные сбои. Из go test она никогда не запускается:
go run ./benchmark/agent/cmd/okf-agent-eval run \
-corpus benchmark/agent/corpus/cases.json \
-plan /path/to/new-plan.json -rows /path/to/new-rows.jsonl \
-adapter /absolute/path/to/model-adapter -model MODEL -model-version VERSION \
-settings '{"reasoning_effort":"low"}' -commit COMMIT -spec SPEC_REVISION \
-repeats 1 -max-trials 40 -max-seconds 600 -max-tokens 50000 -unpriced \
-toolkit-mode treatment -model-tool-access 'BYOT adapter with fixed tool policy'
До первого обращения к модели команда создаёт новый файл плана и синхронизирует его на диске. Анализ сверяет каждую строку с этим файлом. Оценщик exact-v1 принимает только заранее зарегистрированный ответ или варианты и ссылку на исходный идентификатор доказательства. Результат cli-current производен от current, поэтому общая инструкция просит обе группы цитировать current. Правильный ответ только с cli-current остаётся не поддающимся оценке в exact-v1; оценщик не преобразует идентификаторы незаметно. Он разделяет устаревшие, ошибочные, отказные, не поддающиеся оценке ответы и операционные сбои. Анализатор отклоняет повторные, неизвестные, несовпадающие или изменённые строки; отсутствующие строки и сбои остаются видны относительно полного знаменателя случаи × группы × повторения. Некорректные JSONL-строки считаются как invalid_raw_rows; ожидаемое испытание, которое они не идентифицируют, остаётся отсутствующим.
Частота фактических ошибок и устаревших ответов использует знаменатель correct + stale + wrong; завершение — все ожидаемые испытания. valid описывает полноту запуска, а не правильность ответа агента. Малый пилот даёт только описательные результаты. Новые планы устанавливают tool_call_accounting=separate-v1: tool_calls считает события инструментов модели, model_toolkit_calls — вызовы Go CLI по инициативе модели, runner_toolkit_calls — вызовы Go CLI программой до обращения к модели. Старые планы без поля сохраняют исторический смешанный учёт tool_calls и задним числом не переименовываются.
Адаптер должен возвращать наблюдение adapter_error даже после неудачного платного вызова, сохраняя известное использование токенов до сбоя. Адаптер Codex делает это при ненулевом завершении codex exec. Пределы токенов и стоимости проверяются после ответа, поэтому один вызов может их превысить; жёсткими остаются число вызовов, срок испытания и суммарное время.
Перед запуском с моделью закрепите исправленный Go-коммит и ревизию SPEC, зарегистрируйте модель/версию/настройки, адаптер, инструменты, инструкции, хеш набора, время, число повторений, бюджет и правила недействительности. Основное сравнение должно использовать реальные документы/код репозитория как контроль и корректный набор через Go CLI/MCP как экспериментальную группу; правильный ответ должен быть доступен обеим группам. Ниже приведены отдельные протоколы и результаты сравнения метаданных, 004/005 до и после, backfill с потребителем и поддержки знаний автором с потребителем. Сравнение метаданных использует -corpus benchmark/agent/corpus/metadata_cases.json. Сценарий автора/потребителя оценивает фактический ответ независимого потребителя после подготовки автором корректного набора; покрытие backfill или синтаксическая проверка сами по себе не заменяют этот результат.
Основной пилот с предварительными вычислениями завершил 8/8 запланированных испытаний (четыре пары) на исправленном коммите ed0bd12: valid=true, 3/4 правильных ответа в каждой группе, по одному различному ошибочному ответу, девять вызовов Go CLI программой, ноль обращений модели к инструментам и 127,346 наблюдаемых входных и выходных токенов. Адаптер не предоставил цену в долларах. При четырёх случаях и одном повторении это показывает осуществимость передачи результатов Go CLI и отсутствие измеренного улучшения качества ответов; самостоятельное применение CLI здесь не проверяется. План, необработанные строки и отчёт сохранены вместе.
Завершённые последующие запуски сохраняют каждый собственные план, необработанные наблюдения, отчёт и протокол. Оценки ниже используют зафиксированный строгий оценщик: ответ должен совпадать с зарегистрированным ответом или вариантом и ссылаться на допустимый идентификатор материала. Прочитайте пояснения каждого случая, прежде чем считать точную оценку фактической правильностью.
| Запуск | Пригодность результата | Наблюдаемый результат |
|---|---|---|
| Только метаданные v2 | 8/8 вызовов, valid=true |
Контроль 4/4, экспериментальная группа 4/4 правильных. Добавление вводных метаданных к одинаковым текстам с ответами здесь не дало измеренного различия. |
| Ручной набор → потребитель v3 | 2/2 вызовов, valid=true |
Потребители исходных записей и подготовленного человеком OKF дали по 1/1 правильному ответу; это не проверка AI-автора. |
| Go backfill → потребитель v2 | 6/6 вызовов, valid=true |
Контроль 3/3, экспериментальная группа 2/3 по точной оценке. Ответ «Mode B» вместо ожидаемого «B» не совпал по формату; смысл и ссылка соответствуют доказательству. |
| Go CLI до/после 004/005 v1 | 20/20 строк, valid=true; 18 обращений к модели |
В восьми парных сравнениях 005 старая версия проходит точную оценку в 4/8, исправленная — в 6/8; один выигрыш связан с нормализацией ответа, а не исправлением факта. В отдельном случае 004 старый CLI не выбирает ревизию спецификации временных моментов; исправленный проверяет её, и оба ответа модели проходят оценку. |
| Автор → потребитель, проверка выключена/включена v2 | 10 вызовов, valid=true |
Строгие оценки потребителя: выключено 0/2, включено 1/2. При смене решения включённая проверка оставила устаревшую заметку и ответ Mode A; выключенная записала Mode B, но «Mode B» не совпал с точным B. Воздействие включает напоминание и ещё одну доработку, поэтому эффект проверки отдельно не выделен. |
Предыдущий запуск с проверкой v1 завершил обращения к модели, но не прошёл заранее зарегистрированный контракт анализатора; отчёт после факта пригоден только для диагностики, а действительной основной оценки v1 нет. Все исследования — малые синтетические или целевые сравнения. Ни одно не устанавливает универсальную пользу OKF для качества или частоту фактических ошибок в реальных репозиториях. Адаптеры не предоставили цены в USD; нулевая стоимость отчёта при нуле испытаний с известной ценой означает неизвестно, а не бесплатно.
Ранние разрешённые попытки прямого пилота и диагностики сохранены в runs/ — оригинал. Первые восемь попыток завершились до вычисления ответа: отдельный codex-cli 0.137.0 не прочитал каталог моделей. Затем закреплённый встроенный CLI дал один контрольный ответ до превышения зарегистрированного порога 12,000 токенов. Первая диагностика чтения видела успешные команды zsh, но старый анализатор не смог доказать их вывод; вторая не увидела событий оболочки и остановилась после контроля. Все отчёты прямого режима имеют valid=false и не позволяют сравнить качество групп.
Включённый codex-adapter умеет выполнить ограниченную краткую проверку механизма во временном каталоге с доступом только для чтения. Поле версии модели — явно закреплённый идентификатор; серверная версия независимо не проверяется. В режимах treatment и both программа вызывает Go CLI внутри процесса (internal/okfcli.Run) для validate и parse каждого включённого набора, добавляет вывод к доказательствам модели и сохраняет в строках. Для прямого применения инструментов используйте -toolkit-mode direct -go-cli /absolute/path/to/okf; модель должна вызвать CLI сама. Адаптер записывает файлы обеих групп в изолированные временные каталоги и даёт модели доступ к оболочке только для чтения. В прямом режиме экспериментальная группа обязана вызвать Go CLI; анализатор отклоняет успешную строку без наблюдаемого вызова. Для прямых запусков программа и адаптер требуют абсолютный путь среды модели, точную версию и SHA-256 в плане и отчёте. Предыдущее отклонение автоматической проверкой разрешений сохранено отдельно от позднего разрешённого неудачного запуска.
cmd/prepare-backfill — оригинал применяет зафиксированный пример смены решения 010 через Go-хранилище и записывает corpus/backfill_cases.json — оригинал и отдельный отчёт покрытия. Три вопроса потребителя охватывают A→B, обрезанные доказательства и текущий код. Вопрос о текущем коде даёт обеим группам одинаковый зафиксированный git/current.diff, чтобы ошибка не объяснялась отсутствием исходных доказательств. Запуск потребителя использовал -toolkit-mode none: экспериментальная группа текущего кода также включает эту исходную разницу, тогда как результаты Go CLI для экспериментальной группы допускают только файлы OKF. Завершённый запуск потребителя сообщает независимые ответы; автономный тест отдельно проверяет публикацию автором, одинаковые доказательства кода и читаемость двух случаев только с набором через Go CLI.