blun-king-cli 9.1.126 → 9.1.128
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/LIESMICH.txt +4 -0
- package/README.md +4 -0
- package/bin/turn-tool-performance-policy.cjs +24 -4
- package/package.json +1 -1
package/LIESMICH.txt
CHANGED
|
@@ -113,6 +113,10 @@ Version 9.1.106 erlaubt Agentenprofilen, Werkzeuge namentlich auszuschließen. K
|
|
|
113
113
|
|
|
114
114
|
Version 9.1.109 hält nur noch die neun Werkzeuge dauerhaft in der Modellanfrage, auf die mehr als 98 Prozent von Fredriks 3.183 gemessenen Werkzeugaufrufen entfielen. Alle übrigen Werkzeuge bleiben über `ToolSearch` auffindbar und nach dem ersten Laden für den Rest der Sitzung verfügbar. Dadurch sinkt die Schemalast bei jedem normalen Modellschritt, ohne ein Werkzeug zu entfernen oder den Schnellweg für Telegram-Antworten und ausstehende Medienergebnisse zu verändern.
|
|
115
115
|
|
|
116
|
+
Version 9.1.127 verkürzt zusätzlich den wiederholten `ToolSearch`-Katalog. Eindeutige zurückgestellte Werkzeuge erscheinen dort nur noch mit ihrem kurzen Selektor; nur bei gleichnamigen Werkzeugen bleibt der vollständige Name stehen. Suche, exakte Auswahl, Telegram-Anhänge und bereits geladene Werkzeuge funktionieren unverändert. Dadurch kennt King weiterhin alle verfügbaren Werkzeuge, sendet aber die langen MCP-Namensräume nicht mehr bei jedem Modellschritt erneut.
|
|
117
|
+
|
|
118
|
+
Version 9.1.128 begrenzt außerdem den dauerhaften Cache nachgeladener Werkzeug-Schemas auf die zwölf zuletzt ausgewählten Werkzeuge. Ein erneut ausgewähltes Werkzeug rückt ans Ende und bleibt erhalten; nur die ältesten, lange nicht verwendeten Schemas fallen aus der nächsten Modellanfrage und sind weiterhin sofort über `ToolSearch` auffindbar. Werkzeuge des laufenden Schritts bleiben vollständig verfügbar. Dadurch kann die Schemalast auch in sehr langen Sitzungen nicht ungebremst anwachsen.
|
|
119
|
+
|
|
116
120
|
Ab BLUN King 9.1.118 bleibt der Sitzungszeitstempel im Systemprompt während einer laufenden Sitzung unverändert. Das erneute Einlesen von Verzeichnisübersicht, AGENTS.md-Dateien, Zusatzverzeichnissen und Skillinformationen kann den Prompt weiterhin ändern, wenn sich die jeweiligen Quellen tatsächlich verändert haben. Bleiben diese Quellen gleich, entwertet die Aktualisierung nach einer Verdichtung den Präfix-Cache des Anbieters nicht mehr allein durch einen neuen Zeitstempel. In Fredriks gemessener Sitzung unterschieden sich die beiden letzten Systemprompts mit jeweils 68.631 Zeichen nur in der Zeitangabe, und zwar erst nach einem gemeinsamen Präfix von 27.111 Zeichen. Der geänderte Zeitstempel verhinderte damit die Wiederverwendung der übrigen 41.512 unveränderten Zeichen aus dem Präfix-Cache.
|
|
117
121
|
|
|
118
122
|
Ab BLUN King 9.1.119 enthält der bei jedem Modellschritt erneut gesendete Prompt nur noch eine kleine Auswahl häufig benötigter Skills. Alle übrigen registrierten Skills bleiben verfügbar und lassen sich über das Skill-Werkzeug anhand ihres Namens oder Zwecks suchen; der ausgewählte Skill wird anschließend bei Bedarf geladen. Dadurch sinkt die wiederholt übertragene Promptlast, ohne Skills zu löschen oder die vollständige Ansicht unter `/skills` einzuschränken.
|
package/README.md
CHANGED
|
@@ -119,6 +119,10 @@ Version 9.1.106 erlaubt Agentenprofilen, Werkzeuge namentlich auszuschließen. K
|
|
|
119
119
|
|
|
120
120
|
Version 9.1.109 hält nur noch die neun Werkzeuge dauerhaft in der Modellanfrage, auf die mehr als 98 Prozent von Fredriks 3.183 gemessenen Werkzeugaufrufen entfielen. Alle übrigen Werkzeuge bleiben über `ToolSearch` auffindbar und nach dem ersten Laden für den Rest der Sitzung verfügbar. Dadurch sinkt die Schemalast bei jedem normalen Modellschritt, ohne ein Werkzeug zu entfernen oder den Schnellweg für Telegram-Antworten und ausstehende Medienergebnisse zu verändern.
|
|
121
121
|
|
|
122
|
+
Version 9.1.127 verkürzt zusätzlich den wiederholten `ToolSearch`-Katalog. Eindeutige zurückgestellte Werkzeuge erscheinen dort nur noch mit ihrem kurzen Selektor; nur bei gleichnamigen Werkzeugen bleibt der vollständige Name stehen. Suche, exakte Auswahl, Telegram-Anhänge und bereits geladene Werkzeuge funktionieren unverändert. Dadurch kennt King weiterhin alle verfügbaren Werkzeuge, sendet aber die langen MCP-Namensräume nicht mehr bei jedem Modellschritt erneut.
|
|
123
|
+
|
|
124
|
+
Version 9.1.128 begrenzt außerdem den dauerhaften Cache nachgeladener Werkzeug-Schemas auf die zwölf zuletzt ausgewählten Werkzeuge. Ein erneut ausgewähltes Werkzeug rückt ans Ende und bleibt erhalten; nur die ältesten, lange nicht verwendeten Schemas fallen aus der nächsten Modellanfrage und sind weiterhin sofort über `ToolSearch` auffindbar. Werkzeuge des laufenden Schritts bleiben vollständig verfügbar. Dadurch kann die Schemalast auch in sehr langen Sitzungen nicht ungebremst anwachsen.
|
|
125
|
+
|
|
122
126
|
Ab BLUN King 9.1.118 bleibt der Sitzungszeitstempel im Systemprompt während einer laufenden Sitzung unverändert. Das erneute Einlesen von Verzeichnisübersicht, AGENTS.md-Dateien, Zusatzverzeichnissen und Skillinformationen kann den Prompt weiterhin ändern, wenn sich die jeweiligen Quellen tatsächlich verändert haben. Bleiben diese Quellen gleich, entwertet die Aktualisierung nach einer Verdichtung den Präfix-Cache des Anbieters nicht mehr allein durch einen neuen Zeitstempel. In Fredriks gemessener Sitzung unterschieden sich die beiden letzten Systemprompts mit jeweils 68.631 Zeichen nur in der Zeitangabe, und zwar erst nach einem gemeinsamen Präfix von 27.111 Zeichen. Der geänderte Zeitstempel verhinderte damit die Wiederverwendung der übrigen 41.512 unveränderten Zeichen aus dem Präfix-Cache.
|
|
123
127
|
|
|
124
128
|
Ab BLUN King 9.1.119 enthält der bei jedem Modellschritt erneut gesendete Prompt nur noch eine kleine Auswahl häufig benötigter Skills. Alle übrigen registrierten Skills bleiben verfügbar und lassen sich über das Skill-Werkzeug anhand ihres Namens oder Zwecks suchen; der ausgewählte Skill wird anschließend bei Bedarf geladen. Dadurch sinkt die wiederholt übertragene Promptlast, ohne Skills zu löschen oder die vollständige Ansicht unter `/skills` einzuschränken.
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
const TOOL_SCHEMA_BUDGET_RATIO = 0.25;
|
|
4
4
|
const TOOL_SCHEMA_MAX_TOKENS = 32_000;
|
|
5
5
|
const DEFERRED_TOOL_LOADER_NAME = 'ToolSearch';
|
|
6
|
+
const MAX_PERSISTENT_DEFERRED_TOOLS = 12;
|
|
6
7
|
const CORE_TOOL_NAMES = Object.freeze([
|
|
7
8
|
'Bash',
|
|
8
9
|
'Read',
|
|
@@ -27,6 +28,15 @@ function deferredToolNames(tools) {
|
|
|
27
28
|
.filter(Boolean))].sort((left, right) => left.localeCompare(right));
|
|
28
29
|
}
|
|
29
30
|
|
|
31
|
+
function deferredToolCatalog(tools) {
|
|
32
|
+
const names = deferredToolNames(tools);
|
|
33
|
+
const leaves = names.map((name) => name.split(/__|:/).at(-1) || name);
|
|
34
|
+
const leafCounts = new Map();
|
|
35
|
+
for (const leaf of leaves) leafCounts.set(leaf, (leafCounts.get(leaf) || 0) + 1);
|
|
36
|
+
return names.map((name, index) => leafCounts.get(leaves[index]) === 1 ? leaves[index] : name)
|
|
37
|
+
.sort((left, right) => left.localeCompare(right));
|
|
38
|
+
}
|
|
39
|
+
|
|
30
40
|
function searchDeferredTools(tools, query) {
|
|
31
41
|
const normalized = String(query || '').trim().toLowerCase();
|
|
32
42
|
if (!normalized) return [];
|
|
@@ -56,6 +66,14 @@ function searchDeferredTools(tools, query) {
|
|
|
56
66
|
}).filter(Boolean).sort((left, right) => right.score - left.score || String(left.tool.name).localeCompare(String(right.tool.name))).slice(0, 5).map((entry) => entry.tool);
|
|
57
67
|
}
|
|
58
68
|
|
|
69
|
+
function rememberLoadedTool(loadedToolNames, name) {
|
|
70
|
+
loadedToolNames.delete(name);
|
|
71
|
+
loadedToolNames.add(name);
|
|
72
|
+
while (loadedToolNames.size > MAX_PERSISTENT_DEFERRED_TOOLS) {
|
|
73
|
+
loadedToolNames.delete(loadedToolNames.values().next().value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
59
77
|
function createDeferredToolLoader(selectedTools, deferredTools, loadedToolNames = new Set()) {
|
|
60
78
|
if (!Array.isArray(selectedTools)) throw new TypeError('selectedTools must be an array');
|
|
61
79
|
if (!(loadedToolNames instanceof Set)) throw new TypeError('loadedToolNames must be a Set');
|
|
@@ -64,15 +82,15 @@ function createDeferredToolLoader(selectedTools, deferredTools, loadedToolNames
|
|
|
64
82
|
const name = String(tool?.name || '').trim();
|
|
65
83
|
if (name && !available.has(name)) available.set(name, tool);
|
|
66
84
|
}
|
|
67
|
-
const
|
|
85
|
+
const catalog = deferredToolCatalog([...available.values()]);
|
|
68
86
|
|
|
69
87
|
return {
|
|
70
88
|
name: DEFERRED_TOOL_LOADER_NAME,
|
|
71
89
|
description: [
|
|
72
90
|
'Find and load deferred tool schemas into this running session.',
|
|
73
91
|
'Use select:leaf_name for one known tool, plain keywords to search, or +word to require that word in the tool name.',
|
|
74
|
-
|
|
75
|
-
`Available deferred
|
|
92
|
+
`Loaded tools are available in the next step; the ${MAX_PERSISTENT_DEFERRED_TOOLS} most recently selected schemas remain loaded.`,
|
|
93
|
+
`Available deferred selectors: ${catalog.join(', ')}`,
|
|
76
94
|
].join('\n'),
|
|
77
95
|
parameters: {
|
|
78
96
|
type: 'object',
|
|
@@ -120,7 +138,7 @@ function createDeferredToolLoader(selectedTools, deferredTools, loadedToolNames
|
|
|
120
138
|
for (const tool of matches) {
|
|
121
139
|
const name = String(tool.name);
|
|
122
140
|
if (!selectedTools.some((candidate) => candidate?.name === name)) selectedTools.push(tool);
|
|
123
|
-
loadedToolNames
|
|
141
|
+
rememberLoadedTool(loadedToolNames, name);
|
|
124
142
|
loaded.push(name);
|
|
125
143
|
}
|
|
126
144
|
return {
|
|
@@ -136,9 +154,11 @@ function createDeferredToolLoader(selectedTools, deferredTools, loadedToolNames
|
|
|
136
154
|
module.exports = {
|
|
137
155
|
CORE_TOOL_NAMES,
|
|
138
156
|
DEFERRED_TOOL_LOADER_NAME,
|
|
157
|
+
MAX_PERSISTENT_DEFERRED_TOOLS,
|
|
139
158
|
TOOL_SCHEMA_BUDGET_RATIO,
|
|
140
159
|
TOOL_SCHEMA_MAX_TOKENS,
|
|
141
160
|
createDeferredToolLoader,
|
|
161
|
+
deferredToolCatalog,
|
|
142
162
|
deferredToolNames,
|
|
143
163
|
toolSchemaBudgetTokens,
|
|
144
164
|
};
|