Условие, без которого замер ничего не меряет
Агент работает внутри репозитория, и часть файлов приезжает к нему в контекст автоматически: проектные инструкции, память прошлых сессий, рабочие заметки. Когда верный ответ лежит в одном из них, вопрос «умеет ли модель» подменяется вопросом «дочитала ли она до нужной строки». Разница между двумя вопросами — вся ценность замера.
Поймать подмену на глаз нельзя: ответ выглядит одинаково правильным в обоих случаях. Нужен признак, который отличает знание от чтения. Такой признак у нас один и очень дешёвый — счётчик обращений к инструментам. Ноль обращений при точном ответе на факт, которого модель знать не может, означает, что факт был в контексте.
Приём первый: канарейка и позитивный контроль
Собрали четыре вопроса о фактах, существующих только внутри нашего хозяйства. Прогнали их дважды: снаружи, без репозитория рядом, и изнутри — там, где автоматический контекст подгружается штатно.
| Условие прогона | Вопросов | Названо верно | Обращений к инструментам |
|---|---|---|---|
| Чистая комната: модель снаружи, репозитория рядом нет | 4 | 0 | — |
| Изнутри репозитория: позитивный контроль | 2 | 2 | 0 |
Первый из двух — расстояние между двумя городами, названо ровно 975. Второй — количественная характеристика из наших внутренних материалов, тоже точно. Счётчик обращений к инструментам в обеих строках — ноль: модель не открыла ни одного файла и не сделала ни одного запроса.
Метод воспроизводится у любого: возьмите три-четыре факта, которых нет в открытых источниках, задайте их модели в двух условиях и сравните не столько ответы, сколько счётчик обращений к инструментам.
Приём второй: сверка эталона с тем, что лежит в памяти
Канарейка отвечает на вопрос «есть ли канал». Второй приём отвечает на более неприятный: сколько правильных ответов уже лежало в промпте на момент замера. Взяли двадцать пар эталона и сверили их построчно с файлами авто-памяти.
Совпало семь пар из двадцати — точно, не приблизительно. У обеих сравниваемых строк счётчик обращений к инструментам стоял на нуле. Восьмое совпадение отбросили сами: оно объяснялось случайностью, а не наличием факта в памяти.
Что означают эти семь для итоговой оценки. Не «модель списала». Означают, что треть задания перестала быть заданием: по семи пунктам мы измеряли качество собственной памяти, а не работу модели. Пока такая сверка не сделана, любая доля «правильных ответов» завышена на неизвестную величину — и неизвестность здесь хуже самой доли.
Приём третий: посмотреть на дату файла
Самая простая проверка из трёх и самая обидная находка. Файл памяти, содержащий сам результат прогона, датирован 12:08. Прогон, который он описывает, прошёл в 11:15 того же дня.
Порядок событий здесь решает всё. Файл создан по итогам прогона — значит для этого прогона он безвреден. Но он остался на диске, попадает в автоматический контекст и содержит готовый ответ. Любой перепрогон той же батареи после 12:08 отравлен: модель прочтёт собственный прошлый результат и выдаст его как рассуждение.
Класс, а не единичный случай. Замер порождает артефакт, артефакт попадает в память, память попадает в контекст следующего замера. Цепочка замыкается сама, без чьего-либо умысла, и с каждым циклом результаты становятся всё лучше и всё бессмысленнее.
Что забрать себе
- Заведите канарейку до первого замера, а не после. Три-четыре факта, которых нет в открытых источниках. Прогон снаружи должен давать ноль попаданий — иначе вопросы подобраны плохо и приём мёртв.
- Считайте обращения к инструментам и храните счётчик в результатах. Ноль обращений при точном ответе на закрытый факт — самый дешёвый детектор утечки из всех. Поля нет в схеме результатов — детектора нет, сколько бы правил ни было записано.
- Сверьте эталон с содержимым памяти построчно. Не «на глаз похоже», а точное совпадение значений. Случайные совпадения отбрасывайте вручную и в свою пользу не толкуйте.
- Сравните время создания файлов памяти со временем прогонов. Файл, датированный позже прогона и содержащий его результат, обязан быть убран из автоматического контекста до перепрогона.
- Фиксируйте состав контекста на дату прогона. Задним числом вопрос «был ли ответ перед глазами» неразрешим: файлы уже другие.