|
| 1 | +<p align="center"> |
| 2 | + <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a> |
| 3 | +</p> |
| 4 | + |
| 5 | +<p align="center"><img src="logo.png" alt="loadout-os" width="500"></p> |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | +**Un système d’exploitation de connaissances pour les agents de codage IA.** Une seule interface en ligne de commande (CLI) qui transmet le contexte approprié au modèle à la demande, au lieu de charger tous les fichiers de mémoire et toutes les règles dans la fenêtre de contexte au début de chaque session. |
| 10 | + |
| 11 | +Vos fichiers d’instructions et vos bases de données de mémoire se développent sans limite. Chaque ligne coûte des jetons pour chaque requête, qu’elle soit pertinente ou non pour la tâche en cours. loadout-os maintient un petit index de répartition toujours chargé et ne charge les éléments volumineux (sujets de mémoire, fichiers de règles) que lorsque les mots-clés de la tâche correspondent. Considérez cela comme un ensemble d’équipements pour un jeu : équipez l’agent avec exactement les connaissances dont il a besoin pour la mission à venir. |
| 12 | + |
| 13 | +## Ce qu’il y a dedans |
| 14 | + |
| 15 | +loadout-os unifie quatre éléments sous une seule application `loadout-os` : |
| 16 | + |
| 17 | +| Élément | Ce que cela fait | |
| 18 | +|---|---| |
| 19 | +| **Kernel** (knowledge router) | Correspondance déterministe de mots-clés/motifs, résolveur hiérarchique à plusieurs niveaux (global → organisation → projet → session) et contrat d’exécution de l’agent. Les éléments principaux se chargent toujours ; les éléments de domaine se chargent en cas de correspondance ; les éléments manuels se chargent lors d’une recherche explicite. | |
| 20 | +| **Memories adapter** | Transforme une base de données `MEMORY.md` en une table de répartition lisible par machine et la vérifie (fichiers manquants, éléments orphelins, doublons, éléments trop longs). | |
| 21 | +| **Rules adapter** | Divise un fichier `CLAUDE.md` volumineux en un index allégé toujours chargé, ainsi qu’en des fichiers de règles chargés à la demande, et valide les métadonnées par rapport à l’index. | |
| 22 | +| **Runtime hook** | Un hook `UserPromptSubmit` qui injecte ≤ 5 lignes de pointeur (≤ 200 jetons) dans les éléments pertinents pour votre requête. En cas d’échec, il ne bloque pas : chaque chemin d’erreur se termine avec le code 0, de sorte qu’un hook défectueux ne peut jamais bloquer une requête. | |
| 23 | + |
| 24 | +Plus trois rituels qui garantissent l’intégrité du système : **`refresh`** (régénérer → valider → publier l’index de répartition, avec un mécanisme de compensation), **`doctor`** (un écran d’état en lecture seule avec 8 vérifications) et **`report`** (observabilité de l’utilisation / des éléments inactifs / du budget de jetons). |
| 25 | + |
| 26 | +## Interface de commande |
| 27 | + |
| 28 | +``` |
| 29 | +# Memory store adapter |
| 30 | +loadout-os memories index <MEMORY.md> [--lazy] [--json] |
| 31 | +loadout-os memories validate <MEMORY.md> [--json] |
| 32 | +loadout-os memories stats <MEMORY.md> [--json] |
| 33 | +loadout-os memories health [path] [--json] |
| 34 | +
|
| 35 | +# Instruction-file adapter |
| 36 | +loadout-os rules analyze <CLAUDE.md> [--rules-dir <dir>] [--json] |
| 37 | +loadout-os rules validate [--rules-dir <dir>] [--lazy] [--repo-root <dir>] [--json] |
| 38 | +loadout-os rules stats <CLAUDE.md> [--rules-dir <dir>] [--json] |
| 39 | +loadout-os rules split [CLAUDE.md] [--yes] [--dry-run] |
| 40 | +
|
| 41 | +# Knowledge router (flat kernel verbs) |
| 42 | +loadout-os resolve # resolve layered loadouts |
| 43 | +loadout-os explain <entry-id> # how an entry resolved across layers |
| 44 | +loadout-os usage <jsonl> # usage summary from the event log |
| 45 | +loadout-os dead <index> <jsonl> # entries never loaded |
| 46 | +loadout-os overlaps <index> # keyword routing ambiguities |
| 47 | +loadout-os budget <index> [jsonl] # token budget breakdown |
| 48 | +loadout-os validate <index> # validate index STRUCTURE (kernel) |
| 49 | +
|
| 50 | +# Rituals + hook |
| 51 | +loadout-os doctor [--json] # read-only health screen |
| 52 | +loadout-os report [--index <p>] [--jsonl <p>] # observability over usage.jsonl |
| 53 | +loadout-os hook test [--prompt "<text>"] # drive the runtime hook on a sample prompt |
| 54 | +loadout-os refresh [--store <d>] [--dest <p>] [--dry-run] # index → validate → publish |
| 55 | +``` |
| 56 | + |
| 57 | +> **Collision de noms, résolue par l’utilisation d’espaces de noms.** La commande plate `validate <index>` est le validateur de la structure d’index du noyau. Les vérificateurs de la base de données et des règles utilisent des espaces de noms (par exemple, `memories validate <MEMORY.md>` et `rules validate`), de sorte que les trois peuvent coexister. Exécutez `loadout-os <command> --help` pour obtenir un résumé, des arguments et des codes de sortie par commande. |
| 58 | +
|
| 59 | +## Installation |
| 60 | + |
| 61 | +```bash |
| 62 | +npm install -g @mcptoolshop/loadout-os # the loadout-os CLI |
| 63 | +loadout-os --help # the full command tree |
| 64 | +loadout-os doctor # confirm the system is healthy |
| 65 | +``` |
| 66 | + |
| 67 | +Le noyau peut également être importé en tant que bibliothèque : `@mcptoolshop/ai-loadout` expose `planLoad`, `matchLoadout`, `resolveLoadout`, `recordLoad` et les types de table de répartition. |
| 68 | + |
| 69 | +## Documentation |
| 70 | + |
| 71 | +- **[Manuel](https://mcp-tool-shop-org.github.io/loadout-os/handbook/)** : aperçu, installation, architecture, référence des commandes, rituels et migration à partir des anciens packages. |
| 72 | +- **[Dépôt](https://github.com/mcp-tool-shop-org/loadout-os)** : code source, feuille de route et problèmes. |
| 73 | + |
| 74 | +## Pourquoi consolider ? |
| 75 | + |
| 76 | +La décomposition par secrets (Parnas 1972) était la solution idéale pour une équipe de N personnes. Pour un opérateur solo plus une équipe LLM, elle est opérationnellement inefficace : le travail multi-dépôts fragmente le contexte de l’agent entre les sessions, les adaptateurs non publiés se détériorent (seul le noyau a été publié) et l’avancement se sérialise entre les dépôts. Un seul dépôt unifié avec une seule CLI suffit pour l’opérateur. Le raisonnement complet est contenu dans la base de données de mémoire canonique (`feedback_consolidate_when_cant_juggle_repos.md`). |
| 77 | + |
| 78 | +## État |
| 79 | + |
| 80 | +La consolidation est en cours. loadout-os regroupe le noyau et les deux adaptateurs qui étaient auparavant des packages distincts, ainsi que le hook d’exécution en direct. La version publiée aujourd’hui sur la plateforme est **`@mcptoolshop/ai-loadout`** (le noyau) ; le package unifié `loadout-os` sera publié à partir de ce dépôt. Les trois anciens modules continueront de fonctionner jusqu’à leur retrait prévu. |
| 81 | + |
| 82 | +## Modèle de confiance |
| 83 | + |
| 84 | +loadout-os s’exécute entièrement sur votre machine. Il n’y a pas d’appel réseau, pas de télémétrie et pas de compte. |
| 85 | + |
| 86 | +- **Données auxquelles il accède (uniquement localement) :** votre base de données de mémoire (`MEMORY.md` + fichiers de sujets), vos fichiers d’instructions (`CLAUDE.md` + `.claude/rules/`), l’index de répartition généré à côté de la base de données, l’index du résolveur global (`~/.ai-loadout/index.json`) et le journal d’utilisation en annexe uniquement (`~/.ai-loadout/usage.jsonl`). |
| 87 | +- **Données auxquelles il n’accède PAS :** pas de transfert de données sur le réseau, pas de télémétrie, pas de services à distance, pas d’informations d’identification ou de secrets. Rien n’est lu, stocké ou transmis en dehors des chemins locaux ci-dessus. |
| 88 | +- **Autorisations requises :** uniquement le système de fichiers local. `doctor` et `report` sont en lecture seule (ils n’écrivent jamais). Les seules écritures concernent les fichiers d’index, la sortie interactive de `rules split` et le journal d’utilisation, le tout dans les emplacements locaux attendus ci-dessus. L’écriture irréversible (`refresh` publiant l’index global en direct) est protégée par un arrêt andon en cas d’échec de la validation et un mécanisme de compensation `<dest>.bak`. Le hook d’exécution ne bloque pas : chaque chemin d’erreur se termine avec le code `0`, de sorte qu’il ne peut jamais bloquer une requête. |
| 89 | + |
| 90 | +Modèle complet des menaces et processus de signalement : [SECURITY.md](./SECURITY.md). |
| 91 | + |
| 92 | +## Licence |
| 93 | + |
| 94 | +MIT — correspond à toutes les sources en amont. |
0 commit comments