ollama-intern-mcp 2.7.2 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +190 -151
- package/README.fr.md +194 -155
- package/README.hi.md +192 -153
- package/README.it.md +192 -153
- package/README.ja.md +200 -161
- package/README.md +51 -12
- package/README.pt-BR.md +185 -146
- package/README.zh.md +190 -151
- package/SECURITY.md +12 -4
- package/dist/corpus/atomicWrite.d.ts.map +1 -1
- package/dist/corpus/atomicWrite.js +8 -1
- package/dist/corpus/atomicWrite.js.map +1 -1
- package/dist/corpus/indexer.d.ts +24 -0
- package/dist/corpus/indexer.d.ts.map +1 -1
- package/dist/corpus/indexer.js +77 -11
- package/dist/corpus/indexer.js.map +1 -1
- package/dist/corpus/lock.d.ts +14 -0
- package/dist/corpus/lock.d.ts.map +1 -1
- package/dist/corpus/lock.js +14 -0
- package/dist/corpus/lock.js.map +1 -1
- package/dist/corpus/manifest.d.ts +12 -0
- package/dist/corpus/manifest.d.ts.map +1 -1
- package/dist/corpus/manifest.js +29 -5
- package/dist/corpus/manifest.js.map +1 -1
- package/dist/corpus/refresh.d.ts.map +1 -1
- package/dist/corpus/refresh.js +20 -11
- package/dist/corpus/refresh.js.map +1 -1
- package/dist/corpus/searcher.d.ts.map +1 -1
- package/dist/corpus/searcher.js +4 -1
- package/dist/corpus/searcher.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/guardrails/embedTimeout.d.ts +38 -0
- package/dist/guardrails/embedTimeout.d.ts.map +1 -0
- package/dist/guardrails/embedTimeout.js +61 -0
- package/dist/guardrails/embedTimeout.js.map +1 -0
- package/dist/index.d.ts +21 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +177 -75
- package/dist/index.js.map +1 -1
- package/dist/observability.d.ts +7 -0
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js.map +1 -1
- package/dist/ollama.d.ts +8 -0
- package/dist/ollama.d.ts.map +1 -1
- package/dist/ollama.js +27 -1
- package/dist/ollama.js.map +1 -1
- package/dist/profiles.d.ts +42 -4
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +71 -26
- package/dist/profiles.js.map +1 -1
- package/dist/protectedPaths.d.ts +5 -4
- package/dist/protectedPaths.d.ts.map +1 -1
- package/dist/protectedPaths.js +24 -9
- package/dist/protectedPaths.js.map +1 -1
- package/dist/routing.d.ts +83 -3
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +167 -8
- package/dist/routing.js.map +1 -1
- package/dist/semaphore.d.ts +1 -1
- package/dist/semaphore.d.ts.map +1 -1
- package/dist/semaphore.js +39 -4
- package/dist/semaphore.js.map +1 -1
- package/dist/sources.d.ts +17 -3
- package/dist/sources.d.ts.map +1 -1
- package/dist/sources.js +22 -3
- package/dist/sources.js.map +1 -1
- package/dist/tools/_helpers.d.ts +18 -0
- package/dist/tools/_helpers.d.ts.map +1 -1
- package/dist/tools/_helpers.js +24 -1
- package/dist/tools/_helpers.js.map +1 -1
- package/dist/tools/artifactPrune.d.ts +9 -0
- package/dist/tools/artifactPrune.d.ts.map +1 -1
- package/dist/tools/artifactPrune.js +31 -4
- package/dist/tools/artifactPrune.js.map +1 -1
- package/dist/tools/batch.d.ts.map +1 -1
- package/dist/tools/batch.js +52 -24
- package/dist/tools/batch.js.map +1 -1
- package/dist/tools/batchProofCheck.d.ts +1 -0
- package/dist/tools/batchProofCheck.d.ts.map +1 -1
- package/dist/tools/batchProofCheck.js +92 -2
- package/dist/tools/batchProofCheck.js.map +1 -1
- package/dist/tools/briefs/common.d.ts +29 -1
- package/dist/tools/briefs/common.d.ts.map +1 -1
- package/dist/tools/briefs/common.js +55 -1
- package/dist/tools/briefs/common.js.map +1 -1
- package/dist/tools/changeBrief.js +2 -2
- package/dist/tools/changeBrief.js.map +1 -1
- package/dist/tools/chat.d.ts +4 -0
- package/dist/tools/chat.d.ts.map +1 -1
- package/dist/tools/chat.js +88 -20
- package/dist/tools/chat.js.map +1 -1
- package/dist/tools/classify.d.ts.map +1 -1
- package/dist/tools/classify.js +32 -5
- package/dist/tools/classify.js.map +1 -1
- package/dist/tools/codeCitation.js +2 -2
- package/dist/tools/codeCitation.js.map +1 -1
- package/dist/tools/codeReview.js +2 -2
- package/dist/tools/codeReview.js.map +1 -1
- package/dist/tools/corpusAmend.d.ts.map +1 -1
- package/dist/tools/corpusAmend.js +22 -4
- package/dist/tools/corpusAmend.js.map +1 -1
- package/dist/tools/corpusAnswer.d.ts.map +1 -1
- package/dist/tools/corpusAnswer.js +2 -1
- package/dist/tools/corpusAnswer.js.map +1 -1
- package/dist/tools/corpusIndex.d.ts.map +1 -1
- package/dist/tools/corpusIndex.js +11 -0
- package/dist/tools/corpusIndex.js.map +1 -1
- package/dist/tools/corpusSearch.d.ts.map +1 -1
- package/dist/tools/corpusSearch.js +40 -20
- package/dist/tools/corpusSearch.js.map +1 -1
- package/dist/tools/doctor.d.ts +6 -0
- package/dist/tools/doctor.d.ts.map +1 -1
- package/dist/tools/doctor.js +11 -1
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/embed.d.ts.map +1 -1
- package/dist/tools/embed.js +5 -1
- package/dist/tools/embed.js.map +1 -1
- package/dist/tools/embedSearch.d.ts.map +1 -1
- package/dist/tools/embedSearch.js +5 -1
- package/dist/tools/embedSearch.js.map +1 -1
- package/dist/tools/extract.d.ts.map +1 -1
- package/dist/tools/extract.js +2 -1
- package/dist/tools/extract.js.map +1 -1
- package/dist/tools/hypothesisDrill.js +2 -2
- package/dist/tools/hypothesisDrill.js.map +1 -1
- package/dist/tools/incidentBrief.js +2 -2
- package/dist/tools/incidentBrief.js.map +1 -1
- package/dist/tools/logStats.d.ts +88 -0
- package/dist/tools/logStats.d.ts.map +1 -0
- package/dist/tools/logStats.js +227 -0
- package/dist/tools/logStats.js.map +1 -0
- package/dist/tools/multiFileRefactorPropose.js +2 -2
- package/dist/tools/multiFileRefactorPropose.js.map +1 -1
- package/dist/tools/packs/artifactWrite.d.ts +21 -0
- package/dist/tools/packs/artifactWrite.d.ts.map +1 -0
- package/dist/tools/packs/artifactWrite.js +109 -0
- package/dist/tools/packs/artifactWrite.js.map +1 -0
- package/dist/tools/packs/changePack.d.ts.map +1 -1
- package/dist/tools/packs/changePack.js +9 -7
- package/dist/tools/packs/changePack.js.map +1 -1
- package/dist/tools/packs/incidentPack.d.ts.map +1 -1
- package/dist/tools/packs/incidentPack.js +9 -7
- package/dist/tools/packs/incidentPack.js.map +1 -1
- package/dist/tools/packs/repoPack.d.ts.map +1 -1
- package/dist/tools/packs/repoPack.js +9 -7
- package/dist/tools/packs/repoPack.js.map +1 -1
- package/dist/tools/refactorPlan.js +2 -2
- package/dist/tools/refactorPlan.js.map +1 -1
- package/dist/tools/repoBrief.js +2 -2
- package/dist/tools/repoBrief.js.map +1 -1
- package/dist/tools/research.d.ts.map +1 -1
- package/dist/tools/research.js +6 -1
- package/dist/tools/research.js.map +1 -1
- package/dist/tools/runner.d.ts +13 -0
- package/dist/tools/runner.d.ts.map +1 -1
- package/dist/tools/runner.js +59 -21
- package/dist/tools/runner.js.map +1 -1
- package/dist/tools/summarizeDeep.d.ts.map +1 -1
- package/dist/tools/summarizeDeep.js +6 -4
- package/dist/tools/summarizeDeep.js.map +1 -1
- package/dist/tools/summarizeFast.d.ts.map +1 -1
- package/dist/tools/summarizeFast.js +5 -3
- package/dist/tools/summarizeFast.js.map +1 -1
- package/dist/tools/triageLogs.d.ts.map +1 -1
- package/dist/tools/triageLogs.js +2 -1
- package/dist/tools/triageLogs.js.map +1 -1
- package/dist/tools/verifyClaims.d.ts +190 -0
- package/dist/tools/verifyClaims.d.ts.map +1 -0
- package/dist/tools/verifyClaims.js +435 -0
- package/dist/tools/verifyClaims.js.map +1 -0
- package/package.json +7 -1
package/README.fr.md
CHANGED
|
@@ -13,55 +13,78 @@
|
|
|
13
13
|
<a href="https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/"><img alt="Handbook" src="https://img.shields.io/badge/handbook-docs-10b981"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
> **Le stagiaire local pour Claude Code.** <!-- TOOL_COUNT:start -->42<!-- TOOL_COUNT:end --> outils adaptés
|
|
16
|
+
> **Le stagiaire local pour Claude Code.** <!-- TOOL_COUNT:start -->42<!-- TOOL_COUNT:end --> outils adaptés à la tâche, instructions basées sur les preuves, artefacts durables.
|
|
17
17
|
|
|
18
|
-
Un serveur MCP qui donne à Claude Code un **stagiaire local** avec des règles, des niveaux, un bureau et
|
|
18
|
+
Un serveur MCP qui donne à Claude Code un **stagiaire local** avec des règles, des niveaux, un bureau et une armoire de rangement. Claude choisit l'_outil_; l’outil choisit le _niveau_ (Instantané / Polyvalent / Approfondi / Intégré); le niveau crée un fichier que vous pouvez ouvrir la semaine prochaine.
|
|
19
19
|
|
|
20
|
-
**
|
|
20
|
+
**Il prend également en charge [Hermes Agent](https://github.com/NousResearch/hermes-agent) sur `hermes3:8b`** — validé de bout en bout le 2026-04-19. L’échelle par défaut est `hermes3:8b`; `qwen3:*` est la voie alternative. Voir [Utilisation avec Hermes](#use-with-hermes) ci-dessous.
|
|
21
21
|
|
|
22
|
-
**Configuration matérielle requise
|
|
22
|
+
**Configuration matérielle requise :** environ 6 Go de VRAM pour `hermes3:8b`, ou environ 16 Go de RAM pour l’inférence CPU. Voir [handbook/getting-started](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/getting-started/#hardware-minimums) pour une description complète.
|
|
23
23
|
|
|
24
|
-
**Vous n
|
|
24
|
+
**Vous n’utilisez pas Claude ?** Le répertoire [`examples/`](./examples/) contient un client MCP minimal en Node.js et Python que vous pouvez lancer via stdio. Voir également [handbook/with-hermes](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/with-hermes/).
|
|
25
25
|
|
|
26
|
-
**
|
|
26
|
+
**Priorité au local** — aucune donnée ne quitte le réseau tant que vous n’acceptez pas explicitement. Pas de télémétrie. Rien d’« autonome ». Chaque appel montre son fonctionnement. Le routage optionnel vers [Ollama Cloud](#ollama-cloud-optional) permet d’utiliser des modèles de classe 600B avec les mêmes outils lorsque le matériel local est la principale limitation, avec un retour automatique au mode local.
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Nouveautés dans la version 2.9.0
|
|
31
31
|
|
|
32
|
-
**
|
|
32
|
+
**La fonctionnalité du « cloud » est désormais disponible : une vérification inter-familles, une mise à l’échelle du cloud à la demande et les avantages économiques que cela représente.** Le mode local reste inchangé : sans clé définie, le comportement est identique à celui de la version 2.8.0 (zéro transfert de données vers l’extérieur, pas de sondage initial du cloud).
|
|
33
33
|
|
|
34
|
-
-
|
|
35
|
-
- **
|
|
36
|
-
- **`
|
|
37
|
-
-
|
|
34
|
+
- **`ollama_verify_claims` : vérification inter-familles.** `ollama_code_review` *génère* les résultats ; cet outil *évalue* ces résultats. Il exécute un ensemble de modèles Ollama Cloud (deepseek / kimi / glm par défaut) sur vos affirmations et preuves, puis renvoie pour chaque affirmation CONFIRMÉ / RÉFUTÉ / NÉCESSITE_UNE_RÉVISION. L’agrégation est basée sur le principe selon lequel une seule opinion dissidente ne décide pas (≥ 2 pour réfuter, ≥ 2 pour confirmer), chaque évaluateur utilise un modèle vérifié (un modèle de secours local ou substitué est exclu et n’est jamais pris en compte), et les entrées des affirmations sont structurées de manière à supprimer tout raisonnement. Le seuil d’honnêteté est documenté : une affirmation CONFIRMÉE est une preuve à l’appui, pas une preuve irréfutable (fiable pour signaler les erreurs flagrantes, mais moins efficace pour détecter les subtilités d’un modèle de pointe).
|
|
35
|
+
- **Mise à l’échelle du cloud par appel + mode veille.** Définissez `OLLAMA_API_KEY` *seul* (sans `OLLAMA_CLOUD_PRIMARY`), et vous êtes en **mode veille** : priorité locale, zéro transfert de données vers l’extérieur, pas de sondage initial, jusqu’à ce qu’un seul appel opte pour le mode cloud avec `backend:'cloud'`. Mettez à l’échelle une seule évaluation importante vers un modèle de 600 milliards de paramètres sans forcer tous les appels à utiliser le cloud. La première mise à l’échelle révèle clairement le transfert de données au moment où il se produit ; un remplacement du `model` par appel est désormais appliqué directement à la tentative d’utilisation du cloud.
|
|
36
|
+
- **`ollama_log_stats` : les avantages économiques mesurés promis dans le slogan.** Un résumé sans LLM de vos enregistrements NDJSON : répartition entre le cloud et le local, taux de repli vers le local depuis le cloud, nombre de jetons par outil, p50/p95 de latence, limité par une fenêtre `since`.
|
|
37
|
+
- **Outil de diagnostic pour CI + outils lisibles par machine.** `doctor --json --fail-unhealthy` fournit aux pipelines une véritable porte d’entrée (avec un indicateur `healthy` prenant en compte le cloud), et chaque outil inclut désormais les annotations MCP `readOnlyHint`/`destructiveHint`/`title`, afin que les clients obtiennent des autorisations correctes dans l’interface utilisateur. De plus, `init --claude` crée une structure de base pour un fichier `.mcp.json` prêt à être utilisé.
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
Détails complets dans [CHANGELOG.md](./CHANGELOG.md).
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
## Nouveau dans la version 2.8.0
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
- **Pourquoi cela existe.** Le wrapper R-018 de research-os (v0.12.1) a enveloppé le `callTool` du MCP avec `Promise.race` et a constaté que le budget du wrapper n'atteignait pas le niveau interne — `DEV_RTX5080_TIMEOUTS.instant = 15_000` continuait à déclencher `TIER_TIMEOUT` à 15000 ms indépendamment d'un budget wrapper de 180000 ms. v2.6.0 fournit le budget faisant autorité côté MCP afin que le drapeau `--planner-timeout-ms` de l'opérateur (research-os) contrôle enfin les timeouts des niveaux internes comme prévu.
|
|
45
|
-
- **Comportement par défaut préservé.** Champ omis = les défauts du profil s'appliquent à l'octet près. Les appelants antérieurs à v2.6.0 ne constatent aucun changement.
|
|
46
|
-
- **Regex de cause de repli R-010 préservée.** Le message d'erreur `TIER_TIMEOUT` côté serveur correspond toujours à `/elapsed=(\d+)ms/` + `/budget=(\d+)ms/` afin que la visibilité en aval pour le conseiller IA fonctionne tant sur le chemin de surcharge que sur le chemin par défaut.
|
|
47
|
-
- Consommé par research-os v0.13.0 (câblage client cumulatif R-019 + R-020 + R-021) dans une version coordonnée multi-dépôts.
|
|
43
|
+
**Amélioration de la fiabilité, de la durabilité et de la sécurité — 25 corrections, chacune étant testée en premier et vérifiée sur l’ensemble des familles.** Le comportement axé sur le local reste inchangé et aucun contrat d’outil n’a été supprimé ; les appelants existants continuent de fonctionner. Les avantages sont clairs :
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
- **Plus de perte silencieuse de données du corpus.** Une erreur de lecture transitoire pendant `ollama_corpus_refresh` (un verrouillage de fichier Windows, un antivirus qui bloque l’accès, une fenêtre d’enregistrement d’un éditeur) classait auparavant le fichier comme « manquant » et **supprimait définitivement son contenu indexé**. Désormais, seul un fichier réellement absent est supprimé ; une erreur transitoire conserve le chemin, signale qu’il faut réessayer et préserve ses fragments.
|
|
46
|
+
- **Concurrence qui respecte ses limites.** Un délai d’attente de niveau peut maintenant annuler un appel qui est toujours en attente d’un permis (auparavant, il restait bloqué bien au-delà du temps imparti alors que les reçus indiquaient le contraire), et `ollama_chat` achemine enfin les requêtes à travers la limite de délai/niveau — ainsi, une génération locale qui se bloque ne peut pas paralyser tous les outils, et elle parvient réellement au cloud en mode principal.
|
|
47
|
+
- **Cloud qui se dégrade plutôt que de s’arrêter.** Un ID de modèle cloud retiré revient maintenant au mode local avec une raison claire `cloud_model_missing` et un indice spécifique au cloud au lieu d’une panne totale ; le disjoncteur ne peut pas bloquer définitivement l’accès ; un modèle manquant en permanence cesse de solliciter des requêtes vers le cloud à chaque appel.
|
|
48
|
+
- **Surface de sécurité qui correspond à sa documentation.** `ollama_batch_proof_check` applique désormais réellement la restriction au répertoire courant (avec une nouvelle limite d’environnement opérateur `INTERN_BATCH_PROOF_ALLOWED_ROOTS` qu’un appelant ne peut pas étendre), les filtres de désinfection contre l’injection de requêtes ont gagné en couverture + un plafond honnêtement divulgué, et la protection du chemin est insensible à la casse sur macOS.
|
|
49
|
+
- **Artefacts et reçus honnêtes.** Les écritures de paquets sont atomiques et ne se corrompent jamais silencieusement ; les enveloppes dégradées indiquent le niveau réellement utilisé ; le détecteur d’écriture interrompue détecte les écritures incomplètes lors de toute modification ; les ID de fragments ne coïncident plus pour les fichiers ayant un contenu identique. L’audit des dépendances est entièrement clair (0 vulnérabilités).
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
Détails complets dans [CHANGELOG.md](./CHANGELOG.md).
|
|
52
52
|
|
|
53
|
-
##
|
|
53
|
+
## Nouveau dans la version 2.7.0
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
**Routage optionnel vers Ollama Cloud — mode principal en cloud, retour au local en cas d’échec.** Activez-le avec une clé + un indicateur et les niveaux génératifs acheminent les requêtes vers un modèle cloud de classe 600B ; les intégrations restent locales ; un disjoncteur revient à votre profil local en cas de panne du cloud. **Désactivé par défaut — aucune donnée ne quitte le réseau tant que vous n’avez pas défini `OLLAMA_API_KEY` et `OLLAMA_CLOUD_PRIMARY=1`.** Amélioration mineure : les appelants antérieurs à la version 2.7.0 (et ceux qui n’activent pas cette fonctionnalité) conservent le même comportement. Voir [Ollama Cloud (optionnel)](#ollama-cloud-optional).
|
|
56
56
|
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
59
|
-
-
|
|
60
|
-
-
|
|
57
|
+
- **Priorité au cloud avec filet de sécurité.** Un `RoutingOllamaClient` tente d’abord d’utiliser le cloud et revient au profil local en cas de dépassement du délai / erreur 5xx / 429 / problème réseau. Les clés incorrectes (401/403) sont clairement signalées via un disjoncteur, plutôt que de provoquer une dégradation silencieuse et permanente ; l’ID d’un modèle cloud obsolète ou mal orthographié (404) est également signalé.
|
|
58
|
+
- **Pas de rétrogradation silencieuse.** Chaque enveloppe contient `backend` (`cloud`|`local`), `degraded` et `degrade_reason`, afin que vous sachiez toujours quand le modèle local a été utilisé au lieu du modèle principal. Un événement NDJSON `backend_fallback` rend visible le taux de repli vers le local depuis le cloud dans `ollama_log_tail`.
|
|
59
|
+
- **`ollama_doctor` signale l’authentification et la connectivité au cloud** dans une section distincte ; `ollama-intern-mcp doctor` affiche une section « Cloud (principal) ».
|
|
60
|
+
- Le modèle cloud par défaut était `minimax-m3:cloud` lors de la sortie de la version 2.7.0 *(depuis, il a été modifié pour utiliser `qwen3-coder-next:cloud` — un modèle qui renvoyait des réponses vides sur les outils avec un nombre maximal de prédictions limité ; voir le [tableau des variables d’environnement](#cloud-env-vars)) *; remplacez-le par niveau avec `INTERN_CLOUD_MODEL` / `INTERN_CLOUD_DEEP_MODEL`.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
## Nouveau dans la version 2.6.0
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
Remplacement du budget de niveau par appel sur `ollama_extract`. Amélioration mineure — les appelants antérieurs à la version 2.6.0 restent inchangés. Description détaillée dans [CHANGELOG.md](./CHANGELOG.md).
|
|
65
|
+
|
|
66
|
+
- Le champ de schéma **`tier_budget_ms_override?: number`** dans `ollama_extract` (facultatif, limité à l’intervalle `[1, 600000]` ms). Lorsqu’il est présent, il applique la valeur spécifiée à chaque niveau visité par le processus, de sorte que le mécanisme interne `runWithTimeoutAndFallback` situé dans `src/guardrails/timeouts.ts:61` respecte le délai défini par l’utilisateur au lieu de celui du profil par défaut. La cascade (processus principal → activation immédiate en cas de dépassement du délai) se déclenche toujours ; la valeur spécifiée contrôle uniformément chaque étape de la cascade.
|
|
67
|
+
- **Pourquoi ce champ existe.** L’enveloppe R-018 de research-os (v0.12.1) a enveloppé MCP `callTool` avec `Promise.race` et a constaté que le délai défini par l’enveloppe n’était pas respecté au niveau interne — `DEV_RTX5080_TIMEOUTS.instant = 15_000` continuait de déclencher `TIER_TIMEOUT` après 15 000 ms, quel que soit le délai de 180 000 ms défini par l’enveloppe. La version v2.6.0 fournit le délai définitif côté MCP, de sorte que l’indicateur `--planner-timeout-ms` (research-os) défini par l’utilisateur contrôle enfin les délais au niveau interne, comme prévu.
|
|
68
|
+
- **Comportement par défaut conservé.** Si le champ est omis, ce sont les valeurs par défaut du profil qui s’appliquent, octet pour octet. Les versions antérieures à la v2.6.0 ne présentent aucun changement.
|
|
69
|
+
- **Expression régulière `fallback-cause` de R-010 conservée.** Le message d’erreur `TIER_TIMEOUT` côté serveur correspond toujours à `/elapsed=(\d+)ms/` + `/budget=(\d+)ms/`, ce qui permet au système d’assistance IA d’analyser les données, que ce soit avec la valeur spécifiée ou avec les valeurs par défaut.
|
|
70
|
+
- Utilisé dans research-os v0.13.0 (mise à jour cumulative des clients R-019 + R-020 + R-021) dans le cadre d’une publication coordonnée pour plusieurs référentiels.
|
|
71
|
+
|
|
72
|
+
### Éléments à livrer – version historique 2.4.0
|
|
73
|
+
|
|
74
|
+
Consultez les fichiers [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md) pour obtenir la liste complète des modifications apportées dans la version 2.4.0 (contrôle du paramètre `num_ctx` par niveau sur le système de profils).
|
|
75
|
+
|
|
76
|
+
## Nouveautés dans la version 2.4.0
|
|
77
|
+
|
|
78
|
+
Contrôle de `num_ctx` (fenêtre contextuelle) par niveau dans le système de profil. Modification mineure additive – les fonctions appelantes restent inchangées en v2.3.0. Informations détaillées disponibles dans [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md).
|
|
79
|
+
|
|
80
|
+
- **Paramètre `TierConfig.num_ctx` (nouveau)** : paramètre optionnel `{ instant?, workhorse?, deep?, embed? }` dans le profil. Lorsqu’il est défini pour une couche, le serveur MCP ajoute `options.num_ctx = <valeur>` à chaque requête de génération/chat Ollama acheminée vers cette couche (initiale + de secours). Lorsqu’il n’est pas défini, la requête omet complètement `num_ctx`, ce qui fait qu’Ollama utilise sa valeur par défaut chargée avec le modèle – comportement préservé exactement comme dans la version v2.3.0.
|
|
81
|
+
- **Nouveau champ d’enveloppe `num_ctx_used?: number`** : présent uniquement lorsque le serveur MCP a effectivement envoyé `num_ctx`. Absent lorsque la requête laisse Ollama choisir. Ne pas déduire de valeur par défaut – le serveur MCP n’interroge pas Ollama pour connaître la valeur effective.
|
|
82
|
+
- **Valeurs par défaut du profil** : `dev-rtx5080` / `dev-rtx5080-qwen3` sont configurés avec `instant: 4096`, `workhorse: 8192`, `deep`/`embed` non définis. Les valeurs sont ajustées pour que `hermes3:8b` reste en mémoire dans les 16 Go de VRAM du RTX 5080, afin d’optimiser la vitesse des outils. `m5-max` laisse chaque couche sans valeur définie – les 128 Go de mémoire unifiée ne présentent aucun problème de débordement.
|
|
83
|
+
- **Clôture de la phase 1 du diagnostic v0.8.0** : avec `hermes3:8b` et le contexte par défaut de 32 Ko sur RTX 5080, des données ont été déversées vers le CPU, ce qui a entraîné des délais d’exécution pour les appels à la fonction `ollama_extract`. La version v2.4.0 empêche cela au niveau du profil.
|
|
84
|
+
|
|
85
|
+
### Contrôle de `num_ctx` par niveau (nouveau dans la version 2.4.0)
|
|
86
|
+
|
|
87
|
+
Profil (extrait du fichier `src/profiles.ts`) :
|
|
65
88
|
|
|
66
89
|
```ts
|
|
67
90
|
"dev-rtx5080": {
|
|
@@ -81,7 +104,7 @@ Profil (extrait de `src/profiles.ts`) :
|
|
|
81
104
|
}
|
|
82
105
|
```
|
|
83
106
|
|
|
84
|
-
Enveloppe
|
|
107
|
+
Enveloppe pour une fonction de base (par exemple, « ollama_extract ») :
|
|
85
108
|
|
|
86
109
|
```jsonc
|
|
87
110
|
{
|
|
@@ -93,23 +116,23 @@ Enveloppe sur un appel de niveau workhorse (par ex. `ollama_extract`) :
|
|
|
93
116
|
}
|
|
94
117
|
```
|
|
95
118
|
|
|
96
|
-
|
|
119
|
+
Dans le cas de « m5-max » (ou de tout autre profil où un niveau n’est pas défini), la valeur « num_ctx_used » est absente de l’enveloppe et la requête envoyée à Ollama ne contient pas le champ « num_ctx ». Dans ce cas, Ollama utilise sa valeur par défaut, qui correspond aux paramètres du modèle chargé.
|
|
97
120
|
|
|
98
|
-
Les opérateurs
|
|
121
|
+
Les opérateurs peuvent ajuster les paramètres en sélectionnant ou en modifiant le profil ; il n’y a pas de paramètre « num_ctx » spécifique à chaque appel dans les schémas d’outils. Si, lors d’un appel ultérieur, un tel paramètre s’avère nécessaire, la méthode utilisée sera celle de la version 2.3.0, qui consiste à remplacer le modèle par défaut.
|
|
99
122
|
|
|
100
|
-
###
|
|
123
|
+
### Éléments à livrer – version historique 2.3.0
|
|
101
124
|
|
|
102
|
-
|
|
125
|
+
Consultez les fichiers [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) pour obtenir la description complète de la version v2.3.0 (avec notamment la possibilité de remplacer le modèle par appel).
|
|
103
126
|
|
|
104
|
-
##
|
|
127
|
+
## Nouveautés dans la version 2.3.0
|
|
105
128
|
|
|
106
|
-
|
|
129
|
+
Possibilité de remplacer le modèle par appel pour tous les outils atomiques basés sur un LLM. Modification mineure additive : les appels de la version v2.2.0 restent inchangés. Vous trouverez des informations détaillées dans les fichiers [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
|
|
107
130
|
|
|
108
|
-
- **
|
|
109
|
-
- **Nouveau champ d
|
|
110
|
-
- **Correction
|
|
131
|
+
- **Paramètre d’entrée optionnel `model: string` pour les 8 outils atomiques** — `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. La première tentative pour chaque outil utilise le modèle spécifié par l’appelant ; en cas de dépassement du temps imparti, la séquence existante `TIER_FALLBACK` résout le problème en utilisant le modèle du niveau inférieur (et non le modèle spécifié par l’appelant). Les outils composites/brefs/regroupés n’acceptent délibérément pas le paramètre `model` ; les outils atomiques ont un contrôle spécifique pour chaque appel, tandis que les outils composites utilisent les valeurs par défaut du niveau.
|
|
132
|
+
- **Nouveau champ d’enveloppe `model_requested?: string`** — présent uniquement lorsque l’appelant a fourni une valeur de remplacement. Les appelants qui tiennent compte de la calibration comparent `model_requested` à `model` pour détecter un remplacement en cas de repli : `if (env.model_requested && env.model !== env.model_requested) { /* remplacement */ }`. Les entrées vides ou ne contenant que des espaces génèrent une erreur `ZodError` lors de l’analyse du schéma, et non un simple passage au niveau inférieur sans avertissement.
|
|
133
|
+
- **Correction d’un bug — dérive dans le fichier `src/version.ts`.** La constante `VERSION` utilisée pendant l’exécution est désormais lue à partir du fichier `package.json` lors du chargement du module ; les versions v2.1.0 et v2.2.0 affichaient incorrectement la chaîne d’identification obsolète `"2.0.0"`. Le nouveau fichier `tests/version.test.ts` vérifie que `VERSION === pkg.version`.
|
|
111
134
|
|
|
112
|
-
###
|
|
135
|
+
### Possibilité de remplacer le modèle par défaut pour chaque appel (nouveau dans la version 2.3.0)
|
|
113
136
|
|
|
114
137
|
```jsonc
|
|
115
138
|
{
|
|
@@ -123,7 +146,7 @@ Surcharge de modèle par appel pour les outils atomiques soutenus par LLM. Mineu
|
|
|
123
146
|
}
|
|
124
147
|
```
|
|
125
148
|
|
|
126
|
-
Enveloppe
|
|
149
|
+
Enveloppe :
|
|
127
150
|
|
|
128
151
|
```jsonc
|
|
129
152
|
{
|
|
@@ -135,34 +158,34 @@ Enveloppe :
|
|
|
135
158
|
}
|
|
136
159
|
```
|
|
137
160
|
|
|
138
|
-
Si le
|
|
161
|
+
Si le serveur principal/de niveau inférieur a atteint sa limite de temps et que la requête a été redirigée vers le serveur instantané, `env.model` correspondrait au modèle résolu du serveur instantané et `env.fallback_from` vaudrait `"workhorse"`. Cependant, `env.model_requested` resterait `"hermes3:8b"` et `env.model !== env.model_requested` signalerait le remplacement. Le remplacement n’est pas intentionnellement appliqué au serveur moins coûteux ; le modèle choisi pourrait ne pas convenir du tout aux fonctions de ce serveur.
|
|
139
162
|
|
|
140
|
-
###
|
|
163
|
+
### Éléments à fournir – version historique 2.2.0
|
|
141
164
|
|
|
142
|
-
Consultez [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) pour
|
|
165
|
+
Consultez [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) pour obtenir la description complète de la version v2.2.0 (pertinence liée au contexte + abstention structurée).
|
|
143
166
|
|
|
144
|
-
##
|
|
167
|
+
## Nouveautés dans la version v2.2.0
|
|
145
168
|
|
|
146
|
-
Contrat de rôle
|
|
169
|
+
Contrat de rôle local pour l’analyse des preuves : pertinence liée au contexte et abstention structurée. Amélioration mineure additive — les appelants de la version v2.1.0 restent inchangés. Descriptions détaillées dans [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md).
|
|
147
170
|
|
|
148
|
-
- **Extraction liée au
|
|
149
|
-
- **Abstention structurée**
|
|
150
|
-
- **Seuil de
|
|
151
|
-
- **Préservation du score de récupération** à
|
|
152
|
-
- **Limites de plage
|
|
153
|
-
- **
|
|
171
|
+
- **Extraction liée au contexte** pour `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep` — entrée optionnelle `frame: string` + sorties structurées `frame_alignment` / `on_topic` / `frame_addressed`. Les sources hors sujet sont signalées au lieu d’être reformulées pour correspondre au schéma.
|
|
172
|
+
- **Abstention structurée** pour `ollama_research` — champs `weak` / `abstained` / `sources_address_question`. Un tableau `citations[]` vide avec un champ `answer` non vide n’est plus considéré comme une réussite silencieuse.
|
|
173
|
+
- **Seuil de pertinence** pour `ollama_corpus_answer` — entrée optionnelle `min_top_score`. En dessous du seuil, l’outil s’arrête et renvoie `abstained: true`, puis ignore la synthèse. Le score par citation est désormais visible dans chaque citation.
|
|
174
|
+
- **Préservation du score de récupération** grâce à des preuves succinctes — `corpusHitsToEvidence` conserve le `score` (et le paramètre `corpus_min_evidence_score` filtre lors de l’assemblage sur `incident_brief` / `repo_brief` / `change_brief`).
|
|
175
|
+
- **Limites de plage pour les lignes de citation** — `guardrails/citations.ts` rejette les plages hors limites dans `ollama_research`, ce qui correspond au comportement existant dans `ollama_code_citation`.
|
|
176
|
+
- **Correction des documents du contrat opérateur** — correction de `chunk_id`/`chunk_index` dans le fichier README, reformulation de la phrase « validé côté serveur », qualification de la section sur les lois relatives aux preuves et annotation du slogan marketing.
|
|
154
177
|
|
|
155
|
-
### Régression
|
|
178
|
+
### Régression des tests — vérification
|
|
156
179
|
|
|
157
|
-
Le contrat de la tranche est vérifié par rapport à l
|
|
180
|
+
Le contrat de la tranche est vérifié par rapport à l’échec littéral du pack « fresh-pack » de research-os : arxiv 2112.10422 (Cosmological Standard Timers) dans la section 01, intitulé « Que signifie la gestion des preuves dans les flux de travail d’analyse approfondie en local ou dans le cloud avec un LLM ? » — 9 tests contractuels sur 9 pour le LLM simulé confirment que la source hors sujet est désormais contenue (`frame_alignment.on_topic = false` lors de l’extraction ; `off_topic: true` lors de la classification ; `frame_addressed: false` lors de la synthèse approfondie ; `abstained: true` pour `corpus_answer` avec `min_top_score` défini).
|
|
158
181
|
|
|
159
|
-
###
|
|
182
|
+
### Éléments livrables historiques — version v2.1.0
|
|
160
183
|
|
|
161
|
-
|
|
184
|
+
Consultez [CHANGELOG.md](./CHANGELOG.md) pour obtenir la description complète de la version v2.1.0 (validation des fonctionnalités : 13 nouveaux outils + 4 améliorations + suppression du gel).
|
|
162
185
|
|
|
163
186
|
---
|
|
164
187
|
|
|
165
|
-
##
|
|
188
|
+
## Architecture en bref
|
|
166
189
|
|
|
167
190
|
```mermaid
|
|
168
191
|
flowchart LR
|
|
@@ -184,7 +207,7 @@ flowchart LR
|
|
|
184
207
|
MCP --> NDJSON
|
|
185
208
|
```
|
|
186
209
|
|
|
187
|
-
Chaque appel d
|
|
210
|
+
Chaque appel d’outil Claude est transmis au serveur MCP via stdio JSON-RPC. Le serveur valide l’appel par rapport au schéma [zod](https://zod.dev) de l’outil, exécute les contrôles configurés (validation des citations, suppression des phrases interdites, application des chemins protégés, seuils de confiance), puis redirige vers un moteur déterministe (niveau artefact) ou un appel HTTP Ollama (pour tous les autres niveaux). Le démon Ollama ne voit jamais les chemins fournis par l’utilisateur — seul le niveau du modèle et l’invite préparée. Chaque appel ajoute un événement structuré au journal NDJSON situé à `~/.ollama-intern/log.ndjson`, où `ollama_log_tail` et votre shell peuvent le lire.
|
|
188
211
|
|
|
189
212
|
---
|
|
190
213
|
|
|
@@ -202,7 +225,7 @@ Chaque appel d'outil Claude entre dans le serveur MCP via stdio JSON-RPC. Le ser
|
|
|
202
225
|
}
|
|
203
226
|
```
|
|
204
227
|
|
|
205
|
-
Renvoie une enveloppe pointant vers un fichier sur disque
|
|
228
|
+
Renvoie une enveloppe pointant vers un fichier sur le disque :
|
|
206
229
|
|
|
207
230
|
```jsonc
|
|
208
231
|
{
|
|
@@ -224,13 +247,13 @@ Renvoie une enveloppe pointant vers un fichier sur disque :
|
|
|
224
247
|
}
|
|
225
248
|
```
|
|
226
249
|
|
|
227
|
-
→ `weak: false` signifie qu
|
|
250
|
+
→ `weak: false` signifie qu’au moins 2 éléments de preuve ont été assemblés ; cela ne signifie PAS que les hypothèses sont validées. Consultez la section [Lois relatives aux preuves](#evidence-laws) ci-dessous.
|
|
228
251
|
|
|
229
|
-
Ce fichier
|
|
252
|
+
Ce fichier Markdown est le résultat du travail de l’analyste — titres, bloc de preuves avec des identifiants cités, `next_checks` pour l’enquête et une bannière `weak: true` si les preuves sont limitées. Il est déterministe : le moteur est un code, pas une invite. (Le moteur est déterministe ; le *contenu* des hypothèses et des surfaces est génératif — considérez-les comme des brouillons, pas comme des éléments validés.) Ouvrez-le demain, comparez-le la semaine prochaine, exportez-le dans un manuel avec `ollama_artifact_export_to_path`.
|
|
230
253
|
|
|
231
|
-
|
|
254
|
+
Tous les concurrents de cette catégorie mettent en avant « l’économie de jetons ». Nous mettons en avant « voici le fichier que l’analyste a écrit ».
|
|
232
255
|
|
|
233
|
-
### Deuxième exemple —
|
|
256
|
+
### Deuxième exemple — créez un corpus, puis interrogez-le
|
|
234
257
|
|
|
235
258
|
```jsonc
|
|
236
259
|
// 1. Build a persistent, searchable corpus over your project.
|
|
@@ -248,13 +271,13 @@ Chaque concurrent dans cette catégorie commence par « économisez des tokens.
|
|
|
248
271
|
// → { answer: "...", citations: [{chunk_index, path}...], weak: false }
|
|
249
272
|
```
|
|
250
273
|
|
|
251
|
-
Le serveur valide l
|
|
274
|
+
Le serveur valide l’identité de la citation et vérifie que chaque `chunk_index` se trouve dans la plage des résultats récupérés. Il ne prouve PAS que chaque affirmation générée est soutenue sémantiquement par le contenu du bloc cité — c’est la responsabilité du modèle, et une récupération médiocre peut toujours produire des réponses qui ressemblent à des citations. Explication complète dans [handbook/corpora](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/corpora/).
|
|
252
275
|
|
|
253
276
|
---
|
|
254
277
|
|
|
255
|
-
## Extraction liée au
|
|
278
|
+
## Extraction liée au contexte (nouveauté de la version v2.2.0)
|
|
256
279
|
|
|
257
|
-
`ollama_extract`, `ollama_classify`, `ollama_summarize_fast
|
|
280
|
+
`ollama_extract`, `ollama_classify`, `ollama_summarize_fast` et `ollama_summarize_deep` acceptent une entrée optionnelle `frame: string`. Le paramètre `frame` indique la question à laquelle on demande à la source de répondre ; le modèle est invité à s’abstenir plutôt qu’à produire un contenu vrai mais hors sujet lorsque la source n’aborde pas le contexte.
|
|
258
281
|
|
|
259
282
|
```jsonc
|
|
260
283
|
{
|
|
@@ -268,47 +291,47 @@ Le serveur valide l'identité de la citation et que chaque `chunk_index` est dan
|
|
|
268
291
|
// → result includes frame_alignment: { on_topic: boolean, reason: string, unaddressed_aspects: string[] }
|
|
269
292
|
```
|
|
270
293
|
|
|
271
|
-
Si `frame` est omis, le comportement
|
|
294
|
+
Si le paramètre `frame` est omis, le comportement reste inchangé par rapport à la version v2.1.0. Lorsqu’il est fourni, `frame_alignment.on_topic = false` indique que les champs extraits peuvent être vrais pour la source, mais pas pertinents pour le contexte — considérez cela comme ayant la même signification qu’un bref avec `weak: true : utile, mais vérifiez avant de l’intégrer dans les preuves ultérieures.
|
|
272
295
|
|
|
273
296
|
---
|
|
274
297
|
|
|
275
|
-
## Contrat d
|
|
298
|
+
## Contrat d’abstention (nouveauté de la version v2.2.0)
|
|
276
299
|
|
|
277
|
-
`ollama_research` renvoie des champs d
|
|
300
|
+
`ollama_research` renvoie des champs d’abstention structurés : `weak: boolean`, `abstained: boolean`, `sources_address_question: boolean | null`. Un tableau `citations[]` vide avec un champ `answer` non vide n’est plus considéré comme une réussite silencieuse — `abstained: true` indique que le modèle a refusé de synthétiser parce que les chemins fournis par l’appelant n’abordaient pas la question. Considérez l’abstention comme une réussite, et non comme un échec : il s’agit de l’outil qui refuse de transformer des résultats médiocres en informations faisant autorité.
|
|
278
301
|
|
|
279
|
-
`ollama_corpus_answer` accepte un seuil de
|
|
302
|
+
`ollama_corpus_answer` accepte un seuil de pertinence thématique optionnel `min_top_score: number` (de 0,0 à 1,0). Lorsque le score de récupération maximal pour une requête est inférieur à `min_top_score`, l’outil interrompt le processus avec `abstained: true` et saute la synthèse, ce qui empêche le mode d’échec « 5 fragments hors sujet avec un score de 0,21 qui génèrent toujours une réponse complète » que la règle `weak: true` de la version 2.1.0 ne détectait pas (`weak: true` n’était appliqué que lorsque `hits.length < 2`). Associez ceci au champ `score` par citation, nouvellement ajouté pour chaque citation, afin d’évaluer directement la qualité de la récupération à partir des données.
|
|
280
303
|
|
|
281
304
|
---
|
|
282
305
|
|
|
283
|
-
##
|
|
306
|
+
## Qu’est-ce qui se trouve ici : quatre niveaux, <!-- TOOL_COUNT:start -->42<!-- TOOL_COUNT:end --> outils
|
|
284
307
|
|
|
285
|
-
|
|
308
|
+
« Orienté tâche » signifie que chaque outil correspond à une tâche que vous confieriez à un stagiaire : classer ceci, extraire cela, trier ces journaux, rédiger cette note de version, organiser cet incident. L’entrée de l’outil est la spécification de la tâche ; la sortie est le résultat attendu. Pas d’opération générique `run_model` / `chat_with_llm` au niveau supérieur.
|
|
286
309
|
|
|
287
|
-
| Niveau | Nombre | Ce qui
|
|
310
|
+
| Niveau | Nombre | Ce qui s’y trouve |
|
|
288
311
|
|---|---|---|
|
|
289
|
-
| **Atoms** |
|
|
290
|
-
| **Briefs** | 3 |
|
|
291
|
-
| **Packs** | 3 | Tâches composées à pipeline fixe qui écrivent
|
|
292
|
-
| **Artifacts** | 7 | Surface de continuité
|
|
312
|
+
| **Atoms** | 31 | Primitives de type « job ». **Original 15 :** `classify`, `extract`, `triage_logs`, `summarize_fast` / `deep`, `draft`, `research`, `corpus_search` / `answer` / `index` / `refresh` / `list`, `embed_search`, `embed`, `chat`. **+13 ajoutés dans la version 2.1.0 :** `doctor`, `log_tail`, `batch_proof_check` (opérations) ; `code_map`, `code_citation`, `multi_file_refactor_propose`, `refactor_plan` (refactoring) ; `artifact_prune`, `hypothesis_drill` (artefact/brouillon) ; `corpus_health`, `corpus_amend`, `corpus_amend_history`, `corpus_rerank` (corpus). **+1 atome de révision :** `code_review` (résultats structurés de la révision des demandes d’extraction, outil principal ; uniquement pour la révision). **+2 dans la version 2.9 :** `verify_claims` (un ensemble de modèles cloud inter-familles évalue les affirmations ; nécessite l’utilisation du cloud) et `log_stats` (agrège les enregistrements NDJSON en avantages économiques mesurés — répartition entre le cloud et le local, taux de repli, p50/p95 par outil ; aucun appel au modèle). Les atomes capables de traiter des lots (`classify`, `extract`, `triage_logs`) acceptent `items: [{id, text}]`. |
|
|
313
|
+
| **Briefs** | 3 | Brefs structurés et étayés par des preuves. `incident_brief`, `repo_brief`, `change_brief`. Chaque affirmation cite un identifiant de preuve ; les éléments inconnus sont supprimés côté serveur. Les preuves faibles affichent `weak: true` plutôt qu’un récit inventé. |
|
|
314
|
+
| **Packs** | 3 | Tâches composées à pipeline fixe qui écrivent des données Markdown + JSON durables dans `~/.ollama-intern/artifacts/`. `incident_pack`, `repo_pack`, `change_pack`. Renders déterministes ; aucune requête de modèle n’est effectuée sur la forme de l’artefact. |
|
|
315
|
+
| **Artifacts** | 7 | Surface de continuité sur les sorties des packs. `artifact_list` / `read` / `diff` / `export_to_path`, ainsi que trois extraits déterministes : `incident_note`, `onboarding_section`, `release_note`. |
|
|
293
316
|
|
|
294
|
-
Total
|
|
317
|
+
Total : **29 opérations + 3 brefs + 3 packs + 7 outils d’artefact = <!-- TOOL_COUNT:start -->42<!-- TOOL_COUNT:end -->**.
|
|
295
318
|
|
|
296
|
-
Lignes
|
|
297
|
-
-
|
|
298
|
-
- Packs
|
|
299
|
-
- Niveau artefact
|
|
319
|
+
Lignes figées :
|
|
320
|
+
- Opérations : gel **levé dans la version 2.1.0** (29 aujourd’hui ; +13 ajoutés lors de la mise à jour des fonctionnalités de la version 2.1.0, +1 `code_review` ultérieurement). Les nouvelles opérations nécessitent toujours une justification basée sur une analyse, des tests, une page du manuel et une entrée dans le journal des modifications ; aucun ajout occasionnel n’est autorisé.
|
|
321
|
+
- Packs figés à 3. Aucun nouveau type de pack.
|
|
322
|
+
- Niveau artefact figé à 7.
|
|
300
323
|
|
|
301
|
-
La référence complète des outils
|
|
324
|
+
La référence complète des outils se trouve dans le [manuel](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/tools/).
|
|
302
325
|
|
|
303
326
|
---
|
|
304
327
|
|
|
305
328
|
## Installation
|
|
306
329
|
|
|
307
|
-
Nécessite [Ollama](https://ollama.com)
|
|
330
|
+
Nécessite que [Ollama](https://ollama.com) soit en cours d’exécution localement et que les modèles du niveau soient téléchargés (voir [Téléchargement des modèles](#model-pulls) ci-dessous).
|
|
308
331
|
|
|
309
332
|
### Claude Code (recommandé)
|
|
310
333
|
|
|
311
|
-
La plupart des utilisateurs installent
|
|
334
|
+
La plupart des utilisateurs l’installent en l’ajoutant à la configuration de leur serveur Claude Code MCP ; aucune installation globale n’est requise. Claude Code exécute le serveur à la demande via `npx` :
|
|
312
335
|
|
|
313
336
|
```json
|
|
314
337
|
{
|
|
@@ -329,9 +352,9 @@ La plupart des utilisateurs installent ceci en l'ajoutant à leur config de serv
|
|
|
329
352
|
|
|
330
353
|
Même bloc, écrit dans `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ou `%APPDATA%\Claude\claude_desktop_config.json` (Windows).
|
|
331
354
|
|
|
332
|
-
### Installation globale (
|
|
355
|
+
### Installation globale (avancée)
|
|
333
356
|
|
|
334
|
-
|
|
357
|
+
N’est nécessaire que si vous souhaitez que le binaire se trouve dans votre variable `PATH` pour une utilisation ponctuelle en dehors de Claude Code :
|
|
335
358
|
|
|
336
359
|
```bash
|
|
337
360
|
npm install -g ollama-intern-mcp
|
|
@@ -339,9 +362,9 @@ npm install -g ollama-intern-mcp
|
|
|
339
362
|
|
|
340
363
|
### Utilisation avec Hermes
|
|
341
364
|
|
|
342
|
-
Ce MCP a été validé de bout en bout avec [Hermes Agent](https://github.com/NousResearch/hermes-agent)
|
|
365
|
+
Ce MCP a été validé de bout en bout avec [Hermes Agent](https://github.com/NousResearch/hermes-agent) par rapport à `hermes3:8b` sur Ollama (19 avril 2026). Hermes est un agent externe qui *appelle* la surface d’opérations figées de ce MCP ; il effectue la planification, et nous effectuons le travail.
|
|
343
366
|
|
|
344
|
-
Configuration de référence ([hermes.config.example.yaml](hermes.config.example.yaml) dans ce dépôt)
|
|
367
|
+
Configuration de référence ([hermes.config.example.yaml](hermes.config.example.yaml) dans ce dépôt) :
|
|
345
368
|
|
|
346
369
|
```yaml
|
|
347
370
|
model:
|
|
@@ -369,11 +392,11 @@ mcp_servers:
|
|
|
369
392
|
# only needed if you're pinning a different local model.
|
|
370
393
|
```
|
|
371
394
|
|
|
372
|
-
**La forme
|
|
395
|
+
**La forme de l’invite est importante.** Les invites impératives d’invocation d’outils (« Appeler X avec les arguments… ») constituent le test d’intégration ; elles fournissent à un modèle local de 8 milliards de paramètres suffisamment d’éléments pour générer des `tool_calls` propres. Les invites multitâches sous forme de liste (« faire A, puis B, puis C ») sont des références de capacité pour les modèles plus volumineux ; ne considérez pas un échec d’une invite sous forme de liste sur un modèle de 8 milliards de paramètres comme signifiant que « le câblage est défectueux ». Voir [handbook/with-hermes](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/with-hermes/) pour l’intégralité du processus d’intégration et les mises en garde connues concernant le transport (streaming Ollama `/v1` + shim de streaming non pris en charge par openai-SDK).
|
|
373
396
|
|
|
374
397
|
### Téléchargement des modèles
|
|
375
398
|
|
|
376
|
-
**Profil de développement par défaut (RTX 5080
|
|
399
|
+
**Profil de développement par défaut (RTX 5080 16 Go et équivalent) :**
|
|
377
400
|
|
|
378
401
|
```bash
|
|
379
402
|
ollama pull hermes3:8b
|
|
@@ -382,7 +405,7 @@ export OLLAMA_MAX_LOADED_MODELS=2
|
|
|
382
405
|
export OLLAMA_KEEP_ALIVE=-1
|
|
383
406
|
```
|
|
384
407
|
|
|
385
|
-
**
|
|
408
|
+
**Rail alternatif Qwen 3 (même matériel, pour les outils Qwen) :**
|
|
386
409
|
|
|
387
410
|
```bash
|
|
388
411
|
ollama pull qwen3:8b
|
|
@@ -391,7 +414,7 @@ ollama pull nomic-embed-text
|
|
|
391
414
|
export INTERN_PROFILE=dev-rtx5080-qwen3
|
|
392
415
|
```
|
|
393
416
|
|
|
394
|
-
**Profil M5 Max (
|
|
417
|
+
**Profil M5 Max (128 Go de mémoire unifiée) :**
|
|
395
418
|
|
|
396
419
|
```bash
|
|
397
420
|
ollama pull qwen3:14b
|
|
@@ -400,13 +423,13 @@ ollama pull nomic-embed-text
|
|
|
400
423
|
export INTERN_PROFILE=m5-max
|
|
401
424
|
```
|
|
402
425
|
|
|
403
|
-
Les variables d
|
|
426
|
+
Les variables d’environnement par niveau (`INTERN_TIER_INSTANT`, `INTERN_TIER_WORKHORSE`, `INTERN_TIER_DEEP`, `INTERN_EMBED_MODEL`) remplacent toujours les choix du profil pour des cas ponctuels.
|
|
404
427
|
|
|
405
428
|
---
|
|
406
429
|
|
|
407
430
|
## Enveloppe uniforme
|
|
408
431
|
|
|
409
|
-
Chaque outil renvoie la même
|
|
432
|
+
Chaque outil renvoie la même structure :
|
|
410
433
|
|
|
411
434
|
```ts
|
|
412
435
|
{
|
|
@@ -426,31 +449,34 @@ Chaque outil renvoie la même forme :
|
|
|
426
449
|
}
|
|
427
450
|
```
|
|
428
451
|
|
|
429
|
-
`residency` provient de `/api/ps` d
|
|
452
|
+
`residency` provient de l’API `/api/ps` d’Ollama. Lorsque `evicted: true` ou `size_vram < size`, le modèle est mis en mémoire virtuelle et l’inférence est ralentie de 5 à 10 fois ; affichez ces informations à l’utilisateur afin qu’il sache qu’il doit redémarrer Ollama ou réduire le nombre de modèles chargés.
|
|
430
453
|
|
|
431
|
-
En mode [Ollama Cloud](#ollama-cloud-optional) l
|
|
454
|
+
En mode [Ollama Cloud](#ollama-cloud-optional), l’enveloppe contient également `backend` (`"cloud"` | `"local"`) et, en cas de basculement du cloud vers le local, `degraded: true` + `degrade_reason`. Ces champs sont **absents** dans le chemin local par défaut, de sorte que les consommateurs existants ne sont pas affectés. `residency` est `null` pour les appels traités sur le cloud (le cloud sans état n’a aucune résidence en mémoire VRAM locale).
|
|
432
455
|
|
|
433
|
-
Chaque appel est
|
|
456
|
+
Chaque appel est enregistré sous forme d’une ligne NDJSON dans `~/.ollama-intern/log.ndjson`. Filtrez par `hardware_profile` pour exclure les numéros de développement des références comparatives publiables.
|
|
434
457
|
|
|
435
458
|
---
|
|
436
459
|
|
|
437
460
|
## Profils matériels
|
|
438
461
|
|
|
439
|
-
| Profil |
|
|
462
|
+
| Profil | Instantané | Polyvalent | Approfondi | Intégration |
|
|
440
463
|
|---|---|---|---|---|
|
|
441
464
|
| **`dev-rtx5080`** (par défaut) | hermes3 8B | hermes3 8B | hermes3 8B | nomic-embed-text |
|
|
442
465
|
| `dev-rtx5080-qwen3` | qwen3 8B | qwen3 8B | qwen3 14B | nomic-embed-text |
|
|
443
466
|
| `m5-max` | qwen3 14B | qwen3 14B | qwen3 32B | nomic-embed-text |
|
|
444
467
|
|
|
445
|
-
Le profil
|
|
468
|
+
**Le profil par défaut** regroupe les trois niveaux de performance sur `hermes3:8b`, qui est la configuration validée pour l’intégration d’Hermes Agent. L’utilisation du même modèle à tous les niveaux signifie qu’il n’y a qu’un seul élément à télécharger, un seul coût de stockage et un seul ensemble de comportements à comprendre. Les utilisateurs qui préfèrent Qwen 3 (avec son système `THINK_BY_SHAPE`) peuvent opter pour `dev-rtx5080-qwen3`. `m5-max` est la configuration Qwen 3 optimisée pour une mémoire unifiée.
|
|
446
469
|
|
|
447
470
|
---
|
|
448
471
|
|
|
449
|
-
## Ollama Cloud (
|
|
472
|
+
## Ollama Cloud (facultatif)
|
|
473
|
+
|
|
474
|
+
Les modèles locaux de 8 Go représentent le principal goulot d’étranglement matériel rencontré par la plupart des utilisateurs. [Ollama Cloud](https://ollama.com/cloud) propose des modèles de classe 600B derrière la **même** interface `/api/*`, ce qui vous permet de diriger les outils les plus gourmands vers un modèle beaucoup plus puissant et de libérer la VRAM locale, tout en conservant une option locale comme solution de secours toujours disponible.
|
|
450
475
|
|
|
451
|
-
|
|
476
|
+
**Cette fonctionnalité est activable et désactivée par défaut.** Sans clé définie, le package reste en mode local avec **zéro transfert de données vers l’extérieur** — toute personne qui n’active pas cette fonctionnalité n’est pas affectée. Il existe deux façons d’activer cette fonctionnalité :
|
|
452
477
|
|
|
453
|
-
|
|
478
|
+
- **Priorité au cloud** (ci-dessous) : définissez *les deux* `OLLAMA_CLOUD_PRIMARY=1` et `OLLAMA_API_KEY` — les niveaux génératifs sont acheminés vers le cloud avec un repli local.
|
|
479
|
+
- **Cloud en veille** (version 2.9) : définissez **uniquement** `OLLAMA_API_KEY` — tout reste local (zéro transfert de données vers l’extérieur, même pas de sondage initial) jusqu’à ce qu’un seul appel demande explicitement une mise à l’échelle avec `backend: "cloud"`. Voir [Cloud en veille et mise à l’échelle par appel](#cloud-standby--per-call-escalation) ci-dessous.
|
|
454
480
|
|
|
455
481
|
```json
|
|
456
482
|
{
|
|
@@ -468,104 +494,117 @@ Les modèles locaux 8B constituent le goulot d'étranglement matériel que la pl
|
|
|
468
494
|
}
|
|
469
495
|
```
|
|
470
496
|
|
|
471
|
-
> **La clé est une variable d
|
|
497
|
+
> **La clé est une variable d’environnement d’exécution, et non un secret CI.** Un secret GitHub Actions n’est visible que dans les exécutions CI ; il n’atteint jamais le serveur en cours d’exécution. Créez une clé sur [ollama.com/settings/keys](https://ollama.com/settings/keys) et placez-la dans le bloc `env` de votre client MCP (ou dans votre environnement shell).
|
|
472
498
|
|
|
473
|
-
**
|
|
499
|
+
**Fonctionnement du routage.** Lorsque le cloud est activé, les niveaux de génération (instantané / polyvalent / approfondi) sont dirigés vers le modèle du cloud ; **les intégrations restent toujours locales** (Ollama Cloud ne propose aucun modèle d’intégration, de sorte que les outils de corpus/d’intégration ne sont pas affectés). Un système de basculement tente d’abord d’utiliser le cloud et revient à votre profil local en cas de dépassement du délai / erreur 5xx / 429 / erreurs réseau. Une clé incorrecte (401/403) déclenche un système de basculement *persistant* qui signale clairement le problème plutôt que de dégrader silencieusement les performances. Le profil local (`INTERN_PROFILE`) est la solution de secours, conservez donc ses modèles téléchargés.
|
|
474
500
|
|
|
475
|
-
**Vous
|
|
501
|
+
**Vous ne serez jamais rétrogradé en silence.** Chaque requête indique quel backend a traité l’appel :
|
|
476
502
|
|
|
477
503
|
```ts
|
|
478
504
|
{ ...envelope, backend: "cloud" | "local", degraded?: true, degrade_reason?: "cloud_timeout" | "cloud_5xx" | "cloud_rate_limited" | "cloud_unreachable" | "cloud_auth_failed" | "circuit_open" }
|
|
479
505
|
```
|
|
480
506
|
|
|
481
|
-
Une ligne `backend_fallback`
|
|
507
|
+
Une ligne `backend_fallback` est ajoutée à `~/.ollama-intern/log.ndjson` pour chaque basculement du cloud vers le local (`ollama_log_tail --filter_kind backend_fallback`), et la commande `ollama-intern-mcp doctor` affiche un bloc **Cloud (principal)** avec l’état d’accessibilité et d’authentification.
|
|
508
|
+
|
|
509
|
+
### Cloud en veille et mise à l’échelle par appel
|
|
510
|
+
|
|
511
|
+
Définir `OLLAMA_API_KEY` **sans** `OLLAMA_CLOUD_PRIMARY` active le **mode veille :** le routage reste en mode local, et rien ne quitte la machine — jusqu’à ce qu’un appel contienne `backend: "cloud"` (exposé dans `ollama_chat`, utilisé en interne par `ollama_verify_claims`). Ce seul appel est mis à l’échelle vers le modèle cloud, avec le même mécanisme de disjoncteur + repli local et la même provenance des données ; tous les autres appels restent locaux. Le **premier** appel mis à l’échelle affiche un message clair dans stderr indiquant le nom de l’hôte et écrit une ligne `cloud_egress` dans le journal NDJSON — le transfert de données est signalé au moment où il se produit, et non pas seulement ici dans la documentation.
|
|
512
|
+
|
|
513
|
+
Les règles, appliquées mécaniquement :
|
|
514
|
+
|
|
515
|
+
- Pas de clé → `backend: "cloud"` échoue avec `CLOUD_NOT_CONFIGURED`. Le modèle local ne répond **jamais** silencieusement en prétendant avoir effectué une mise à l’échelle.
|
|
516
|
+
- Mode veille + pas d’instruction → mode local, zéro transfert de données vers l’extérieur (le démarrage ne sonde pas non plus l’hôte cloud).
|
|
517
|
+
- En mode priorité au cloud, `backend: "local"` force un appel à utiliser le modèle local — la solution de repli.
|
|
518
|
+
- Un remplacement du `model` par appel est désormais appliqué directement au chemin d’accès au cloud (il était auparavant écrasé par le mappage niveau → modèle cloud), afin que les orchestrateurs basés sur des enregistrements puissent spécifier le modèle cloud exact pour chaque appel.
|
|
519
|
+
|
|
520
|
+
Le modèle phare pour les utilisateurs est **`ollama_verify_claims`** : il permet d’évaluer les revendications et les conclusions à l’aide d’un groupe de modèles hébergés dans le cloud, issus de différentes familles (par défaut : `deepseek-v4-pro:cloud` / `kimi-k2.7-code:cloud` / `glm-5.2:cloud`). Il utilise une méthode d’agrégation où un seul vote dissident ne suffit pas à prendre une décision, effectue des vérifications sur chaque modèle utilisé et affiche un indicateur « faible » lorsque le groupe de modèles est réduit. Une confirmation du groupe concernant les revendications formulées par les modèles les plus récents constitue une *preuve à l’appui, mais pas une preuve définitive*. Le groupe détecte efficacement les erreurs flagrantes, mais il est moins performant pour détecter les erreurs subtiles. Consultez la [page du manuel](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/tools/verify-claims/).
|
|
482
521
|
|
|
483
|
-
**Latence
|
|
522
|
+
**Latence par rapport à la qualité.** Les grands modèles du cloud s’exécutent beaucoup plus lentement que les modèles locaux de 8 Go (en secondes, pas en millisecondes) ; il s’agit d’une amélioration de la qualité, et non de la vitesse. Les niveaux du cloud utilisent un délai d’attente généreux (instantané : 30 s / polyvalent : 120 s / approfondi : 300 s par défaut).
|
|
484
523
|
|
|
485
|
-
### Variables d
|
|
524
|
+
### Variables d’environnement du cloud
|
|
486
525
|
|
|
487
|
-
|
|
|
526
|
+
| Variable | Valeur par défaut | Objectif |
|
|
488
527
|
|---|---|---|
|
|
489
|
-
| `OLLAMA_CLOUD_PRIMARY` | _(non défini)_ | **
|
|
490
|
-
| `OLLAMA_API_KEY` | _(non défini)_ | Clé
|
|
491
|
-
| `OLLAMA_CLOUD_HOST` | `https://ollama.com` | Hôte de base cloud. |
|
|
492
|
-
| `INTERN_CLOUD_MODEL` | `
|
|
493
|
-
| `INTERN_CLOUD_DEEP_MODEL` | _(= `INTERN_CLOUD_MODEL`)_ |
|
|
494
|
-
| `INTERN_CLOUD_TIMEOUT_{INSTANT,WORKHORSE,DEEP}_MS` | `30000`/`120000`/`300000` |
|
|
495
|
-
| `INTERN_CLOUD_NUM_CTX` | `32768` |
|
|
528
|
+
| `OLLAMA_CLOUD_PRIMARY` | _(non défini)_ | **Activation de l’option « cloud-primary ».** `1`/`true`/`yes`/`on` redirige les niveaux génératifs vers le cloud. Si cette option n’est pas définie avec une clé, elle est réglée sur **standby** (mode principal local, escalade uniquement pour chaque appel). Si l’option n’est pas définie sans clé, seul le mode local est utilisé, sans transfert de données vers l’extérieur. |
|
|
529
|
+
| `OLLAMA_API_KEY` | _(non défini)_ | Clé d’authentification pour Ollama Cloud. Sa simple définition active le mode **standby** ; elle est **obligatoire** lorsque `OLLAMA_CLOUD_PRIMARY` est activé (en cas d’absence, une erreur se produit au démarrage). |
|
|
530
|
+
| `OLLAMA_CLOUD_HOST` | `https://ollama.com` | Hôte de base du cloud. |
|
|
531
|
+
| `INTERN_CLOUD_MODEL` | `qwen3-coder-next:cloud` | Modèle cloud pour un usage immédiat et intensif. Conservez la valeur par défaut **non-analytique** ; l’utilisation d’un modèle analytique ici épuiserait rapidement les ressources allouées pour le raisonnement (placez les modèles de raisonnement complexes dans la section « deep override » ci-dessous). |
|
|
532
|
+
| `INTERN_CLOUD_DEEP_MODEL` | _(= `INTERN_CLOUD_MODEL`)_ | Remplacement facultatif uniquement pour le niveau approfondi, par exemple `deepseek-v3.1:671b`. |
|
|
533
|
+
| `INTERN_CLOUD_TIMEOUT_{INSTANT,WORKHORSE,DEEP}_MS` | `30000`/`120000`/`300000` | Délai d’attente pour chaque tentative de connexion au cloud. |
|
|
534
|
+
| `INTERN_CLOUD_NUM_CTX` | `32768` | Limite de la taille de la fenêtre de contexte pour les appels au cloud (le cloud facture en fonction du temps GPU ; la limite contrôle le coût). |
|
|
496
535
|
|
|
497
|
-
> **
|
|
536
|
+
> **Modifications de la disponibilité des modèles.** Ollama met à jour ou retire les identifiants cloud côté serveur. Au 2026-07, `qwen3-coder-next:cloud` (valeur par défaut non-analytique) et les modèles analytiques phares `deepseek-v4-pro:cloud` / `kimi-k2.7-code:cloud` / `glm-5.2:cloud` sont disponibles ; vérifiez [ollama.com/search?c=cloud](https://ollama.com/search?c=cloud) avant de fixer un identifiant. Un identifiant retiré entraîne une dégradation visible (`cloud_model_missing`), mais jamais silencieuse.
|
|
498
537
|
|
|
499
|
-
**Note
|
|
538
|
+
**Note sur la confidentialité.** Le routage vers Ollama Cloud envoie les requêtes à un tiers. La politique de confidentialité d’Ollama indique que les requêtes du cloud sont traitées de manière transitoire, qu’elles ne sont pas conservées au-delà de la requête et qu’elles ne sont pas utilisées pour l’entraînement, mais il s’agit tout de même d’un transfert de données, c’est pourquoi cette fonctionnalité est facultative et doit être explicitement activée. En mode uniquement local (par défaut), rien n’est envoyé en dehors du système.
|
|
500
539
|
|
|
501
540
|
---
|
|
502
541
|
|
|
503
|
-
## Lois sur
|
|
542
|
+
## Lois sur les preuves
|
|
504
543
|
|
|
505
|
-
|
|
544
|
+
Ces lois sont appliquées au niveau du serveur, et non dans la requête :
|
|
506
545
|
|
|
507
|
-
- **
|
|
508
|
-
-
|
|
509
|
-
- **
|
|
510
|
-
- **Faible
|
|
511
|
-
- **
|
|
512
|
-
- **Rendu déterministe.** La forme markdown de l
|
|
513
|
-
- **Différences uniquement dans le même
|
|
546
|
+
- **Les citations sont obligatoires.** Chaque affirmation doit citer un identifiant de preuve.
|
|
547
|
+
- **Les éléments inconnus sont supprimés côté serveur.** Les modèles qui citent des identifiants qui ne figurent pas dans l’ensemble des preuves voient ces identifiants supprimés avec un avertissement avant que le résultat ne soit renvoyé.
|
|
548
|
+
- **Validation des identifiants, et non du contenu.** Le serveur vérifie que chaque `evidence_ref` cité pointe vers un identifiant de preuve réel dans l’ensemble assemblé. Il ne vérifie PAS que le texte de l’affirmation peut être déduit de la preuve citée ; c’est le travail du modèle, et les résumés faibles contiennent parfois des affirmations non étayées avec des références valides. Utilisez `weak: true` + notes sur la couverture + le champ `excerpt` inclus pour vérifier.
|
|
549
|
+
- **Faible est faible.** Les preuves minces signalent `weak: true` avec des notes sur la couverture. Elles ne sont jamais transformées en un récit artificiel.
|
|
550
|
+
- **Enquête, et non prescription.** Uniquement `next_checks` / `read_next` / `likely_breakpoints`. Les requêtes interdisent l’application d’une correction.
|
|
551
|
+
- **Rendu déterministe.** La forme du markdown de l’artefact est du code, et non une requête. `draft` reste réservé aux textes où le style du modèle compte.
|
|
552
|
+
- **Différences uniquement dans le même ensemble.** Les différences entre les ensembles (`artifact_diff`) sont refusées avec un message clair ; les charges utiles restent distinctes.
|
|
514
553
|
|
|
515
554
|
---
|
|
516
555
|
|
|
517
556
|
## Artefacts et continuité
|
|
518
557
|
|
|
519
|
-
Les
|
|
558
|
+
Les ensembles écrivent dans `~/.ollama-intern/artifacts/{incident,repo,change}/<slug>.(md|json)`. La couche des artefacts vous offre une surface de continuité sans transformer cela en un outil de gestion de fichiers :
|
|
520
559
|
|
|
521
|
-
- `artifact_list` — index métadonnées
|
|
522
|
-
- `artifact_read` — lecture typée
|
|
523
|
-
- `artifact_diff` — comparaison structurée
|
|
524
|
-
- `artifact_export_to_path` — écrit un artefact existant (avec en-tête de provenance)
|
|
525
|
-
- `artifact_incident_note_snippet` — fragment de note
|
|
526
|
-
- `artifact_onboarding_section_snippet` — fragment
|
|
527
|
-
- `artifact_release_note_snippet` — fragment de note de version
|
|
560
|
+
- `artifact_list` — index ne contenant que les métadonnées, filtrable par paquet, date et motif de recherche de fichiers
|
|
561
|
+
- `artifact_read` — lecture typée à partir de `{pack, slug}` ou `{json_path}`
|
|
562
|
+
- `artifact_diff` — comparaison structurée au sein d’un même paquet ; affichage des différences minimales
|
|
563
|
+
- `artifact_export_to_path` — écrit un artefact existant (avec en-tête de provenance) dans un répertoire `allowed_roots` défini par l’appelant. Refuse les fichiers existants, sauf si `overwrite: true`.
|
|
564
|
+
- `artifact_incident_note_snippet` — fragment de note pour l’opérateur
|
|
565
|
+
- `artifact_onboarding_section_snippet` — fragment du manuel d’utilisation
|
|
566
|
+
- `artifact_release_note_snippet` — fragment de la note de version (PROJET)
|
|
528
567
|
|
|
529
|
-
Aucun appel de modèle dans
|
|
568
|
+
Aucun appel de modèle dans cette couche. Tout est généré à partir du contenu stocké.
|
|
530
569
|
|
|
531
570
|
---
|
|
532
571
|
|
|
533
572
|
## Modèle de menace et télémétrie
|
|
534
573
|
|
|
535
|
-
**Données
|
|
574
|
+
**Données concernées :** chemins d’accès aux fichiers que l’appelant fournit explicitement (`ollama_research`, outils de corpus), texte en ligne et artefacts pour lesquels l’appelant demande qu’ils soient écrits dans `~/.ollama-intern/artifacts/` ou un répertoire `allowed_roots` défini par l’appelant.
|
|
536
575
|
|
|
537
|
-
**Données
|
|
576
|
+
**Données non concernées :** tout ce qui se trouve en dehors de `source_paths` / `allowed_roots`. `..` est rejeté avant la normalisation. `artifact_export_to_path` refuse les fichiers existants, sauf si `overwrite: true`. Les versions provisoires ciblant des chemins protégés (`memory/`, `.claude/`, `docs/canon/`, etc.) nécessitent une confirmation explicite avec `confirm_write: true`, appliquée côté serveur.
|
|
538
577
|
|
|
539
|
-
**Sortie réseau
|
|
578
|
+
**Sortie réseau :** **désactivée par défaut.** Par défaut, la seule communication sortante est vers le point de terminaison HTTP local d’Ollama — aucun appel au cloud, aucune notification de mise à jour, aucun rapport d’erreur. **Exception facultative :** si vous activez [Ollama Cloud](#ollama-cloud-optional) (`OLLAMA_CLOUD_PRIMARY=1` + `OLLAMA_API_KEY`), les requêtes pour les couches génératives sont envoyées à `ollama.com` via HTTPS avec une clé Bearer. Ceci est explicite, divulgué et désactivé par défaut, sauf si vous définissez les deux variables ; les intégrations ne quittent jamais le système. Voir [SECURITY.md](SECURITY.md) §11.
|
|
540
579
|
|
|
541
|
-
**Télémétrie
|
|
580
|
+
**Télémétrie :** **aucune.** Chaque appel est enregistré sous la forme d’une seule ligne NDJSON dans `~/.ollama-intern/log.ndjson` sur votre machine. Le serveur lui-même ne communique avec aucun autre système.
|
|
542
581
|
|
|
543
|
-
**Erreurs
|
|
582
|
+
**Erreurs :** format structuré `{ code, message, hint, retryable }`. Les traces de pile ne sont jamais exposées dans les résultats des outils.
|
|
544
583
|
|
|
545
|
-
Politique complète
|
|
584
|
+
Politique complète : [SECURITY.md](SECURITY.md).
|
|
546
585
|
|
|
547
586
|
---
|
|
548
587
|
|
|
549
588
|
## Normes
|
|
550
589
|
|
|
551
|
-
|
|
590
|
+
Conçu pour répondre aux exigences de [Shipcheck](https://github.com/mcp-tool-shop-org/shipcheck). Les contrôles A à D sont réussis ; voir [SHIP_GATE.md](SHIP_GATE.md) et [SCORECARD.md](SCORECARD.md).
|
|
552
591
|
|
|
553
|
-
- **A. Sécurité** — SECURITY.md, modèle de menace, aucune télémétrie, sécurité des chemins, `confirm_write` sur les chemins protégés
|
|
554
|
-
- **B. Erreurs** — format structuré pour tous les résultats
|
|
555
|
-
- **C. Documentation** — README à jour, CHANGELOG, LICENSE
|
|
556
|
-
- **D. Hygiène** — `npm run verify` (suite
|
|
592
|
+
- **A. Sécurité** — SECURITY.md, modèle de menace, aucune télémétrie, sécurité des chemins d’accès, `confirm_write` sur les chemins protégés
|
|
593
|
+
- **B. Erreurs** — format structuré pour tous les résultats des outils ; pas de traces de pile brutes
|
|
594
|
+
- **C. Documentation** — README à jour, CHANGELOG, LICENSE ; les schémas d’outils s’auto-documentent
|
|
595
|
+
- **D. Hygiène** — `npm run verify` (suite complète de tests Vitest), CI avec analyse des dépendances, Dependabot, fichier lockfile, `engines.node`
|
|
557
596
|
|
|
558
597
|
---
|
|
559
598
|
|
|
560
|
-
## Feuille de route (
|
|
599
|
+
## Feuille de route (amélioration continue, pas d’extension du périmètre)
|
|
561
600
|
|
|
562
|
-
- **Phase 1 —
|
|
563
|
-
- **Phase 2 —
|
|
564
|
-
- **Phase 3 —
|
|
565
|
-
- **Phase 4 —
|
|
566
|
-
- **Phase 5 — Benchmarks M5 Max** — chiffres publiables une fois le matériel disponible (
|
|
601
|
+
- **Phase 1 — Colonne principale de délégation** ✓ livrée : surface atomique, enveloppe uniforme, routage à plusieurs niveaux, garde-fous
|
|
602
|
+
- **Phase 2 — Colonne principale de vérité** ✓ livrée : schéma v2, découpage en blocs, BM25 + RRF, corpus évolutifs, résumés basés sur des preuves, pack d’évaluation de la récupération
|
|
603
|
+
- **Phase 3 — Colonne principale de paquets et d’artefacts** ✓ livrée : paquets à pipeline fixe avec artefacts durables + couche de continuité
|
|
604
|
+
- **Phase 4 — Colonne principale d’adoption** ✓ v2.0.1 : passage en trois étapes pour la validation de l’intégrité du corpus (TOCTOU, limite de taille des fichiers de 50 Mo, rejet des liens symboliques, écritures atomiques, capture des échecs par fichier), parcours des chemins d’accès aux outils, observabilité (événements d’attente de sémaphore, contexte d’erreur de délai d’attente, journalisation de remplacement de l’environnement du profil, signal de préchargement pour le démarrage à froid), sécurité des tests (instantané de l’environnement de chargement des modules sur 10 fichiers, `tools/call` E2E). Manuel de dépannage et exigences matérielles minimales ajoutés pour les opérateurs.
|
|
605
|
+
- **Phase 5 — Benchmarks M5 Max** — chiffres publiables une fois que le matériel sera disponible (environ le 24 avril 2026)
|
|
567
606
|
|
|
568
|
-
|
|
607
|
+
Phases par couche d’amélioration continue. Les couches de paquets et d’artefacts restent figées aux niveaux 3 et 7. Le gel des atomes a été levé à la version 2.1.0 — les nouveaux atomes nécessitent un écart justifié par une analyse, des tests, une page du manuel d’utilisation et une entrée dans le CHANGELOG.
|
|
569
608
|
|
|
570
609
|
---
|
|
571
610
|
|