Обучающая coding-пара
AI-парный программист, который становится умнее каждый раз, когда вы им пользуетесь.
Проблема
Каждая coding-сессия с AI начинается с нуля. Агент не помнит, что вы строили вчера, какие решения принимали и какие паттерны уже закрепили. Каждая сессия заново тратит время на восстановление одного и того же контекста.
Что, если бы ваш AI-парный программист помнил каждое архитектурное решение и со временем становился умнее?
Конфиг
learning_pair.toml определяет кворум — мультиагентную систему с planner, который помнит, и coder, который реализует. Planner использует инструменты знаний; coder использует инструменты редактирования. Ответственность разделена на уровне агентов.
Конфигурация кворума
[quorum] cwd = "." db = "/tmp/learning_pair.db" # Постоянное хранилище знаний delegation = true # Включить делегацию planner -> coder verification = false snapshot_policy = "diff" # Отслеживать изменения файлов через git diff delegation_wait_policy = "all" max_parallel_delegations = 1
Planner: оркестратор, который несет знания
[planner] provider = "anthropic" model = "claude-sonnet-4-5-20250929" tools = [ "delegate", # Отправляет задачи coder-у # Жизненный цикл знаний — уникальная возможность planner-а "knowledge_ingest", "knowledge_query", "knowledge_consolidate", "knowledge_list_unconsolidated", "knowledge_stats", # Планирование и исследование (read-only) "read_tool", "index", "search_text", "glob", "ls", "create_task", "todowrite", "todoread", "question", ]
Planner — единственный агент с инструментами знаний. Он запрашивает прошлые решения перед планированием, а затем добавляет новые уроки после ревью работы coder-а. Coder stateless — чистая реализация. Такое разделение сохраняет знания чистыми и консолидированными.
Middleware planner-а: режим агента
[[planner.middleware]] type = "context" warn_at_percent = 80 compact_at_percent = 90 fallback_max_tokens = 128000 [[planner.middleware]] type = "agent_mode" default = "plan" reminder = """# Plan Mode — Knowledge-Driven Orchestrator You are the planner. You must NOT edit files. 1. Query knowledge before planning 2. Break work into concrete tasks 3. Delegate implementation to coder 4. Ingest decisions and lessons"""
Middleware agent_mode вставляет system reminder на каждом ходу и удерживает planner-а в режиме "plan". Он не начнет случайно писать код — это работа coder-а. Переключать режимы можно через dashboard сочетанием Ctrl+M.
Сводка делегации: дешевая модель для результатов
[quorum.delegation_summary] provider = "anthropic" model = "claude-haiku-4-5-20251001" # Более дешевая модель
Когда coder завершает задачу, результат кратко суммируется более дешевой моделью перед возвратом planner-у. Это удерживает стоимость контекста на низком уровне — planner видит summary, а не полный diff.
Делегат coder: чистая реализация
[[delegates]] id = "coder" provider = "anthropic" model = "claude-sonnet-4-5-20250929" description = "Implementation specialist..." capabilities = ["rust", "python", "typescript", "shell"] tools = [ "edit", "write_file", "read_tool", "index", "glob", "search_text", "ls", "shell", "todowrite", "todoread", ]
Middleware coder-а: лимиты + проверка дублирования
[[delegates.middleware]] type = "limits" max_steps = 80 max_turns = 25 [[delegates.middleware]] type = "context" warn_at_percent = 80 compact_at_percent = 90 # Выявляет дубли кода в выводе coder-а [[delegates.middleware]] type = "dedup_check" threshold = 0.85 # Порог сходства 85% min_lines = 10 # Проверять только блоки >= 10 строк
Middleware dedup_check выявляет случаи, когда coder вот-вот запишет код, который на 85%+ похож на уже существующий в проекте. Он ловит copy-paste паттерны и поощряет DRY-реализацию.
Жизненный цикл через несколько сессий
Магия происходит между сессиями. Знания хранятся в SQLite. Planner с каждым разом становится умнее.
Planner запрашивает знания: пусто (первый раз)
Planner анализирует кодовую базу через read-only инструменты
Planner планирует: "Need middleware layer, token bucket, tests"
Planner делегирует задачу coder-у -> coder реализует
Planner делает ревью и ingest: "We used a token bucket approach with Redis backend. Middleware placed before auth layer."
Planner запрашивает знания: находит вчерашнее "token bucket, Redis backend, middleware before auth"
Planner планирует с учетом прошлых решений: "Place auth middleware after rate limiter, consistent with existing pattern"
Planner делегирует -> coder реализует (в соответствии с текущей архитектурой)
Planner добавляет знания: "Auth uses JWT, middleware consistent with rate limiting pattern"
Поток делегации
Ключевые возможности
- Жизненный цикл знаний — ingest, query, consolidate между сессиями
- Мультиагентный кворум — planner делегирует специализированному coder-у
- Сводка делегации — дешевая модель суммирует вывод coder-а для planner-а
- Middleware режима агента — удерживает planner-а в режиме "plan", а не "build"
- Dedup check — ловит дублирующийся код еще до записи
- Делегация с учетом контекста — прошлые знания формируют текущие планы
Попробуйте сами
# Запустите learning pair cargo run --example qmtcode --features dashboard -- \ confs/learning_pair.toml --dashboard # Сессия 1: попросите его что-нибудь построить # "Add rate limiting to the API" # Сессия 2 (перезапуск, та же db): попросите связанную задачу # "Add authentication to the API" # Обратите внимание: planner использует знания из сессии 1 # Опционально: создайте расписание консолидации # Trigger: Interval, 3600s (hourly) # Prompt: "Run knowledge consolidation..." # Max runs: 24