Task 56 — Rate limits и квоты
Phase: 6
Initiative: 35
Status: done
Owner: —
Slug: rate-limits-quotas
Goal
Per-agent, per-skill, per-user, per-tenant лимиты concurrency, calls, токенов, оценочной стоимости, storage, message volume.
Acceptance criteria
- Add
QuotasConfigsection toAppConfig.cs(per-agent, per-skill, per-user, per-tenant limits) - Create
src/agent/Quotas/Models.cs— QuotaLimitType enum, QuotaScope enum, QuotaStatus record, QuotaViolation record - Create
src/agent/Quotas/IQuotaService.csinterface with CheckLimit, RecordUsage, GetStatus, Reset methods - Implement
QuotaService.cs— in-memory quota tracking with sliding window rate limiting - Create
src/agent/Quotas/QuotaGuard.cs— enforcement helper with graceful degradation - Integrate quota checks into
AgentCore(pre-request validation) - Add quota tracking to skill execution path (concurrency tracking)
- Add quota tracking to mesh delegation path
- Implement rate limit headers (RateLimitInfo for HTTP response headers)
- Add
QuotasController— GET /api/quotas, GET /api/quotas/{scope}/{id}, GET /api/quotas/rate-limit - Register quota services in DI (CLI and WebAPI Program.cs)
- Unit tests for quota enforcement logic (27 tests: QuotaServiceTests + QuotaGuardTests)
dotnet build+dotnet testpass (1496 tests pass, 8 pre-existing failures)
Scope / Likely files
src/agent/Mesh/Quotas/
Dependencies
- блокирует / опирается на: task_012 — budget-guardrails
- блокирует / опирается на: task_048 — delegation-boundaries
Risks / Rollback
Многоуровневые лимиты сложно отлаживать; явный report при отказе.
Links
- Backlog: ../backlog.md
- Roadmap (EN): ../../ROADMAP-EN.md
- Roadmap (RU): ../../ROADMAP-RU.md
Implementation notes
- Created
src/agent/Quotas/with 4 files (Models.cs, IQuotaService.cs, QuotaService.cs, QuotaGuard.cs) QuotaService: In-memory quota tracking with ConcurrentDictionary, sliding window rate limiting via ConcurrentBagQuotaGuard: Enforcement helper with CheckAndGetDegradationMessage and LogSoftWarningsQuotaLimitTypeenum: 12 limit types covering agent, skill, user, and tenant scopesQuotaScopeenum: Agent, Skill, User, Tenant- AgentCore integration: pre-check on HandleAsync, Begin/End concurrency tracking, usage recording after LLM calls
QuotasController: 4 API endpoints for quota status and rate limit info- DI registration: CLI and WebAPI Program.cs
- Tests: 27 unit tests (QuotaServiceTests + QuotaGuardTests)
-
Build: succeeded Tests: 1496 passed, 8 pre-existing failures (NumericValidatorTests)