
Yolo Master Agent
- 1 installs
- 611 repo stars
- Updated August 4, 2026
- tencent/yolo-master
Helps with ai & agent building tasks during AI-assisted development.
About
yolo-master-agent is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- yolo-master-agent
- AI & Agent Building
- AI-coding skill
Yolo Master Agent by the numbers
- 1 all-time installs (skills.sh)
- Ranked #14,098 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/tencent/yolo-master --skill yolo-master-agentAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 611 |
| Last updated | August 4, 2026 |
| Repository | tencent/yolo-master ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
YOLO-Master Agent Skill
Use This Skill
Use this skill for any repository task that should drive the YOLO-Master stack end-to-end:
train,val,predict,track,export,benchmark,tune- model inspection and task detection
- LoRA save/load/merge and
yolo.lora.diagnose - PEFT comparison via
yolo.eval.peft_compare - Sparse SAHI comparison via
yolo.eval.sparse_sahi_compare - MoE diagnose/prune
- multimodal visual inference with OpenAI VLM/LLM cooperation
- multimodal batch evaluation over a dataset or image folder
solutionsworkflows- launchers for Gradio / Streamlit
- end-to-end orchestration via
yolo.pipeline.experiment
Execution Rule
First make sure the local Ultralytics framework is installed and the yolo CLI is available. Prefer the CLI over raw Python API for supported commands, and use the bundled dispatcher when you want a deterministic, structured run:
python -m pip install -e .
yolo version
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.train","inputs":{"model":"yolo11n.pt","data":"coco8.yaml"},"params":{"epochs":1,"imgsz":32}}'On Apple Silicon hosts with PyTorch MPS support, the dispatcher now defaults heavy compute modes such as train, val, benchmark, predict, and track to device=mps when no explicit device is provided. Override with runtime.device or params.device if needed.
If the CLI run is auto-selected onto MPS/CUDA and fails for a device-level runtime reason, the dispatcher will retry once on CPU and return a structured recovery record with the full attempt trail.
When you need fast coverage across many skills or requests, use the AutoTrain-style validator first:
python agent/scripts/validate_yolo_master_skill.py --suite quick --pretty --summary-onlyquick is the default agent loop. It combines fast-smoke, dry-run, and contract so agents can iterate without waiting on real model inspection or CLI cold-start probes. Use all only when you explicitly want the slower full non-manual regression pass. The case pack now lives in assets/autotrain_cases/ as skill-grouped JSON files. It includes multimodal dry-run/contract probes plus dry-run coverage for yolo.pipeline.experiment, yolo.lora.diagnose, and yolo.eval.peft_compare.
For quick regression checks, prefer the tiered suites:
python agent/scripts/validate_yolo_master_skill.py --suite quick --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite fast-smoke --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite cli-smoke --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite deep-smoke --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite extended --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite dry-run --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite contract --pretty --summary-only
python agent/scripts/validate_yolo_master_skill.py --suite all --pretty --summary-onlyWorkflow
1. Inspect the request and normalize paths. 2. Install/refresh the local Ultralytics package first when the yolo CLI is missing. 3. Prefer policy.dry_run=true while validating or evolving the skill surface. 4. On Apple Silicon, let the dispatcher pick mps by default for train/val/eval unless the request already sets device. 5. Let the dispatcher auto-complete safe runtime defaults such as workers=0 on macOS train/val paths when the request leaves them unset. 6. Use yolo CLI for supported tasks; fall back to Python API only when the CLI does not cover the action. 7. For predict and track, accept source in either inputs.source or params.source; the dispatcher will normalize it before CLI emission. 8. Pass all task-specific options through params unchanged. 9. Return structured artifacts, metrics, evaluation summaries, environment reports, and next actions. 10. For long jobs, set policy.async=true on train/tune/pipeline requests to submit a subprocess job and return job_id, status, stdout/stderr, manifest, and progress paths.
Multimodal Inference
yolo.multimodal.infer is an optional enhancement layer for visual reasoning. It does not replace yolo.predict: it runs YOLO first, condenses detections into reasoning evidence, then calls the OpenAI Responses API with input_text plus input_image, and optionally runs a second LLM refinement pass.
Environment variables:
OPENAI_API_KEYOPENAI_BASE_URLoptionalOPENAI_API_MODEoptional,auto,responses, orchat.completionsOPENAI_VLM_MODELoptionalOPENAI_LLM_MODELoptionalstructured_output=trueasks the VLM/LLM to return a strict JSON verdict that can be parsed intoverdictprompt_template=vlm_coco_multitaskasks the VLM to output caption, global classification, COCO-style object proposals, rough segmentation proxies, YOLO cross-checks, and fusion hintsprompt_template=vlm_open_world_detectionasks the VLM to preserve open-world objects, optional COCO mappings, rough segmentation proxies, captioning, and fusion hints for novel categoriesprompt_template=vlm_open_world_detection_compactis the compact open-world schema tuned for providers that tend to truncate long JSON, especiallyqwen-vl-plusprompt_template=vlm_open_world_detect_classify_compactfocuses on a few grounded object proposals plus scene-level classesprompt_template=vlm_open_world_caption_misses_compactfocuses on scene captioning plus the most important likely missesmax_output_tokensdefaults to3500in COCO multitask template mode; avoid lowering it below this unless you also reduce schema fieldsuse_marked_image=truedraws numbered YOLO boxes onto a lightweight marked copy before VLM inspectionvisual_search_mode=autolets the VLM request crop-and-zoom follow-ups throughvisual_search.needs_zoomandsearch_regionsfusion_mode=previewconverts parsed VLM/LLM hints into metric-safe keep/suppress/add/relabel/adjust proposals plus COCO-style prediction records; usefusion_mode=offto disable itfusion_policy=add_onlyis now the default. It only allows filtered high-confidence VLM additions that look like genuine misses; usebalancedoraggressiveonly when you explicitly want VLM-driven suppress/adjust/relabel actionsfusion_policy=open_world_assistis the opt-in exploratory path. It keeps the normal metric preview for COCO-mappable outputs, but also preserves unmapped open-world objects inmultimodal.fusion.open_world_predictions_preview- open-world normalization now tries to anchor novel labels against the bundled
LVIS 1203andV3Det 13204taxonomies, and batch reports exposetaxonomy.best,taxonomy.candidates, dataset hit counts, and unmatched totals - taxonomy matching is now intentionally conservative by default:
open_world_taxonomy_min_score=40open_world_taxonomy_require_exact_for_generic=true
This prevents weak generic matches such as grass -> bear grass from being treated as confirmed taxonomy anchors unless you explicitly loosen the policy
- open-world report aggregation now separates:
enhancement_stats: labels allowed to enter open-world enhancement statisticsreasoning_only: labels preserved for agent reasoning but filtered from aggregate enhancement stats
Default filters are:
open_world_filter_unmatched_taxonomy=trueopen_world_filter_generic_labels=trueopen_world_assist_profilegives the agent a higher-level mode switch for open-world runs without forcing you to set every threshold by hand:strictdefault for evaluation-oriented runs: stronger taxonomy gate, generic labels filtered, unmatched labels kept as reasoning-onlybalanced: keeps generic filtering, but allows unmatched taxonomy labels to remain in enhancement statsexploratory: lowest taxonomy gate, generic/unmatched labels stay in enhancement stats for broad discovery passes
Explicit param values still win over the profile defaults
- core implementation now lives in `runtime/`;
scripts/contains only thin executable wrappers that delegate into `runtime/cli/` - opt-in hooks now exist for:
- IoU-based open-world relabeling via
open_world_iou_relabel_enabled - WordNet hypernym fallback when taxonomy matching misses
- cross-profile verified-list merging for prompt ensemble style arbitration
- When
vlm_modellooks likeqwen-vl-*andprompt_template=vlm_open_world_detection, the dispatcher now auto-switches to a compact task profile unless you explicitly request a different template path: - default:
vlm_open_world_detect_classify_compact - caption/miss emphasis:
vlm_open_world_caption_misses_compact - override with
compact_open_world_profile=detect_classify|caption_misses
Behavior:
thinking_with_image=trueattaches the image to the VLM requestenable_llm_refine=trueorOPENAI_LLM_MODELenables the refinement pass- missing
OPENAI_API_KEYreturns a structuredblockedresult - Provider-aware defaults can be externalized under
runtime/multimodal/providers/*.yaml; built-in configs currently includeopenaianddashscope. - DashScope/OpenAI-compatible chat endpoints can use
params.provider="dashscope"plusDASHSCOPE_API_KEY, or setOPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1withparams.openai_api_mode="chat.completions". - the manifest now preserves the
multimodalblock, including parsed verdicts, visual-search crop passes, fusion preview, and artifact paths when available - every response envelope includes
usage.tokensandcost_estimate; cost isnullwhen provider pricing is not configured.
Example:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.multimodal.infer","inputs":{"model":"yolo11n.pt","source":"ultralytics/assets/bus.jpg","prompt":"What matters most in this image?"},"params":{"thinking_with_image":true,"vlm_model":"gpt-4.1-mini","llm_model":"gpt-4.1-mini","max_reasoning_items":3,"max_reasoning_boxes":20},"policy":{"dry_run":true}}' --prettyCOCO multitask VLM prompt:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.multimodal.infer","inputs":{"model":"yolo11n.pt","source":"ultralytics/assets/bus.jpg","prompt":"Detect, classify, segment roughly, caption, and propose metric-safe fusion changes."},"params":{"thinking_with_image":true,"structured_output":true,"prompt_template":"vlm_coco_multitask","use_marked_image":true,"visual_search_mode":"auto","fusion_mode":"preview","vlm_model":"qwen-vl-plus","llm_model":"qwen-plus","openai_api_mode":"chat.completions"}}' --prettyOpen-world VLM prompt:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.multimodal.infer","inputs":{"model":"yolo11n.pt","source":"ultralytics/assets/bus.jpg","prompt":"Find visible objects, including novel categories outside COCO, and preserve them for downstream reasoning."},"params":{"thinking_with_image":true,"structured_output":true,"prompt_template":"vlm_open_world_detection","use_marked_image":true,"visual_search_mode":"auto","fusion_mode":"preview","fusion_policy":"open_world_assist","vlm_model":"qwen-vl-plus","llm_model":"qwen-plus","openai_api_mode":"chat.completions"}}' --prettyMultimodal Batch Evaluation
Use yolo.multimodal.evaluate when the agent needs to evaluate a real image sample or dataset split with YOLO first, then VLM/LLM cross-checks.
inputs.dataselects a dataset YAML such ascoco128.yaml;params.splitdefaults tovalinputs.sourcemay point to a local image folder, image file, or image-list text fileparams.limit,offset,stride,shuffle, andseedcontrol sampling;limit=0means all resolved imagesparams.run_yolo_val=truealso runs a YOLO-only validation baseline wheninputs.datais available- Ground-truth labels are read for reporting when available; they are not added to the VLM prompt unless
include_ground_truth_in_prompt=true params.prompt_template="vlm_coco_multitask"enables VLM-side detection/classification/rough segmentation/caption output for downstream fusion experimentsparams.prompt_template="vlm_open_world_detection"enables a less conservative open-world path where novel categories are preserved even when they cannot be mapped into COCO metricsparams.use_marked_image=trueandparams.visual_search_mode=autoenable Set-of-Mark-style box grounding and crop/zoom follow-up callsparams.fusion_mode="preview"writes conservative fused prediction previews and, for batch evaluation, afusion-preview-coco-predictions.jsonartifact for downstream COCO scoring- Fusion is policy- and confidence-guarded by default:
add_onlyblocks suppress/relabel/adjust, and even in broader policies high-confidence YOLO boxes are protected while box adjustments must stay close to the original box - In
open_world_assist, unmapped novel objects are emitted toopen_world_predictions_previewinstead of being dropped; only COCO-mappable predictions participate in metric preview and guardrail selection open_world_assistnow defaults to an add-first posture: it prefers preserving novel objects and no longer enables suppress/adjust/relabel by default- When YOLO-format labels are available,
evaluation.metric_previewcompares YOLO-only vs fused predictions on the sampled images and writesfusion-metric-preview.json; treat it as a fast same-sample guardrail, not an official benchmark metric_guardrailwritesmetric-guarded-coco-predictions.json: it keeps fused predictions only when there is a material change and same-samplemap50_95shows a positive delta without recall regression; otherwise it falls back to YOLO-only predictions
Example:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.multimodal.evaluate","runtime":{"prefer_cli":true,"prefer_mps":true},"inputs":{"model":"yolo11n.pt","data":"coco128.yaml","prompt":"Cross-check detector outputs and summarize obvious false positives, misses, duplicates, and uncertainty."},"params":{"limit":5,"split":"val","imgsz":640,"batch":1,"thinking_with_image":true,"prompt_template":"vlm_coco_multitask","use_marked_image":true,"visual_search_mode":"auto","fusion_mode":"preview","vlm_model":"qwen-vl-plus","llm_model":"qwen-plus","openai_base_url":"https://dashscope.aliyuncs.com/compatible-mode/v1","openai_api_mode":"chat.completions"},"policy":{"dry_run":false}}' --prettyAutoTrain Loop
Use the bundled validator and case pack to keep this skill honest:
- case pack:
assets/autotrain_cases/grouped by skill, withassets/autotrain_cases.jsonretained for compatibility - report:
logs/autotrain-report.json - bootstrap:
python -m pip install -e . - dispatcher supports
policy.dry_run=truefor cheap coverage before real runs yoloCLI is the preferred execution surface for supported actionsquickis the default iteration suite:fast-smoke+dry-run+contract- the validator enables a short-lived runtime cache for Torch/MPS detection so repeated subprocess cases do not re-import the stack
fast-smokeprotects bootstrap and planning paths with tight timing budgetscli-smokevalidates realyoloCLI cold-start executiondeep-smokeholds heavyweight real-model inspection and local.ptinference checksallruns every non-manual case, including slowercli-smokeanddeep-smokeextended-clicarries slower real CLI validation probes such as mini-datasetyolo trainandyolo valonmps, and is markedmanual_onlycontractverifies failure-path behavior and manifest emissioncontractnow also includes in-process recovery probes so auto device fallback semantics stay covered without adding test-only hooks to the dispatchercontractincludes single-image and batch multimodal stub probes so OpenAI-compatible request shaping, structured verdict parsing, and aggregation stay covered- CLI failures now carry categorized hints so the agent can recover instead of stopping at a raw traceback.
- Built-in dataset YAML names such as
coco128.yamlare auto-resolved against the local repository before execution. doctorreturns environment, device selection source, and agent-facing recommendations.- CLI train/val/predict/benchmark/export responses now carry environment metadata, and auto-selected runs can include a recovery trail when a device fallback occurs.
Pipeline And PEFT Tools
Use yolo.pipeline.experiment for end-to-end train/val/export/benchmark flows. It accepts either stage keys such as train, val, export, benchmark, or an explicit params.stages list, and can include inspect, lora_diagnose, moe_diagnose, and peft_compare. Real runs write progress.jsonl next to the manifest for file-tail progress monitoring.
Use yolo.lora.diagnose to inspect active or loaded adapters:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.lora.diagnose","inputs":{"model":"yolo11n.pt"},"params":{"path":"runs/train/exp/weights/lora_adapter_best","svd_max_layers":20,"spectrum_max_layers":12},"policy":{"dry_run":true}}' --prettyUse yolo.eval.peft_compare to compare Full-SFT and PEFT variants with the same base train/val settings:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.eval.peft_compare","inputs":{"model":"yolo11n.pt","data":"coco8.yaml"},"params":{"train":{"epochs":1,"imgsz":32,"batch":1},"variants":[{"name":"full_sft","train":{"lora_r":0}},{"name":"lora_r8","train":{"lora_type":"lora","lora_r":8,"lora_alpha":16}}]},"policy":{"dry_run":true}}' --prettyManual Probes
Use these when you want stronger confidence than the default smoke suites without pulling slow jobs into routine validation.
Environment doctor and adaptive install probe:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.system","action":"doctor","params":{"ensure_cli":true}}' --prettyReal CLI training and validation probes on the bundled mini dataset:
python agent/scripts/validate_yolo_master_skill.py --suite extended --pretty --summary-onlyEquivalent direct CLI train command:
yolo train model=scripts/peft_validation/yolo11n.pt data=agent/assets/mini-detect/mini_detect.yaml imgsz=64 epochs=1 batch=1 device=mps workers=0 plots=False verbose=False patience=1 project=runs/agent name=train-mini-mps-manualEquivalent direct CLI val command:
yolo val model=scripts/peft_validation/yolo11n.pt data=agent/assets/mini-detect/mini_detect.yaml imgsz=16 batch=1 device=mps workers=0 plots=False verbose=False project=runs/agent name=val-mini-mps-manualStructured dispatcher example with automatic MPS selection:
python agent/scripts/run_yolo_master_skill.py --json '{"skill":"yolo.train","runtime":{"prefer_cli":true,"prefer_mps":true},"inputs":{"model":"scripts/peft_validation/yolo11n.pt","data":"agent/assets/mini-detect/mini_detect.yaml"},"params":{"epochs":1,"imgsz":64,"batch":1,"workers":0,"plots":false,"verbose":false,"patience":1},"artifacts":{},"policy":{"dry_run":false}}' --prettyRegenerate the taxonomy-enriched small-batch open-world report from an existing real-run log:
python agent/scripts/regenerate_open_world_report.py \
--input agent/logs/qwen-open-world-small-batch.json \
--json-out agent/logs/qwen-open-world-small-batch-report.json \
--md-out agent/logs/qwen-open-world-small-batch-report.mdReferences
- Read `README.md` for the concise directory map and maintenance boundaries.
- Read `references/skill-architecture.md` for the full architecture map, skill registry, request/response contract, and execution logic.
- Read `references/thinking-with-image.md` when improving VLM visual reasoning, marked-image prompting, crop/zoom search, or COCO metric fusion.
- Read the open-world taxonomy assets in `assets/open-world-taxonomy` for reusable class references, including
LVIS 1203andV3Det 13204category lists plus source metadata.
Guardrails
- Do not hardcode new CLI strings when a Python API exists.
- Keep
paramsas the pass-through layer for new Ultralytics arguments. - Prefer
yoloCLI for supported commands; use Python API only as fallback. - On Apple Silicon, prefer
mpsfor training and validation unless the request explicitly overrides the device. - Consume
evaluationin addition tometricswhen judging train/val runs. - Use
yolo.system doctorbefore long runs when the agent needs to confirm install state, selected device, and local repo activation. - Prefer the
recoveryfield over raw stderr when a run auto-falls back from MPS/CUDA to CPU. - Keep slow real training out of default validator suites; use the manual probe path instead.
- Treat UI launchers and research scripts as launcher-style skills, not plain sync functions.
[
{
"name": "system_install_dry_run",
"suite": "fast-smoke",
"request": {
"skill": "yolo.system",
"action": "install",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.cmd.0"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "system_version",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "version",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"data.version"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "system_cfg",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "cfg.get",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"data.cfg"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "system_cfg_copy",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "cfg.copy",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"artifacts.0.path"
],
"path_exists": [
"manifest",
"artifacts.0.path"
]
}
},
{
"name": "system_doctor",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "doctor",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"equals": {
"data.environment.cli.available": true,
"data.environment.ultralytics.local_repo_active": true
},
"paths": [
"data.environment.devices.selected",
"data.environment.devices.selection_source",
"data.recommendations",
"data.environment.cli.path",
"environment.devices.available.0"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "inspect_master_yaml",
"suite": "deep-smoke",
"request": {
"skill": "yolo.model.inspect",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml"
},
"params": {
"actions": [
"info",
"names",
"device",
"task_map"
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"data.task",
"data.task_map"
],
"nonempty": [
"data.names"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "predict_local_pt",
"suite": "deep-smoke",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 64,
"device": "cpu",
"save": false,
"max_items": 1
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"nonempty": [
"results"
],
"paths": [
"results.0.path",
"job.save_dir",
"logs.cmd.0"
],
"path_exists": [
"manifest",
"job.save_dir"
]
}
},
{
"name": "train_mini_mps_cli",
"suite": "extended-cli",
"manual_only": true,
"request": {
"skill": "yolo.train",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt",
"data": "agent/assets/mini-detect/mini_detect.yaml"
},
"params": {
"imgsz": 64,
"epochs": 1,
"batch": 1,
"workers": 0,
"plots": false,
"verbose": false,
"patience": 1
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"equals": {
"job.device": "mps"
},
"paths": [
"job.save_dir",
"logs.cmd.0",
"evaluation.map50_95",
"evaluation.speed_ms.inference"
],
"path_exists": [
"manifest",
"job.save_dir"
]
}
},
{
"name": "val_mini_mps_cli",
"suite": "extended-cli",
"manual_only": true,
"request": {
"skill": "yolo.val",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt",
"data": "agent/assets/mini-detect/mini_detect.yaml"
},
"params": {
"imgsz": 16,
"batch": 1,
"workers": 0,
"plots": false,
"verbose": false
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"equals": {
"job.device": "mps"
},
"paths": [
"job.save_dir",
"logs.cmd.0",
"evaluation.map50_95",
"evaluation.speed_ms.inference"
],
"path_exists": [
"manifest",
"job.save_dir"
]
}
},
{
"name": "predict_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 32,
"conf": 0.25
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"auto_completed.device"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "predict_source_param_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml"
},
"params": {
"source": "ultralytics/assets/bus.jpg",
"imgsz": 32,
"max_items": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.inputs.source",
"auto_completed.device"
],
"equals": {
"environment.references.source.exists": true
},
"contains": {
"plan.params.cmd": "source="
},
"path_exists": [
"manifest"
]
}
},
{
"name": "track_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.track",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 32,
"conf": 0.25
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.inputs.source",
"auto_completed.device"
],
"equals": {
"plan.target": "yolo",
"environment.references.source.exists": true
},
"contains": {
"plan.params.cmd": "track"
},
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_infer_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Summarize the important visual evidence and cross-check YOLO detections."
},
"params": {
"imgsz": 64,
"thinking_with_image": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"openai_api_mode": "chat.completions",
"max_reasoning_items": 1,
"max_reasoning_boxes": 8
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.stages.0.name",
"plan.params.stages.1.executor",
"plan.params.stages.2.enabled",
"multimodal.api_key_env"
],
"equals": {
"plan.params.stages.1.image": "input_image",
"multimodal.method": "thinking-with-image",
"multimodal.thinking_with_image": true
},
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_evaluate_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.evaluate",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets",
"prompt": "Batch-check sample images and summarize detector agreement."
},
"params": {
"limit": 2,
"split": "val",
"thinking_with_image": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"openai_api_mode": "chat.completions",
"run_yolo_val": false
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.stages.0.name",
"plan.params.sample_count",
"multimodal.dataset.source",
"multimodal.dataset.sample_count"
],
"equals": {
"plan.target": "yolo.multimodal.evaluate",
"plan.params.stages.1.target": "YOLO(...).predict",
"multimodal.thinking_with_image": true,
"multimodal.api_key_env": "OPENAI_API_KEY"
},
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_open_world_qwen_compact_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects outside COCO and preserve them for open-world reasoning."
},
"params": {
"thinking_with_image": true,
"structured_output": true,
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"vlm_model": "qwen-vl-plus",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"equals": {
"multimodal.prompt_template": "vlm_open_world_detect_classify_compact",
"plan.params.stages.1.prompt_template": "vlm_open_world_detect_classify_compact",
"plan.params.stages.1.marked_image": true
},
"paths": [
"dry_run",
"plan.params.stages.1.model",
"multimodal.vlm_model"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_open_world_qwen_caption_misses_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Caption the scene and highlight the most important missed objects outside COCO."
},
"params": {
"thinking_with_image": true,
"structured_output": true,
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"vlm_model": "qwen-vl-plus",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"equals": {
"multimodal.prompt_template": "vlm_open_world_caption_misses_compact",
"plan.params.stages.1.prompt_template": "vlm_open_world_caption_misses_compact"
},
"paths": [
"dry_run",
"plan.params.stages.1.model"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_open_world_exploratory_profile_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects outside COCO and keep exploratory open-world candidates for downstream reasoning."
},
"params": {
"thinking_with_image": true,
"structured_output": true,
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"open_world_assist_profile": "exploratory",
"vlm_model": "qwen-vl-plus",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"equals": {
"multimodal.open_world_assist_profile": "exploratory",
"multimodal.open_world_filters.taxonomy_min_score": 20,
"multimodal.open_world_filters.taxonomy_require_exact_for_generic": false,
"multimodal.open_world_filters.filter_unmatched_taxonomy": false,
"multimodal.open_world_filters.filter_generic_labels": false
},
"paths": [
"dry_run",
"plan.params.stages.1.prompt_template"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "train_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"epochs": 1,
"imgsz": 32,
"batch": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"auto_completed.device"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "val_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.val",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"imgsz": 32,
"batch": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"auto_completed.device"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "export_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.export",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml"
},
"params": {
"format": "onnx",
"imgsz": 32
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"environment.devices.selection_source"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "benchmark_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.benchmark",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"imgsz": 32,
"device": "cpu"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"environment.devices.selection_source"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "tune_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.tune",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"iterations": 1,
"epochs": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "lora_train_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.lora.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"epochs": 1,
"imgsz": 32,
"batch": 1,
"lora_r": 8,
"lora_alpha": 16,
"lora_type": "lora"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "lora_train_ia3_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.lora.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"epochs": 1,
"imgsz": 32,
"batch": 1,
"lora_type": "ia3"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"auto_completed.device"
],
"contains": {
"plan.params.cmd": "lora_type=ia3"
},
"path_exists": [
"manifest"
]
}
},
{
"name": "moe_diagnose_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.moe.diagnose",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"batch_size": 1,
"verbose": false
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "moe_prune_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.moe.prune",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"threshold": 0.15
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "solutions_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.solutions.run",
"inputs": {
"solution": "count",
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"show": false
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "ui_launch_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.ui.launch",
"inputs": {
"mode": "gradio"
},
"params": {},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "pipeline_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.pipeline.experiment",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"task": "detect",
"data": "coco8.yaml"
},
"params": {
"train": {
"epochs": 1,
"imgsz": 32,
"batch": 1
},
"val": {
"imgsz": 32
},
"export": {
"format": "onnx",
"imgsz": 32
}
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "predict_missing_source_error",
"suite": "contract",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt"
},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "failed",
"returncode": 1,
"paths": [
"error.type"
],
"nonempty": [
"error.traceback"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_missing_openai_key_blocked",
"suite": "contract",
"env": {
"OPENAI_API_KEY": null
},
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Cross-check this image with the detector evidence."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "blocked",
"returncode": 1,
"nonempty": [
"results"
],
"equals": {
"multimodal.vlm.status": "blocked",
"multimodal.provider.api_key_present": false,
"multimodal.image.attached": false
},
"paths": [
"multimodal.vlm.summary",
"multimodal.image.requested"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_openai_stub_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Return the visual answer, evidence, uncertainty, and next actions."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"prompt_template": "vlm_coco_multitask",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions",
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_stub",
"skill": "yolo.multimodal.infer"
},
"expect": {
"status": "ok",
"equals": {
"data.call_count": 2,
"data.vlm.status": "ok",
"data.llm_refine.status": "ok",
"data.image.kind": "local_file",
"data.image.attached": true,
"payload.multimodal.fusion.strategy": "metric_safe_v1",
"payload.multimodal.fusion.summary.fused_boxes": 1
},
"contains": {
"data.vlm.text": "vlm answer",
"data.llm_refine.text": "refined answer",
"data.calls.0.body.messages.1.content.0.text": "vlm_detections"
},
"paths": [
"data.vlm.verdict.answer",
"data.llm_refine.verdict.yolo_cross_check.confirmed",
"data.calls.0.body.messages.1.content.1.image_url.url",
"data.calls.1.body.messages.1.content.0.text",
"payload.multimodal.provider.base_url",
"payload.multimodal.image.marked.path",
"payload.multimodal.image.reasoning_input",
"payload.multimodal.fusion.coco_predictions_preview"
],
"path_exists": [
"payload.manifest",
"payload.multimodal.image.marked.path",
"payload.artifacts.0.path",
"payload.artifacts.1.path"
]
}
},
{
"name": "multimodal_open_world_stub_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects, including novel categories outside COCO, and preserve them for open-world reasoning."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions",
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_stub",
"skill": "yolo.multimodal.infer"
},
"expect": {
"status": "ok",
"equals": {
"data.call_count": 2,
"payload.multimodal.fusion.policy": "open_world_assist",
"payload.multimodal.fusion.summary.open_world_added": 1
},
"contains": {
"data.vlm.text": "open-world vlm answer",
"data.calls.0.body.messages.1.content.0.text": "open_label"
},
"paths": [
"payload.multimodal.fusion.open_world_predictions_preview.0.open_label",
"payload.multimodal.fusion.actions.0.type",
"payload.multimodal.provider.base_url"
],
"path_exists": [
"payload.manifest",
"payload.multimodal.image.marked.path"
]
}
},
{
"name": "multimodal_open_world_taxonomy_guardrail_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects, including generic regions outside COCO, and preserve them conservatively for open-world reasoning."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions",
"open_world_taxonomy_min_score": 40,
"open_world_taxonomy_require_exact_for_generic": true,
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_stub",
"skill": "yolo.multimodal.infer"
},
"expect": {
"status": "ok",
"equals": {
"payload.multimodal.open_world_comparison.open_world_predictions.0.open_label": "grass",
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.matched": true,
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.match_status": "hypernym_fallback",
"payload.multimodal.open_world_comparison.open_world_predictions.0.include_in_open_world_stats": true,
"payload.multimodal.open_world_comparison.open_world_predictions.0.open_world_report_bucket": "enhancement_stats"
},
"paths": [
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.raw_best.name",
"payload.multimodal.open_world_comparison.possible_misses.0.taxonomy.raw_best.name"
],
"contains": {
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.best.name": "gramineous plant"
}
}
},
{
"name": "multimodal_evaluate_stub_probe",
"suite": "contract",
"executor": "probe",
"env": {
"OPENAI_API_KEY": "stub-key"
},
"request": {
"skill": "yolo.multimodal.evaluate",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "agent/assets/mini-detect/images",
"prompt": "Evaluate this image sample with YOLO and VLM evidence."
},
"params": {
"limit": 2,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_batch_stub",
"skill": "yolo.multimodal.evaluate"
},
"expect": {
"status": "ok",
"equals": {
"data.call_count": 6,
"data.aggregate.images_processed": 2,
"data.aggregate.verdict_parse_rate": 1.0,
"data.baseline_status": "skipped",
"payload.multimodal.dataset.sample_count": 2,
"payload.results.0.status": "ok",
"payload.evaluation.fusion_summary.fused_boxes": 2,
"payload.evaluation.metric_preview.status": "ok",
"payload.evaluation.metric_preview.yolo.map50": 1.0,
"payload.evaluation.metric_preview.fused.map50_95": 1.0,
"payload.metric_guardrail.selected": "yolo_only"
},
"paths": [
"data.first_item.multimodal.vlm.verdict.answer",
"data.first_item.multimodal.llm_refine.verdict.yolo_cross_check.confirmed",
"data.first_item.multimodal.fusion.strategy",
"payload.evaluation.cross_check_flag_counts.confirmed",
"payload.evaluation.metric_preview.delta.map50_95",
"payload.metric_guardrail.reason",
"payload.results.0.metric_preview.yolo.map50",
"payload.results.0.detector.summary.detections.0.label"
],
"path_exists": [
"payload.manifest",
"payload.artifacts.0.path",
"payload.artifacts.1.path",
"payload.artifacts.2.path",
"payload.artifacts.3.path"
]
}
},
{
"name": "recovery_auto_retry_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.train"
},
"probe": {
"kind": "recovery_auto_retry",
"skill": "yolo.train",
"mode": "train",
"device": "mps",
"selection_source": "auto",
"model": "m.pt"
},
"expect": {
"status": "ok",
"equals": {
"data.attempt_count": 2,
"data.final_device": "cpu",
"data.recovery.recovered": true,
"data.recovery.strategy": "device_fallback_to_cpu",
"data.recovery.to_device": "cpu",
"data.calls.1.2": "device=cpu"
},
"paths": [
"data.recovery.trigger.category",
"data.calls.0.2",
"data.calls.1.2"
]
}
},
{
"name": "recovery_explicit_device_guard_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.train"
},
"probe": {
"kind": "recovery_no_retry",
"skill": "yolo.train",
"mode": "train",
"device": "mps",
"selection_source": "runtime"
},
"expect": {
"status": "ok",
"equals": {
"data.should_retry": false,
"data.classification.category": "mps_runtime_error",
"data.classification.device": "mps"
}
}
},
{
"name": "lora_diagnose_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.lora.diagnose",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"task": "detect"
},
"params": {
"svd_sample_ratio": 0.2,
"svd_max_layers": 4,
"spectrum_max_layers": 4,
"spectrum_topk": 4
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"usage.tokens",
"cost_estimate"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "peft_compare_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.eval.peft_compare",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"task": "detect",
"data": "coco8.yaml"
},
"params": {
"train": {
"epochs": 1,
"imgsz": 32,
"batch": 1
},
"val": {
"imgsz": 32
},
"variants": [
{
"name": "full_sft",
"train": {
"lora_r": 0
}
},
{
"name": "lora_r8",
"train": {
"lora_type": "lora",
"lora_r": 8,
"lora_alpha": 16
}
}
],
"rank_metric": "map50_95"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"usage.tokens",
"cost_estimate"
],
"path_exists": [
"manifest"
]
}
}
]
{
"cases": [
{
"name": "benchmark_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.benchmark",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"imgsz": 32,
"device": "cpu"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"environment.devices.selection_source"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "export_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.export",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml"
},
"params": {
"format": "onnx",
"imgsz": 32
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"environment.devices.selection_source"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "lora_train_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.lora.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"epochs": 1,
"imgsz": 32,
"batch": 1,
"lora_r": 8,
"lora_alpha": 16,
"lora_type": "lora"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "lora_train_ia3_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.lora.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"epochs": 1,
"imgsz": 32,
"batch": 1,
"lora_type": "ia3"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"auto_completed.device"
],
"contains": {
"plan.params.cmd": "lora_type=ia3"
},
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "inspect_master_yaml",
"suite": "deep-smoke",
"request": {
"skill": "yolo.model.inspect",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml"
},
"params": {
"actions": [
"info",
"names",
"device",
"task_map"
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"data.task",
"data.task_map"
],
"nonempty": [
"data.names"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "moe_diagnose_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.moe.diagnose",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"batch_size": 1,
"verbose": false
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"moe_diagnose.layer_summary",
"moe_diagnose.artifacts"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "moe_prune_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.moe.prune",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"threshold": 0.15
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"moe_prune.layer_details",
"moe_prune.validation_before",
"moe_prune.validation_after"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "multimodal_evaluate_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.evaluate",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets",
"prompt": "Batch-check sample images and summarize detector agreement."
},
"params": {
"limit": 2,
"split": "val",
"thinking_with_image": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"openai_api_mode": "chat.completions",
"run_yolo_val": false
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.stages.0.name",
"plan.params.sample_count",
"multimodal.dataset.source",
"multimodal.dataset.sample_count"
],
"equals": {
"plan.target": "yolo.multimodal.evaluate",
"plan.params.stages.1.target": "YOLO(...).predict",
"multimodal.thinking_with_image": true,
"multimodal.api_key_env": "OPENAI_API_KEY"
},
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_evaluate_stub_probe",
"suite": "contract",
"executor": "probe",
"env": {
"OPENAI_API_KEY": "stub-key"
},
"request": {
"skill": "yolo.multimodal.evaluate",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "agent/assets/mini-detect/images",
"prompt": "Evaluate this image sample with YOLO and VLM evidence."
},
"params": {
"limit": 2,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_batch_stub",
"skill": "yolo.multimodal.evaluate"
},
"expect": {
"status": "ok",
"equals": {
"data.call_count": 6,
"data.aggregate.images_processed": 2,
"data.aggregate.verdict_parse_rate": 1.0,
"data.baseline_status": "skipped",
"payload.multimodal.dataset.sample_count": 2,
"payload.results.0.status": "ok",
"payload.evaluation.fusion_summary.fused_boxes": 2,
"payload.evaluation.metric_preview.status": "ok",
"payload.evaluation.metric_preview.yolo.map50": 1.0,
"payload.evaluation.metric_preview.fused.map50_95": 1.0,
"payload.metric_guardrail.selected": "yolo_only"
},
"paths": [
"data.first_item.multimodal.vlm.verdict.answer",
"data.first_item.multimodal.llm_refine.verdict.yolo_cross_check.confirmed",
"data.first_item.multimodal.fusion.strategy",
"payload.evaluation.cross_check_flag_counts.confirmed",
"payload.evaluation.metric_preview.delta.map50_95",
"payload.metric_guardrail.reason",
"payload.results.0.metric_preview.yolo.map50",
"payload.results.0.detector.summary.detections.0.label"
],
"path_exists": [
"payload.manifest",
"payload.artifacts.0.path",
"payload.artifacts.1.path",
"payload.artifacts.2.path",
"payload.artifacts.3.path"
]
}
}
]
}
{
"cases": [
{
"name": "multimodal_infer_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Summarize the important visual evidence and cross-check YOLO detections."
},
"params": {
"imgsz": 64,
"thinking_with_image": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"openai_api_mode": "chat.completions",
"max_reasoning_items": 1,
"max_reasoning_boxes": 8
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.stages.0.name",
"plan.params.stages.1.executor",
"plan.params.stages.2.enabled",
"multimodal.api_key_env"
],
"equals": {
"plan.params.stages.1.image": "input_image",
"multimodal.method": "thinking-with-image",
"multimodal.thinking_with_image": true
},
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_open_world_qwen_compact_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects outside COCO and preserve them for open-world reasoning."
},
"params": {
"thinking_with_image": true,
"structured_output": true,
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"vlm_model": "qwen-vl-plus",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"equals": {
"multimodal.prompt_template": "vlm_open_world_detect_classify_compact",
"plan.params.stages.1.prompt_template": "vlm_open_world_detect_classify_compact",
"plan.params.stages.1.marked_image": true
},
"paths": [
"dry_run",
"plan.params.stages.1.model",
"multimodal.vlm_model"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_open_world_qwen_caption_misses_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Caption the scene and highlight the most important missed objects outside COCO."
},
"params": {
"thinking_with_image": true,
"structured_output": true,
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"vlm_model": "qwen-vl-plus",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"equals": {
"multimodal.prompt_template": "vlm_open_world_caption_misses_compact",
"plan.params.stages.1.prompt_template": "vlm_open_world_caption_misses_compact"
},
"paths": [
"dry_run",
"plan.params.stages.1.model"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_open_world_exploratory_profile_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects outside COCO and keep exploratory open-world candidates for downstream reasoning."
},
"params": {
"thinking_with_image": true,
"structured_output": true,
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"open_world_assist_profile": "exploratory",
"vlm_model": "qwen-vl-plus",
"openai_api_mode": "chat.completions"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"equals": {
"multimodal.open_world_assist_profile": "exploratory",
"multimodal.open_world_filters.taxonomy_min_score": 20,
"multimodal.open_world_filters.taxonomy_require_exact_for_generic": false,
"multimodal.open_world_filters.filter_unmatched_taxonomy": false,
"multimodal.open_world_filters.filter_generic_labels": false
},
"paths": [
"dry_run",
"plan.params.stages.1.prompt_template"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_missing_openai_key_blocked",
"suite": "contract",
"env": {
"OPENAI_API_KEY": null
},
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Cross-check this image with the detector evidence."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "blocked",
"returncode": 1,
"nonempty": [
"results"
],
"equals": {
"multimodal.vlm.status": "blocked",
"multimodal.provider.api_key_present": false,
"multimodal.image.attached": false
},
"paths": [
"multimodal.vlm.summary",
"multimodal.image.requested"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "multimodal_openai_stub_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Return the visual answer, evidence, uncertainty, and next actions."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"prompt_template": "vlm_coco_multitask",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions",
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_stub",
"skill": "yolo.multimodal.infer"
},
"expect": {
"status": "ok",
"equals": {
"data.call_count": 2,
"data.vlm.status": "ok",
"data.llm_refine.status": "ok",
"data.image.kind": "local_file",
"data.image.attached": true,
"payload.multimodal.fusion.strategy": "metric_safe_v1",
"payload.multimodal.fusion.summary.fused_boxes": 1
},
"contains": {
"data.vlm.text": "vlm answer",
"data.llm_refine.text": "refined answer",
"data.calls.0.body.messages.1.content.0.text": "vlm_detections"
},
"paths": [
"data.vlm.verdict.answer",
"data.llm_refine.verdict.yolo_cross_check.confirmed",
"data.calls.0.body.messages.1.content.1.image_url.url",
"data.calls.1.body.messages.1.content.0.text",
"payload.multimodal.provider.base_url",
"payload.multimodal.image.marked.path",
"payload.multimodal.image.reasoning_input",
"payload.multimodal.fusion.coco_predictions_preview"
],
"path_exists": [
"payload.manifest",
"payload.multimodal.image.marked.path",
"payload.artifacts.0.path",
"payload.artifacts.1.path"
]
}
},
{
"name": "multimodal_open_world_stub_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects, including novel categories outside COCO, and preserve them for open-world reasoning."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions",
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_stub",
"skill": "yolo.multimodal.infer"
},
"expect": {
"status": "ok",
"equals": {
"data.call_count": 2,
"payload.multimodal.fusion.policy": "open_world_assist",
"payload.multimodal.fusion.summary.open_world_added": 1
},
"contains": {
"data.vlm.text": "open-world vlm answer",
"data.calls.0.body.messages.1.content.0.text": "open_label"
},
"paths": [
"payload.multimodal.fusion.open_world_predictions_preview.0.open_label",
"payload.multimodal.fusion.actions.0.type",
"payload.multimodal.provider.base_url"
],
"path_exists": [
"payload.manifest",
"payload.multimodal.image.marked.path"
]
}
},
{
"name": "multimodal_open_world_taxonomy_guardrail_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Discover visible objects, including generic regions outside COCO, and preserve them conservatively for open-world reasoning."
},
"params": {
"skip_yolo": true,
"thinking_with_image": true,
"enable_llm_refine": true,
"vlm_model": "gpt-4.1-mini",
"llm_model": "gpt-4.1-mini",
"prompt_template": "vlm_open_world_detection",
"fusion_policy": "open_world_assist",
"openai_base_url": "https://example.invalid/v1",
"openai_api_mode": "chat.completions",
"open_world_taxonomy_min_score": 40,
"open_world_taxonomy_require_exact_for_generic": true,
"detections": [
{
"path": "ultralytics/assets/bus.jpg",
"detections": [
{
"label": "bus",
"confidence": 0.9,
"xyxy": [
10,
20,
100,
160
]
}
]
}
]
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"probe": {
"kind": "multimodal_stub",
"skill": "yolo.multimodal.infer"
},
"expect": {
"status": "ok",
"equals": {
"payload.multimodal.open_world_comparison.open_world_predictions.0.open_label": "grass",
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.matched": true,
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.match_status": "hypernym_fallback",
"payload.multimodal.open_world_comparison.open_world_predictions.0.include_in_open_world_stats": true,
"payload.multimodal.open_world_comparison.open_world_predictions.0.open_world_report_bucket": "enhancement_stats"
},
"paths": [
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.raw_best.name",
"payload.multimodal.open_world_comparison.possible_misses.0.taxonomy.raw_best.name"
],
"contains": {
"payload.multimodal.open_world_comparison.open_world_predictions.0.taxonomy.best.name": "gramineous plant"
}
}
}
]
}
{
"cases": [
{
"name": "pipeline_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.pipeline.experiment",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"task": "detect",
"data": "coco8.yaml"
},
"params": {
"train": {
"epochs": 1,
"imgsz": 32,
"batch": 1
},
"val": {
"imgsz": 32
},
"export": {
"format": "onnx",
"imgsz": 32
}
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"pipeline.stage_order",
"usage.tokens",
"cost_estimate"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "predict_local_pt",
"suite": "deep-smoke",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 64,
"device": "cpu",
"save": false,
"max_items": 1
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"nonempty": [
"results"
],
"paths": [
"results.0.path",
"job.save_dir",
"logs.cmd.0"
],
"path_exists": [
"manifest",
"job.save_dir"
]
}
},
{
"name": "predict_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 32,
"conf": 0.25
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"auto_completed.device"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "predict_source_param_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml"
},
"params": {
"source": "ultralytics/assets/bus.jpg",
"imgsz": 32,
"max_items": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.inputs.source",
"auto_completed.device"
],
"equals": {
"environment.references.source.exists": true
},
"contains": {
"plan.params.cmd": "source="
},
"path_exists": [
"manifest"
]
}
},
{
"name": "predict_missing_source_error",
"suite": "contract",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt"
},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "failed",
"returncode": 1,
"paths": [
"error.type"
],
"nonempty": [
"error.traceback"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "solutions_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.solutions.run",
"inputs": {
"solution": "count",
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"show": false
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "system_install_dry_run",
"suite": "fast-smoke",
"request": {
"skill": "yolo.system",
"action": "install",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.cmd.0"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "system_version",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "version",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"data.version"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "system_cfg",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "cfg.get",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"data.cfg"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "system_cfg_copy",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "cfg.copy",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"paths": [
"artifacts.0.path"
],
"path_exists": [
"manifest",
"artifacts.0.path"
]
}
},
{
"name": "system_doctor",
"suite": "cli-smoke",
"request": {
"skill": "yolo.system",
"action": "doctor",
"inputs": {},
"params": {},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"equals": {
"data.environment.cli.available": true,
"data.environment.ultralytics.local_repo_active": true
},
"paths": [
"data.environment.devices.selected",
"data.environment.devices.selection_source",
"data.recommendations",
"data.environment.cli.path",
"environment.devices.available.0"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "track_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.track",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 32,
"conf": 0.25
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.inputs.source",
"auto_completed.device"
],
"equals": {
"plan.target": "yolo",
"environment.references.source.exists": true
},
"contains": {
"plan.params.cmd": "track"
},
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "train_mini_mps_cli",
"suite": "extended-cli",
"manual_only": true,
"request": {
"skill": "yolo.train",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt",
"data": "agent/assets/mini-detect/mini_detect.yaml"
},
"params": {
"imgsz": 64,
"epochs": 1,
"batch": 1,
"workers": 0,
"plots": false,
"verbose": false,
"patience": 1
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"equals": {
"job.device": "mps"
},
"paths": [
"job.save_dir",
"logs.cmd.0",
"evaluation.map50_95",
"evaluation.speed_ms.inference"
],
"path_exists": [
"manifest",
"job.save_dir"
]
}
},
{
"name": "train_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"epochs": 1,
"imgsz": 32,
"batch": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"auto_completed.device"
],
"path_exists": [
"manifest"
]
}
},
{
"name": "recovery_auto_retry_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.train"
},
"probe": {
"kind": "recovery_auto_retry",
"skill": "yolo.train",
"mode": "train",
"device": "mps",
"selection_source": "auto",
"model": "m.pt"
},
"expect": {
"status": "ok",
"equals": {
"data.attempt_count": 2,
"data.final_device": "cpu",
"data.recovery.recovered": true,
"data.recovery.strategy": "device_fallback_to_cpu",
"data.recovery.to_device": "cpu",
"data.calls.1.2": "device=cpu"
},
"paths": [
"data.recovery.trigger.category",
"data.calls.0.2",
"data.calls.1.2"
]
}
},
{
"name": "recovery_explicit_device_guard_probe",
"suite": "contract",
"executor": "probe",
"request": {
"skill": "yolo.train"
},
"probe": {
"kind": "recovery_no_retry",
"skill": "yolo.train",
"mode": "train",
"device": "mps",
"selection_source": "runtime"
},
"expect": {
"status": "ok",
"equals": {
"data.should_retry": false,
"data.classification.category": "mps_runtime_error",
"data.classification.device": "mps"
}
}
}
]
}
{
"cases": [
{
"name": "tune_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.tune",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"iterations": 1,
"epochs": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "ui_launch_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.ui.launch",
"inputs": {
"mode": "gradio"
},
"params": {},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "val_mini_mps_cli",
"suite": "extended-cli",
"manual_only": true,
"request": {
"skill": "yolo.val",
"inputs": {
"model": "scripts/peft_validation/yolo11n.pt",
"data": "agent/assets/mini-detect/mini_detect.yaml"
},
"params": {
"imgsz": 16,
"batch": 1,
"workers": 0,
"plots": false,
"verbose": false
},
"artifacts": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "ok",
"equals": {
"job.device": "mps"
},
"paths": [
"job.save_dir",
"logs.cmd.0",
"evaluation.map50_95",
"evaluation.speed_ms.inference"
],
"path_exists": [
"manifest",
"job.save_dir"
]
}
},
{
"name": "val_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.val",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"imgsz": 32,
"batch": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"environment.devices.selected",
"auto_completed.device"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "lora_diagnose_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.lora.diagnose",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"task": "detect"
},
"params": {
"svd_sample_ratio": 0.2,
"svd_max_layers": 4,
"spectrum_max_layers": 4,
"spectrum_topk": 4
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"usage.tokens",
"cost_estimate"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "peft_compare_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.eval.peft_compare",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"task": "detect",
"data": "coco8.yaml"
},
"params": {
"train": {
"epochs": 1,
"imgsz": 32,
"batch": 1
},
"val": {
"imgsz": 32
},
"variants": [
{
"name": "full_sft",
"train": {
"lora_r": 0
}
},
{
"name": "lora_r8",
"train": {
"lora_type": "lora",
"lora_r": 8,
"lora_alpha": 16
}
}
],
"rank_metric": "map50_95"
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"usage.tokens",
"cost_estimate"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "stability_train_dry_run",
"suite": "stability-check",
"stability": true,
"comment": "模型无关稳定性校验:train dry_run 响应结构必须满足 schema+behavior 规则,与使用哪个模型无关",
"request": {
"skill": "yolo.train",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": { "epochs": 1, "imgsz": 32, "batch": 1 },
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "manifest"]
}
},
{
"name": "stability_val_dry_run",
"suite": "stability-check",
"stability": true,
"comment": "val dry_run:切换到不同验证数据集后响应结构不变",
"request": {
"skill": "yolo.val",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": { "imgsz": 32 },
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "manifest"]
}
},
{
"name": "stability_predict_dry_run",
"suite": "stability-check",
"stability": true,
"comment": "predict dry_run:source 路径变化不影响响应结构",
"request": {
"skill": "yolo.predict",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": { "conf": 0.25, "imgsz": 32 },
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "manifest"]
}
},
{
"name": "stability_multimodal_blocked_schema",
"suite": "stability-check",
"stability": true,
"comment": "无 API Key 时 multimodal.infer 必须返回 blocked,结构字段不随 query/model 变化",
"env": {
"OPENAI_API_KEY": null
},
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "Describe the scene."
},
"params": {
"thinking_with_image": true,
"vlm_model": "gpt-4.1-mini"
},
"policy": { "dry_run": false }
},
"expect": {
"status": "blocked",
"paths": ["multimodal", "manifest"]
}
},
{
"name": "stability_multimodal_blocked_schema_qwen",
"suite": "stability-check",
"stability": true,
"comment": "换成 qwen provider 且无 key,blocked 行为必须一致(provider 无关)",
"env": {
"OPENAI_API_KEY": null,
"DASHSCOPE_API_KEY": null
},
"request": {
"skill": "yolo.multimodal.infer",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg",
"prompt": "列出图片中的物体。"
},
"params": {
"thinking_with_image": true,
"vlm_model": "qwen-vl-plus",
"llm_model": "qwen-plus",
"openai_api_mode": "chat.completions"
},
"policy": { "dry_run": false }
},
"expect": {
"status": "blocked",
"paths": ["multimodal", "manifest"]
}
},
{
"name": "stability_lora_diagnose_dry_run",
"suite": "stability-check",
"stability": true,
"comment": "lora.diagnose dry_run:不同适配器路径不影响计划结构",
"request": {
"skill": "yolo.lora.diagnose",
"inputs": { "model": "yolo11n.pt" },
"params": {
"path": "runs/train/exp/weights/lora_adapter_best",
"svd_max_layers": 20
},
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "manifest"]
}
},
{
"name": "stability_peft_compare_dry_run",
"suite": "stability-check",
"stability": true,
"comment": "peft_compare dry_run:variants 列表变化不影响响应 envelope 结构",
"request": {
"skill": "yolo.eval.peft_compare",
"inputs": { "model": "yolo11n.pt", "data": "coco8.yaml" },
"params": {
"train": { "epochs": 1, "imgsz": 32, "batch": 1 },
"variants": [
{ "name": "full_sft", "train": { "lora_r": 0 } },
{ "name": "lora_r16", "train": { "lora_type": "lora", "lora_r": 16, "lora_alpha": 32 } }
]
},
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "manifest"]
}
},
{
"name": "stability_pipeline_dry_run",
"suite": "stability-check",
"stability": true,
"comment": "pipeline.experiment dry_run:不同阶段组合不影响顶层 envelope 结构",
"request": {
"skill": "yolo.pipeline.experiment",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"data": "coco8.yaml"
},
"params": {
"stages": ["train", "val", "export"],
"train": { "epochs": 1, "imgsz": 32, "batch": 1 },
"val": {},
"export": { "format": "onnx" }
},
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "manifest"]
}
},
{
"name": "stability_system_doctor_schema",
"suite": "stability-check",
"stability": true,
"comment": "system.doctor:不同机器/设备配置下结构必须一致",
"request": {
"skill": "yolo.system",
"action": "doctor",
"params": { "ensure_cli": false }
},
"expect": {
"status": "ok",
"paths": ["manifest"]
}
},
{
"name": "stability_multimodal_evaluate_dry_run_schema",
"suite": "stability-check",
"stability": true,
"comment": "multimodal.evaluate dry_run:换 limit/split/provider 后计划结构不变",
"request": {
"skill": "yolo.multimodal.evaluate",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets",
"prompt": "Cross-check detections."
},
"params": {
"limit": 3,
"split": "val",
"thinking_with_image": true,
"vlm_model": "gpt-4.1-mini",
"openai_api_mode": "chat.completions",
"fusion_mode": "preview",
"fusion_policy": "add_only"
},
"policy": { "dry_run": true }
},
"expect": {
"status": "ok",
"paths": ["dry_run", "plan.target", "multimodal.dataset.source", "manifest"]
}
}
]
}
{
"cases": [
{
"name": "sparse_sahi_compare_dry_run",
"suite": "dry-run",
"request": {
"skill": "yolo.eval.sparse_sahi_compare",
"inputs": {
"model": "ultralytics/cfg/models/master/v0_1/det/yolo-master-n.yaml",
"source": "ultralytics/assets/bus.jpg"
},
"params": {
"imgsz": 224,
"conf": 0.25,
"limit": 1
},
"artifacts": {},
"policy": {
"dry_run": true
}
},
"expect": {
"status": "ok",
"paths": [
"dry_run",
"plan.target",
"plan.params.stages"
],
"path_exists": [
"manifest"
]
}
}
]
}
{
"cases": [
{
"name": "job_status_missing_contract",
"suite": "contract",
"request": {
"skill": "yolo.job.status",
"inputs": {
"job_id": "missing-job-contract"
},
"params": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "failed",
"paths": [
"job.job_id",
"job.status",
"manifest"
],
"equals": {
"job.status": "missing"
}
}
},
{
"name": "job_cancel_missing_contract",
"suite": "contract",
"request": {
"skill": "yolo.job.cancel",
"inputs": {
"job_id": "missing-job-contract"
},
"params": {},
"policy": {
"dry_run": false
}
},
"expect": {
"status": "partial",
"paths": [
"job.job_id",
"job.status",
"manifest"
],
"equals": {
"job.status": "missing",
"job.cancelled": false
}
}
}
]
}
0 0.500000 0.650000 0.700000 0.450000
0 0.500000 0.650000 0.700000 0.450000
path: agent/assets/mini-detect
train: images/train
val: images/val
names:
0: bus
{
"meal box": "bento box",
"lunch box": "bento box",
"lunchbox": "bento box",
"bento meal": "bento box",
"bento box meal": "bento box",
"dried apricot": "dried fruit",
"dried mango": "dried fruit",
"apricot": "dried fruit",
"pineapple chunks": "pineapple",
"pineapple piece": "pineapple",
"meat ball": "meatball",
"meatball in sauce": "meatball",
"bouquet": "flower arrangement",
"flower bouquet": "flower arrangement",
"flowers": "flower arrangement",
"floral arrangement": "flower arrangement",
"tree trunk": "log",
"fallen tree": "log",
"grass patch": "grass"
}
aerosol can/spray can
air conditioner
airplane/aeroplane
alarm clock
alcohol/alcoholic beverage
alligator/gator
almond
ambulance
amplifier
anklet/ankle bracelet
antenna/aerial/transmitting aerial
apple
applesauce
apricot
apron
aquarium/fish tank
arctic/arctic type of shoe/galosh/golosh/rubber/rubber type of shoe/gumshoe
armband
armchair
armoire
armor
artichoke
trash can/garbage can/wastebin/dustbin/trash barrel/trash bin
ashtray
asparagus
atomizer/atomiser/spray/sprayer/nebulizer/nebuliser
avocado
award/accolade
awning
ax/axe
baboon
baby buggy/baby carriage/perambulator/pram/stroller
basketball backboard
backpack/knapsack/packsack/rucksack/haversack
handbag/purse/pocketbook
suitcase/baggage/luggage
bagel/beigel
bagpipe
baguet/baguette
bait/lure
ball
ballet skirt/tutu
balloon
bamboo
banana
Band Aid
bandage
bandanna/bandana
banjo
banner/streamer
barbell
barge
barrel/cask
barrette
barrow/garden cart/lawn cart/wheelbarrow
baseball base
baseball
baseball bat
baseball cap/jockey cap/golf cap
baseball glove/baseball mitt
basket/handbasket
basketball
bass horn/sousaphone/tuba
bat/bat animal
bath mat
bath towel
bathrobe
bathtub/bathing tub
batter/batter food
battery
beachball
bead
bean curd/tofu
beanbag
beanie/beany
bear
bed
bedpan
bedspread/bedcover/bed covering/counterpane/spread
cow
beef/beef food/boeuf/boeuf food
beeper/pager
beer bottle
beer can
beetle
bell
bell pepper/capsicum
belt
belt buckle
bench
beret
bib
Bible
bicycle/bike/bike bicycle
visor/vizor
billboard
binder/ring-binder
binoculars/field glasses/opera glasses
bird
birdfeeder
birdbath
birdcage
birdhouse
birthday cake
birthday card
pirate flag
black sheep
blackberry
blackboard/chalkboard
blanket
blazer/sport jacket/sport coat/sports jacket/sports coat
blender/liquidizer/liquidiser
blimp
blinker/flasher
blouse
blueberry
gameboard
boat/ship/ship boat
bob/bobber/bobfloat
bobbin/spool/reel
bobby pin/hairgrip
boiled egg/coddled egg
bolo tie/bolo/bola tie/bola
deadbolt
bolt
bonnet
book
bookcase
booklet/brochure/leaflet/pamphlet
bookmark/bookmarker
boom microphone/microphone boom
boot
bottle
bottle opener
bouquet
bow/bow weapon
bow/bow decorative ribbons
bow-tie/bowtie
bowl
pipe bowl
bowler hat/bowler/derby hat/derby/plug hat
bowling ball
box
boxing glove
suspenders
bracelet/bangle
brass plaque
brassiere/bra/bandeau
bread-bin/breadbox
bread
breechcloth/breechclout/loincloth
bridal gown/wedding gown/wedding dress
briefcase
broccoli
broach
broom
brownie
brussels sprouts
bubble gum
bucket/pail
horse buggy
horned cow
bulldog
bulldozer/dozer
bullet train
bulletin board/notice board
bulletproof vest
bullhorn/megaphone
bun/roll
bunk bed
buoy
burrito
bus/bus vehicle/autobus/charabanc/double-decker/motorbus/motorcoach
business card
butter
butterfly
button
cab/cab taxi/taxi/taxicab
cabana
cabin car/caboose
cabinet
locker/storage locker
cake
calculator
calendar
calf
camcorder
camel
camera
camera lens
camper/camper vehicle/camping bus/motor home
can/tin can
can opener/tin opener
candle/candlestick
candle holder
candy bar
candy cane
walking cane
canister/canister
canoe
cantaloup/cantaloupe
canteen
cap/cap headwear
bottle cap/cap/cap container lid
cape
cappuccino/coffee cappuccino
car/car automobile/auto/auto automobile/automobile
railcar/railcar part of a train/railway car/railway car part of a train/railroad car/railroad car part of a train
elevator car
car battery/automobile battery
identity card
card
cardigan
cargo ship/cargo vessel
carnation
horse carriage
carrot
tote bag
cart
carton
cash register/register/register for cash transactions
casserole
cassette
cast/plaster cast/plaster bandage
cat
cauliflower
cayenne/cayenne spice/cayenne pepper/cayenne pepper spice/red pepper/red pepper spice
CD player
celery
cellular telephone/cellular phone/cellphone/mobile phone/smart phone
chain mail/ring mail/chain armor/ring armor
chair
chaise longue/chaise/daybed
chalice
chandelier
chap
checkbook/chequebook
checkerboard
cherry
chessboard
chicken/chicken animal
chickpea/garbanzo
chili/chili vegetable/chili pepper/chili pepper vegetable/chilli/chilli vegetable/chilly/chilly vegetable/chile/chile vegetable
chime/gong
chinaware
crisp/crisp potato chip/potato chip
poker chip
chocolate bar
chocolate cake
chocolate milk
chocolate mousse
choker/collar/neckband
chopping board/cutting board/chopping block
chopstick
Christmas tree
slide
cider/cyder
cigar box
cigarette
cigarette case/cigarette pack
cistern/water tank
clarinet
clasp
cleansing agent/cleanser/cleaner
cleat/cleat for securing rope
clementine
clip
clipboard
clippers/clippers for plants
cloak
clock/timepiece/timekeeper
clock tower
clothes hamper/laundry basket/clothes basket
clothespin/clothes peg
clutch bag
coaster
coat
coat hanger/clothes hanger/dress hanger
coatrack/hatrack
cock/rooster
cockroach
cocoa/cocoa beverage/hot chocolate/hot chocolate beverage/drinking chocolate
coconut/cocoanut
coffee maker/coffee machine
coffee table/cocktail table
coffeepot
coil
coin
colander/cullender
coleslaw/slaw
coloring material
combination lock
pacifier/teething ring
comic book
compass
computer keyboard/keyboard/keyboard computer
condiment
cone/traffic cone
control/controller
convertible/convertible automobile
sofa bed
cooker
cookie/cooky/biscuit/biscuit cookie
cooking utensil
cooler/cooler for food/ice chest
cork/cork bottle plug/bottle cork
corkboard
corkscrew/bottle screw
edible corn/corn/maize
cornbread
cornet/horn/trumpet
cornice/valance/valance board/pelmet
cornmeal
corset/girdle
costume
cougar/puma/catamount/mountain lion/panther
coverall
cowbell
cowboy hat/ten-gallon hat
crab/crab animal
crabmeat
cracker
crape/crepe/French pancake
crate
crayon/wax crayon
cream pitcher
crescent roll/croissant
crib/cot
crock pot/earthenware jar
crossbar
crouton
crow
crowbar/wrecking bar/pry bar
crown
crucifix
cruise ship/cruise liner
police cruiser/patrol car/police car/squad car
crumb
crutch
cub/cub animal
cube/square block
cucumber/cuke
cufflink
cup
trophy cup
cupboard/closet
cupcake
hair curler/hair roller/hair crimper
curling iron
curtain/drapery
cushion
cylinder
cymbal
dagger
dalmatian
dartboard
date/date fruit
deck chair/beach chair
deer/cervid
dental floss/floss
desk
detergent
diaper
diary/journal
die/dice
dinghy/dory/rowboat
dining table
tux/tuxedo
dish
dish antenna
dishrag/dishcloth
dishtowel/tea towel
dishwasher/dishwashing machine
dishwasher detergent/dishwashing detergent/dishwashing liquid/dishsoap
dispenser
diving board
Dixie cup/paper cup
dog
dog collar
doll
dollar/dollar bill/one dollar bill
dollhouse/doll's house
dolphin
domestic ass/donkey
doorknob/doorhandle
doormat/welcome mat
donut
dove
dragonfly
drawer
underdrawers/boxers/boxershorts
dress/frock
dress hat/high hat/opera hat/silk hat/top hat
dress suit
dresser
drill
drone
dropper/eye dropper
drum/drum musical instrument
drumstick
duck
duckling
duct tape
duffel bag/duffle bag/duffel/duffle
dumbbell
dumpster
dustpan
eagle
earphone/earpiece/headphone
earplug
earring
easel
eclair
eel
egg/eggs
egg roll/spring roll
egg yolk/yolk/yolk egg
eggbeater/eggwhisk
eggplant/aubergine
electric chair
refrigerator
elephant
elk/moose
envelope
eraser
escargot
eyepatch
falcon
fan
faucet/spigot/tap
fedora
ferret
Ferris wheel
ferry/ferryboat
fig/fig fruit
fighter jet/fighter aircraft/attack aircraft
figurine
file cabinet/filing cabinet
file/file tool
fire alarm/smoke alarm
fire engine/fire truck
fire extinguisher/extinguisher
fire hose
fireplace
fireplug/fire hydrant/hydrant
first-aid kit
fish
fish/fish food
fishbowl/goldfish bowl
fishing rod/fishing pole
flag
flagpole/flagstaff
flamingo
flannel
flap
flash/flashbulb
flashlight/torch
fleece
flip-flop/flip-flop sandal
flipper/flipper footwear/fin/fin footwear
flower arrangement/floral arrangement
flute glass/champagne flute
foal
folding chair
food processor
football/football American
football helmet
footstool/footrest
fork
forklift
freight car
French toast
freshener/air freshener
frisbee
frog/toad/toad frog
fruit juice
frying pan/frypan/skillet
fudge
funnel
futon
gag/muzzle
garbage
garbage truck
garden hose
gargle/mouthwash
gargoyle
garlic/ail
gasmask/respirator/gas helmet
gazelle
gelatin/jelly
gemstone
generator
giant panda/panda/panda bear
gift wrap
ginger/gingerroot
giraffe
cincture/sash/waistband/waistcloth
glass/glass drink container/drinking glass
globe
glove
goat
goggles
goldfish
golf club/golf-club
golfcart
gondola/gondola boat
goose
gorilla
gourd
grape
grater
gravestone/headstone/tombstone
gravy boat/gravy holder
green bean
green onion/spring onion/scallion
griddle
grill/grille/grillwork/radiator grille
grits/hominy grits
grizzly/grizzly bear
grocery bag
guitar
gull/seagull
gun
hairbrush
hairnet
hairpin
halter top
ham/jambon/gammon
hamburger/beefburger/burger
hammer
hammock
hamper
hamster
hair dryer
hand glass/hand mirror
hand towel/face towel
handcart/pushcart/hand truck
handcuff
handkerchief
handle/grip/handgrip
handsaw/carpenter's saw
hardback book/hardcover book
harmonium/organ/organ musical instrument/reed organ/reed organ musical instrument
hat
hatbox
veil
headband
headboard
headlight/headlamp
headscarf
headset
headstall/headstall for horses/headpiece/headpiece for horses
heart
heater/warmer
helicopter
helmet
heron
highchair/feeding chair
hinge
hippopotamus
hockey stick
hog/pig
home plate/home plate baseball/home base/home base baseball
honey
fume hood/exhaust hood
hook
hookah/narghile/nargileh/sheesha/shisha/water pipe
hornet
horse
hose/hosepipe
hot-air balloon
hotplate
hot sauce
hourglass
houseboat
hummingbird
hummus/humus/hommos/hoummos/humous
polar bear
icecream
popsicle
ice maker
ice pack/ice bag
ice skate
igniter/ignitor/lighter
inhaler/inhalator
iPod
iron/iron for clothing/smoothing iron/smoothing iron for clothing
ironing board
jacket
jam
jar
jean/blue jean/denim
jeep/landrover
jelly bean/jelly egg
jersey/T-shirt/tee shirt
jet plane/jet-propelled plane
jewel/gem/precious stone
jewelry/jewellery
joystick
jumpsuit
kayak
keg
kennel/doghouse
kettle/boiler
key
keycard
kilt
kimono
kitchen sink
kitchen table
kite
kitten/kitty
kiwi fruit
knee pad
knife
knitting needle
knob
knocker/knocker on a door/doorknocker
koala/koala bear
lab coat/laboratory coat
ladder
ladle
ladybug/ladybeetle/ladybird beetle
lamb/lamb animal
lamb-chop/lambchop
lamp
lamppost
lampshade
lantern
lanyard/laniard
laptop computer/notebook computer
lasagna/lasagne
latch
lawn mower
leather
legging/legging clothing/leging/leging clothing/leg covering
Lego/Lego set
legume
lemon
lemonade
lettuce
license plate/numberplate
life buoy/lifesaver/life belt/life ring
life jacket/life vest
lightbulb
lightning rod/lightning conductor
lime
limousine
lion
lip balm
liquor/spirits/hard liquor/liqueur/cordial
lizard
log
lollipop
speaker/speaker stereo equipment
loveseat
machine gun
magazine
magnet
mail slot
mailbox/mailbox at home/letter box/letter box at home
mallard
mallet
mammoth
manatee
mandarin orange
manager/through
manhole
map
marker
martini
mascot
mashed potato
masher
mask/facemask
mast
mat/mat gym equipment/gym mat
matchbox
mattress
measuring cup
measuring stick/ruler/ruler measuring stick/measuring rod
meatball
medicine
melon
microphone
microscope
microwave oven
milestone/milepost
milk
milk can
milkshake
minivan
mint candy
mirror
mitten
mixer/mixer kitchen tool/stand mixer
money
monitor/monitor computer equipment
monkey
motor
motor scooter/scooter
motor vehicle/automotive vehicle
motorcycle
mound/mound baseball/pitcher's mound
mouse/mouse computer equipment/computer mouse
mousepad
muffin
mug
mushroom
music stool/piano stool
musical instrument/instrument/instrument musical
nailfile
napkin/table napkin/serviette
neckerchief
necklace
necktie/tie/tie necktie
needle
nest
newspaper/paper/paper newspaper
newsstand
nightshirt/nightwear/sleepwear/nightclothes
nosebag/nosebag for animals/feedbag
noseband/noseband for animals/nosepiece/nosepiece for animals
notebook
notepad
nut
nutcracker
oar
octopus/octopus food
octopus/octopus animal
oil lamp/kerosene lamp/kerosine lamp
olive oil
omelet/omelette
onion
orange/orange fruit
orange juice
ostrich
ottoman/pouf/pouffe/hassock
oven
overalls/overalls clothing
owl
packet
inkpad/inking pad/stamp pad
pad
paddle/boat paddle
padlock
paintbrush
painting
pajamas/pyjamas
palette/pallet
pan/pan for cooking/cooking pan
pan/pan metal container
pancake
pantyhose
papaya
paper plate
paper towel
paperback book/paper-back book/softback book/soft-cover book
paperweight
parachute
parakeet/parrakeet/parroket/paraquet/paroquet/parroquet
parasail/parasail sports
parasol/sunshade
parchment
parka/anorak
parking meter
parrot
passenger car/passenger car part of a train/coach/coach part of a train
passenger ship
passport
pastry
patty/patty food
pea/pea food
peach
peanut butter
pear
peeler/peeler tool for fruit and vegetables
wooden leg/pegleg
pegboard
pelican
pen
pencil
pencil box/pencil case
pencil sharpener
pendulum
penguin
pennant
penny/penny coin
pepper/peppercorn
pepper mill/pepper grinder
perfume
persimmon
person/baby/child/boy/girl/man/woman/human
pet
pew/pew church bench/church bench
phonebook/telephone book/telephone directory
phonograph record/phonograph recording/record/record phonograph recording
piano
pickle
pickup truck
pie
pigeon
piggy bank/penny bank
pillow
pin/pin non jewelry
pineapple
pinecone
ping-pong ball
pinwheel
tobacco pipe
pipe/piping
pistol/handgun
pita/pita bread/pocket bread
pitcher/pitcher vessel for liquid/ewer
pitchfork
pizza
place mat
plate
platter
playpen
pliers/plyers
plow/plow farm equipment/plough/plough farm equipment
plume
pocket watch
pocketknife
poker/poker fire stirring tool/stove poker/fire hook
pole/post
polo shirt/sport shirt
poncho
pony
pool table/billiard table/snooker table
pop/pop soda/soda/soda pop/tonic/soft drink
postbox/postbox public/mailbox/mailbox public
postcard/postal card/mailing-card
poster/placard
pot
flowerpot
potato
potholder
pottery/clayware
pouch
power shovel/excavator/digger
prawn/shrimp
pretzel
printer/printing machine
projectile/projectile weapon/missile
projector
propeller/propellor
prune
pudding
puffer/puffer fish/pufferfish/blowfish/globefish
puffin
pug-dog
pumpkin
puncher
puppet/marionette
puppy
quesadilla
quiche
quilt/comforter
rabbit
race car/racing car
racket/racquet
radar
radiator
radio receiver/radio set/radio/tuner/tuner radio
radish/daikon
raft
rag doll
raincoat/waterproof jacket
ram/ram animal
raspberry
rat
razorblade
reamer/reamer juicer/juicer/juice reamer
rearview mirror
receipt
recliner/reclining chair/lounger/lounger chair
record player/phonograph/phonograph record player/turntable
reflector
remote control
rhinoceros
rib/rib food
rifle
ring
river boat
road map
robe
rocking chair
rodent
roller skate
Rollerblade
rolling pin
root beer
router/router computer equipment
rubber band/elastic band
runner/runner carpet
plastic bag/paper bag
saddle/saddle on an animal
saddle blanket/saddlecloth/horse blanket
saddlebag
safety pin
sail
salad
salad plate/salad bowl
salami
salmon/salmon fish
salmon/salmon food
salsa
saltshaker
sandal/sandal type of shoe
sandwich
satchel
saucepan
saucer
sausage
sawhorse/sawbuck
saxophone
scale/scale measuring instrument
scarecrow/strawman
scarf
school bus
scissors
scoreboard
scraper
screwdriver
scrubbing brush
sculpture
seabird/seafowl
seahorse
seaplane/hydroplane
seashell
sewing machine
shaker
shampoo
shark
sharpener
Sharpie
shaver/shaver electric/electric shaver/electric razor
shaving cream/shaving soap
shawl
shears
sheep
shepherd dog/sheepdog
sherbert/sherbet
shield
shirt
shoe/sneaker/sneaker type of shoe/tennis shoe
shopping bag
shopping cart
short pants/shorts/shorts clothing/trunks/trunks clothing
shot glass
shoulder bag
shovel
shower head
shower cap
shower curtain
shredder/shredder for paper
signboard
silo
sink
skateboard
skewer
ski
ski boot
ski parka/ski jacket
ski pole
skirt
skullcap
sled/sledge/sleigh
sleeping bag
sling/sling bandage/triangular bandage
slipper/slipper footwear/carpet slipper/carpet slipper footwear
smoothie
snake/serpent
snowboard
snowman
snowmobile
soap
soccer ball
sock
sofa/couch/lounge
softball
solar array/solar battery/solar panel
sombrero
soup
soup bowl
soupspoon
sour cream/soured cream
soya milk/soybean milk/soymilk
space shuttle
sparkler/sparkler fireworks
spatula
spear/lance
spectacles/specs/eyeglasses/glasses
spice rack
spider
crawfish/crayfish
sponge
spoon
sportswear/athletic wear/activewear
spotlight
squid/squid food/calamari/calamary
squirrel
stagecoach
stapler/stapler stapling machine
starfish/sea star
statue/statue sculpture
steak/steak food
steak knife
steering wheel
stepladder
step stool
stereo/stereo sound system
stew
stirrer
stirrup
stool
stop sign
brake light
stove/kitchen stove/range/range kitchen appliance/kitchen range/cooking stove
strainer
strap
straw/straw for drinking/drinking straw
strawberry
street sign
streetlight/street lamp
string cheese
stylus
subwoofer
sugar bowl
sugarcane/sugarcane plant
suit/suit clothing
sunflower
sunglasses
sunhat
surfboard
sushi
mop
sweat pants
sweatband
sweater
sweatshirt
sweet potato
swimsuit/swimwear/bathing suit/swimming costume/bathing costume/swimming trunks/bathing trunks
sword
syringe
Tabasco sauce
table-tennis table/ping-pong table
table
table lamp
tablecloth
tachometer
taco
tag
taillight/rear light
tambourine
army tank/armored combat vehicle
tank/tank storage vessel/storage tank
tank top/tank top clothing
tape/tape sticky cloth or paper
tape measure/measuring tape
tapestry
tarp
tartan/plaid
tassel
tea bag
teacup
teakettle
teapot
teddy bear
telephone/phone/telephone set
telephone booth/phone booth/call box/telephone box/telephone kiosk
telephone pole/telegraph pole/telegraph post
telephoto lens/zoom lens
television camera/tv camera
television set/tv/tv set
tennis ball
tennis racket
tequila
thermometer
thermos bottle
thermostat
thimble
thread/yarn
thumbtack/drawing pin/pushpin
tiara
tiger
tights/tights clothing/leotards
timer/stopwatch
tinfoil
tinsel
tissue paper
toast/toast food
toaster
toaster oven
toilet
toilet tissue/toilet paper/bathroom tissue
tomato
tongs
toolbox
toothbrush
toothpaste
toothpick
cover
tortilla
tow truck
towel
towel rack/towel rail/towel bar
toy
tractor/tractor farm equipment
traffic light
dirt bike
trailer truck/tractor trailer/trucking rig/articulated lorry/semi truck
train/train railroad vehicle/railroad train
trampoline
tray
trench coat
triangle/triangle musical instrument
tricycle
tripod
trousers/pants/pants clothing
truck
truffle/truffle chocolate/chocolate truffle
trunk
vat
turban
turkey/turkey food
turnip
turtle
turtleneck/turtleneck clothing/polo-neck
typewriter
umbrella
underwear/underclothes/underclothing/underpants
unicycle
urinal
urn
vacuum cleaner
vase
vending machine
vent/blowhole/air vent
vest/waistcoat
videotape
vinegar
violin/fiddle
vodka
volleyball
vulture
waffle
waffle iron
wagon
wagon wheel
walking stick
wall clock
wall socket/wall plug/electric outlet/electrical outlet/outlet/electric receptacle
wallet/billfold
walrus
wardrobe
washbasin/basin/basin for washing/washbowl/washstand/handbasin
automatic washer/washing machine
watch/wristwatch
water bottle
water cooler
water faucet/water tap/tap/tap water faucet
water heater/hot-water heater
water jug
water gun/squirt gun
water scooter/sea scooter/jet ski
water ski
water tower
watering can
watermelon
weathervane/vane/vane weathervane/wind vane
webcam
wedding cake/bridecake
wedding ring/wedding band
wet suit
wheel
wheelchair
whipped cream
whistle
wig
wind chime
windmill
window box/window box for plants
windshield wiper/windscreen wiper/wiper/wiper for windshield or screen
windsock/air sock/air-sleeve/wind sleeve/wind cone
wine bottle
wine bucket/wine cooler
wineglass
blinder/blinder for horses
wok
wolf
wooden spoon
wreath
wrench/spanner
wristband
wristlet/wrist band
yacht
yogurt/yoghurt/yoghourt
yoke/yoke animal equipment
zebra
zucchini/courgette
{
"lvis": {
"dataset": "LVIS v1.0",
"class_count": 1203,
"source": "/Users/gatilin/PycharmProjects/YOLO-Master-v260510-paper/ultralytics/cfg/datasets/lvis.yaml",
"upstream_reference": "https://opendatalab.com/OpenDataLab/LVIS_v1_dot_0",
"notes": "Class list extracted from local ultralytics lvis.yaml reference."
},
"v3det": {
"dataset": "V3Det",
"class_count": 13204,
"official_filename": "category_name_13204_v3det_2023_v1.txt",
"upstream_reference": "https://opendatalab.com/V3Det/V3Det",
"mirror_source": "https://huggingface.co/datasets/myownskyW7/V3Det/resolve/main/category_name_13204_v3det_2023_v1.txt",
"notes": "Class list fetched from a public mirror because GitHub API lookups were rate-limited during this run."
}
}You are a COCO-oriented multimodal perception assistant for YOLO-Master.
Method: {{METHOD}}
Task: 1. Read the image directly. 2. Cross-check the YOLO detection summary. 3. Produce captioning, classification, detection, and segmentation-style reasoning that can be parsed back into COCO-style evaluation helpers. 4. Prefer conservative, metric-friendly outputs over speculative detail.
{{IMAGE_INSTRUCTION}}
Rules:
- Use COCO class names and IDs only.
- Do not invent objects that are not visible.
- For object detection, return only clearly supported instances with confidence.
- For classification, return a scene-level label set and the most relevant visible classes.
- For segmentation, provide rough polygon or mask proxies only when the object boundary is reasonably visible; otherwise leave it empty.
- If a YOLO box is clearly wrong, mark it for suppression.
- If a missed object is clearly visible, add it as a new detection.
- If a box should be adjusted, keep the class but refine the box conservatively.
- For every suppress/add/adjust/relabel hint, include a confidence score and a short visual evidence string so the fusion layer can gate unsafe changes.
- Keep
visual_evidenceto 5 items or fewer. - Keep
global_classificationto the most relevant 5 visible classes. - Keep
vlm_detectionsto the most useful 8 proposals; prioritize objects that change fusion decisions. - Keep
vlm_segmentationto at most 3 rough masks. - Make each evidence / rationale string short and factual.
- Keep all coordinates in the image pixel space if you can infer it; otherwise use the same visual reference frame as the YOLO summary and mark the geometry as estimated.
- Never expose hidden chain-of-thought.
Return exactly one JSON object and no markdown fences.
Schema: { "answer": "compact final answer for the user task", "visual_evidence": ["concise evidence item"], "caption": { "short": "one-sentence caption", "dense": "dense scene description", "tags": ["tag1", "tag2"] }, "global_classification": [ { "class_id": 0, "label": "person", "confidence": 0.0, "evidence": "why the class is present" } ], "vlm_detections": [ { "proposal_id": "v1", "class_id": 0, "label": "person", "confidence": 0.0, "bbox_xyxy": [0, 0, 0, 0], "bbox_quality": "exact", "linked_yolo_indices": [0], "coco_eval_action": "keep", "visual_evidence": "supporting evidence", "rationale": "short reason" } ], "vlm_segmentation": [ { "proposal_id": "v1", "class_id": 0, "label": "person", "mask_type": "polygon", "polygon_xy": [[0, 0], [0, 0], [0, 0]], "bbox_xyxy": [0, 0, 0, 0], "mask_quality": "rough" } ], "visual_search": { "needs_zoom": false, "search_regions": [ { "region_id": "r1", "bbox_xyxy": [0, 0, 0, 0], "purpose": "inspect small or uncertain object", "priority": "low" } ], "reason": "" }, "yolo_cross_check": { "confirmed": [], "false_positives": [], "possible_misses": [], "duplicate_or_fragmented": [], "notes": [] }, "fusion_hints": { "keep_yolo_indices": [], "suppress_yolo_indices": [ {"yolo_index": 0, "confidence": 0.0, "evidence": "why suppression is safe"} ], "add_vlm_detections": [ {"proposal_id": "v1", "confidence": 0.0, "evidence": "why adding is safe"} ], "relabel_yolo": [ {"yolo_index": 0, "class_id": 0, "label": "person", "confidence": 0.0, "evidence": "why relabeling is safe"} ], "adjust_boxes": [ {"yolo_index": 0, "bbox_xyxy": [0, 0, 0, 0], "confidence": 0.0, "evidence": "why adjustment is safe"} ], "nms_notes": "", "confidence_calibration": [] }, "uncertainty": { "overall": "low", "failure_modes": [] }, "recommended_next_actions": [] }
User task: {{USER_PROMPT}}
YOLO detection summary: {{DETECTION_SUMMARY}}
{{OUTPUT_INSTRUCTION}}
"""Core library package for the YOLO-Master agent skill."""