a2d238d92e
Make Zed Agent closer to Cursor: deterministic DevOps path index, live Traefik port probe before blind edits, stop-after-edit, and quieter Russian progress.
134 lines
6.8 KiB
YAML
134 lines
6.8 KiB
YAML
# 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
|