ollama-intern-mcp 2.3.0 → 2.4.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 CHANGED
@@ -29,13 +29,64 @@ Sin nube. Sin telemetría. Nada de "autonomía". Cada llamada muestra su trabajo
29
29
 
30
30
  ## Novedades en v2.2.0
31
31
 
32
- Modelo configurable por llamada para las herramientas atomizadas basadas en LLM. Pequeñas mejoras adicionales; los usuarios de la versión v2.2.0 no se ven afectados. Detalles en [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
32
+ Control individual `num_ctx` (tamaño de la ventana de contexto) por nivel en el sistema de perfiles. Pequeña mejora adicional: los usuarios de la versión v2.3.0 no se ven afectados. Detalles en [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md).
33
33
 
34
- - **Entrada opcional `model: string` en 8 herramientas atomizadas** — `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. El primer intento en el nivel de la herramienta utiliza el modelo especificado por el usuario; en caso de tiempo de espera, la cascada existente `TIER_FALLBACK` utiliza el modelo propio del nivel más económico (NO la configuración del usuario). Las herramientas compuestas/resumidas/de paquete *deliberadamente* no aceptan el parámetro `model`; las herramientas atomizadas tienen control por llamada, mientras que las herramientas compuestas utilizan los valores predeterminados del nivel.
35
- - **Nuevo campo de la estructura `model_requested?: string`** presente solo cuando se proporciona la configuración. Los usuarios que realizan la calibración comparan `model_requested` con `model` para detectar la sustitución: `if (env.model_requested && env.model !== env.model_requested) { /* sustitución */ }`. Las entradas vacías o que contienen solo espacios en blanco generan un error `ZodError` durante el análisis del esquema, en lugar de una sustitución silenciosa.
36
- - **Corrección de errores desviación en `src/version.ts`.** La constante de tiempo de ejecución `VERSION` ahora se lee del archivo `package.json` al cargar el módulo; las versiones v2.1.0 y v2.2.0 se enviaron con la cadena de identificación obsoleta `"2.0.0"`. La nueva prueba `tests/version.test.ts` verifica que `VERSION === pkg.version`.
34
+ - **Mapa `TierConfig.num_ctx` (nuevo)**: Opcional `{ instant?, workhorse?, deep?, embed? }` en el perfil. Cuando se establece para un nivel, el servidor MCP coloca `options.num_ctx = <valor>` en cada solicitud de generación/chat de Ollama dirigida a ese nivel (inicial + alternativa). Si no se establece, la solicitud omite completamente `num_ctx`, por lo que Ollama utiliza su valor predeterminado cargado con el modelo; se conserva exactamente el comportamiento de la versión v2.3.0.
35
+ - **Nuevo campo de la envolvente `num_ctx_used?: number`**: Solo está presente cuando el servidor MCP realmente envió `num_ctx`. No está presente cuando la solicitud permitió que Ollama eligiera. No se debe inferir un valor predeterminado: el servidor MCP no consulta a Ollama para obtener el valor efectivo.
36
+ - **Valores predeterminados del perfil**: `dev-rtx5080` / `dev-rtx5080-qwen3` se entregan con `instant: 4096`, `workhorse: 8192`, `deep`/`embed` SIN ESTABLECER. Se dimensionaron para mantener `hermes3:8b` en la memoria VRAM de 16 GB de la RTX 5080 para herramientas rápidas. `m5-max` deja todos los niveles SIN ESTABLECER: la memoria unificada de 128 GB no tiene problemas de desbordamiento.
37
+ - **Cierra la fase 1 de diagnóstico de la versión v0.8.0**: `hermes3:8b` con el contexto predeterminado de 32K en la RTX 5080 se volcaba a la CPU y comenzaba a provocar tiempos de espera en las llamadas `ollama_extract` de "workhorse". La versión v2.4.0 evita esto a nivel de perfil.
37
38
 
38
- ### Configuración de modelo por llamada (nueva en la versión v2.3.0)
39
+ ### Control individual de `num_ctx` (nuevo en v2.4.0)
40
+
41
+ Perfil (fragmento de `src/profiles.ts`):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ Envolvente en una llamada de nivel "workhorse" (por ejemplo, `ollama_extract`):
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ En `m5-max` (o cualquier perfil que deje un nivel sin establecer), `num_ctx_used` no está presente en la envolvente y la solicitud enviada a Ollama no incluye el campo `num_ctx`: Ollama utiliza su valor predeterminado cargado con el modelo.
74
+
75
+ Los operadores configuran ajustando o editando el perfil; no hay una entrada de `num_ctx` por llamada en los esquemas de las herramientas. Si una llamada futura revela la necesidad, el patrón sigue la sobreescritura de `model` de la versión v2.3.0.
76
+
77
+ ### Histórico — entregables de v2.1.0
78
+
79
+ Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) para la entrada completa de la versión v2.3.0 (sobreescritura de modelo por llamada).
80
+
81
+ ## Novedades en v2.2.0
82
+
83
+ Sobreescritura de modelo por llamada en herramientas basadas en LLM. Pequeña mejora adicional: los usuarios de la versión v2.2.0 no se ven afectados. Detalles en [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
84
+
85
+ - **Entrada opcional `model: string` en 8 herramientas**: `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. El primer intento en el nivel de la herramienta se ejecuta con el modelo especificado por el llamador; en caso de tiempo de espera, la cascada `TIER_FALLBACK` existente resuelve el modelo propio del nivel más económico (NO la sobreescritura del llamador). Las herramientas compuestas/resumidas/empaquetadas NO aceptan deliberadamente `model`: los átomos tienen control por llamada, las herramientas compuestas utilizan los valores predeterminados del nivel.
86
+ - **Nuevo campo de la envolvente `model_requested?: string`**: Solo está presente cuando se proporcionó la sobreescritura. Los llamadores conscientes de la calibración comparan `model_requested` con `model` para detectar la sustitución de la alternativa: `if (env.model_requested && env.model !== env.model_requested) { /* sustitución */ }`. Las entradas vacías o solo con espacios en blanco generan un error `ZodError` durante el análisis del esquema, no una omisión silenciosa.
87
+ - **Corrección de errores: deriva en `src/version.ts`**. La constante de tiempo de ejecución `VERSION` ahora se lee de `package.json` al cargar el módulo; las versiones v2.1.0 y v2.2.0 enviaron información incorrecta con la cadena de identidad "2.0.0". Se agregó una nueva prueba `tests/version.test.ts` que verifica que `VERSION === pkg.version`.
88
+
89
+ ### Sobreescritura de modelo por llamada (nuevo en v2.3.0)
39
90
 
40
91
  ```jsonc
41
92
  {
@@ -49,7 +100,7 @@ Modelo configurable por llamada para las herramientas atomizadas basadas en LLM.
49
100
  }
50
101
  ```
51
102
 
52
- Estructura:
103
+ Envolvente:
53
104
 
54
105
  ```jsonc
55
106
  {
@@ -61,11 +112,11 @@ Estructura:
61
112
  }
62
113
  ```
63
114
 
64
- Si el nivel "workhorse/deep" hubiera alcanzado el tiempo de espera y la llamada se hubiera redirigido al nivel "instant", `env.model` sería el modelo utilizado por el nivel "instant" y `env.fallback_from` sería `"workhorse"`; `env.model_requested` seguiría siendo `"hermes3:8b"`, y `env.model !== env.model_requested` indica la sustitución. La configuración *deliberadamente* no se propaga al nivel más económico; el modelo elegido podría no ser adecuado para el rol de ese nivel.
115
+ Si el servidor principal o la capa de procesamiento intensivo hubiera alcanzado su límite de tiempo y la solicitud se hubiera redirigido a la capa de respuesta rápida, `env.model` sería el modelo asignado por la capa de respuesta rápida, y `env.fallback_from` sería "workhorse" (servidor principal). `env.model_requested` seguiría siendo "hermes3:8b", y la condición `env.model !== env.model_requested` indica que se ha realizado una sustitución. Esta sustitución se realiza deliberadamente y no se aplica a la capa de menor costo, ya que el modelo elegido podría no ser adecuado para el rol de esa capa.
65
116
 
66
117
  ### Histórico — entregables de v2.1.0
67
118
 
68
- Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) para ver la entrada completa de la versión v2.2.0 (relevancia temática y abstención estructurada).
119
+ Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) para ver la entrada completa de la versión 2.2.0 (relevancia temática contextual + abstención estructurada).
69
120
 
