Appearance
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
| Module | Rôle |
|---|---|
src/index.ts / src/ink-entry.tsx | Entrée Node (Ink) ; repli explicite si OpenTUI est demandé |
src/opentui-entry.tsx | Entrée Bun (OpenTUI) |
src/app.ts | Boucle agent, commandes, sessions, permissions, mémoire |
src/api.ts | Client multi-fournisseur, streaming, cache, capacités |
src/tools.ts, src/tools-dispatch.ts, src/parallel.ts | Schémas d'outils, exécution, concurrence (lecture parallèle / écriture séquentielle) |
src/file-search.ts, src/result-processor.ts | Parcours de fichiers borné, budgets de résultats |
src/config.ts | Configuration, catalogue des fournisseurs |
src/agents.ts, src/subagents.ts | Orchestration multi-agent (Lecteur → Exécuteur → Vérificateur) |
src/session.ts | Sessions : magasin unique .marex/sessions/, reprise, import legacy |
src/skills.ts | Matching de agent/skills |
src/memory.ts, src/memory-store.ts | Instructions, mémoire long terme, omissions |
src/message-normalize.ts | Assainissement de l'historique avant envoi |
src/risk.ts, src/audit.ts | Classification des risques, audit |
src/commands/ | /sandbox, /cache, /usage (dashboard web) |
src/search.ts, src/native-search.ts | Repli Tavily→Brave→Jina→Exa→DDG, protocoles et citations natives |
src/images.ts | Images : détection par contenu, limites, sérialisation OpenAI/Anthropic/Responses |
src/usage.ts, src/usage-store.ts | Usage par tour (JSONL/SQLite) |
src/ui/ | Ink (InkApp.tsx), OpenTUI (OpenTuiApp.tsx, blocs, menu /, dialogues) |
src/reasoning.ts, src/token-format.ts | Raisonnement 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