episode-complete
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
- Computes RewardScore based on:
-
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)
More from d-o-hub/rust-self-learning-memory
loop-agent
Execute workflow agents iteratively for refinement and progressive improvement until quality criteria are met. Use when tasks require repetitive refinement, multi-iteration improvements, progressive optimization, or feedback loops until convergence.
51web-search-researcher
Research topics using web search and content fetching to find accurate, current information. Use when you need modern information, official documentation, best practices, technical solutions, or comparisons beyond your training data.
46perplexity-researcher-reasoning-pro
Highest level of research and reasoning capabilities for complex decision-making with significant consequences, strategic planning, technical architecture decisions, multi-stakeholder problems, or high-complexity troubleshooting requiring expert-level judgment and sophisticated reasoning chains. Prioritizes actively maintained repositories and validates website sources for 2025 relevance.
44context-retrieval
Retrieve relevant episodic context from memory for informed decision-making. Use when you need past episodes, patterns, or solutions to similar tasks.
44rust-code-quality
Perform comprehensive Rust code quality reviews against best practices for async Rust, error handling, testing, and project structure
43codebase-analyzer
Analyze implementation details, trace data flow, explain technical workings, locate files, and consolidate codebases. Use when you need to understand HOW code works, find file locations, or assess technical debt.
40