惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
T
Threatpost
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
D
Docker
G
Google Developers Blog
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
The GitHub Blog
The GitHub Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
T
Troy Hunt's Blog
Webroot Blog
Webroot Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
F
Full Disclosure
B
Blog
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security
Know Your Adversary
Know Your Adversary
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
T
The Exploit Database - CXSecurity.com
博客园 - 聂微东
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
Recorded Future
Recorded Future
IT之家
IT之家
Project Zero
Project Zero
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
SecWiki News
SecWiki News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Claude Code это инициативный junior с памятью золотой рыбки. 5 правил контроля для production
Dmitry21 · 2026-04-28 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение8 мин

Охват и читатели233

Кейс

TL;DR

За один месяц я в одиночку написал и развернул production-систему регулярного анализа цен и продуктов на конкурентном рынке. Сейчас в системе ~25 источников разной природы, в плане до конца года - ~60. На текущей выборке ~6000 единиц данных о продуктах, на полной будет ~15000. Уже сделаны 814 unit-тестов, многоступенчатый matching с embeddings и LLM-as-judge на 4-компонентном скоринге, 89 спринтов (не знаю, о чем это говорит), 2000+ записей в decisions log, регрессионный фильтр на эталонных парах в CI. До этого пятнадцать лет я преимущественно управлял командами и бизнесами, код руками открывал раз в три года. Главный вывод: Claude Code это инициативный темпераментный junior с памятью золотой рыбки. Он умеет фигачить код пачками и предлагать решения, до которых senior дозревает за неделю, но без жесткого контроля разваливает любую систему сложнее MVP за две сессии. Ниже - пять правил, которые я выработал, и мое мнение, для каких задач этого хватает, а для каких нет.

Кто я

Карьеру в IT начал в 16 лет. Прошел путь от эникейщика до CEO IT-компании. По дороге был администратором Linux (даже разбираюсь в sendmail.cf), разработчиком на C++, Oracle DBA, тимлидом, руководителем разработки, бизнес-аналитиком. Двадцать с лишним лет в индустрии. Но последние годы управлял командами и бизнесами, а IDE открывал редко, и то чтобы сразу закрыть. Месяц назад взялся за проект, в котором не хотел нанимать команду: задача разовая по объему, но требует production-уровня инфраструктуры. Решил посмотреть, что LLM-инструменты дают такому как я с моим бэкграундом. Так в моей жизни появился Claude Code.

Что я построил

Задача: регулярный анализ цен и продуктов конкурентов. Это нужно финансам (ценовой бенчмарк), продуктовой команде (gap-анализ свойств продуктов) и продажам (УТП и battle cards). Снаружи задача звучит просто, по факту это полноценный проект.

  • Сбор данных: ~25 источников на разных движках (WordPress+Elementor, Tilda, Next.js+Apollo, Vue/Nuxt SPA, MODX, кастомные CMS). Каждый источник - уникальный сборщик: discovery → fetcher → recognition → postprocessing. Стек: requests + BeautifulSoup/lxml для статики, Playwright для JS-only страниц, API-first для встроенного JSON.

  • Хранилище: SQLite на dev с реляционной схемой, PostgreSQL в production.

  • Аналитика: gap-analysis, cannibalization, duration-benchmark, opportunity-map, price-benchmark, pricing-report - каждый отдельный CLI с экспортом в XLSX для HITL.

  • Matching: трехступенчатая система. Этап 1 - гибридный предварительный фильтр с 4-компонентным баллом + multilingual-e5-base embeddings. Этап 2 - LLM-as-judge для семантических граничных случаев. Этап 3 - агрегация с ручными переопределениями. Веса оптимизированы перебором по сетке 3×3×3×4 грубый + ±0.05 точный. Вычисление через предвычисленную матрицу - ~25 секунд на 70 опорных продуктов × 3700 кандидатов вместо 40-60 минут банального перебора. Достигнутый recall на эталонных парах: R1=91.1%.

  • Качество: 814 unit-тестов, регрессионные тесты на эталонных данных в CI, lifecycle верификации семплов, ежемесячная регрессия с порогом 1 п.п.

  • Production: VPS с PostgreSQL, cron на 2 запуска в неделю, автоматическая доставка отчетов по email.

Все писал я один с Claude Code в роли постоянного партнера.

Главный инсайт

