- Add comprehensive evaluation framework in evals/ - Reusable framework for testing OpenCode agents - OpenAgent-specific test configuration - Scalable structure for multiple agents - Add OpenCode logging system documentation - Complete schema documentation for session storage - Model and provider tracking details - Performance analysis examples - Cost optimization strategies - Update .gitignore - Ignore evals/results/ directory - Ignore tasks/ directory (temporary) Structure: - evals/framework/ - Reusable evaluation framework - evals/opencode/openagent/ - OpenAgent tests - dev/ai-tools/opencode/logging-and-session-storage.md - Logging docs
7.7 KiB
Evaluation Framework Setup Complete ✅
What Was Created
Directory Structure
evals/
├── README.md # Main overview
├── framework/ # Reusable evaluation framework
│ ├── README.md # Framework documentation
│ ├── package.json # Dependencies
│ ├── tsconfig.json # TypeScript config
│ ├── .gitignore # Git ignore rules
│ └── src/ # Source code (empty, ready for implementation)
│ ├── collector/ # Session data collection
│ ├── evaluators/ # Evaluation logic
│ ├── runner/ # Test execution
│ ├── reporters/ # Result reporting
│ └── types/ # TypeScript types
│
├── opencode/ # OpenCode agent evaluations
│ ├── openagent/ # OpenAgent-specific tests
│ │ ├── README.md # OpenAgent test documentation
│ │ ├── config/
│ │ │ └── config.yaml # OpenAgent configuration
│ │ ├── test-cases/ # Test case definitions (empty)
│ │ └── sessions/ # Recorded test sessions (empty)
│ └── shared/ # Shared test cases (empty)
│
└── results/ # Test results (gitignored)
└── .gitkeep
Task Documentation
tasks/eval-framework/
├── README.md # Project overview
├── 01-session-reader.md # Task 1: Session Reader
├── 02-evaluators.md # Task 2: Core Evaluators
└── 03-test-runner.md # Task 3: Test Runner
Configuration Files
-
Framework Package (
evals/framework/package.json)- TypeScript setup
- Testing with Vitest
- Build scripts
- Linting
-
OpenAgent Config (
evals/opencode/openagent/config/config.yaml)- Evaluator settings
- Scoring weights
- Rule definitions
- Model preferences
-
Git Ignore (
.gitignore)- Results directory ignored
- Node modules ignored
- Build artifacts ignored
Next Steps
Phase 1: Foundation (Start Here)
Goal: Build session reader and basic types
Tasks:
- Implement TypeScript types (
framework/src/types/index.ts) - Implement SessionReader (
framework/src/collector/session-reader.ts) - Implement MessageParser (
framework/src/collector/message-parser.ts) - Implement TimelineBuilder (
framework/src/collector/timeline-builder.ts) - Write tests
See: tasks/eval-framework/01-session-reader.md
Estimated Time: 4-6 hours
Phase 2: Core Evaluators
Goal: Implement evaluation logic
Tasks:
- Implement BaseEvaluator
- Implement ApprovalGateEvaluator
- Implement ContextLoadingEvaluator
- Implement DelegationEvaluator
- Implement ToolUsageEvaluator
- Write tests
See: tasks/eval-framework/02-evaluators.md
Estimated Time: 8-10 hours
Phase 3: Test Runner
Goal: Execute test cases and generate results
Tasks:
- Implement test case loader
- Implement SessionAnalyzer
- Implement TestRunner
- Create test case library
- Write tests
See: tasks/eval-framework/03-test-runner.md
Estimated Time: 6-8 hours
Phase 4: Reporters (Future)
Goal: Generate useful reports
Tasks:
- Implement ConsoleReporter
- Implement JSONReporter
- Implement MarkdownReporter
- Add trend analysis
Estimated Time: 4-6 hours
Quick Start
1. Install Dependencies
cd evals/framework
npm install
2. Start Building
Begin with Phase 1 - Session Reader:
# Create types file
touch src/types/index.ts
# Create session reader
touch src/collector/session-reader.ts
# Create message parser
touch src/collector/message-parser.ts
# Create timeline builder
touch src/collector/timeline-builder.ts
3. Run Tests
# Run tests
npm test
# Watch mode
npm run test:watch
4. Build
# Build TypeScript
npm run build
# Watch mode
npm run build:watch
Architecture Overview
Data Flow
OpenCode Session Storage
↓
SessionReader (reads JSON files)
↓
MessageParser (parses structure)
↓
TimelineBuilder (builds timeline)
↓
Evaluators (validate behavior)
↓
TestRunner (executes tests)
↓
Reporters (generate reports)
↓
Results (JSON/Markdown/Console)
Key Components
Collector:
- Reads OpenCode session data
- Parses messages and parts
- Builds chronological timeline
Evaluators:
- Validate agent behavior
- Check compliance with rules
- Generate scores and violations
Runner:
- Load test case definitions
- Execute evaluators
- Collect results
Reporters:
- Format results
- Generate reports
- Export data
Configuration
Framework Config
Edit framework/src/config.ts (to be created):
export const config = {
projectPath: process.cwd(),
sessionStoragePath: '~/.local/share/opencode/',
resultsPath: '../results/',
passThreshold: 75,
};
OpenAgent Config
Edit opencode/openagent/config/config.yaml:
agent: openagent
pass_threshold: 75
scoring:
approval_gate: 40
context_loading: 40
delegation: 10
tool_usage: 10
Testing Strategy
Unit Tests
Test individual components in isolation:
- SessionReader
- MessageParser
- TimelineBuilder
- Each evaluator
Integration Tests
Test components working together:
- Read real session data
- Build timeline
- Run evaluators
- Generate results
Regression Tests
Test against recorded sessions:
- Store known-good sessions
- Run tests against them
- Detect behavior changes
Documentation
Main Docs
Task Breakdown
Related Docs
Success Criteria
Phase 1 Complete When:
- Can read any OpenCode session
- Can parse messages and parts
- Can build complete timeline
- All types defined
- Tests pass
Phase 2 Complete When:
- All evaluators implemented
- Can detect violations
- Scoring system works
- Tests pass
Phase 3 Complete When:
- Can load test cases from YAML
- Can run test suites
- Can generate results
- Tests pass
Phase 4 Complete When:
- Can generate console reports
- Can export JSON
- Can generate Markdown
- Tests pass
Getting Help
- Review task documentation in
tasks/eval-framework/ - Check OpenCode logging docs in
dev/ai-tools/opencode/ - Examine existing session data in
~/.local/share/opencode/ - Look at validator plugin in
.opencode/plugin/agent-validator.ts
Ready to Start!
Begin with Phase 1: Session Reader
See: tasks/eval-framework/01-session-reader.md
Good luck! 🚀