<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Андрей Гааг - заметки и статьи</title><description>Инженерные заметки и статьи об AI-агентах, LLM-системах и надёжности агентов.</description><link>https://andreygaag.com/ru/</link><language>ru</language><item><title>Схема API описывает намерение вендора, а не поведение его клиента</title><link>https://andreygaag.com/ru/notes/2026-08-14-api-schema-describes-vendor-intent/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-14-api-schema-describes-vendor-intent/</guid><description>Документированный hash в кнопке VK ломал открытие мини-приложения; причину нашло сравнение трёх ссылок, а не ещё одна гипотеза из спецификации.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Динамический хвост в системном промпте отключает кеш провайдера целиком</title><link>https://andreygaag.com/ru/notes/2026-08-14-dynamic-system-prompt-tail-breaks-cache/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-14-dynamic-system-prompt-tail-breaks-cache/</guid><description>Таймстемп и память в начале 92-тысячетокенного агентного запроса превращали каждый вызов в холодный; статичный префикс и метрика cached tokens сделали дефект проверяемым.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>CUDA PTX vs SASS: toolchain и архитектура GPU решают, запустится ли модель</title><link>https://andreygaag.com/ru/notes/2026-08-13-cuda-ptx-vs-sass/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-13-cuda-ptx-vs-sass/</guid><description>Почему свежий llama.cpp всё равно падал на Blackwell и как нативный SASS убрал несовместимый PTX JIT.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Тупость, ломающая контекст агента</title><link>https://andreygaag.com/ru/notes/2026-08-10-oldest-images-break-agent-context/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-10-oldest-images-break-agent-context/</guid><description>Из-за среза не с той стороны мультимодальный агент получал самые старые картинки вместо самых свежих.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Postgres, партиции и пропавшие посты</title><link>https://andreygaag.com/ru/notes/2026-08-07-insert-rowcount-is-not-a-delivery-signal/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-07-insert-rowcount-is-not-a-delivery-signal/</guid><description>Данные сохранялись в партиции, но cursor.rowcount возвращал ноль и не запускал пайплайн обработки.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>hash() стабилен только внутри одного процесса</title><link>https://andreygaag.com/ru/notes/2026-08-07-python-hash-is-process-local/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-07-python-hash-is-process-local/</guid><description>Один источник создавал новый post_id для того же URL при каждом запуске процесса и обходил дедупликацию.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Семантические решения: модели для смысла, код для инвариантов</title><link>https://andreygaag.com/ru/notes/2026-08-02-semantic-decisions-model-invariants-code/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-08-02-semantic-decisions-model-invariants-code/</guid><description>В агентской системе модель должна интерпретировать запрос и выбирать действия, а код - сохранять гарантии, безопасность и необратимые инварианты.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Критичные ссылки не должны зависеть от одного внешнего домена</title><link>https://andreygaag.com/ru/notes/2026-07-14-telegram-domain-outage/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-07-14-telegram-domain-outage/</guid><description>Когда внешний домен Telegram временно перестал работать, все ссылки на ботов, каналы и пользователей сломались одновременно.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Отложенный запуск должен быть отдельным инструментом</title><link>https://andreygaag.com/ru/notes/2026-07-09-delayed-tool-execution/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-07-09-delayed-tool-execution/</guid><description>Когда планирование встраивают в каждый инструмент отдельно, новые каналы раздувают код; общий инструмент планирования сохраняет эту логику в одном месте.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate></item><item><title>JWT обновлялся не полностью после миграции сервиса</title><link>https://andreygaag.com/ru/notes/2026-07-07-jwt-refresh-mismatch/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-07-07-jwt-refresh-mismatch/</guid><description>После переноса сервиса пользователи вылетали из системы из-за рассинхронизации access и refresh token и скрытых значений по умолчанию в конфигурации.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Оплата прошла, но тариф не применился</title><link>https://andreygaag.com/ru/notes/2026-07-06-payment-without-tariff/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-07-06-payment-without-tariff/</guid><description>Платёжный путь сломался на предположении, что тариф уже существует: update-only логика должна уметь создать состояние, если конкурентный trial ещё не успел его создать.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate></item><item><title>OpenCode с NorthMiniCode на своём железе</title><link>https://andreygaag.com/ru/blog/north-mini-code/</link><guid isPermaLink="true">https://andreygaag.com/ru/blog/north-mini-code/</guid><description>Практический опыт запуска локального coding-агента OpenCode с NorthMiniCode на RTX 5060 Ti и RTX 3060.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Контекст LLM - не база данных</title><link>https://andreygaag.com/ru/blog/llm-context-is-not-a-database/</link><guid isPermaLink="true">https://andreygaag.com/ru/blog/llm-context-is-not-a-database/</guid><description>Большие результаты инструментов превращают prompt в случайное хранилище данных; надёжные агентские системы держат растущие данные снаружи и ограничивают их попадание в контекст.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Троекратный всплеск соединений с БД из-за цикла на клиенте</title><link>https://andreygaag.com/ru/notes/2026-07-02-database-connection-spike/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-07-02-database-connection-spike/</guid><description>Даже успешные повторные запросы могут исчерпать пул соединений: серверу нужны rate limit, а клиенту - защита от бесконечного цикла после сбоя streaming-соединения.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Не превышайте 32 символа в идентификаторах ревизий Alembic</title><link>https://andreygaag.com/ru/notes/2026-06-30-alembic-revision-length/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-30-alembic-revision-length/</guid><description>Alembic хранит текущую ревизию в колонке VARCHAR(32), поэтому длинные идентификаторы переполняют её и ломают миграции.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>App Store review выявил незакрытые требования продукта</title><link>https://andreygaag.com/ru/notes/2026-06-29-app-store-review/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-29-app-store-review/</guid><description>Отклонение iOS-приложения показало, что техническая готовность недостаточна без удаления аккаунта, корректной авторизации, безопасных скриншотов и ясной модели оплаты.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Локальные и контейнерные окружения нельзя смешивать</title><link>https://andreygaag.com/ru/notes/2026-06-17-zed-ruff-environment/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-17-zed-ruff-environment/</guid><description>Ruff перестал запускаться в Zed, потому что локальный проект использовал Linux-бинарник из контейнерного virtualenv.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Неограниченная история диалога может переполнить контекст</title><link>https://andreygaag.com/ru/notes/2026-06-16-agent-context-compact/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-16-agent-context-compact/</guid><description>Каркас агента ограничивал контекст из памяти, но не активную историю диалога; восстановление после перезапуска указало на вероятное переполнение, не доказав его.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Пользовательские данные нужно удалять мягко</title><link>https://andreygaag.com/ru/notes/2026-06-11-soft-delete-chats/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-11-soft-delete-chats/</guid><description>Если пользователь случайно удалил чат, soft-delete с контролируемым восстановлением безопаснее немедленного физического удаления.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Канон ещё не сформирован</title><link>https://andreygaag.com/ru/blog/agentic-engineering-canon/</link><guid isPermaLink="true">https://andreygaag.com/ru/blog/agentic-engineering-canon/</guid><description>Инженерная дисциплина агентных систем формируется на наших глазах: базовые принципы Computer Science остаются, а канона агентной разработки ещё нет.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Совместимость Qwen3.5:32B и OpenCode - часть контракта</title><link>https://andreygaag.com/ru/notes/2026-06-08-opencode-model-compatibility/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-08-opencode-model-compatibility/</guid><description>Сессия локального coding agent может оборваться из-за несовместимого формата reasoning, даже если модель загрузилась и успела изменить файлы.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>CI не должна зависеть от одного package registry</title><link>https://andreygaag.com/ru/notes/2026-06-08-package-registry-outage/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-08-package-registry-outage/</guid><description>Таймауты внешнего PyPI ломают сборку контейнеров; зеркала и собственный registry превращают такую зависимость в управляемый отказ.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Корпоративная сеть может заблокировать SSE</title><link>https://andreygaag.com/ru/notes/2026-06-08-sse-blocked-by-corporate-network/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-08-sse-blocked-by-corporate-network/</guid><description>Если обычные HTTP-запросы проходят, это ещё не означает, что корпоративная сеть пропустит длительное SSE-соединение, необходимое для streaming-ответов агента.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Удаление файла не очищает память RAG</title><link>https://andreygaag.com/ru/notes/2026-06-06-agent-rag-memory-cleaning/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-06-agent-rag-memory-cleaning/</guid><description>Удаление исходных документов не гарантирует удаление их векторных представлений: память агента нужно очищать на каждом слое хранения.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Почему агент не должен сам выбирать архитектуру незнакомой задачи</title><link>https://andreygaag.com/ru/notes/2026-06-06-agent-voice-cloning/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-06-agent-voice-cloning/</guid><description>Попытка поручить агенту клонирование голоса без предварительного исследования превратилась в бесконечный перебор: сначала нужно определить архитектуру и критерии оценки.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Одной vision-модели недостаточно для надёжного разбора чеков</title><link>https://andreygaag.com/ru/notes/2026-06-06-receipt-vision-parsing/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-06-receipt-vision-parsing/</guid><description>Vision-модель может распознать чек, но ошибиться в цене, названии, количестве или итоговой сумме; надёжность требует проверяемого pipeline.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Fallback для аудио должен покрывать реальные ошибки декодирования</title><link>https://andreygaag.com/ru/notes/2026-06-01-audio-fallback/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-01-audio-fallback/</guid><description>Аудиофайлы могут воспроизводиться и при этом не определяться библиотекой: fallback через ffmpeg нельзя ограничивать одним предполагаемым типом исключения.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Не всякая хорошая идея заслуживает автоматизации</title><link>https://andreygaag.com/ru/notes/2026-06-01-automation-needs-a-test/</link><guid isPermaLink="true">https://andreygaag.com/ru/notes/2026-06-01-automation-needs-a-test/</guid><description>Идея, предложенная моделью и звучащая удобно, ещё не является полезным изменением: сначала нужно проверить её ценность и критерий успеха.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item></channel></rss>