На третьей неделе работы с Claude Code я поймал ощущение, которое не сразу смог назвать. Это было ровно то же самое, что я чувствовал, когда тимлидил молодую команду, среди которой был один особенный тип junior’а. Знаете, может? Энергичный, инициативный, с подвешенным языком. Делал за полчаса то, на что senior тратил два часа. Сам предлагал улучшения. Никогда не уставал, не обижался на критику. И при этом: не помнил вчерашнего разговора, регулярно соглашался «сделать это» и на следующий день делал не то, в порыве улучшения переписывал модуль, который никто не просил трогать. Если такого junior’а оставить без надзора на неделю, к концу недели у тебя три ветки, из которых работает одна, и никто не помнит, какая именно и почему.

Claude Code это ровно такой же тип. С двумя отличиями: он быстрее в десять раз, и в ноль не помнит, что вы обсуждали в предыдущей сессии. Открыл новый чат - у вас новый сотрудник. Имя то же, опыт тот же, контекст ушел. Без внешней памяти он начинает изобретать заново все подряд, и в production это означает гарантированную деградацию системы. Я выработал пять правил контроля. Без них этот junior разваливает любую систему сложнее MVP. С ними он становится инженером, который делает в день столько, сколько раньше команда из трех человек.

Правило 1. TDD до первой строчки кода

Стандартный TDD - вопрос вкуса. С LLM это не вопрос вкуса. Без теста, написанного до реализации, вы не отличите «Claude сделал то, что я просил» от «Claude сделал то, что компилируется и проходит его собственную интуицию». В моем проекте 814 unit-тестов, каждый написан до соответствующего кода. Регрессионные тесты на эталонных данных - отдельный пакет. Smoke-тесты на критичные пайплайны. Без этого LLM пишет «нормально», но «нормально» в production не работает: на крайних случаях уверенно галлюцинирует, в многослойных взаимодействиях упускает детали. Тест - это рамка, в которой LLM физически не может разбежаться. Если тест зеленый - как минимум одно ожидаемое поведение работает; если красный - вы знаете, где проблема. Без рамки вы доверяете самооценке модели, которая стабильно завышает свою уверенность.

Правило 2. Документация как внешняя память

Документация в эпоху LLM это не «ну хорошо бы». Это инфраструктура. Без нее каждая новая сессия начинается с нуля, и LLM с нуля изобретает архитектурные решения, которые вы уже принимали. В моем проекте документация устроена слоями.

  • CLAUDE.md в корне - контракт с моделью: стек, структура каталогов, команды запуска, жесткие правила.

  • architecture.md / data_model.md / parsing_guide.md - контракты внутри проекта: какие слои, какая схема, какие конвенции.

  • decisions_log.md - 2000+ записей формата «дата | решение | обоснование | альтернативы». Без него каждые две недели вы заново отвечаете на вопрос «почему SQLite на dev и Postgres на prod».

  • matching.md - 1500-строчный документ по эволюции matching pipeline и обоснованию 4-компонентных весов.

  • 89 sprint-планов. Каждый спринт - отдельный документ с задачами, метриками, итогами.

  • README в каждом каталоге парсера - особенности конкретного источника: движок, крайние случаи, политика парсинга.

Это выглядит избыточно для одного разработчика. Не фига это не избыточно для Claude. Это компенсация той памяти, которой у LLM нет.

Отдельно - методология спринтов. Каждый мой спринт начинается с трех компонентов: «Название», «Список задач», «Метрики качества». Заканчивается четырьмя: «Статус по метрикам», «Анализ результатов», «Обновление документации», «Merge в main». Без этих заборов спринт расползается, документация устаревает за две недели, в main висят feature-ветки, через месяц никто не помнит, что и зачем делалось. Спринты по matching дополнительно обязаны содержать quality baseline до и после спринта, плюс секцию ## Quality verification со сравнительной таблицей по каждой метрике. Регрессии допустимы только с явным обоснованием. Если recall регрессировал - спринт не мерджится.

Без этой дисциплины Claude Code перестает быть полезным примерно через 10-12 млн. токенов.

Правило 3. Регрессионные тесты на golden data

Специфика data-проектов и matching-систем, но идея переносится шире. У меня есть набор размеченных продактами «правильных» пар - опорный продукт и аналог конкурента. После каждого изменения в matching pipeline я запускаю скрипт quality_baseline, который вычисляет R1 / R2 / R3 (recall на разных подвыборках), C1 / C2 (consistency), G1 / G2 (стабильность эталонных пар). Сравниваю «до спринта» с «после». Если хоть одна метрика регрессирует - спринт не мерджится.

Без этого правила LLM любит «улучшить» код так, что pipeline продолжает работать, но качество деградирует. Я ловил это пять или шесть раз за месяц. Без регрессионного фильтра заметил бы через два спринта, когда уже поздно.

Правило 4. Code review с правилом «не понял - не мерджу»

