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