Files
Artemis-Eapil/config/artemis.jsonc
T
somew1nd a45daf23f8 feat: add agentic video analysis and clarify action results
Report device actions as dispatched and preserve full failure details. Route
Flash through McpActionExecutor and use ToolFailure across helper tools and
agent loops instead of inferring failure from response text.

Require model-provided descriptions for coordinate targets. Keep observed
element metadata separate from those descriptions in safety checks, visual
summaries, history, and frontend labels.

Add Gemini Interactions API video analysis with configurable processing mode,
chunk size, and timeouts. Centralize Google provider capabilities and token
usage normalization, and update google-genai to 2.22.0.

Preserve system instructions on follow-up interactions, replan pending chunks
when falling back to static processing, and reject unanswered native video
and audio segments instead of caching placeholder results. Keep helper-tool
failure status intact through history tools and committee calls.

Validation: 1,762 Python unit tests passed (3 skipped), 40 frontend formatter
tests passed, and the production UI build completed. Ruff lint, formatting,
the quality ratchet, and git diff checks passed.
2026-09-08 17:05:54 -07:00

278 lines
13 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
// ==============================================================================
// β˜• ARTEMIS Autonomous Agent & Framework Configuration
// ==============================================================================
// ------------------------------------------------------------------------------
// 1. Global Default Model (Applied to all sub-agents unless overridden below)
// ------------------------------------------------------------------------------
"default": {
"provider": "google",
"model": "gemini-3.8-flash",
"thinking_level": "medium",
"fallback": {
"provider": "google",
"model": "gemini-3.7-flash",
"thinking_level": "medium"
}
},
// ------------------------------------------------------------------------------
// 2. Ready-to-Use Presets (Switch easily in code or CLI)
// ------------------------------------------------------------------------------
"presets": {
"gemini-flagship": {
"provider": "google",
"model": "gemini-3.8-flash",
"fallback": { "provider": "google", "model": "gemini-3.7-flash" }
},
"gemini-flash": {
"provider": "google",
"model": "gemini-2.5-flash",
"fallback": { "provider": "google", "model": "gemini-2.0-flash" }
},
"openai-gpt4o": {
"provider": "openai",
"model": "gpt-4o",
"fallback": { "provider": "openai", "model": "gpt-4o-mini" }
},
"cost-saving": {
"provider": "google",
"model": "gemini-3.5-flash-lite",
"fallback": { "provider": "google", "model": "gemini-3.1-flash-lite" }
},
"local-ollama": {
"provider": "openai",
"model": "llama3.2-vision",
"fallback": { "provider": "openai", "model": "llama3.2-vision" }
}
},
// ------------------------------------------------------------------------------
// 3. Agent & Sub-Agent Node Customizations (Optional - Inherits from 'default')
// ------------------------------------------------------------------------------
"nodes": {
// 🧠 Planner: High-level goal decomposition and strategic step planning
"planner": {
"thinking_level": "high"
},
// 🎯 Operator: Screen perception, element interaction, and direct execution
"operator": {
"thinking_level": "medium",
"include_thoughts": true
},
// 🎬 Video Analyzer: Multimodal screen recording verification and temporal analysis
// NOTE: Dual-path engine automatically routes:
// - Native Gemini Files API for Gemini models with Google API keys (long video file stream);
// Gemini 3.6+ Flash sub-agents use agentic video understanding by default (see video_analyzer.processing below)
// - Universal Multi-Model Engine for Claude 3.5/3.7, GPT-4o, OpenRouter, Vertex AI (dynamic keyframe extraction + multimodal tool calling)
"video_analyzer": {},
// πŸ‘οΈ Object Detector & Explorer (Flash Mode): Visual coordinates grounding and bounding boxes
// CRITICAL REQUIREMENT: Standard LLMs (including standard Gemini Flash, GPT-4o, Claude 3.7) lack sub-pixel spatial coordinate fine-tuning.
// To achieve accurate [x, y] point and bounding box localization, this node MUST use specialized Gemini ER (Embodied Reasoning / Robotics) models:
// e.g., "gemini-robotics-er-2-preview". Non-ER models will fail spatial coordinate detection.
"object_detector": {
"model": "gemini-robotics-er-2-preview",
"fallback": {
"provider": "google",
"model": "gemini-robotics-er-2-preview"
}
},
// πŸ” Explorer: Deep element grounding and multi-candidate visual search
// NOTE:
// - "flash" version delegates directly to object_detector (requires Gemini ER model above).
// - "pro" / "ultra" versions run multi-turn ReAct loops (supports both Native Gemini and Universal Multi-Model LangChain engines).
"explorer": {
"thinking_level": "medium"
},
// πŸ“‹ Summarizer: Aggregates step history and generates structured outcome
"summarizer": {},
// πŸ”½ Hopper: Fast lightweight package name locator
"hopper": {
"model": "gemini-3.5-flash-lite",
"fallback": {
"provider": "google",
"model": "gemini-3.1-flash-lite"
}
},
// πŸ“ Outputter: Synthesizes execution trace into final output report
"outputter": {},
// πŸͺ΅ Log Analyzer: Error log diagnosis with search grounding
"log_analyzer": {
"enable_grounding": true
},
// 🩺 Diagnoser Expert: Failure root cause diagnosis with search grounding
"diagnoser_expert": {
"enable_grounding": true
},
// πŸ›οΈ Committee Council Members
"planner_avatar": {},
"history_analyzer_expert": {},
// πŸ”Ž Checker: Plan-declared checkpoint verification and exit final review.
// Thoughts are streamed so the verifier's reasoning shows live in the timeline.
"checker": {
"thinking_level": "medium",
"include_thoughts": true
}
// 🎯 Planner Validation: Advisory review of milestone changes.
// Defaults to the same lightweight model as the pixel safety net
// (gemini-3.5-flash-lite, temperature 0); add "planner_validation": {...} here to override.
},
// ------------------------------------------------------------------------------
// 4. Runtime Mode & Agent Capabilities Configuration (Dual-Engine: Flash vs. Pro)
// ------------------------------------------------------------------------------
"agent": {
// ==========================================================================
// ⚑ 4.1 FLASH Profile Options (Reactive Single-Agent Lightweight Loop)
// ==========================================================================
// Best for: Simple, fast, deterministic tasks; runs unbounded by default.
// Execution: Observe-Think-Act single LLM reactive loop without graph overhead.
"flash": {
"max_turns": 0, // Maximum reactive turns before stopping (0 = unlimited; history is bounded by transcript compression, not by a turn cap)
"explorer_mode": "flash", // Explorer tier for the Flash runner: 'flash' | 'pro' | 'ultra' (see top-level "explorer")
// 🧠 Step Summarizer: Asynchronous visual context compressor
// Summarizes intermediate steps in background without blocking the runner,
// replacing images only after strictly objective, high-density summaries are ready.
"step_summarizer": {
"enabled": true, // Whether background step summarization is active
"model": "gemini-3.5-flash-lite", // Lightweight model for fast background inference
"prune_history_xml": true // Prune outdated heavy XML trees from historical steps
}
},
// ==========================================================================
// πŸš€ 4.2 PRO Profile Options (Deep Multi-Agent Graph Closed-Loop)
// ==========================================================================
// Best for: Complex, exploratory, dynamic multi-branch tasks.
// Execution: LangGraph multi-node graph with a living task plan, a pre-execution safety net (single actions) / fast-action bursts (multi-action turns),
// execution-incident recovery handled by the Operator itself (no separate repair agent), and a read-only Checker for checkpoint verification + exit final review.
"pro": {
// 🧭 Explorer: Perception sub-agent under Pro profile ('flash', 'pro', or 'ultra')
"explorer": {
"mode": "flash" // Explorer tier for Pro nodes (Operator/Validator): 'flash' | 'pro' | 'ultra'
},
// 🎯 Planner Validation: Async verification when task plan milestones change
"planner_validation": {
"enabled": true // On by default: every milestone text change is reviewed (advisory: hint + reason only, never rolled back)
},
// πŸ›οΈ Committee: Multi-Agent Council debate tool for Operator
"committee": {
"enabled": false,
"debate_rounds": 2
},
// πŸ”Ž Checker: Plan-declared checkpoint verification (optimistic async) + exit final review
"checker": {
"enabled": true, // Master switch (compat alias): false disables both gates below
"midway_checks": false, // Plan-declared midway checkpoints (off in the factory layering)
"final_check": true, // Exit final review against the user's original goal (on by default)
"max_iterations": 20,
"final_check_max_attempts": 3,
"checkpoint_max_repairs": 2,
"max_concurrent_checkpoints": 3,
"checkpoint_timeout": 180.0,
"settlement_timeout": 120.0,
"assert_failure_policy": "continue", // 'continue' or 'halt' on assert failures
"device_probes": true // Checker's enumerated read-only device probes
},
// 🎬 Video Analyzer & Screen Recording: Continuous screen recording via scrcpy and temporal analysis
"video_analyzer": {
"enabled": true, // Whether continuous video recording and video tools are active (default: auto-detected)
"enable_ledger": true
}
},
// ==========================================================================
// 🌐 4.3 Shared Capabilities & Global Overrides
// ==========================================================================
// 🧠 Unified Step-Memory Runtime (history-module redesign v3, M0–M5)
// Transcript ledger + layered compression for the Pro operator.
"memory": {
// Background summarization runtime (visual/capsule lenses)
"runtime": {
"max_concurrency": 2, // 1β†’2 per 2026-09-01 baseline: serial queue pushed summary-ready P90 past the scrub window
"retry_limit": 3,
"flush_timeout_s": 30
},
"transcript": {
// ROLLBACK SWITCH: set false to restore the legacy per-turn 2-message
// prompt path byte-for-byte (L2/L3 chunk compression rides this same
// flag). Default on since M5 (2026-09-01) per the on-device A/B:
// turn latency βˆ’77% P50, cache-hit calls 43%β†’88%, output tokens βˆ’74%.
"enabled": true,
"context_budget_tokens": 80000,
"soft_ratio": 0.7,
"hard_ratio": 0.9,
"min_active_steps": 5,
"image_scrub_depth": 3,
"pending_grace_steps": 3,
"xml_scrub_depth": 1,
// Local historical-state hint (no model call); distance calibrated
// 2026-09-01 from 460 dHash-stamped on-device steps (same screen <=4,
// different screens >=7).
"similarity_hint": true,
"similarity_max_distance": 5
},
// Segment (L2) chunk compression: three-band chunks, era folding
"chunking": {
"max_steps": 12,
"target_source_tokens": 2000,
"model": "gemini-3.8-flash",
"max_chunks": 8
// "max_eras": 8 // independent era cap; omitted = follows max_chunks
},
// search_history: deterministic keyword / step-range lookup over stored history
"recall": {
"enabled": true,
"max_results": 5,
"max_text_tokens": 2000,
"screen_scan_steps": 150
},
// replay_steps: full step replays (whole trailing steps are dropped over budget)
"replay": {
"max_steps": 5,
"max_tokens": 12000
}
},
// 🎬 Screen Recording & Video Analyzer Configuration
"video_analyzer": {
"enabled": true, // Whether continuous screen recording via scrcpy is active (default: auto-detected)
"enable_ledger": true
// "processing": "auto", // How Gemini sub-agents watch a clip: auto (agentic on Gemini 3.6+ Flash, static elsewhere) | agentic | static
// "agentic_chunk_size_seconds": 600, // Longest clip one agentic sub-agent takes; static mode keeps chunk_size_seconds (60)
// "agentic_call_timeout_seconds": 300 // Hard timeout for one agentic sub-agent response
},
// πŸ“ Outputter: Post-execution report synthesis and structured schema extraction
// Reviews action history, notes, and verifies goal achievement to synthesize final output.
"outputter": {
"enabled": true, // Whether Outputter is mounted to synthesize final outputs
"force_synthesis": false // Force Outputter synthesis even without explicit output schema
},
// 🧭 Explorer tier: the perception sub-agent behind `ask_explorer`.
// Tiers are a user setting; calling agents never see which tier is active.
// flash - one-shot visual detection on the screenshot (fastest)
// pro - 3-turn reasoning loop: UI-tree search + coordinate audit + detection
// ultra - 8-turn loop adding zoom, OCR and pixel-level image processing (slowest)
// `flash.explorer_mode` and `pro.explorer.mode` above are the per-profile knobs;
// `caching` (Gemini explicit context caching) defaults per tier: off for pro, on for ultra.
"explorer": {
"default_version": "flash" // Fallback tier when no profile knob applies
// "caching": true, // Uncomment to force context caching for pro/ultra
},
// Advanced: per-agent tier override, e.g. {"validator": "ultra"}. Takes
// precedence over the profile knobs; leave empty to let them decide.
"explorer_versions": {},
// 🚫 Per-agent Tool Denylists
"denylisted_tools": {
"explorer": [] // Perception tools to withhold from the Explorer, e.g. "ask_image_processor"
}
}
}