Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-cli-eval-cc3a89f3038d ,按照其中的说明把「cli-eval」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
npm install -g omniroute # or: npx omniroute
omniroute --version
evalExample:
omniroute eval
eval suitesExample:
omniroute eval suites
eval listExample:
omniroute eval list
eval get <suiteId>Example:
omniroute eval get <suiteId>
eval createFlags:
--file <path>Example:
omniroute eval create
eval run <suiteId>Flags:
-m, --model <id>--combo <name>--concurrency <n>--tag <tag>--watchExample:
omniroute eval run <suiteId>
eval listFlags:
--suite <id>--status <s>--since <ts>--limit <n>Example:
omniroute eval list
eval get <runId>Example:
omniroute eval get <runId>
eval results <runId>Flags:
--failedExample:
omniroute eval results <runId>
eval cancel <runId>Flags:
--yesExample:
omniroute eval cancel <runId>
eval scorecard <runId>Example:
omniroute eval scorecard <runId>
simulate [prompt]Flags:
--file <path>-m, --model <id>--combo <name>--reasoning-effort <level>--thinking-budget <n>--explainExample:
omniroute simulate [prompt]
Requires the omniroute CLI. See CLI entry-point skill for install + global flags.
Evals are automated test suites that score LLM outputs against expected answers or rubrics. OmniRoute stores suites and run results in its local database.
omniroute eval suites list # List all eval suites
omniroute eval suites list --json # JSON output
omniroute eval suites get <suiteId> # Full suite definition
omniroute eval suites create \
--name "code-quality" \
--rubric "exact-match" \
--samples-file ./samples.jsonl # JSONL: {input, expected_output}
Rubric options: exact-match, contains, llm-judge, regex.
--samples-file format (one JSON object per line):
{"input": "What is 2+2?", "expected_output": "4"}
{"input": "Translate 'hello' to Spanish", "expected_output": "hola"}
omniroute eval suites run <suiteId> \
--model claude-sonnet-4-6 # Run suite against a specific model
omniroute eval suites run <suiteId> \
--model gpt-4o \
--watch # Live TUI progress (EvalWatch)
The run is asynchronous. Use --watch for a live terminal dashboard or poll manually:
RUN_ID=$(omniroute eval suites run <suiteId> --model claude-sonnet-4-6 --output json | jq -r '.id')
omniroute eval get $RUN_ID
omniroute eval list # List all eval runs
omniroute eval list --json
omniroute eval get <runId> # Run details (status, model, score)
omniroute eval results <runId> # Per-sample results
omniroute eval scorecard <runId> # Full scorecard with pass/fail per sample
omniroute eval cancel <runId> # Cancel a running eval
omniroute eval scorecard <runId> --output json
Response fields per sample:
{
"id": "sample-1",
"score": 0.95,
"passed": true,
"input": "What is 2+2?",
"output": "4",
"expected": "4"
}
Run the same suite against multiple models and compare:
for MODEL in claude-sonnet-4-6 gpt-4o gemini-2.0-flash; do
omniroute eval suites run $SUITE_ID --model $MODEL --output json | jq '{model: .model, score: .score}'
done
# Run and fail CI if score drops below threshold
SCORE=$(omniroute eval suites run $SUITE_ID --model claude-sonnet-4-6 --output json | jq -r '.score')
python3 -c "import sys; score=float('$SCORE'); sys.exit(0 if score >= 0.90 else 1)"
suites create fails with invalid rubric → use one of: exact-match, contains, llm-judge, regexsuites run returns model not found → verify model ID with omniroute models --search <name>eval get shows status: failed → check omniroute logs --search eval for error detailsscorecard returns empty results → the run may still be running; poll omniroute eval get <runId> until status is completed