Skip to content

Architecture ​

Sur cette page ​

Vue d'ensemble ​

┌─────────────┐     ┌─────────────┐
│  Ink (Node) │     │ OpenTUI     │
│  InkApp.tsx │     │ (Bun)       │
└──────┬──────┘     └──────┬──────┘
       │                   │
       └─────────┬─────────┘
                 ▼
          ┌──────────────┐
          │  MarexApp    │  boucle agent, commandes,
          │  (app.ts)    │  sessions, permissions, mémoire
          └──────┬───────┘
                 │
    ┌────────────┼────────────┐
    ▼            ▼            ▼
 outils      client API    fichiers
 (tools.ts)  (api.ts)      sessions, usage…

Les deux interfaces ne sont que des vues : toute la logique vit dans MarexApp, pilotée par événements. Le bundle Node n'embarque aucun code OpenTUI (séparation stricte, builds indépendants).

Modules ​

ModuleRôle
src/index.ts / src/ink-entry.tsxEntrée Node (Ink) ; repli explicite si OpenTUI est demandé
src/opentui-entry.tsxEntrée Bun (OpenTUI)
src/app.tsBoucle agent, commandes, sessions, permissions, mémoire
src/api.tsClient multi-fournisseur, streaming, cache, capacités
src/tools.ts, src/tools-dispatch.ts, src/parallel.tsSchémas d'outils, exécution, concurrence (lecture parallèle / écriture séquentielle)
src/file-search.ts, src/result-processor.tsParcours de fichiers borné, budgets de résultats
src/config.tsConfiguration, catalogue des fournisseurs
src/agents.ts, src/subagents.tsOrchestration multi-agent (Lecteur → Exécuteur → Vérificateur)
src/session.tsSessions : magasin unique .marex/sessions/, reprise, import legacy
src/skills.tsMatching de agent/skills
src/memory.ts, src/memory-store.tsInstructions, mémoire long terme, omissions
src/message-normalize.tsAssainissement de l'historique avant envoi
src/risk.ts, src/audit.tsClassification des risques, audit
src/commands//sandbox, /cache, /usage (dashboard web)
src/search.ts, src/native-search.tsRepli Tavily→Brave→Jina→Exa→DDG, protocoles et citations natives
src/images.tsImages : détection par contenu, limites, sérialisation OpenAI/Anthropic/Responses
src/usage.ts, src/usage-store.tsUsage par tour (JSONL/SQLite)
src/ui/Ink (InkApp.tsx), OpenTUI (OpenTuiApp.tsx, blocs, menu /, dialogues)
src/reasoning.ts, src/token-format.tsRaisonnement et formats de tokens
dist/marex.js (Node/Ink), marex-tui.js (Bun/OpenTUI)

Invariants ​

  • Le modèle décide, Marexcode exécute — raisonnement, génération et choix d'outils : responsabilité du modèle
  • Rien de caché — aucune télémétrie ; les requêtes vont uniquement à l'endpoint configuré
  • Échecs explicites — jamais de repli silencieux (sandbox, vision, permissions, compaction)
  • Contexte borné — sorties d'outils plafonnées, omissions relisibles, compaction à 65 %
  • Images = références — jamais de base64 persisté ; messages utilisateur uniquement
  • Données locales — sessions, mémoire, usage : .marex/ et ~/.marex/, rien ne part