Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в домашней папке, перенесены в agents/. Разложено по агентам там, где имя файла позволяло определить автора; остальное — в _salvage-2026-08-18/ и разбирается вручную. Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных рабочих копий: она существовала только на диске. Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.5 KiB
2.5 KiB
Правила работы: прочитай C:\Users\Ochenstarik\kagent-tasks\hermes-work-protocol.md.
Файл: services/gateway/src/main.rs. Только он. Выполняется после задачи A1.
Дефект
Структура RateLimiter объявлена, но нигде не создаётся. В changelog версия 0.8 заявлена
как «TOTP 2FA + rate limiter», при этом ограничение частоты запросов не подключено ни к
одному маршруту. В docs/ARCHITECTURE.md раздел 2 называет rate limiting обязанностью
Gateway.
Вторая проблема: HashMap клиентов растёт неограниченно. Каждый новый адрес добавляет
запись, которая никогда не удаляется.
Что сделать
- подключить лимитер как middleware ко всем маршрутам;
- ключ клиента: значение заголовка
x-forwarded-for, при отсутствии — адрес пира; - при превышении лимита возвращать
429с заголовкомRetry-After; - параметры из окружения:
GATEWAY_RATE_LIMIT_WINDOW_SECONDS(по умолчанию 60) иGATEWAY_RATE_LIMIT_MAX_REQUESTS(по умолчанию 120); - добавить вытеснение записей, у которых окно истекло, чтобы карта не росла бесконечно;
- снять
#[allow(dead_code)], добавленный в задаче A1; - добавить тесты: запрос в пределах лимита проходит, запрос сверх лимита получает
429, после истечения окна счётчик сбрасывается, запись устаревшего клиента вытесняется.
Значения по умолчанию вынеси в константы рядом с объявлением структуры.
Критерий приёмки
cargo fmt --manifest-path services/gateway/Cargo.toml --check
cargo clippy --manifest-path services/gateway/Cargo.toml --all-targets -- -D warnings
cargo test --manifest-path services/gateway/Cargo.toml
Вывод приложить к отчёту. В CHANGELOG.md добавить строку о подключении ограничителя
частоты в раздел [Unreleased] / Added.