Git Context Controller
faugustdev/git-context-controllerФреймворк структурированного управления контекстом для LLM-агентов. Реализует Git-подобные операции (COMMIT, BRANCH, MERGE) для долгосрочной памяти агента с экономным хранением и восстановлением контекста по хешам.
Установка
git clone https://github.com/faugustdev/git-context-controller.gitREADME
Git Context Controller (GCC) v2
Лёгкое управление контекстом LLM-агентов на основе git.
GCC v2 хранит хеш + намерение + опциональные заметки о решениях вместо объёмного markdown. Полный контекст восстанавливается по запросу через git show. Два режима работы: с поддержкой git или автономный.
Основано на исследовательской статье: Git Context Controller
Зачем нужен GCC?
LLM-агенты теряют контекст по мере роста диалога. GCC решает эту проблему, предоставляя агентам структурированную память:
- Экономное хранение — ~50 токенов на запись против ~500 в v1
- Git как источник истины — реальные коммиты, а не нарративные копии
- Безопасные эксперименты — ветки через git worktrees с настоящей изоляцией
- Восстановление между сессиями — контекст восстанавливается из хешей по запросу
- Мост aiyoucli — автоматически передаёт данные коммитов в векторную память при наличии
Как это работает
Git-режим (при наличии репозитория)
.GCC/
├── index.yaml # Единый источник истины (~50 токенов/запись)
├── branches/ # Заметки по веткам
├── worktrees/ # Отслеживание worktree
└── .bridge-log # Состояние синхронизации с aiyoucli
Запись в index.yaml:
- id: C001
hash: 85c8539 ← указатель на git-истину
intent: "release prep" ← зачем
note: "descartamos semantic-release por overhead" ← опциональное решение
branch: main
date: "2026-02-25T21:40:00Z"
Автономный режим (без репозитория)
Переключается на markdown-файлы, совместимые с v1:
.GCC/
├── index.yaml # Хронология
├── main.md # Дорожная карта (совместимость с v1)
├── log.md # OTA-трассировки (совместимость с v1)
└── branches/
Восстановление контекста
Агенту нужен контекст
│
▼
gcc_context.sh --summary ← ~50 токенов, без обращений к git
gcc_context.sh --last 5 ← восстановление через git show
gcc_context.sh --decisions ← только записи с заметками
gcc_context.sh --hash abc123 ← полный diff одного коммита
Установка
Как Claude Code Skill
# Через skills.sh
npx skills add faugustdev/git-context-controller
# Ручная установка
cp -r gcc/ your-project/.claude/skills/gcc/Автономная установка
git clone https://github.com/faugustdev/git-context-controller.git
# Инициализация GCC в вашем проекте
cd your-project
/path/to/scripts/gcc_init.shБыстрый старт
После установки GCC активируется автоматически. Используйте команды или естественный язык:
| Действие | Команда | Естественный язык |
|---|---|---|
| Сохранить прогресс | /gcc commit | «сохрани этот этап» |
| Попробовать альтернативу | /gcc branch experiment | «создай ветку для другого подхода» |
| Интегрировать результаты | /gcc merge experiment | «смёрджи результаты эксперимента» |
| Быстрый статус | /gcc context --summary | «на чём мы остановились?» |
| Последние изменения | /gcc context --last 10 | «покажи последние действия» |
| Просмотр решений | /gcc context --decisions | «что мы решили по X?» |
| Детали коммита | /gcc context --hash abc123 | «подробности по тому коммиту» |
| Очистка | /gcc cleanup | «почисти старые worktrees» |
| Синхронизация памяти | /gcc bridge --sync | «синхронизируй с aiyoucli» |
Скрипты
GCC v2 включает вспомогательные скрипты для механических операций:
| Скрипт | Назначение |
|---|---|
gcc_init.sh | Инициализация GCC (автоопределение git/автономного режима) |
gcc_commit.sh | Реальный git-коммит + лёгкая запись в индекс |
gcc_context.sh | Восстановление контекста из хешей |
gcc_bridge.sh | Передача данных коммитов в векторную память aiyoucli |
gcc_cleanup.sh | Очистка worktrees по TTL + прунинг индекса |
gcc_commit.sh
gcc_commit.sh "implement retry logic"
gcc_commit.sh "release prep" "descartamos semantic-release por overhead"
gcc_commit.sh --staged "hotfix: null check"gcc_context.sh
gcc_context.sh --summary # одна строка на запись (минимальная стоимость)
gcc_context.sh --last 5 # последние 5 с деталями из git
gcc_context.sh --hash abc123 # полный diff конкретного коммита
gcc_context.sh --decisions # только записи с заметками
gcc_context.sh --full # всёgcc_bridge.sh
gcc_bridge.sh --status # проверить подключение моста
gcc_bridge.sh --sync # синхронизировать несинхронизированные записи с aiyoucligcc_cleanup.sh
gcc_cleanup.sh --dry-run # показать, что будет удалено
gcc_cleanup.sh --force # очистить без подтверждения
gcc_cleanup.sh --prune-index 50 # оставить последние 50 записей хронологииСправочник команд
COMMIT
Фиксирует контрольную точку. В git-режиме выполняет реальный коммит.
/gcc commit <summary>
BRANCH
Создаёт изолированное рабочее пространство. В git-режиме использует реальные git worktrees.
/gcc branch <name>
MERGE
Интегрирует ветку обратно. В git-режиме выполняет реальный git merge с заметкой о синтезе.
/gcc merge <branch-name>
CONTEXT
Извлекает историческую память, восстановленную из git.
/gcc context [--summary | --last N | --hash HASH | --decisions | --full]
| Флаг | Возвращает | Стоимость |
|---|---|---|
--summary | Одна строка на запись | ~0 дополнительных токенов |
--last N | Последние N записей с деталями из git | ~200 токенов/запись |
--hash HASH | Полный diff одного коммита | Переменная |
--decisions | Только записи с заметками | Минимальная |
--full | Всё | Все записи |
Конфигурация
Управляется через index.yaml:
config:
proactive_commits: true # Автоматически предлагать коммиты после контрольных точек
worktree_ttl: 24h # Автоочистка устаревших worktrees
bridge_to_aiyoucli: auto # auto | off | manualСтруктура проекта
git-context-controller/
├── SKILL.md # Определение скилла (v2)
├── README.md # Этот файл
├── LICENSE # Лицензия MIT
├── CONTRIBUTING.md # Руководство по участию в разработке
├── .gitignore
├── scripts/
│ ├── gcc_init.sh
│ ├── gcc_commit.sh
│ ├── gcc_context.sh
│ ├── gcc_bridge.sh
│ └── gcc_cleanup.sh
└── gcc/
└── ... # Файлы скилла