70
121
  ## Novedades en v2.2.0
71
122
 
package/README.fr.md CHANGED
@@ -29,6 +29,57 @@ Pas de cloud. Pas de télémétrie. Rien d' "autonome". Chaque appel montre son
29
29
 
30
30
  ## Nouveau dans la version 2.2.0
31
31
 
32
+ Contrôle de `num_ctx` (fenêtre de contexte) par niveau dans le système de profil. Amélioration mineure additive — les appels inchangés en v2.3.0. Détails dans [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md).
33
+
34
+ - **Carte `TierConfig.num_ctx` (nouvelle)** — optionnel `{ instant?, workhorse?, deep?, embed? }` dans le profil. Lorsqu'elle est définie pour un niveau, le serveur MCP ajoute `options.num_ctx = <valeur>` à chaque requête de génération/chat Ollama dirigée vers ce niveau (initiale + solution de repli). Lorsqu'elle n'est pas définie, la requête omet complètement `num_ctx`, ce qui permet à Ollama d'utiliser sa valeur par défaut chargée avec le modèle — le comportement de v2.3.0 est conservé exactement.
35
+ - **Nouveau champ d'enveloppe `num_ctx_used?: number`** — présent uniquement lorsque le serveur MCP a réellement envoyé `num_ctx`. Absent lorsque la requête a permis à Ollama de choisir. Ne pas déduire de valeur par défaut — le serveur MCP ne demande pas à Ollama la valeur effective.
36
+ - **Valeurs par défaut du profil**: `dev-rtx5080` / `dev-rtx5080-qwen3` sont livrés avec `instant: 4096`, `workhorse: 8192`, `deep`/`embed` non définis. Les tailles sont choisies pour maintenir `hermes3:8b` dans la mémoire VRAM de 16 Go de la RTX 5080, ce qui permet d'utiliser rapidement des outils. `m5-max` laisse tous les niveaux non définis — la mémoire unifiée de 128 Go n'a aucun problème de débordement.
37
+ - **Résout le diagnostic de la phase 1 de v0.8.0** — `hermes3:8b` avec le contexte par défaut de 32 Ko sur la RTX 5080 débordait vers le CPU et commençait à provoquer des délais d'attente pour les appels `ollama_extract` du type "workhorse". La version 2.4.0 empêche cela au niveau du profil.
38
+
39
+ ### Contrôle de `num_ctx` par niveau (nouveau dans v2.4.0)
40
+
41
+ Profil (extrait de `src/profiles.ts`) :
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ Enveloppe pour un appel de niveau "workhorse" (par exemple, `ollama_extract`) :
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ Sur `m5-max` (ou tout profil qui laisse un niveau non défini), `num_ctx_used` est absent de l'enveloppe et la requête envoyée à Ollama ne comprend pas le champ `num_ctx` — Ollama utilise sa valeur par défaut chargée avec le modèle.
74
+
75
+ Les opérateurs configurent les paramètres en sélectionnant/modifiant le profil ; il n'y a pas de saisie `num_ctx` par appel dans les schémas des outils. Si un appel futur révèle un besoin, le modèle suit le mécanisme de remplacement du modèle de v2.3.0.
76
+
77
+ ### Historique — livrables de la version 2.1.0
78
+
79
+ Consultez [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) pour l'intégralité de l'entrée v2.3.0 (remplacement du modèle par appel).
80
+
81
+ ## Nouveau dans la version 2.2.0
82
+
32
83
  Modification du modèle par appel pour les outils atomiques basés sur les LLM. Amélioration mineure additive — les appelants de la version v2.2.0 restent inchangés. Détails dans [CHANGELOG.md](./CHANGELOG.md) et [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
33
84
 
34
85
  - **Entrée optionnelle `model: string` pour 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 sur le niveau de l'outil utilise le modèle spécifié par l'appelant ; en cas de dépassement de délai, la cascade `TIER_FALLBACK` existante utilise le modèle du niveau le moins coûteux (et non le modèle spécifié par l'appelant). Les outils composites/résumés/groupés n'acceptent *délibérément* pas l'argument `model` ; les atomes permettent un contrôle par appel, tandis que les composites utilisent les paramètres par défaut du niveau.
package/README.hi.md CHANGED
@@ -29,6 +29,57 @@
29
29
 
30
30
  ## v2.2.0 में नया
31
31
 
32
+ प्रत्येक स्तर के लिए `num_ctx` (संदर्भ विंडो) नियंत्रण, प्रोफाइल सिस्टम में। मामूली सुधार, v2.3.0 में बदलाव नहीं। विस्तृत जानकारी [CHANGELOG.md](./CHANGELOG.md) और [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md) में उपलब्ध है।
33
+
34
+ - **`TierConfig.num_ctx` मैप (नया)** — प्रोफाइल पर वैकल्पिक `{ instant?, workhorse?, deep?, embed? }` विकल्प। जब किसी स्तर के लिए यह सेट किया जाता है, तो MCP सर्वर प्रत्येक Ollama जनरेट/चैट अनुरोध पर `options.num_ctx = <value>` सेट करता है, जो उस स्तर पर रूट किया जाता है (प्रारंभिक + बैकअप)। यदि यह सेट नहीं है, तो अनुरोध में `num_ctx` पूरी तरह से छोड़ दिया जाता है, इसलिए Ollama अपने मॉडल-लोड किए गए डिफ़ॉल्ट का उपयोग करता है — v2.3.0 का व्यवहार बिल्कुल वैसा ही है।
35
+ - **नया फ़ील्ड `num_ctx_used?: number`** — यह केवल तभी मौजूद होता है जब MCP सर्वर वास्तव में `num_ctx` भेजता है। यदि अनुरोध में Ollama को `num_ctx` चुनने दिया जाता है, तो यह अनुपस्थित होता है। डिफ़ॉल्ट मान का अनुमान न लगाएं — MCP सर्वर प्रभावी मान के लिए Ollama से पूछताछ नहीं करता है।
36
+ - **प्रोफाइल डिफ़ॉल्ट:** `dev-rtx5080` / `dev-rtx5080-qwen3` में `instant: 4096`, `workhorse: 8192`, `deep`/`embed` अनसेट हैं। इन्हें इस तरह से डिज़ाइन किया गया है कि `hermes3:8b` को RTX 5080 की 16GB VRAM मेमोरी में रखा जा सके, ताकि तेज़ टूल का उपयोग किया जा सके। `m5-max` में सभी स्तर अनसेट हैं — 128GB की एकीकृत मेमोरी में कोई मेमोरी ओवरफ्लो समस्या नहीं होती है।
37
+ - **v0.8.0 के चरण 1 का निदान समाप्त** — `hermes3:8b` को RTX 5080 पर डिफ़ॉल्ट 32K संदर्भ पर चलाने पर, यह CPU पर चला जाता था और `ollama_extract` कॉल में समय समाप्त होने लगता था। v2.4.0 इस समस्या को प्रोफाइल स्तर पर रोकता है।
38
+
39
+ ### प्रत्येक स्तर के लिए `num_ctx` नियंत्रण (v2.4.0 में नया)।
40
+
41
+ प्रोफाइल ( `src/profiles.ts` से अंश):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ वर्कहॉर्स-स्तर कॉल के लिए एनवेलप (उदाहरण के लिए, `ollama_extract`):
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ `m5-max` (या किसी भी प्रोफाइल में जहां कोई स्तर अनसेट है) पर, `num_ctx_used` एनवेलप में अनुपस्थित होता है और Ollama को भेजे गए अनुरोध में `num_ctx` फ़ील्ड शामिल नहीं होता है — Ollama अपने मॉडल-लोड किए गए डिफ़ॉल्ट का उपयोग करता है।
74
+
75
+ ऑपरेटर प्रोफाइल का चयन/संपादित करके ट्यूनिंग करते हैं; टूल स्कीमा में प्रति-कॉल `num_ctx` इनपुट नहीं होता है। यदि भविष्य में किसी कॉल में इसकी आवश्यकता होती है, तो यह v2.3.0 के `model` ओवरराइड पैटर्न का अनुसरण करेगा।
76
+
77
+ ### ऐतिहासिक - v2.1.0 डिलीवरी
78
+
79
+ v2.3.0 के पूर्ण विवरण (प्रति-कॉल मॉडल ओवरराइड) के लिए, [CHANGELOG.md](./CHANGELOG.md) और [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) देखें।
80
+
81
+ ## v2.2.0 में नया
82
+
32
83
  प्रत्येक कॉल के लिए मॉडल को बदलने की सुविधा, जो LLM-आधारित एटम टूल में उपलब्ध है। मामूली बदलाव किए गए हैं, v2.2.0 में कॉल करने वालों में कोई बदलाव नहीं हुआ। विस्तृत जानकारी [CHANGELOG.md](./CHANGELOG.md) और [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) में उपलब्ध है।
33
84
 
34
85
  - **8 एटम टूल में वैकल्पिक `model: string` इनपुट:** `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. टूल के पहले प्रयास में, कॉल करने वाले द्वारा निर्दिष्ट मॉडल का उपयोग किया जाता है; यदि समय समाप्त हो जाता है, तो मौजूदा `TIER_FALLBACK` प्रणाली, कम खर्चीले स्तर के अपने मॉडल का उपयोग करती है (कॉल करने वाले द्वारा किए गए बदलाव का नहीं)। कंपोजिट/संक्षिप्त/पैकेज टूल जानबूझकर `model` को स्वीकार नहीं करते हैं - एटम में प्रति-कॉल नियंत्रण होता है, जबकि कंपोजिट डिफ़ॉल्ट स्तर का उपयोग करते हैं।
package/README.it.md CHANGED
@@ -29,11 +29,62 @@ Nessun cloud. Nessuna telemetria. Niente di "autonomo". Ogni chiamata mostra il
29
29
 
30
30
  ## Novità nella versione 2.2.0
31
31
 
32
- Override del modello a livello di chiamata per gli strumenti atomici basati su LLM. Modifiche minori additive — i chiamanti di v2.2.0 rimangono invariati. Dettagli nelle sezioni [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
32
+ Controllo di `num_ctx` a livello di tier (nuovo in v2.4.0).
33
33
 
34
- - **Input opzionale `model: string` per 8 strumenti atomici** `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. Il primo tentativo di esecuzione dello strumento utilizza il modello specificato dal chiamante; in caso di timeout, la cascata `TIER_FALLBACK` esistente risolve il modello del livello più economico (NON l'override specificato dal chiamante). Gli strumenti compositi/sintetici/pacchetti NON accettano deliberatamente il parametro `model` gli atomi hanno il controllo a livello di chiamata, mentre i compositi utilizzano le impostazioni predefinite del livello.
35
- - **Nuovo campo dell'inviluppo `model_requested?: string`** presente solo quando è stato fornito un override. I chiamanti che tengono conto della calibrazione confrontano `model_requested` con `model` per rilevare la sostituzione: `if (env.model_requested && env.model !== env.model_requested) { /* sostituzione */ }`. Gli input vuoti o contenenti solo spazi generano un errore `ZodError` durante l'analisi dello schema, anziché una sostituzione silenziosa.
36
- - **Correzione di bug deriva in `src/version.ts`.** La costante `VERSION` a runtime viene ora letta da `package.json` al caricamento del modulo; le versioni v2.1.0 e v2.2.0 sono state distribuite con la stringa di identificazione obsoleta `"2.0.0"`. Il nuovo file `tests/version.test.ts` verifica che `VERSION === pkg.version`.
34
+ - **`TierConfig.num_ctx` map (nuovo)**: un campo opzionale `{ instant?, workhorse?, deep?, embed? }` nel profilo. Quando impostato per un tier, il server MCP inserisce `options.num_ctx = <valore>` in ogni richiesta di generazione/chat di Ollama indirizzata a quel tier (iniziale + fallback). Se non impostato, la richiesta omette completamente `num_ctx`, quindi Ollama utilizza il valore predefinito del modello caricato; questo comportamento è esattamente quello della versione v2.3.0.
35
+ - **Nuovo campo dell'inviluppo `num_ctx_used?: number`**: presente solo quando il server MCP ha effettivamente inviato `num_ctx`. Assente quando la richiesta ha permesso a Ollama di scegliere. Non si deve dedurre un valore predefinito: il server MCP non interroga Ollama per ottenere il valore effettivo.
36
+ - **Valori predefiniti del profilo**: i profili `dev-rtx5080` e `dev-rtx5080-qwen3` hanno `instant: 4096`, `workhorse: 8192`, `deep`/`embed` non impostati. Le dimensioni sono state scelte per mantenere `hermes3:8b` nella memoria VRAM da 16 GB della RTX 5080, per un funzionamento più rapido. Per `m5-max`, tutti i tier non sono impostati: la memoria unificata da 128 GB non presenta problemi di overflow.
37
+ - **Risolve la diagnostica di Fase 1 della versione v0.8.0**: in `hermes3:8b` con il contesto predefinito di 32K sulla RTX 5080, i dati venivano trasferiti alla CPU e le chiamate `ollama_extract` del tier `workhorse` iniziavano a scadere. La versione v2.4.0 previene questo problema a livello di profilo.
38
+
39
+ ### Controllo di `num_ctx` a livello di tier (nuovo in v2.4.0)
40
+
41
+ Profilo (estratto da `src/profiles.ts`):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ Invio dati (envelope) per una chiamata al tier `workhorse` (ad esempio, `ollama_extract`):
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ Su `m5-max` (o qualsiasi profilo in cui un tier non è impostato), `num_ctx_used` è assente dall'inviluppo e la richiesta inviata a Ollama non include il campo `num_ctx`; Ollama utilizza il valore predefinito del modello caricato.
74
+
75
+ Gli operatori configurano selezionando o modificando il profilo; non esiste un input `num_ctx` a livello di chiamata negli schemi degli strumenti. Se una chiamata futura dovesse richiedere questa funzionalità, il comportamento seguirà l'override del `model` della versione v2.3.0.
76
+
77
+ ### Storico — funzionalità della versione 2.1.0
78
+
79
+ Consultare [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) per l'elenco completo delle modifiche della versione v2.3.0 (override del modello a livello di chiamata).
80
+
81
+ ## Novità nella versione 2.2.0
82
+
83
+ Override del modello a livello di chiamata (nuovo in v2.2.0). Modifiche minori — le chiamate della versione v2.2.0 non sono state modificate. Elenco dettagliato delle modifiche in [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
84
+
85
+ - **Input opzionale `model: string` per 8 strumenti atomici**: `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. Il primo tentativo sul tier dello strumento viene eseguito utilizzando il modello specificato dal chiamante; in caso di timeout, la cascata `TIER_FALLBACK` esistente risolve il modello del tier più economico (NON l'override del chiamante). Gli strumenti compositi/sintetici/raggruppati NON accettano deliberatamente il parametro `model`; gli strumenti atomici hanno il controllo a livello di chiamata, mentre gli strumenti compositi utilizzano i valori predefiniti del tier.
86
+ - **Nuovo campo dell'inviluppo `model_requested?: string`**: presente solo quando è stato fornito un override. I chiamanti consapevoli della calibrazione confrontano `model_requested` con `model` per rilevare la sostituzione tramite fallback: `if (env.model_requested && env.model !== env.model_requested) { /* sostituzione */ }`. Gli input vuoti o contenenti solo spazi generano un errore `ZodError` durante l'analisi dello schema, anziché un comportamento silenzioso.
87
+ - **Correzione di bug — deriva di `src/version.ts`**. La costante runtime `VERSION` viene ora letta dal file `package.json` al caricamento del modulo; le versioni v2.1.0 e v2.2.0 riportavano erroneamente la stringa di identificazione obsoleta `"2.0.0"`. Il nuovo file `tests/version.test.ts` verifica che `VERSION === pkg.version`.
37
88
 
38
89
  ### Override del modello a livello di chiamata (nuovo in v2.3.0)
39
90
 
@@ -49,7 +100,7 @@ Override del modello a livello di chiamata per gli strumenti atomici basati su L
49
100
  }
50
101
  ```
51
102
 
52
- Invio:
103
+ Invio dati (envelope):
53
104
 
54
105
  ```jsonc
55
106
  {
@@ -61,11 +112,11 @@ Invio:
61
112
  }
62
113
  ```
63
114
 
64
- Se il livello "workhorse/deep" avesse superato il tempo limite e la chiamata fosse passata al livello "instant", `env.model` sarebbe il modello risolto dal livello "instant" e `env.fallback_from` sarebbe `"workhorse"` `env.model_requested` sarebbe ancora `"hermes3:8b"`, e `env.model !== env.model_requested` indica la sostituzione. L'override NON viene deliberatamente propagato al livello più economico; il modello scelto potrebbe non essere adatto al ruolo di quel livello.
115
+ Se il livello principale/di base avesse raggiunto il timeout e la richiesta fosse stata reindirizzata al livello istantaneo, `env.model` conterrebbe il modello risolto dal livello istantaneo e `env.fallback_from` sarebbe impostato su `"workhorse"`; `env.model_requested` rimarrebbe comunque `"hermes3:8b"`, e la condizione `env.model !== env.model_requested` indica che è avvenuta una sostituzione. L'override non viene applicato intenzionalmente al livello più economico; il modello scelto potrebbe non essere adatto al ruolo di quel livello.
65
116
 
66
117
  ### Storico — funzionalità della versione 2.1.0
67
118
 
68
- Consultare [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) per l'elenco completo delle modifiche di v2.2.0 (pertinenza contestuale + astensione strutturata).
119
+ Consultare [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) per la versione completa delle note di rilascio della versione 2.2.0 (pertinenza contestuale e astensione strutturata).
69
120
 
70
121
  ## Novità nella versione 2.2.0
71
122
 
package/README.ja.md CHANGED
@@ -29,13 +29,64 @@ Claude Codeに、ルール、階層、デスク、そして書類整理棚を備
29
29
 
30
30
  ## v2.2.0で追加
31
31
 
32
- LLMを活用したツールにおいて、1回の呼び出しごとにモデルを指定できる機能を追加しました。マイナーバージョンアップであり、v2.2.0からの変更点は最小限です。詳細については、[CHANGELOG.md](./CHANGELOG.md) および [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) をご確認ください。
32
+ プロファイルシステムにおいて、各ティアごとに`num_ctx`(コンテキストウィンドウ)を制御できるようになりました。マイナーアップデートであり、既存の呼び出し元への影響はありません。詳細については、[CHANGELOG.md](./CHANGELOG.md) および [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md) を参照してください。
33
33
 
34
- - **8つのツールで、オプションの `model: string` 入力パラメータを追加**:`ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`。ツールの初回実行時に、呼び出し元で指定されたモデルが使用されます。タイムアウトが発生した場合、既存の `TIER_FALLBACK` メカニズムによって、より低コストなティアのデフォルトモデルが選択されます(呼び出し元で指定されたモデルのオーバーライドは適用されません)。複合ツールや簡易ツールは、意図的に `model` パラメータを受け付けません。アトムツールは1回の呼び出しごとにモデルを制御できますが、複合ツールはティアのデフォルト設定を使用します。
35
- - **新しいフィールド `model_requested?: string` を追加**:オーバーライドが指定された場合にのみ表示されます。呼び出し元は、`model_requested` と `model` を比較することで、フォールバックが発生したかどうかを検出できます。`if (env.model_requested && env.model !== env.model_requested) { /* 置換が発生 */ }`。空の値または空白のみの値が入力された場合、スキーマの解析時に `ZodError` が発生し、黙ってデフォルト値に置き換えられることはありません。
36
- - **バグ修正:`src/version.ts` の値のずれ**。ランタイムの `VERSION` 定数は、モジュール読み込み時に `package.json` から読み込まれるようになりました。v2.1.0 および v2.2.0 では、古い `"2.0.0"` という文字列が誤ってレポートされていました。新しい `tests/version.test.ts` ファイルで、`VERSION === pkg.version` が検証されるようになりました。
34
+ - **`TierConfig.num_ctx` マップ (新規)** プロファイルにおけるオプションの `{ instant?, workhorse?, deep?, embed? }`。特定のティアに設定すると、MCPサーバーは、そのティアにルーティングされるすべてのOllamaのgenerate/chatリクエストに対して、`options.num_ctx = <value>` を設定します(初期設定とフォールバック)。設定されていない場合、リクエストから`num_ctx`が完全に省略され、Ollamaはモデルにロードされているデフォルト値を使用します。v2.3.0の動作はそのまま維持されます。
35
+ - **新しいエンベロープフィールド `num_ctx_used?: number`** MCPサーバーが実際に`num_ctx`を送信した場合にのみ存在します。リクエストでOllamaに`num_ctx`の選択を許可した場合、このフィールドは存在しません。デフォルト値を推測しないでください。MCPサーバーは、Ollamaに対して有効な値を問い合わせません。
36
+ - **プロファイルデフォルト値**: `dev-rtx5080` / `dev-rtx5080-qwen3`では、`instant: 4096`, `workhorse: 8192`, `deep`/`embed` は未設定です。`hermes3:8b`をRTX 5080の16GBのVRAM内に常駐させ、高速なツールを実現するためにサイズが調整されています。`m5-max`では、すべてのティアが未設定です。128GBの統合メモリでは、メモリ不足の問題が発生しません。
37
+ - **v0.8.0 Phase 1 の診断を解消** — デフォルトの32Kコンテキストで`hermes3:8b`がRTX 5080でCPUにオーバーフローし、`ollama_extract`のワークホース呼び出しがタイムアウトする問題を、v2.4.0ではプロファイルレイヤーで解消しました。
37
38
 
38
- ### v2.3.0で新しく追加された、1回の呼び出しごとのモデルのオーバーライド機能
39
+ ### 各ティアごとの`num_ctx`制御(v2.4.0で新規追加)
40
+
41
+ プロファイル(`src/profiles.ts`からの抜粋):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ ワークホースティアの呼び出しにおけるエンベロープ:
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ `m5-max`(またはティアが未設定のプロファイル)の場合、エンベロープには`num_ctx_used`が含まれておらず、Ollamaへのワイヤリクエストには`num_ctx`フィールドが含まれていません。Ollamaは、モデルにロードされているデフォルト値を使用します。
74
+
75
+ オペレーターは、プロファイルを選択または編集することで調整を行います。ツールスキーマに、呼び出しごとの`num_ctx`の入力はありません。将来、その必要性が生じた場合は、v2.3.0の`model`のオーバーライドと同様のパターンが採用されます。
76
+
77
+ ### 過去のバージョン - v2.1.0の機能
78
+
79
+ v2.3.0の詳細については、[CHANGELOG.md](./CHANGELOG.md) および [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) を参照してください(呼び出しごとのモデルオーバーライド)。
80
+
81
+ ## v2.2.0で追加
82
+
83
+ LLMベースのAtomツールにおける呼び出しごとのモデルオーバーライド。マイナーアップデートであり、既存の呼び出し元への影響はありません。詳細については、[CHANGELOG.md](./CHANGELOG.md) および [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) を参照してください。
84
+
85
+ - **8つのAtomツールにおけるオプションの `model: string` 入力** — `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. ツールティアで最初に試行される処理は、呼び出し元が指定したモデルを使用して実行されます。タイムアウトした場合、既存の`TIER_FALLBACK`メカニズムによって、より安価なティアのモデルが使用されます(呼び出し元のオーバーライドではありません)。複合ツール/概要ツール/パックツールは、意図的に`model`を受け付けません。Atomツールは呼び出しごとに制御でき、複合ツールはティアのデフォルトを使用します。
86
+ - **新しいエンベロープフィールド `model_requested?: string`** — オーバーライドが提供された場合にのみ存在します。キャリブレーション対応の呼び出し元は、`model_requested`と`model`を比較して、フォールバックによる置換を検出します。`if (env.model_requested && env.model !== env.model_requested) { /* substitution */ }`。空または空白のみの入力は、スキーマの解析時に`ZodError`が発生し、サイレントなフォールスルーは発生しません。
87
+ - **バグ修正 — `src/version.ts` のずれ**。ランタイムの`VERSION`定数は、モジュールロード時に`package.json`から読み込まれるようになりました。v2.1.0およびv2.2.0では、古い`"2.0.0"`という文字列が報告されていました。新しい`tests/version.test.ts`では、`VERSION === pkg.version`が検証されます。
88
+
89
+ ### 呼び出しごとのモデルオーバーライド(v2.3.0で新規追加)
39
90
 
40
91
  ```jsonc
41
92
  {
@@ -49,7 +100,7 @@ LLMを活用したツールにおいて、1回の呼び出しごとにモデル
49
100
  }
50
101
  ```
51
102
 
52
- Envelope:
103
+ エンベロープ:
53
104
 
54
105
  ```jsonc
55
106
  {
@@ -61,11 +112,11 @@ Envelope:
61
112
  }
62
113
  ```
63
114
 
64
- もし、高性能/詳細なティアでタイムアウトが発生し、呼び出しがより高速なティアにフォールバックした場合、`env.model` は高速ティアで解決されたモデルとなり、`env.fallback_from` は `"workhorse"` となります。`env.model_requested` は依然として `"hermes3:8b"` のままとなり、`env.model !== env.model_requested` がフォールバックが発生したことを示すシグナルとなります。オーバーライドは、意図的に低コストなティアには引き継がれません。選択されたモデルが、そのティアの役割に適合しない場合もあります。
115
+ もし、メインのサーバーまたは上位層でタイムアウトが発生し、リクエストが即時対応サーバーに転送された場合、`env.model` は即時対応サーバーで解決されたモデルとなり、`env.fallback_from` は `"workhorse"` となります。`env.model_requested` は依然として `"hermes3:8b"` であり、`env.model !== env.model_requested` が置換の合図となります。このオーバーライドは、意図的に低コストのサーバーには適用されません。選択されたモデルが、そのサーバーの役割に全く合わない可能性があるためです。
65
116
 
66
117
  ### 過去のバージョン - v2.1.0の機能
67
118
 
68
- v2.2.0 の詳細については、[CHANGELOG.md](./CHANGELOG.md) および [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) をご確認ください(フレームに依存しないトピックと、構造化された拒否)。
119
+ 詳細については、[CHANGELOG.md](./CHANGELOG.md) および [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) を参照してください(フレームに依存しないトピック性 + 構造化された拒否)。
69
120
 
70
121
  ## v2.2.0で追加
71
122
 
package/README.md CHANGED
@@ -27,6 +27,57 @@ No cloud. No telemetry. No "autonomous" anything. Every call shows its work.
27
27
 
28
28
  ---
29
29
 
30
+ ## New in v2.4.0
31
+
32
+ Per-tier `num_ctx` (context window) control on the profile system. Additive minor — v2.3.0 callers unchanged. Detailed entries in [CHANGELOG.md](./CHANGELOG.md) and [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md).
33
+
34
+ - **`TierConfig.num_ctx` map (new)** — optional `{ instant?, workhorse?, deep?, embed? }` on the profile. When set for a tier, the MCP server places `options.num_ctx = <value>` on every Ollama generate/chat request routed to that tier (initial + fallback). When unset, the request omits `num_ctx` entirely so Ollama uses its model-loaded default — v2.3.0 behavior preserved exactly.
35
+ - **New envelope field `num_ctx_used?: number`** — present only when the MCP server actually sent `num_ctx`. Absent when the request let Ollama choose. Do not infer a default — the MCP server does not query Ollama for the effective value.
36
+ - **Profile defaults**: `dev-rtx5080` / `dev-rtx5080-qwen3` ship with `instant: 4096`, `workhorse: 8192`, `deep`/`embed` UNSET. Sized to keep `hermes3:8b` resident in the RTX 5080's 16GB VRAM budget for fast tools. `m5-max` leaves every tier UNSET — 128GB unified memory has no spill problem.
37
+ - **Closes the v0.8.0 Phase 1 diagnostic** — `hermes3:8b` at the default 32K context on RTX 5080 spilled to CPU and started timing out workhorse `ollama_extract` calls. v2.4.0 prevents that at the profile layer.
38
+
39
+ ### Per-tier `num_ctx` control (new in v2.4.0)
40
+
41
+ Profile (excerpt from `src/profiles.ts`):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ Envelope on a workhorse-tier call (e.g. `ollama_extract`):
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ On `m5-max` (or any profile that leaves a tier unset), `num_ctx_used` is absent from the envelope and the wire request to Ollama does not include the `num_ctx` field — Ollama uses its model-loaded default.
74
+
75
+ Operators tune by selecting / editing the profile; there is no per-call `num_ctx` input on tool schemas. If a future call surfaces the need, the pattern follows v2.3.0's `model` override.
76
+
77
+ ### Historical — v2.3.0 deliverables
78
+
79
+ See [CHANGELOG.md](./CHANGELOG.md) and [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) for the full v2.3.0 entry (per-call model override).
80
+
30
81
  ## New in v2.3.0
31
82
 
32
83
  Per-call model override across LLM-backed atom tools. Additive minor — v2.2.0 callers unchanged. Detailed entries in [CHANGELOG.md](./CHANGELOG.md) and [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
package/README.pt-BR.md CHANGED
@@ -29,6 +29,57 @@ Sem nuvem. Sem telemetria. Sem nada "autônomo". Cada chamada mostra seu trabalh
29
29
 
30
30
  ## Novo no v2.2.0
31
31
 
32
+ Controle individualizado de `num_ctx` (janela de contexto) para cada nível no sistema de perfis. Pequena alteração cumulativa — as chamadas não foram modificadas na versão 2.3.0. Detalhes nas seções [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md).
33
+
34
+ - **Mapa `TierConfig.num_ctx` (novo)** — opcional `{ instant?, workhorse?, deep?, embed? }` no perfil. Quando definido para um nível, o servidor MCP inclui `options.num_ctx = <valor>` em cada solicitação de geração/chat do Ollama direcionada a esse nível (inicial + fallback). Quando não definido, a solicitação omite completamente o campo `num_ctx`, permitindo que o Ollama use o valor padrão carregado no modelo — o comportamento da versão 2.3.0 é preservado exatamente.
35
+ - **Novo campo do envelope `num_ctx_used?: number`** — presente apenas quando o servidor MCP realmente enviou `num_ctx`. Ausente quando a solicitação permitiu que o Ollama escolhesse. Não tente inferir um valor padrão — o servidor MCP não consulta o Ollama para obter o valor efetivo.
36
+ - **Valores padrão do perfil**: Os perfis `dev-rtx5080` / `dev-rtx5080-qwen3` são enviados com `instant: 4096`, `workhorse: 8192`, `deep`/`embed` NÃO DEFINIDOS. O tamanho foi ajustado para manter o `hermes3:8b` na memória VRAM de 16GB da RTX 5080, permitindo ferramentas rápidas. O `m5-max` deixa todos os níveis NÃO DEFINIDOS — a memória unificada de 128GB não apresenta problemas de estouro.
37
+ - **Corrige o diagnóstico da Fase 1 da versão 0.8.0** — o `hermes3:8b` com o contexto padrão de 32K na RTX 5080 estava sendo transferido para a CPU e causando timeouts nas chamadas `ollama_extract` do tipo `workhorse`. A versão 2.4.0 evita isso na camada de perfil.
38
+
39
+ ### Controle individualizado de `num_ctx` (novo na versão 2.4.0)
40
+
41
+ Perfil (trecho de `src/profiles.ts`):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ Envelope em uma chamada de nível `workhorse` (por exemplo, `ollama_extract`):
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ Em `m5-max` (ou qualquer perfil que deixe um nível não definido), `num_ctx_used` está ausente do envelope e a solicitação enviada ao Ollama não inclui o campo `num_ctx` — o Ollama usa o valor padrão carregado no modelo.
74
+
75
+ Os operadores ajustam as configurações selecionando/editando o perfil; não há entrada de `num_ctx` por chamada nos esquemas das ferramentas. Se uma chamada futura revelar a necessidade, o padrão seguirá a sobreposição de `model` da versão 2.3.0.
76
+
77
+ ### Histórico — entregas da v2.1.0
78
+
79
+ Consulte [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) para a entrada completa da versão 2.3.0 (sobreposição de modelo por chamada).
80
+
81
+ ## Novo no v2.2.0
82
+
32
83
  Substituição de modelo por chamada em todas as ferramentas "atom" que utilizam LLMs. Pequena alteração cumulativa — os chamadores da versão v2.2.0 permanecem inalterados. Detalhes nas seções [CHANGELOG.md](./CHANGELOG.md) e [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
33
84
 
34
85
  - **Entrada opcional `model: string` em 8 ferramentas "atom"** — `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. A primeira tentativa na camada da ferramenta utiliza o modelo especificado pelo chamador; em caso de timeout, a cascata existente `TIER_FALLBACK` resolve o modelo da própria camada mais econômica (e não a substituição do chamador). As ferramentas compostas/resumidas/de pacote *deliberadamente* não aceitam o parâmetro `model` — as ferramentas "atom" têm controle por chamada, enquanto as ferramentas compostas usam as configurações padrão da camada.
package/README.zh.md CHANGED
@@ -29,6 +29,57 @@
29
29
 
30
30
  ## 新功能,版本 2.3.0
31
31
 
32
+ 在配置文件系统中,可以对每个层级进行 `num_ctx`(上下文窗口)的控制。这是一个小幅的增量更新,v2.3.0 的调用者未发生变化。详细信息请参见 [CHANGELOG.md](./CHANGELOG.md) 和 [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md)。
33
+
34
+ - **`TierConfig.num_ctx` 映射 (新)** — 配置文件中的可选参数,包括 `{ instant?, workhorse?, deep?, embed? }`。如果为某个层级设置了该参数,MCP 服务器将在发送到该层级的每个 Ollama 生成/聊天请求中,添加 `options.num_ctx = <value>`。如果未设置,则请求将完全省略 `num_ctx` 字段,Ollama 将使用其模型加载时的默认值。这与 v2.3.0 的行为完全一致。
35
+ - **新的数据包字段 `num_ctx_used?: number`** — 仅在 MCP 服务器实际发送了 `num_ctx` 时才存在。如果请求允许 Ollama 选择,则该字段不存在。不要尝试推断默认值,因为 MCP 服务器不会向 Ollama 查询实际值。
36
+ - **配置文件默认值**: `dev-rtx5080` / `dev-rtx5080-qwen3` 配置文件中,`instant` 设置为 4096,`workhorse` 设置为 8192,`deep`/`embed` 未设置。这些设置是为了确保 `hermes3:8b` 模型能够完全加载到 RTX 5080 的 16GB 显存中,以提高工具的运行速度。`m5-max` 配置中,所有层级都未设置,因为 128GB 的统一内存不会出现内存溢出问题。
37
+ - **解决了 v0.8.0 阶段 1 的诊断问题** — 在 RTX 5080 上,使用默认的 32K 上下文时,`hermes3:8b` 模型的数据会溢出到 CPU,导致 `ollama_extract` 调用超时。v2.4.0 在配置文件层解决了这个问题。
38
+
39
+ ### 每个层级的 `num_ctx` 控制(v2.4.0 的新功能)
40
+
41
+ 配置文件(摘自 `src/profiles.ts`):
42
+
43
+ ```ts
44
+ "dev-rtx5080": {
45
+ tiers: {
46
+ instant: "hermes3:8b",
47
+ workhorse: "hermes3:8b",
48
+ deep: "hermes3:8b",
49
+ embed: "nomic-embed-text",
50
+ num_ctx: {
51
+ instant: 4096, // fast classify/summarize
52
+ workhorse: 8192, // schema-bound extract / batch
53
+ // deep: UNSET — long-context briefs keep current behavior
54
+ // embed: UNSET — no context-window pressure on embed
55
+ },
56
+ },
57
+ // ... timeouts, prewarm
58
+ }
59
+ ```
60
+
61
+ 在 `workhorse` 层级的调用中的数据包(例如 `ollama_extract`):
62
+
63
+ ```jsonc
64
+ {
65
+ "result": { /* extracted data */ },
66
+ "tier_used": "workhorse",
67
+ "model": "hermes3:8b",
68
+ "num_ctx_used": 8192, // present because the profile set workhorse=8192
69
+ // ... rest of envelope unchanged
70
+ }
71
+ ```
72
+
73
+ 在 `m5-max`(或任何未设置层级的配置文件)中,`num_ctx_used` 不会出现在数据包中,并且发送到 Ollama 的请求中不包含 `num_ctx` 字段。Ollama 将使用其模型加载时的默认值。
74
+
75
+ 操作员可以通过选择/编辑配置文件来调整参数。工具模式中没有针对每个调用的 `num_ctx` 输入。如果未来出现需要该功能的情况,可以遵循 v2.3.0 中 `model` 的覆盖方式。
76
+
77
+ ### 历史 — v2.2.0 的功能
78
+
79
+ 请参见 [CHANGELOG.md](./CHANGELOG.md) 和 [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md),以获取完整的 v2.3.0 版本信息(关于每个调用的模型覆盖)。
80
+
81
+ ## 新功能,版本 2.3.0
82
+
32
83
  在基于 LLM 的原子工具中,实现了每个调用的模型覆盖。这是一个小版本更新,不会影响 v2.2.0 的调用者。详细信息请参阅 [CHANGELOG.md](./CHANGELOG.md) 和 [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md)。
33
84
 
34
85
  - **8 个原子工具的 `model: string` 可选输入** — `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`。 首次尝试使用工具的层级时,会使用调用者指定的模型;如果超时,则现有的 `TIER_FALLBACK` 机制会解析更低层级的模型(而不是调用者的覆盖)。 组合/简报/打包工具故意不接受 `model` 参数 — 原子工具可以进行每个调用的控制,而组合工具使用默认层级。