Паспорт памяти
Документ, в котором память описана раньше, чем построена. Его читает человек на странице «Паспорт» и агент — файлом в репозитории; второго источника правды о замысле нет.
🔒 ЭТО НАЧАЛО, А НЕ ВСЯ ДОКУМЕНТАЦИЯ. Слово владельца 2026-09-10: «это не все документации к памяти всё только начало». Разделы прибавляются по одному, и каждый проходит четыре шага ниже.
Как мы здесь работаем
Порядок назван владельцем 2026-09-10, дословно:
«Разрабатывать будем максимально конкретным способом сначала обсуждаем затем создаем элемент в паспорте я читаю утверждаю или изменяю потом делаем строчку для инструкции Claude.»
- Обсуждаем — словами, до кода и до записи.
- Элемент появляется здесь, в паспорте.
- Владелец читает, утверждает или меняет.
- Только после этого — строка в инструкции памяти (
MEMORY-AGENT.md) и код.
🔒 Инструкция памяти остаётся компактной и опирается на навыки — требование того же дня:
«ориентирован на переиспользования навыков в первую очередь».
🔒 Что приходит новым в сессии — подсвечивается разметкой ==так==. Следующая сессия снимает
прежнюю подсветку и ставит свою.
1. Что такое память
Память — архитектура, работающая по принципу чёрного ящика. Из внешнего мира — из других поддоменов или через API от внешних источников — приходит запрос, и ящик отправляет обработанный результат. Внутрь никто не заглядывает: ни в таблицы, ни в графы, ни в векторы.
- Вход всегда текст. Выход всегда объект.
- Потребитель ответа — другая модель искусственного интеллекта, и это определяет всё остальное: ответ пишется не для глаз, а для того, кто продолжит им работать.
- Кто зовёт: человек через стенд
{memory.<домен> | ip:3700}/{язык}/settings?section=memory-testлибо сама модель. - Ответ обрабатывает модель, и она же на входе может отдать результаты предыдущих поисков, новые параметры глубины или свободное описание того, что ожидает получить.
2. Два рода запроса
Добавить запись или извлечь запись. Третьего нет.
3. Четыре хранилища, и они принципиально разные — и слой ссылок поверх них
Слой ссылок (§20) — не пятое хранилище, а самостоятельный способ работы с данными: страница или ролик по адресу открывается ИИ-браузером и ложится в эти же четыре места. 🪦 До 2026-09-14 раздел назывался «Три хранилища» и перечислял три: объектное хранилище появилось шагом 192 и описано в §19, а число здесь не поправили. Число правится вместе с перечислением.
4. Пять уровней глубины
🔒 Память стремится расходовать минимум ресурсов и времени, отслеживая минимально достаточный результат по качеству. Уровень поднимается только тогда, когда предыдущий не дал ответа.
Почему граф раньше вектора
Решение владельца 2026-09-10, дословно: «категорически не согласен с твоим предложением считать что векторная база данных должна быть на втором месте. Только на третьем она вспомогательный инструмент, агент-РАГ. Объясняю почему: агент-РАГ это готовый быстрый ответ с нулевыми затратами на искусственный интеллект. Векторный поиск это очень долго и он может быть инструментом только после согласования с архитектором».
Лестница уровней упорядочена по ЦЕНЕ, а не по ожидаемому качеству. Граф отдаёт готовый контекст без хода модели; вектор стоит времени и потому просится наверх, за разрешением человека.
🪦 ПРЕДЛОЖЕНИЕ АГЕНТА ПОМЕНЯТЬ ИХ МЕСТАМИ ОТМЕНЕНО ЭТИМ РЕШЕНИЕМ. Довод был: измерение шага
144 показало у вектора по саммари recall@1 = 12/12 против отстающего гибридного поиска.
✗ Измерение верное, вывод из него — нет: оно сравнивало КАЧЕСТВО попадания, а лестница
строится по ЦЕНЕ. Дешёвое и худшее идёт раньше дорогого и лучшего — иначе закон экономии
перестаёт работать с первого же запроса.
🔒 ЧТОБЫ «НУЛЕВЫЕ ЗАТРАТЫ НА ИИ» БЫЛИ ПРАВДОЙ И В КОДЕ, РЕЖИМ ВЫЗОВА НАЗЫВАЕТСЯ ЯВНО.
Измерено 2026-09-10 у самой службы графа (её openapi.json, а не по памяти): у запроса есть поле
only_need_context — «only returns the retrieved context without generating a response», и шесть
режимов local · global · hybrid · naive · mix · bypass. Позови мы граф с генерацией — он сам
сходит к модели, и третий уровень перестанет быть дешёвым, ничего об этом не сказав.
5. Знание возвращается в оборот
🔒 После извлечения на третьем или четвёртом уровне память обязана разместить добытое так, чтобы следующий такой же запрос стоил второго или третьего уровня. Для этого рождается отчёт об исследовании, и он ложится в векторную базу и в LightRAG.
Без этого дорогое исследование оплачивается заново каждый раз, и закон экономии из раздела 4 перестаёт что-либо значить.
🔒 ОТЧЁТ ОБ ИССЛЕДОВАНИИ — ЧАСТНЫЙ СЛУЧАЙ ОБЩЕГО ПРАВИЛА, И ОБЩЕЕ ОПИСАНО В РАЗДЕЛЕ 14. Владелец называет его циклом дообучения: всякий дорого добытый результат — хоть вывод исследования, хоть посчитанная таблица — поднимается на верхний уровень знания одним и тем же порядком.
6. Формат ответа на извлечение
- Род ответа — один из трёх: утвердительный, вероятностный, зависимый от параметров.
- Сам ответ — текст, данные или объект (раздел 14). Текстом он бывает чаще всего, но не всегда: у ответа может быть артефакт — документ, таблица, изображение, — и тогда наружу едут его идентификатор и текстовое саммари о нём.
- Отчёт, который приходит всегда: какие таблицы что вернули · сколько глубин исследования проведено · какого рода ответ дала каждая таблица.
- Цепочка размышлений возвращается ПО ТРЕБОВАНИЮ ЗОВУЩЕГО, а не всегда — поправка владельца 2026-09-10, дословно: «речь о том, что включать в ответ все фрагменты размышления, которые приходили, или нет. Это было рекурсивное размышление, там может быть очень много информации, и агент снаружи сам должен решить, хочет он переполнять свой контекст этой информацией или нет». 🔒 РЕШАЕТ ЗОВУЩИЙ, А НЕ ПАМЯТЬ. Ей неизвестно, сколько места осталось у того, кто спросил; отдав всё без спроса, она тратит чужой контекст, а промолчав — прячет ход поиска. Спрашивать нельзя, поэтому решение приходит параметром.
7. Формат ответа на запись
Какие таблицы какой ответ получили · какие таблицы были созданы · какие новые таблицы получили записи.
8. Самоусовершенствование: когда рождается колонка, а когда таблица
Память принимает решение о внутренней трансформации сама — когда видит, что в пришедших параметрах есть единицы смысла, которые будут развиваться дальше. Мера названа владельцем на двух примерах:
- «у меня есть друг Дима и Миша» → достаточно новой колонки и двух строк в таблице пользователей-архитекторов;
- «у меня в команде работает Юля — продменеджер, Дима — менеджер…» → видно, что нужна таблица «команда пользователя-архитектора».
🔒 Требование создать таблицу может прийти и входным параметром. Тогда claude -p, используя
навык нейминга, создаёт таблицу и связи.
🛑 Имя таблицы, рождённое моделью, попадает в SQL — значит проходит белый список символов, а
кириллица переводится в латиницу таблицей, а не угадыванием. В проекте это уже оплачено:
field.money; DROP TABLE … в имени.
9. Чего память не делает
- не размышляет и не философствует;
- не ходит в интернет и не пользуется инструментами выхода наружу — запрет о свободном поиске по вебу, а не о названном инструменте: вызвать генерацию изображения или встраивание для собственного ответа она вправе (раздел 14). 🛑 Границу между «сходить посмотреть» и «позвать названный инструмент» проводит владелец: это развилка 11.
- не хранит историю запросов: каждый цикл «запрос → ответ» обнуляет её. Простой запрос идёт
claude -pбез нити истории; размышление — с параметрами, хранящими историю внутри одного цикла, чтобы прийти к результату.
🔒 История диалога не хранится, а след исследования хранится — это разные вещи, и раздел 5 держится на второй.
10. Образец глубокого исследования — будущий навык
Вопрос владельца: «кто из моих друзей мог снять Ельцина?» Ход, названный им же:
- извлечь друзей; если не нашлось — дальше;
- по каждому другу — прямое упоминание через граф знаний; если нет — дальше;
- запрос к векторной базе; если нет — дальше;
- извлечь до десяти ближайших синонимов к слову «Ельцин»;
- по каждому синониму — снова запрос к агентному RAG;
- вернуть неудовлетворительный ответ или ответ вида: «Ваш друг мог знать президента Бориса Ельцина, потому что автоматизация 134 добавила запись: мой друг Денис с 1992 по 1994 год служил в Кремле».
🔒 Это станет навыком глубокого анализа. Слово владельца: ход рассуждения может быть ошибочным, за основу берутся входная информация и итоговый результат, а не сама цепочка.
11. Эволюция навыков: память улучшает саму себя
Замысел владельца 2026-09-10, дословно: «после успешного завершения цикла работы с памятью агент должен проанализировать свою эффективность и создать вторую версию навыка. Использовать инструменты для непрерывного эволюционного сплит-тестирования навыков с сохранением в реестр результатов… у агента есть для этого права».
Навык — не текст, а гипотеза: у него есть версия, есть замер и есть соперник.
Что происходит после цикла
- Замер, а не самооценка. По окончании цикла память записывает ФАКТЫ прогона: до какого уровня глубины дошла · сколько ходов модели · сколько секунд · какого рода вышел ответ · какие навыки и инструменты звались.
- Вердикт приходит СНАРУЖИ. Успех подтверждает тот, кто спрашивал: человек или зовущая модель. Пока вердикта нет, цикл считается незавершённым, а не удачным.
- Кандидат. Увидев повторяющийся промах, память пишет вторую версию навыка — рядом с действующей, не вместо неё.
- Сплит-тест в тени. Кандидат прогоняется на НАСТОЯЩИХ запросах, но его ответ человеку не отдаётся: отвечает действующая версия. Сравниваются замеры обоих.
- Повышение или смерть. Кандидат заменяет действующую версию, только если выиграл по вердиктам и не проиграл по цене. Проигравший удаляется — вместе с записью, почему.
🔒 САМООЦЕНКА ЗАПРЕЩЕНА КАК ИСТОЧНИК ВЕРДИКТА, И ЭТО ОПЛАЧЕНО В ПРОЕКТЕ. Модель, пересказывающая собственную работу, ошибается в свою пользу: «звал инструменты» звучит лучше, чем «ничего не нашёл». Служба Telegram уже верила агенту на слово о его же работе — и закон «считать по записям прогона, а не по впечатлению модели» не исполнялся ни дня, пока это не измерили. Здесь тот же запрет с рождения.
Где что лежит
🔒 ЭТО ЗАКОН 0 ПРОЕКТА: ОПРЕДЕЛЕНИЕ — В ПАПКЕ, ДАННЫЕ — В ХРАНИЛИЩЕ. Навык, уехавший в базу, перестаёт читаться человеком и откатываться коммитом; замер, уехавший в файл, перестаёт сравниваться.
Права агента и их цена
Агент вправе создавать новые навыки и вторые версии существующих — это прямое слово владельца. Цена права ровно одна: каждая правка навыка ложится коммитом, сразу. Без коммита откатывать нечего, а возможность отката — единственное, что делает такое право безопасным. Тот же закон действует в репозитории службы Telegram и оплачен там же.
Что даёт skill-creator и чего он не даёт
Инструмент существует, и половина замысла в нём уже построена — но это разработческий цикл, а не рантайм внутри ящика.
🛑 ГЛАВНОЕ РАЗЛИЧИЕ НАЗВАНО ЧЕСТНО: у skill-creator судья — человек у экрана. У памяти
судьи нет, пока его не назначили, — поэтому пункт 2 выше (вердикт снаружи) не украшение, а
условие, без которого вся эволюция превращается в самоодобрение.
Цена эволюции, которую нельзя не назвать
🛑 Теневой прогон — это второй ход модели на тот же запрос, и он тратит ТУ ЖЕ квоту подписки, которой живут бот Telegram и работа архитектора за компьютером. Значит сплит-тест не может быть «непрерывным» в буквальном смысле: он идёт по доле запросов или по расписанию, и предел объявляется числом, а не намерением.
12. Возврат инструкции к первой версии — страховка человека
Слово владельца 2026-09-10, дословно: «нам нужно будет создать резервные стартовые настройки которые вернут главную инструкцию в первую версию ту которую мы создадим сейчас, на случай если инструкция слишком сильно деградирует и станет неэффективной; это конечно не имеет никакого отношения к логике агента, это просто требования пользовательского интерфейса».
Зачем это нужно
Раздел 11 дал агенту право править себя: заводить навыки, писать вторые версии, менять строки инструкции. Право самоправки безопасно ровно настолько, насколько дёшев откат.
- Деградация накапливается незаметно. Каждая отдельная правка выглядит улучшением; хуже становится сумма. Точки, в которой «стало плохо», не существует — есть только ощущение человека, что раньше работало лучше.
- Откат уже возможен через git, и этого недостаточно. Он требует консоли, знания истории и выбора коммита — то есть решения, которое человек принимает в свой худший день. Кнопка требует одного движения.
- Эталон — это точка отсчёта, а не резервная копия. Копий у нас много, и все они разные; первая версия одна, и она та, которую владелец прочитал и утвердил.
Как это устроено
🔒 ЭТАЛОН ПРАВИТ ТОЛЬКО ЧЕЛОВЕК, И ЭТО ГЛАВНЫЙ ЗАКОН РАЗДЕЛА. Дай агенту право обновлять эталон — и он обновит его первой же своей правкой, «чтобы точка отсчёта была свежей». Страховки не станет, и заметит это тот, кому она понадобится.
🔒 ЭТО ТРЕБОВАНИЕ ИНТЕРФЕЙСА, А НЕ ЛОГИКИ ПАМЯТИ. Агент о существовании кнопки не знает и знать не должен: знание о ней не меняет ни одного его решения, а место в инструкции заняло бы.
🛑 ЧЕГО КНОПКА НЕ ДЕЛАЕТ: она не трогает навыки, данные, таблицы и замеры. Возврат инструкции к первой версии не отменяет того, что память успела узнать, — иначе цена нажатия оказалась бы выше цены деградации.
13. Стенд памяти — Memory playground
Стенд — прибор, а не витрина: человек говорит со службой напрямую, без агента в цепочке, и
видит сырой ответ. Адрес — {memory.<домен> | ip:3700}/{язык}/settings?section=memory-test.
🔒 Имя термина закреплено в глоссарии проекта вместе с будущим Chat playground у службы
Telegram: второй стенд, названный иначе, через месяц дал бы одной способности два имени.
✅ ПОСТРОЕНО ШАГОМ 183 (2026-09-11) — И ВОТ ЧТО ИЗ ЭТОГО СЛЕДУЕТ ЧИТАТЬ КАК ЗАКОН
Девять органов стоят на стенде, договор вырос до 1.5.0 и принимает их параметры. Три правила, рождённые постройкой, действуют шире стенда:
🔒 У КАЖДОГО ПРИСЛАННОГО ПАРАМЕТРА ЕСТЬ НАЗВАННАЯ СУДЬБА — ПОЛЕ params. Три исхода:
accepted (принят и подействовал, note называет предел) · not_supported (принят по форме,
способности нет) · bad_form (не та форма, отброшен, причина названа). Параметр, о котором ответ
молчит, неотличим от параметра, которого нет.
🔒 depth_used СЧИТАЕТСЯ ПО ФАКТУ, А НЕ ПО ПРОСЬБЕ. Просили extreme, дошли до первого уровня —
так и сказано числом. Ответ «дошла до пятого, раз пятый попросили» есть уверенное умолчание.
🔒 МЕТКА «ДОЕЗЖАЕТ» У ОРГАНА ПОРОЖДАЕТСЯ ИЗ ДОГОВОРА, А НЕ ПИШЕТСЯ РУКАМИ. Растёт договор — метки на экране меняются сами. Рукописный список поддержанного разошёлся бы с ним молча.
🔒 ОХВАТ — СПИСОК ЗАПИСЕЙ, А НЕ ОДНА ПАРА ПОЛЕЙ (183-7, решение владельца 2026-09-11: «событий календаря и геометок может быть множество»). Каждая запись — своя карточка, рядом кнопка «добавить запись»; отказ по форме называет НОМЕР подведшей записи. Пустая карточка охватом не является и в тело запроса не уезжает.
🔒 ВСЕ ОРГАНЫ СВЁРНУТЫ В «РАСШИРЕННЫЕ ПАРАМЕТРЫ» ПО УМОЛЧАНИЮ (то же решение). Свёрнуто — про частоту, а не про важность: обычный прогон есть фраза и кнопка. 🛑 Но закрытая карточка обязана перечислять выставленное: свёрнутый блок с молча действующими параметрами — ловушка.
🛑 ЧЕГО СТЕНД ПОКА НЕ ДЕЛАЕТ, ХОТЯ ОРГАН СТОИТ: отрицание ответа принимается и отвечает
not_supported (цикла дообучения нет); охват едет в журнал вызова, но не в знание; кнопки загрузки
неактивны. Вид стенда владельцем ещё не подтверждён.
Чего на стенде не хватало до шага 183
Было три кнопки и одно поле. Договор и паспорт требовали большего — и вот полный список органов управления, каждый со своей причиной.
Подсказки к глубине — словами человека, а не номерами уровней
- Стандарт. Память идёт сама: сначала база, потом модель, потом граф знаний. Секунды. Хватает почти всегда.
- Глубокий. Добавляется поиск по смыслу в векторной базе. Дольше и дороже — включайте, когда стандарт ничего не нашёл.
- Экстремальный. Память уходит в рекурсивное исследование, до десяти минут. Тратит ту же квоту подписки, которой живёт бот. Только когда и глубокий не дал ответа.
🪦 ПЕРЕКЛЮЧАТЕЛЬ ЯЗЫКА ОТВЕТА НА СТЕНДЕ ОТМЕНЁН 2026-09-10 СЛОВОМ ВЛАДЕЛЬЦА: «в языках нет
смысла, всегда отвечать на том языке, на котором договорились». Язык фиксируется договорённостью,
а не выбирается в каждом вызове.
🔒 САМ ПАРАМЕТР lang ИЗ ДОГОВОРА ЭТИМ НЕ ОТМЕНЁН — он построен и доказан живьём (181-10):
отменена только ручка на стенде. Так я это прочитал; скажете иначе — уберём и параметр.
🪦 «ЧТО ВЫ ОЖИДАЕТЕ ПОЛУЧИТЬ» КАК СВОБОДНОЕ ОПИСАНИЕ — ТОЖЕ ОТМЕНЕНО ТЕМ ЖЕ РАЗГОВОРОМ. Я прочитал строку паспорта буквально и завёл поле «опишите ожидаемый ответ»; владелец поправил: речь была о том, ВОЗВРАЩАТЬ ЛИ ЦЕПОЧКУ РАЗМЫШЛЕНИЙ. ✗ Класс ошибки: строку замысла я развернул в орган управления, не спросив, что она значит.
🔒 НОМЕРА УРОВНЕЙ ОСТАЮТСЯ ВНУТРИ, НАРУЖУ ИДУТ СЛОВА. Человеку на стенде «уровень 4» не говорит ничего, а «дольше и дороже» говорит всё. Внутри памяти при этом по-прежнему пять уровней.
🛑 ЧЕГО СТЕНД ПОКА НЕ ПОКАЗЫВАЕТ, И ЭТО ДОЛГ, А НЕ ЗАМЫСЕЛ: род ответа (утвердительный · вероятностный · зависимый), отчёт по таблицам и цепочку поиска — их ещё не строит сама память (разделы 6 и 7). Показать нечего, и обещать поле рано.
14. Объект как ответ и цикл дообучения
Замысел владельца 2026-09-10, дословно: «архитектура чата — это оркестратор, а память она не обязательно текстовая, она должна быть как у человека: она может возвращать информацию в виде текста, информацию в виде данных, информацию в виде объектов — это всё память».
14.1 Ответ бывает трёх родов по ФОРМЕ
Род ответа из раздела 6 говорит о его достоверности; здесь — о его веществе:
🔒 ЭТО ПАМЯТЬ, А НЕ ЧАТ, И ДОВОД ВЛАДЕЛЬЦА МЕХАНИЧЕСКИЙ. Чат — оркестратор: он решает, кого позвать. Знание о том, ЧТО у нас есть и в какой форме это отдать, принадлежит тому, кто это знание держит. Отдай мы построение объектов чату — у одной способности стало бы два хозяина.
14.2 Пример владельца: вопрос, у которого ответом является документ
«Сколько мы заработали денег в мае–августе? Дай ответ с детализацией.»
Ответом здесь не является число. Память идёт по таблицам финансов — доходов, расходов, а при надобности и более глубоких, — рекурсивно собирает документ-таблицу, превращает его в Markdown, кладёт в объектное хранилище и получает идентификатор. Наружу едет саммари — «в августе вышло столько, подробности в таблице по такому-то идентификатору» — и сам идентификатор.
14.3 Цикл дообучения — один порядок на оба случая
🔒 ГЛАВНОЕ НАБЛЮДЕНИЕ ВЛАДЕЛЬЦА, И ОНО СИЛЬНЕЕ ОБОИХ ПРИМЕРОВ: посчитанная таблица и вывод глубокого исследования выглядят разными задачами — вычисление против рассуждения, — а по существу это один и тот же паттерн: дорогой результат поднимается на верхний уровень знания.
Порядок один:
- результат добыт — рекурсивным исследованием или вычислением по таблицам;
- рождается артефакт — документ, таблица, изображение — и ложится в объектное хранилище; возвращается идентификатор;
- рождается текстовое саммари — короткий текст о том, что получилось и где лежит подробное;
- саммари ложится в векторное хранилище — возвращается идентификатор;
- саммари ложится в агентный RAG — возвращается идентификатор;
- обновляется таблица связи с сущностью, о которой шла речь, — если такая таблица существует. 🛑 Шаг последний и может быть пропущен: отсутствие таблицы связи не отменяет всего цикла.
Второй пример владельца, тот же порядок: «твой друг Денис мог быть лично знаком с президентом, потому что служил в президентском полку Кремля с 1992 по 1994 год согласно первичной записи, сделанной в автоматизации 194» — это и есть дообучение: прежде чем ответ уйдёт человеку, он становится знанием, которое в следующий раз достанется дёшево.
🔒 ЦИКЛ ДООБУЧЕНИЯ — ОТДЕЛЬНЫЙ НАВЫК, и он один на все формы ответа. Разойдись он на два — «для исследований» и «для вычислений», — они разъедутся на первой правке.
14.4 Паттерны вырабатывает модель — и потому они проверяются
Владелец: «в цикле дообучения модель должна сама вырабатывать паттерны», и циклы «могут в будущем разойтись по разным инструментам».
🛑 ПАТТЕРН, ВЫРАБОТАННЫЙ МОДЕЛЬЮ И НЕ ЗАМЕРЕННЫЙ, — ЭТО ПРИВЫЧКА, А НЕ ЗНАНИЕ. Поэтому новый паттерн живёт по разделу 11: он становится кандидатом навыка и проверяется в тени против действующего. Иначе память будет уверенно повторять то, что однажды случайно сработало.
14.5 Чего этот раздел ещё не решает
🛑 Три вопроса названы, а не спрятаны — они стали развилками 9, 10 и 11: где живут артефакты, ждёт ли человек окончания цикла дообучения и что считать выходом в интернет.
15. Что память принимает на вход
Раздел 1 сказал: вход — текст. Это верно про запрос и неверно про данные: вместе с фразой приходит то, что человек прислал, и то, что уточняет, где и когда его слова верны.
15.1 Роды входящих данных
Список взят не из головы: он уже объявлен в реестре признаков службы Telegram — там роды
text · photo/image · video · voice/audio · document. HTML и PDF попадают в document.
🔒 НА СТЕНДЕ КНОПКИ ЗАГРУЗКИ ПОЯВЛЯЮТСЯ СРАЗУ, НО НЕАКТИВНЫМИ — решение владельца 2026-09-10: «пока они могут даже не нажиматься и быть неактивными, но в целом они позволят нам структурно подойти к подготовке хотя бы черновой API, который будет возвращать хотя бы 200 или ошибку». 🔒 ДОВОД СИЛЬНЕЕ УДОБСТВА: ФОРМА ДОГОВОРА РОЖДАЕТСЯ РАНЬШЕ СПОСОБНОСТИ. Дверь, которая честно отвечает «такой род я пока не умею», — это построенная граница; дверь, которой нет, — это переделка договора в тот день, когда род понадобится. 🛑 НЕАКТИВНАЯ КНОПКА ОБЯЗАНА СКАЗАТЬ, ПОЧЕМУ ОНА НЕАКТИВНА. Молчащая кнопка читается как поломка — в этом проекте оплачено не раз.
15.2 Отрицание ответа
Слово владельца: «мой друг на самом деле не был знаком с Борисом Ельциным, несмотря на то что они служили вместе, он его не видел».
Отрицание — это отдельный вход, а не обычная запись. Оно порождает дополнительный цикл дообучения (раздел 14.3), который расширяет прежнее саммари словами: архитектор отверг эту гипотезу и сказал, что точно знает — этого не было. В следующий раз память такого ответа не предложит.
🔒 ОТМЕНЯЕТСЯ ВЫВОД, А НЕ ФАКТ, И ЭТО РАЗНЫЕ ВЕЩИ. «Денис служил в Кремле с 1992 по 1994» — остаётся: человек этого не опровергал. Опровергнут вывод «значит, мог знать президента». Сотри мы вместе с гипотезой её основание — потеряли бы знание, которое человек нам дал. 🔒 ОПРОВЕРГНУТАЯ ГИПОТЕЗА ХРАНИТСЯ, А НЕ УДАЛЯЕТСЯ. Удалённая, она родится заново при следующем таком же поиске: та же цепочка приведёт к тому же выводу. Именно запись «это уже проверяли, и человек сказал нет» делает второй раз дешёвым.
15.3 Косвенные признаки: календарь и геометка
Слово владельца: ответ может зависеть от даты или от места — «по какому номеру вызвать такси, который мне нравится здесь». Один и тот же вопрос из другого места и в другой день — это разные вопросы.
Их ровно два: календарь (дата, срок, период) и географическая метка.
🔒 ЭТО НЕ НОВЫЙ СЛОВАРЬ, А ОХВАТ — И ОБРАЗЕЦ УЖЕ ОПИСАН В СЛУЖБЕ TELEGRAM (шаг 141). Там закон: охват выражается ключом другого признака, а не собственным перечнем измерений; свой список завёл бы «город» дважды, и две записи разошлись бы на первой правке. 🔒 ПУСТОЙ ОХВАТ ЗНАЧИТ «НЕ ЗНАЮ ГДЕ И КОГДА», А НЕ «ВЕЗДЕ И ВСЕГДА». Молчаливое повышение факта до всеобщего и есть та ошибка, ради которой охват заводят: система не теряет данные, она уверенно отвечает неверно. 🛑 ЛЕСТНИЦ НАСЛЕДОВАНИЯ НЕТ: Мадрид не поднимается до Испании и Европы. «В Испании такси не берёт за посадку» — утверждение, которого никто не делал.
🔒 НЕДОСТАЮЩИЙ ОХВАТ ПАМЯТЬ НЕ СПРАШИВАЕТ У ЧЕЛОВЕКА — ОНА СООБЩАЕТ ЗОВУЩЕМУ, ЧЕГО НЕ ХВАТАЕТ И ПОЧЕМУ. Память говорит с моделью, а не с человеком; вопрос человеку задаёт тот, кто с ним разговаривает. Форма ответа памяти: «ответ зависит от места, места я не знаю» — это тот самый род «зависимый от параметров» из раздела 6. 🔒 ВОПРОС, КОТОРЫЙ ЗАДАСТ ЧАТ, ОБЯЗАН НАЗЫВАТЬ ПРИЧИНУ — слово владельца из старых документов: «поделитесь геопозицией или скажите, где находитесь: эта автоматизация зависит от места». Вопрос без причины читается как любопытство, получает отказ — и второй раз его уже не задать.
16. Развилки, которые решает архитектор
Здесь то, чего я не придумываю за него.
- Имя навыка нейминга. Владелец назвал его «бла-бла-бла realtime» — настоящее имя за ним. Имя вечное: на нём повиснут пути и вызовы.
- Как приходит требование четвёртого и пятого уровня. Потребитель ответа — модель, и она способна поставить максимум сама. Нужен признак, отличающий требование ЧЕЛОВЕКА от желания модели, иначе предел обходится тем же полем, которым он ставится.
- Что считать «объектом» на выходе: какие поля обязательны всегда, а какие приходят по случаю.
- Кто выносит вердикт об успехе цикла — человек, зовущая модель или оба, и чем он выражен: отдельным вызовом договора, полем следующего запроса или молчанием как согласием.
- Сколько случаев нужно кандидату для повышения и какой перевес считается победой: пока числа нет, «выиграл» будет решаться на глаз.
- Какая доля запросов идёт в теневой прогон — прямая цена эволюции в квоте подписки.
- Где стоит кнопка возврата инструкции и показывать ли рядом с ней различие с эталоном целиком или только его размер.
- Где живут артефакты объектного хранилища. У платформы уже есть медиатека слоя данных, и
через неё ходят чат и проект; но закон 137 велит службе держать своё в своём дереве. Чужой
склад дешевле, свой — самодостаточнее.
🔒 РЕШЕНО АГЕНТОМ ПО ПЕРЕДАННОМУ ПОЛНОМОЧИЮ 2026-09-13 (шаг 192) — медиатека слоя данных.
Слово владельца того дня: «сделай это в стандарте граф и вектора… не зови меня с вопросами».
Граф и вектор ходят через слой данных, и стандарт буквально это. Цена: объекты памяти видны в
общем списке медиатеки платформы. Обратимо одной правкой: весь доступ собран в
lib/fractera/objects.ts. Развернуть решение — слово владельца, не правка. - Ждёт ли человек окончания цикла дообучения. Владелец сказал «прежде чем возвращено пользователю, должно быть сохранено» — это плата временем на каждом дорогом ответе. Второй путь: ответ уходит сразу, дообучение идёт следом, идентификаторы приходят при следующем обращении. 🛑 Первый честнее, второй быстрее; выбор ваш.
- Что считать выходом в интернет. Свободный поиск по вебу запрещён разделом 9, а вызов названного инструмента — генерации изображения, встраивания — нужен разделу 14. Границу проводит владелец, иначе её проведёт модель по настроению.
- Где живёт разбор фразы. Сегодня он идёт в пустой папке
/tmp/fractera-memory-think, потому что прежняя инструкция памяти была заглушкой и перебивала системный промпт. С наполнением этой инструкции причина исчезает — переезд разбора в папку службы становится возможным, и это решение владельца, а не правка.
17. Что измерено, а не предположено (2026-09-10)
claudeна сервере — версия 2.1.267. «Сессия» у него делается--resume <session-id>либо-c/--continue; идентификатор приходит с--output-format json. Есть--fork-sessionи--bg— запуск в фоне.- Память зовёт модель так:
claude -p <текст> --system-prompt <инструкция> --model <модель>. Истории нет — то есть первый и второй уровень уже существуют, третий и выше ещё нет. - Таймаут разбора внутри памяти — 120 000 мс (
MEMORY_THINK_TIMEOUT_MS). Пятый уровень с его десятью минутами в него не помещается. - nginx запросу не мешает:
proxy_read_timeout 86400. - Квота одна на всех: тем же окном подписки живут бот Telegram и работа архитектора за компьютером.
18. Одиночный и связанный вызов claude -p: нить, идентификатор и кэш (184, измерено 2026-09-11)
Зачем этот раздел вообще есть. Вопрос владельца 2026-09-11, дословно: «сказать честно я сам не понимаю как это работает… если пользователь говорит опровержение предыдущего вывода, то без возможности вернуться к предыдущей цепочке это не имеет никакого смысла». Ниже — не рассуждение, а четыре живых вызова на сервере.
Что такое нить и где у неё имя
Каждый вызов claude -p возвращает конверт, и в нём есть session_id — имя разговора.
🔒 ИДЕНТИФИКАТОР ОДИН НА НИТЬ, А НЕ НА СООБЩЕНИЕ. Измерено: первый вызов дал
8ebb61f7-f91d-47df-a1a9-42170cfba29c, два продолжения через --resume вернули тот же самый
идентификатор. У каждого сообщения внутри конверта есть свой uuid, но возврат к разговору делается
по session_id, и он один.
🔒 НИТЬ ДЕЙСТВИТЕЛЬНО ПОМНИТ. Первый вызов сказал «альфа». Второй, с --resume, на вопрос «какое
слово ты только что сказал» ответил «альфа», не получив это слово в запросе. Никакого пересказа
прежнего мы не делали.
🔒 НИТЬ ПРИВЯЗАНА К РАБОЧЕЙ ПАПКЕ. Стенограмма лежит файлом
/root/.claude/projects/-tmp-fractera-memory-think/<session_id>.jsonl. Смени рабочую папку разбора —
и прежние нити перестанут находиться, молча.
Кэш: связанный вызов ДЕШЕВЛЕ одиночного
Три хода одной нити, цена по конверту:
🔒 ОТСЮДА ГЛАВНОЕ ПРАВИЛО ЭКОНОМИИ, И ОНО ПРОТИВОРЕЧИТ ИНТУИЦИИ. Продолжить нить дешевле,
чем задать тот же вопрос заново, приложив пересказ прежнего: прочитанное из кэша стоит меньше, чем
присланное заново. Значит «вернуться к предыдущей цепочке» — не роскошь, а самый дешёвый путь.
🔒 Срок кэша — час: cache_creation: {ephemeral_1h_input_tokens: 6362, ephemeral_5m: 0}. Нить
старше часа продолжится, но первый ход после паузы снова оплачивается как создание кэша.
Что бывает, когда идентификатор чужой
🛑 ОТКАЗ ПРИХОДИТ БЕЗ КОНВЕРТА, И ЭТО ЛОВУШКА ДЛЯ ЧИТАЮЩЕГО. Измерено: код выхода 1, stdout
пустой, весь смысл в stderr — No conversation found with session ID: …. Разбор, который ждёт
JSON, назовёт это «модель ответила не по форме», и человек пойдёт чинить модель вместо того, чтобы
дать верный идентификатор. Поэтому у памяти для этого свой род отказа.
Как это выражено в договоре памяти
🔒 НАРУЖУ ЕДЕТ НАШЕ СЛОВО — thread, а не session_id. Чей это идентификатор и как он устроен
внутри — частное дело ящика; смени мы завтра CLI, имя параметра не изменится.
rememberвозвращаетthread, когда модель звалась;rememberпринимаетthreadи продолжает ту же нить;recallне принимаетthreadнамеренно: чтение сегодня не зовёт модель вовсе, и нити там не существует. Объявить параметр значило бы принять то, что ничего не делает.
🔒 ОТРИЦАНИЕ ОТВЕТА ОБРЕТАЕТ СМЫСЛ ТОЛЬКО В НИТИ — это и есть мысль владельца, ставшая правилом:
deny вместе с thread уезжает в ту же цепочку, где модель видит свой прежний вывод; deny без
thread отвечает not_supported и называет, чего не хватает.
🛑 И предел назван честно: в нити вывод пересматривается, но в хранилище опровержение пока не
записывается — цикл дообучения §15.2 не построен.
19. Чем агент памяти работает: инструмент, навык и одна строка инструкции (189, 2026-09-12)
Вопрос владельца, с которого раздел начался, дословно: «откуда и из чего модель, которая стартует, должна понять, каким образом какими инструментами она должна вызывать граф знаний, где ты это описал?» И там же — форма ответа, которую он предложил сам: «Каждый раз, когда тебе понадобится граф знаний, используй бла-бла-бла. На мой взгляд, в инструкции этого должно быть достаточно.»
✗ ЧЕМ ЭТОТ РАЗДЕЛ ОПЛАЧЕН — ИЗМЕРЕНИЕМ, КОТОРОЕ НАДО БЫЛО СДЕЛАТЬ РАНЬШЕ. У агента памяти
не было ни одного инструмента. Пять штук объявлены в .mcp.json с шага 175, а lib/think.mjs
звал модель с --strict-mcp-config без --mcp-config — это ноль серверов. Инструмента для
графа не существовало вовсе: граф звал наш код, а не агент. Способность, написанная и не
подключённая, снаружи неотличима от отсутствующей.
Три вещи, и у каждой своя работа
🔒 СХЕМА ВЫЗОВА НЕ ПИШЕТСЯ НИГДЕ РУКАМИ. Она приходит агенту от MCP-сервера вместе с именем и
описанием. Модели не надо ничего искать в приложении — и это ответ на вопрос «он что, должен
перекопать половину сервера?». Нет: у него в руках уже лежит ask_graph({question}).
🔒 ОПИСАНИЕ ИНСТРУМЕНТА СИЛЬНЕЕ ИНСТРУКЦИИ, ПОТОМУ ЧТО ЧИТАЕТСЯ ПОЗЖЕ. Инструкция формирует картину мира в начале сессии; описание попадает в глаза ровно тогда, когда решается, звать или нет. Поэтому в описании стоит повод и цена, а не рассказ об устройстве.
🔒 ЧТО МОЖНО ГАРАНТИРОВАТЬ КОНСТРУКЦИЕЙ — В ИНСТРУКЦИЮ НЕ ПИШЕТСЯ ВОВСЕ. Ключевые слова графу собирает код: агент их не касается и нарушить правило не может. Каждая строка инструкции оплачивается токенами на каждом вызове — значит строка, заменимая кодом, есть чистый убыток.
Строка, которая идёт в инструкцию памяти
Граф знаний — навык
use-knowledge-graph.
Всё. Больше в инструкции о графе нет ничего.
🪦 ПЕРВАЯ РЕДАКЦИЯ ЭТОЙ СТРОКИ ОТМЕНЕНА ВЛАДЕЛЬЦЕМ В ТОТ ЖЕ ЧАС. Здесь стояло: «Нужны связи —
"кто с кем", "кто мог знать", "где это было" — зови ask_graph…». Его довод дословно: «зачем агенту
говорить, что должно вызывать граф? Он сам определит, когда ему нужен граф, когда не нужен. Твои
вопросы только вводят его в возбуждение — а что если у меня будет третий вопрос?»
🔒 ЗАКОН, КОТОРЫЙ ИЗ ЭТОГО СЛЕДУЕТ И ШИРЕ ОДНОГО РАЗДЕЛА: ПЕРЕЧЕНЬ ПОВОДОВ НЕ ПОМОГАЕТ МОДЕЛИ, А МЕШАЕТ. Получив три примера, она начинает примерять к ним свой случай вместо того, чтобы решить самой. Список из трёх читается как «а четвёртого не бывает». Модель умнее списка — ей довольно знать, что способность есть и где про неё написано.
🛑 И НИ СЛОВА ПРО «ЧЕЛОВЕКА» — ЕГО ЖЕ ПОПРАВКА ТАМ ЖЕ: «какой человек? А если не человек, если машина, если дерево, еда?» Память хранит связи между чем угодно; сузив предмет примером, мы сузим и то, о чём агент решится спросить.
🛑 ВЕКТОР В ЭТУ СТРОКУ НЕ ВХОДИТ, И ЭТО НЕ ЗАБЫВЧИВОСТЬ. Вектор — четвёртый уровень, он
включается только требованием зовущего (depth: deep, §4). Агент в него не поднимается сам, значит
и руки для этого у него нет.
Как это устроено в коде
🪦 НАВЫК grow-the-shape ПОГЛОЩЁН use-tables 2026-09-13 (шаг 193), ЦЕЛИКОМ И БЕЗ ПОТЕРЬ.
Причина не в чистоте списка, а в числе хозяев: у графа, вектора и объектов по одному навыку на
хранилище, и второй навык о том же реляционном хранилище означал бы два правила об одном
предмете, которые расходятся на первой правке — молча, и обе редакции выглядят верными. Всё
содержание прежнего навыка (решение «колонка или таблица», рост без потерь, пустая колонка после
переезда, белый список имён, имя-фраза, сверка с существующим) перенесено; измерение 189-10, где
grow-the-shape покупал имя-фразу вместо ярлыка, проверено на нём заново случаем прогона 193-3.
🛑 В MEMORY-AGENT.md надгробия нет и быть не может — там только то, что есть сейчас.
Три метода записи — измерено, а не прочитано (193-1, 2026-09-13)
Вопрос владельца: «эти три инструмента физически три разных метода?» Да, и след у каждого свой:
write_value — UPDATE на месте, форма не растёт · make_new_kind — ALTER TABLE ADD COLUMN ×3
(значение, род утверждения, основание) · promote_to_list — CREATE TABLE, перенос прежнего
значения с его собственным временем, очистка поля корня.
🛑 ЧЕТВЁРТЫЙ ПУТЬ СУЩЕСТВУЕТ И СВОЕГО ИМЕНИ НЕ ИМЕЕТ: дописать в уже существующую таблицу — та
же рука promote_to_list, другая ветка внутри. Пятого инструмента не заведено намеренно: это
изменило бы договор рук ради ясности, которую даёт текст ответа. Навык объясняет разницу словами.
🔒 ИМЯ ПРИВОДЯТ К СТАНДАРТУ, НО НЕ ЧИНЯТ (там же, найдено прибором). Регистр, пробелы и дефисы —
форма одного имени; точка с запятой, кавычки, чужой алфавит означают, что пришло не имя, и
отвергаются целиком. ✗ До 193-1 код вычёркивал лишние знаки молча: x; DROP TABLE … становился
именем и заводил колонку. Дыры в SQL не было — белый список держал границу, — но в живой таблице
человека навсегда оставалась колонка с бессмысленным именем.
Третье хранилище — объекты (шаг 192, 2026-09-13)
Объект — вещь целиком с вечным идентификатором: документ, изображение, PDF, а также документ,
который агент сочинил как ответ (§14.2). Живёт в медиатеке слоя данных; находится по карточке —
имя, описание словами загрузившего и у текстового файла первые 1500 знаков — в векторном складе
своей коллекцией memory-objects со ссылкой на объект.
🔒 У ЭТОГО ХРАНИЛИЩА ЕСТЬ РУКА ЗАПИСИ, У ГРАФА И ВЕКТОРА — НЕТ. Граф и вектор наполняет код
памяти; объект-ответ пишет сам агент. Без keep_object обещание инструкции «ответ бывает объектом»
было бы способностью, названной и отсутствующей.
🔒 ПОРОГ 0.30 ИЗМЕРЕН НА 32 НАСТОЯЩИХ ФАЙЛАХ ВИТРИНЫ FES (scripts/probe/object-two-tests.mjs):
нужные 0.356–0.675, посторонние 0.107–0.249.
🛑 ДВА ПРЕДЕЛА ИЗМЕРЕНЫ, А НЕ ПРЕДПОЛОЖЕНЫ: внутрь изображения и PDF склад не смотрит — они находятся только по описанию; абзац из глубины длинного документа поиск объектов не видит — карточка несёт начало.
🔒 РАЗБОР ФРАЗЫ ИНСТРУМЕНТОВ НЕ ПОЛУЧАЕТ, И ЭТО НАЗВАНО ЯВНО. Он обязан вернуть чистый JSON; модель, у которой под рукой инструменты, потратит на них ход и ответит не по форме. Кому инструменты нужны — говорит вызывающий списком имён, а не «все, какие есть».
Граница, оплаченная в тот же день
Слово владельца: «если у нас в проекте существует только один стандарт передачи данных, значит этого стандарта мы и должны придерживаться — неважно, решение это внутри стенда или снаружи».
🔒 НАРУЖУ — ТОЛЬКО ДОГОВОР. Чужой инструмент с ключом памяти видит два глагола и ничего больше.
🔒 ВНУТРЬ — ПРЯМОЙ ПУТЬ К ХРАНИЛИЩАМ, И ОН ОТКРЫВАЕТСЯ СЕКРЕТОМ МАШИНЫ. Стенд обязан щупать
граф и вектор по отдельности — иначе он меряет ящик целиком и не может сказать, что сработало.
✗ Ошибка, которую это исправило: двери стенда я открыл ключом памяти — тем, что выдают
наружу, — и этим завёл вторую публичную дверь мимо договора. Ошибка была не в том, что прибор
смотрит внутрь, а в том, ЧЕМ он открывается. Исправлено 2026-09-12, проверено живьём: ключ памяти
на двери стенда → 401, секрет машины → 200, договор ключом памяти → 200.
🔒 В ИНСТРУКЦИИ ПАМЯТИ НАДГРОБИЙ НЕ БЫВАЕТ (решение владельца 2026-09-12)
Дословно: «в паспорте ты можешь временно оставить надгробие, но не вздумай в инструкции делать надгробие, это запрещено. История о том, что мы пока это не сделали, инструкция о том, что мы это сделали, а потом переделали, вообще никак не помогает агенту делать память».
🔒 РАЗДЕЛЕНИЕ ЖЁСТКОЕ И ПРОСТОЕ. Паспорт — замысел и его история, включая отменённое: его читает
человек и разработчик. MEMORY-AGENT.md — инструкция агента памяти, только то, что есть сейчас: её читает он перед
работой, и каждая строка там оплачивается токенами на каждом вызове.
🛑 ОТМЕНЁННОЕ В ИНСТРУКЦИИ ХУЖЕ, ЧЕМ ПРОСТО ЛИШНЕЕ. Надгробие описывает способность, которой нет, — и агент, прочитав его, обязан потратить ход на вопрос «а сейчас-то как?». Это ровно тот случай, когда текст не помогает работать, а мешает.
✗ ОПЛАЧЕНО ТЕМ ЖЕ ДНЁМ: в конце инструкции памяти стояло надгробие снятой заглушки — история о том, чего в файле давно нет. Удалено; она цела в git и в этом паспорте.
20. Ссылки — самостоятельный слой работы с данными (шаг 195, замысел — на утверждение владельца)
Слово владельца 2026-09-14, дословно: «ссылки это такой же равнозначной самостоятельно способ работы с памятью как и любой другой который мы описали то есть он должен внутри себя иметь способ найти и посмотреть и протестировать. То есть прямо из памяти положил вызываться API Аи браузера… Затем я должна это внести в описании проекта как ещё один слой работы с данными соответственно здесь появится навык который будет обращаться к API Аи браузера? Также это лежит в паспорт». И раньше, 2026-09-13: «если приходит ссылка то мы поступаем с ней как с объектом… извлечь именно весь доступный исходный код (текстовую составляющую, все что касается интерактивных элементов или медиафайлов проводится поверхностный анализ через атрибуты или заголовки) а не только Мета записи»; «обрабатывать нужно уметь ни одну ссылку а несколько ссылок».
🛑 СОСТОЯНИЕ: ЗАМЫСЕЛ, НЕ ПОСТРОЕНО. Ни раздела меню, ни рук, ни навыка сегодня нет. Строится шагом 195 после утверждения этого раздела.
20.1 Что это
Ссылка — адрес страницы, веб-приложения или ролика. Память не скачивает её как файл (граница §19: ответ text/html —
отказ is-a-page), а открывает настоящим браузером — служба ИИ-браузера ai-browser (:3800, ai-browser.<домен>,
федеральный шаг 196), общая для памяти, других служб и агентов. Память — первый её потребитель.
🔒 СЛОЙ, А НЕ ЧЕТВЁРТОЕ ХРАНИЛИЩЕ. Своего склада у ссылок нет: извлечённое ложится в те же четыре места, что объект, — это и делает ссылку равноправной, а не отдельным островом. Самостоятельны у слоя вход, руки, стенд и навык.
20.2 Как ссылка ложится в память
- Браузер открывает каждую ссылку (1–10 за раз): итоговый HTML после скриптов, весь видимый текст, заголовки, ссылки, кнопки, формы и поля, медиа по атрибутам, что страница пыталась достать и получила отказ.
- Ролик YouTube — данные ролика и расшифровка строками
[мм:сс–мм:сс]; нет расшифровки или YouTube проверяет на ботов — ролик ложится данными с причиной словами («что досталось + причина»). Как расшифровку брать гарантированно — федеральный шаг 198 (выбор владельца: панель расшифровки на странице ролика). - Снимок извлечённого — объект рода
webс колонкойurl: модель пишет полное описание (назначение, устройство, содержание, интерактивное, медиа) и саммари около 50 слов — тот же приём, что у объектов (§19, 194). - Четыре места: объектное хранилище (снимок с полным описанием) · вектор (карточка поиска) · граф знаний (полное описание с
адресом и происхождением: источник · автор · дата) · строка
messages_that_came_into_memory(родweb,url).
20.3 Стенд — стандартный, как у графа, вектора и объектов
Раздел левого меню «Тест ссылок» сразу под «Тестом объектного хранилища». Вкладки те же, что у стендов хранилищ:
🔒 Главный стенд «Тест памяти» не трогается (слово владельца 2026-09-13).
20.4 Руки агента и договор
Память зовёт ИИ-браузер по петле секретом машины; ключ ИИ-браузера (fab_…) — для чужих программ и памяти не нужен.
20.5 Навык
Навык агента памяти о ссылках (английский, .claude/skills/, во вкладке «Навык» стенда): когда в сообщении ссылка — какую руку
звать (посмотреть или положить), что память делает сама, какие отказы ИИ-браузера бывают и что отвечать человеку
(url-forbidden — адрес внутри машины; page-timeout/page-failed — страница не открылась; youtube-bot-check — YouTube
проверяет адрес сервера; browser-unreachable — служба браузера недоступна). Каждое утверждение навыка сверяется со строкой кода
(закон 194-14).
20.6 Развилки, которые решает архитектор
- Поиск ссылок — своя рука
find_linksилиfind_objectsс отбором по родуweb? Своя рука делает слой самостоятельным снаружи; общий поиск не заводит второго пути к одному складу. Предложение агента: своя тонкая рука поверх того же склада. - Повторная ссылка (тот же
urlуже в памяти) — новая запись со своей датой или обновление прежней? - Сколько снимка хранить — весь итоговый HTML (может быть мегабайты) или текст, структуру и медиа без разметки?
20.7 Границы, названные заранее
- 🛑 ИИ-браузер под пакетами тяжёлых страниц зависал (измерено 2026-09-14, федеральный 196-8 чинит) — слой ссылок строится после.
- Вход на сайты под учётной записью и обход защит от ботов — не делается; страница проверки приходит страницей проверки с кодом.
- Адреса внутри машины, петли и частных сетей отвергает сам браузер на каждом запросе страницы (196-3).
- Медиа описываются по атрибутам и не скачиваются.