Evals Codebase Context
When to Use This Skill
Use this skill when the task involves:
- Modifying or debugging the evals execution infrastructure
- Adding new eval exercises or languages
- Working with the evals web interface (apps/web-evals)
- Modifying the public evals display page on roocode.com
- Understanding where evals code lives in this monorepo
When NOT to Use This Skill
Do NOT use this skill when:
- Working on unrelated parts of the codebase (extension, webview-ui, etc.)
- The task is purely about the VS Code extension's core functionality
- Working on the main website pages that don't involve evals
Key Disambiguation: Two "Evals" Locations
This monorepo has two distinct evals-related locations that can cause confusion:
| Component | Path | Purpose |
|---|---|---|
| Evals Execution System | packages/evals/ |
Core eval infrastructure: CLI, DB schema, Docker configs |
| Evals Management UI | apps/web-evals/ |
Next.js app for creating/monitoring eval runs (localhost:3446) |
| Website Evals Page | apps/web-roo-code/src/app/evals/ |
Public roocode.com page displaying eval results |
| External Exercises Repo | Roo-Code-Evals | Actual coding exercises (NOT in this monorepo) |
Directory Structure Reference
packages/evals/ - Core Evals Package
packages/evals/
βββ ARCHITECTURE.md # Detailed architecture documentation
βββ ADDING-EVALS.md # Guide for adding new exercises/languages
βββ README.md # Setup and running instructions
βββ docker-compose.yml # Container orchestration
βββ Dockerfile.runner # Runner container definition
βββ Dockerfile.web # Web app container
βββ drizzle.config.ts # Database ORM config
βββ src/
β βββ index.ts # Package exports
β βββ cli/ # CLI commands for running evals
β β βββ runEvals.ts # Orchestrates complete eval runs
β β βββ runTask.ts # Executes individual tasks in containers
β β βββ runUnitTest.ts # Validates task completion via tests
β β βββ redis.ts # Redis pub/sub integration
β βββ db/
β β βββ schema.ts # Database schema (runs, tasks)
β β βββ queries/ # Database query functions
β β βββ migrations/ # SQL migrations
β βββ exercises/
β βββ index.ts # Exercise loading utilities
βββ scripts/
βββ setup.sh # Local macOS setup scriptapps/web-evals/ - Evals Management Web App
apps/web-evals/
βββ src/
β βββ app/
β β βββ page.tsx # Home page (runs list)
β β βββ runs/
β β β βββ new/ # Create new eval run
β β β βββ [id]/ # View specific run status
β β βββ api/runs/ # SSE streaming endpoint
β βββ actions/ # Server actions
β β βββ runs.ts # Run CRUD operations
β β βββ tasks.ts # Task queries
β β βββ exercises.ts # Exercise listing
β β βββ heartbeat.ts # Controller health checks
β βββ hooks/ # React hooks (SSE, models, etc.)
β βββ lib/ # Utilities and schemasapps/web-roo-code/src/app/evals/ - Public Website Evals Page
apps/web-roo-code/src/app/evals/
βββ page.tsx # Fetches and displays public eval results
βββ evals.tsx # Main evals display component
βββ plot.tsx # Visualization component
βββ types.ts # EvalRun type (extends packages/evals types)This page displays eval results on the public roocode.com website. It imports types from @roo-code/evals but does NOT run evals.
Architecture Overview
The evals system is a distributed evaluation platform that runs AI coding tasks in isolated VS Code environments:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Web App (apps/web-evals) ββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β PostgreSQL ββββββΊ Controller Container β
β β β β
β βΌ βΌ β
β Redis βββββΊ Runner Containers (1-25 parallel) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββKey components:
- Controller: Orchestrates eval runs, spawns runners, manages task queue (p-queue)
- Runner: Isolated Docker container with VS Code + Roo Code extension + language runtimes
- Redis: Pub/sub for real-time events (NOT task queuing)
- PostgreSQL: Stores runs, tasks, metrics
Common Tasks Quick Reference
Adding a New Eval Exercise
- Add exercise to Roo-Code-Evals repo (external)
- See
packages/evals/ADDING-EVALS.mdfor structure
Modifying Eval CLI Behavior
Edit files in packages/evals/src/cli/:
runEvals.ts- Run orchestrationrunTask.ts- Task executionrunUnitTest.ts- Test validation
Modifying the Evals Web Interface
Edit files in apps/web-evals/src/:
app/runs/new/new-run.tsx- New run formactions/runs.ts- Run server actions
Modifying the Public Evals Display Page
Edit files in apps/web-roo-code/src/app/evals/:
Database Schema Changes
- Edit
packages/evals/src/db/schema.ts - Generate migration:
cd packages/evals && pnpm drizzle-kit generate - Apply migration:
pnpm drizzle-kit migrate
Running Evals Locally
# From repo root
pnpm evals
# Opens web UI at http://localhost:3446Ports (defaults):
- PostgreSQL: 5433
- Redis: 6380
- Web: 3446
Testing
# packages/evals tests
cd packages/evals && npx vitest run
# apps/web-evals tests
cd apps/web-evals && npx vitest runKey Types/Exports from @roo-code/evals
The package exports are defined in packages/evals/src/index.ts:
- Database queries:
getRuns,getTasks,getTaskMetrics, etc. - Schema types:
Run,Task,TaskMetrics - Used by both
apps/web-evalsandapps/web-roo-code