compact vs clear
Я снова про AI-шку и две типовые команды у большинства агентов /compact vs /clear.
Первая сжимает контекст, вторая начинает новую сессию.
По сути это два способа борьбы с энтропией - раздутием размера контекста и последующим ухудшением качества ответов агента.
А ухудшается оно по статистике где-то в районе 50% контекста.
Ну и борьбы со стоимостью тоже, если вы сами платите за модель)
Т.к. весь контекст при каждом запросе уходит на сервер, хоть и считается по особому тарифу (cashed).
Если запустить /compact в Claude Code - удивляет (неприятно) скорость его работы. У меня это обычно более минуты, ближе к 2.
Почему так - сжатие стало умным, т.е. вся история сессии скармливается LLM, и она выбирает важное. Можно указать это важное, явно передав текстом /compact "сохрани план работ и архитектурные требования".
Для сжатия похоже используется та же модель, что и сейчас в сессии - по крайней никакой другой информации я не вижу.
Это точно есть в Claude Code, и думаю скоро будет у всех)
К слову, есть готовые хуки, определяющие оптимальную точку для /compact с простой, я бы даже сказал "наивной" реализацией: создается PreToolUse hook для операций Edit|Write, счетчик, как только число вызовов превышает порог (50 по умолчанию) - пишем в контекст рекомендацию вызвать /compact.
Но вернемся к сжатию. Умное - это хорошо, но вместе с этим долгое и более дорогое. Плюс что-то важное все равно может пропасть из контекста.
К чему я веду - /compact видится костылем, помогающим, если вы неправильно декомпозировали задачу (story). Или пошли на поводу у модели, когда она предложила добавить в план работ еще А, Б, С... Решив, что раз это дешево - почему бы не сделать сразу)
А ведь преждевременную оптимизацию и YAGNI никто не отменял.
Итог: навык декомпозиции задач с AI остается таким же важным, как и был без нее. Бейте задачи на части, план работ и текущее состояние храните в файле (а SDD фреймворки так и делают), чаще вызывайте /clear.
#ai #ai_agents
Я снова про AI-шку и две типовые команды у большинства агентов /compact vs /clear.
Первая сжимает контекст, вторая начинает новую сессию.
По сути это два способа борьбы с энтропией - раздутием размера контекста и последующим ухудшением качества ответов агента.
А ухудшается оно по статистике где-то в районе 50% контекста.
Ну и борьбы со стоимостью тоже, если вы сами платите за модель)
Т.к. весь контекст при каждом запросе уходит на сервер, хоть и считается по особому тарифу (cashed).
Если запустить /compact в Claude Code - удивляет (неприятно) скорость его работы. У меня это обычно более минуты, ближе к 2.
Почему так - сжатие стало умным, т.е. вся история сессии скармливается LLM, и она выбирает важное. Можно указать это важное, явно передав текстом /compact "сохрани план работ и архитектурные требования".
Для сжатия похоже используется та же модель, что и сейчас в сессии - по крайней никакой другой информации я не вижу.
Это точно есть в Claude Code, и думаю скоро будет у всех)
К слову, есть готовые хуки, определяющие оптимальную точку для /compact с простой, я бы даже сказал "наивной" реализацией: создается PreToolUse hook для операций Edit|Write, счетчик, как только число вызовов превышает порог (50 по умолчанию) - пишем в контекст рекомендацию вызвать /compact.
Но вернемся к сжатию. Умное - это хорошо, но вместе с этим долгое и более дорогое. Плюс что-то важное все равно может пропасть из контекста.
К чему я веду - /compact видится костылем, помогающим, если вы неправильно декомпозировали задачу (story). Или пошли на поводу у модели, когда она предложила добавить в план работ еще А, Б, С... Решив, что раз это дешево - почему бы не сделать сразу)
А ведь преждевременную оптимизацию и YAGNI никто не отменял.
Итог: навык декомпозиции задач с AI остается таким же важным, как и был без нее. Бейте задачи на части, план работ и текущее состояние храните в файле (а SDD фреймворки так и делают), чаще вызывайте /clear.
#ai #ai_agents
👍2
Я не рассказал про ключевой вопрос по SDD - где находится source of truth?
До сих пор источником правды был код. По понятной причине - именно код работает на ПРОМе, не аналитика. Аналитика лежит в wiki и медленно, но верно расходится с кодом.
Сейчас мы этот разрыв пытаемся убирать, и кладем аналитику поближе к коду.
Но разрыв остается, т.к. LLM при разработке фичи условно правит 3 места:
1) спеки
2) код
3) документацию к коду
Тот факт, что правка идет в одной сессии (на одном контексте) увеличивает вероятность, что все три источника будут одинаковы.
Но не доводит ее до 100%.
А главное - зачем нам три источника?
Сложный вопрос.
Где спека точно нужна?
Спека на входе агента - да, т.е. в течение рабочей сессии.
Нужна ли она далее - вопрос?
Накину аргументы за спецификацию как источник правды:
1) спецификация упрощает совместную работу над фичей для ВП, аналитиков, разработчиков и тестировщиков. Тут наверное не поспоришь, пока в команде есть все эти роли.
Разве что тестировщики сейчас автоматизируются и идут "в код".
2) актуальная спецификация может дать возможность выкинуть код и переписать сервис с нуля. В целом да, но вообще говоря спеку можно вытянуть из кода и JavaDoc.
3) агенту (и человеку) проще дорабатывать проект. Под вопросом - при хорошо структурированном коде и наличии документации там, где она нужна. А еще индексаторы кода есть.
Про минусы я уже сказал - массовое нарушение DRY.
Почему массовое?
Потому что по факту источников больше, чем три. Новый реализуемый алгоритм появляется в:
1) коде
2) тестах
3) JavaDoc
4) spec.md
5) design.md (здесь и далее в терминологии OpenSpec)
6) proposal.md (верхнеуровнево)
7) tasks.md (на своем шаге реализации)
8) в файле с tasks от superpowers.md (при использовании superpowers)
9) AGENTS.md (такое возможно, если алгоритм влияет на требования к остальному коду. или в виде описания алгоритма как комментарий к параметрам вызова сервиса)
10) какой-нибудь скил валидации, проверяющий, что алгоритм вызывается там, где должен вызываться
И если мы поменяли название алгоритма - где его менять? Везде? Или исторические документы не трогаем? А если их кто-то прочитает?
Ясно, что это решается отдельным скилом синхронизации, но что делать с DRY?
Я пока окончательного ответа для себя не нашел, но точно понятно, что дублирование надо уменьшать.
code or not code, вот в чем вопрос?
#ai #ai_agents
До сих пор источником правды был код. По понятной причине - именно код работает на ПРОМе, не аналитика. Аналитика лежит в wiki и медленно, но верно расходится с кодом.
Сейчас мы этот разрыв пытаемся убирать, и кладем аналитику поближе к коду.
Но разрыв остается, т.к. LLM при разработке фичи условно правит 3 места:
1) спеки
2) код
3) документацию к коду
Тот факт, что правка идет в одной сессии (на одном контексте) увеличивает вероятность, что все три источника будут одинаковы.
Но не доводит ее до 100%.
А главное - зачем нам три источника?
Сложный вопрос.
Где спека точно нужна?
Спека на входе агента - да, т.е. в течение рабочей сессии.
Нужна ли она далее - вопрос?
Накину аргументы за спецификацию как источник правды:
1) спецификация упрощает совместную работу над фичей для ВП, аналитиков, разработчиков и тестировщиков. Тут наверное не поспоришь, пока в команде есть все эти роли.
Разве что тестировщики сейчас автоматизируются и идут "в код".
2) актуальная спецификация может дать возможность выкинуть код и переписать сервис с нуля. В целом да, но вообще говоря спеку можно вытянуть из кода и JavaDoc.
3) агенту (и человеку) проще дорабатывать проект. Под вопросом - при хорошо структурированном коде и наличии документации там, где она нужна. А еще индексаторы кода есть.
Про минусы я уже сказал - массовое нарушение DRY.
Почему массовое?
Потому что по факту источников больше, чем три. Новый реализуемый алгоритм появляется в:
1) коде
2) тестах
3) JavaDoc
4) spec.md
5) design.md (здесь и далее в терминологии OpenSpec)
6) proposal.md (верхнеуровнево)
7) tasks.md (на своем шаге реализации)
8) в файле с tasks от superpowers.md (при использовании superpowers)
9) AGENTS.md (такое возможно, если алгоритм влияет на требования к остальному коду. или в виде описания алгоритма как комментарий к параметрам вызова сервиса)
10) какой-нибудь скил валидации, проверяющий, что алгоритм вызывается там, где должен вызываться
И если мы поменяли название алгоритма - где его менять? Везде? Или исторические документы не трогаем? А если их кто-то прочитает?
Ясно, что это решается отдельным скилом синхронизации, но что делать с DRY?
Я пока окончательного ответа для себя не нашел, но точно понятно, что дублирование надо уменьшать.
code or not code, вот в чем вопрос?
#ai #ai_agents
Рубрика: "малоизвестные фичи IDEA".
В меню "File" можно найти такой пункт как "Remote Development". Сразу скажу - только в Ultimate версии.
Два основных вопроса - что это и зачем это?
Начнем с первого.
Это клиент-серверная IDEA. На вашем компе поднимается компонент Gateway - тонкий клиент IDEA с идентичным интерфейсом, являющийся, как следует из его названия, шлюзом к серверу.
К серверу можно обращаться по 3 протоколам:
1) ssh - удаленный сервер
2) WSL - для тех, кому нужен полноценный Linux на Windows, как бы странно это не звучало
3) Dev Containers - если нужна изолированная среда локально. Про Dev Containers, к слову, стоит написать отдельно, эта штука менее популярна, чем те же Test Containers.
У Gateway к слову отдельный бинарник и отдельный файл настроек (vmoptions).
Что за сервер?
Это по сути полноценная инсталляция IDEA на Linux. При настройке подключения в родительской IDEA нужно выбрать версию remote IDEA, она должна совпадать с версией на рабочем месте. Там опять же свои настройки (idea.properties и vmoptions). Занимает порядка 3 Гб.
Перед инсталляций будет проверка на системные требования, из важного - минимум 4 Гб ОЗУ должно быть свободно. В вылетающием warning есть слово "рекомендовано", но по факту при несоблюдении этого требования инсталляция падает.
Это логично, т.к. основная работа будет на сервере, при оценке требуемой ОЗУ нужно отталкиваться от ресурсов, требуемых при обычной локальной разработке по вашим проектам.
По функционалу - из того, что заметил работает все. Плагины, рефакторинги, генерация, поиск, переходы между классами, run configurations, встроенные linter-ы (вкладка Problems), полноценная работа с git, консоль (естественно, доступны те консоли, что есть на удаленном сервере)...
Т.к. это разные бинарники с обычной IDEA - это разные окна, причем открыть новое окно Remote Development можно только из основной IDEA или прямым запуском.
Теперь главный вопрос - зачем это нужно?
Для начала зачем нужно было до эры AI - ага, не опять, а снова))):
1) запуск сборки на полноценном Linux если рабочий комп на Win
2) разработка на слабом ноуте - монитор правда все равно нужен нормальный, как и клавиатура с мышью
3) запуск сборки в песочнице (чтобы не ставить серверное ПО на рабочий комп)
Ну а в настоящий момент к этому всему добавляется одно важное применение - запуск AI агента на зарубежном сервере с постоянным IP, без VPN (но с регистрацией), что дает нам:
а) уменьшение вероятности блокировки
б) не нужно постоянно перещелкивать VPN для доступа к ресурсам разработки, к которым нет доступа из-за санкций и\или VPN
в) AI агента можно запуска в yolo режиме (без подтверждений), предварительно настроив запрет force push и удаления master ветки
г) в такой схеме можно вести "non-stop" разработку в 2 режимах: полное погружение (анализ и ревью кода) с компа в IDE и контроль работы агента в остальное время - переписка с агентом с телефона, например, в дороге или на прогулке.
Можно даже голосовухи агенту записывать, если мобильный клиент позволяет)
Важное условие - чтобы сессия агента не рвалась при закрытии крышки ноута нужно запускать ее в tmux (очень полезная штука, рекомендую).
Подводные камни:
а) коннект по ssh, который обычно режут в корпоративной сети
б) местонахождение удаленного сервера стоит синхронизировать с VPN, используемым для оплаты подписки и локального доступа
в) сервер стоит денег, но небольших, сравнимых со стоимостью базовой подписки на AI.
#idea #ai
В меню "File" можно найти такой пункт как "Remote Development". Сразу скажу - только в Ultimate версии.
Два основных вопроса - что это и зачем это?
Начнем с первого.
Это клиент-серверная IDEA. На вашем компе поднимается компонент Gateway - тонкий клиент IDEA с идентичным интерфейсом, являющийся, как следует из его названия, шлюзом к серверу.
К серверу можно обращаться по 3 протоколам:
1) ssh - удаленный сервер
2) WSL - для тех, кому нужен полноценный Linux на Windows, как бы странно это не звучало
3) Dev Containers - если нужна изолированная среда локально. Про Dev Containers, к слову, стоит написать отдельно, эта штука менее популярна, чем те же Test Containers.
У Gateway к слову отдельный бинарник и отдельный файл настроек (vmoptions).
Что за сервер?
Это по сути полноценная инсталляция IDEA на Linux. При настройке подключения в родительской IDEA нужно выбрать версию remote IDEA, она должна совпадать с версией на рабочем месте. Там опять же свои настройки (idea.properties и vmoptions). Занимает порядка 3 Гб.
Перед инсталляций будет проверка на системные требования, из важного - минимум 4 Гб ОЗУ должно быть свободно. В вылетающием warning есть слово "рекомендовано", но по факту при несоблюдении этого требования инсталляция падает.
Это логично, т.к. основная работа будет на сервере, при оценке требуемой ОЗУ нужно отталкиваться от ресурсов, требуемых при обычной локальной разработке по вашим проектам.
По функционалу - из того, что заметил работает все. Плагины, рефакторинги, генерация, поиск, переходы между классами, run configurations, встроенные linter-ы (вкладка Problems), полноценная работа с git, консоль (естественно, доступны те консоли, что есть на удаленном сервере)...
Т.к. это разные бинарники с обычной IDEA - это разные окна, причем открыть новое окно Remote Development можно только из основной IDEA или прямым запуском.
Теперь главный вопрос - зачем это нужно?
Для начала зачем нужно было до эры AI - ага, не опять, а снова))):
1) запуск сборки на полноценном Linux если рабочий комп на Win
2) разработка на слабом ноуте - монитор правда все равно нужен нормальный, как и клавиатура с мышью
3) запуск сборки в песочнице (чтобы не ставить серверное ПО на рабочий комп)
Ну а в настоящий момент к этому всему добавляется одно важное применение - запуск AI агента на зарубежном сервере с постоянным IP, без VPN (но с регистрацией), что дает нам:
а) уменьшение вероятности блокировки
б) не нужно постоянно перещелкивать VPN для доступа к ресурсам разработки, к которым нет доступа из-за санкций и\или VPN
в) AI агента можно запуска в yolo режиме (без подтверждений), предварительно настроив запрет force push и удаления master ветки
г) в такой схеме можно вести "non-stop" разработку в 2 режимах: полное погружение (анализ и ревью кода) с компа в IDE и контроль работы агента в остальное время - переписка с агентом с телефона, например, в дороге или на прогулке.
Можно даже голосовухи агенту записывать, если мобильный клиент позволяет)
Важное условие - чтобы сессия агента не рвалась при закрытии крышки ноута нужно запускать ее в tmux (очень полезная штука, рекомендую).
Подводные камни:
а) коннект по ssh, который обычно режут в корпоративной сети
б) местонахождение удаленного сервера стоит синхронизировать с VPN, используемым для оплаты подписки и локального доступа
в) сервер стоит денег, но небольших, сравнимых со стоимостью базовой подписки на AI.
#idea #ai
❤2🔥1
Минутка удивления способностям AI.
Сегодня при работе с Claude Code и Opus 5 стал замечать одну интересную штуку.
Задача - написать сложный тест. В ответе модели в CLI:
Кто из вас включил в CI пайплайн фреймворк для мутационного тестирования (PITest, например)?
Кто пытается сломать свои тесты перед коммитом?
А AI агент делает.
Причем в требованиях к проекту в контексте этого нет - да, позор на мою седую голову)))
P.S. Причем раньше я периодически замечал, что assert-ов в написанных AI тестах не хватает.
P.P.S. В context конечно требования стоит добавить, это часть Evals.
#ai #ai_agents #unit_tests
Сегодня при работе с Claude Code и Opus 5 стал замечать одну интересную штуку.
Задача - написать сложный тест. В ответе модели в CLI:
Мутационно проверен — обе попытки «сдать» тест валят его:
- убрать финальный пулл → live metric lost points;
- оставить метрику ingest_enabled=false после apply → onboarded metric is not being pulled after the flip.
Первая версия ассертов, кстати, мутацию пережила (точки новой метрики приходили от backfill'а) — отсюда шаг 4.
Кто из вас включил в CI пайплайн фреймворк для мутационного тестирования (PITest, например)?
Кто пытается сломать свои тесты перед коммитом?
А AI агент делает.
Причем в требованиях к проекту в контексте этого нет
P.S. Причем раньше я периодически замечал, что assert-ов в написанных AI тестах не хватает.
P.P.S. В context конечно требования стоит добавить, это часть Evals.
#ai #ai_agents #unit_tests
Агент работает по TDD, но делает ли он это с уважением правильно?
Недавно говорил с коллегой по поводу superpowers и TDD, и возник интересный вопрос.
Формально да, процесс идет по TDD - red-green-refactor - пишется тест, он падает, пишется код, тест зеленеет.
Но становится ли такой код качественнее, ведь LLM всегда может подогнать код под результат?
Давайте посмотрим на основные аргументы в пользу TDD.
1) TDD гарантирует нам, что тесты точно будут, покрытие растет, регрессионные баги находятся на этапе разработки.
С AI тесты точно будут, если поставить ей такую цель - через контекст, субагента или навык.
Скорость кодирования вырастает, агенту не важно что писать - код или тесты.
В этом плане точное следование TDD мало что дает - достаточно явных требований агенту и процедуры их валидации.
2) т.к. тесты пишутся до кода, то код гарантированно выставляет более согласованное и более тестируемое API.
Тут TDD помогает, с двумя ремарками:
а) модель может смухлевать и подогнать тесты под существующий код. Как с этим бороться - отдельная тема
б) если говорить про superpowers - он пишет сразу план с тестами и кодом.
Поэтому тот факт, что вначале идет тест, важен, но не так критичен.
AI работает в одной сессии, а при разработке человеком - сессии разные, между написанием кода и тестов могут пройти дни.
А т.к. сроки ограниченны => плохое API остается навсегда.
3) короткий цикл разработки, быстрая обратная связи, как итог - правильная декомпозиция задач.
Это очень важно, и TDD в исполнении AI агента тут помогает собственно AI разработке.
Если подзадачи мелкие - на них проще сделать evals (приемочные тесты), не забыть ничего.
Некоторые задачи можно распараллелить, если агент это поддерживает
И т.об. снизить время ревью человеком и превратить преимущество в скорости кодирования агента в уменьшение Lead Time.
Ремарка - блокер тут не только время ревью, но это оно оказывает существенное влияние.
4) благодаря TDD тесты становятся документацией.
Исходя из моего опыта с superpowers - "из коробки" это не так, нужно дополнительно настраивать контекст, чтобы тесты были читаемы.
И второй ключевой момент - задание evals со стороны разработчика на этапе проектирования.
Именно тесты, являющиеся приемочными - лучшая документация.
Вывод: да, с AI важность TDD меньше, чем без нее.
Но все равно TDD остается полезен если не забывать про evals (приемочные тесты) и донастроить обвязку под читаемость тестов и запрет хаков со стороны модели.
Главные плюсы: тесты как документация на основе заданных evals и короткие контролируемые циклы разработки.
Т.е. само написание тестов до кода тут не так важно, как качество тестов и написание их в одной сессии с кодом.
И да, при таком подходе тесты можно было бы писать после кода в одной сессии. Но зачем?)
#ai #ai_agents #tdd
Недавно говорил с коллегой по поводу superpowers и TDD, и возник интересный вопрос.
Формально да, процесс идет по TDD - red-green-refactor - пишется тест, он падает, пишется код, тест зеленеет.
Но становится ли такой код качественнее, ведь LLM всегда может подогнать код под результат?
Давайте посмотрим на основные аргументы в пользу TDD.
1) TDD гарантирует нам, что тесты точно будут, покрытие растет, регрессионные баги находятся на этапе разработки.
С AI тесты точно будут, если поставить ей такую цель - через контекст, субагента или навык.
Скорость кодирования вырастает, агенту не важно что писать - код или тесты.
В этом плане точное следование TDD мало что дает - достаточно явных требований агенту и процедуры их валидации.
2) т.к. тесты пишутся до кода, то код гарантированно выставляет более согласованное и более тестируемое API.
Тут TDD помогает, с двумя ремарками:
а) модель может смухлевать и подогнать тесты под существующий код. Как с этим бороться - отдельная тема
б) если говорить про superpowers - он пишет сразу план с тестами и кодом.
Поэтому тот факт, что вначале идет тест, важен, но не так критичен.
AI работает в одной сессии, а при разработке человеком - сессии разные, между написанием кода и тестов могут пройти дни.
А т.к. сроки ограниченны => плохое API остается навсегда.
3) короткий цикл разработки, быстрая обратная связи, как итог - правильная декомпозиция задач.
Это очень важно, и TDD в исполнении AI агента тут помогает собственно AI разработке.
Если подзадачи мелкие - на них проще сделать evals (приемочные тесты), не забыть ничего.
Некоторые задачи можно распараллелить, если агент это поддерживает
И т.об. снизить время ревью человеком и превратить преимущество в скорости кодирования агента в уменьшение Lead Time.
Ремарка - блокер тут не только время ревью, но это оно оказывает существенное влияние.
4) благодаря TDD тесты становятся документацией.
Исходя из моего опыта с superpowers - "из коробки" это не так, нужно дополнительно настраивать контекст, чтобы тесты были читаемы.
И второй ключевой момент - задание evals со стороны разработчика на этапе проектирования.
Именно тесты, являющиеся приемочными - лучшая документация.
Вывод: да, с AI важность TDD меньше, чем без нее.
Но все равно TDD остается полезен если не забывать про evals (приемочные тесты) и донастроить обвязку под читаемость тестов и запрет хаков со стороны модели.
Главные плюсы: тесты как документация на основе заданных evals и короткие контролируемые циклы разработки.
Т.е. само написание тестов до кода тут не так важно, как качество тестов и написание их в одной сессии с кодом.
И да, при таком подходе тесты можно было бы писать после кода в одной сессии. Но зачем?)
#ai #ai_agents #tdd
Рубрика - приколы с AI агентами.
Есть шанс, что станет постоянной.
И сразу преамбула - да, агенты часто смешно косячат. Даже самые сильные, типа Claude Code с Claude моделью.
Но это не значит, что они бесполезны.
Правильный подход - понимать причины этих косяков и нивелировать их правилами в контексте и evals-ами.
Так вот, AI очень любит нарушать принцип DRY - Don't Repeat Yourself.
Вот прямо хлебом не корми.
При создании новой фичи с большой вероятностью там появится копия существующего инфраструктурного кода.
Или даже несколько - в каждом новом классе\файле.
Как с этим бороться - описать существующий код для переиспользования в контексте.
Или добавить скил.
Или и то, и другое, что вообще мне кажется одним из основных паттернов при работе с агентами.
В данном случае я пошел по второму пути.
С агентом, естественно, мы обсудили проблему и сделали скил.
Скил включает в себя хук, который ищет дубли. Плюс файл с реестром типовых дублей.
И собственно сам текст скила.
Т.е. я в скил положил типовые примеры, которые нужно переиспользовать.
В скил, который должен решить проблему дублирования.
Что вы думаете?
В скиле эти примеры появились в 3 местах!)))
После моего ревью агент признал косяк, поиронизировал над собой, убрал один дубль и сделал автогенерацию другого из единого источника правды.
Но сам факт...
Что касается причин такого поведения.
Мне видится такая: для LLM дублирование - это сигнал. Сигнал, повышающий важность информации.
Даже есть такая техника промтинга.
Т.е. пока ей явно не скажешь, что это проблема - LLM это проблемой не считает.
Есть еще идеи, почему они так работают?
#ai #ai_agents #dry #ai_fuckup
Есть шанс, что станет постоянной.
И сразу преамбула - да, агенты часто смешно косячат. Даже самые сильные, типа Claude Code с Claude моделью.
Но это не значит, что они бесполезны.
Правильный подход - понимать причины этих косяков и нивелировать их правилами в контексте и evals-ами.
Так вот, AI очень любит нарушать принцип DRY - Don't Repeat Yourself.
Вот прямо хлебом не корми.
При создании новой фичи с большой вероятностью там появится копия существующего инфраструктурного кода.
Или даже несколько - в каждом новом классе\файле.
Как с этим бороться - описать существующий код для переиспользования в контексте.
Или добавить скил.
Или и то, и другое, что вообще мне кажется одним из основных паттернов при работе с агентами.
В данном случае я пошел по второму пути.
С агентом, естественно, мы обсудили проблему и сделали скил.
Скил включает в себя хук, который ищет дубли. Плюс файл с реестром типовых дублей.
И собственно сам текст скила.
Т.е. я в скил положил типовые примеры, которые нужно переиспользовать.
В скил, который должен решить проблему дублирования.
Что вы думаете?
В скиле эти примеры появились в 3 местах!)))
После моего ревью агент признал косяк, поиронизировал над собой, убрал один дубль и сделал автогенерацию другого из единого источника правды.
Но сам факт...
Что касается причин такого поведения.
Мне видится такая: для LLM дублирование - это сигнал. Сигнал, повышающий важность информации.
Даже есть такая техника промтинга.
Т.е. пока ей явно не скажешь, что это проблема - LLM это проблемой не считает.
Есть еще идеи, почему они так работают?
#ai #ai_agents #dry #ai_fuckup
😁1
Сколько на самом деле стоит AI coding agent?
Вот тут интересные цифры сравнения стоимости подписки и доступа по API https://habr.com/ru/news/1046644/
Разрыв конечно впечатляет. Можно сказать, что по подписке нам дают AI практически бесплатно.
Возможно это так, но себестоимость мы не знаем.
Но это не так важно, основной вопрос - не закроют ли подписки, раз это так не выгодно для провайдеров LLM моделей.
На мой взгляд нет. Почему? Конкуренция.
Claude vs ChatGPT vs Gemini vs Grok.
Да, последние двое пока проигрывают, но сдаваться не собираются. И если один из них подписку отменит, то люди уйдут к конкуренту.
Но. Есть же ещё Китай.
Как минимум это Kimi, Qwen, GLM, Deepseek, Minimax.
Это ещё 5 конкурентов. Итого 9. У большинства есть подписки.
В общем - конкуренция - двигатель торговли. Возможно, подписки будут подкручивать - уменьшать лимиты. Но как по мне - отказаться от них не смогут.
Чему лично я буду очень рад)))
P.S. А что насчёт окупаемости? Мне видится, что все оплатят инвесторы - те, кто сейчас покупает акции Anthropic, Tesla и т.д
#ai
Вот тут интересные цифры сравнения стоимости подписки и доступа по API https://habr.com/ru/news/1046644/
Разрыв конечно впечатляет. Можно сказать, что по подписке нам дают AI практически бесплатно.
Возможно это так, но себестоимость мы не знаем.
Но это не так важно, основной вопрос - не закроют ли подписки, раз это так не выгодно для провайдеров LLM моделей.
На мой взгляд нет. Почему? Конкуренция.
Claude vs ChatGPT vs Gemini vs Grok.
Да, последние двое пока проигрывают, но сдаваться не собираются. И если один из них подписку отменит, то люди уйдут к конкуренту.
Но. Есть же ещё Китай.
Как минимум это Kimi, Qwen, GLM, Deepseek, Minimax.
Это ещё 5 конкурентов. Итого 9. У большинства есть подписки.
В общем - конкуренция - двигатель торговли. Возможно, подписки будут подкручивать - уменьшать лимиты. Но как по мне - отказаться от них не смогут.
Чему лично я буду очень рад)))
P.S. А что насчёт окупаемости? Мне видится, что все оплатят инвесторы - те, кто сейчас покупает акции Anthropic, Tesla и т.д
#ai
Два факта про безопасность AI.
Первый - есть исследование, где говорится, что 45% сгенерированного AI кода содержит классические программные уязвимости из OWASP Top 10 https://www.veracode.com/blog/genai-code-security-report/ Причем за 2 года с 23 по 25 год ситуация практически не изменилась. В отличие, например, от процента компилируемого кода.
Второй факт - сообщение агента вчера при работе с Claude Opus, процитирую:
Что меня удивило?
1) я не спрашивал агента про уязвимость
2) он понимает, что утечка токена на сервера Anthropic (не в репозиторий с кодом) - это все равно утечка
3) в сообщении мне секрет был замаскирован
4) он предлагает заменить токен мне самому
Лед тронулся)
А ведь тот же SAST\DAST и сканирование на секреты в CI pipeline никто не отменял.
Плюс скилы на проверку безопасности кода.
P.S. Я в посте немного сгустил краски, есть менее известное, но более новое исследование, где процент уязвимого кода у лучших моделей снизился до 24 - https://aclanthology.org/2026.acl-long.1107/
Что лишь подчеркивает мою мысль. Т.е статистика подтверждает изменения к лучшему.
P.P.S. Как бы не прийти к тому, что основной задачей разработчика станет получение и подстановка токенов)
#ai #security
Первый - есть исследование, где говорится, что 45% сгенерированного AI кода содержит классические программные уязвимости из OWASP Top 10 https://www.veracode.com/blog/genai-code-security-report/ Причем за 2 года с 23 по 25 год ситуация практически не изменилась. В отличие, например, от процента компилируемого кода.
Второй факт - сообщение агента вчера при работе с Claude Opus, процитирую:
Напоминаю по факту: я запустил sudo cat /etc/gitlab-runner/config.toml, чтобы проверить extra_hosts, и в выводе целиком приехала строка token = "glrt-X…". Надо было сразу grep -v token — дальше я так и делал, но эту строку уже не отменить.
Итог: токен в 2 файлах транскрипта сессий (~/.claude/projects/**.jsonl) плюс в бэкапе /etc/gitlab-runner/config.toml.bak.20260810, который создал я.
Главное, а не файлы на диске: он был в моём контексте, то есть ушёл в API Anthropic. Локальной утечкой это уже не назвать.
Дайте новый токен — впишу и перезапущу, privileged/volumes не тронув. Или сделайте сами, если не хотите гонять его через меня второй раз — что, учитывая причину ротации, разумнее.
Что меня удивило?
1) я не спрашивал агента про уязвимость
2) он понимает, что утечка токена на сервера Anthropic (не в репозиторий с кодом) - это все равно утечка
3) в сообщении мне секрет был замаскирован
4) он предлагает заменить токен мне самому
Лед тронулся)
А ведь тот же SAST\DAST и сканирование на секреты в CI pipeline никто не отменял.
Плюс скилы на проверку безопасности кода.
P.S. Я в посте немного сгустил краски, есть менее известное, но более новое исследование, где процент уязвимого кода у лучших моделей снизился до 24 - https://aclanthology.org/2026.acl-long.1107/
Что лишь подчеркивает мою мысль. Т.е статистика подтверждает изменения к лучшему.
P.P.S. Как бы не прийти к тому, что основной задачей разработчика станет получение и подстановка токенов)
#ai #security
Veracode
We Asked 100+ AI Models to Write Code. Here’s How Many Failed Security Tests. | Veracode
Application Security for the AI Era | Veracode
Новости стандартизации AI агентов
Я уже писал про плагины, они же расширения https://t.me/javaKotlinDevOps/614
И из этого поста видно, что стандартизации особой не было. Даже названия два.
И вот, стандарт появился - https://agent-plugins.org/
Стандартизируется структура папок и файлов, структура предлагается такая:
Есть возможность добавить в плагин скилы, MCP и описание.
Стандарт можно расширять: настройками в plugin.json и скриптами в com.example.client - хуки, например.
Расширения опциональны, AI агент может игнорировать, если не понимает формат.
Почему стандартизировали только skills и MCP?
Это уже зрелые стандарты, в отличие от хуков, субагентов, команд.
Хотя AGENTS.md тоже стандартизирован, но его поддержки почему-то нет.
И определились наконец с названием - все же плагины. Буду теперь их так называть)
Вот список поддерживающих стандарт AI агентов https://agent-plugins.org/compatible-clients
Из известных для разработки - Cursor, Codex, VSCode и Copilot.
Не хватает Claude Code, Gemini, Qwen.
Резюме - стандартизация неизбежна.
P.S. Но это не решает проблему - как одновременно пользоваться разными AI агентами. Папки то у них разные, и внутри не все стандартизировано. Но тут тоже есть наработки.
#ai #ai_agents
Я уже писал про плагины, они же расширения https://t.me/javaKotlinDevOps/614
И из этого поста видно, что стандартизации особой не было. Даже названия два.
И вот, стандарт появился - https://agent-plugins.org/
Стандартизируется структура папок и файлов, структура предлагается такая:
my-plugin/
├── plugin.json
├── skills/
│ └── summarize/
│ ├── SKILL.md
│ ├── scripts/
│ └── references/
├── mcp.json
└── com.example.client/
└── hooks/
Есть возможность добавить в плагин скилы, MCP и описание.
Стандарт можно расширять: настройками в plugin.json и скриптами в com.example.client - хуки, например.
Расширения опциональны, AI агент может игнорировать, если не понимает формат.
Почему стандартизировали только skills и MCP?
Это уже зрелые стандарты, в отличие от хуков, субагентов, команд.
Хотя AGENTS.md тоже стандартизирован, но его поддержки почему-то нет.
И определились наконец с названием - все же плагины. Буду теперь их так называть)
Вот список поддерживающих стандарт AI агентов https://agent-plugins.org/compatible-clients
Из известных для разработки - Cursor, Codex, VSCode и Copilot.
Не хватает Claude Code, Gemini, Qwen.
Резюме - стандартизация неизбежна.
P.S. Но это не решает проблему - как одновременно пользоваться разными AI агентами. Папки то у них разные, и внутри не все стандартизировано. Но тут тоже есть наработки.
#ai #ai_agents
Telegram
(java || kotlin) && devOps
Расширим AI агента?)
Я про extension, они же plugins.
По сути это способ упаковки обвязки - скилов, команд, субагентов, промтов, хуков и MCP серверов.
Единого стандарта нет. Да что там, названия даже единого нет) Но делает плагин плагином по сути один файлик…
Я про extension, они же plugins.
По сути это способ упаковки обвязки - скилов, команд, субагентов, промтов, хуков и MCP серверов.
Единого стандарта нет. Да что там, названия даже единого нет) Но делает плагин плагином по сути один файлик…
Тренды агентостроения.
Уже был пост про общие команды у топовых coding агентов https://t.me/javaKotlinDevOps/603
Так вот, на примере Claude Code и Codex появился новый кандидат на унификацию.
Встречаем ... /import
Что именно импортируется?
Оба умеют импортировать скилы, файлы контекста (напомню, Claude еще не поддерживает AGENTS.md, поэтому импорт пока актуален), MCP, команды и субагенты.
Codex еще умеет импортировать хуки, настройки, плагины, проекты и чаты. В общем практически все.
Импортируют у друг друга, а еще Claude у Gemini, а Codex у Cursor. Видимо, именно их считают основными конкурентами.
Другие агенты импортировать не умеют, пока что, и я уверен, скоро подтянутся)
Почему решил обратить внимание на эту команду.
1) конкуренция между агентами и стоящими за ними LLM моделями усиливается. Покупка Grok-ом Cursor-а в эту же копилку.
2) стандартизации пока нет - субагенты, команды, хуки, настройки, проекты и история чатов - явные кандидаты
3) как решение для одновременной работы в нескольких агентах - лучше, чем ничего, но не идеально. Т.к. при любом изменении в любом из агентов нужен новый ручной импорт и не факт, что он ничего не поломает.
4) ну а переход от одного агента к другому конечно же сильно облегчается
#ai #ai_agents
Уже был пост про общие команды у топовых coding агентов https://t.me/javaKotlinDevOps/603
Так вот, на примере Claude Code и Codex появился новый кандидат на унификацию.
Встречаем ... /import
Что именно импортируется?
Оба умеют импортировать скилы, файлы контекста (напомню, Claude еще не поддерживает AGENTS.md, поэтому импорт пока актуален), MCP, команды и субагенты.
Codex еще умеет импортировать хуки, настройки, плагины, проекты и чаты. В общем практически все.
Импортируют у друг друга, а еще Claude у Gemini, а Codex у Cursor. Видимо, именно их считают основными конкурентами.
Другие агенты импортировать не умеют, пока что, и я уверен, скоро подтянутся)
Почему решил обратить внимание на эту команду.
1) конкуренция между агентами и стоящими за ними LLM моделями усиливается. Покупка Grok-ом Cursor-а в эту же копилку.
2) стандартизации пока нет - субагенты, команды, хуки, настройки, проекты и история чатов - явные кандидаты
3) как решение для одновременной работы в нескольких агентах - лучше, чем ничего, но не идеально. Т.к. при любом изменении в любом из агентов нужен новый ручной импорт и не факт, что он ничего не поломает.
4) ну а переход от одного агента к другому конечно же сильно облегчается
#ai #ai_agents
Telegram
(java || kotlin) && devOps
Немножко про стандартизацию CLI агентов.
Сравнил слэш-команды у четверки наиболее популярных\актуальных: Claude\Codex\Gemini\Qwen.
Рабочий цикл:
/init - инициализация контекста - есть у всех
/plan - режим планирования, без выполнения - есть у всех
/goal…
Сравнил слэш-команды у четверки наиболее популярных\актуальных: Claude\Codex\Gemini\Qwen.
Рабочий цикл:
/init - инициализация контекста - есть у всех
/plan - режим планирования, без выполнения - есть у всех
/goal…
Можно ли чему-то научиться у AI?
Базовый ответ - да, т.к. в LLM в процессе обучения попало множество документации и кода, который я, например, никогда не видел.
Да, в сжатом виде, возможно искаженном, но в любом случае это огромный объем знаний.
Но я сейчас про более конкретные вещи.
Например, тесты.
Ключевой момент, что агент пишет десятки тестов на каждую фичу.
Кроме стандартных unit и интеграционных я заметил парочку новых типов.
1) тесты на миграцию БД - включая откат миграции. Простые, накатывают миграцию, проверяют, что новый объект появился\исчез в БД. Польза не то, чтобы большая, но есть. Ломаться часто не должны, т.к. каждый такой тест проверяет свою версию БД.
2) AST тесты - т.е. тесты с синтаксическим анализатором кода, проверяющие, что в методе не делается что-то лишнее. Или делается что-то обязательное. Часто такие тесты можно реализовать передачей в тестируемый метод spy-объекта. Но не всегда. Для меня было открытием. Самому такие тесты писать сложно, AI - примерно также, как и другие. Тесты скорее всего будут хрупкими, т.к. зависят от структуры кода. Но для проверки отдельных ключевых инвариантов проекта, над которым работает множество людей - это лучше, чем JavaDoc.
3) тесты, проверяющие документацию, генерация которой - тоже функция приложения. Например, admin guide. Наличие, формат. Тоже свежая мысль, IMHO. Самому - точно руки бы не дошли до таких тестов, а с AI - почему бы и нет.
Последний кейс пограничный - то же самое можно сделать и скилом. И такие приемочные скилы (они же evals) - это тоже своего рода тесты, просто реализованные в другой форме. Просто они могут не просто вызвать скрипт, а еще и проверять требования к проекту с помощью LLM. И даже в случае LLM, которая недетермирована, это лучше, чем просто пару строк в README.md.
#ai #ai_agents #testing
Базовый ответ - да, т.к. в LLM в процессе обучения попало множество документации и кода, который я, например, никогда не видел.
Да, в сжатом виде, возможно искаженном, но в любом случае это огромный объем знаний.
Но я сейчас про более конкретные вещи.
Например, тесты.
Ключевой момент, что агент пишет десятки тестов на каждую фичу.
Кроме стандартных unit и интеграционных я заметил парочку новых типов.
1) тесты на миграцию БД - включая откат миграции. Простые, накатывают миграцию, проверяют, что новый объект появился\исчез в БД. Польза не то, чтобы большая, но есть. Ломаться часто не должны, т.к. каждый такой тест проверяет свою версию БД.
2) AST тесты - т.е. тесты с синтаксическим анализатором кода, проверяющие, что в методе не делается что-то лишнее. Или делается что-то обязательное. Часто такие тесты можно реализовать передачей в тестируемый метод spy-объекта. Но не всегда. Для меня было открытием. Самому такие тесты писать сложно, AI - примерно также, как и другие. Тесты скорее всего будут хрупкими, т.к. зависят от структуры кода. Но для проверки отдельных ключевых инвариантов проекта, над которым работает множество людей - это лучше, чем JavaDoc.
3) тесты, проверяющие документацию, генерация которой - тоже функция приложения. Например, admin guide. Наличие, формат. Тоже свежая мысль, IMHO. Самому - точно руки бы не дошли до таких тестов, а с AI - почему бы и нет.
Последний кейс пограничный - то же самое можно сделать и скилом. И такие приемочные скилы (они же evals) - это тоже своего рода тесты, просто реализованные в другой форме. Просто они могут не просто вызвать скрипт, а еще и проверять требования к проекту с помощью LLM. И даже в случае LLM, которая недетермирована, это лучше, чем просто пару строк в README.md.
#ai #ai_agents #testing
Заметки про LiteLLM.
Во-первых - это не LLM) Это SDK, предоставляющий унифицированный доступ к LLM провайдерам - типа Spring AI - и AI прокси.
Вот второй use case и рассмотрим.
Для чего нужна прокси?
1) независимый от провайдера подсчет токенов. В теории и стоимости токенов, если это API тарифы. Т.к. у подписок свои абстрактные единицы измерения. Даже если они называются одинаково - кредиты - они не равны между собой и не переводимы в токены.
2) конвертация API, например, Anthropic-OpenAI, для тех провайдеров, кто не поддерживает Anthropic API нативно. На всякий случай - единого API к разным LLM нет, несмотря на некую похожесть. Ну и OpenAI API наиболее распространен сейчас, т.к. они были первые.
3) единая точка для настройки различных провайдеров LLM - URL, секреты, список доступных моделей. И, соответственно, легкое переключение между провайдерами.
Это мои кейсы, а еще можно организовать многопользовательский доступ, лимиты, подключить для всех MCP серверы и даже умную балансировку между моделями. Последнее особо интересно, но руки пока не дошли.
Теперь собственно заметки:
1) поддерживает подписки Anthropic и вроде бы OpenAI. Ну и API ключи, но это опция по умолчанию. Важно отметить, что все китайцы дают доступ к своим подпискам по API ключу - Qwen, Kimi, GLM. А вот у Claude и OpenAI подписка = OAuth авторизация, которую несколько сложнее проксировать из-за наличия нескольких ключей и их постоянной ротации. А подписки - это наше все, цена в 4-10 раз дешевле, чем при оплате за токены у одного и того же провайдера.
2) документация - отстой
3) есть UI, там можно смотреть логи, статистику, настраивать модели, проверять их доступность. Логировать может как в формате access logs, так и с данными - последнее включается отдельно
4) есть своя база моделей и провайдеров, но ориентация на американский рынок, китайских провайдеров мало
5) большая часть проблем возникает на стыке агента и прокси. Хотя этот момент в документации постарались раскрыть - вот пример отдельная статья по подключению Claude с подпиской https://docs.litellm.ai/docs/tutorials/claude_code_max_subscription
Ну и на примере этой же статьи можно разобрать ряд проблем:
1) в заголовке статьи явно указана Claude Max, что сразу вызывает вопрос о Pro подписке. А она работает)
2) названия моделей. Они устаревшие, при этом они подаются как список поддерживаемых моделей. На самом деле поддерживаются все актуальные, это же обычный прокси.
3) LITELLM_MASTER_KEY - что это, зачем, как генерировать? Генерировать, к слову, также, как и другие виртуальные ключи - из консоли или в UI. Но виртуальные ключи - это способ разделения трафика от разных агентов в отчетах, а зачем нужен мастер ключ?
4) судя по статье для Anthropic - как преднастроенного провайдера - API endpoint указывать не нужно... Это собственно была главная проблема. Пока я не указал url явно - прокся отправляла запросы по подписке сама на себя, выдавала ошибку аутентификации 401, т.к. второй запрос шел с кредами Anthropic, а не со своими. А ошибка аутентификации вводила в заблуждение, т.к. говорила, что не найден ключ для LiteLLM. И более того, эта ошибка была обвернута в (видимо) стандартную ошибку - что-то типа выбранная модель не настроена. Что еще больше вводило в заблуждение, т.к. она же настроена по инструкции) Еще больше ввела в заблуждение весенняя новость о запрете использования подписки Claude в сторонних агентах и контроле агента на стороне сервера. Я уже начал думать, что и прокси зарубили, но нет)
Ну и самое главное на стыке агента и прокси, в моем случае Claude Code:
1) у Claude Code есть 2 режима работы - OAuth и API токены. Переключает их наличие переменной среды ANTHROPIC_AUTH_TOKEN. В целом понятно, но об этом нужно помнить. Секрет LiteLLM либо в ANTHROPIC_AUTH_TOKEN (API), либо в ANTHROPIC_CUSTOM_HEADERS (OAuth). Рабочая схема - завести отдельный shell скрипт для API режима.
2) у Claude Code есть model discovery (включается CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1) - запрос доступных моделей у провайдера, прокси в нашем случае. Но агент запоминает только модели, начинающиеся с claude. Зачем, почему - хз. Но пришлось заводить claude-deepseek и т.д)
3) discovery запускается только для API режима. Это логично. И сохраняет список моделей при дальнейшей работе в любом режиме
4) агент не умеет запрашивать характеристики модели, в частности размер контекстного окна. А от его размера зависит в какой момент запустится автосжатие. А для неизвестных агенту моделей (всех в нашем случае) агент считает размер контекста равным 200к токенов. Все способы настройки выглядят как костыли https://code.claude.com/docs/en/model-config#correct-the-window-for-a-gateway-or-custom-model-id Я завел каждую модель с контекстом более 1m в 2 экземплярах - с суффиксом [1m] и без. Первая удобнее, вторая - дешевле. Отображаются в агенте они криво, но главное - работает.
Stay tuned, об остальном позже.
#ai #ai_agents
Во-первых - это не LLM) Это SDK, предоставляющий унифицированный доступ к LLM провайдерам - типа Spring AI - и AI прокси.
Вот второй use case и рассмотрим.
Для чего нужна прокси?
1) независимый от провайдера подсчет токенов. В теории и стоимости токенов, если это API тарифы. Т.к. у подписок свои абстрактные единицы измерения. Даже если они называются одинаково - кредиты - они не равны между собой и не переводимы в токены.
2) конвертация API, например, Anthropic-OpenAI, для тех провайдеров, кто не поддерживает Anthropic API нативно. На всякий случай - единого API к разным LLM нет, несмотря на некую похожесть. Ну и OpenAI API наиболее распространен сейчас, т.к. они были первые.
3) единая точка для настройки различных провайдеров LLM - URL, секреты, список доступных моделей. И, соответственно, легкое переключение между провайдерами.
Это мои кейсы, а еще можно организовать многопользовательский доступ, лимиты, подключить для всех MCP серверы и даже умную балансировку между моделями. Последнее особо интересно, но руки пока не дошли.
Теперь собственно заметки:
1) поддерживает подписки Anthropic и вроде бы OpenAI. Ну и API ключи, но это опция по умолчанию. Важно отметить, что все китайцы дают доступ к своим подпискам по API ключу - Qwen, Kimi, GLM. А вот у Claude и OpenAI подписка = OAuth авторизация, которую несколько сложнее проксировать из-за наличия нескольких ключей и их постоянной ротации. А подписки - это наше все, цена в 4-10 раз дешевле, чем при оплате за токены у одного и того же провайдера.
2) документация - отстой
3) есть UI, там можно смотреть логи, статистику, настраивать модели, проверять их доступность. Логировать может как в формате access logs, так и с данными - последнее включается отдельно
4) есть своя база моделей и провайдеров, но ориентация на американский рынок, китайских провайдеров мало
5) большая часть проблем возникает на стыке агента и прокси. Хотя этот момент в документации постарались раскрыть - вот пример отдельная статья по подключению Claude с подпиской https://docs.litellm.ai/docs/tutorials/claude_code_max_subscription
Ну и на примере этой же статьи можно разобрать ряд проблем:
1) в заголовке статьи явно указана Claude Max, что сразу вызывает вопрос о Pro подписке. А она работает)
2) названия моделей. Они устаревшие, при этом они подаются как список поддерживаемых моделей. На самом деле поддерживаются все актуальные, это же обычный прокси.
3) LITELLM_MASTER_KEY - что это, зачем, как генерировать? Генерировать, к слову, также, как и другие виртуальные ключи - из консоли или в UI. Но виртуальные ключи - это способ разделения трафика от разных агентов в отчетах, а зачем нужен мастер ключ?
4) судя по статье для Anthropic - как преднастроенного провайдера - API endpoint указывать не нужно... Это собственно была главная проблема. Пока я не указал url явно - прокся отправляла запросы по подписке сама на себя, выдавала ошибку аутентификации 401, т.к. второй запрос шел с кредами Anthropic, а не со своими. А ошибка аутентификации вводила в заблуждение, т.к. говорила, что не найден ключ для LiteLLM. И более того, эта ошибка была обвернута в (видимо) стандартную ошибку - что-то типа выбранная модель не настроена. Что еще больше вводило в заблуждение, т.к. она же настроена по инструкции) Еще больше ввела в заблуждение весенняя новость о запрете использования подписки Claude в сторонних агентах и контроле агента на стороне сервера. Я уже начал думать, что и прокси зарубили, но нет)
Ну и самое главное на стыке агента и прокси, в моем случае Claude Code:
1) у Claude Code есть 2 режима работы - OAuth и API токены. Переключает их наличие переменной среды ANTHROPIC_AUTH_TOKEN. В целом понятно, но об этом нужно помнить. Секрет LiteLLM либо в ANTHROPIC_AUTH_TOKEN (API), либо в ANTHROPIC_CUSTOM_HEADERS (OAuth). Рабочая схема - завести отдельный shell скрипт для API режима.
2) у Claude Code есть model discovery (включается CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1) - запрос доступных моделей у провайдера, прокси в нашем случае. Но агент запоминает только модели, начинающиеся с claude. Зачем, почему - хз. Но пришлось заводить claude-deepseek и т.д)
3) discovery запускается только для API режима. Это логично. И сохраняет список моделей при дальнейшей работе в любом режиме
4) агент не умеет запрашивать характеристики модели, в частности размер контекстного окна. А от его размера зависит в какой момент запустится автосжатие. А для неизвестных агенту моделей (всех в нашем случае) агент считает размер контекста равным 200к токенов. Все способы настройки выглядят как костыли https://code.claude.com/docs/en/model-config#correct-the-window-for-a-gateway-or-custom-model-id Я завел каждую модель с контекстом более 1m в 2 экземплярах - с суффиксом [1m] и без. Первая удобнее, вторая - дешевле. Отображаются в агенте они криво, но главное - работает.
Stay tuned, об остальном позже.
#ai #ai_agents
docs.litellm.ai
Using Claude Code with a Claude Subscription (Pro, Max, Team, Enterprise) | liteLLM
Route Claude Code traffic signed in with a Claude Pro, Max, Team, or Enterprise subscription through LiteLLM AI Gateway.
Заметки по LiteLLM - вторая часть.
1) в лучших традициях open-source из коробки LiteLLM запускается на 0:0:0:0 - т.е. доступна снаружи. Решается параметром
2) логирование ошибок на троечку - вместо одного конкретного сообщения они логируют исключения на нескольких уровнях, в итоге часть сообщений об ошибках нужно просто игнорировать. В debug режиме много дублирования - одно и тоже http сообщение появляется в логах несколько раз. Справедливости ради, как раз debug режим позволил мне найти причину ошибки с зацикливанием запроса на прокси.
3) очевидно, чтобы хранить статистику - нужна БД. В инструкции по инсталляции об этом сказано вскользь. Как и том, что кроме отдельной database еще нужно ставить Prisma - Node.js ORM с функционалом миграции БД. Это при том, что приклад написан на Python. И более того - из исходников Prisma нужно собрать бинарь для накатывания миграции. Как это сделать - я выяснил с AI-шкой.
4) цену запросов для неизвестных для системы провайдеров LLM можно вбить прямо в config.yaml - файл настроек. Это хорошо. Плохо то, что после этого LiteLLM все равно будет ругаться на отсутствующие тарифы. Т.е. понять что все работает можно запустив агента и посмотрев статистику по тарифам
5) для подписки Anthropic стоимость считается по тарифам API. На первый взгляд странно. Но с другой стороны - у подписки вообще нет стоимости токена, вместо этого есть оставшийся лимит. А видеть стоимость полезно для оценки насколько выгодна подписка.
6) LiteLLM смешивает понятие формат API и провайдер. Т.е. невозможно задать провайдер Deepseek и формат API Anthropic. В данном примере:
оба этих параметра определяются по model: anthropic/
Т.е. либо преобразуем формат в OpenAI (как нативный формат Deepseek) и есть раздельный учет по провайдерам в статистике, либо без преобразований, но все сидят на одном провайдере.
7) есть важная настройка
Она позволяет пробрасывать к провайдеру клиентские заголовки, начинающиеся с x-.
Нужна, например, для пробрасывания заголовков Claude Code со списком поддерживаемых клиентом фичей.
Вроде бы все хорошо, штука полезная.
Но как выяснилось при разборе логов - в процессе пробрасывания есть фильтрация (вырезание) неизвестных для LiteLLM заголовков.
Как я понял, это нужно, чтобы резать заголовки с секретами, которые клиент шлет, а в LLM провайдер передавать нельзя по каким-то (каким?) причинам.
Резали бы только свои заголовки, типа
Это еще пол-беды. Плохо то, что ни отключить, ни настроить эту фильтрацию нельзя.
Сейчас у меня все работает, но учитывая борьбу того же Anthropic с не-родными клиентами - потенциально опасная штука.
Получилось как список проблем, но конечно же есть и плюсы)
#ai #ai_agents
1) в лучших традициях open-source из коробки LiteLLM запускается на 0:0:0:0 - т.е. доступна снаружи. Решается параметром
--host 127.0.0.12) логирование ошибок на троечку - вместо одного конкретного сообщения они логируют исключения на нескольких уровнях, в итоге часть сообщений об ошибках нужно просто игнорировать. В debug режиме много дублирования - одно и тоже http сообщение появляется в логах несколько раз. Справедливости ради, как раз debug режим позволил мне найти причину ошибки с зацикливанием запроса на прокси.
3) очевидно, чтобы хранить статистику - нужна БД. В инструкции по инсталляции об этом сказано вскользь. Как и том, что кроме отдельной database еще нужно ставить Prisma - Node.js ORM с функционалом миграции БД. Это при том, что приклад написан на Python. И более того - из исходников Prisma нужно собрать бинарь для накатывания миграции. Как это сделать - я выяснил с AI-шкой.
4) цену запросов для неизвестных для системы провайдеров LLM можно вбить прямо в config.yaml - файл настроек. Это хорошо. Плохо то, что после этого LiteLLM все равно будет ругаться на отсутствующие тарифы. Т.е. понять что все работает можно запустив агента и посмотрев статистику по тарифам
5) для подписки Anthropic стоимость считается по тарифам API. На первый взгляд странно. Но с другой стороны - у подписки вообще нет стоимости токена, вместо этого есть оставшийся лимит. А видеть стоимость полезно для оценки насколько выгодна подписка.
6) LiteLLM смешивает понятие формат API и провайдер. Т.е. невозможно задать провайдер Deepseek и формат API Anthropic. В данном примере:
- model_name: deepseek-v4-flash
litellm_params:
model: anthropic/deepseek-v4-flash
api_base: https://api.deepseek.com/anthropic
оба этих параметра определяются по model: anthropic/
Т.е. либо преобразуем формат в OpenAI (как нативный формат Deepseek) и есть раздельный учет по провайдерам в статистике, либо без преобразований, но все сидят на одном провайдере.
7) есть важная настройка
general_settings:
forward_client_headers_to_llm_api: true
Она позволяет пробрасывать к провайдеру клиентские заголовки, начинающиеся с x-.
Нужна, например, для пробрасывания заголовков Claude Code со списком поддерживаемых клиентом фичей.
Вроде бы все хорошо, штука полезная.
Но как выяснилось при разборе логов - в процессе пробрасывания есть фильтрация (вырезание) неизвестных для LiteLLM заголовков.
Как я понял, это нужно, чтобы резать заголовки с секретами, которые клиент шлет, а в LLM провайдер передавать нельзя по каким-то (каким?) причинам.
Резали бы только свои заголовки, типа
x-litellm-api-key - ключ для аутентификации в LiteLLM.Это еще пол-беды. Плохо то, что ни отключить, ни настроить эту фильтрацию нельзя.
Сейчас у меня все работает, но учитывая борьбу того же Anthropic с не-родными клиентами - потенциально опасная штука.
Получилось как список проблем, но конечно же есть и плюсы)
#ai #ai_agents
❤1
Еще про стандартизацию AI.
Как говорил ранее - стандарта для настроек агентов сейчас нет.
.claude, .codex, .qwen, .gigacode, и внутри структура немножко отличается, как минимум название файла с контекстом и расположение настроек MCP.
Когда же наступит счастье, в смысле стандартизация?
Точно не скажу, но процесс идет)
Пока идет в разных направлениях, увы.
1) https://agentsstandard.com
2) https://dotagentsprotocol.com/
3) https://github.com/jackby03/agentic-collaboration-standard
4) https://github.com/bgreenwell/dotagents
И это я особо не искал)
у всех папка называется .agents, у всех внутри есть папка skills. Далее - разнообразие.
Из интересного - поддержка .agents есть в Kilo Code и Codex.
Из практических рекомендаций - вполне можно уже сейчас хранить скилы в .agents/skills тем более, что и сам формат скилов стандартизирован.
И делать симлинки на родные папки для несовместимых агентов.
#ai #ai_agents
Как говорил ранее - стандарта для настроек агентов сейчас нет.
.claude, .codex, .qwen, .gigacode, и внутри структура немножко отличается, как минимум название файла с контекстом и расположение настроек MCP.
Когда же наступит счастье, в смысле стандартизация?
Точно не скажу, но процесс идет)
Пока идет в разных направлениях, увы.
1) https://agentsstandard.com
2) https://dotagentsprotocol.com/
3) https://github.com/jackby03/agentic-collaboration-standard
4) https://github.com/bgreenwell/dotagents
И это я особо не искал)
у всех папка называется .agents, у всех внутри есть папка skills. Далее - разнообразие.
Из интересного - поддержка .agents есть в Kilo Code и Codex.
Из практических рекомендаций - вполне можно уже сейчас хранить скилы в .agents/skills тем более, что и сам формат скилов стандартизирован.
И делать симлинки на родные папки для несовместимых агентов.
#ai #ai_agents
Agentsstandard
Agents Standard
The AGENTS.md hierarchical configuration standard for AI agents.
Сколько стоит AI агент?
Для кого-то - бесплатно. Платит работодатель.
Кому-то хватает минимальной подписки. 20 баксов в месяц.
Ну или 2-3 минимальных подписки. Для переключения аккаунтов и агентов даже специальные утилиты придумали - CAAM — Coding Agent Account Manager и CASR — Cross-Agent Session Resumer.
Кому-то нужен план подороже - за примерно 100 баксов в месяц.
Подороже, но в целом не дорого. Ему в минус разве что увеличенная вероятность блокировки играет.
Но ведь есть ещё доступ по API. А там миллион входных токенов может стоить те же 20 баксов. Например, у ChatGPT Astra или Claude Fable. А хватит этот миллион на одну задачу. Да и то, декомпозированную)
Ладно, это все же топ модели.
А сколько будет в месяц стоить работа по API с обычными моделями тех же Claude и Codex?
Разница же навскидку многократная. Вдруг подписки прикроют. Датацентры же окупать надо)
Мой эксперимент - пустить трафик Claude подписки через LiteLLM прокси и поработать в обычном режиме 2 недели. Claude прокся всегда считает по API-ным тарифам.
Поработал. Примерно 700 баксов насчитал.
А у меня в параллель ещё Codex с ChatGPT с такой же нагрузкой и ценами. Т.е умножаем на 2.
И ещё на 2 чтобы месяц получить.
Уже 2800.
А ещё у меня на подхвате 2 китайские модели для кодинга по плану и в случаев, когда упираюсь в лимиты основных моделей. Баксов 100 накинуть надо.
Итого округлим 3000$.
А это между прочим зарплата миддла в России. Если ЗП белая - то затраты работодателя будут x2.
Для чего работодатель платит за AI? Чтобы было больше фичей. И чтобы сэкономить. Точно от внедрения AI не ждут повышения расходов в средне и долгосрочной перспективе.
А это значит, что чтобы дать топовые модели за "честную" стоимость 2 миддлам нужно уволить третьего(
И хочу подчеркнуть, что это не безлимит. Я с такой схемой периодически в лимиты упираюсь. Условный безлимит я думаю ещё в x2 обойдётся. Но тут важно понимать, что при разработке с AI свободное время вроде бы появляется, но при этом когнитивная нагрузка растёт. Поэтому брать больше задач в параллельную проработку сложно. Поэтому как оценка для миддла точно ок.
Вот такая вот дешёвая разработка AI. Пока подписки есть)
P.S. Для внутренних моделей тоже было бы интересно стоимость прикинуть.
P.P..S. Если покупать API через российских агрегаторов в белую то ещё 20% накинуть надо.
P...S. Плачу сейчас я в итоге 70-80 баксов в месяц
#ai
Для кого-то - бесплатно. Платит работодатель.
Кому-то хватает минимальной подписки. 20 баксов в месяц.
Ну или 2-3 минимальных подписки. Для переключения аккаунтов и агентов даже специальные утилиты придумали - CAAM — Coding Agent Account Manager и CASR — Cross-Agent Session Resumer.
Кому-то нужен план подороже - за примерно 100 баксов в месяц.
Подороже, но в целом не дорого. Ему в минус разве что увеличенная вероятность блокировки играет.
Но ведь есть ещё доступ по API. А там миллион входных токенов может стоить те же 20 баксов. Например, у ChatGPT Astra или Claude Fable. А хватит этот миллион на одну задачу. Да и то, декомпозированную)
Ладно, это все же топ модели.
А сколько будет в месяц стоить работа по API с обычными моделями тех же Claude и Codex?
Разница же навскидку многократная. Вдруг подписки прикроют. Датацентры же окупать надо)
Мой эксперимент - пустить трафик Claude подписки через LiteLLM прокси и поработать в обычном режиме 2 недели. Claude прокся всегда считает по API-ным тарифам.
Поработал. Примерно 700 баксов насчитал.
А у меня в параллель ещё Codex с ChatGPT с такой же нагрузкой и ценами. Т.е умножаем на 2.
И ещё на 2 чтобы месяц получить.
Уже 2800.
А ещё у меня на подхвате 2 китайские модели для кодинга по плану и в случаев, когда упираюсь в лимиты основных моделей. Баксов 100 накинуть надо.
Итого округлим 3000$.
А это между прочим зарплата миддла в России. Если ЗП белая - то затраты работодателя будут x2.
Для чего работодатель платит за AI? Чтобы было больше фичей. И чтобы сэкономить. Точно от внедрения AI не ждут повышения расходов в средне и долгосрочной перспективе.
А это значит, что чтобы дать топовые модели за "честную" стоимость 2 миддлам нужно уволить третьего(
И хочу подчеркнуть, что это не безлимит. Я с такой схемой периодически в лимиты упираюсь. Условный безлимит я думаю ещё в x2 обойдётся. Но тут важно понимать, что при разработке с AI свободное время вроде бы появляется, но при этом когнитивная нагрузка растёт. Поэтому брать больше задач в параллельную проработку сложно. Поэтому как оценка для миддла точно ок.
Вот такая вот дешёвая разработка AI. Пока подписки есть)
P.S. Для внутренних моделей тоже было бы интересно стоимость прикинуть.
P.P..S. Если покупать API через российских агрегаторов в белую то ещё 20% накинуть надо.
P...S. Плачу сейчас я в итоге 70-80 баксов в месяц
#ai
🔥2
Забавный факт, цитата:
AI context windows have grown from 512 tokens in 2017 to 2,000,000 tokens by 2026 (factor ~3,906; fitted lambda = 0.59/yr; doubling time ~14 months). Over the same period, human Effective Context Span (ECS) -- a token-equivalent measure derived from validated reading-rate meta-analysis (Brysbaert, 2019) and an empirically motivated Comprehension Scaling Factor -- has declined from approximately 16,000 tokens (2004 baseline) to an estimated 1,800 tokens (2026, extrapolated from longitudinal behavioural data ending 2020.
Или не забавный(
Отсюда: https://arxiv.org/abs/2603.26707
Хотя конечно же конкретное окно - лишь один из параметров, определяющих силу LLM. И 2 млн сейчас - это не эффективное окно, а максимальное. Но все равно сравнение интересное.
#ai
AI context windows have grown from 512 tokens in 2017 to 2,000,000 tokens by 2026 (factor ~3,906; fitted lambda = 0.59/yr; doubling time ~14 months). Over the same period, human Effective Context Span (ECS) -- a token-equivalent measure derived from validated reading-rate meta-analysis (Brysbaert, 2019) and an empirically motivated Comprehension Scaling Factor -- has declined from approximately 16,000 tokens (2004 baseline) to an estimated 1,800 tokens (2026, extrapolated from longitudinal behavioural data ending 2020.
Или не забавный(
Отсюда: https://arxiv.org/abs/2603.26707
Хотя конечно же конкретное окно - лишь один из параметров, определяющих силу LLM. И 2 млн сейчас - это не эффективное окно, а максимальное. Но все равно сравнение интересное.
#ai
arXiv.org
The Cognitive Divergence: AI Context Windows, Human Attention...
This paper documents and theorises a self-reinforcing dynamic between two measurable trends: the exponential expansion of large language model (LLM) context windows and the secular contraction of...
😱1
Блеск и нищета AI разработки.
Мне легко понять эйфорию менеджеров по поводу AI. Без разработчиков, в диалоге с AI можно создать работающее приложение. Только за токены плати. Ну да, конечно, надо выбрать workflow для разработки, evals настроить, контекст проекта. И, вуаля, роботы работают, отдыхает человек)
И сроки ускоряются.
Но ещё я использую AI для реальной разработки. Сделал свой workflow из двух фреймворков - OpenSpec и Superpowers. Написал свои evals скилы под каждый проект и универсальные. Настроил контексты - проектные и глобальный. Провожу ревью создаваемых спецификаций, смотрю код периодически. Разработка идёт конечно же быстрее. Но при этом я чётко понимаю, что качество кода ниже, чем если бы я его писал полностью руками.
Почему так?
Если свести все причины в одну, то может сформулировать так - очень сложно построить полноценный контекст проекта.
Сильная модель с 100% настроенными правилами работы в проекте с большой вероятностью написала бы код, близкий к моему. Но есть нюанс - 80+% правил находится в головах разработчиков. Некоторые из них разработчики не осознают как правила работы в проекте) И это как раз становится заметно, когда модель делает что-то не так. Конечно, чем больше работаешь над проектом с ИИ - тем больше эти правила будут формализаться. Но это не дни, скорее месяцы. К правилам относятся и ADR - когда-то принятые в проекте решения, которых надо придерживаться. И архитектурные и инфраструктурные требования компании. И многое другое.
Можно на эту проблему посмотреть с другой стороны. Воспомним количество принимаемых во время разработки решений.
Это могут быть десятки на простой фиче. При разработке с ИИ очевидно часть этих решений будет принимать агент. Иначе человек будет блокером в процессе. А чтобы агент принял правильное решение - под каждый кейс должно быть настроено правило. Рецепт если хотите. Если рецепта нет - модель примет решение сама. Может хорошее, а может увеличивающее техдолг и превращающее сервис в legacy.
Очевидно, что при разработке с ИИ не техническим специалистом эффект может нарастать лавинообразно.
Вывод - на данном этапе развития разработки с ИИ мы
1) либо жертвуем скоростью работы и тогда возникает вопрос - зачем нам вообще ИИ
2) либо что более вероятно - жертвуем качеством кода. И хорошо если сервис маленький - тогда его можно просто переписать. Или прототип - тут конечно ИИ идеален.А если нет?
Может возникнуть вопрос - не забыл ли я про третью переменную - деньги?
И да, и нет.
Дорогая модель не гарантирует качественный код. Хотя может его улучшить, особенно при применении на этапе проектирования.
Речь про выбор точек на трех осях - качество, скорость, деньги. А harness - его нужно постоянно настраивать.
#ai
Мне легко понять эйфорию менеджеров по поводу AI. Без разработчиков, в диалоге с AI можно создать работающее приложение. Только за токены плати. Ну да, конечно, надо выбрать workflow для разработки, evals настроить, контекст проекта. И, вуаля, роботы работают, отдыхает человек)
И сроки ускоряются.
Но ещё я использую AI для реальной разработки. Сделал свой workflow из двух фреймворков - OpenSpec и Superpowers. Написал свои evals скилы под каждый проект и универсальные. Настроил контексты - проектные и глобальный. Провожу ревью создаваемых спецификаций, смотрю код периодически. Разработка идёт конечно же быстрее. Но при этом я чётко понимаю, что качество кода ниже, чем если бы я его писал полностью руками.
Почему так?
Если свести все причины в одну, то может сформулировать так - очень сложно построить полноценный контекст проекта.
Сильная модель с 100% настроенными правилами работы в проекте с большой вероятностью написала бы код, близкий к моему. Но есть нюанс - 80+% правил находится в головах разработчиков. Некоторые из них разработчики не осознают как правила работы в проекте) И это как раз становится заметно, когда модель делает что-то не так. Конечно, чем больше работаешь над проектом с ИИ - тем больше эти правила будут формализаться. Но это не дни, скорее месяцы. К правилам относятся и ADR - когда-то принятые в проекте решения, которых надо придерживаться. И архитектурные и инфраструктурные требования компании. И многое другое.
Можно на эту проблему посмотреть с другой стороны. Воспомним количество принимаемых во время разработки решений.
Это могут быть десятки на простой фиче. При разработке с ИИ очевидно часть этих решений будет принимать агент. Иначе человек будет блокером в процессе. А чтобы агент принял правильное решение - под каждый кейс должно быть настроено правило. Рецепт если хотите. Если рецепта нет - модель примет решение сама. Может хорошее, а может увеличивающее техдолг и превращающее сервис в legacy.
Очевидно, что при разработке с ИИ не техническим специалистом эффект может нарастать лавинообразно.
Вывод - на данном этапе развития разработки с ИИ мы
1) либо жертвуем скоростью работы и тогда возникает вопрос - зачем нам вообще ИИ
2) либо что более вероятно - жертвуем качеством кода. И хорошо если сервис маленький - тогда его можно просто переписать. Или прототип - тут конечно ИИ идеален.А если нет?
Может возникнуть вопрос - не забыл ли я про третью переменную - деньги?
И да, и нет.
Дорогая модель не гарантирует качественный код. Хотя может его улучшить, особенно при применении на этапе проектирования.
Речь про выбор точек на трех осях - качество, скорость, деньги. А harness - его нужно постоянно настраивать.
#ai
👍7
Ещё про небезопасный AI)
Задача - запустить трафик в k8s с Istio через egress для 2 интеграций. Плюс egress отвечает за SSL origination. Обязательное условие: маршруты должны быть отдельными - порты и все манифесты.
Агент меня понял, обсудили делали, он написал спецификацию на основе моих вводных.
Вычитываю спецификацию... 2 VirtualService, 2 ServiceEntry... Вроде все ок. И вдруг - 2 ergress?!? Вопрос агенту - что это? Ответ: ну ты же просил разделить маршруты. Плюс у каждого маршрута в теории свои сертификаты, и т.об. мы физически разграничили доступ к ним.
Даже наша кибербеза никогда не была такой безопасной)
Агента удалось переубедить вопросом: интересно, с таким подходом - отдельный прокси на порт - сколько миллионов проксей в Google?)
Ладно, это скорее курьез. Но вот еще пример. Когда проектировали интеграцию с Vault агент предложил для каждого клиента - приклад и egress - сделать свой ServiceAccount. Развести по разным пользователям по сути. Ровно по той же причине - разграничить доступ к секретам. Кто до такого уровня безопасности доходил?)
Идея, кстати, хорошая, но есть минус - нужно прописывать все эти кастомные ServiceAccount в Vault. С default проще.
И вишенка на торте - агент не только предложил установить права на файл секрета 400 (это база), но ещё и на каталог с секретом 700 поставить. А в прикладе проверить эти права! Т.е такими правами мы запрещаем удаление и создание нового секрета каким-то взломанным sidecar-ом. Круто!
Но есть же ещё родительский каталог - /vault/secrets в случае Vault. И если там есть права на запись - уязвимость остаётся? Нет - в прикладе предлагается ещё и owner секрета проверять. А т.к у нас естественно runAsNonRoot: true и запрет повышения привилегий (это тоже база), то сменить пользователя невозможно. И если все сайдкары кроме Vault запускать под другим пользователем - подмену сразу будет видно.
P.S. Проверять за агентом конечно же нужно в любом случае
#ai
Задача - запустить трафик в k8s с Istio через egress для 2 интеграций. Плюс egress отвечает за SSL origination. Обязательное условие: маршруты должны быть отдельными - порты и все манифесты.
Агент меня понял, обсудили делали, он написал спецификацию на основе моих вводных.
Вычитываю спецификацию... 2 VirtualService, 2 ServiceEntry... Вроде все ок. И вдруг - 2 ergress?!? Вопрос агенту - что это? Ответ: ну ты же просил разделить маршруты. Плюс у каждого маршрута в теории свои сертификаты, и т.об. мы физически разграничили доступ к ним.
Даже наша кибербеза никогда не была такой безопасной)
Агента удалось переубедить вопросом: интересно, с таким подходом - отдельный прокси на порт - сколько миллионов проксей в Google?)
Ладно, это скорее курьез. Но вот еще пример. Когда проектировали интеграцию с Vault агент предложил для каждого клиента - приклад и egress - сделать свой ServiceAccount. Развести по разным пользователям по сути. Ровно по той же причине - разграничить доступ к секретам. Кто до такого уровня безопасности доходил?)
Идея, кстати, хорошая, но есть минус - нужно прописывать все эти кастомные ServiceAccount в Vault. С default проще.
И вишенка на торте - агент не только предложил установить права на файл секрета 400 (это база), но ещё и на каталог с секретом 700 поставить. А в прикладе проверить эти права! Т.е такими правами мы запрещаем удаление и создание нового секрета каким-то взломанным sidecar-ом. Круто!
Но есть же ещё родительский каталог - /vault/secrets в случае Vault. И если там есть права на запись - уязвимость остаётся? Нет - в прикладе предлагается ещё и owner секрета проверять. А т.к у нас естественно runAsNonRoot: true и запрет повышения привилегий (это тоже база), то сменить пользователя невозможно. И если все сайдкары кроме Vault запускать под другим пользователем - подмену сразу будет видно.
P.S. Проверять за агентом конечно же нужно в любом случае
#ai
🔥2
Хотел бы прокомментировать новость в следующем посте и выводы Алексея по ней.
Для начала - согласен с выводами.
Релиз PG задержался впервые за много лет не из-за того, что AI нашел баги в новых фичах (а раньше не находил). А потому, что с AI стало сильно легче искать и эксплуатировать уязвимости.
Раньше до нахождения уязвимости и появления риска проходили годы - сейчас недели.
И это еще одно подтверждение следующей мысли.
Главная проблема внедрения AI для разработчика не в том, что AI еще слаб, а менеджеры требуют больше фичей, обосновывая это требование появлением AI.
Точнее на данном этапе в отдельных командах это так, но это явление временное.
Т.к. AI улучшается.
Основная проблема в том, что сильный AI забирает у человека относительно простую работу - писать код. Подчеркну - относительно!
А вот самая трудная работа - проектирование и ревью - остается за человеком.
И ее станет сильно больше. Почему? AI пишет много кода)
Причем проблема сильнее именно в ревью - объем ревью растет сильнее, чем количество фичей и кода, т.к. LLM хороши в поиске уязвимостей.
В общем случае, чем больше этапов производственного процесса мы отдаем машине - тем сильнее растет объем ревью.
Когнитивная нагрузка растет.
Как ее уменьшить - писал выше, тут важно найти баланс между качеством и временем на ревью.
Что тоже является отдельной задачей, повышающей когнитивную нагрузку на разработчика)))
#ai #postgresql
Для начала - согласен с выводами.
Релиз PG задержался впервые за много лет не из-за того, что AI нашел баги в новых фичах (а раньше не находил). А потому, что с AI стало сильно легче искать и эксплуатировать уязвимости.
Раньше до нахождения уязвимости и появления риска проходили годы - сейчас недели.
И это еще одно подтверждение следующей мысли.
Главная проблема внедрения AI для разработчика не в том, что AI еще слаб, а менеджеры требуют больше фичей, обосновывая это требование появлением AI.
Точнее на данном этапе в отдельных командах это так, но это явление временное.
Т.к. AI улучшается.
Основная проблема в том, что сильный AI забирает у человека относительно простую работу - писать код. Подчеркну - относительно!
А вот самая трудная работа - проектирование и ревью - остается за человеком.
И ее станет сильно больше. Почему? AI пишет много кода)
Причем проблема сильнее именно в ревью - объем ревью растет сильнее, чем количество фичей и кода, т.к. LLM хороши в поиске уязвимостей.
В общем случае, чем больше этапов производственного процесса мы отдаем машине - тем сильнее растет объем ревью.
Когнитивная нагрузка растет.
Как ее уменьшить - писал выше, тут важно найти баланс между качеством и временем на ревью.
Что тоже является отдельной задачей, повышающей когнитивную нагрузку на разработчика)))
#ai #postgresql
Telegram
(java || kotlin) && devOps
Блеск и нищета AI разработки.
Мне легко понять эйфорию менеджеров по поводу AI. Без разработчиков, в диалоге с AI можно создать работающее приложение. Только за токены плати. Ну да, конечно, надо выбрать workflow для разработки, evals настроить, контекст…
Мне легко понять эйфорию менеджеров по поводу AI. Без разработчиков, в диалоге с AI можно создать работающее приложение. Только за токены плати. Ну да, конечно, надо выбрать workflow для разработки, evals настроить, контекст…
Давно не было провокационных постов от Егора Бугаенко на канале, ловите https://youtu.be/JRMnoQvFfKU
С чем хочется поспорить?
Первое и самое главное - не уверен, что AI разработка приведёт к исчезновению документации к коду. Аргумент Егора: раз код сейчас не читает человек, а машина быстро разбирается в любом коде - документация не нужна.
Тут сразу уточнение - я бы расширил понятие документация. Документация для меня это и Java, и тот же Openspec, и любые другие документы по архитектуре.
И я, кстати, вижу в AI чатах мнения, что OpenSpec не нужен. Так вот, если документацию убрать - получаем 2 проблемы:
1) ок, человек не читает код. Но ему все равно нужно что-то читать, если pull request не элементарный. Егор говорит о неких простых артефактах, из которых сразу видна суть изменений. Типа архитектурной схемы в yaml. Хорошо если такая есть, и она описывает все возможные изменения в проекте. Но если это невозможно - вот тебе новая SDD спецификация или дельта в существующую.
2) идея "код содержит всю правду" IMHO утопична. Причем не важно, кто писал этот код. Всегда есть исключения. Всегда есть то, что в код пока (!) не вошло. Намерения пользователя в конце концов. Этому место в документации.
Как по мне основная проблема сейчас - избегать дублирования в документации, делать ее компактной. Чтобы не было - одна и та же мысль есть и в JavaDoc, и ещё в 3 спеках. AI любит дублировать. А идея отказаться от документации вообще красива, но утопична.
Вторая спорная мысль - все PR делают роботы, разговаривать с ними не надо, делаем своих роботов для отсева кривых PR.
С одной стороны все к этому идёт. А с другой - PR появился из-за чьего-то намерения. Намерение остаётся за человеком. Канал для связи с этим человеком все равно нужен, пусть и не в рамках многодневной переписки в PR.
А вот над чем стоит подумать:
1) с увеличением числа изменений master будет ломаться чаще. Нужны правила для агентов по его автоматической починке.
2) большие pull request всегда были болью, останутся они болью и для AI агентов из-за context rot. Надо думать над тем, как автоматически бить задачи на более мелкие, с AI это сделать должно быть легче
3) настройка своего harness для контроля качества кода - это реально большая задача для всех команд на ближайшие годы.
#ai #dev
С чем хочется поспорить?
Первое и самое главное - не уверен, что AI разработка приведёт к исчезновению документации к коду. Аргумент Егора: раз код сейчас не читает человек, а машина быстро разбирается в любом коде - документация не нужна.
Тут сразу уточнение - я бы расширил понятие документация. Документация для меня это и Java, и тот же Openspec, и любые другие документы по архитектуре.
И я, кстати, вижу в AI чатах мнения, что OpenSpec не нужен. Так вот, если документацию убрать - получаем 2 проблемы:
1) ок, человек не читает код. Но ему все равно нужно что-то читать, если pull request не элементарный. Егор говорит о неких простых артефактах, из которых сразу видна суть изменений. Типа архитектурной схемы в yaml. Хорошо если такая есть, и она описывает все возможные изменения в проекте. Но если это невозможно - вот тебе новая SDD спецификация или дельта в существующую.
2) идея "код содержит всю правду" IMHO утопична. Причем не важно, кто писал этот код. Всегда есть исключения. Всегда есть то, что в код пока (!) не вошло. Намерения пользователя в конце концов. Этому место в документации.
Как по мне основная проблема сейчас - избегать дублирования в документации, делать ее компактной. Чтобы не было - одна и та же мысль есть и в JavaDoc, и ещё в 3 спеках. AI любит дублировать. А идея отказаться от документации вообще красива, но утопична.
Вторая спорная мысль - все PR делают роботы, разговаривать с ними не надо, делаем своих роботов для отсева кривых PR.
С одной стороны все к этому идёт. А с другой - PR появился из-за чьего-то намерения. Намерение остаётся за человеком. Канал для связи с этим человеком все равно нужен, пусть и не в рамках многодневной переписки в PR.
А вот над чем стоит подумать:
1) с увеличением числа изменений master будет ломаться чаще. Нужны правила для агентов по его автоматической починке.
2) большие pull request всегда были болью, останутся они болью и для AI агентов из-за context rot. Надо думать над тем, как автоматически бить задачи на более мелкие, с AI это сделать должно быть легче
3) настройка своего harness для контроля качества кода - это реально большая задача для всех команд на ближайшие годы.
#ai #dev
YouTube
Принципы, от которых нам пришлось отказаться
Доклад в ITGorky, 17 октября 2026, Нижний Новгород
Slides are here: https://speakerdeck.com/yegor256/seven-new-principles-of-software-engineering
Телеграм: https://t.me/yegor256news
Блог: https://www.yegor256.com
Twitter: https://twitter.com/yegor256…
Slides are here: https://speakerdeck.com/yegor256/seven-new-principles-of-software-engineering
Телеграм: https://t.me/yegor256news
Блог: https://www.yegor256.com
Twitter: https://twitter.com/yegor256…
💯1