
Roo Code Evals 評估系統架構與代碼庫導航實戰指南【免費下載鏈接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.項目地址: https://gitcode.com/GitHub_Trending/ro/Roo-CodeRoo Code 在編輯器中提供了 AI 智能體開發團隊的能力而支撐其能力評測的是一套獨立的Evals評估子系統。本文將基于倉庫內.roo/skills/evals-context/SKILL.md技能文檔完整梳理這套分布式評估平臺在 monorepo 中的代碼布局、架構原理與日常開發操作——包括兩處 evals 位置的關鍵辨析、Controller/Runner/Redis/PostgreSQL 協作模型、本地運行方式以及從 CHANGELOG 中可追溯的功能演進脈絡。讀完你就能快速定位 evals 相關代碼、新增練習、修改 CLI 與 Web 界面并動手跑通一次評估。這份技能文檔解決什么問題.roo/skills/evals-context/SKILL.md是一份面向 Roo Code 開發者的代碼庫上下文技能skill描述字段明確聲明了它的觸發條件當任務涉及evals、evaluation、eval runs、eval exercises或 evals 基礎設施工作時才啟用。它的核心價值有兩點消歧monorepo 中存在多個名字里帶 evals 的位置容易混淆導航給出各模塊目錄結構、架構圖、常用開發任務的快速操作路徑。佐證CHANGELOG.md 中記錄了 Remember last Roo model selection in web-evals and add evals skill (PR #10470 by hannesrudolph)說明這份 skill 是隨 web-evals 功能一并引入倉庫的正式組成部分。何時使用 / 何時不適用適用場景修改或調試 evals 執行基礎設施CLI、數據庫 schema、Docker 配置新增 eval 練習或語言維護 evals Web 管理界面apps/web-evals修改 roocode.com 公開的 evals 結果展示頁理解 evals 相關代碼在 monorepo 中的位置。明確不適用的場景處理與 evals 無關的代碼庫部分extension、webview-ui 等純 VS Code 擴展核心功能的任務不涉及 evals 的主網站頁面。關鍵澄清monorepo 中兩個 evals 位置這是本技能文檔最重要的信息——該倉庫存在兩處功能完全不同的 evals 位置很容易造成混淆組件路徑用途Evals 執行系統packages/evals/核心評估基礎設施CLI、數據庫 schema、Docker 配置Evals 管理 UIapps/web-evals/Next.js 應用用于創建/監控 eval 運行localhost:3446網站 Evals 展示頁apps/web-roo-code/src/app/evals/roocode.com 公開頁面展示評估結果外部練習倉庫Roo-Code-Evals真實編碼練習不在本 monorepo 內其中最容易被忽視的區別是公開展示頁只是讀結果并不真正執行評估——它從roo-code/evals導入類型但從不運行 evals真正的評估能力在packages/evals里。這種展示與執行分離的設計避免了把評估平臺的核心邏輯暴露到公網站點中。補充說明在當前公開代碼快照中packages/evals/與apps/web-evals/目錄未包含在工作區內該子系統按內部工程維護/單獨分發但CHANGELOG.md中有大量與之相關的演進記錄下文結構描述以 SKILL.md 文檔為準。目錄結構參考packages/evals/— 核心評估包packages/evals/ ├── ARCHITECTURE.md # 詳細架構文檔 ├── ADDING-EVALS.md # 新增練習/語言的指南 ├── README.md # 安裝與運行說明 ├── docker-compose.yml # 容器編排 ├── Dockerfile.runner # Runner 容器定義 ├── Dockerfile.web # Web 應用容器 ├── drizzle.config.ts # 數據庫 ORM 配置 ├── src/ │ ├── index.ts # 包導出 │ ├── cli/ # 運行 evals 的 CLI 命令 │ │ ├── runEvals.ts # 編排完整的 eval 運行 │ │ ├── runTask.ts # 在容器中執行單個任務 │ │ ├── runUnitTest.ts # 通過測試驗證任務完成度 │ │ └── redis.ts # Redis pub/sub 集成 │ ├── db/ │ │ ├── schema.ts # 數據庫 schemaruns、tasks │ │ ├── queries/ # 數據庫查詢函數 │ │ └── migrations/ # SQL 遷移 │ └── exercises/ │ └── index.ts # 練習加載工具 └── scripts/ └── setup.sh # 本地 macOS 安裝腳本這個包內部職責劃分非常清晰src/cli/是評估的引擎室runEvals.ts負責整場評估的編排runTask.ts負責把單個任務丟進隔離容器執行runUnitTest.ts在任務執行后用單元測試判定是否完成redis.ts負責與 Redis 的事件通道集成src/db/是評估數據的持久化層schema.ts定義runs、tasks等表結構migrations 目錄存放 SQL 遷移腳本頂層還有ARCHITECTURE.md、ADDING-EVALS.md兩份開發者文檔以及完整的 Docker 化方案docker-compose.yml、Dockerfile.runner、Dockerfile.web。apps/web-evals/— 評估管理 Web 應用apps/web-evals/ ├── src/ │ ├── app/ │ │ ├── page.tsx # 首頁運行列表 │ │ ├── runs/ │ │ │ ├── new/ # 新建 eval 運行 │ │ │ └── [id]/ # 查看特定運行狀態 │ │ └── api/runs/ # SSE 流式推送端點 │ ├── actions/ # Server Actions │ │ ├── runs.ts # 運行 CRUD 操作 │ │ ├── tasks.ts # 任務查詢 │ │ ├── exercises.ts # 練習列表 │ │ └── heartbeat.ts # 控制器健康檢查 │ ├── hooks/ # React hooksSSE、模型等 │ └── lib/ # 工具函數與 schemas它采用 Next.js 服務端動作Server ActionsSSEServer-Sent Events架構app/api/runs/提供 SSE 流式推送端點前端通過hooks/中的 React hooks 訂閱實時運行狀態actions/runs.ts承載創建、刪除等 CRUD 操作actions/heartbeat.ts則用于對評估控制器做健康檢查。apps/web-roo-code/src/app/evals/— 公開網站展示頁apps/web-roo-code/src/app/evals/ ├── page.tsx # 拉取并展示公開評估結果 ├── evals.tsx # 主要展示組件 ├── plot.tsx # 可視化組件 └── types.ts # EvalRun 類型繼承 packages/evals 類型該頁面從roo-code/evals導入類型但不運行evals僅負責把結果以圖表形式plot.tsx呈現給公眾。架構總覽分布式評估平臺根據 SKILL.md 的架構描述evals 系統是一個在隔離的 VS Code 環境中運行 AI 編碼任務的分布式評估平臺┌─────────────────────────────────────────────────────────────┐ │ Web App (apps/web-evals) ──────────────────────────────── │ │ │ │ │ ▼ │ │ PostgreSQL ?────? Controller Container │ │ │ │ │ │ ▼ ▼ │ │ Redis ?───? Runner Containers (1-25 parallel) │ └─────────────────────────────────────────────────────────────┘四個核心組件各司其職Controller控制器編排整場 eval 運行負責派生 Runner、維護任務隊列——任務隊列基于p-queuePromise 隊列庫實現Runner執行器隔離的 Docker 容器內部包含 VS Code Roo Code 擴展 語言運行時評估任務在其中真實執行Redis承擔pub/sub 實時事件分發——注意它不負責任務排隊這是文檔特別強調的一點任務排隊由 Controller 內的 p-queue 完成PostgreSQL持久化存儲 runs、tasks、metrics 等評估數據。這個架構的要點在于隔離與并行125 個 Runner 容器可以并行執行任務彼此互不干擾Controller 通過 Redis 事件通道把運行進度實時推給 Web 應用。CHANGELOG 中 Move evals into pnpm workspace, switch from SQLite to Postgres 記錄了數據庫從 SQLite 升級為 PostgreSQL 的演進與文檔中 PostgreSQL 的定位一致。常見開發任務速查新增一個 Eval 練習將練習添加進外部練習倉庫 Roo-Code-Evals不在本 monorepo 內按照packages/evals/ADDING-EVALS.md中規定的結構組織練習目錄。修改 Eval CLI 行為編輯packages/evals/src/cli/下的文件runEvals.ts— 整場評估的編排邏輯runTask.ts— 單個任務的容器內執行邏輯runUnitTest.ts— 用測試校驗任務完成度。修改 Evals Web 界面編輯apps/web-evals/src/下的文件app/runs/new/new-run.tsx— 新建運行表單actions/runs.ts— 運行的 Server Actions。修改公開 Evals 展示頁編輯apps/web-roo-code/src/app/evals/下的文件evals.tsx— 展示組件plot.tsx— 圖表可視化。數據庫 Schema 變更編輯packages/evals/src/db/schema.ts生成遷移cd packages/evals pnpm drizzle-kit generate應用遷移pnpm drizzle-kit migrate。整個流程采用 drizzle-kit 的遷移工作流先改 schema再生成 SQL 遷移文件最后應用遷移——schema 與遷移文件分離保證生產環境可以安全升級數據結構。本地運行 Evals從倉庫根目錄執行pnpm evals該命令會拉起整套評估環境并打開 Web 管理界面地址為http://localhost:3446。默認端口一覽服務端口PostgreSQL5433Redis6380Web3446三個服務使用非默認端口正是為了避免與開發者本機常見的 5432Postgres/6379Redis/3000Next.js發生沖突——CHANGELOG 中 Fix Docker port conflicts for evals services 印證了這一設計考量。測試分別對兩個子項目運行測試# packages/evals 測試 cd packages/evals npx vitest run # apps/web-evals 測試 cd apps/web-evals npx vitest run兩個子項目均以 Vitest 作為測試框架與倉庫整體技術棧保持一致。關鍵類型與導出roo-code/evals包導出定義在packages/evals/src/index.ts主要包含數據庫查詢函數getRuns、getTasks、getTaskMetrics等Schema 類型Run、Task、TaskMetrics。這些導出被apps/web-evals管理端與apps/web-roo-code公開展示端共同使用——這也解釋了為什么公開頁的types.ts可以繼承 packages/evals 類型兩端共用同一套類型定義避免數據結構漂移。從 CHANGELOG 看 evals 子系統的能力演進CHANGELOG.md記錄了 evals 子系統相當完整的功能演進史可以作為理解其能力邊界的佐證運行與編排新增 CLI 運行 evals 的方式PR #10456為 evals 啟用 Roo Code RouterPR #9492檢測到 API 不穩定時自動重試 eval 任務PR #9365為 evals 增加可配置超時5–10 分鐘任務執行出現錯誤時跟蹤工具使用錯誤。Web 管理界面支持多模型同時啟動multi-model launch、運行篩選、批量刪除、工具分組tool groups、運行備注新增任務日志查看、失敗日志導出、kill run終止運行能力優化運行日志與格式化器讓運行在 Web UI 中可刪除。基礎設施將 evals 移入 pnpm workspace 并從 SQLite 切換為 Postgres修復 evals 服務的 Docker 端口沖突讓 evals Docker 設置支持 Windows在裸機安裝腳本中改用 mise-en-place 工具鏈確保運行 evals 前練習庫保持最新。這些條目印證了文檔所述架構與功能的真實性與活躍度CLI、Docker 化、Postgres、并發 Runner、實時事件推送都是在持續迭代中形成的。評估理念把 Agent 當作員工而非模型來打分倉庫內apps/web-roo-code/src/content/blog/score-agents-like-employees-not-like-models.md是一篇與 evals 主題直接相關的官方博客它給出了 Roo Code 評估體系背后的理念代碼正確性基準無法覆蓋 Agent 的真實失敗模式漂移、上下文丟失、靜默失敗因此建議圍繞四個工作風格維度打分主動性Proactivity是否持續推進還是卡住就停下等待上下文管理Context management在多文件改動中能否不丟失需求溝通Communication執行前是否說明計劃卡住時是否主動暴露測試Testing是否自行驗證工作成果而不是交付未驗證代碼。并給出了可落地的構建方法先用真人按上述四維打分再訓練LLM-as-a-judge復現真人評分兩者相關后用于規模化評估同時保留人工抽查。這篇文章與 SKILL.md 描述的在隔離 VS Code 環境中運行真實編碼任務的評估形態互為表里可以幫助你從為什么需要這套系統的角度理解 evals 架構。使用邊界與注意事項當前公開快照未包含packages/evals/與apps/web-evals/目錄若需修改這些模塊的代碼需在包含 evals 子系統的完整工程中操作練習內容exercises存放在外部倉庫 Roo-Code-Evals新增練習時要注意遵循packages/evals/ADDING-EVALS.md的目錄規范Redis 在系統中只負責 pub/sub 實時事件不要誤把它當作任務隊列來擴展——并發控制發生在 Controller 的 p-queue 中三個服務端口5433/6380/3446是默認值與常見服務默認端口錯開排查連接問題時先確認這幾個端口。至此你已經掌握了 Roo Code Evals 系統的完整代碼地圖從兩處 evals 位置的辨析到packages/evals、apps/web-evals、apps/web-roo-code/src/app/evals三大模塊的結構再到 Controller/Runner/Redis/PostgreSQL 的分布式架構與本地運行命令。后續無論是新增練習、調整 CLI 編排、改進管理界面還是修改公開展示頁都可以按本文的任務速查快速定位到對應文件。【免費下載鏈接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.項目地址: https://gitcode.com/GitHub_Trending/ro/Roo-Code創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考