Episode Complete
Complete and score a learning episode to extract patterns and update heuristics.
Purpose
Finalize an episode with outcome scoring, reflection generation, and pattern extraction for future retrieval.
Steps
Gather outcome data:
-
Final verdict (success, partial_success, failure)
-
Total time spent
-
Total tokens used (if applicable)
-
Key artifacts produced
-
Errors encountered
Create TaskOutcome:
let outcome = TaskOutcome { verdict: Verdict::Success, time_ms: total_time, tokens: total_tokens, artifacts: vec![/* paths to created/modified files /], errors: vec![/ any errors encountered */], };
Call complete_episode:
memory.complete_episode(episode_id, outcome).await?;
System processes:
-
Computes RewardScore based on:
-
Success/failure
-
Time efficiency
-
Code quality
-
Generates Reflection:
-
What worked well
-
What could be improved
-
Key learnings
-
Extracts Patterns:
-
Tool sequences
-
Decision points
-
Common pitfalls
Update storage:
-
Store in Turso (permanent record)
-
Update redb cache
-
Index by task_type and timestamp
-
Update related patterns and heuristics
Validation:
-
Verify episode was scored
-
Check patterns were extracted
-
Ensure heuristics were updated
Pattern Types Extracted
-
ToolSequence: Common tool usage patterns
-
DecisionPoint: Key decision moments and outcomes
-
ErrorPattern: Common errors and resolutions
-
PerformancePattern: Optimization opportunities
Scoring Rubric
-
Success: Task completed, tests pass, meets requirements
-
Partial Success: Task mostly complete, minor issues
-
Failure: Task incomplete, major issues, tests failing
Example
let outcome = TaskOutcome { verdict: Verdict::Success, time_ms: 45000, tokens: 12000, artifacts: vec![ "src/storage/batch.rs".to_string(), "tests/integration/batch_test.rs".to_string(), ], errors: vec![], };
memory.complete_episode(episode_id, outcome).await?;
Post-Completion
-
Patterns are now available for future retrieval
-
Heuristics updated for similar tasks
-
Episode stored for long-term learning
-
Embeddings computed (if service configured)