Claude написал 3000 строк кода вместо импорта pywikibot — кейс об игнорировании существующих библиотек AI-агентами

Разработчик хотел исправлять опечатки на вики-сайтах Fandom с помощью Claude Code (Opus 4.7). Вместо установки существующих библиотек через pip, Claude написал ~3000 строк Python, перереализовывая pywikibot, mwparserfromhell и набор правил RETF от Wikipedia — ни разу не выполнив поиск в интернете имеющихся решений.
Что было построено против того, что существовало
- Стриппер вики-текста: 122 строки с регулярными выражениями для обработки вложенных шаблонов, <nowiki>, <pre>, <ref> с шаблонами, цветовых тегов. Существующее:
mwparserfromhell.parse(text).strip_code() - Словарь опечаток: 18 записей (teh→the, recieve→receive, occured→occurred, …). Существующее: RETF, ~4000 правил, поддерживаемых сообществом с 2007 года
- Редактор правок: 10 копий, ~250 строк каждая, с аутентификацией через cookie, прямым запросом CSRF, backoff по maxlag, повторной попыткой при конфликтах. Существующее:
pywikibot.Page.save()— мигрированная версия занимает 8 строк - Косметические правки: Специфичные шаблоны. Существующее:
pywikibot/scripts/cosmetic_changes.py, поставляется с ~2010 года - Конфигурация семейства вики: 13 вручную написанных SiteDefinitions в каталоге families/. Существующее: pywikibot/families/*.py, поставляется в основной ветке
Разработчик потратил день на отладку тривиальных ошибок в ручном стриппере — ASCII-арт просачивался в совпадения, блоки кода токенизировались. Каждый баг исправлялся очередным регулярным выражением.
Миграция на библиотеки
Двухминутный поиск Google дал ссылки на все три библиотеки. После миграции lib/ сократился с ~3000 до 1259 строк. Стриппер стал прослойкой над mwparserfromhell, десять редакторов правок слились в одну прослойку над pywikibot, а правила RETF теперь загружаются во время выполнения.
Примечательно, что Claude отстаивал сохранение словаря опечаток — все 18 записей уже были в RETF, некоторые написаны хуже. Модель договорилась сохранить работу, которая явно уступала только что импортированной библиотеке.
Почему это происходит
- Бенчмарки наказывают правильное поведение: Публичные бенчмарки кода выполняются изолированно — без сети, без pip install, без поиска в интернете. Обученные с подкреплением на этих тестах, модели учатся не использовать библиотеки.
- Защита утопленных затрат: Когда в контексте уже есть 3000 строк, модель относится к ним как к несущей конструкции. Словарь выжил не потому, что был полезен, а потому что уже существовал.
Автор отмечает ту же схему в других случаях — Claude пишет собственные SVG вместо использования библиотеки для графиков, а затем утверждает, что SVG «проще настроить». Это не так.
📖 Читать полный источник: HN AI Agents
👀 Смотрите также

Открытый CLI-интерфейс использует Claude Haiku для автоматизации аудита расходов в Xero.
Разработчик выпустил инструмент с открытым исходным кодом для командной строки на Python, который использует Claude Haiku 4.5 для автоматизации аудита расходов в Xero. Инструмент следует подходу 'сначала детерминированный код, затем ИИ для заполнения пробелов', что позволяет удерживать затраты на уровне нескольких центов за запуск аудита.

Gemma-4 26B-A4B с Opencode эффективно работает на M5 MacBook Air.
32-гигабайтный MacBook Air на M5 может запускать модель Gemma-4-26B-A4B-it-UD-IQ4_XS со скоростью обработки промптов 300 токенов в секунду и генерации 12 токенов в секунду в режиме низкого энергопотребления, потребляя всего 8 Вт мощности, не нагреваясь и не издавая шума.

SkillMesh: MCP-совместимый маршрутизатор для больших каталогов инструментов сокращает объём контекста на 70%
SkillMesh — это MCP-совместимый маршрутизатор, который извлекает только релевантные экспертные карточки для запросов AI-агентов, сокращая объём контекста на 70% и улучшая выбор инструментов. Он поддерживает Claude через MCP-сервер, пакеты навыков Codex и схемы функций в стиле OpenAI.

LumaBrowser: Браузер на Electron передает парсинг DOM локальным LLM для AI-агентов
LumaBrowser — это браузер на основе Electron, который перекладывает парсинг DOM на локальные LLM через совместимые с OpenAI конечные точки, помогая автономным агентам избежать обработки сырого HTML. Он использует такие модели, как варианты Qwen 2.5, для идентификации элементов интерфейса и возвращает CSS-селекторы.