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")
ℹ Что такое SemVer?
SemVer (Semantic Versioning — семантическое версионирование) — соглашение об именовании версий вида MAJOR.MINOR.PATCH. Переход с 3.x на 4.0 означает наличие несовместимых изменений, поэтому Уиллисон так тщательно готовился к этому релизу.

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. Это дало ещё два вопроса, достойных изучения.

💡 Лайфхак: перекрёстная проверка моделей
Уиллисон признаётся, что раньше идея «проверять работу одной модели другой» казалась ему абсурдной. Но теперь это стало его рутинной практикой — он регулярно просит лучшую модель Anthropic проверить работу OpenAI и наоборот, потому что это регулярно даёт ценные результаты.

Ключевые изменения в 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