Git для ИИ-агентов — ноль конфликтов слияния, любое количество параллельных агентов, одна кодовая база.
Когда 50 агентов работают в одном репозитории, git ломается. Grit — нет.
Read in English: README.md
Agents │ Git Merge Failures │ Grit Merge Failures │ Git Conflict Files
───────┼────────────────────┼─────────────────────┼───────────────────
1 │ 0 (0%) │ 0 (0%) │ 0
2 │ 5 (50%) │ 0 (0%) │ 38
5 │ 20 (80%) │ 0 (0%) │ 80
10 │ 43 (86%) │ 0 (0%) │ 90
20 │ 83 (83%) │ 0 (0%) │ 130
50 │ 175 (70%) │ 0 (0%) │ 175Grit: 0 конфликтов во всех 1 500 попытках слияния.
ПРОБЛЕМА
┌─────────────────────────────────────────────────┐
│ 10 ИИ-агентов редактируют разные функции │
│ в ОДНОМ файле (auth.ts) │
│ │
│ Git видит: один файл изменён в 10 ветках │
│ Результат: O(N²) конфликтов слияния │
└─────────────────────────────────────────────────┘
РЕШЕНИЕ
┌─────────────────────────────────────────────────┐
│ Grit блокирует на уровне ФУНКЦИЙ (AST) │
│ а не на уровне ФАЙЛОВ (строки) │
│ │
│ Agent-1 блокирует: validateToken() │
│ Agent-2 блокирует: refreshToken() │
│ → Один файл, разные функции, ноль конфликтов │
└─────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1. CLAIM │───▶│ 2. WORK │───▶│ 3. DONE │
│ │ │ │ │ │
│ Lock AST │ │ Parallel │ │ Rebase + │
│ symbols │ │ worktrees│ │ Merge │
└──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SQLite │ │ .grit/ │ │ Serial │
│ или S3 │ │ worktrees│ │ file lock│
│ lock DB │ │ /agent-N │ │ → merge │
└──────────┘ └──────────┘ └──────────┘┌─────────────────────────────────────────┐
│ ваш git-репозиторий │
├─────────────────────────────────────────┤
│ .grit/ │
│ ├── registry.db (SQLite WAL) │ ← индекс символов + таблица блокировок
│ ├── config.json │ ← конфигурация бэкенда (локальный/S3)
│ ├── room.sock (Unix-сокет) │ ← поток событий в реальном времени
│ ├── merge.lock (RAII-блокировка) │ ← сериализует git-слияния
│ └── worktrees/ │
│ ├── agent-1/ (git worktree) │ ← изолированная рабочая директория
│ ├── agent-2/ (git worktree) │
│ └── agent-N/ ... │
├─────────────────────────────────────────┤
│ Бэкенды: │
│ ├── Локальный: SQLite WAL (по умолч.) │
│ ├── AWS S3 (conditional PUT) │
│ ├── Cloudflare R2 │
│ ├── Google Cloud Storage │
│ ├── Azure Blob Storage │
│ └── MinIO (самостоятельный хостинг) │
└─────────────────────────────────────────┘Запуск N ИИ-агентов параллельно на кодовой базе создает O(N²) конфликтов слияния. Git работает на уровне строк — когда два агента редактируют разные функции в одном файле, Git видит конфликтующие фрагменты и слияние терпит неудачу.
Grit блокирует на уровне AST/функций с помощью tree-sitter. Каждый агент резервирует определенные функции перед редактированием. Разные функции в одном файле никогда не конфликтуют. Агенты работают в изолированных git worktree, и слияния сериализуются автоматически.
cargo install --git https://github.com/rtk-ai/gritcd your-project
grit init # Парсинг AST, построение индекса символов
# Агент резервирует функции перед редактированием
grit claim -a agent-1 -i "добавить валидацию" \
src/auth.ts::validateToken \
src/auth.ts::refreshToken
# Агент работает в изолированном worktree: .grit/worktrees/agent-1/
# ... редактирование файлов ...
# Завершение: авто-коммит, ребейз, слияние, освобождение блокировок
grit done -a agent-1grit session start auth-refactor # Создать ветку grit/auth-refactor
# ... агенты claim, работают, done ...
grit session pr # Push ветки + создать GitHub PR
grit session end # Очистка блокировок, возврат к базовой веткеgrit init # Инициализация индекса символов
grit claim -a <agent> -i <intent> <syms...> # Блокировка символов + создание worktree
grit done -a <agent> # Слияние + освобождение блокировок
grit status # Показать активные блокировки
grit symbols [--file <pattern>] # Список проиндексированных символов
grit plan <symbols...> # Проверка доступности (dry-run)
grit release -a <agent> <symbols...> # Освобождение конкретных блокировок
grit gc # Очистка истёкших блокировок
grit heartbeat -a <agent> # Обновление TTL блокировки
grit watch # Поток событий в реальном времени
grit session start|status|pr|end # Жизненный цикл feature-ветки
grit config set-s3|set-local|show # Конфигурация бэкендаTypeScript, JavaScript, Rust, Python (расширяемо через грамматики tree-sitter)
MIT — Copyright (c) 2026 Patrick Szymkowiak