Приклади / Агент за розкладом

Standup Bot у 90 рядках TOML

Автономний агент, який працює без вас, використовує лише shell + git і памʼятає між сесіями.

standup_bot.toml

Проблема

Стендап — це рутина. Ви забуваєте, що робили вчора. Ваша історія 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 = []
Read-only за задумом

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:

  1. Відкрийте Session -> Schedules -> Create Schedule
  2. Prompt: "Run a standup cycle: analyze recent git activity, ingest findings, and report."
  3. Trigger: Interval, 86400 секунд (кожні 24 години)
  4. Max runs: 30 (один місяць щоденних стендапів)
  5. Max steps: 20
Автоматичне завершення

Після 30 запусків (одного місяця) розклад завершується автоматично. Жодних осиротілих процесів. Жодного ручного прибирання.

Що відбувається

Щодня в один і той самий час агент автономно проходить такий цикл:

1. Аналіз git Запускає git log за останні 24 години. Читає змінені файли, повідомлення комітів і патерни diff.
2. Витягування патернів Визначає, над якими ділянками працювали, які проблеми з'явилися, які патерни проявилися.
3. Knowledge ingest Зберігає структуровані висновки: "У шарі API було масштабне refactoring, додано 3 нові endpoint-и, test coverage впало."
4. Звіт для стендапу Генерує сьогоднішній стендап: що зроблено, що в процесі, що заблоковано.

З часом агент будує 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