blun-king-cli 9.1.130 → 9.1.131
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 +2 -0
- package/README.md +2 -0
- package/bin/system-prompt-context-policy.cjs +24 -0
- package/blun.mjs +2 -2
- package/package.json +1 -1
package/LIESMICH.txt
CHANGED
|
@@ -121,6 +121,8 @@ Version 9.1.129 entfernt in langen Sitzungen außerdem die Vorschautexte aus äl
|
|
|
121
121
|
|
|
122
122
|
Ab BLUN King 9.1.130 verdichtet die Modellprojektion zusätzlich die erläuternden Texte älterer, abgeschlossener Werkzeugschritte. Werkzeugnamen, Kennungen, Argumente, Ergebnisse, nicht textbasierte Inhalte und die letzten 20 Nachrichten bleiben unverändert; ausstehende Werkzeugaufrufe werden niemals verdichtet. Auch der gespeicherte Rohverlauf und Exporte bleiben vollständig. In Fredriks aktueller Sitzung verkleinert dies jede weitere Modellanfrage um zusätzliche 15.011 Zeichen, also um etwa 3.753 geschätzte Token.
|
|
123
123
|
|
|
124
|
+
Ab BLUN King 9.1.131 entfernt die Modellprojektion zwei ältere Regelkopien aus dem Systemprompt, sobald gleichwertige Regeln im Conduct-Abschnitt vorhanden sind. Betroffen sind ausschließlich die doppelten Hinweise zu Ehrlichkeit und Zugangsdaten; die vollständigen Conduct-Regeln und alle übrigen Prompt-Abschnitte bleiben unverändert. In der ausgelieferten Standardvorlage sinkt der wiederholt gesendete Prompt dadurch um 1.010 Zeichen, also um etwa 253 geschätzte Token pro Modellanfrage. Fehlt eines der Conduct-Gegenstücke, bleibt die entsprechende ältere Regel unverändert erhalten.
|
|
125
|
+
|
|
124
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.
|
|
125
127
|
|
|
126
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.
|
package/README.md
CHANGED
|
@@ -127,6 +127,8 @@ Version 9.1.129 entfernt in langen Sitzungen außerdem die Vorschautexte aus äl
|
|
|
127
127
|
|
|
128
128
|
Ab BLUN King 9.1.130 verdichtet die Modellprojektion zusätzlich die erläuternden Texte älterer, abgeschlossener Werkzeugschritte. Werkzeugnamen, Kennungen, Argumente, Ergebnisse, nicht textbasierte Inhalte und die letzten 20 Nachrichten bleiben unverändert; ausstehende Werkzeugaufrufe werden niemals verdichtet. Auch der gespeicherte Rohverlauf und Exporte bleiben vollständig. In Fredriks aktueller Sitzung verkleinert dies jede weitere Modellanfrage um zusätzliche 15.011 Zeichen, also um etwa 3.753 geschätzte Token.
|
|
129
129
|
|
|
130
|
+
Ab BLUN King 9.1.131 entfernt die Modellprojektion zwei ältere Regelkopien aus dem Systemprompt, sobald gleichwertige Regeln im Conduct-Abschnitt vorhanden sind. Betroffen sind ausschließlich die doppelten Hinweise zu Ehrlichkeit und Zugangsdaten; die vollständigen Conduct-Regeln und alle übrigen Prompt-Abschnitte bleiben unverändert. In der ausgelieferten Standardvorlage sinkt der wiederholt gesendete Prompt dadurch um 1.010 Zeichen, also um etwa 253 geschätzte Token pro Modellanfrage. Fehlt eines der Conduct-Gegenstücke, bleibt die entsprechende ältere Regel unverändert erhalten.
|
|
131
|
+
|
|
130
132
|
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.
|
|
131
133
|
|
|
132
134
|
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.
|
|
@@ -27,8 +27,32 @@ function boundSystemPromptDirectoryListing(value) {
|
|
|
27
27
|
return `${kept.join('\n')}\n${SYSTEM_PROMPT_DIRECTORY_TRUNCATED_MARKER}`;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
function removeMarkdownSection(markdown, heading) {
|
|
31
|
+
const escapedHeading = heading.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
32
|
+
const sectionPattern = new RegExp(
|
|
33
|
+
`(?:^|\\n)## ${escapedHeading}\\r?\\n[\\s\\S]*?(?=\\r?\\n#{1,2} |$)`,
|
|
34
|
+
'u',
|
|
35
|
+
);
|
|
36
|
+
return markdown.replace(sectionPattern, '');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function compactRepeatedConductSections(value) {
|
|
40
|
+
const prompt = String(value ?? '');
|
|
41
|
+
let compacted = prompt;
|
|
42
|
+
|
|
43
|
+
if (/^### Honesty & verification\s*$/mu.test(prompt)) {
|
|
44
|
+
compacted = removeMarkdownSection(compacted, 'Honesty');
|
|
45
|
+
}
|
|
46
|
+
if (/^### Secrets and credentials\s*$/mu.test(prompt)) {
|
|
47
|
+
compacted = removeMarkdownSection(compacted, 'Secrets and credentials');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return compacted;
|
|
51
|
+
}
|
|
52
|
+
|
|
30
53
|
module.exports = {
|
|
31
54
|
SYSTEM_PROMPT_DIRECTORY_MAX_CHARS,
|
|
32
55
|
SYSTEM_PROMPT_DIRECTORY_TRUNCATED_MARKER,
|
|
33
56
|
boundSystemPromptDirectoryListing,
|
|
57
|
+
compactRepeatedConductSections,
|
|
34
58
|
};
|
package/blun.mjs
CHANGED
|
@@ -21437,7 +21437,7 @@ var init_list_directory = __esmMin((() => {
|
|
|
21437
21437
|
}));
|
|
21438
21438
|
//#endregion
|
|
21439
21439
|
//#region ../../packages/agent-core/src/profile/context.ts
|
|
21440
|
-
var { boundSystemPromptDirectoryListing } = createRequire(import.meta.url)("./bin/system-prompt-context-policy.cjs");
|
|
21440
|
+
var { boundSystemPromptDirectoryListing, compactRepeatedConductSections } = createRequire(import.meta.url)("./bin/system-prompt-context-policy.cjs");
|
|
21441
21441
|
async function prepareSystemPromptContext(kaos, brandHome, options) {
|
|
21442
21442
|
const additionalDirs = normalizeAdditionalDirs(options?.additionalDirs ?? []);
|
|
21443
21443
|
const [cwdListing, agentsMdResult, additionalDirsInfo] = await Promise.all([
|
|
@@ -28372,7 +28372,7 @@ function createSystemPromptRenderer(merged) {
|
|
|
28372
28372
|
return (context) => {
|
|
28373
28373
|
const vars = buildTemplateVars(context, merged.promptVars, merged.tools);
|
|
28374
28374
|
try {
|
|
28375
|
-
return renderPrompt(merged.systemPromptTemplate, vars);
|
|
28375
|
+
return compactRepeatedConductSections(renderPrompt(merged.systemPromptTemplate, vars));
|
|
28376
28376
|
} catch (error) {
|
|
28377
28377
|
throw new Error(`Failed to render system prompt for agent profile "${merged.name}": ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
28378
28378
|
}
|