@tom2012/cc-web 1.5.110 → 1.5.112
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.md +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +21 -0
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/information/condenser.d.ts.map +1 -1
- package/backend/dist/information/condenser.js +362 -140
- package/backend/dist/information/condenser.js.map +1 -1
- package/backend/dist/memory-pool/templates.d.ts +1 -0
- package/backend/dist/memory-pool/templates.d.ts.map +1 -1
- package/backend/dist/memory-pool/templates.js +19 -0
- package/backend/dist/memory-pool/templates.js.map +1 -1
- package/frontend/dist/assets/{GraphPreview-B651ffK1.js → GraphPreview-DYuRcUjF.js} +1 -1
- package/frontend/dist/assets/{OfficePreview-B9UjWFU1.js → OfficePreview-B6NucFpx.js} +2 -2
- package/frontend/dist/assets/{PlanPanel-Bo0aQY-U.js → PlanPanel-B_muilQ8.js} +1 -1
- package/frontend/dist/assets/{ProjectPage-BBXTlrKW.js → ProjectPage-2Iq-zPKT.js} +3 -3
- package/frontend/dist/assets/{SettingsPage-BKutAZys.js → SettingsPage-Bal81q9c.js} +1 -1
- package/frontend/dist/assets/{ShareViewPage-37Cpdq_M.js → ShareViewPage-CBuw4gRz.js} +1 -1
- package/frontend/dist/assets/{SkillHubPage-50E8eqaP.js → SkillHubPage-Cu2lihcp.js} +1 -1
- package/frontend/dist/assets/{bot-azy4nLNO.js → bot-bkBE5Xrf.js} +1 -1
- package/frontend/dist/assets/{chevron-down-Bvlu2a9y.js → chevron-down-CSBT_L3w.js} +1 -1
- package/frontend/dist/assets/{index-BOl3UU4w.js → index-C3pyHC8a.js} +2 -2
- package/frontend/dist/assets/{index-CpwuAowt.js → index-D-5MomMV.js} +1 -1
- package/frontend/dist/assets/{index-C6UsCwmm.css → index-Dha4HlOZ.css} +1 -1
- package/frontend/dist/assets/{jszip.min-0YFGWkUy.js → jszip.min-DohPrhoA.js} +1 -1
- package/frontend/dist/assets/{matter-BLxVbDs5.js → matter-Clog--f-.js} +1 -1
- package/frontend/dist/assets/{maximize-2-CpaJgDYz.js → maximize-2-DFp4HnHz.js} +1 -1
- package/frontend/dist/assets/{save-CBYBgNfh.js → save-DzeZJzB3.js} +1 -1
- package/frontend/dist/assets/{search-CO7iZRaW.js → search-DPBqFbAe.js} +1 -1
- package/frontend/dist/assets/{user-BLmgyTXf.js → user-DHblJPz0.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// backend/src/information/condenser.ts
|
|
3
3
|
//
|
|
4
|
-
//
|
|
4
|
+
// Iterative condense and reorganize using Claude CLI (haiku).
|
|
5
|
+
// Implements: half-window segmentation, cohesion tracking, context summary injection,
|
|
6
|
+
// single-turn overflow handling, guard rails.
|
|
5
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
8
|
if (k2 === undefined) k2 = k;
|
|
7
9
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -43,74 +45,303 @@ const path = __importStar(require("path"));
|
|
|
43
45
|
const child_process_1 = require("child_process");
|
|
44
46
|
const config_1 = require("../config");
|
|
45
47
|
const conversation_sync_1 = require("./conversation-sync");
|
|
48
|
+
// Haiku context: ~200K tokens. Half window for input, half for output.
|
|
49
|
+
const HALF_WINDOW_TOKENS = 80000;
|
|
50
|
+
// Keywords that mark uncondensable user turns
|
|
51
|
+
const UNCONDENSABLE_RE = /不要|别|错了|改成|不是这样|必须|禁止|永远不要|以后请/;
|
|
46
52
|
function estimateTokens(text) {
|
|
47
53
|
return Math.ceil(text.length / 4);
|
|
48
54
|
}
|
|
49
|
-
|
|
55
|
+
// ── Claude CLI ──
|
|
50
56
|
function callHaiku(prompt) {
|
|
51
57
|
return new Promise((resolve, reject) => {
|
|
52
|
-
(0, child_process_1.execFile)('claude', ['-p', prompt, '--model', 'haiku'], { timeout:
|
|
58
|
+
(0, child_process_1.execFile)('claude', ['-p', prompt, '--model', 'haiku'], { timeout: 120000, maxBuffer: 8 * 1024 * 1024 }, (err, stdout) => {
|
|
53
59
|
if (err)
|
|
54
60
|
return reject(err);
|
|
55
61
|
resolve(stdout);
|
|
56
62
|
});
|
|
57
63
|
});
|
|
58
64
|
}
|
|
59
|
-
|
|
65
|
+
function extractJsonArray(text) {
|
|
66
|
+
let cleaned = text.replace(/```json\s*/gi, '').replace(/```\s*/g, '');
|
|
67
|
+
const start = cleaned.indexOf('[');
|
|
68
|
+
if (start === -1)
|
|
69
|
+
throw new Error('No JSON array found');
|
|
70
|
+
let depth = 0;
|
|
71
|
+
let end = -1;
|
|
72
|
+
for (let i = start; i < cleaned.length; i++) {
|
|
73
|
+
if (cleaned[i] === '[')
|
|
74
|
+
depth++;
|
|
75
|
+
else if (cleaned[i] === ']') {
|
|
76
|
+
depth--;
|
|
77
|
+
if (depth === 0) {
|
|
78
|
+
end = i;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (end === -1) {
|
|
84
|
+
cleaned = cleaned.slice(start);
|
|
85
|
+
cleaned = cleaned.replace(/,\s*\{[^}]*$/, '') + ']';
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
cleaned = cleaned.slice(start, end + 1);
|
|
89
|
+
}
|
|
90
|
+
return JSON.parse(cleaned);
|
|
91
|
+
}
|
|
60
92
|
function parseTurns(content) {
|
|
61
93
|
const sections = content.split(/(?=^## [UA]\d+)/m).filter(Boolean);
|
|
62
94
|
return sections.map(s => {
|
|
63
95
|
const match = s.match(/^(## [UA]\d+.*)\n/);
|
|
64
96
|
if (!match)
|
|
65
|
-
return
|
|
66
|
-
|
|
67
|
-
|
|
97
|
+
return null;
|
|
98
|
+
const header = match[1];
|
|
99
|
+
const id = header.replace(/^## /, '').split(/[\s\[]/)[0];
|
|
100
|
+
const body = s.slice(match[0].length).trim();
|
|
101
|
+
const hasMarker = /\[c\d+/.test(header);
|
|
102
|
+
return { id, header, body, tokens: estimateTokens(body), condensed: hasMarker, cohesion: null };
|
|
103
|
+
}).filter(Boolean);
|
|
104
|
+
}
|
|
105
|
+
function extractMarkerChain(header) {
|
|
106
|
+
const match = header.match(/\[(.+)\]\s*$/);
|
|
107
|
+
return match ? match[1] : '';
|
|
108
|
+
}
|
|
109
|
+
// ── Prompt building ──
|
|
110
|
+
const CONDENSE_RULES = `你是一个对话缩减器。对以下对话中未标记 [已缩减] 的轮次进行缩减。
|
|
111
|
+
|
|
112
|
+
判断标准:如果未来的 LLM 只看到缩减后的版本,行为是否会与看到原文时不同?
|
|
113
|
+
- 不同 → 高增益,condensed 设为 null(保留原文)
|
|
114
|
+
- 相同 → 低增益,大幅缩减
|
|
115
|
+
|
|
116
|
+
硬性规则:
|
|
117
|
+
1. 标记了 [已缩减] 的轮次 → condensed 必须为 null
|
|
118
|
+
2. 用户纠正/否定行为的发言(含"不要""错了""改成""必须""禁止")→ condensed 必须为 null
|
|
119
|
+
3. 绝不改变语义方向(肯定↔否定)
|
|
120
|
+
4. 保留所有数字、标识符、文件路径
|
|
121
|
+
5. 构建/部署日志 → 一句话结果
|
|
122
|
+
6. 确认性回复("好""继续")→ 保留原文
|
|
123
|
+
|
|
124
|
+
对每轮输出 JSON:
|
|
125
|
+
[{"turn":"U1","condensed":"缩减内容或null","cohesion":0.8},...]
|
|
126
|
+
cohesion: 该轮与上一轮的上下文相关性(0=完全独立话题,1=紧密承接)`;
|
|
127
|
+
function buildSegmentPrompt(turns, condensedUpTo, contextSummary) {
|
|
128
|
+
const parts = [CONDENSE_RULES, ''];
|
|
129
|
+
if (contextSummary) {
|
|
130
|
+
parts.push(`[前文摘要:${contextSummary}]`, '');
|
|
131
|
+
}
|
|
132
|
+
parts.push('对话:');
|
|
133
|
+
for (let i = 0; i < turns.length; i++) {
|
|
134
|
+
const t = turns[i];
|
|
135
|
+
if (i < condensedUpTo) {
|
|
136
|
+
// Already condensed in previous iteration — mark as [已缩减]
|
|
137
|
+
parts.push(`## ${t.id} [已缩减]`);
|
|
138
|
+
parts.push(t.body);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
parts.push(`## ${t.id}`);
|
|
142
|
+
parts.push(t.body);
|
|
143
|
+
}
|
|
144
|
+
parts.push('');
|
|
145
|
+
}
|
|
146
|
+
return parts.join('\n');
|
|
147
|
+
}
|
|
148
|
+
// ── Context summary generation ──
|
|
149
|
+
function generateContextSummary(turns) {
|
|
150
|
+
// Take first sentence of each turn, max 5 turns
|
|
151
|
+
const summaryParts = [];
|
|
152
|
+
for (const t of turns.slice(0, 5)) {
|
|
153
|
+
const firstSentence = t.body.split(/[。!?\n]/)[0].slice(0, 40);
|
|
154
|
+
summaryParts.push(`${t.id}: ${firstSentence}`);
|
|
155
|
+
}
|
|
156
|
+
if (turns.length > 5)
|
|
157
|
+
summaryParts.push(`...共${turns.length}轮`);
|
|
158
|
+
return summaryParts.join(';');
|
|
159
|
+
}
|
|
160
|
+
// ── Select segment that fits in half window ──
|
|
161
|
+
function selectSegment(turns, startIdx, halfWindow) {
|
|
162
|
+
let total = 0;
|
|
163
|
+
const promptOverhead = estimateTokens(CONDENSE_RULES) + 200; // rules + formatting
|
|
164
|
+
total += promptOverhead;
|
|
165
|
+
for (let i = startIdx; i < turns.length; i++) {
|
|
166
|
+
const turnCost = turns[i].tokens + 20; // header + formatting overhead
|
|
167
|
+
if (total + turnCost > halfWindow && i > startIdx) {
|
|
168
|
+
// Ensure we end on a complete U-A pair
|
|
169
|
+
let endIdx = i;
|
|
170
|
+
// If endIdx splits a U-A pair (ends on U without A), back up one
|
|
171
|
+
if (endIdx > startIdx && turns[endIdx - 1]?.id.startsWith('U')) {
|
|
172
|
+
endIdx--;
|
|
173
|
+
}
|
|
174
|
+
return { endIdx: Math.max(startIdx + 2, endIdx), totalTokens: total };
|
|
175
|
+
}
|
|
176
|
+
total += turnCost;
|
|
177
|
+
}
|
|
178
|
+
return { endIdx: turns.length, totalTokens: total };
|
|
179
|
+
}
|
|
180
|
+
// ── Find lowest cohesion cut point ──
|
|
181
|
+
function findLowestCohesionCut(turns, startIdx, endIdx) {
|
|
182
|
+
let minCohesion = 2;
|
|
183
|
+
let cutIdx = Math.floor((startIdx + endIdx) / 2); // fallback: midpoint
|
|
184
|
+
for (let i = startIdx + 2; i < endIdx; i += 2) { // step by 2 to cut at U-A pair boundaries
|
|
185
|
+
const c = turns[i].cohesion;
|
|
186
|
+
if (c !== null && c < minCohesion) {
|
|
187
|
+
minCohesion = c;
|
|
188
|
+
cutIdx = i;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// If all cohesion > 0.8, use midpoint fallback
|
|
192
|
+
if (minCohesion > 0.8)
|
|
193
|
+
cutIdx = Math.floor((startIdx + endIdx) / 2);
|
|
194
|
+
return cutIdx;
|
|
195
|
+
}
|
|
196
|
+
// ── Pre-truncate oversized single turn ──
|
|
197
|
+
function truncateTurn(turn, maxTokens) {
|
|
198
|
+
const headTokens = Math.floor(maxTokens * 0.7);
|
|
199
|
+
const tailTokens = Math.floor(maxTokens * 0.2);
|
|
200
|
+
const headChars = headTokens * 4;
|
|
201
|
+
const tailChars = tailTokens * 4;
|
|
202
|
+
const omitted = estimateTokens(turn.body) - maxTokens;
|
|
203
|
+
const truncatedBody = turn.body.slice(0, headChars) +
|
|
204
|
+
`\n\n[...省略约 ${omitted} tokens...]\n\n` +
|
|
205
|
+
turn.body.slice(-tailChars);
|
|
206
|
+
return { ...turn, body: truncatedBody, tokens: estimateTokens(truncatedBody) };
|
|
207
|
+
}
|
|
208
|
+
// ── Iterative condense ──
|
|
209
|
+
async function iterativeCondense(turns) {
|
|
210
|
+
const halfWindow = HALF_WINDOW_TOKENS;
|
|
211
|
+
let condensedUpTo = 0;
|
|
212
|
+
const cohesionMap = {};
|
|
213
|
+
// Pre-truncate any single turn larger than half window
|
|
214
|
+
for (let i = 0; i < turns.length; i++) {
|
|
215
|
+
if (turns[i].tokens > halfWindow * 0.8) {
|
|
216
|
+
turns[i] = truncateTurn(turns[i], Math.floor(halfWindow * 0.7));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
while (condensedUpTo < turns.length) {
|
|
220
|
+
// Determine segment start: usually 0, but may skip forward via cohesion cut
|
|
221
|
+
let segStart = 0;
|
|
222
|
+
let contextSummary = '';
|
|
223
|
+
// If already-condensed prefix is too large, cut it
|
|
224
|
+
const prefixTokens = turns.slice(0, condensedUpTo).reduce((s, t) => s + t.tokens + 20, 0);
|
|
225
|
+
if (prefixTokens > halfWindow * 0.5 && condensedUpTo > 0) {
|
|
226
|
+
const cutIdx = findLowestCohesionCut(turns, 0, condensedUpTo);
|
|
227
|
+
contextSummary = generateContextSummary(turns.slice(0, cutIdx));
|
|
228
|
+
segStart = cutIdx;
|
|
229
|
+
}
|
|
230
|
+
// Select segment from segStart that fits in half window
|
|
231
|
+
const segTurns = turns.slice(segStart);
|
|
232
|
+
const { endIdx: relEnd } = selectSegment(segTurns, 0, halfWindow);
|
|
233
|
+
const absEnd = segStart + relEnd;
|
|
234
|
+
// Check if segment covers any new (uncondensed) turns
|
|
235
|
+
if (absEnd <= condensedUpTo) {
|
|
236
|
+
// Cannot fit any new turns — force cut more aggressively
|
|
237
|
+
const forceCut = Math.max(condensedUpTo - 4, 0); // keep last 4 condensed turns
|
|
238
|
+
contextSummary = generateContextSummary(turns.slice(0, forceCut));
|
|
239
|
+
const forceTurns = turns.slice(forceCut);
|
|
240
|
+
const { endIdx: forceRelEnd } = selectSegment(forceTurns, 0, halfWindow);
|
|
241
|
+
const forceAbsEnd = forceCut + forceRelEnd;
|
|
242
|
+
if (forceAbsEnd <= condensedUpTo)
|
|
243
|
+
break; // Truly stuck, stop
|
|
244
|
+
// Call Haiku with force-cut segment
|
|
245
|
+
const prompt = buildSegmentPrompt(turns.slice(forceCut, forceAbsEnd), condensedUpTo - forceCut, contextSummary);
|
|
246
|
+
const results = await callHaikuAndParse(prompt, turns, forceCut, forceAbsEnd, condensedUpTo);
|
|
247
|
+
applyResults(turns, results, condensedUpTo, forceAbsEnd, cohesionMap);
|
|
248
|
+
condensedUpTo = forceAbsEnd;
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
// Build prompt for this segment
|
|
252
|
+
const prompt = buildSegmentPrompt(turns.slice(segStart, absEnd), condensedUpTo - segStart, contextSummary);
|
|
253
|
+
// Call Haiku
|
|
254
|
+
const results = await callHaikuAndParse(prompt, turns, segStart, absEnd, condensedUpTo);
|
|
255
|
+
applyResults(turns, results, condensedUpTo, absEnd, cohesionMap);
|
|
256
|
+
condensedUpTo = absEnd;
|
|
257
|
+
}
|
|
258
|
+
return { condensedTurns: turns, cohesionMap };
|
|
259
|
+
}
|
|
260
|
+
async function callHaikuAndParse(prompt, allTurns, segStart, segEnd, condensedUpTo) {
|
|
261
|
+
let rawResult;
|
|
262
|
+
try {
|
|
263
|
+
rawResult = await callHaiku(prompt);
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
// On failure, skip this segment (leave turns as-is)
|
|
267
|
+
console.error('[condenser] Haiku call failed:', err instanceof Error ? err.message : err);
|
|
268
|
+
return new Map();
|
|
269
|
+
}
|
|
270
|
+
let parsed;
|
|
271
|
+
try {
|
|
272
|
+
parsed = extractJsonArray(rawResult);
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
console.error('[condenser] JSON parse failed, skipping segment');
|
|
276
|
+
return new Map();
|
|
277
|
+
}
|
|
278
|
+
const resultMap = new Map();
|
|
279
|
+
for (const r of parsed) {
|
|
280
|
+
resultMap.set(r.turn, r);
|
|
281
|
+
}
|
|
282
|
+
return resultMap;
|
|
283
|
+
}
|
|
284
|
+
function applyResults(turns, results, condensedUpTo, segEnd, cohesionMap) {
|
|
285
|
+
for (let i = condensedUpTo; i < segEnd && i < turns.length; i++) {
|
|
286
|
+
const t = turns[i];
|
|
287
|
+
const r = results.get(t.id);
|
|
288
|
+
// Record cohesion
|
|
289
|
+
if (r?.cohesion !== undefined) {
|
|
290
|
+
t.cohesion = r.cohesion;
|
|
291
|
+
cohesionMap[t.id] = r.cohesion;
|
|
292
|
+
}
|
|
293
|
+
// Guard rail: protect uncondensable user turns
|
|
294
|
+
if (t.id.startsWith('U') && UNCONDENSABLE_RE.test(t.body)) {
|
|
295
|
+
t.condensed = true; // Mark as processed but keep original
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
// Guard rail: already condensed turns must not be re-condensed
|
|
299
|
+
if (t.condensed)
|
|
300
|
+
continue;
|
|
301
|
+
// Apply condensation
|
|
302
|
+
if (r && r.condensed !== null && r.condensed !== undefined) {
|
|
303
|
+
t.body = r.condensed;
|
|
304
|
+
t.tokens = estimateTokens(r.condensed);
|
|
305
|
+
}
|
|
306
|
+
t.condensed = true;
|
|
307
|
+
}
|
|
68
308
|
}
|
|
69
|
-
|
|
70
|
-
function
|
|
71
|
-
prevMarkers,
|
|
72
|
-
level) {
|
|
309
|
+
// ── Build final content with markers ──
|
|
310
|
+
function buildFinalContent(originalTurns, // from v0.md (for token % calculation)
|
|
311
|
+
condensedTurns, prevMarkers, level) {
|
|
73
312
|
const lines = [];
|
|
74
|
-
for (
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
const origTokens =
|
|
78
|
-
const newTokens =
|
|
313
|
+
for (let i = 0; i < condensedTurns.length; i++) {
|
|
314
|
+
const ct = condensedTurns[i];
|
|
315
|
+
const ot = originalTurns.find(t => t.id === ct.id);
|
|
316
|
+
const origTokens = ot ? ot.tokens : ct.tokens;
|
|
317
|
+
const newTokens = ct.tokens;
|
|
79
318
|
let marker = '';
|
|
80
|
-
if (
|
|
81
|
-
//
|
|
82
|
-
const pct =
|
|
83
|
-
const prevChain = prevMarkers.get(
|
|
319
|
+
if (origTokens > 0 && newTokens < origTokens * 0.95) {
|
|
320
|
+
// Content was actually condensed (>5% reduction)
|
|
321
|
+
const pct = Math.round(newTokens / origTokens * 100);
|
|
322
|
+
const prevChain = prevMarkers.get(ct.id) || '';
|
|
84
323
|
marker = prevChain ? ` [c${level},${pct}%;${prevChain}]` : ` [c${level},${pct}%]`;
|
|
85
324
|
}
|
|
86
325
|
else {
|
|
87
|
-
|
|
88
|
-
const existing = prevMarkers.get(turn.id);
|
|
326
|
+
const existing = prevMarkers.get(ct.id);
|
|
89
327
|
if (existing)
|
|
90
328
|
marker = ` [${existing}]`;
|
|
91
329
|
}
|
|
92
|
-
lines.push(`## ${
|
|
93
|
-
lines.push(body);
|
|
330
|
+
lines.push(`## ${ct.id}${marker}`);
|
|
331
|
+
lines.push(ct.body);
|
|
94
332
|
lines.push('');
|
|
95
333
|
}
|
|
96
334
|
return lines.join('\n');
|
|
97
335
|
}
|
|
98
|
-
|
|
99
|
-
function extractMarkerChain(header) {
|
|
100
|
-
const match = header.match(/\[(.+)\]\s*$/);
|
|
101
|
-
return match ? match[1] : '';
|
|
102
|
-
}
|
|
103
|
-
// ── Condense ──
|
|
336
|
+
// ── Public: condenseConversation ──
|
|
104
337
|
async function condenseConversation(convDir) {
|
|
105
338
|
const meta = (0, conversation_sync_1.readMeta)(convDir);
|
|
106
339
|
if (!meta)
|
|
107
340
|
return null;
|
|
108
|
-
// Read the latest version as base
|
|
109
341
|
const latestEntry = meta.versions[meta.latest];
|
|
110
342
|
if (!latestEntry)
|
|
111
343
|
return null;
|
|
112
344
|
const baseContent = fs.readFileSync(path.join(convDir, latestEntry.file), 'utf-8');
|
|
113
|
-
// Read original for token comparison
|
|
114
345
|
const v0Content = fs.readFileSync(path.join(convDir, 'v0.md'), 'utf-8');
|
|
115
346
|
const originalTurns = parseTurns(v0Content);
|
|
116
347
|
const baseTurns = parseTurns(baseContent);
|
|
@@ -121,65 +352,15 @@ async function condenseConversation(convDir) {
|
|
|
121
352
|
if (chain)
|
|
122
353
|
prevMarkers.set(t.id, chain);
|
|
123
354
|
}
|
|
124
|
-
//
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
- 相同 → 大幅缩减
|
|
130
|
-
|
|
131
|
-
硬性规则:
|
|
132
|
-
1. 用户纠正/否定行为的发言 → 必须保留原文
|
|
133
|
-
2. 绝不改变语义方向(肯定↔否定)
|
|
134
|
-
3. 保留所有数字、标识符、文件路径
|
|
135
|
-
4. 构建/部署日志 → 一句话结果
|
|
136
|
-
5. 确认性回复 → 保留原文
|
|
137
|
-
|
|
138
|
-
对每轮输出 JSON 数组:
|
|
139
|
-
[{"turn":"U1","condensed":"缩减后的内容或null表示保留原文"},...]
|
|
140
|
-
|
|
141
|
-
对话:
|
|
142
|
-
${baseContent.slice(0, 80000)}`;
|
|
143
|
-
let result;
|
|
144
|
-
try {
|
|
145
|
-
result = await callHaiku(prompt);
|
|
146
|
-
}
|
|
147
|
-
catch (err) {
|
|
148
|
-
throw new Error('Claude CLI 调用失败: ' + (err instanceof Error ? err.message : String(err)));
|
|
149
|
-
}
|
|
150
|
-
// Parse JSON from response
|
|
151
|
-
let condensedArray;
|
|
152
|
-
try {
|
|
153
|
-
const jsonMatch = result.match(/\[[\s\S]*\]/);
|
|
154
|
-
if (!jsonMatch)
|
|
155
|
-
throw new Error('No JSON array in response');
|
|
156
|
-
condensedArray = JSON.parse(jsonMatch[0]);
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
159
|
-
throw new Error('无法解析 Haiku 返回的 JSON');
|
|
160
|
-
}
|
|
161
|
-
// Build condensed bodies map
|
|
162
|
-
const condensedBodies = new Map();
|
|
163
|
-
for (const item of condensedArray) {
|
|
164
|
-
condensedBodies.set(item.turn, item.condensed);
|
|
165
|
-
}
|
|
166
|
-
// Guard rail: protect uncondensable turns
|
|
167
|
-
for (const turn of originalTurns) {
|
|
168
|
-
if (turn.id.startsWith('U')) {
|
|
169
|
-
const body = turn.body.toLowerCase();
|
|
170
|
-
if (/不要|别|错了|改成|不是|必须|禁止/.test(body)) {
|
|
171
|
-
condensedBodies.set(turn.id, null); // Force keep original
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
// Determine next version number
|
|
176
|
-
const versionNumbers = Object.keys(meta.versions)
|
|
177
|
-
.map(v => parseInt(v.replace('v', '')))
|
|
178
|
-
.filter(n => !isNaN(n));
|
|
355
|
+
// Run iterative condense on base turns (deep copy bodies)
|
|
356
|
+
const workingTurns = baseTurns.map(t => ({ ...t, condensed: /\[c\d+/.test(t.header) }));
|
|
357
|
+
const { condensedTurns, cohesionMap } = await iterativeCondense(workingTurns);
|
|
358
|
+
// Determine next version
|
|
359
|
+
const versionNumbers = Object.keys(meta.versions).map(v => parseInt(v.replace('v', ''))).filter(n => !isNaN(n));
|
|
179
360
|
const nextNum = Math.max(...versionNumbers) + 1;
|
|
180
361
|
const nextVersion = `v${nextNum}`;
|
|
181
|
-
// Build
|
|
182
|
-
const condensedContent =
|
|
362
|
+
// Build final content with markers
|
|
363
|
+
const condensedContent = buildFinalContent(originalTurns, condensedTurns, prevMarkers, nextNum);
|
|
183
364
|
const afterTokens = estimateTokens(condensedContent);
|
|
184
365
|
const beforeTokens = latestEntry.tokens;
|
|
185
366
|
// Write file
|
|
@@ -194,23 +375,24 @@ ${baseContent.slice(0, 80000)}`;
|
|
|
194
375
|
base: meta.latest,
|
|
195
376
|
};
|
|
196
377
|
meta.latest = nextVersion;
|
|
378
|
+
// Merge cohesion map
|
|
379
|
+
meta.cohesion_map = { ...meta.cohesion_map, ...cohesionMap };
|
|
197
380
|
(0, conversation_sync_1.writeMeta)(convDir, meta);
|
|
198
381
|
return { version: nextVersion, before_tokens: beforeTokens, after_tokens: afterTokens };
|
|
199
382
|
}
|
|
200
|
-
// ──
|
|
383
|
+
// ── Public: reorganizeConversation ──
|
|
201
384
|
async function reorganizeConversation(convDir) {
|
|
202
385
|
const meta = (0, conversation_sync_1.readMeta)(convDir);
|
|
203
386
|
if (!meta)
|
|
204
387
|
return null;
|
|
205
388
|
if (meta.reorganize_count >= 2)
|
|
206
|
-
return null;
|
|
207
|
-
// Classify turns by expand stats
|
|
389
|
+
return null;
|
|
208
390
|
const byTurn = meta.expand_stats.by_turn;
|
|
391
|
+
const v0Content = fs.readFileSync(path.join(convDir, 'v0.md'), 'utf-8');
|
|
392
|
+
const originalTurns = parseTurns(v0Content);
|
|
209
393
|
const highAttention = [];
|
|
210
394
|
const lowAttention = [];
|
|
211
395
|
const neverAccessed = [];
|
|
212
|
-
const v0Content = fs.readFileSync(path.join(convDir, 'v0.md'), 'utf-8');
|
|
213
|
-
const originalTurns = parseTurns(v0Content);
|
|
214
396
|
for (const turn of originalTurns) {
|
|
215
397
|
const count = byTurn[turn.id] || 0;
|
|
216
398
|
if (count >= 3)
|
|
@@ -221,57 +403,96 @@ async function reorganizeConversation(convDir) {
|
|
|
221
403
|
neverAccessed.push(turn.id);
|
|
222
404
|
}
|
|
223
405
|
if (highAttention.length === 0)
|
|
224
|
-
return null;
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
[{"turn":"U1","condensed":"缩减后的内容或null表示保留原文"},...]
|
|
239
|
-
|
|
240
|
-
原始对话:
|
|
241
|
-
${v0Content.slice(0, 80000)}`;
|
|
242
|
-
let result;
|
|
243
|
-
try {
|
|
244
|
-
result = await callHaiku(prompt);
|
|
245
|
-
}
|
|
246
|
-
catch (err) {
|
|
247
|
-
throw new Error('Claude CLI 调用失败: ' + (err instanceof Error ? err.message : String(err)));
|
|
248
|
-
}
|
|
249
|
-
let condensedArray;
|
|
250
|
-
try {
|
|
251
|
-
const jsonMatch = result.match(/\[[\s\S]*\]/);
|
|
252
|
-
if (!jsonMatch)
|
|
253
|
-
throw new Error('No JSON array');
|
|
254
|
-
condensedArray = JSON.parse(jsonMatch[0]);
|
|
255
|
-
}
|
|
256
|
-
catch {
|
|
257
|
-
throw new Error('无法解析 Haiku 返回的 JSON');
|
|
258
|
-
}
|
|
259
|
-
const condensedBodies = new Map();
|
|
260
|
-
for (const item of condensedArray) {
|
|
261
|
-
condensedBodies.set(item.turn, item.condensed);
|
|
406
|
+
return null;
|
|
407
|
+
// For reorganize, we use iterative condense on v0 turns with attention hints in prompt
|
|
408
|
+
const workingTurns = originalTurns.map(t => ({ ...t, condensed: false }));
|
|
409
|
+
// Mark high-attention turns as uncondensable (force keep)
|
|
410
|
+
const highSet = new Set(highAttention);
|
|
411
|
+
// Custom iterative condense with attention-aware prompt
|
|
412
|
+
const halfWindow = HALF_WINDOW_TOKENS;
|
|
413
|
+
let condensedUpTo = 0;
|
|
414
|
+
const cohesionMap = {};
|
|
415
|
+
// Pre-truncate oversized turns
|
|
416
|
+
for (let i = 0; i < workingTurns.length; i++) {
|
|
417
|
+
if (workingTurns[i].tokens > halfWindow * 0.8) {
|
|
418
|
+
workingTurns[i] = truncateTurn(workingTurns[i], Math.floor(halfWindow * 0.7));
|
|
419
|
+
}
|
|
262
420
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
421
|
+
while (condensedUpTo < workingTurns.length) {
|
|
422
|
+
let segStart = 0;
|
|
423
|
+
let contextSummary = '';
|
|
424
|
+
const prefixTokens = workingTurns.slice(0, condensedUpTo).reduce((s, t) => s + t.tokens + 20, 0);
|
|
425
|
+
if (prefixTokens > halfWindow * 0.5 && condensedUpTo > 0) {
|
|
426
|
+
const cutIdx = findLowestCohesionCut(workingTurns, 0, condensedUpTo);
|
|
427
|
+
contextSummary = generateContextSummary(workingTurns.slice(0, cutIdx));
|
|
428
|
+
segStart = cutIdx;
|
|
429
|
+
}
|
|
430
|
+
const segTurns = workingTurns.slice(segStart);
|
|
431
|
+
const { endIdx: relEnd } = selectSegment(segTurns, 0, halfWindow);
|
|
432
|
+
const absEnd = segStart + relEnd;
|
|
433
|
+
if (absEnd <= condensedUpTo)
|
|
434
|
+
break;
|
|
435
|
+
// Build reorganize prompt
|
|
436
|
+
const promptParts = [
|
|
437
|
+
`你是一个对话重整器。基于使用数据重新缩减对话。`,
|
|
438
|
+
``,
|
|
439
|
+
`高关注轮次(保留更多细节,轻度缩减或不缩减):${highAttention.join(', ')}`,
|
|
440
|
+
`低关注轮次(大幅缩减):${lowAttention.join(', ')}`,
|
|
441
|
+
`从未访问的轮次(高度缩减为一句话):${neverAccessed.join(', ')}`,
|
|
442
|
+
``,
|
|
443
|
+
`硬性规则:`,
|
|
444
|
+
`1. 标记了 [已缩减] 的轮次 → condensed 必须为 null`,
|
|
445
|
+
`2. 用户纠正/否定行为的发言 → condensed 必须为 null`,
|
|
446
|
+
`3. 绝不改变语义方向`,
|
|
447
|
+
`4. 保留所有数字、标识符、文件路径`,
|
|
448
|
+
``,
|
|
449
|
+
`对每轮输出 JSON:[{"turn":"U1","condensed":"缩减内容或null","cohesion":0.8},...]`,
|
|
450
|
+
``,
|
|
451
|
+
];
|
|
452
|
+
if (contextSummary)
|
|
453
|
+
promptParts.push(`[前文摘要:${contextSummary}]`, '');
|
|
454
|
+
promptParts.push('对话:');
|
|
455
|
+
for (let i = segStart; i < absEnd; i++) {
|
|
456
|
+
const t = workingTurns[i];
|
|
457
|
+
if (i < condensedUpTo) {
|
|
458
|
+
promptParts.push(`## ${t.id} [已缩减]`, t.body, '');
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
promptParts.push(`## ${t.id}`, t.body, '');
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
const results = await callHaikuAndParse(promptParts.join('\n'), workingTurns, segStart, absEnd, condensedUpTo);
|
|
465
|
+
// Apply with high-attention protection
|
|
466
|
+
for (let i = condensedUpTo; i < absEnd && i < workingTurns.length; i++) {
|
|
467
|
+
const t = workingTurns[i];
|
|
468
|
+
const r = results.get(t.id);
|
|
469
|
+
if (r?.cohesion !== undefined) {
|
|
470
|
+
t.cohesion = r.cohesion;
|
|
471
|
+
cohesionMap[t.id] = r.cohesion;
|
|
472
|
+
}
|
|
473
|
+
if (t.condensed)
|
|
474
|
+
continue;
|
|
475
|
+
if (t.id.startsWith('U') && UNCONDENSABLE_RE.test(t.body)) {
|
|
476
|
+
t.condensed = true;
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
if (highSet.has(t.id)) {
|
|
480
|
+
t.condensed = true;
|
|
481
|
+
continue;
|
|
482
|
+
} // Protect high-attention
|
|
483
|
+
if (r && r.condensed !== null && r.condensed !== undefined) {
|
|
484
|
+
t.body = r.condensed;
|
|
485
|
+
t.tokens = estimateTokens(r.condensed);
|
|
486
|
+
}
|
|
487
|
+
t.condensed = true;
|
|
267
488
|
}
|
|
489
|
+
condensedUpTo = absEnd;
|
|
268
490
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
.filter(n => !isNaN(n));
|
|
491
|
+
// Build final
|
|
492
|
+
const versionNumbers = Object.keys(meta.versions).map(v => parseInt(v.replace('v', ''))).filter(n => !isNaN(n));
|
|
272
493
|
const nextNum = Math.max(...versionNumbers) + 1;
|
|
273
494
|
const nextVersion = `v${nextNum}`;
|
|
274
|
-
const condensedContent =
|
|
495
|
+
const condensedContent = buildFinalContent(originalTurns, workingTurns, new Map(), nextNum);
|
|
275
496
|
const afterTokens = estimateTokens(condensedContent);
|
|
276
497
|
const latestEntry = meta.versions[meta.latest];
|
|
277
498
|
const beforeTokens = latestEntry?.tokens ?? meta.original_tokens;
|
|
@@ -288,6 +509,7 @@ ${v0Content.slice(0, 80000)}`;
|
|
|
288
509
|
meta.latest = nextVersion;
|
|
289
510
|
meta.reorganize_count += 1;
|
|
290
511
|
meta.last_reorganize_at = new Date().toISOString();
|
|
512
|
+
meta.cohesion_map = { ...meta.cohesion_map, ...cohesionMap };
|
|
291
513
|
(0, conversation_sync_1.writeMeta)(convDir, meta);
|
|
292
514
|
return { version: nextVersion, before_tokens: beforeTokens, after_tokens: afterTokens, high_attention_turns: highAttention };
|
|
293
515
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condenser.js","sourceRoot":"","sources":["../../src/information/condenser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"condenser.js","sourceRoot":"","sources":["../../src/information/condenser.ts"],"names":[],"mappings":"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"}
|