Scheduler automático e roteamento de modelos
ivoai opencode usa o DAG nativo do IVOAI e o MCP local ivoai-orchestrator.
OpenCode é o frontend; o IVOAI controla admissão, policy, concorrência e integração.
O modo AUTO nativo não depende do lifecycle Ruflo do modo orchestrated legado.
Admissão e plano
O prompt precisa conter objetivo, entregável e critérios de aceite observáveis. Headings Markdown não são obrigatórios. Prompts ambíguos ou insuficientes retornam somente os campos faltantes e aguardam reformulação, sem iniciar workers.
Fluxo: readiness → purpose-auto → Memory/Context selecionados → brief limitado → DAG → roteamento → aprovação → workers → validação → integração → síntese.
Prompt readiness -> purpose-auto -> selected Memory/Context -> bounded brief
-> validated DAG -> scores -> quota/capability routing -> plan approval
-> host/DAG admission -> scoped workers -> result validation
-> checked integration -> strong primary synthesis
O plano tem até 12 tarefas, com papel, aceite local, dependências, contexto,
Skills, MCPs e paths de escrita. Ciclos, IDs inseguros, dependências desconhecidas e
duplicação não justificada são rejeitados. Por padrão, orchestration_plan aguarda
a aprovação do usuário. Full permissions não aprova o plano.
Cada worker recebe seu SharedContextBrief: objetivo e aceite locais, restrições, findings relevantes e ResultRefs. Não recebe automaticamente o prompt completo ou todo o contexto do primary. Conteúdo recuperado é dado não confiável.
Economic Router
O score considera complexidade (30%), risco (25%), reasoning (20%), verificação (15%) e amplitude de contexto (10%). Os tiers são LIGHT (0–24), BALANCED (25–49), STRONG (50–74) e MAX (75–100). Pesos customizados são normalizados.
score = round((30*complexity + 25*risk + 20*reasoning_depth
+ 15*verification_need + 10*context_breadth) / 100)
Workers usam o menor tier suficiente, respeitando a capability do papel. O primary usa STRONG ou MAX verificado por padrão. Nomes reais de modelos e reasoning vêm do cliente oficial em runtime, não de uma tabela fixa de nomes. Overrides explícitos incompatíveis falham fechados. Snapshots locais são diagnóstico, não autoridade para uma nova descoberta.
Codex e Claude podem participar do mesmo DAG quando elegíveis. Claude é opcional; ausência de autenticação não bloqueia Codex. Capability de escrita não comprovada não é concedida. Quota desconhecida não significa ilimitada. O roteamento considera capability, risco, catálogo, quota e policy; metadata registra requested/effective.
Delegação read-only compara benefício com overhead. Tarefas triviais permanecem no primary. Escrita sempre passa pelo adapter controlado, mesmo com uma única tarefa.
benefit = round((45*parallel_value + 20*verification_need + 20*risk
+ 15*context_breadth) / 100)
overhead = 25 + 20*(100-complexity)/100 + 5*latency_sensitivity/100
Concorrência e isolamento
A admissão considera nós prontos, CPU, RAM disponível, load, pressão de I/O quando observável, quota e limite do usuário. Há limite absoluto de 12; recursos desconhecidos degradam conservadoramente. Dependências precisam terminar antes do início de seus dependentes.
MCPs são deny-by-default por worker. Estar cadastrado não concede acesso. Apenas Skills e ferramentas selecionadas são projetadas process-local; credentials não entram no brief, argv ou metadata. Resultados completos ficam no ArtifactStore transitório privado e são recuperados explicitamente por referências opacas.
Writers aprovados usam branches/worktrees próprias. O IVOAI coleta mudanças dentro
dos paths permitidos e integra em checkout isolado antes de atualizar o primary.
Conflitos preservam evidência e não são resolvidos automaticamente. Se worktrees
não puderem inicializar, writers viram produtores read-only de patches sequenciais:
o IVOAI verifica o diff e aplica sob lease exclusivo. Alterações não suportadas
falham fechadas; nenhum git init silencioso é feito.
Ferramentas e estado
orchestration_bootstrapeorchestration_capabilities: contexto limitado e catálogo.orchestration_plan: validação, roteamento e aprovação.orchestration_spawn/orchestration_spawn_batch: dispatch controlado.orchestration_primary_complete: conclui tarefa do primary.orchestration_wait: espera limitada por notificações, sem busy-loop.orchestration_resulte artifact reads: evidência limitada ou exata sob demanda.orchestration_escalate: elevação de um tier com razão explícita.orchestration_cancel: cancela worker pertencente à sessão.orchestration_integrate: integração obrigatória antes da síntese.
Com quota restante de 10% ou menos, a UI pede confirmação de conservação. Uma mudança material de provider/model/effort pede aprovação própria. Rejeitar mantém a rota enquanto elegível; não autoriza substituição silenciosa. O primary permanece forte por padrão.
OpenCode mostra apenas metadata operacional: prontidão, plano/aprovação, tarefas, workers, executor/model/effort, purposes, MCPs, concorrência e estado de quota. Não mostra transcripts privados ou chain of thought. Falha ou DAG incompleto não pode virar resposta final bem-sucedida.
Veja Orquestração automática para configurações na TUI e CLI, compatibilidade e limitações de seleção por purpose.