@jclaw/core 0.1.0

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.
Files changed (189) hide show
  1. package/dist/auto-skill/generator.d.ts +30 -0
  2. package/dist/auto-skill/generator.d.ts.map +1 -0
  3. package/dist/auto-skill/generator.js +262 -0
  4. package/dist/auto-skill/generator.js.map +1 -0
  5. package/dist/auto-skill/index.d.ts +11 -0
  6. package/dist/auto-skill/index.d.ts.map +1 -0
  7. package/dist/auto-skill/index.js +10 -0
  8. package/dist/auto-skill/index.js.map +1 -0
  9. package/dist/auto-skill/installer.d.ts +44 -0
  10. package/dist/auto-skill/installer.d.ts.map +1 -0
  11. package/dist/auto-skill/installer.js +201 -0
  12. package/dist/auto-skill/installer.js.map +1 -0
  13. package/dist/auto-skill/types.d.ts +179 -0
  14. package/dist/auto-skill/types.d.ts.map +1 -0
  15. package/dist/auto-skill/types.js +9 -0
  16. package/dist/auto-skill/types.js.map +1 -0
  17. package/dist/cli/commands/config.d.ts +16 -0
  18. package/dist/cli/commands/config.d.ts.map +1 -0
  19. package/dist/cli/commands/config.js +119 -0
  20. package/dist/cli/commands/config.js.map +1 -0
  21. package/dist/cli/commands/exec.d.ts +12 -0
  22. package/dist/cli/commands/exec.d.ts.map +1 -0
  23. package/dist/cli/commands/exec.js +41 -0
  24. package/dist/cli/commands/exec.js.map +1 -0
  25. package/dist/cli/index.d.ts +10 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +91 -0
  28. package/dist/cli/index.js.map +1 -0
  29. package/dist/cli/run.d.ts +9 -0
  30. package/dist/cli/run.d.ts.map +1 -0
  31. package/dist/cli/run.js +13 -0
  32. package/dist/cli/run.js.map +1 -0
  33. package/dist/context/index.d.ts +6 -0
  34. package/dist/context/index.d.ts.map +1 -0
  35. package/dist/context/index.js +12 -0
  36. package/dist/context/index.js.map +1 -0
  37. package/dist/context/memsearch-client.d.ts +34 -0
  38. package/dist/context/memsearch-client.d.ts.map +1 -0
  39. package/dist/context/memsearch-client.js +182 -0
  40. package/dist/context/memsearch-client.js.map +1 -0
  41. package/dist/context/mock-client.d.ts +116 -0
  42. package/dist/context/mock-client.d.ts.map +1 -0
  43. package/dist/context/mock-client.js +150 -0
  44. package/dist/context/mock-client.js.map +1 -0
  45. package/dist/context/openviking-client.d.ts +87 -0
  46. package/dist/context/openviking-client.d.ts.map +1 -0
  47. package/dist/context/openviking-client.js +166 -0
  48. package/dist/context/openviking-client.js.map +1 -0
  49. package/dist/context/openviking-mcp-client.d.ts +29 -0
  50. package/dist/context/openviking-mcp-client.d.ts.map +1 -0
  51. package/dist/context/openviking-mcp-client.js +81 -0
  52. package/dist/context/openviking-mcp-client.js.map +1 -0
  53. package/dist/context/simple-memory-client.d.ts +43 -0
  54. package/dist/context/simple-memory-client.d.ts.map +1 -0
  55. package/dist/context/simple-memory-client.enhanced.d.ts +39 -0
  56. package/dist/context/simple-memory-client.enhanced.d.ts.map +1 -0
  57. package/dist/context/simple-memory-client.enhanced.js +207 -0
  58. package/dist/context/simple-memory-client.enhanced.js.map +1 -0
  59. package/dist/context/simple-memory-client.js +270 -0
  60. package/dist/context/simple-memory-client.js.map +1 -0
  61. package/dist/evolution/continuous.d.ts +127 -0
  62. package/dist/evolution/continuous.d.ts.map +1 -0
  63. package/dist/evolution/continuous.js +238 -0
  64. package/dist/evolution/continuous.js.map +1 -0
  65. package/dist/evolution/engine.d.ts +97 -0
  66. package/dist/evolution/engine.d.ts.map +1 -0
  67. package/dist/evolution/engine.js +187 -0
  68. package/dist/evolution/engine.js.map +1 -0
  69. package/dist/evolution/evolver-adapter.d.ts +104 -0
  70. package/dist/evolution/evolver-adapter.d.ts.map +1 -0
  71. package/dist/evolution/evolver-adapter.js +227 -0
  72. package/dist/evolution/evolver-adapter.js.map +1 -0
  73. package/dist/evolution/index.d.ts +9 -0
  74. package/dist/evolution/index.d.ts.map +1 -0
  75. package/dist/evolution/index.js +8 -0
  76. package/dist/evolution/index.js.map +1 -0
  77. package/dist/evolution/memory.d.ts +106 -0
  78. package/dist/evolution/memory.d.ts.map +1 -0
  79. package/dist/evolution/memory.js +232 -0
  80. package/dist/evolution/memory.js.map +1 -0
  81. package/dist/evolution/mutation.d.ts +66 -0
  82. package/dist/evolution/mutation.d.ts.map +1 -0
  83. package/dist/evolution/mutation.js +139 -0
  84. package/dist/evolution/mutation.js.map +1 -0
  85. package/dist/evolution/sandbox.d.ts +96 -0
  86. package/dist/evolution/sandbox.d.ts.map +1 -0
  87. package/dist/evolution/sandbox.js +194 -0
  88. package/dist/evolution/sandbox.js.map +1 -0
  89. package/dist/evolution/types.d.ts +93 -0
  90. package/dist/evolution/types.d.ts.map +1 -0
  91. package/dist/evolution/types.js +9 -0
  92. package/dist/evolution/types.js.map +1 -0
  93. package/dist/executor/index.d.ts +10 -0
  94. package/dist/executor/index.d.ts.map +1 -0
  95. package/dist/executor/index.js +10 -0
  96. package/dist/executor/index.js.map +1 -0
  97. package/dist/executor/interface.d.ts +9 -0
  98. package/dist/executor/interface.d.ts.map +1 -0
  99. package/dist/executor/interface.js +9 -0
  100. package/dist/executor/interface.js.map +1 -0
  101. package/dist/executor/local.d.ts +36 -0
  102. package/dist/executor/local.d.ts.map +1 -0
  103. package/dist/executor/local.js +95 -0
  104. package/dist/executor/local.js.map +1 -0
  105. package/dist/extension-system/capability-router.d.ts +106 -0
  106. package/dist/extension-system/capability-router.d.ts.map +1 -0
  107. package/dist/extension-system/capability-router.js +167 -0
  108. package/dist/extension-system/capability-router.js.map +1 -0
  109. package/dist/extension-system/index.d.ts +11 -0
  110. package/dist/extension-system/index.d.ts.map +1 -0
  111. package/dist/extension-system/index.js +11 -0
  112. package/dist/extension-system/index.js.map +1 -0
  113. package/dist/extension-system/loader.d.ts +93 -0
  114. package/dist/extension-system/loader.d.ts.map +1 -0
  115. package/dist/extension-system/loader.js +245 -0
  116. package/dist/extension-system/loader.js.map +1 -0
  117. package/dist/extension-system/registry.d.ts +112 -0
  118. package/dist/extension-system/registry.d.ts.map +1 -0
  119. package/dist/extension-system/registry.js +161 -0
  120. package/dist/extension-system/registry.js.map +1 -0
  121. package/dist/index.d.ts +14 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +20 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/network/client.d.ts +130 -0
  126. package/dist/network/client.d.ts.map +1 -0
  127. package/dist/network/client.js +230 -0
  128. package/dist/network/client.js.map +1 -0
  129. package/dist/network/index.d.ts +10 -0
  130. package/dist/network/index.d.ts.map +1 -0
  131. package/dist/network/index.js +10 -0
  132. package/dist/network/index.js.map +1 -0
  133. package/dist/network/protocol.d.ts +159 -0
  134. package/dist/network/protocol.d.ts.map +1 -0
  135. package/dist/network/protocol.js +118 -0
  136. package/dist/network/protocol.js.map +1 -0
  137. package/dist/runtime/agent.d.ts +124 -0
  138. package/dist/runtime/agent.d.ts.map +1 -0
  139. package/dist/runtime/agent.js +286 -0
  140. package/dist/runtime/agent.js.map +1 -0
  141. package/dist/runtime/agent_fixed.d.ts +39 -0
  142. package/dist/runtime/agent_fixed.d.ts.map +1 -0
  143. package/dist/runtime/agent_fixed.js +193 -0
  144. package/dist/runtime/agent_fixed.js.map +1 -0
  145. package/dist/runtime/index.d.ts +11 -0
  146. package/dist/runtime/index.d.ts.map +1 -0
  147. package/dist/runtime/index.js +11 -0
  148. package/dist/runtime/index.js.map +1 -0
  149. package/dist/runtime/llm-client.d.ts +108 -0
  150. package/dist/runtime/llm-client.d.ts.map +1 -0
  151. package/dist/runtime/llm-client.js +125 -0
  152. package/dist/runtime/llm-client.js.map +1 -0
  153. package/dist/runtime/task-executor.d.ts +92 -0
  154. package/dist/runtime/task-executor.d.ts.map +1 -0
  155. package/dist/runtime/task-executor.js +203 -0
  156. package/dist/runtime/task-executor.js.map +1 -0
  157. package/dist/skill-sh/adapter.d.ts +40 -0
  158. package/dist/skill-sh/adapter.d.ts.map +1 -0
  159. package/dist/skill-sh/adapter.js +258 -0
  160. package/dist/skill-sh/adapter.js.map +1 -0
  161. package/dist/skill-sh/converter.d.ts +37 -0
  162. package/dist/skill-sh/converter.d.ts.map +1 -0
  163. package/dist/skill-sh/converter.js +175 -0
  164. package/dist/skill-sh/converter.js.map +1 -0
  165. package/dist/skill-sh/discovery.d.ts +29 -0
  166. package/dist/skill-sh/discovery.d.ts.map +1 -0
  167. package/dist/skill-sh/discovery.js +189 -0
  168. package/dist/skill-sh/discovery.js.map +1 -0
  169. package/dist/skill-sh/index.d.ts +19 -0
  170. package/dist/skill-sh/index.d.ts.map +1 -0
  171. package/dist/skill-sh/index.js +20 -0
  172. package/dist/skill-sh/index.js.map +1 -0
  173. package/dist/skill-sh/quality.d.ts +51 -0
  174. package/dist/skill-sh/quality.d.ts.map +1 -0
  175. package/dist/skill-sh/quality.js +146 -0
  176. package/dist/skill-sh/quality.js.map +1 -0
  177. package/dist/skill-sh/registry.d.ts +58 -0
  178. package/dist/skill-sh/registry.d.ts.map +1 -0
  179. package/dist/skill-sh/registry.js +118 -0
  180. package/dist/skill-sh/registry.js.map +1 -0
  181. package/dist/skill-sh/types.d.ts +228 -0
  182. package/dist/skill-sh/types.d.ts.map +1 -0
  183. package/dist/skill-sh/types.js +9 -0
  184. package/dist/skill-sh/types.js.map +1 -0
  185. package/dist/types.d.ts +199 -0
  186. package/dist/types.d.ts.map +1 -0
  187. package/dist/types.js +10 -0
  188. package/dist/types.js.map +1 -0
  189. package/package.json +41 -0
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Simple Memory Client - Enhanced Version
3
+ */
4
+ import { writeFile, readFile, mkdir } from 'fs/promises';
5
+ import { existsSync } from 'fs';
6
+ import { join } from 'path';
7
+ const DEFAULT_SYNONYMS = {
8
+ '用户': ['user', 'customer', 'client'],
9
+ '性能': ['performance', 'speed', 'optimization'],
10
+ '数据库': ['database', 'db', 'storage'],
11
+ '配置': ['config', 'configuration', 'settings'],
12
+ '接口': ['api', 'interface', 'endpoint'],
13
+ '部署': ['deploy', 'deployment', 'release'],
14
+ '测试': ['test', 'testing', 'spec'],
15
+ '日志': ['log', 'logging', 'logger'],
16
+ '错误': ['error', 'exception', 'bug'],
17
+ '优化': ['optimize', 'improve', 'enhance'],
18
+ };
19
+ function levenshteinDistance(a, b) {
20
+ if (a.length === 0)
21
+ return b.length;
22
+ if (b.length === 0)
23
+ return a.length;
24
+ const matrix = [];
25
+ for (let i = 0; i <= b.length; i++) {
26
+ matrix[i] = [i];
27
+ }
28
+ for (let j = 0; j <= a.length; j++) {
29
+ matrix[0][j] = j;
30
+ }
31
+ for (let i = 1; i <= b.length; i++) {
32
+ for (let j = 1; j <= a.length; j++) {
33
+ const substitutionCost = b.charAt(i - 1) === a.charAt(j - 1) ? 0 : 1;
34
+ const deletion = (matrix[i - 1][j] ?? 0) + 1;
35
+ const insertion = (matrix[i][j - 1] ?? 0) + 1;
36
+ const substitution = (matrix[i - 1][j - 1] ?? 0) + substitutionCost;
37
+ matrix[i][j] = Math.min(deletion, insertion, substitution);
38
+ }
39
+ }
40
+ return matrix[b.length][a.length] ?? 0;
41
+ }
42
+ function calculateSimilarity(a, b) {
43
+ const maxLen = Math.max(a.length, b.length);
44
+ if (maxLen === 0)
45
+ return 1;
46
+ return 1 - levenshteinDistance(a, b) / maxLen;
47
+ }
48
+ export class SimpleMemoryClient {
49
+ initialized = false;
50
+ config;
51
+ memories = new Map();
52
+ synonyms = new Map();
53
+ constructor(config = {}) {
54
+ this.config = {
55
+ memoryPath: config.memoryPath || './.jclaw/memory',
56
+ verbose: config.verbose || false,
57
+ enableSynonyms: config.enableSynonyms !== false,
58
+ enableFuzzyMatch: config.enableFuzzyMatch !== false,
59
+ fuzzyThreshold: config.fuzzyThreshold || 0.7,
60
+ };
61
+ this.initSynonyms();
62
+ }
63
+ initSynonyms() {
64
+ for (const [key, values] of Object.entries(DEFAULT_SYNONYMS)) {
65
+ this.synonyms.set(key, values);
66
+ for (const value of values) {
67
+ const existing = this.synonyms.get(value) || [];
68
+ if (!existing.includes(key)) {
69
+ this.synonyms.set(value, [...existing, key, ...values.filter(v => v !== value)]);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ async connect() {
75
+ if (!existsSync(this.config.memoryPath)) {
76
+ await mkdir(this.config.memoryPath, { recursive: true });
77
+ }
78
+ await this.loadAllLayers();
79
+ this.initialized = true;
80
+ }
81
+ async disconnect() {
82
+ await this.saveAllLayers();
83
+ this.initialized = false;
84
+ }
85
+ async query(question, options) {
86
+ if (!this.initialized)
87
+ throw new Error('Client not initialized');
88
+ const keywords = this.extractKeywords(question);
89
+ const results = [];
90
+ for (const entry of this.memories.values()) {
91
+ const searchResult = this.scoreEntry(entry, keywords);
92
+ if (searchResult.score > 0)
93
+ results.push(searchResult);
94
+ }
95
+ results.sort((a, b) => b.score - a.score);
96
+ const topK = options?.topK ?? 5;
97
+ const topResults = results.slice(0, topK);
98
+ for (const result of topResults) {
99
+ await this.updateAccessStats(result.entry.id);
100
+ }
101
+ return topResults.map(r => r.entry.content).join('\n\n---\n\n');
102
+ }
103
+ async saveMemory(content, title) {
104
+ const id = `memory-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
105
+ this.memories.set(id, {
106
+ id, content, title,
107
+ timestamp: Date.now(),
108
+ tags: [],
109
+ accessCount: 0,
110
+ lastAccessed: Date.now(),
111
+ layer: 'L0',
112
+ });
113
+ await this.saveAllLayers();
114
+ const date = new Date().toISOString().split('T')[0];
115
+ const filePath = join(this.config.memoryPath, `${date}.md`);
116
+ const entry = title ? `\n## ${title}\n${content}\n` : `\n${content}\n`;
117
+ await writeFile(filePath, entry, { flag: 'a' });
118
+ }
119
+ async addResource(resourcePath) {
120
+ const content = await readFile(resourcePath, 'utf-8');
121
+ const id = `resource-${Date.now()}`;
122
+ this.memories.set(id, {
123
+ id, content,
124
+ title: `Resource: ${resourcePath}`,
125
+ timestamp: Date.now(),
126
+ tags: ['resource'],
127
+ accessCount: 0,
128
+ lastAccessed: Date.now(),
129
+ layer: 'L2',
130
+ });
131
+ await this.saveAllLayers();
132
+ return id;
133
+ }
134
+ isConnected() {
135
+ return this.initialized;
136
+ }
137
+ getStats() {
138
+ const stats = { total: this.memories.size, L0: 0, L1: 0, L2: 0 };
139
+ for (const entry of this.memories.values()) {
140
+ stats[entry.layer]++;
141
+ }
142
+ return stats;
143
+ }
144
+ async compact() {
145
+ const now = Date.now();
146
+ const thirtyDaysAgo = now - 30 * 24 * 60 * 60 * 1000;
147
+ const sixtyDaysAgo = now - 60 * 24 * 60 * 60 * 1000;
148
+ for (const [id, entry] of this.memories) {
149
+ if (entry.layer === 'L0' && entry.lastAccessed < thirtyDaysAgo && entry.accessCount < 5) {
150
+ entry.layer = 'L1';
151
+ }
152
+ if (entry.layer === 'L1' && entry.lastAccessed < sixtyDaysAgo && entry.accessCount < 2) {
153
+ entry.layer = 'L2';
154
+ }
155
+ }
156
+ await this.saveAllLayers();
157
+ }
158
+ extractKeywords(text) {
159
+ const keywords = text.toLowerCase().replace(/[^\w\s\u4e00-\u9fa5]/g, ' ').split(/\s+/).filter(k => k.length > 1);
160
+ const expanded = [];
161
+ for (const keyword of keywords) {
162
+ expanded.push(keyword);
163
+ if (this.config.enableSynonyms) {
164
+ const syns = this.synonyms.get(keyword);
165
+ if (syns)
166
+ expanded.push(...syns);
167
+ }
168
+ }
169
+ return [...new Set(expanded)];
170
+ }
171
+ scoreEntry(entry, keywords) {
172
+ const text = (entry.content + ' ' + (entry.title || '') + ' ' + entry.tags.join(' ')).toLowerCase();
173
+ let maxScore = 0;
174
+ let matchType = 'exact';
175
+ for (const keyword of keywords) {
176
+ if (text.includes(keyword)) {
177
+ maxScore = Math.max(maxScore, 1.0);
178
+ matchType = 'exact';
179
+ continue;
180
+ }
181
+ if (this.config.enableSynonyms) {
182
+ const keywordSynonyms = this.synonyms.get(keyword) || [];
183
+ for (const syn of keywordSynonyms) {
184
+ if (text.includes(syn.toLowerCase())) {
185
+ maxScore = Math.max(maxScore, 0.8);
186
+ matchType = 'synonym';
187
+ break;
188
+ }
189
+ }
190
+ }
191
+ if (this.config.enableFuzzyMatch && maxScore < 0.8) {
192
+ const words = text.split(/\s+/);
193
+ for (const word of words) {
194
+ if (word.length > 3) {
195
+ const similarity = calculateSimilarity(keyword, word);
196
+ if (similarity >= this.config.fuzzyThreshold) {
197
+ maxScore = Math.max(maxScore, similarity * 0.6);
198
+ matchType = 'fuzzy';
199
+ }
200
+ }
201
+ }
202
+ }
203
+ for (const tag of entry.tags) {
204
+ const tagLower = tag.toLowerCase();
205
+ if (tagLower.includes(keyword) || keyword.includes(tagLower)) {
206
+ maxScore = Math.max(maxScore, 0.7);
207
+ matchType = 'tag';
208
+ }
209
+ }
210
+ }
211
+ const weightedScore = this.applyWeights(maxScore, entry);
212
+ return { entry, score: weightedScore, matchType };
213
+ }
214
+ applyWeights(baseScore, entry) {
215
+ const accessFactor = Math.min(entry.accessCount / 10, 1) * 0.3;
216
+ const daysSinceAccess = (Date.now() - entry.lastAccessed) / (1000 * 60 * 60 * 24);
217
+ const timeFactor = Math.max(0, 1 - daysSinceAccess / 30) * 0.2;
218
+ const layerFactor = entry.layer === 'L0' ? 0.1 : entry.layer === 'L1' ? 0.05 : 0;
219
+ return baseScore * 0.5 + accessFactor + timeFactor + layerFactor;
220
+ }
221
+ async updateAccessStats(id) {
222
+ const entry = this.memories.get(id);
223
+ if (entry) {
224
+ entry.accessCount++;
225
+ entry.lastAccessed = Date.now();
226
+ await this.promoteLayer(entry);
227
+ }
228
+ }
229
+ async promoteLayer(entry) {
230
+ if (entry.accessCount > 20 && entry.layer === 'L2')
231
+ entry.layer = 'L1';
232
+ else if (entry.accessCount > 50 && entry.layer === 'L1')
233
+ entry.layer = 'L0';
234
+ }
235
+ async loadAllLayers() {
236
+ for (const layer of ['L0', 'L1', 'L2']) {
237
+ const layerPath = join(this.config.memoryPath, `layer-${layer}.json`);
238
+ try {
239
+ if (existsSync(layerPath)) {
240
+ const content = await readFile(layerPath, 'utf-8');
241
+ const data = JSON.parse(content);
242
+ if (data.memories) {
243
+ for (const [id, entry] of Object.entries(data.memories)) {
244
+ this.memories.set(id, entry);
245
+ }
246
+ }
247
+ }
248
+ }
249
+ catch { }
250
+ }
251
+ }
252
+ async saveAllLayers() {
253
+ const layerData = {
254
+ L0: { memories: {} },
255
+ L1: { memories: {} },
256
+ L2: { memories: {} },
257
+ };
258
+ for (const [id, entry] of this.memories) {
259
+ layerData[entry.layer].memories[id] = entry;
260
+ }
261
+ for (const layer of ['L0', 'L1', 'L2']) {
262
+ const layerPath = join(this.config.memoryPath, `layer-${layer}.json`);
263
+ await writeFile(layerPath, JSON.stringify(layerData[layer], null, 2));
264
+ }
265
+ }
266
+ }
267
+ export function createSimpleMemoryClient(config) {
268
+ return new SimpleMemoryClient(config);
269
+ }
270
+ //# sourceMappingURL=simple-memory-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-memory-client.js","sourceRoot":"","sources":["../../src/context/simple-memory-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * 持续进化引擎
3
+ *
4
+ * 真正的持续进化 - 利用历史经验变得越来越聪明
5
+ *
6
+ * @module @jclaw/core/evolution/continuous
7
+ */
8
+ import type { Executor } from '../types.js';
9
+ import { LLMClient } from '../runtime/llm-client.js';
10
+ import { EvolutionMemoryManager } from './memory.js';
11
+ import type { EvolutionResult, Gene, EvolutionStrategy } from './types.js';
12
+ import type { EvoMapClient } from '../network/client.js';
13
+ /**
14
+ * 持续进化配置
15
+ */
16
+ export interface ContinuousEvolutionConfig {
17
+ /** 启用 EvoMap 共享 */
18
+ enableSharing?: boolean;
19
+ /** 启用学习历史 */
20
+ enableLearning?: boolean;
21
+ /** 启用外部基因导入 */
22
+ enableImport?: boolean;
23
+ }
24
+ /**
25
+ * 持续进化会话
26
+ */
27
+ export interface EvolutionSession {
28
+ /** 会话ID */
29
+ id: string;
30
+ /** 已进化次数 */
31
+ generation: number;
32
+ /** 当前最佳代码 */
33
+ bestCode: string;
34
+ /** 当前最佳适应度 */
35
+ bestFitness: number;
36
+ /** 历史记录 */
37
+ history: EvolutionResult[];
38
+ }
39
+ /**
40
+ * 持续进化引擎
41
+ *
42
+ * 真正的持续进化:
43
+ * 1. 保存每次进化结果到记忆
44
+ * 2. 下次进化时检索相关经验
45
+ * 3. 自动选择最佳策略
46
+ * 4. 支持通过 EvoMap 共享基因
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const engine = new ContinuousEvolutionEngine({
51
+ * llmClient,
52
+ * executor,
53
+ * memory: evolutionMemory
54
+ * });
55
+ *
56
+ * // 第一次进化
57
+ * const session1 = await engine.evolve(code);
58
+ *
59
+ * // 第二次进化(利用第一次的经验)
60
+ * const session2 = await engine.evolve(session1.bestCode);
61
+ * // 会自动利用 session1 的经验
62
+ * ```
63
+ */
64
+ export declare class ContinuousEvolutionEngine {
65
+ private baseEngine;
66
+ private memory;
67
+ private evoMapClient?;
68
+ private config;
69
+ private sessions;
70
+ constructor(options: {
71
+ llmClient: LLMClient;
72
+ executor: Executor;
73
+ memory?: EvolutionMemoryManager;
74
+ evoMapClient?: EvoMapClient;
75
+ config?: ContinuousEvolutionConfig;
76
+ });
77
+ /**
78
+ * 持续进化代码
79
+ *
80
+ * 会利用历史经验,自动选择最佳策略
81
+ */
82
+ evolve(code: string, options?: {
83
+ sessionId?: string;
84
+ maxGenerations?: number;
85
+ strategies?: EvolutionStrategy[];
86
+ }): Promise<EvolutionSession>;
87
+ /**
88
+ * 多代进化
89
+ *
90
+ * 连续进化多代,每次利用前一代的经验
91
+ */
92
+ evolveGenerations(code: string, generations: number, options?: {
93
+ onGeneration?: (session: EvolutionSession) => void;
94
+ }): Promise<EvolutionSession>;
95
+ /**
96
+ * 获取进化统计
97
+ */
98
+ getStats(): {
99
+ totalEvolutions: number;
100
+ successfulEvolutions: number;
101
+ avgFitness: number;
102
+ bestStrategy: string;
103
+ };
104
+ /**
105
+ * 导出最佳基因
106
+ */
107
+ exportBestGenes(): Gene[];
108
+ /**
109
+ * 获取会话历史
110
+ */
111
+ getSession(sessionId: string): EvolutionSession | undefined;
112
+ /**
113
+ * 获取所有会话
114
+ */
115
+ getAllSessions(): EvolutionSession[];
116
+ private selectBestStrategies;
117
+ private importExternalGenes;
118
+ private shareGenes;
119
+ }
120
+ /**
121
+ * 创建持续进化引擎
122
+ */
123
+ export declare function createContinuousEvolutionEngine(options: {
124
+ llmClient: LLMClient;
125
+ executor: Exec;
126
+ }): any;
127
+ //# sourceMappingURL=continuous.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuous.d.ts","sourceRoot":"","sources":["../../src/evolution/continuous.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAmB,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,QAAQ,CAA4C;gBAEhD,OAAO,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,CAAC,EAAE,sBAAsB,CAAC;QAChC,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,MAAM,CAAC,EAAE,yBAAyB,CAAC;KACpC;IAgBD;;;;OAIG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAClC,GACA,OAAO,CAAC,gBAAgB,CAAC;IAyD5B;;;;OAIG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;KACpD,GACA,OAAO,CAAC,gBAAgB,CAAC;IAuC5B;;OAEG;IACH,QAAQ;;;;;;IAIR;;OAEG;IACH,eAAe,IAAI,IAAI,EAAE;IAIzB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI3D;;OAEG;IACH,cAAc,IAAI,gBAAgB,EAAE;YAMtB,oBAAoB;YAgCpB,mBAAmB;YAgCnB,UAAU;CAiBzB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAA;CAAA,OAAA"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * 持续进化引擎
3
+ *
4
+ * 真正的持续进化 - 利用历史经验变得越来越聪明
5
+ *
6
+ * @module @jclaw/core/evolution/continuous
7
+ */
8
+ import { EvolutionEngine } from './engine.js';
9
+ import { EvolutionMemoryManager } from './memory.js';
10
+ /**
11
+ * 持续进化引擎
12
+ *
13
+ * 真正的持续进化:
14
+ * 1. 保存每次进化结果到记忆
15
+ * 2. 下次进化时检索相关经验
16
+ * 3. 自动选择最佳策略
17
+ * 4. 支持通过 EvoMap 共享基因
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const engine = new ContinuousEvolutionEngine({
22
+ * llmClient,
23
+ * executor,
24
+ * memory: evolutionMemory
25
+ * });
26
+ *
27
+ * // 第一次进化
28
+ * const session1 = await engine.evolve(code);
29
+ *
30
+ * // 第二次进化(利用第一次的经验)
31
+ * const session2 = await engine.evolve(session1.bestCode);
32
+ * // 会自动利用 session1 的经验
33
+ * ```
34
+ */
35
+ export class ContinuousEvolutionEngine {
36
+ baseEngine;
37
+ memory;
38
+ evoMapClient;
39
+ config;
40
+ sessions = new Map();
41
+ constructor(options) {
42
+ this.baseEngine = new EvolutionEngine({
43
+ llmClient: options.llmClient,
44
+ executor: options.executor,
45
+ });
46
+ this.memory = options.memory || new EvolutionMemoryManager();
47
+ this.evoMapClient = options.evoMapClient;
48
+ this.config = {
49
+ enableSharing: false,
50
+ enableLearning: true,
51
+ enableImport: false,
52
+ ...options.config,
53
+ };
54
+ }
55
+ /**
56
+ * 持续进化代码
57
+ *
58
+ * 会利用历史经验,自动选择最佳策略
59
+ */
60
+ async evolve(code, options) {
61
+ const sessionId = options?.sessionId || `session-${Date.now()}`;
62
+ const session = this.sessions.get(sessionId) || {
63
+ id: sessionId,
64
+ generation: 0,
65
+ bestCode: code,
66
+ bestFitness: 0,
67
+ history: [],
68
+ };
69
+ console.log(`\n🧬 [持续进化] 会话 ${sessionId}, 第 ${session.generation + 1} 代`);
70
+ // 1. 导入外部基因(如果启用)
71
+ if (this.config.enableImport && this.evoMapClient) {
72
+ await this.importExternalGenes();
73
+ }
74
+ // 2. 检索历史经验
75
+ let strategies = options?.strategies;
76
+ if (this.config.enableLearning && !strategies) {
77
+ strategies = await this.selectBestStrategies(code);
78
+ console.log(`💡 根据历史经验选择策略: ${strategies.join(', ')}`);
79
+ }
80
+ // 3. 执行进化
81
+ const result = await this.baseEngine.evolve(session.bestCode, {
82
+ strategies,
83
+ });
84
+ // 4. 保存到记忆
85
+ if (this.config.enableLearning) {
86
+ await this.memory.remember(session.bestCode, result);
87
+ }
88
+ // 5. 更新会话
89
+ session.generation++;
90
+ session.history.push(result);
91
+ if (result.improved && result.bestMutation) {
92
+ const fitness = result.bestMutation.fitness ?? 0;
93
+ if (fitness > session.bestFitness) {
94
+ session.bestCode = result.bestMutation.mutated;
95
+ session.bestFitness = fitness;
96
+ console.log(`✅ 发现更好的代码! Fitness: ${fitness.toFixed(3)}`);
97
+ }
98
+ }
99
+ this.sessions.set(sessionId, session);
100
+ // 6. 共享基因(如果启用)
101
+ if (this.config.enableSharing && this.evoMapClient && result.improved) {
102
+ await this.shareGenes(result);
103
+ }
104
+ return session;
105
+ }
106
+ /**
107
+ * 多代进化
108
+ *
109
+ * 连续进化多代,每次利用前一代的经验
110
+ */
111
+ async evolveGenerations(code, generations, options) {
112
+ let session;
113
+ for (let i = 0; i < generations; i++) {
114
+ console.log(`\n${'='.repeat(60)}`);
115
+ console.log(`🧬 第 ${i + 1}/${generations} 代进化`);
116
+ console.log('='.repeat(60));
117
+ session = await this.evolve(session?.bestCode || code, {
118
+ sessionId: session?.id,
119
+ });
120
+ // 打印统计
121
+ const stats = this.memory.getStats();
122
+ console.log(`\n📊 进化统计:`);
123
+ console.log(` 总进化次数: ${stats.totalEvolutions}`);
124
+ console.log(` 成功次数: ${stats.successfulEvolutions}`);
125
+ console.log(` 平均适应度: ${stats.avgFitness.toFixed(3)}`);
126
+ console.log(` 最佳策略: ${stats.bestStrategy}`);
127
+ // 回调
128
+ if (options?.onGeneration) {
129
+ options.onGeneration(session);
130
+ }
131
+ // 如果已经连续 3 代没有改进,提前停止
132
+ if (i >= 3) {
133
+ const last3 = session.history.slice(-3);
134
+ const noImprovement = last3.every(h => !h.improved);
135
+ if (noImprovement) {
136
+ console.log(`\n⚠️ 连续 3 代无改进,提前停止`);
137
+ break;
138
+ }
139
+ }
140
+ }
141
+ return session;
142
+ }
143
+ /**
144
+ * 获取进化统计
145
+ */
146
+ getStats() {
147
+ return this.memory.getStats();
148
+ }
149
+ /**
150
+ * 导出最佳基因
151
+ */
152
+ exportBestGenes() {
153
+ return this.memory.exportGenes();
154
+ }
155
+ /**
156
+ * 获取会话历史
157
+ */
158
+ getSession(sessionId) {
159
+ return this.sessions.get(sessionId);
160
+ }
161
+ /**
162
+ * 获取所有会话
163
+ */
164
+ getAllSessions() {
165
+ return Array.from(this.sessions.values());
166
+ }
167
+ // 私有方法
168
+ async selectBestStrategies(code) {
169
+ // 检索历史经验
170
+ const memories = await this.memory.recall(code);
171
+ if (memories.length === 0) {
172
+ // 没有经验,使用默认策略
173
+ return ['repair', 'optimize', 'innovate'];
174
+ }
175
+ // 分析哪种策略对这种代码最有效
176
+ const strategyScores = new Map();
177
+ for (const memory of memories) {
178
+ const scores = strategyScores.get(memory.strategy) || [];
179
+ scores.push(memory.result.fitness);
180
+ strategyScores.set(memory.strategy, scores);
181
+ }
182
+ // 计算平均分数
183
+ const averages = [];
184
+ for (const [strategy, scores] of strategyScores) {
185
+ const avg = scores.reduce((a, b) => a + b, 0) / scores.length;
186
+ averages.push({ strategy, avg });
187
+ }
188
+ // 按效果排序
189
+ averages.sort((a, b) => b.avg - a.avg);
190
+ // 返回前 3 个最佳策略
191
+ return averages.slice(0, 3).map(a => a.strategy);
192
+ }
193
+ async importExternalGenes() {
194
+ if (!this.evoMapClient?.isRegistered()) {
195
+ return;
196
+ }
197
+ try {
198
+ const response = await this.evoMapClient.requestGenes({
199
+ minFitness: 0.8,
200
+ limit: 10,
201
+ });
202
+ if (response.success && response.genes.length > 0) {
203
+ console.log(`📥 导入 ${response.genes.length} 个外部基因`);
204
+ // 转换基因格式
205
+ const genes = response.genes.map(g => ({
206
+ id: g.geneId,
207
+ type: g.geneType,
208
+ content: g.data,
209
+ fitness: g.metadata.fitness,
210
+ generation: g.metadata.generation,
211
+ parents: g.metadata.parents,
212
+ createdAt: new Date(g.timestamp),
213
+ }));
214
+ this.memory.importGenes(genes);
215
+ }
216
+ }
217
+ catch (error) {
218
+ console.log('⚠️ 导入外部基因失败:', error);
219
+ }
220
+ }
221
+ async shareGenes(result) {
222
+ if (!this.evoMapClient?.isRegistered() || !result.bestMutation) {
223
+ return;
224
+ }
225
+ try {
226
+ const gene = this.baseEngine.toGene(result.bestMutation, 1, []);
227
+ if (gene.fitness >= 0.8) { // 只分享高质量的基因
228
+ // 这里应该调用 EvoMapClient 的 shareGenes 方法
229
+ // await this.evoMapClient.shareGenes([gene]);
230
+ console.log(`📤 分享高质量基因 (fitness: ${gene.fitness.toFixed(3)})`);
231
+ }
232
+ }
233
+ catch (error) {
234
+ console.log('⚠️ 分享基因失败:', error);
235
+ }
236
+ }
237
+ }
238
+ //# sourceMappingURL=continuous.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuous.js","sourceRoot":"","sources":["../../src/evolution/continuous.ts"],"names":[],"mappings":"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"}