Standup Bot в 90 строках TOML
Автономный агент, который работает без вас, использует только shell + git и помнит между сессиями.
Проблема
Стендап - это рутина. Вы забываете, что делали вчера. История git все помнит, но по утрам у вас нет времени ее просматривать. А когда вы все же пишете заметки для стендапа, они часто получаются слишком общими и не очень полезными.
Что, если бы агент мог делать это за вас - каждый день, в одно и то же время, без отдельного запроса?
Конфиг
Весь агент описан в standup_bot.toml - это 90 строк TOML. Без Python. Без JavaScript. Без runtime-зависимостей, кроме самого QueryMT.
Описание агента
[agent] provider = "anthropic" model = "claude-sonnet-4-5-20250929" assume_mutating = false # Без mutating tools — этот агент строго read-only mutating_tools = []
assume_mutating = false и пустой список mutating_tools означают, что этот агент никогда не пишет на диск и не выполняет mutating-команды. Он читает историю git и пишет в свой knowledge store - и больше ничего.
Выбор инструментов
[agent] tools = [ # Анализ git и кодовой базы (read-only) "read_tool", "index", "glob", "search_text", "ls", "shell", # Knowledge lifecycle — в этом магия "knowledge_ingest", # Сохранить находки "knowledge_query", # Вспомнить предыдущие стендапы "knowledge_consolidate", # Объединить ежедневные -> еженедельные "knowledge_list_unconsolidated", "knowledge_stats", # Отслеживание задач "create_task", "todowrite", "todoread", ]
Три инструмента отвечают за постоянную память: knowledge_ingest сохраняет структурированные находки, knowledge_query возвращает их обратно, а knowledge_consolidate объединяет связанные записи в сводки более высокого уровня. Агент автоматически помнит прошлые сессии.
Трехслойное сжатие контекста
# Слой 1: обрезка вывода инструментов [agent.execution.tool_output] max_lines = 1000 max_bytes = 25600 # Слой 2: pruning после каждого хода [agent.execution.pruning] protect_tokens = 20000 # Слой 3: AI summary при переполнении контекста [agent.execution.compaction] auto = true
Вывод git log может быть очень большим. Эти три слоя держат контекстное окно под контролем: обрезают вывод инструментов до 1000 строк, отбрасывают старые сообщения и автоматически суммируют разговор, когда он становится слишком большим.
Middleware: лимиты выполнения
[[middleware]] type = "limits" max_steps = 30 # Макс. вызовов инструментов за цикл max_turns = 15 # Макс. ходов разговора [[middleware]] type = "context" warn_at_percent = 80 # Предупредить на 80% контекста compact_at_percent = 90 # Авто-сжатие на 90% fallback_max_tokens = 128000
С max_steps = 30 и max_turns = 15 у каждого запланированного цикла есть жесткий верхний предел стоимости. Агент не может бесконтрольно разогнаться, а управление контекстом не дает ему неожиданно упереться в token limits.
Настройка расписания
После запуска dashboard создайте расписание через UI:
- Откройте Session -> Schedules -> Create Schedule
- Prompt: "Run a standup cycle: analyze recent git activity, ingest findings, and report."
- Trigger: Interval,
86400секунд (каждые 24 часа) - Max runs: 30 (один месяц ежедневных стендапов)
- Max steps: 20
После 30 запусков (одного месяца) расписание завершается автоматически. Никаких осиротевших процессов. Никакой ручной уборки.
Что происходит
Каждый день в одно и то же время агент автономно проходит такой цикл:
git log за последние 24 часа. Читает измененные файлы, сообщения коммитов и паттерны diff. Со временем агент строит knowledge graph истории вашего проекта. Еженедельная consolidation объединяет ежедневные стендапы в еженедельные итоги. Задать вопрос о прошлых стендапах можно в любое время:
# Спросите агента в dashboard:
"What were the main themes from last week's standups?" Ключевые возможности
- Interval scheduling — запуск с фиксированным ритмом без участия пользователя
- Knowledge lifecycle — ежедневный ingest, еженедельная consolidation, запросы в любой момент
- Автономное выполнение — бот делает свою работу без вашего постоянного контроля
- Ограничение стоимости —
max_stepsиmax_turnsне дают расходам выйти из-под контроля - Трехслойное сжатие — аккуратно работает с большим выводом git
- Автоматическое завершение расписания — без осиротевших процессов после пробного периода
Попробуйте сами
# Клонируйте и запустите git clone https://github.com/querymt/querymt.git && cd querymt cargo run --example qmtcode --features dashboard -- \ confs/standup_bot.toml --dashboard # В dashboard создайте расписание: # Session -> Schedules -> Create Schedule # Prompt: "Run a standup cycle: analyze recent git activity, ingest findings, and report." # Trigger: Interval, 86400s (ежедневно) # Max runs: 30