Chimera — Architecture
Cette page n'est pas encore traduite : vous lisez l'original en anglais.
This document maps the codebase to the design and to the research it builds on. For the "why", see VISION.md.
The reasoning core: LLM-Fusion
chimera/fusion/
The fusion engine runs a task through a panel of models, has a judge produce a
structured analysis (consensus / contradictions / partial coverage / unique insights /
blind spots), then a synthesizer writes the final answer grounded in that analysis
(FusionEngine). It implements the SupportsComplete protocol, so it is a drop-in
reasoning backend anywhere a model is expected — including inside the agent loop.
A cost-aware router (RoutedBackend + RoutingPolicy) keeps fusion selective: tool-
calling turns go to a single model (fusion does not tool-call), and only deep / high-stakes
reasoning turns are fused. Inspired by OpenRouter Fusion (the lift comes from the synthesis
step, not only model diversity) and AURORA-AI (adaptive budget across heterogeneous models).
The agent loop & Tier-2 autonomy
chimera/core/
Agent— a minimal ReAct / tool-calling loop with an explicit transcript (state lives outside the model). Depends only onSupportsComplete+ aToolRegistry.AutonomousAgent— Tier-2: assemble ownership-scoped Spine context → plan → snapshot → execute → Manager review (generate-vs-verify) → verify-or-revert → retry with feedback, recording each attempt in the experience buffer.WorkspaceGuard— text-file snapshot/restore, the mechanism behind verify-or-revert.CommandVerifier— "executable evidence" (exit 0 == success).
Attacking continuous-evolution degradation
The open problem (per Agentic Software, 2606.05608): perf falls from >80% on isolated
tasks to ~38% on continuous evolution — long-horizon context + error propagation. Chimera's
countermeasures, each grounded in the literature:
| Countermeasure | Where | Basis |
|---|---|---|
| Externalize state (transcript/workspace, not LLM context) | core, WorkspaceGuard |
HORIZON 2606.28279 |
| Ownership-scoped context (Spine) | core/spine.py |
Spec Growth Engine 2606.27045 |
| Generate-vs-verify supervision | core/supervisor.py |
AdvancedShelLM 2606.27990 |
| Verify-or-revert | core/autonomous.py |
autoresearch / AutoMegaKernel 2606.09682 |
| Experience buffer (failures as negatives) | evolution/experience.py |
HORIZON 2606.28279 |
| Message consolidation in teams | orchestration/comms.py |
MOC 2606.02359 |
| Continuous-evolution benchmark | eval/continuous.py |
EvoClaw problem statement |
Memory & self-evolution
chimera/memory/, chimera/evolution/
- Memory Manager — hierarchical items (working / episodic / semantic / persona) with
ADD / UPDATE / DELETE / NOOP(remember) andmergededup (Memory-R1,2606.14502). - Skill evolver —
SkillEvolverproposes a reusableLearnedSkillfrom a success, tests it, and keeps it only if it passes (propose → test → keep/discard). Learned skills are prompt templates, not executable code — safe to author autonomously before code-level self-modification. Refinement improves a template from its failures (VIBEMed2606.15504). - Self-learned crons —
CronLearnerdetects recurring tasks and proposes crons (created_by=agent, disabled pending human approval). - Continuous-evolution benchmark — runs a chain of tasks through a solver and reports degradation (overall pass rate, first-half vs second-half, longest streak).
Governance & safety
chimera/governance/
A self-improving trust kernel (AgentTrust v2, 2606.08539):
TrustKernel.evaluate(action)→ allow / warn / block / review. LexicalRuleSethandles fixed-signature threats deterministically; an optional semantic judge handles intent; distilled rules make it cheaper over time. Invariant: never hard-block a benign action.SkillValidator/ScheduleValidator— the constrained, statically-checkable edit surface for self-modification (AutoMegaKernel2606.09682): unsafe proposals are rejected before they ever run.AuditLog— append-only JSONL of decisions and evolution changes.GovernedTool/govern_registry— wrap any tool so its execution is gated; composes with the existing agent loop unchanged (chimera ... --guard).
The taint layer (prompt-injection containment)
Layered on top of the kernel — heuristic, honest, and never a hard boundary (the sandbox is):
TaintLedger+LedgeredTool(ledger.py,ledger_tool.py) — a per-run capability ledger. A fetch taints its content; a write/exec that consumes tainted content escalates to review (assess_action). Untrusted fetched content is returned data-fenced and with chat-template control tokens stripped (sanitize.py), and durable artifacts from a tainted run keep ataintedprovenance so poison can't launder itself into a "clean" memory/skill.AggregateMonitor(aggregate_monitor.py) — a monitor one level up: given each sub-agent's capability events, it catches split flows a per-agent monitor can't see (agent A fetches untrusted content, agent B execs or exfiltrates it).check_drift(drift.py) — aSpecof executable requirements (defines/contains/absent/command) that doubles as thesolve --verifyground truth and the project orchestrator's authority on "done" (below). Negative checks fail closed on files they can't scan.QuarantineTool+ adaptive allowlist (quarantine.py,allowlist.py) — a dual-LLM/CaMeL quarantined reader and a taint-adaptive tool allowlist that narrows once a run is tainted.
Multi-agent teams (Tier 3)
chimera/orchestration/
Role+RoleAgent— role specialization (CrewAI-style).SequentialCrew— roles in order, each sees the consolidated prior outputs and can write to shared memory.SupervisorCrew— workers address the task in parallel, outputs are consolidated, and a supervisor synthesizes (CAPRA-styleparallel_review,2606.18976).consolidate— MOC message merging keeps team context lean (2606.02359).
Self-evolving ecosystem (Tier 4)
chimera/ecosystem/
MetaAgent— designs/builds/evaluates specialized agents (agents building agents). Two safeguards from the Meta-Agent Challenge (2606.04455): tool isolation (a designed agent's tools are filtered to an allowed list) and hidden-test separation (visible pass- hidden fail ⇒ reward-hacking suspected, not credited as success).
ChangeQueue— governs change tempo (FIFO merge queue + batch caps), not headcount ("Govern the Repository",2606.28235).TrajectoryCollector— records (prompt, response, outcome) and exports SFT / DPO datasets. Actual fine-tuning is opt-in and external — Chimera collects, it doesn't train.
Cost economics & the delegation hierarchy
chimera/orchestration/ (hierarchy, cascade, budget, receipts, envelope_verify)
Delegation only pays when it's cheaper than doing the work inline, and the claim is measured, not asserted:
HierarchicalOrchestrator— decompose → dispatch budgeted workers → verify each result → synthesize. Read-shaped fan-out delegates; a trivially small subtask is answered inline by the trusted top model.CascadeBackend— weak → gate → mid → gate → fusion, climbing only when a tier's answer fails a cheap acceptance gate. The route log records every hop, so the cost is the sum over hops tried, not just the accepted one — escalations are paid for.TokenBudget/BudgetedBackend/EffortPolicy— a hard token ceiling enforced at the backend, per worker.EnvelopeVerifier— schema → acceptance criteria → probabilistic spot check (grade a summary's faithfulness against the raw artifact); a re-ask triggered by a spot failure is re-audited.- Delegation receipts (
receipts.py) — every delegation logs its measured tokens/cost and the inline counterfactual in the same row, priced at each model's own rate (unknown model →None, never fabricated). The orchestrator's own decompose/synth overhead is metered too, sosummarize_delegations(chimera delegations) reports an auditable net saving, andcascade-benchreports the cost tail (p50/p95/p99), not just the mean.
The self-evolution flywheel
chimera/evolution/
The "training" that never touches weights — fitness-signaled, gradient-free, and reversible:
EvolutionContext— the shared assembly (experience, trajectories, memory, auto-evolver, skill cards, playbook) that makes learning a property of the agent stack, not just thesolvecommand.- Skill cards + GEPA refinement, ACE playbook, and a
SkillLifecyclePolicythat promotes/ demotes a skill by its measured use/success stats (a new skill is bornprovisional). - The diff-gate — a "hollow success" (verifier passed but the workspace diff is empty) does not mint a skill or memory; the flywheel only learns from work that actually happened.
- The transfer-gate (
eval/transfer.py) — a tuned artifact is promoted only if it also holds on a holdout, guarding against negative transfer.maturity.Scorecard.weakest()is the objective: the loop targets the weakest capability. Regressions auto-roll-back only on a statistically significant drop (a CI, never a single point).
Every flip of a default is gated behind a pre-registered paired A/B (bench/), published whether
it wins or loses — no re-rolling for significance.
Project autonomy (start-to-finish)
chimera/orchestration/project.py
ProjectOrchestrator runs a whole project against a Spec: task-graph (a Kanban DAG with
depends_on) → each ready card solved (with the evolution context above) → accepted against the
Spec via check_drift (the only authority on "done") → unmet requirements generate the next cards,
looping until the Spec is aligned or a budget / max-iterations / human checkpoint stops it. Risky
steps (risk: high — deploy / migration / delete) pause for human approval; the run is durable
and resumable.
Cross-cutting
- Providers (
providers/) — one provider-agnostic gateway over LiteLLM; keys can live in.envand are exported to the environment so LiteLLM sees them. - Tools (
tools/) — native primitives; tool metadata are instance attributes so dynamically generated tools (OpenAPI/MCP) work. - Integrations (
integrations/) — MCP client (optionalmcpextra) + OpenAPI→tool importer + connector registry. - Scheduler (
scheduler/) — crons + event SOPs; time is injected for deterministic tests. - Migration (
migration/) — import config + skills + merge long-term memory from Hermes / OpenClaw, deduped and non-destructive.
Testing philosophy
Every subsystem is unit-tested with fake backends — deterministic, no network, no keys.
Commands that actually call an LLM are smoke-tested for their no-key failure path. The quality
gate (ruff + mypy --strict + pytest) runs in CI on Python 3.11 and 3.12.