opc-agent 4.1.10 → 4.1.11
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/dist/cli.js +35 -48
- package/dist/cli.js.map +1 -1
- package/dist/core/runtime.d.ts.map +1 -1
- package/dist/core/runtime.js +41 -6
- package/dist/core/runtime.js.map +1 -1
- package/dist/memory/evolve-engine.d.ts +105 -0
- package/dist/memory/evolve-engine.d.ts.map +1 -0
- package/dist/memory/evolve-engine.js +450 -0
- package/dist/memory/evolve-engine.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* KnowledgeEvolveEngine — Local-model-driven knowledge distillation
|
|
4
|
+
*
|
|
5
|
+
* Core principle: evolve MUST use local Ollama model (zero cost).
|
|
6
|
+
* Chat model can be GPT-4o/Claude, but knowledge work is always local.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* Agent conversations → Extract insights → Deduplicate → Distill → Promote upward
|
|
10
|
+
* workstation (工位) → job (岗位) → industry (行业)
|
|
11
|
+
*
|
|
12
|
+
* Triggers:
|
|
13
|
+
* 1. After every N conversations (configurable, default 10)
|
|
14
|
+
* 2. Periodic timer (configurable, default 6h)
|
|
15
|
+
* 3. Manual `opc brain evolve`
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.AutoEvolveScheduler = exports.KnowledgeEvolveEngine = void 0;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
// Prompts for local LLM — kept short for small models
|
|
55
|
+
const EXTRACT_PROMPT = `Extract key knowledge from this conversation. Output JSON array of insights.
|
|
56
|
+
Each insight: { "title": "short title", "content": "key information", "tags": ["tag1"], "confidence": 0.0-1.0 }
|
|
57
|
+
Only extract reusable knowledge (facts, procedures, preferences), not casual chat.
|
|
58
|
+
If nothing worth saving, return [].
|
|
59
|
+
|
|
60
|
+
Conversation:
|
|
61
|
+
`;
|
|
62
|
+
const DEDUP_PROMPT = `Compare these two knowledge entries. Are they about the same topic?
|
|
63
|
+
If yes, merge them into one better entry. If no, return null.
|
|
64
|
+
Respond JSON only: { "isDuplicate": boolean, "merged": { "title": string, "content": string, "confidence": number } | null }
|
|
65
|
+
|
|
66
|
+
Entry A:
|
|
67
|
+
{A}
|
|
68
|
+
|
|
69
|
+
Entry B:
|
|
70
|
+
{B}
|
|
71
|
+
`;
|
|
72
|
+
const DISTILL_PROMPT = `Distill these workstation-level knowledge entries into a higher-level summary suitable for the {TARGET_TIER} tier.
|
|
73
|
+
Remove agent-specific details, keep universal patterns.
|
|
74
|
+
Output JSON: { "title": string, "content": string, "tags": [string], "confidence": number }
|
|
75
|
+
|
|
76
|
+
Entries:
|
|
77
|
+
{ENTRIES}
|
|
78
|
+
`;
|
|
79
|
+
class KnowledgeEvolveEngine {
|
|
80
|
+
config;
|
|
81
|
+
ollamaUrl;
|
|
82
|
+
model;
|
|
83
|
+
knowledgeDir;
|
|
84
|
+
conversationCount = 0;
|
|
85
|
+
timer = null;
|
|
86
|
+
constructor(agentDir, config = {}) {
|
|
87
|
+
this.config = {
|
|
88
|
+
enabled: config.enabled !== false,
|
|
89
|
+
localModel: config.localModel,
|
|
90
|
+
ollamaUrl: config.ollamaUrl || process.env.OLLAMA_BASE_URL || 'http://localhost:11434/v1',
|
|
91
|
+
conversationThreshold: config.conversationThreshold ?? 10,
|
|
92
|
+
intervalMs: config.intervalMs ?? 6 * 60 * 60 * 1000, // 6h
|
|
93
|
+
maxPagesPerTier: config.maxPagesPerTier ?? 100,
|
|
94
|
+
};
|
|
95
|
+
this.ollamaUrl = this.config.ollamaUrl;
|
|
96
|
+
this.model = this.config.localModel || '';
|
|
97
|
+
this.knowledgeDir = path.join(agentDir, '.opc', 'knowledge');
|
|
98
|
+
fs.mkdirSync(this.knowledgeDir, { recursive: true });
|
|
99
|
+
}
|
|
100
|
+
/** Auto-detect best local Ollama model for evolve tasks */
|
|
101
|
+
async detectLocalModel() {
|
|
102
|
+
if (this.model)
|
|
103
|
+
return this.model;
|
|
104
|
+
try {
|
|
105
|
+
const tagsUrl = this.ollamaUrl.replace('/v1', '/api/tags');
|
|
106
|
+
const res = await fetch(tagsUrl);
|
|
107
|
+
if (!res.ok)
|
|
108
|
+
return 'qwen2.5:0.5b';
|
|
109
|
+
const data = await res.json();
|
|
110
|
+
const models = (data.models || []).map((m) => m.name);
|
|
111
|
+
// Prefer larger models for better distillation
|
|
112
|
+
const preferred = ['qwen2.5:32b', 'qwen2.5:14b', 'qwen2.5:7b', 'llama3.1:8b', 'qwen2.5:3b', 'qwen2.5:1.5b', 'qwen2.5:0.5b'];
|
|
113
|
+
for (const p of preferred) {
|
|
114
|
+
if (models.includes(p)) {
|
|
115
|
+
this.model = p;
|
|
116
|
+
return p;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (models.length > 0) {
|
|
120
|
+
this.model = models[0];
|
|
121
|
+
return models[0];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch { /* Ollama not running */ }
|
|
125
|
+
this.model = 'qwen2.5:0.5b';
|
|
126
|
+
return this.model;
|
|
127
|
+
}
|
|
128
|
+
/** Call local Ollama model */
|
|
129
|
+
async callLocal(prompt, system) {
|
|
130
|
+
const model = await this.detectLocalModel();
|
|
131
|
+
const messages = [];
|
|
132
|
+
if (system)
|
|
133
|
+
messages.push({ role: 'system', content: system });
|
|
134
|
+
messages.push({ role: 'user', content: prompt });
|
|
135
|
+
try {
|
|
136
|
+
const res = await fetch(`${this.ollamaUrl}/chat/completions`, {
|
|
137
|
+
method: 'POST',
|
|
138
|
+
headers: { 'Content-Type': 'application/json' },
|
|
139
|
+
body: JSON.stringify({ model, messages, temperature: 0.3, max_tokens: 1000 }),
|
|
140
|
+
});
|
|
141
|
+
if (!res.ok)
|
|
142
|
+
return '';
|
|
143
|
+
const data = await res.json();
|
|
144
|
+
return data.choices?.[0]?.message?.content || '';
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return '';
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** Extract knowledge from conversation messages */
|
|
151
|
+
async extractFromConversation(messages) {
|
|
152
|
+
if (messages.length < 2)
|
|
153
|
+
return [];
|
|
154
|
+
const conversationText = messages
|
|
155
|
+
.slice(-20) // Last 20 messages max
|
|
156
|
+
.map(m => `${m.role}: ${m.content.substring(0, 200)}`)
|
|
157
|
+
.join('\n');
|
|
158
|
+
const response = await this.callLocal(EXTRACT_PROMPT + conversationText, 'You are a knowledge extraction engine. Output valid JSON arrays only.');
|
|
159
|
+
const pages = [];
|
|
160
|
+
try {
|
|
161
|
+
const match = response.match(/\[[\s\S]*\]/);
|
|
162
|
+
if (!match)
|
|
163
|
+
return [];
|
|
164
|
+
const insights = JSON.parse(match[0]);
|
|
165
|
+
if (!Array.isArray(insights))
|
|
166
|
+
return [];
|
|
167
|
+
for (const insight of insights) {
|
|
168
|
+
if (!insight.title || !insight.content)
|
|
169
|
+
continue;
|
|
170
|
+
if ((insight.confidence || 0) < 0.3)
|
|
171
|
+
continue;
|
|
172
|
+
const slug = this.slugify(insight.title);
|
|
173
|
+
pages.push({
|
|
174
|
+
slug,
|
|
175
|
+
content: `## ${insight.title}\n\n${insight.content}`,
|
|
176
|
+
tier: 'workstation',
|
|
177
|
+
source: 'conversation',
|
|
178
|
+
confidence: insight.confidence || 0.5,
|
|
179
|
+
createdAt: new Date().toISOString(),
|
|
180
|
+
updatedAt: new Date().toISOString(),
|
|
181
|
+
usageCount: 1,
|
|
182
|
+
tags: insight.tags || [],
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch { /* Parse error, skip */ }
|
|
187
|
+
// Save extracted pages
|
|
188
|
+
for (const page of pages) {
|
|
189
|
+
this.savePage(page);
|
|
190
|
+
}
|
|
191
|
+
return pages;
|
|
192
|
+
}
|
|
193
|
+
/** Deduplicate knowledge pages within a tier */
|
|
194
|
+
async deduplicateInTier(tier) {
|
|
195
|
+
const pages = this.loadPages(tier);
|
|
196
|
+
if (pages.length < 2)
|
|
197
|
+
return 0;
|
|
198
|
+
let deduped = 0;
|
|
199
|
+
const toRemove = new Set();
|
|
200
|
+
for (let i = 0; i < pages.length; i++) {
|
|
201
|
+
if (toRemove.has(pages[i].slug))
|
|
202
|
+
continue;
|
|
203
|
+
for (let j = i + 1; j < pages.length; j++) {
|
|
204
|
+
if (toRemove.has(pages[j].slug))
|
|
205
|
+
continue;
|
|
206
|
+
const prompt = DEDUP_PROMPT
|
|
207
|
+
.replace('{A}', pages[i].content.substring(0, 300))
|
|
208
|
+
.replace('{B}', pages[j].content.substring(0, 300));
|
|
209
|
+
const response = await this.callLocal(prompt, 'Respond in JSON only.');
|
|
210
|
+
try {
|
|
211
|
+
const match = response.match(/\{[\s\S]*\}/);
|
|
212
|
+
if (!match)
|
|
213
|
+
continue;
|
|
214
|
+
const result = JSON.parse(match[0]);
|
|
215
|
+
if (result.isDuplicate && result.merged) {
|
|
216
|
+
// Update A with merged content, mark B for removal
|
|
217
|
+
pages[i].content = `## ${result.merged.title}\n\n${result.merged.content}`;
|
|
218
|
+
pages[i].confidence = Math.max(pages[i].confidence, result.merged.confidence || pages[i].confidence);
|
|
219
|
+
pages[i].usageCount += pages[j].usageCount;
|
|
220
|
+
pages[i].updatedAt = new Date().toISOString();
|
|
221
|
+
toRemove.add(pages[j].slug);
|
|
222
|
+
deduped++;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Save results
|
|
231
|
+
for (const page of pages) {
|
|
232
|
+
if (!toRemove.has(page.slug)) {
|
|
233
|
+
this.savePage(page);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.deletePage(page.slug, tier);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return deduped;
|
|
240
|
+
}
|
|
241
|
+
/** Promote knowledge upward: workstation → job → industry */
|
|
242
|
+
async promoteKnowledge() {
|
|
243
|
+
let promoted = 0;
|
|
244
|
+
// Workstation → Job: pages with high confidence + usage
|
|
245
|
+
const wsPages = this.loadPages('workstation')
|
|
246
|
+
.filter(p => p.confidence >= 0.7 && p.usageCount >= 3);
|
|
247
|
+
if (wsPages.length >= 3) {
|
|
248
|
+
const entries = wsPages.slice(0, 10).map(p => p.content.substring(0, 200)).join('\n---\n');
|
|
249
|
+
const prompt = DISTILL_PROMPT
|
|
250
|
+
.replace('{TARGET_TIER}', 'job (岗位)')
|
|
251
|
+
.replace('{ENTRIES}', entries);
|
|
252
|
+
const response = await this.callLocal(prompt, 'Output JSON only.');
|
|
253
|
+
try {
|
|
254
|
+
const match = response.match(/\{[\s\S]*\}/);
|
|
255
|
+
if (match) {
|
|
256
|
+
const result = JSON.parse(match[0]);
|
|
257
|
+
if (result.title && result.content) {
|
|
258
|
+
const page = {
|
|
259
|
+
slug: `promoted-${this.slugify(result.title)}`,
|
|
260
|
+
content: `## ${result.title}\n\n${result.content}`,
|
|
261
|
+
tier: 'job',
|
|
262
|
+
source: 'evolve-promotion',
|
|
263
|
+
confidence: result.confidence || 0.8,
|
|
264
|
+
createdAt: new Date().toISOString(),
|
|
265
|
+
updatedAt: new Date().toISOString(),
|
|
266
|
+
usageCount: 0,
|
|
267
|
+
tags: result.tags || ['promoted'],
|
|
268
|
+
};
|
|
269
|
+
this.savePage(page);
|
|
270
|
+
promoted++;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch { /* skip */ }
|
|
275
|
+
}
|
|
276
|
+
// Job → Industry: high confidence job pages
|
|
277
|
+
const jobPages = this.loadPages('job')
|
|
278
|
+
.filter(p => p.confidence >= 0.85 && p.usageCount >= 5);
|
|
279
|
+
if (jobPages.length >= 3) {
|
|
280
|
+
const entries = jobPages.slice(0, 10).map(p => p.content.substring(0, 200)).join('\n---\n');
|
|
281
|
+
const prompt = DISTILL_PROMPT
|
|
282
|
+
.replace('{TARGET_TIER}', 'industry (行业)')
|
|
283
|
+
.replace('{ENTRIES}', entries);
|
|
284
|
+
const response = await this.callLocal(prompt, 'Output JSON only.');
|
|
285
|
+
try {
|
|
286
|
+
const match = response.match(/\{[\s\S]*\}/);
|
|
287
|
+
if (match) {
|
|
288
|
+
const result = JSON.parse(match[0]);
|
|
289
|
+
if (result.title && result.content) {
|
|
290
|
+
const page = {
|
|
291
|
+
slug: `industry-${this.slugify(result.title)}`,
|
|
292
|
+
content: `## ${result.title}\n\n${result.content}`,
|
|
293
|
+
tier: 'industry',
|
|
294
|
+
source: 'evolve-promotion',
|
|
295
|
+
confidence: result.confidence || 0.9,
|
|
296
|
+
createdAt: new Date().toISOString(),
|
|
297
|
+
updatedAt: new Date().toISOString(),
|
|
298
|
+
usageCount: 0,
|
|
299
|
+
tags: result.tags || ['promoted'],
|
|
300
|
+
};
|
|
301
|
+
this.savePage(page);
|
|
302
|
+
promoted++;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
catch { /* skip */ }
|
|
307
|
+
}
|
|
308
|
+
return promoted;
|
|
309
|
+
}
|
|
310
|
+
/** Full evolve cycle: extract → dedup → promote */
|
|
311
|
+
async evolve(recentMessages) {
|
|
312
|
+
const result = { extracted: 0, deduplicated: 0, promoted: 0, errors: [] };
|
|
313
|
+
if (!this.config.enabled)
|
|
314
|
+
return result;
|
|
315
|
+
try {
|
|
316
|
+
// Step 1: Extract from recent conversation
|
|
317
|
+
if (recentMessages && recentMessages.length > 0) {
|
|
318
|
+
const pages = await this.extractFromConversation(recentMessages);
|
|
319
|
+
result.extracted = pages.length;
|
|
320
|
+
}
|
|
321
|
+
// Step 2: Deduplicate within each tier
|
|
322
|
+
result.deduplicated += await this.deduplicateInTier('workstation');
|
|
323
|
+
result.deduplicated += await this.deduplicateInTier('job');
|
|
324
|
+
// Step 3: Promote upward
|
|
325
|
+
result.promoted = await this.promoteKnowledge();
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
result.errors.push(err.message || String(err));
|
|
329
|
+
}
|
|
330
|
+
// Save evolve log
|
|
331
|
+
this.saveEvolveLog(result);
|
|
332
|
+
return result;
|
|
333
|
+
}
|
|
334
|
+
/** Called after each conversation turn */
|
|
335
|
+
onConversationTurn(messages) {
|
|
336
|
+
this.conversationCount++;
|
|
337
|
+
if (this.conversationCount >= (this.config.conversationThreshold || 10)) {
|
|
338
|
+
this.conversationCount = 0;
|
|
339
|
+
// Background evolve — don't await, fire and forget
|
|
340
|
+
this.evolve(messages).catch(() => { });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/** Start periodic evolve timer */
|
|
344
|
+
startPeriodicEvolve() {
|
|
345
|
+
if (this.timer)
|
|
346
|
+
return;
|
|
347
|
+
const interval = this.config.intervalMs || 6 * 60 * 60 * 1000;
|
|
348
|
+
this.timer = setInterval(() => {
|
|
349
|
+
this.evolve().catch(() => { });
|
|
350
|
+
}, interval);
|
|
351
|
+
}
|
|
352
|
+
/** Stop periodic evolve */
|
|
353
|
+
stopPeriodicEvolve() {
|
|
354
|
+
if (this.timer) {
|
|
355
|
+
clearInterval(this.timer);
|
|
356
|
+
this.timer = null;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/** Get stats for all tiers */
|
|
360
|
+
getStats() {
|
|
361
|
+
return {
|
|
362
|
+
workstation: this.loadPages('workstation').length,
|
|
363
|
+
job: this.loadPages('job').length,
|
|
364
|
+
industry: this.loadPages('industry').length,
|
|
365
|
+
lastEvolve: this.getLastEvolveTime(),
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
// ─── File I/O ────────────────────────────────────────────
|
|
369
|
+
savePage(page) {
|
|
370
|
+
const tierDir = path.join(this.knowledgeDir, page.tier);
|
|
371
|
+
fs.mkdirSync(tierDir, { recursive: true });
|
|
372
|
+
const filePath = path.join(tierDir, `${page.slug}.json`);
|
|
373
|
+
fs.writeFileSync(filePath, JSON.stringify(page, null, 2));
|
|
374
|
+
}
|
|
375
|
+
loadPages(tier) {
|
|
376
|
+
const tierDir = path.join(this.knowledgeDir, tier);
|
|
377
|
+
if (!fs.existsSync(tierDir))
|
|
378
|
+
return [];
|
|
379
|
+
return fs.readdirSync(tierDir)
|
|
380
|
+
.filter(f => f.endsWith('.json'))
|
|
381
|
+
.map(f => {
|
|
382
|
+
try {
|
|
383
|
+
return JSON.parse(fs.readFileSync(path.join(tierDir, f), 'utf-8'));
|
|
384
|
+
}
|
|
385
|
+
catch {
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
})
|
|
389
|
+
.filter((p) => p !== null);
|
|
390
|
+
}
|
|
391
|
+
deletePage(slug, tier) {
|
|
392
|
+
const filePath = path.join(this.knowledgeDir, tier, `${slug}.json`);
|
|
393
|
+
try {
|
|
394
|
+
fs.unlinkSync(filePath);
|
|
395
|
+
}
|
|
396
|
+
catch { /* ok */ }
|
|
397
|
+
}
|
|
398
|
+
saveEvolveLog(result) {
|
|
399
|
+
const logPath = path.join(this.knowledgeDir, 'evolve-log.json');
|
|
400
|
+
let logs = [];
|
|
401
|
+
try {
|
|
402
|
+
logs = JSON.parse(fs.readFileSync(logPath, 'utf-8'));
|
|
403
|
+
}
|
|
404
|
+
catch { /* ok */ }
|
|
405
|
+
logs.push({ ...result, timestamp: new Date().toISOString() });
|
|
406
|
+
// Keep last 100 entries
|
|
407
|
+
if (logs.length > 100)
|
|
408
|
+
logs = logs.slice(-100);
|
|
409
|
+
fs.writeFileSync(logPath, JSON.stringify(logs, null, 2));
|
|
410
|
+
}
|
|
411
|
+
getLastEvolveTime() {
|
|
412
|
+
const logPath = path.join(this.knowledgeDir, 'evolve-log.json');
|
|
413
|
+
try {
|
|
414
|
+
const logs = JSON.parse(fs.readFileSync(logPath, 'utf-8'));
|
|
415
|
+
return logs[logs.length - 1]?.timestamp;
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
return undefined;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
slugify(text) {
|
|
422
|
+
return text
|
|
423
|
+
.toLowerCase()
|
|
424
|
+
.replace(/[^a-z0-9\u4e00-\u9fff]+/g, '-')
|
|
425
|
+
.replace(/^-|-$/g, '')
|
|
426
|
+
.substring(0, 60);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
exports.KnowledgeEvolveEngine = KnowledgeEvolveEngine;
|
|
430
|
+
/**
|
|
431
|
+
* AutoEvolveScheduler — integrates with runtime
|
|
432
|
+
*/
|
|
433
|
+
class AutoEvolveScheduler {
|
|
434
|
+
engine;
|
|
435
|
+
constructor(agentDir, config) {
|
|
436
|
+
this.engine = new KnowledgeEvolveEngine(agentDir, config);
|
|
437
|
+
}
|
|
438
|
+
async start() {
|
|
439
|
+
await this.engine.detectLocalModel();
|
|
440
|
+
this.engine.startPeriodicEvolve();
|
|
441
|
+
}
|
|
442
|
+
stop() {
|
|
443
|
+
this.engine.stopPeriodicEvolve();
|
|
444
|
+
}
|
|
445
|
+
getEngine() {
|
|
446
|
+
return this.engine;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
exports.AutoEvolveScheduler = AutoEvolveScheduler;
|
|
450
|
+
//# sourceMappingURL=evolve-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evolve-engine.js","sourceRoot":"","sources":["../../src/memory/evolve-engine.ts"],"names":[],"mappings":"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"}
|