feat(agent): hierarchical executor with path resolve, runtime probe, quiet UI
Make Zed Agent closer to Cursor: deterministic DevOps path index, live Traefik port probe before blind edits, stop-after-edit, and quieter Russian progress.
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
# Provider profiles — active: PRIMARY_PROVIDER env (default: hybrid)
|
||||
# Regenerate: bash scripts/gen-litellm-config.py
|
||||
|
||||
profiles:
|
||||
hybrid:
|
||||
label: "Hybrid: Novita workers + Novita plan/verify (no Claude geo-billing)"
|
||||
welcome_credit: false
|
||||
requires: [NOVITA_API_KEY]
|
||||
smart_router:
|
||||
model: novita/meta-llama/llama-3.1-8b-instruct
|
||||
api_key: NOVITA_API_KEY
|
||||
fallbacks:
|
||||
# No groq/gemini here — VPN off on IFT; those hang until client timeout.
|
||||
a-simple: [b-simple, a-medium-ops]
|
||||
a-medium-code: [b-medium-code, a-complex]
|
||||
a-complex: [b-complex, a-reasoning]
|
||||
b-complex: [a-complex, c-complex]
|
||||
a-reasoning: [b-reasoning, a-complex]
|
||||
a-vision: [a-vision-ocr]
|
||||
smart-router-internal: [a-medium-ops, a-medium-code, a-complex]
|
||||
# Planner is Max — fallback to DeepSeek then coder (never Llama)
|
||||
novita-planner: [b-complex, a-medium-code]
|
||||
novita-verifier: [b-complex, a-medium-code]
|
||||
default_fallbacks: [a-medium-code, a-complex, a-medium-ops]
|
||||
lanes:
|
||||
# Prefer Llama for fast lanes — Qwen3 puts answers in reasoning_content
|
||||
a-simple: { model: novita/meta-llama/llama-3.1-8b-instruct, api_key: NOVITA_API_KEY }
|
||||
b-simple: { model: novita/meta-llama/llama-3.1-8b-instruct, api_key: NOVITA_API_KEY }
|
||||
c-simple: { model: novita/meta-llama/llama-3.1-8b-instruct, api_key: NOVITA_API_KEY }
|
||||
a-medium-ops: { model: novita/meta-llama/llama-3.1-8b-instruct, api_key: NOVITA_API_KEY }
|
||||
b-medium-ops: { model: novita/meta-llama/llama-3.1-8b-instruct, api_key: NOVITA_API_KEY }
|
||||
c-medium-ops: { model: novita/meta-llama/llama-3.1-8b-instruct, api_key: NOVITA_API_KEY }
|
||||
# medium_code → coder / Plus-class (disable thinking — else stream hangs)
|
||||
a-medium-code: { model: novita/qwen/qwen3-coder-30b-a3b-instruct, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
b-medium-code: { model: novita/qwen/qwen3-coder-30b-a3b-instruct, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
c-medium-code: { model: novita/qwen/qwen3-coder-30b-a3b-instruct, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
# complex/reasoning A/B → coder/deepseek; C (hard) → Qwen3.8-Max only
|
||||
a-complex: { model: novita/qwen/qwen3-coder-30b-a3b-instruct, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
b-complex: { model: novita/deepseek/deepseek-v3.2, api_key: NOVITA_API_KEY }
|
||||
c-complex: { model: novita/qwen/qwen3.8-max, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
a-reasoning: { model: novita/qwen/qwen3-coder-30b-a3b-instruct, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
b-reasoning: { model: novita/deepseek/deepseek-v3.2, api_key: NOVITA_API_KEY }
|
||||
c-reasoning: { model: novita/qwen/qwen3.8-max, api_key: NOVITA_API_KEY, disable_thinking: true }
|
||||
a-vision-ocr: { model: novita/paddlepaddle/paddleocr-vl, api_key: NOVITA_API_KEY }
|
||||
a-vision: { model: novita/qwen/qwen3-vl-30b-a3b-instruct, api_key: NOVITA_API_KEY }
|
||||
b-vision: { model: novita/qwen/qwen2.5-vl-72b-instruct, api_key: NOVITA_API_KEY }
|
||||
c-vision: { model: novita/qwen/qwen3-vl-235b-a22b-instruct, api_key: NOVITA_API_KEY }
|
||||
|
||||
openrouter:
|
||||
label: OpenRouter reserve (VPN; free :free + pay-as-you-go)
|
||||
welcome_credit: true
|
||||
requires: [OPENROUTER_API_KEY]
|
||||
requires_vpn: true
|
||||
smart_router:
|
||||
model: openrouter/openrouter/free
|
||||
api_key: OPENROUTER_API_KEY
|
||||
fallbacks:
|
||||
a-simple: [b-simple, c-simple]
|
||||
a-medium-code: [b-medium-code, c-medium-code]
|
||||
a-complex: [b-complex, c-complex]
|
||||
smart-router-internal: [a-medium-ops, a-medium-code]
|
||||
default_fallbacks: [a-medium-code, a-medium-ops]
|
||||
lanes:
|
||||
a-simple: { model: openrouter/openai/gpt-oss-20b:free, api_key: OPENROUTER_API_KEY }
|
||||
b-simple: { model: openrouter/openai/gpt-oss-20b:free, api_key: OPENROUTER_API_KEY }
|
||||
c-simple: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
a-medium-ops: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
b-medium-ops: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
c-medium-ops: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
a-medium-code: { model: openrouter/cohere/north-mini-code:free, api_key: OPENROUTER_API_KEY }
|
||||
b-medium-code: { model: openrouter/cohere/north-mini-code:free, api_key: OPENROUTER_API_KEY }
|
||||
c-medium-code: { model: openrouter/cohere/north-mini-code:free, api_key: OPENROUTER_API_KEY }
|
||||
a-complex: { model: openrouter/google/gemma-4-26b-a4b-it:free, api_key: OPENROUTER_API_KEY }
|
||||
b-complex: { model: openrouter/nvidia/nemotron-3-nano-30b-a3b:free, api_key: OPENROUTER_API_KEY }
|
||||
c-complex: { model: openrouter/nvidia/nemotron-3-nano-30b-a3b:free, api_key: OPENROUTER_API_KEY }
|
||||
a-reasoning: { model: openrouter/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free, api_key: OPENROUTER_API_KEY }
|
||||
b-reasoning: { model: openrouter/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free, api_key: OPENROUTER_API_KEY }
|
||||
c-reasoning: { model: openrouter/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free, api_key: OPENROUTER_API_KEY }
|
||||
a-vision-ocr: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
a-vision: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
b-vision: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
c-vision: { model: openrouter/openrouter/free, api_key: OPENROUTER_API_KEY }
|
||||
|
||||
# Always registered when keys present (all profiles)
|
||||
fixed_models:
|
||||
# Hierarchical: strong Max plan (rare); DeepSeek verify (conditional)
|
||||
novita-planner:
|
||||
model: novita/qwen/qwen3.8-max
|
||||
api_key: NOVITA_API_KEY
|
||||
max_tokens: 1024
|
||||
temperature: 0
|
||||
disable_thinking: true
|
||||
novita-verifier:
|
||||
model: novita/deepseek/deepseek-v3.2
|
||||
api_key: NOVITA_API_KEY
|
||||
max_tokens: 1024
|
||||
temperature: 0
|
||||
# Optional Claude — only if ANTHROPIC_API_KEY works later (VPN + billing)
|
||||
claude-haiku-planner:
|
||||
model: anthropic/claude-haiku-4-5-20251001
|
||||
api_key: ANTHROPIC_API_KEY
|
||||
requires_vpn: true
|
||||
max_tokens: 1024
|
||||
temperature: 0
|
||||
claude-sonnet-verifier:
|
||||
model: anthropic/claude-sonnet-5
|
||||
api_key: ANTHROPIC_API_KEY
|
||||
requires_vpn: true
|
||||
max_tokens: 2048
|
||||
temperature: 0
|
||||
grok-3:
|
||||
model: xai/grok-3
|
||||
api_key: XAI_API_KEY
|
||||
requires_vpn: true
|
||||
groq-llama-8b:
|
||||
model: groq/llama-3.1-8b-instant
|
||||
api_key: GROQ_API_KEY
|
||||
groq-qwen-coder:
|
||||
model: groq/qwen-qwen-2.5-coder-32b
|
||||
api_key: GROQ_API_KEY
|
||||
gemini-flash:
|
||||
model: gemini/gemini-2.0-flash
|
||||
api_key: GEMINI_API_KEY
|
||||
gigachat-classifier:
|
||||
model: gigachat/GigaChat-2-Lite
|
||||
api_key: GIGACHAT_CREDENTIALS
|
||||
ssl_verify: false
|
||||
max_tokens: 64
|
||||
temperature: 0
|
||||
gigachat-pro:
|
||||
model: gigachat/GigaChat-2-Pro
|
||||
api_key: GIGACHAT_CREDENTIALS
|
||||
ssl_verify: false
|
||||
Reference in New Issue
Block a user