DEILE
02 — Despacho

Cada etapa escolhe seu motor.

Sete engines disponíveis, cinco etapas do pipeline, três eixos configuráveis (worker, modelo, esforço). Resume nativo por CLI. Cost ledger durável. Tudo editável ao vivo no painel TUI.

Matriz de despacho

Cinco etapas. Três eixos. Tudo configurável ao vivo.

Cada etapa do pipeline é decidida por três eixos independentes. Você pode rodar a classificação em um modelo barato, a implementação no Claude Code com esforço alto, e a review com a frota OpenRouter — sem rebuild de imagem, sem deploy, via painel TUI navegável por teclado.

etapa / eixo
Worker
Qual engine executa esta etapa
Modelo
Qual modelo LLM o worker vai usar
Esforço
Esforço de raciocínio aplicado
classify
deile-worker · claude-worker · opencode · codex · qwen · aider · goose
qualquer modelo do catálogo
low · medium · high · xhigh · max · ultracode · auto
refine
deile-worker · claude-worker · opencode · codex · qwen · aider · goose
qualquer modelo do catálogo
low · medium · high · xhigh · max · ultracode · auto
implement
deile-worker · claude-worker · opencode · codex · qwen · aider · goose
qualquer modelo do catálogo
low · medium · high · xhigh · max · ultracode · auto
pr_review
deile-worker · claude-worker · opencode · codex · qwen · aider · goose
qualquer modelo do catálogo
low · medium · high · xhigh · max · ultracode · auto
follow_ups
deile-worker · claude-worker · opencode · codex · qwen · aider · goose
qualquer modelo do catálogo
low · medium · high · xhigh · max · ultracode · auto
resolução em camadas

Cada eixo resolve por precedência: override por etapa > default global > default do código. Mude um valor no painel e ele vira efetivo no próximo tick.

painel ao vivo

A view [d] mostra cada etapa em uma linha com worker / modelo / timeout / retries / cost cap / esforço. Hotkeys instalam workers ausentes, escalam, fazem cleanup ou trocam de login.

A frota

Dois workers de núcleo, cinco CLIs plugáveis.

Toda a frota satisfaz o mesmo protocolo de adapter — adicionar um novo worker é escrever um único arquivo Python. Os pods da frota multi-CLI nascem em replicas:0 e são escalados sob demanda. Você paga só pelos que despachar.

workers de núcleo
núcleo · in-process

deile-worker

O motor próprio do DEILE rodando como pod HTTP. Tem acesso ao registry inteiro de tools, à frota de personas e ao tool-loop nativo. Roteia para o provedor LLM escolhido para a etapa.

auth →chave do provedor LLM
resume →via ledger central, retoma do último estado registrado
núcleo · subprocess claude -p

claude-worker

Pod que invoca o Claude Code CLI em workdirs isolados. Cada dispatch tem cost-cap em USD; ledger JSONL persistente sobrevive a scale-to-zero. Auth via token de longa duração injetado como Secret.

auth →token OAuth ~1 ano (Claude Pro/Max ou Console)
resume →nativo via --resume; sessão acima do orçamento é promovida a fresh
frota multi-CLI (plugável, scale-to-zero)

opencode-worker

opencode em workdir isolado. Foco em refactor automatizado e execução de planos multi-passo. Sessões nativas por id.

resume →via --session
git →brief-driven (o brief comita e empurra)

codex-worker

codex CLI da OpenAI. Modo Responses API (modelos gpt-5.x reasoning). Pode rodar com chave do projeto OpenAI (env) ou OAuth opt-in para consumir a assinatura ChatGPT.

resume →via exec resume
git →brief-driven

qwen-worker

qwen CLI em modo OpenAI-compatible. Aponte para Dashscope nativo, OpenRouter ou OpenAI direto — o trio base_url/key/model é injetado pela frota.

resume →via --resume
git →brief-driven

aider-worker

aider em modo headless. Único da frota com auto-commit do próprio CLI — sem atribuir autoria ao aider (flags --no-attribute-*). Workdir-keyed.

resume →via --restore-chat-history
git →cli_autocommit (o próprio CLI comita)

goose-worker

