Chimera — Arquitetura
Este documento mapeia a base de código para o design e para a pesquisa em que ela se apoia. Para o "porquê", veja VISION.md.
O núcleo de raciocínio: LLM-Fusion
chimera/fusion/
O motor de fusão executa uma tarefa através de um painel de modelos, faz um juiz produzir
uma análise estruturada (consenso / contradições / cobertura parcial / insights únicos / pontos
cegos) e então um sintetizador escreve a resposta final fundamentada nessa análise
(FusionEngine). Ele implementa o protocolo SupportsComplete, então é um backend de raciocínio
plug-and-play em qualquer lugar onde um modelo é esperado — inclusive dentro do loop do agente.
Um roteador consciente de custo (RoutedBackend + RoutingPolicy) mantém a fusão seletiva:
turnos de chamada de tool vão para um único modelo (a fusão não faz tool-calling), e só turnos de
raciocínio profundo / de alto risco passam por fusão. Inspirado no OpenRouter Fusion (o ganho vem
da etapa de síntese, não só da diversidade de modelos) e no AURORA-AI (orçamento adaptativo entre
modelos heterogêneos).
O loop do agente & a autonomia Tier-2
chimera/core/
Agent— um loop mínimo de ReAct / tool-calling com um transcript explícito (o estado vive fora do modelo). Depende só deSupportsComplete+ umToolRegistry.AutonomousAgent— Tier-2: monta o contexto Spine com escopo de propriedade → planeja → snapshot → executa → revisão do Manager (gerar-vs-verificar) → verificar-ou-reverter → tenta de novo com feedback, registrando cada tentativa no buffer de experiência.WorkspaceGuard— snapshot/restauração de arquivo de texto, o mecanismo por trás do verificar-ou-reverter.CommandVerifier— "evidência executável" (exit 0 == sucesso).
Atacando a degradação da evolução contínua
O problema em aberto (segundo Agentic Software, 2606.05608): a performance cai de >80% em
tarefas isoladas para ~38% em evolução contínua — contexto de longo horizonte + propagação de
erro. As contramedidas do Chimera, cada uma fundamentada na literatura:
| Contramedida | Onde | Base |
|---|---|---|
| Externalizar o estado (transcript/workspace, não o contexto do LLM) | core, WorkspaceGuard |
HORIZON 2606.28279 |
| Contexto com escopo de propriedade (Spine) | core/spine.py |
Spec Growth Engine 2606.27045 |
| Supervisão gerar-vs-verificar | core/supervisor.py |
AdvancedShelLM 2606.27990 |
| Verificar-ou-reverter | core/autonomous.py |
autoresearch / AutoMegaKernel 2606.09682 |
| Buffer de experiência (falhas como negativos) | evolution/experience.py |
HORIZON 2606.28279 |
| Consolidação de mensagens em times | orchestration/comms.py |
MOC 2606.02359 |
| Benchmark de evolução contínua | eval/continuous.py |
Enunciado do problema do EvoClaw |
Memória & auto-evolução
chimera/memory/, chimera/evolution/
- Memory Manager — itens hierárquicos (working / episodic / semantic / persona) com
ADD / UPDATE / DELETE / NOOP(remember) e deduplicação pormerge(Memory-R1,2606.14502). - Skill evolver — o
SkillEvolverpropõe umaLearnedSkillreutilizável a partir de um sucesso, testa e só mantém se passar (propor → testar → manter/descartar). Skills aprendidas são templates de prompt, não código executável — seguro de autorar de forma autônoma antes de qualquer auto-modificação em nível de código. O refinamento melhora um template a partir de suas falhas (VIBEMed2606.15504). - Crons auto-aprendidos — o
CronLearnerdetecta tarefas recorrentes e propõe crons (created_by=agent, desabilitados até aprovação humana). - Benchmark de evolução contínua — roda uma cadeia de tarefas por um solver e reporta a degradação (taxa geral de aprovação, primeira metade vs. segunda metade, maior sequência).
Governança & segurança
chimera/governance/
Um kernel de confiança auto-aperfeiçoável (AgentTrust v2, 2606.08539):
TrustKernel.evaluate(action)→ allow / warn / block / review. ORuleSetléxico trata ameaças de assinatura fixa de forma determinística; um juiz semântico opcional trata a intenção; regras destiladas tornam isso mais barato com o tempo. Invariante: nunca bloquear de forma dura uma ação benigna. O juiz e seu armazém de precedentes são uma costura de biblioteca que nenhuma superfície entregue liga — decidido em 2026-09-12 com os números do docstring dekernel.py(as regras e o livro de taint bloqueiam 7 / 7 e 6 / 6 nos dois corpora sem uma única chamada de modelo; um juiz acrescentaria uma chamada de modelo à maioria das ações de ferramenta e um viés medido); o build falha se uma superfície passar a ligar um sem dizer por quê.SkillValidator/ScheduleValidator— a superfície de edição restrita e estaticamente verificável para auto-modificação (AutoMegaKernel2606.09682): propostas inseguras são rejeitadas antes mesmo de rodar.AuditLog— JSONL append-only de decisões e mudanças de evolução.GovernedTool/govern_registry— envolve qualquer tool para que sua execução seja controlada; compõe com o loop de agente existente sem alterá-lo (chimera ... --guard).
A camada de taint (contenção de prompt-injection)
Sobreposta ao kernel — heurística, honesta, e nunca uma fronteira dura (o sandbox é essa fronteira):
TaintLedger+LedgeredTool(ledger.py,ledger_tool.py) — um ledger de capacidades por execução. Um fetch contamina seu conteúdo; uma escrita/execução que consome conteúdo contaminado escala para review (assess_action). Conteúdo buscado não confiável é retornado cercado como dado e com tokens de controle de chat-template removidos (sanitize.py), e artefatos duráveis de uma execução contaminada mantêm proveniênciataintedpara que o veneno não consiga se lavar em uma memória/skill "limpa".AggregateMonitor(aggregate_monitor.py) — um monitor um nível acima: dado os eventos de capacidade de cada sub-agente, ele captura fluxos divididos que um monitor por-agente não consegue ver (o agente A busca conteúdo não confiável, o agente B executa ou exfiltra).check_drift(drift.py) — umaSpecde requisitos executáveis (defines/contains/absent/command) que serve tanto como referência de verdade parasolve --verifyquanto como a autoridade do orquestrador de projeto sobre o que significa "pronto" (abaixo). Verificações negativas falham de forma fechada em arquivos que não conseguem escanear.QuarantineTool+ allowlist adaptativa (quarantine.py,allowlist.py) — um leitor quarentenado dual-LLM/CaMeL e uma allowlist de tools adaptativa a taint que se estreita assim que uma execução é contaminada.
Times multi-agente (Tier 3)
chimera/orchestration/
Role+RoleAgent— especialização de papel (estilo CrewAI).SequentialCrew— papéis em ordem, cada um vê as saídas anteriores consolidadas e pode escrever na memória compartilhada.SupervisorCrew— trabalhadores endereçam a tarefa em paralelo, as saídas são consolidadas, e um supervisor sintetiza (estilo CAPRAparallel_review,2606.18976).consolidate— a fusão de mensagens do MOC mantém o contexto do time enxuto (2606.02359).
Ecossistema auto-evolutivo (Tier 4)
chimera/ecosystem/
MetaAgent— projeta/constrói/avalia agentes especializados (agentes construindo agentes). Duas salvaguardas do Meta-Agent Challenge (2606.04455): isolamento de tools (as tools de um agente projetado são filtradas para uma lista permitida) e separação de testes ocultos (passar no visível + falhar no oculto ⇒ suspeita de reward-hacking, não creditado como sucesso).ChangeQueue— governa o ritmo das mudanças (fila de merge FIFO + limites de lote), não o headcount ("Govern the Repository",2606.28235).TrajectoryCollector— registra (prompt, resposta, resultado) e exporta datasets SFT / DPO. O fine-tuning propriamente dito é opt-in e externo — o Chimera coleta, ele não treina.
Economia de custo & a hierarquia de delegação
chimera/orchestration/ (hierarchy, cascade, budget, receipts, envelope_verify)
A delegação só compensa quando é mais barata do que fazer o trabalho inline, e a alegação é medida, não afirmada:
HierarchicalOrchestrator— decompõe → despacha trabalhadores com orçamento → verifica cada resultado → sintetiza. Fan-out no formato de leitura delega; uma subtarefa trivialmente pequena é respondida inline pelo modelo de confiança do topo.CascadeBackend— fraco → gate → médio → gate → fusão, subindo de nível só quando a resposta de um tier falha em um gate de aceitação barato. O route log registra cada salto, então o custo é a soma de todos os saltos tentados, não só o aceito — as escaladas são pagas.TokenBudget/BudgetedBackend/EffortPolicy— um teto rígido de tokens aplicado no backend, por trabalhador.EnvelopeVerifier— schema → critérios de aceitação → checagem pontual probabilística (avalia a fidelidade de um resumo contra o artefato bruto); uma nova pergunta disparada por uma falha na checagem pontual é reauditada.- Recibos de delegação (
receipts.py) — cada delegação registra seus tokens/custo medidos e o contrafactual inline na mesma linha, precificado na tarifa própria de cada modelo (modelo desconhecido →None, nunca fabricado). O overhead de decompor/sintetizar do próprio orquestrador também é medido, entãosummarize_delegations(chimera delegations) reporta uma economia líquida auditável, ecascade-benchreporta a cauda de custo (p50/p95/p99), não só a média.
O flywheel de auto-evolução
chimera/evolution/
O "treino" que nunca toca nos pesos — sinalizado por fitness, sem gradiente, e reversível:
EvolutionContext— o conjunto compartilhado (experience, trajectories, memory, auto-evolver, skill cards, playbook) que torna o aprendizado uma propriedade da pilha do agente, não só do comandosolve.- Skill cards + refinamento GEPA, o playbook ACE, e uma
SkillLifecyclePolicyque promove/rebaixa uma skill pelas suas estatísticas medidas de uso/sucesso (uma skill nova nasceprovisional). - O diff-gate — um "sucesso oco" (verificador passou mas o diff do workspace está vazio) não gera uma skill ou memória; o flywheel só aprende com trabalho que de fato aconteceu.
- O transfer-gate (
eval/transfer.py) — um artefato ajustado só é promovido se também se sustentar em um holdout, protegendo contra transferência negativa.maturity.Scorecard.weakest()é o objetivo: o loop mira a capacidade mais fraca. Regressões só fazem rollback automático diante de uma queda estatisticamente significativa (um IC, nunca um único ponto).
Toda mudança de um default passa por um A/B pareado pré-registrado (bench/), publicado quer
vença quer perca — sem re-rodar em busca de significância.
Autonomia de projeto (do início ao fim)
chimera/orchestration/project.py
O ProjectOrchestrator executa um projeto inteiro contra uma Spec: grafo de tarefas (um DAG
estilo Kanban com depends_on) → cada card pronto é resolvido (com o contexto de evolução acima)
→ aceito contra a Spec via check_drift (a única autoridade sobre "pronto") → requisitos não
atendidos geram os próximos cards, repetindo até a Spec estar alinhada ou um orçamento /
máximo de iterações / checkpoint humano interromper. Passos de risco (risk: high — deploy /
migração / delete) pausam para aprovação humana; a execução é durável e retomável.
Transversal
- Providers (
providers/) — um gateway único, agnóstico de provedor, sobre o LiteLLM; as chaves podem viver em.enve são exportadas para o ambiente para que o LiteLLM as veja. - Tools (
tools/) — primitivas nativas; os metadados de tool são atributos de instância para que tools geradas dinamicamente (OpenAPI/MCP) funcionem. - Integrations (
integrations/) — cliente MCP (extra opcionalmcp) + importador OpenAPI→tool + registro de conectores. - Scheduler (
scheduler/) — crons + SOPs de evento; o tempo é injetado para testes determinísticos. - Migration (
migration/) — importa config + skills + faz merge da memória de longo prazo do Hermes / OpenClaw, deduplicada e não-destrutiva.
Filosofia de testes
Todo subsistema é testado unitariamente com backends falsos — determinísticos, sem rede, sem
chaves. Comandos que de fato chamam um LLM têm smoke test para seu caminho de falha sem chave. O
quality gate (ruff + mypy --strict + pytest) roda no CI em Python 3.11 e 3.12.