Примеры / Агент по расписанию

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 lifecycle

Три инструмента отвечают за постоянную память: 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