goose CLI (Block) com modelo OpenRouter por padrão (DeepSeek, Gemini, etc.). Named sessions determinísticas; id = task_id.

resume →via named session --resume
git →brief-driven

adicionar um worker

Um arquivo infra/k8s/cli_adapters/<kind>.py satisfazendo o protocol CliAdapter é tudo o que precisa. Auto-discovery registra, o painel lista, os manifests são gerados — nenhum outro arquivo é editado.

resume →depende do adapter
git →brief-driven ou cli_autocommit
Esforço de raciocínio

Sete níveis. Um vocabulário. Mapeado nativamente em cada provedor.

Você fala em low/medium/high/xhigh/max/ultracode/auto e o DEILE traduz para o parâmetro nativo de cada provedor. Configurável globalmente, por etapa do pipeline, ou por sessão CLI com um único comando.

vocabulário
low resposta rápida, sem deliberação extra
medium default conservador para a maioria dos turnos
high deliberação aprofundada — vale para arquitetura ou debugging
xhigh esforço máximo na maioria dos provedores
max limite explícito do provedor (quando disponível)
ultracode no claude-worker -> xhigh + workflows
auto deixa o provedor decidir
tradução por provedor
Anthropic extended thinking · budget tokens
OpenAI reasoning_effort low/medium/high
Gemini thinking_config com budget de tokens
DeepSeek reasoning_effort + thinking ativo

Comportamento fail-open: se um nível não tem mapeamento direto no provedor, o turno NÃO falha — o esforço vira o mais próximo disponível, e o tracer registra a tradução aplicada.

Provedores LLM

Cinco provedores, quatro tiers, um roteador.

O DEILE não te casa com um provedor. O roteador escolhe por tier (do complexo ao bulk), com fallback automático em cascata, circuit breaker por provedor, e budget guard por sessão e provedor (diário e mensal).

Anthropic

tier 1 claude-opus-4-8
tier 2 claude-sonnet-4-6
tier 3 claude-haiku-4-5

OpenAI

tier 1 gpt-5.5
tier 2 gpt-5.4
tier 3 gpt-5.4-mini
tier 4 gpt-5.4-nano

Google Gemini

tier 1 gemini-3.1-pro · gemini-2.5-pro
tier 2 gemini-3.5-flash · gemini-3-flash-preview
tier 3 gemini-3.1-flash-lite · gemini-2.5-flash

DeepSeek

tier 1 deepseek-v4-pro
tier 3 deepseek-v4-flash

OpenRouter

tier — uma chave → acesso a todos os modelos do catálogo
tier — custo autoritativo via usage.cost na resposta
circuit breaker

Falhas repetidas (429/503) abrem o disjuntor do provedor e o roteador desce para o próximo tier disponível.

budget guard

Per sessão e per provedor (janela diária e mensal). Persistência em SQLite com telemetria associada.

estratégias

task_optimized (default), cost_optimized, round_robin, least_busy — escolha por carga ou economia.

Resume nativo + ledger durável

O trabalho não evapora ao reiniciar o pod.

Cada engine da frota retoma usando o mecanismo nativo do seu CLI no mesmo diretório de trabalho — não há re-execução cega do prompt original. O custo de cada sessão é capturado em um ledger JSONL persistente que sobrevive a scale-to-zero e força do DELETE de pod.

resume nativo

A mesma sessão, retomada

Em vez de re-gastar tokens reprocessando o histórico, cada CLI usa seu próprio comando de retomada (flag --resume, --session, exec resume, etc.). Quando uma sessão ultrapassa o orçamento, ela é promovida a fresh automaticamente, evitando sangria de custo.

  • Workdir persistente em PVC dedicado por worker
  • Erro de provedor (402/429) classifica como INCOMPLETO, não FAIL
  • Auto-cleanup periódico remove workdirs órfãos
cost ledger

JSONL durável, central + fallback local

Custo de cada dispatch é coletado em dois lugares: empurrado para o repositório central (SQLite) pelo pipeline long-lived, e gravado em .cost-ledger.jsonl no PVC do worker como fallback. Deduplicação por task_id.

  • Harvest antes de podar transcripts antigas
  • Pricing unificado: uma única tabela para toda a frota
  • Painel [T] lê o central primeiro, ledger depois