OpenWriterControle/evals/SETUP_COMPLETE.md
darrenhinde f4b3d56aa2 Add evaluation framework structure and OpenCode logging documentation
- 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
2025-11-21 14:50:44 +00:00

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

  1. Framework Package (evals/framework/package.json)

    • TypeScript setup
    • Testing with Vitest
    • Build scripts
    • Linting
  2. OpenAgent Config (evals/opencode/openagent/config/config.yaml)

    • Evaluator settings
    • Scoring weights
    • Rule definitions
    • Model preferences
  3. 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:

  1. Implement TypeScript types (framework/src/types/index.ts)
  2. Implement SessionReader (framework/src/collector/session-reader.ts)
  3. Implement MessageParser (framework/src/collector/message-parser.ts)
  4. Implement TimelineBuilder (framework/src/collector/timeline-builder.ts)
  5. Write tests

See: tasks/eval-framework/01-session-reader.md

Estimated Time: 4-6 hours


Phase 2: Core Evaluators

Goal: Implement evaluation logic

Tasks:

  1. Implement BaseEvaluator
  2. Implement ApprovalGateEvaluator
  3. Implement ContextLoadingEvaluator
  4. Implement DelegationEvaluator
  5. Implement ToolUsageEvaluator
  6. 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:

  1. Implement test case loader
  2. Implement SessionAnalyzer
  3. Implement TestRunner
  4. Create test case library
  5. Write tests

See: tasks/eval-framework/03-test-runner.md

Estimated Time: 6-8 hours


Phase 4: Reporters (Future)

Goal: Generate useful reports

Tasks:

  1. Implement ConsoleReporter
  2. Implement JSONReporter
  3. Implement MarkdownReporter
  4. 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


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! 🚀