一键导入
model-manager
Test, validate, and add new AI models to the eval suite. Use when user asks to add new models, test model access, check pricing, or update models.yml.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Test, validate, and add new AI models to the eval suite. Use when user asks to add new models, test model access, check pricing, or update models.yml.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Run ONE outer-loop iteration of a long-running mission (default: the V1 mission) — observe mission state, pick the top backlog item, route it through design-doc-creator → sprint-planner → sprint-executor → sprint-evaluator with the mission's model routing policy, record a log entry, and run the retro. Use when user says "run mission control", "mission iteration", "work the v1 backlog", or when fired nightly by the dev.ailang.mission-control launchd job.
Create AILANG design documents in the correct format and location. Use when user asks to create a design doc, plan a feature, or document a design. Handles both planned/ and implemented/ docs with proper structure.
Execute approved sprint plans with test-driven development, continuous linting, progress tracking, and pause points. Supports parallel milestone execution via Task sub-agents. Use when user says "execute sprint", "start sprint", or wants to implement an approved sprint plan.
Triage SonarCloud issues and hotspots via the SonarCloud Web API — check gate status, list open BLOCKER/CRITICAL bugs + vulns, group hotspots by rule, bulk-mark hotspots Safe per rule, transition issues to False Positive, and change the New Code period. Use whenever the user mentions SonarCloud, Sonar, quality gate red/failing, code smells to triage, marking hotspots safe, marking issues as false positive, setting new code period, or asks "why is the Sonar gate red" — even if they only reference a specific rule like go:S2245 without naming SonarCloud.
Run automated post-release workflow (eval baselines, dashboard, docs) for AILANG releases. Runs the tier-based benchmark suite (core+stretch+frontier by default) for standard + agent evals with validation and progress reporting. Use when user says "post-release tasks for vX.X.X" or "update dashboard". Fully autonomous with pre-flight checks.
Create and manage AILANG eval benchmarks. Use when user asks to create benchmarks, fix benchmark issues, debug failing benchmarks, or analyze benchmark results.
基于 SOC 职业分类
| name | model-manager |
| description | Test, validate, and add new AI models to the eval suite. Use when user asks to add new models, test model access, check pricing, or update models.yml. |
Test API access, validate configurations, and add new AI models to the AILANG eval suite.
Most common usage:
# User says: "Can we add GPT-5.1 to the eval suite?"
# This skill will:
# 1. Test API access to GPT-5.1
# 2. Find the correct API model name
# 3. Look up pricing information
# 4. Update models.yml configuration
# 5. Run a test benchmark to verify
Invoke this skill when:
scripts/test_model_access.sh <provider> <model-name>Test API access to a model and display authentication status.
Usage:
# Test OpenAI model
scripts/test_model_access.sh openai gpt-5.1
# Test Anthropic model
scripts/test_model_access.sh anthropic claude-sonnet-4-5-20250929
# Test Google Gemini via Vertex AI
scripts/test_model_access.sh google gemini-3-pro-preview-11-2025
Output:
Testing: openai/gpt-5.1
✓ OPENAI_API_KEY found
✓ API call successful
✓ Model: gpt-5.1-2025-11-13
✓ Tokens: 13 input, 10 output (10 reasoning)
Ready to add to models.yml
scripts/find_model_info.sh <model-keywords>Search for model information using web search and return API names + pricing.
Usage:
# Find GPT-5.1 info
scripts/find_model_info.sh "GPT-5.1 API model name pricing"
# Find Gemini 3 Pro info
scripts/find_model_info.sh "Gemini 3 Pro API documentation"
Output:
Searching for: GPT-5.1 API model name pricing
✓ Found API names:
- gpt-5.1 (Thinking mode)
- gpt-5.1-chat-latest (Instant mode)
✓ Pricing:
Input: $1.25 per 1M tokens
Output: $10.00 per 1M tokens
Cached: $0.125 per 1M tokens
scripts/update_models_yml.sh <friendly-name> <api-name> <provider> <input-price> <output-price>Add a new model to models.yml configuration.
Usage:
# Add GPT-5.1
scripts/update_models_yml.sh \
gpt5-1 \
"gpt-5.1" \
openai \
0.00125 \
0.01
Output:
Adding model to models.yml:
Friendly name: gpt5-1
API name: gpt-5.1
Provider: openai
Pricing: $0.00125 / $0.01 per 1K tokens
✓ Updated models.yml
✓ Validated YAML syntax
✓ Ready to test
scripts/verify_vertex_model.sh <model-name>Check if a Gemini model is available in Vertex AI.
Usage:
# Check if Gemini 3 Pro is available
scripts/verify_vertex_model.sh gemini-3-pro-preview-11-2025
Output:
Checking Vertex AI for: gemini-3-pro-preview-11-2025
✓ GCP project: multivac-internal-prod
✓ Access token obtained
✗ Model not found (404)
Recommendation: Monitor for availability, check again in 1-2 weeks
scripts/run_test_benchmark.sh <model-name>Run a small test benchmark to verify model works end-to-end.
Usage:
# Test GPT-5.1 with fizzbuzz benchmark
scripts/run_test_benchmark.sh gpt5-1
Output:
Running test benchmark: fizzbuzz
Model: gpt5-1
✓ Benchmark completed
✓ Result: PASS (100%)
✓ Tokens: 245 input, 89 output
✓ Cost: $0.002
Model is ready for production use
First, verify you can call the model:
# Use test_model_access.sh
scripts/test_model_access.sh openai gpt-5.1
What to check:
For Gemini models:
gcloud auth application-default loginverify_vertex_model.shSearch for official documentation:
# Find API model name and pricing
scripts/find_model_info.sh "GPT-5.1 API documentation pricing"
What to gather:
gpt-5.1 not GPT-5.1)Reference: See resources/provider_endpoints.md
Add the model configuration:
# Add to models.yml
scripts/update_models_yml.sh \
<friendly-name> \
<api-name> \
<provider> \
<input-per-1k> \
<output-per-1k>
Naming conventions:
gpt5-1, claude-sonnet-4-5, gemini-3-proAlso update:
benchmark_suite, extended_suite, dev_models)Verify end-to-end:
# Test with a simple benchmark
scripts/run_test_benchmark.sh <model-name>
What to verify:
Rule of thumb (project-wide):
Rule out adding a model to our eval suite if it can't pass ALL the smoke tests.
The smoke test is the canonical smoke tier — benchmarks tagged tier: smoke
in their YAML spec, selected with --tier smoke (NOT a hand-typed --benchmarks
list). These are the fundamental "can it speak AILANG at all" tests that the
established frontier tier passes cleanly. If a candidate fails them, the failure is
on the model, not the harness or the benchmark.
The smoke tier is the source of truth — do NOT hardcode a benchmark list.
Run ailang eval-suite --tier smoke --dry-run to see the current set (23 as of
2026-06-16, up from 17 — it grows, so always derive it, never trust this number).
It includes fizzbuzz, adt_option, gcd_lcm, nested_records, record_update,
recursion_fibonacci, type_safe_record_access, balanced_parens, etc. — all fundamental.
⚠️ csv_to_json_converter is
tier: core, NOTtier: smoke. An earlier version of this skill hardcodedfizzbuzz,adt_option,csv_to_json_converteras "the smoke set." That was wrong: csv_to_json is a core-tier discriminator that the majority of frontier models fail in standard mode (gpt5 base, gemini-3-pro, gemini-3-flash, sonnet-4-5, gpt5-mini all FAIL it; only the top tier — opus-4-6/4-7, sonnet-4-6, gemini-3-1-pro, gpt5-2-codex/gpt5-4 — pass). Gating OS models on csv_to_json means "be top-3-tier or be cut," which unfairly excludes viable models. Keep csv_to_json in--tier coreruns for ranking, never as an include/exclude gate. (Empirically verified against eval baselines 2026-06-02.)
Run smoke against a candidate (canonical tier):
Standard mode accepts --tier smoke directly. Agent mode requires an explicit
--benchmarks list (deliberate cost guardrail), so derive it from the tier:
tags — never hardcode (the list drifts):
# Derive the smoke set from the tier tags (works for both modes, stays in sync)
SMOKE=$(grep -l 'tier: smoke' benchmarks/*.yml | xargs -n1 basename | sed 's/\.yml$//' | paste -sd, -)
# Standard mode:
ailang eval-suite --models <candidate>,claude-sonnet-4-6 --tier smoke \
--langs ailang --output /tmp/smoke_<candidate> --parallel 2
# Agent mode (must pass the derived list explicitly):
ailang eval-suite --agent --models <candidate>,claude-sonnet-4-6 \
--benchmarks "$SMOKE" --langs ailang --output /tmp/smoke_<candidate> --parallel 2
# Tabulate pass/fail (agent mode → results land under /agent, standard → /standard)
for f in /tmp/smoke_<candidate>/*/*.json; do
name=$(basename "$f" .json | sed 's/_[0-9]*$//')
jq -r --arg name "$name" '"\($name)\t\(if .compile_ok and .runtime_ok and .stdout_ok then "PASS" else "FAIL" end)\t\(.err_code // .error_category // "—")"' "$f"
done | column -ts $'\t'
Decision tree (N = number of benchmarks in the smoke tier, 23 as of 2026-06-16 — derive it, don't assume):
tier: tag) before evaluating candidates.motoko-or-gemma-4-26b,
motoko-or-qwen3-5-35b-a3b). Re-run periodically; if it starts passing the
tier clean, that's a signal stdlib/prompt has improved. Note: agent-mode
failures with error_category: api_error + "step budget exhausted" are a
harness step-budget cap, not a model gap — don't count them as capability
failures (bump the motoko v2 step budget instead).Failure-mode taxonomy (worth capturing in the cut commit message):
| Failure | Meaning | Likely cause |
|---|---|---|
WRONG_LANG | Model produced Python/JS instead of AILANG | Prompt-following gap; small/MoE models lose plot at 23k-token system prompt |
syntax-error (no WRONG_LANG) | Invented AILANG syntax (e.g. let rec, \n. lambda) | Model hasn't seen enough AILANG in training |
wrong-output | Compiled and ran, wrong stdout | Spec-following gap, not language gap |
runtime-error | Compiled, crashed at runtime | Logic bug |
2026-05-04 finding (precedent): Tested 6 SOTA OS models (Gemma 4 26B, Qwen3
30B-A3B, Qwen3 235B-A22B, DeepSeek V4 Flash, Kimi K2.6, Qwen3 Coder Flash)
against this smoke set. Proprietary baselines passed 3/3; zero OS models
passed all 3. Most common failure: WRONG_LANG (model produced Python). Even
frontier-class OS models fall back on training-corpus patterns when given
AILANG's 23k-token teaching prompt — they've seen plenty of Python but very
little AILANG. Two near-misses (or-gemma-4-26b, or-qwen3-coder-flash)
retained on the watchlist; rest cut.
Implication for stdlib/prompt work: the smoke test doubles as a language-improvement metric. Re-run it after stdlib changes or prompt revisions; if the near-miss watchlist starts passing the third benchmark, the language has become more "trainable-feel."
Caveat — agent mode is a separate gate: the smoke set above runs in
standard (single-shot API generation) mode. Models that fail standard mode
may still perform usefully in agent mode (--agent flag, opencode/pi
harnesses) where they get multi-turn iteration. If a candidate fails standard
smoke, run ailang eval-suite --agent --models <candidate> ... separately
before fully cutting it. Agent mode results don't override the standard-mode
gate but can justify adding the model under a different harness entry (e.g.
opencode-<candidate>, pi-<candidate>).
2026-05-04 agent-mode smoke finding (precedent): Tested 9 OS-via-OR candidates through opencode harness. Cross-mode behaviour:
| Model | Standard | Agent | Δ |
|---|---|---|---|
| GLM 5 (z.ai) | not tested | 3/3 ✅ | — first OS model to pass |
| Gemma 4 26B | 2/3 | 2/3 | 0 (same near-miss) |
| DeepSeek V4 Flash | 0/3 | 2/3 | +2 (agent unlock) |
| GLM 4.7 Flash | not tested | 2/3 | — near-miss |
| Kimi K2.6 | 1/3 | 1/3 | 0 |
| Qwen3 30B-A3B | 1/3 | 1/3 | 0 |
| Qwen3 Coder Flash | 2/3 | 1/3 | -1 (agent regressed) |
| DeepSeek V4 Pro | not tested | 1/3 | Pro under-performed Flash |
| Qwen3 235B-A22B | 0/3 | 0/3 | 0 |
Key takeaways for the model-manager workflow:
Agent mode is not a universal fix. Most models that fail standard smoke also fail agent smoke. Multi-turn helps when the model can read compile errors and adjust; it hurts when the model interprets tool-call setup as the answer (Qwen3 Coder Flash regression).
Pro tier ≠ better. DeepSeek V4 Pro (1/3) under-performed V4 Flash (2/3) on AILANG smoke. The Pro reasoning/long-output overhead can hurt simple-task accuracy. Test both tiers when available.
csv_to_json_converter is a core-tier DISCRIMINATOR, not a smoke gate.
Of the 27 benchmark runs (9 models × 3), csv_to_json was the single most-failed
test — only GLM 5 passed it among OS candidates. ⚠️ CORRECTION (2026-06-02):
this is exactly why it must NOT gate inclusion — it's failed by the majority of
frontier models (gpt5 base, gemini-3-pro, gemini-3-flash, sonnet-4-5, gpt5-mini
all FAIL; only opus-4-6/4-7, sonnet-4-6, gemini-3-1-pro, gpt5-2-codex/gpt5-4
pass). It lives in tier: core, not tier: smoke. Use it as a high-signal
ranking/discriminator metric in --tier core runs and as a language-
improvement tracker — never as an OS-model include/exclude gate. The gate is
--tier smoke.
GLM 5 is genuinely cost-competitive frontier OS. $0.60/$2.08 per 1M tokens, ~5–7× cheaper than Claude Sonnet 4.6 on input. Worth standing inclusion in eval rotation alongside frontier proprietary models.
Vendor-prefix wiring is forward-compat infrastructure. When adding
models from a new vendor (e.g. z-ai/, moonshotai/, microsoft/,
minimax/), add the prefix to
internal/ai/config.go::openrouterVendorPrefixes so future ad-hoc
ailang run --ai vendor/model invocations work without needing a
models.yml entry.
Per-benchmark timeouts can be tighter than agent-mode needs. The
csv_to_json_converter.yml spec has timeout: 90s baked in (set to
match Claude Sonnet 4.6's ~43s typical solve time). OS models in agent
mode routinely need 90–180s of iteration on csv_to_json — they CAN
solve it but get killed by the timeout. Two follow-up models that
demonstrated this on 2026-05-04:
error_category=api_error and stderr saying "exceeded hard timeout
(1m30s)", the failure is the benchmark spec, not the model.api_error vs syntax-error vs WRONG_LANG matters. When tabulating
smoke results, always check error_category:
api_error — infrastructure issue (rate limit, timeout, network).
Re-run before counting against the model.compile_error (no err_code) — syntax-error: model produced AILANG
that doesn't parse. Genuine model gap.WRONG_LANG — model produced Python/JS/etc. instead of AILANG.
Genuine prompt-following gap.runtime_error — compiled but crashed. Logic bug in generation.--tier core to decide add/replace (HARD RULE)Passing smoke is necessary but NOT sufficient. Smoke says "this model can speak AILANG at all"; it does NOT say "this model is good enough to add" or "this model beats the incumbent." Those are RANKING questions, and smoke is saturated — every frontier-class model scores ~the same on it. Never make an add/keep/replace decision on smoke numbers. Make it on
--tier core.
Why: the smoke tier is deliberately fundamental ("can it speak AILANG"), so any
viable model passes ~all of it. A smoke tie is the expected outcome, not a
signal — it carries zero ranking information. The discriminator is the core
tier (--tier core, ~26 benchmarks incl. csv_to_json_converter, the
contract/state-machine tests) where frontier models genuinely spread.
Decision flow once a candidate PASSES smoke:
--tier core head-to-head vs the
claude-sonnet-4-6 anchor to size where it lands. Add to suites if it earns it.--tier core for candidate + incumbent + anchor in ONE command, --langs ailang. Only promote/replace if the candidate matches-or-beats the incumbent
on core. A core tie at higher cost → keep the incumbent. A clear core win →
the cost bump may be justified.# The discriminating run — candidate vs incumbent vs anchor, core tier, one command:
ailang eval-suite --models <candidate>,<incumbent>,claude-sonnet-4-6 \
--tier core --langs ailang --output /tmp/core_<candidate> --parallel 4
⚠️ Anti-pattern (2026-06-16, GLM-5.2 vs GLM-5.1): GLM-5.2 (newest z-ai, reasoning model, 1M ctx, +43% price) cleared standard smoke at 22/23 — an exact tie with GLM-5.1 (both failed only
dense_operator_program, which theclaude-sonnet-4-6anchor ALSO failed → a benchmark/harness issue, not a model gap). The first-pass conclusion was "tie at +43% cost → keep GLM-5.1." That was WRONG. A smoke tie is meaningless because smoke is saturated — it proves only that GLM-5.2 cleared the floor and QUALIFIES. The replacement decision had to be made on--tier core, where the two versions can actually separate. Rule: when a candidate ties the incumbent on smoke, that's your cue to run core, NOT your answer.
Update relevant documentation:
max_completion_tokens for GPT-5.1)If model looks good:
# Run small eval suite
ailang eval-suite --models <model-name> --benchmarks fizzbuzz,recursion_factorial
# Run full suite (expensive!)
make eval-baseline EVAL_VERSION=vX.Y.Z FULL=true
See resources/provider_endpoints.md for:
See resources/pricing_guide.md for:
This skill loads information progressively:
scripts/ (testing, updating, verification)Important:
max_completion_tokens instead of max_tokensPrerequisites:
gcloud CLI installed and authenticatedgcloud config set project PROJECT_ID)curl, python3, and jq available in PATHFiles modified by this skill:
internal/eval_harness/models.yml - Model configurationsprompts/vX.Y.Z.md - Teaching prompts.claude/skills/model-manager/resources/ - Local model database