1
Architecture
Augustin ROUX edited this page 2026-04-27 08:46:41 +00:00

Architecture

Vue d'ensemble

┌─────────────────────────────────────────────────────────┐
│  cmd/muyue/                  CLI Cobra (entrypoint)     │
│  ├─ commands/                root/scan/setup/...        │
│  └─ main.go                                             │
├─────────────────────────────────────────────────────────┤
│  internal/                                              │
│  ├─ api/         HTTP server + handlers (REST + SSE)    │
│  ├─ agent/       Tool registry (terminal, crush_run,...) │
│  ├─ orchestrator/ AI provider client + fallback chain   │
│  ├─ workflow/    Engine + planner (multi-step plans)    │
│  ├─ platform/    OS / WSL / shell / pkg-mgr detection   │
│  ├─ scanner/     System tools scan (crush, claude, …)   │
│  ├─ skills/      Skills registry + deploy/undeploy      │
│  ├─ mcp/         MCP server registry                    │
│  ├─ lsp/         LSP server registry + auto-install     │
│  ├─ config/      YAML config + secret encryption        │
│  ├─ secret/      AES-GCM encryption helpers             │
│  ├─ profiler/    CPU/RAM/Net metrics                    │
│  ├─ installer/   Tool installer (apt/dnf/brew/winget)   │
│  └─ updater/     Self-update                            │
├─────────────────────────────────────────────────────────┤
│  web/            Vite + React 19 SPA                    │
│  └─ src/                                                │
│      ├─ components/  App / Studio / Shell / Dashboard… │
│      ├─ api/client.js (REST + SSE)                      │
│      ├─ i18n/        en / fr                            │
│      └─ themes/                                         │
└─────────────────────────────────────────────────────────┘

Modes d'exécution

  • muyue — TUI (cobra commands)
  • muyue desktop — démarre le serveur HTTP local et ouvre l'UI web (assets embed via web/embed.go)

Points d'extension

  • Tool registry : ajouter un fichier dans internal/agent/, créer une struct params + NewXxxTool(), l'enregistrer dans DefaultRegistry()
  • MCP / LSP / Skills : registries génériques alimentés par YAML
  • Workflow : étapes typées (tool_call, condition, approval, parallel)
  • Provider AI : ajouter dans config.AIProvider, getProviderBaseURL, et le fallback chain dans sendWithFallback

Dépendances

  • Go 1.24+ (CI testé sur 1.24)
  • github.com/spf13/cobra, github.com/gorilla/websocket, github.com/creack/pty/v2, github.com/google/uuid
  • React 19, xterm.js 6 (beta), mermaid 11