0.100.0
Added
- Курсор для batch-consolidator (
consolidator_cursor:<agent_id>:<scope>): фоновый сервис больше не пересчитывает одни и те же сообщения. Хранится максимальный обработанныйmessage.IDвsettings. После каждой консолидации (даже с пустым результатом) курсор продвигается. Это убирает основную причину избыточных факт-рефраз (см. аудит P1). - Auto-cleanup устаревших фактов (
internal/memory/cleanup.go): новый фоновый сервисFactCleanupServiceдеактивирует факты, у которых:access_count=0 AND age > cleanup_age_days(14) AND confidence < cleanup_min_confidence(0.6), кромеsource_type=manual. История события —action="auto_cleanup". Интервал:cleanup_interval_hours(default 24, первый запуск через 10 минут). - Метрики памяти в
/api/v1/metricsи Prometheus: taigaclaw_memory_auto_cleanup_deactivated_total(counter)taigaclaw_memory_active_facts{agent_id}(gauge)taigaclaw_memory_facts_access_zero{agent_id}(gauge)taigaclaw_memory_facts_unused_30d{agent_id}(gauge)taigaclaw_memory_facts_by_category{agent_id, category}(gauge)taigaclaw_memory_facts_by_subject{agent_id, subject}(gauge)- В JSON:
Snapshot.Memoryс теми же полями - UI: evidence и subject в карточке факта на странице
/agents/<id>/memory: - Цитата-источник под content (italic, в кавычках
«...») - Badge
subject(user/agent/world) рядом с category - Поля
evidence/subjectдобавлены вMemoryFactвweb/src/lib/api/client.ts - Новые тесты (
internal/memory/iter19_test.go):CursorSkipsAlreadyProcessed,CursorAdvancesEvenWhenEmpty,RemovesStaleZeroAccess,KeepsHighConfidence,KeepsRecentlyAccessed,PublishesMemoryMetrics,RecordsCounter,ParseFactTime,Prometheus_MemoryFormat(10 кейсов).
Changed
internal/memory/consolidator.go:consolidateAgentMessagesиспользует курсор и продвигает его после persist (даже на пустом результате).cmd/taigaclaw/main.go:FactCleanupServiceподключён к жизненному циклу, останавливается вgracefulShutdown.
Docs
- ADR
docs/adr/2026-05-22-fact-cursor-cleanup-metrics.md— решения и альтернативы. docs/features-matrix.md— раздел 2.5 расширен.