blun-king-cli 9.1.107 → 9.1.108
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 +3 -1
- package/bin/repeated-injection-projection.cjs +44 -0
- package/blun.mjs +3 -2
- package/package.json +1 -1
package/LIESMICH.txt
CHANGED
|
@@ -9,7 +9,7 @@ Installation
|
|
|
9
9
|
------------
|
|
10
10
|
Die geprüfte Version exakt global installieren:
|
|
11
11
|
|
|
12
|
-
npm install -g blun-king-cli@9.1.
|
|
12
|
+
npm install -g blun-king-cli@9.1.108
|
|
13
13
|
|
|
14
14
|
Start
|
|
15
15
|
-----
|
|
@@ -85,6 +85,8 @@ King bewahrt den vollständigen Verlauf weiterhin im Sitzungs-Wire auf. Erreicht
|
|
|
85
85
|
|
|
86
86
|
Dabei werden keine gespeicherten Nachrichten geändert oder gelöscht. Fortsetzen, Exportieren und die sichtbare Historie behalten die ursprünglichen Werkzeugergebnisse und Werkzeugargumente. Das Telemetrieereignis `micro_compaction_finished` nennt den Auslöser, den Schnitt und die geschätzte Tokenzahl vor und nach der Entlastung. Außerdem zählt es getrennt, wie viele Werkzeugergebnisse und Werkzeugargumente entlastet wurden. Der Sitzungsinspektor summiert zusätzlich die eingesparten Argument-Token, ohne Inhalte offenzulegen. Beispiel: Ein früherer `Write`-Aufruf mit einem vollständigen Dateiinhalt bleibt im Wire erhalten; die Modellprojektion trägt nur noch einen Platzhalter, sobald für diesen `Write`-Aufruf ein zugehöriges Ergebnis vorliegt.
|
|
87
87
|
|
|
88
|
+
Ab BLUN King 9.1.108 entfernt die Modellprojektion außerdem identische, wiederholt eingespeiste Systemhinweise. Pro Hinweisart und exaktem Text bleibt die neueste Fassung erhalten; geänderte Hinweise, normale Nutzernachrichten, Werkzeugaufrufe und gemischte Inhalte bleiben unverändert. Der Sitzungs-Wire wird nicht umgeschrieben. Dadurch werden lange fortgesetzte Sitzungen kleiner an den Anbieter übertragen, ohne Verlauf, Export oder Wiederaufnahme zu verkürzen. Beispiel: Wird derselbe Werkzeughinweis bei 80 Zügen erneut eingespeist, sieht das Modell nur die neueste identische Fassung. Ändert sich der Hinweis, bleiben beide Fassungen sichtbar.
|
|
89
|
+
|
|
88
90
|
Ab BLUN King 9.1.98 kann King einen abgeschlossenen Arbeitsabschnitt verdichten, bevor die harte automatische Grenze erreicht ist. Unterhalb der halben Vollverdichtungsgrenze bleibt `CompactConversation` vollständig aus dem Modellprompt. Ab 128.000 geschätzten Token im Standardmodellfenster wird es für den nächsten Modellschritt verfügbar. Die Verdichtung beginnt erst nach Abschluss des aktuellen Werkzeugschritts, öffnet keinen konkurrierenden Zug und lässt den ursprünglichen Verlauf bei einem Fehlschlag unverändert.
|
|
89
91
|
|
|
90
92
|
## Große Werkzeugausgaben und isolierte Teilagenten
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function repeatedInjectionKey(message) {
|
|
4
|
+
if (message?.role !== 'user') return null;
|
|
5
|
+
if (message?.origin?.kind !== 'injection') return null;
|
|
6
|
+
const variant = String(message.origin.variant || '').trim();
|
|
7
|
+
if (!variant) return null;
|
|
8
|
+
if (!Array.isArray(message.content) || message.content.length !== 1) return null;
|
|
9
|
+
const part = message.content[0];
|
|
10
|
+
if (part?.type !== 'text' || typeof part.text !== 'string') return null;
|
|
11
|
+
if (Array.isArray(message.toolCalls) && message.toolCalls.length > 0) return null;
|
|
12
|
+
return { variant, text: part.text };
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function dedupeRepeatedInjections(history) {
|
|
16
|
+
if (!Array.isArray(history) || history.length < 2) return history;
|
|
17
|
+
const seenByVariant = new Map();
|
|
18
|
+
const kept = [];
|
|
19
|
+
|
|
20
|
+
for (let index = history.length - 1; index >= 0; index -= 1) {
|
|
21
|
+
const message = history[index];
|
|
22
|
+
const key = repeatedInjectionKey(message);
|
|
23
|
+
if (key === null) {
|
|
24
|
+
kept.push(message);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
let seenTexts = seenByVariant.get(key.variant);
|
|
28
|
+
if (seenTexts === undefined) {
|
|
29
|
+
seenTexts = new Set();
|
|
30
|
+
seenByVariant.set(key.variant, seenTexts);
|
|
31
|
+
}
|
|
32
|
+
if (seenTexts.has(key.text)) continue;
|
|
33
|
+
seenTexts.add(key.text);
|
|
34
|
+
kept.push(message);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
kept.reverse();
|
|
38
|
+
return kept.length === history.length ? history : kept;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = {
|
|
42
|
+
dedupeRepeatedInjections,
|
|
43
|
+
repeatedInjectionKey,
|
|
44
|
+
};
|
package/blun.mjs
CHANGED
|
@@ -75970,10 +75970,11 @@ var init_full = __esmMin((() => {
|
|
|
75970
75970
|
}));
|
|
75971
75971
|
//#endregion
|
|
75972
75972
|
//#region ../../packages/agent-core/src/agent/compaction/micro.ts
|
|
75973
|
-
var selectMicroCompactionCutoff, isPersistedToolResultReference, DEFAULT_CONFIG, MicroCompaction;
|
|
75973
|
+
var selectMicroCompactionCutoff, isPersistedToolResultReference, dedupeRepeatedInjections, DEFAULT_CONFIG, MicroCompaction;
|
|
75974
75974
|
var init_micro = __esmMin((() => {
|
|
75975
75975
|
({ selectMicroCompactionCutoff } = createRequire(import.meta.url)("./bin/micro-compaction-policy.cjs"));
|
|
75976
75976
|
({ isPersistedToolResultReference } = createRequire(import.meta.url)("./bin/tool-result-offload-policy.cjs"));
|
|
75977
|
+
({ dedupeRepeatedInjections } = createRequire(import.meta.url)("./bin/repeated-injection-projection.cjs"));
|
|
75977
75978
|
init_tokens();
|
|
75978
75979
|
DEFAULT_CONFIG = {
|
|
75979
75980
|
keepRecentMessages: 20,
|
|
@@ -78940,7 +78941,7 @@ var init_context$2 = __esmMin((() => {
|
|
|
78940
78941
|
}
|
|
78941
78942
|
project(messages, options) {
|
|
78942
78943
|
const anomalies = [];
|
|
78943
|
-
const result = project(this.agent.userMessageOffload.compact(this.agent.microCompaction.compact(this.agent.toolResultBatchOffload.compact(messages))), {
|
|
78944
|
+
const result = project(this.agent.userMessageOffload.compact(this.agent.microCompaction.compact(this.agent.toolResultBatchOffload.compact(dedupeRepeatedInjections(messages)))), {
|
|
78944
78945
|
...options,
|
|
78945
78946
|
onAnomaly: (anomaly) => {
|
|
78946
78947
|
anomalies.push(anomaly);
|