Каждый коммит, сгенерированный Claude, я читаю целиком. Не «пробежал глазами» - реально читаю. Каждое непонятое место - будущий баг. Если я не могу объяснить себе, почему именно эта реализация, а не другая, я не мерджу: либо разбираюсь, либо переписываю. Никаких «потом разберусь». Это утомительно. Это медленнее, чем доверять. Но это и есть единственная защита от того, что Claude в порыве инициативы добавил кэширование, которое сломает согласованность кэша при параллельной работе. Или поменял интерфейс функции, которую вызывают пять других модулей. Или заменил потокобезопасное соединение на общее - а через неделю на CI все начнет падать с SIGSEGV.

Это не абстрактный пример. Реальный случай из спринта оптимизации matching: Claude разделил sqlite3.Connection на ThreadPoolExecutor (c=20 для скорости), и до нагрузочного теста никто не заметил - на macOS под нагрузкой стало стабильно падать. Фикс: соединение на каждый поток через threading.local(). После - 14-кратное ускорение при стабильности. Если бы пропустил ревью этого PR, поймали бы SIGSEGV в production.

Правило 5. Жесткие границы инициативы в промпте

Темпераментный junior хочет улучшать все. Если попросить «поправь баг в функции X», есть существенная вероятность, что заодно будут переименованы две переменные в соседнем модуле, добавлено логирование «которое все равно понадобится», и слегка отрефакторено наследование, потому что «так чище». Через неделю таких улучшений вы открываете diff и не понимаете, что изменилось. Решение - явные границы в каждом промпте. «Не предлагай рефакторинг», «не меняй интерфейс», «не добавляй логирование», «ничего, кроме явного запроса». У меня для серьезных задач шаблон промпта на полстраницы с границами и обязательным форматом отчета о сделанном. Это снимает 80% незаказанных изменений.

Темпераментность опасна: при контроле дает скорость, без контроля разваливает систему.

Граница метода: для серьезной разработки этого недостаточно

Claude Code снимает огромный кусок трения для инженера, который знает, что делает. Я могу за день написать парсер нового источника, потому что знаю архитектуру, помню стек, держу в голове политики качества. Я ставлю Claude задачи плотно, проверяю каждый pull request, и за месяц мой результат эквивалентен команде из двух-трех инженеров средней квалификации. Звучит великолепно, да? Но дальше начинаются оговорки и нюансы.

Если бы вместо меня сел человек без бэкграунда, у него получился бы MVP, который выглядит как production. Тесты были бы зеленые, потому что Claude генерирует тесты под код, а не под требование. Документация или отсутствовала бы, или была бы враньем. Регрессии не ловились бы, потому что не на чем. Через три месяца этот MVP стал бы кладбищем, в котором никто не понимает, что происходит. Я наблюдал такие кладбища в чужих репозиториях уже не один раз в прошлой айтишной жизни. Видимо, они теперь появляются массово.

Маркетинг LLM-инструментов продает сюжет «убийство профессии разработчика». В реальности профессия не умирает - она усложняется. Теперь middle и senior должны не только проектировать, тестировать и владеть архитектурой, но и постоянно управлять моделью, которая инициативно вносит изменения, на которые ее не просили. Это новая нагрузка, которую никто не считал в обещаниях про «ускорение производительности». Создание production-систем по-прежнему требует людей, которые умеют думать, и LLM не делает junior’а senior’ом. Он просто позволяет тому, кто уже умеет, делать быстрее. И только при условии жесткой дисциплины: TDD, документация, регрессии, ручное ревью, явные границы инициативы и так далее. Оговорюсь: я давно не брал “шашки в руки”, может я что-то и подзабыл.

Если кто-то рядом с вами называет LLM-инструменты «революцией в разработке» - спросите его, поддерживал ли он LLM-сгенерированный код в production хотя бы полгода. Если ответ «нет» - это не революционер, это адепт. Революция в производстве софта происходит не там, где код пишется быстрее, а там, где он работает дольше без переделок. С Claude Code пока ровно наоборот: код пишется в разы быстрее, а сопровождение - в разы дороже, чем кажется на момент сдачи MVP.

Серьезные системы пишут люди. Темпераментный инициативный junior помогает им быстрее доходить до результата. Для сайтиков, разовых утилит и автоматизаций своих задач этого хватает с запасом. Для всего, что должно жить дольше квартала, без senior’а на входе и на ревью у вас не получится продукт. У вас получится впечатление продукта.


Дмитрий Волошин, основатель Школы бизнеса Ninox, сооснователь и генеральный директор OTUS. Заметки про управление, найм и фаундерский опыт: t.me/coffee_notes