日本語 | 中文 | Español | Français | हिन्दी | English | Português (BR)
Router di conoscenza contestuale per agenti AI.
ai-loadout è il cuore dello stack Knowledge OS: include una tabella di dispatch, un motore di matching, un risolutore gerarchico e un contratto di runtime per gli agenti. Invece di inserire tutto nel contesto, si mantiene un indice ridotto e si caricano i dati solo quando necessario.
Immaginate che sia una configurazione di gioco: si fornisce all'agente esattamente le conoscenze di cui ha bisogno prima di ogni missione.
npm install -g @mcptoolshop/ai-loadout # CLI
npm install @mcptoolshop/ai-loadout # libraryUn LoadoutIndex è un indice strutturato di payload di conoscenza:
{
"version": "1.0.0",
"generated": "2026-03-06T12:00:00Z",
"entries": [
{
"id": "github-actions",
"path": ".rules/github-actions.md",
"keywords": ["ci", "workflow", "runner"],
"patterns": ["ci_pipeline"],
"priority": "domain",
"summary": "CI triggers, path gating, runner cost control",
"triggers": { "task": true, "plan": true, "edit": false },
"tokens_est": 680,
"lines": 56
}
],
"budget": {
"always_loaded_est": 320,
"on_demand_total_est": 8100,
"avg_task_load_est": 520,
"avg_task_load_observed": null
}
}| Livello | Comportamento | Esempio |
|---|---|---|
core |
Caricato sempre | "non saltare mai i test per mantenere il CI verde" |
domain |
Caricato quando le parole chiave del task corrispondono | Regole del CI durante la modifica dei workflow |
manual |
Non caricato automaticamente, solo ricerca esplicita | Aspetti oscuri della piattaforma |
Ogni file payload contiene i propri metadati di routing:
---
id: github-actions
keywords: [ci, workflow, runner, dependabot]
patterns: [ci_pipeline]
priority: domain
triggers:
task: true
plan: true
edit: false
---
# GitHub Actions Rules
CI minutes are finite...I metadati sono la fonte di verità. L'indice viene derivato da essi.
Il runtime è il modo canonico in cui gli agenti utilizzano una configurazione. Gestisce l'intera sequenza: risoluzione dei livelli → matching del task → decisione di cosa caricare → registrazione dell'utilizzo.
Pianifica cosa caricare per un determinato task. Questa è la funzione principale rivolta all'agente.
import { planLoad } from "@mcptoolshop/ai-loadout";
const plan = planLoad("fix the CI workflow");
// plan.preload — core entries, load immediately
// plan.onDemand — domain matches, load when needed
// plan.manual — available via explicit lookup onlyRestituisce un LoadPlan con:
preload/onDemand/manual— voci separate per modalità di caricamentoprovenance— da quale livello proviene ogni vocebudget— budget di token per l'indice risoltopreloadTokens/onDemandTokens— costi totali dei tokenlayerNames/conflicts— metadati del livello
Registra che un agente ha caricato una voce. Permette di monitorare (voci non utilizzate, deriva del budget, frequenza). Opzionale: scrive solo se usagePath è impostato nelle opzioni.
Carica esplicitamente una voce manuale tramite ID dall'indice risolto.
Scopri e unisci gli indici di configurazione da uno stack di livelli canonico:
- global —
~/.ai-loadout/index.json - org — percorso esplicito o
$AI_LOADOUT_ORG - project —
<cwd>/.claude/loadout/index.json - session — percorso esplicito o
$AI_LOADOUT_SESSION
I livelli successivi hanno la precedenza. I livelli mancanti sono normali.
import { resolveLoadout, explainEntry } from "@mcptoolshop/ai-loadout";
const { merged, layers, searched } = resolveLoadout();
// merged.entries — deduplicated entries from all layers
// merged.provenance — entryId → source layer name
const why = explainEntry("github-actions", layers);
// why.finalLayer, why.overrideChain, why.definitionsConfronta una descrizione del task con un indice di configurazione. Restituisce voci ordinate in base alla forza del matching.
import { matchLoadout } from "@mcptoolshop/ai-loadout";
const results = matchLoadout("fix the CI workflow", index);
// [{ entry, score: 0.67, matchedKeywords: ["ci", "workflow"], reason, mode }]- Le voci principali sono sempre incluse (punteggio 1.0)
- Le voci manuali non sono mai incluse automaticamente
- Le voci specifiche del dominio sono valutate in base alla sovrapposizione delle parole chiave + bonus per i pattern
- I risultati sono ordinati per punteggio decrescente, quindi per costo dei token crescente
Cerca una voce specifica tramite ID. Per voci manuali o accesso esplicito.
Registro di utilizzo in formato JSONL (solo aggiunte). Non è mai connesso alla rete, non raccoglie dati sensibili.
Trova le voci che non sono mai state caricate.
Trova le parole chiave condivise tra le voci (ambiguità di routing).
Analisi del budget dei token con confronto tra valori osservati e stimati.
Unione deterministica per configurazioni gerarchiche. Restituisce un MergedIndex con tracciamento della provenienza e segnalazione dei conflitti.
Analizza e serializza il frontmatter in formato YAML dai file di payload.
Verifica l'integrità strutturale di un LoadoutIndex. Controlla: campi obbligatori, ID univoci, formato kebab-case, limiti del riepilogo, presenza di parole chiave per le voci di dominio, priorità valide, budget non negativi.
Stima il numero di token da un testo. Utilizza l'euristica chars/4.
ai-loadout resolve Resolve layered loadouts
ai-loadout explain <entry-id> Explain why an entry resolved to its current state
ai-loadout validate <index> Validate index structure
ai-loadout usage <jsonl> Usage summary from event log
ai-loadout dead <index> <jsonl> Find entries never loaded
ai-loadout overlaps <index> Find keyword routing ambiguities
ai-loadout budget <index> [jsonl] Token budget breakdown
Tutti i comandi supportano --json per l'utilizzo in script. I comandi di risoluzione accettano --project, --global, --org, --session.
import type {
LoadoutEntry,
LoadoutIndex,
Frontmatter,
MatchResult,
ValidationIssue,
Priority, // "core" | "domain" | "manual"
Triggers, // { task, plan, edit }
LoadMode, // "eager" | "lazy" | "manual"
Budget,
UsageEvent,
MergeConflict,
MergedIndex,
LoadPlan, // returned by planLoad()
ResolvedLoadout, // returned by resolveLoadout()
EntryExplanation, // returned by explainEntry()
IssueSeverity, // "error" | "warning"
RuntimeOptions, // options for planLoad / recordLoad / manualLookup
ResolveOptions, // options for resolveLoadout / discoverLayers
UsageSummary, // returned by summarizeUsage()
DeadEntry, // returned by findDeadEntries()
KeywordOverlap, // returned by findKeywordOverlaps()
BudgetBreakdown, // returned by analyzeBudget()
DiscoveredLayer, // a layer found and loaded by the resolver
SearchedLayer, // a layer search location and its result
EntryDefinition, // one layer's version of a specific entry
} from "@mcptoolshop/ai-loadout";- @mcptoolshop/claude-rules — Ottimizzatore per CLAUDE.md per Claude Code. Utilizza ai-loadout per la tabella di dispatch e la corrispondenza.
- @mcptoolshop/claude-memories — Ottimizzatore per MEMORY.md per Claude Code. Genera tabelle di dispatch dai file degli argomenti di memoria.
I moduli principali di corrispondenza, unione e validazione sono funzioni pure senza effetti collaterali. Il modulo di utilizzo (recordUsage / readUsage) esegue operazioni di I/O sul filesystem locale verso un log JSONL di sola scrittura. Il resolver legge i file di indice da percorsi di livello standard. Nessuna richiesta di rete, nessuna telemetria, nessuna dipendenza native.
| Minaccia | Mitigazione |
|---|---|
| Input del frontmatter malformato | parseFrontmatter() restituisce null in caso di input non valido — nessuna eccezione, nessuna valutazione di codice. |
| Iniezione di prototipi | L'analizzatore personalizzato utilizza letterali di oggetti semplici, senza unione ricorsiva di input non attendibili. |
| Indice con dati errati | validateIndex() rileva i problemi strutturali prima che si propaghino. |
| Attacco DoS tramite espressioni regolari | Nessuna espressione regolare fornita dall'utente — i pattern vengono confrontati come ricerche di stringhe semplici. |
Consultare SECURITY.md per la politica di sicurezza completa.
Creato da MCP Tool Shop
