Architecture: How should Vitto learn user communication style and adapt pe...
Documentation for Sessions
🏗️ Architecture: How should Vitto learn user communication style and adapt pe...
Date: 2026-03-27
Time: 19:45:57 UTC
Session: gspace1-277.5
Agent: angular
Confidence: 90%
Status: ✅ Documented
📋 Decision Context
Question:
How should Vitto learn user communication style and adapt persona parameters?
Task: S277.4: Implement Adaptive Persona Learning
🎯 Decision Made
Chosen:
Heuristic-based CommunicationSignalExtractor (no LLM) + EMA-updated dossier profile + 8 rule-based adaptation paths in DossierPersonaAdapter + data-driven language injection in system prompt
Options Considered:
- LLM-based signal extraction (accurate but slow/expensive)
- Manual user preference form (no automatic learning)
- Full persona swap instead of individual trait adjustment
💭 Reasoning
LLM-based extraction would add latency and cost to every message. Regex heuristics for language/formality/verbosity/emoji are ~90% accurate and run in <1ms. Exponential moving average (alpha=0.1) prevents sudden preference flips. 8 declarative rules are maintainable and testable. Suppression logic (2 rejections = 30-day suppress) prevents nagging. Language injection in prompt section 2 (stable per session) maximizes LLM cache hits.
📁 Files Involved
engine/context-assembly/communication-signal-extractor.service.tsengine/dossier-persona-adapter.service.tsengine/context-assembly/channel-prompt-builder.service.tsengine/channel-processing.service.tsusers/schemas/user-dossier.schema.ts
🔗 Related
- Decision ID:
dev_1774640757404_czgn5wm - Session: 277
- Workspace: gspace1
Auto-generated by MCP Smart Consolidation