feat(agent): hierarchical executor with path resolve, runtime probe, quiet UI
CI / build-gateway (push) Failing after 16s
CI / sync-config (push) Failing after 0s

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:
2026-08-13 11:41:27 +03:00
parent 6fd2f0e689
commit a2d238d92e
71 changed files with 10617 additions and 449 deletions
+133
View File
@@ -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