/ru/blog · материалы
Сравниваем два подхода к AI-разработке крупных проектов: Spec-Driven Development на текстовых спецификациях и граф задач beads. Контекст, токены, управление.

Каждый, кто пробовал собирать крупные проекты с помощью Claude Code, Cursor или локальных LLM-агентов, неизбежно упирался в стену контекста 🧱. Как только кодовая база разрастается дальше пары сотен строк, нейросеть начинает «забывать» архитектуру, плодить галлюцинации и ломать логику смежных модулей. Чтобы заставить ИИ работать системно, индустрия придумала Spec-Driven Development (SDD) - подход, где агент строго следует текстовым спецификациям. Но недавно Стив Йегги (тот самый ветеран Amazon и Google) выкатил альтернативу - инструмент beads, который предлагает управлять агентом не через прозу, а через явный граф зависимостей (DAG). Давайте разберемся, в чем разница между текстовым и графовым планированием для ИИ, и какой подход выигрывает на практике.
Популярные AI-фреймворки (например, agent-os) продвигают классический подход: сначала думай (пиши спеку), потом кодь. Контекст проекта бьется на слои и хранится в обычных Markdown-файлах:
🎯 mission.md - глобальная цель.
🗺️ roadmap.md - верхнеуровневый план.
⚙️ tech-stack.md - стек и ограничения. Нейросеть постоянно перечитывает эти файлы, пытается интерпретировать текст и на его основе генерирует конкретные шаги.
Слабое место этого подхода - управление потоком выполнения (Control Flow). Логика шагов скрыта внутри текста. Агент должен прочитать абзац, понять метафору или причинно-следственную связь и угадать, что делать дальше. Когда проект усложняется, файлы спецификаций раздуваются, начинают жрать драгоценные токены, а ИИ банально «уплывает» в галлюцинации, путая очередность задач.
Инструмент beads меняет парадигму. Вместо «спека-первее-всего» он предлагает подход «сначала задача» (Task-First). Вместо развесистого Markdown-текста используется строгий граф зависимостей. Архитектура .beads лаконична до предела:
📋 .beads/issues.jsonl - все задачи в один компактный JSON-line файл.
🗄️ .beads/db.sqlite - локальный кэш для моментальных запросов. Пример одной задачи в issues.jsonl:
{
"id": "house-scraper-01",
"title": "Implement Web Scraper",
"status": "open",
"dependencies": [{ "depends_on_id": "auth-module-02" }]
}
Управление потоком здесь явное. Вы (или сам ИИ на этапе планирования) связываете задачи жесткими ребрами графа через CLI:
bd dep add house-scraper-01 auth-module-02
# Теперь задача house-scraper-01 заблокирована, пока auth-module-02 не перейдет в closed
Когда вы открываете новую сессию с Claude Code или другим агентом, ему не нужно перечитывать ТЗ на 40 страниц. Он просто выполняет команду bd ready. Локальная база данных beads моментально просчитывает граф и отдает агенту только те P1-задачи, у которых нет активных блокеров. Агент физически не увидит задачу по парсингу, пока не напишет модуль авторизации. Контекст чист, фокус идеален.
| Критерий | Spec-Driven Development (SDD) | beads workflow |
|---|---|---|
| Философия | Spec-First. Спецификация порождает код. | Task-First. Граф задач рулит разработкой. |
| Поток управления | Неявный. Описан прозой в Markdown. Агент сам интерпретирует порядок. | Явный. Задан в виде ориентированного графа (DAG). Очередность жестко контролируется. |
| Расход токенов | Высокий. Большие текстовые файлы «жрут» контекстное окно. | Минимальный. Одна строка JSONL на задачу. ИИ видит только то, что актуально прямо сейчас. |
| Memory Span | Короткая память. При смене сессии контекст надо «прогревать» заново. | Длинная память. Проект зафиксирован в git-native базе данных. |
| Идеально для... | Проектирования сложных систем, где нужно сначала стабилизировать архитектурный замысел. | Быстрой и точной реализации, когда общая концепция фичи уже понятна. |
В реальной жизни эти подходы можно (и нужно) гибридизировать. Вот как выглядит эффективный пайплайн разработки приложения с ИИ-ассистентом:
🏁 Старт: Вы набрасываете легковесный requirements.md (буквально основные юзкейсы и стек). Это ваш SDD-слой.
🌳 Инициализация графа: Вы просите Claude Code прочитать этот файл и декомпозировать его на задачи внутри beads. Агент сам выполняет серию команд bd issue create и bd dep add.
💻 Кодинг: Текстовый файл уходит на полку. Дальше вы и агент общаетесь через призму графа:
> bd ready
# Получаем список готовых к работе задач
> bd update house-auth --status=in_progress
# Пишем код...
Инструмент написан на Go, ставится в систему за пару секунд.
# Для macOS (Homebrew)
brew tap steveyegge/beads
brew install bd
# Для Linux / Go-окружения
go install github.com/steveyegge/beads/cmd/bd@latest
# Инициализация в корне вашего репозитория
cd my-cool-ai-project
bd init
💡 Не забудьте накатить официальный плагин beads для Claude Code, чтобы агент умел работать с CLI из коробки.
SDD - это крутой инструмент для архитектора, помогающий зафиксировать правила игры. Но в качестве движка исполнения текст работает со сбоями - ИИ слишком вольно трактует человеческий язык. beads переносит управление проектом на понятный для машины язык - теорию графов и компактный JSON. Он не заменяет верхнеуровневое мышление, но дает ИИ-агенту ту самую «рабочую память» и дисциплину, которых ему так не хватало в стандартных чатах. А как вы управляете контекстом своих AI-ассистентов на больших проектах? Делитесь своими костылями и практиками в комментариях! 👇