
sqlite-utils 4.0rc2: релиз, написанный ИИ за $149
Саймон Уиллисон выпустил sqlite-utils 4.0rc2 — Python-библиотеку для работы с SQLite, которую почти целиком написал Claude Fable за $149.25.
sqlite-utils 4.0rc2: релиз, написанный ИИ за $149
5 июля 2026 года Саймон Уиллисон (Simon Willison) — сооснователь Django и автор инструмента Datasette — опубликовал второй релиз-кандидат версии 4.0 своей популярной Python-библиотеки sqlite-utils (утилита командной строки и библиотека для работы с базами данных SQLite). Главная особенность релиза — бо́льшая часть кода и документации была написана не вручную, а с помощью AI-агента Claude Fable от Anthropic. Итоговый счёт составил около $149.25.
Это не просто технический релиз — это живая демонстрация того, как современные AI-агенты меняют рабочий процесс опытного разработчика с многолетним стажем.
Что такое sqlite-utils?
sqlite-utils — это открытая Python-библиотека и CLI-инструмент (интерфейс командной строки) для удобной работы с базами данных SQLite. Инструмент позволяет вставлять, обновлять, трансформировать данные, управлять миграциями (процессом обновления схемы базы данных) и выполнять SQL-запросы прямо из терминала или Python-кода.
# Пример: вставка CSV-файла в базу данных
sqlite-utils insert dogs.db dogs dogs.csv --csv
# Быстрый SQL-запрос прямо к CSV без создания файла БД
sqlite-utils memory dogs.csv "select name, age from stdin"
import sqlite_utils
db = sqlite_utils.Database("demo.db")
db["dogs"].insert_all([
{"id": 1, "name": "Барбос", "age": 4},
{"id": 2, "name": "Шарик", "age": 2},
], pk="id")
Claude Fable как соавтор релиза
Что такое Claude Fable?
Claude Fable — это флагманская модель Anthropic уровня Mythos, запущенная 9 июня 2026 года. Она позиционируется как инструмент для самых сложных и длительных задач: многодневных агентских сессий, крупных миграций кода, автономной разработки. Модель умеет писать собственные тесты, делегировать задачи субагентам и проверять результаты с помощью зрения (vision).
«Длительные и сложные задачи — именно там преимущество Fable 5 над другими моделями становится максимальным.» — Anthropic
Как Уиллисон использовал Fable
Уиллисон запустил сессию в Claude Code (веб-версии) прямо со своего iPhone с простым промптом: провести финальный обзор перед выходом стабильной версии 4.0 и выявить любые последние проблемы, которые могут стать несовместимыми изменениями.
Результат превзошёл ожидания: Fable обнаружил 5 блокирующих релиз проблем, которые автор сам не заметил.
delete_where(): метод выполнял DELETE через self.db.execute() без обёртки atomic(), что означало — данные никогда не фиксировались в транзакции и соединение «отравлялось». Аналогичный метод delete() был реализован корректно, а этот — нет.После того как Fable нашёл и исправил баги, Уиллисон пошёл дальше — попросил уже другую модель перепроверить результаты. Он использовал Codex Desktop и GPT-5.5 с заданием просмотреть изменения с момента предыдущего RC и подтвердить актуальность changelog. Это дало ещё два вопроса, достойных изучения.
Ключевые изменения в sqlite-utils 4.0rc2
Улучшения команды migrate
Команда sqlite-utils migrate (инструмент для управления миграциями схемы БД) получила важные исправления:
| Изменение | Старое поведение | Новое поведение |
|---|---|---|
--stop-before с неизвестным значением | Молча игнорировалось | Теперь выдаёт ошибку |
--stop-before со старым классом sqlite_migrate.Migrations | Работал некорректно | Исправлено |
--list | Создавал файл БД и таблицу трекинга | Только чтение, ничего не создаёт |
Новые методы управления транзакциями
Появились три новых метода для ручного управления транзакциями (единицами атомарных операций с БД) — как альтернатива контекстному менеджеру db.atomic():
db = sqlite_utils.Database("mydb.db")
# Ручное управление транзакцией
db.begin() # начать транзакцию
db["logs"].insert({"event": "start"})
db.commit() # зафиксировать изменения
# Или откатить при ошибке
db.rollback() # отменить все изменения
Также исправлено поведение автофиксации: запросы, выполняемые через db.execute(), теперь автоматически фиксируются — если только транзакция уже не открыта.
Порядок возврата применённых миграций
Метод migrations.applied() теперь возвращает миграции в том порядке, в котором они были применены, — а не в произвольном.
Совместимость с Python 3.12
Одним из неожиданных открытий стала проблема совместимости с режимом autocommit, появившимся в Python 3.12. Оказалось, что различное поведение соединений в этом режиме приводило к падению почти всего тестового набора. Уиллисон совместно с моделью исправил это, гарантировав стабильную работу библиотеки.
Новая документация
- Transactions and saving your changes — объясняет, как работают транзакции и когда изменения фиксируются
- Upgrading — новая страница с описанием изменений между мажорными версиями
Как был организован процесс
graph TD
A[Промпт: финальный обзор перед 4.0] --> B[Claude Fable: анализ кода]
B --> C{Найдены проблемы?}
C -- Да, 5 блокеров --> D[Fable: исправление багов]
D --> E[Fable: обновление changelog]
E --> F[GPT-5.5 / Codex Desktop: кросс-проверка]
F --> G{Новые проблемы?}
G -- Ещё 2 вопроса --> H[Fable: доработка]
G -- Нет --> I[Релиз sqlite-utils 4.0rc2]
H --> I
Один из интересных побочных эффектов: Уиллисон попросил Fable вести changelog (журнал изменений) в реальном времени — добавлять записи в секцию «Unreleased» по мере того, как изменения вносились. В результате история коммитов changelog стала лаконичным хронологическим отчётом о работе агента.
«Release notes are a great example of writing that I’m OK to outsource to agents because they need to be boring, predictable and accurate.» — Simon Willison
По мнению Уиллисона, заметки к релизу — идеальный тип текста для делегирования ИИ: они должны быть предсказуемыми, точными и, откровенно говоря, скучными. Здесь не нужна авторская индивидуальность, но нужна педантичная точность.
Контекст: «Фабелокалипсис» 7 июля
Уиллисон работал в режиме дедлайна — не технического, а коммерческого. Доступ к Claude Fable в рамках подписки Claude Max был ограничен: с 7 июля модель переходила на платный режим с тарификацией по токенам ($10 за миллион входящих, $50 за миллион исходящих).
Чтобы максимально использовать оставшееся «бесплатное» время, Уиллисон даже перешёл с плана Claude Max за $100/месяц на план за $200/месяц — ради увеличенного лимита Fable. И параллельно вёл несколько других крупных проектов с тем же агентом.
| Модель | Вход (за 1М токенов) | Выход (за 1М токенов) |
|---|---|---|
| Claude Haiku 4.5 | $1.00 | $5.00 |
| Claude Sonnet 4.6 | $3.00 | $15.00 |
| Claude Opus 4.8 | $5.00 | $25.00 |
| Claude Fable 5 | $10.00 | $50.00 |
Для справки: Fable вдвое дороже Opus 4.8 — ранее самой дорогой модели Anthropic.
Что это значит для разработчиков
Цифра $149.25 за существенный прирост функциональности в зрелой open-source библиотеке — показательна. Это не «ИИ написал Hello World». Это:
- Глубокий анализ кодовой базы
- Обнаружение нетривиальных багов с потерей данных
- Исправление проблем совместимости с новой версией Python
- Написание документации
- Ведение changelog в реальном времени
- Финальная кросс-валидация другими моделями
Если вы работаете с Python и SQLite, обновите sqlite-utils до 4.0rc2 и протестируйте в своём проекте. Особенно важно проверить работу транзакций и командs migrate, если вы использовали эти возможности в версии 3.x.
pip install sqlite-utils==4.0rc2
Саймон Уиллисон остаётся одним из самых честных и публичных исследователей рабочих процессов с AI-агентами. Его блог — редкий пример детального, без хайпа документирования реального использования LLM в профессиональной разработке. И sqlite-utils 4.0rc2 — очередное доказательство: будущее уже наступило, просто распределено неравномерно.
Источник: sqlite-utils 4.0rc2, mostly written by Claude Fable (for about $149.25) — Simon Willison’s Weblog