- Add NOTICE file and README license references for mobile-use and finalrun-agent - Add derivative attribution headers to 17 files derived from mobile-use - Rename hopper agent to entity_extractor across prompts, tools, and configs - Remove obsolete adb_tunnel, ApiBaseUrl, and legacy CLI utility scripts - Replace legacy examples with native Artemis diagnostic and workflow examples - Update unit and tool tests to validate entity_extractor and SDK builders
300 lines
15 KiB
JSON
300 lines
15 KiB
JSON
{
|
|
// ==============================================================================
|
|
// β 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": {},
|
|
|
|
// π Entity Extractor: Fast lightweight package name locator and entity extractor
|
|
"entity_extractor": {
|
|
"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
|
|
// ==========================================================================
|
|
// Shared step memory and history compression
|
|
// 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). See services/token_meter.py for measured session token usage
|
|
// and cache-hit ratios.
|
|
"enabled": true,
|
|
"context_budget_tokens": 80000,
|
|
// Below start_ratio of the operator's own measured prompt size, closed
|
|
// segments only prepare their summary; the original turns are kept in
|
|
// context and replaced once occupancy reaches this ratio. Measurements
|
|
// come from the operator; other agents' calls do not affect this gate.
|
|
"start_ratio": 0.35,
|
|
"soft_ratio": 0.7,
|
|
"hard_ratio": 0.9,
|
|
"min_active_steps": 5,
|
|
// Screenshot edge: 6 while the operator's measured context is below
|
|
// start_ratio (nothing is being replaced yet), 3 from there up. A
|
|
// screenshot reaching the edge is replaced in place by its visual
|
|
// summary (the 'Current Screenshot' label leaves with it) and never
|
|
// restored; the depth only decides how long new ones stay.
|
|
"image_scrub_depth": 3,
|
|
"image_scrub_depth_relaxed": 6,
|
|
"pending_grace_steps": 3,
|
|
// Text edge: once a newer observation exists (depth 1) the UI element
|
|
// list, the plan recitation and the per-turn ephemeral blocks
|
|
// (reminders, hints, guidance wrappers) leave the older observation.
|
|
// User instruction bodies remain in history. The text edge stays
|
|
// shallow on purpose: only the live observation carries an indexed
|
|
// element list, so a stale [n] index can never be picked up as a
|
|
// target.
|
|
"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,
|
|
// Size/pressure closes wait until at least this many turns are
|
|
// eligible, so heavy turns do not become one-step chunks (one capsule
|
|
// call each); milestone closes are exempt, the hard line waives it.
|
|
"min_steps": 3,
|
|
"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"
|
|
}
|
|
}
|
|
}
|