Problem
LearningEngine (crates/zeph-core/src/agent/learning_engine.rs, ~94 lines) exists as a structural placeholder but implements no actual learning logic. The agent does not improve its behavior based on interaction history.
Current state
The file contains:
- A struct with a single
reflection_used flag
- No pattern analysis
- No preference inference
- No behavioral adaptation between turns or sessions
- No connection to
FeedbackDetector outputs or user_corrections
What a functional LearningEngine should do
- Preference inference: detect recurring user preferences from corrections (e.g. prefers concise answers, always wants code in Rust, dislikes emoji)
- Tool usage patterns: learn which tools the user relies on and pre-suggest them
- Skill affinity: track which skills produce high-quality outcomes for this user (connect to
skill_outcomes table)
- Cross-session adaptation: persist learned preferences to
zeph_key_facts or a dedicated user_preferences collection
- Response style adaptation: adjust verbosity, language, format based on feedback history
Affected tables (currently empty/unused)
Impact
- Self-learning feature is advertised but non-functional
- No behavioral personalization across sessions
FeedbackDetector signals are detected but never acted upon beyond skill re-ranking
Suggested approach
Start with the simplest useful behavior: after each session, scan user_corrections for patterns and write 1–3 preference facts to zeph_key_facts via memory_save. Build from there incrementally.
Problem
LearningEngine(crates/zeph-core/src/agent/learning_engine.rs, ~94 lines) exists as a structural placeholder but implements no actual learning logic. The agent does not improve its behavior based on interaction history.Current state
The file contains:
reflection_usedflagFeedbackDetectoroutputs oruser_correctionsWhat a functional LearningEngine should do
skill_outcomestable)zeph_key_factsor a dedicateduser_preferencescollectionAffected tables (currently empty/unused)
skill_outcomes— 0 rowsskill_usage— 0 rowsuser_corrections— 0 rows (also blocked by fix(memory): zeph_corrections Qdrant collection never populated — self-learning corrections not persisted #1910)skill_versions— 0 rowsImpact
FeedbackDetectorsignals are detected but never acted upon beyond skill re-rankingSuggested approach
Start with the simplest useful behavior: after each session, scan
user_correctionsfor patterns and write 1–3 preference facts tozeph_key_factsviamemory_save. Build from there incrementally.