opc-agent 4.2.13 → 5.0.0-alpha.1

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 (188) hide show
  1. package/.opc/memory.db +0 -0
  2. package/TASK.md +49 -0
  3. package/data/brain.db/deepbrain.sqlite +0 -0
  4. package/dist/channels/api.d.ts +14 -0
  5. package/dist/channels/api.d.ts.map +1 -0
  6. package/dist/channels/api.js +58 -0
  7. package/dist/channels/api.js.map +1 -0
  8. package/dist/cli.js +144 -52
  9. package/dist/cli.js.map +1 -1
  10. package/dist/core/agent-loop.d.ts +3 -0
  11. package/dist/core/agent-loop.d.ts.map +1 -0
  12. package/dist/core/agent-loop.js +51 -0
  13. package/dist/core/agent-loop.js.map +1 -0
  14. package/dist/core/context-assembler.d.ts +12 -0
  15. package/dist/core/context-assembler.d.ts.map +1 -0
  16. package/dist/core/context-assembler.js +81 -0
  17. package/dist/core/context-assembler.js.map +1 -0
  18. package/dist/core/guardrails.d.ts +16 -0
  19. package/dist/core/guardrails.d.ts.map +1 -0
  20. package/dist/core/guardrails.js +62 -0
  21. package/dist/core/guardrails.js.map +1 -0
  22. package/dist/core/index.d.ts +1 -0
  23. package/dist/core/index.d.ts.map +1 -0
  24. package/dist/core/index.js +3 -0
  25. package/dist/core/index.js.map +1 -0
  26. package/dist/core/iteration-budget.d.ts +12 -0
  27. package/dist/core/iteration-budget.d.ts.map +1 -0
  28. package/dist/core/iteration-budget.js +26 -0
  29. package/dist/core/iteration-budget.js.map +1 -0
  30. package/dist/core/types.d.ts +412 -0
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/deepbrain/embedding.d.ts +7 -0
  33. package/dist/deepbrain/embedding.d.ts.map +1 -0
  34. package/dist/deepbrain/embedding.js +108 -0
  35. package/dist/deepbrain/embedding.js.map +1 -0
  36. package/dist/deepbrain/index.d.ts +8 -0
  37. package/dist/deepbrain/index.d.ts.map +1 -0
  38. package/dist/deepbrain/index.js +19 -0
  39. package/dist/deepbrain/index.js.map +1 -0
  40. package/dist/deepbrain/migrate.d.ts +2 -0
  41. package/dist/deepbrain/migrate.d.ts.map +1 -0
  42. package/dist/deepbrain/migrate.js +139 -0
  43. package/dist/deepbrain/migrate.js.map +1 -0
  44. package/dist/deepbrain/provider.d.ts +13 -0
  45. package/dist/deepbrain/provider.d.ts.map +1 -0
  46. package/dist/deepbrain/provider.js +85 -0
  47. package/dist/deepbrain/provider.js.map +1 -0
  48. package/dist/deepbrain/recall.d.ts +9 -0
  49. package/dist/deepbrain/recall.d.ts.map +1 -0
  50. package/dist/deepbrain/recall.js +48 -0
  51. package/dist/deepbrain/recall.js.map +1 -0
  52. package/dist/deepbrain/store.d.ts +36 -0
  53. package/dist/deepbrain/store.d.ts.map +1 -0
  54. package/dist/deepbrain/store.js +342 -0
  55. package/dist/deepbrain/store.js.map +1 -0
  56. package/dist/deepbrain/workspace-files.d.ts +5 -0
  57. package/dist/deepbrain/workspace-files.d.ts.map +1 -0
  58. package/dist/deepbrain/workspace-files.js +159 -0
  59. package/dist/deepbrain/workspace-files.js.map +1 -0
  60. package/dist/evolution/index.d.ts +1 -0
  61. package/dist/evolution/index.d.ts.map +1 -0
  62. package/dist/evolution/index.js +3 -0
  63. package/dist/evolution/index.js.map +1 -0
  64. package/dist/evolution/l1-experience.d.ts +5 -0
  65. package/dist/evolution/l1-experience.d.ts.map +1 -0
  66. package/dist/evolution/l1-experience.js +117 -0
  67. package/dist/evolution/l1-experience.js.map +1 -0
  68. package/dist/evolution/l2-consolidation.d.ts +4 -0
  69. package/dist/evolution/l2-consolidation.d.ts.map +1 -0
  70. package/dist/evolution/l2-consolidation.js +106 -0
  71. package/dist/evolution/l2-consolidation.js.map +1 -0
  72. package/dist/evolution/l2-memskill.d.ts +12 -0
  73. package/dist/evolution/l2-memskill.d.ts.map +1 -0
  74. package/dist/evolution/l2-memskill.js +57 -0
  75. package/dist/evolution/l2-memskill.js.map +1 -0
  76. package/dist/evolution/l3-skill-discover.d.ts +4 -0
  77. package/dist/evolution/l3-skill-discover.d.ts.map +1 -0
  78. package/dist/evolution/l3-skill-discover.js +139 -0
  79. package/dist/evolution/l3-skill-discover.js.map +1 -0
  80. package/dist/evolution/l3-skill-verify.d.ts +12 -0
  81. package/dist/evolution/l3-skill-verify.d.ts.map +1 -0
  82. package/dist/evolution/l3-skill-verify.js +122 -0
  83. package/dist/evolution/l3-skill-verify.js.map +1 -0
  84. package/dist/evolution/l4-desensitize.d.ts +7 -0
  85. package/dist/evolution/l4-desensitize.d.ts.map +1 -0
  86. package/dist/evolution/l4-desensitize.js +30 -0
  87. package/dist/evolution/l4-desensitize.js.map +1 -0
  88. package/dist/evolution/l4-group-evolve.d.ts +8 -0
  89. package/dist/evolution/l4-group-evolve.d.ts.map +1 -0
  90. package/dist/evolution/l4-group-evolve.js +15 -0
  91. package/dist/evolution/l4-group-evolve.js.map +1 -0
  92. package/dist/evolution/maturity-scorer.d.ts +11 -0
  93. package/dist/evolution/maturity-scorer.d.ts.map +1 -0
  94. package/dist/evolution/maturity-scorer.js +21 -0
  95. package/dist/evolution/maturity-scorer.js.map +1 -0
  96. package/dist/index.d.ts +7 -1
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +33 -5
  99. package/dist/index.js.map +1 -1
  100. package/dist/providers/agentkits.d.ts +20 -0
  101. package/dist/providers/agentkits.d.ts.map +1 -0
  102. package/dist/providers/agentkits.js +173 -0
  103. package/dist/providers/agentkits.js.map +1 -0
  104. package/dist/providers/model-provider.d.ts +16 -0
  105. package/dist/providers/model-provider.d.ts.map +1 -0
  106. package/dist/providers/model-provider.js +13 -0
  107. package/dist/providers/model-provider.js.map +1 -0
  108. package/dist/providers/model-recommender.d.ts +15 -0
  109. package/dist/providers/model-recommender.d.ts.map +1 -0
  110. package/dist/providers/model-recommender.js +71 -0
  111. package/dist/providers/model-recommender.js.map +1 -0
  112. package/dist/providers/ollama.d.ts +22 -0
  113. package/dist/providers/ollama.d.ts.map +1 -0
  114. package/dist/providers/ollama.js +176 -0
  115. package/dist/providers/ollama.js.map +1 -0
  116. package/dist/providers/openai-compat.d.ts +23 -0
  117. package/dist/providers/openai-compat.d.ts.map +1 -0
  118. package/dist/providers/openai-compat.js +184 -0
  119. package/dist/providers/openai-compat.js.map +1 -0
  120. package/dist/providers/router.d.ts +11 -0
  121. package/dist/providers/router.d.ts.map +1 -0
  122. package/dist/providers/router.js +48 -0
  123. package/dist/providers/router.js.map +1 -0
  124. package/dist/scheduler/cron.d.ts +19 -0
  125. package/dist/scheduler/cron.d.ts.map +1 -0
  126. package/dist/scheduler/cron.js +64 -0
  127. package/dist/scheduler/cron.js.map +1 -0
  128. package/dist/schema/oad.d.ts +72 -72
  129. package/dist/skills/loader.d.ts +16 -0
  130. package/dist/skills/loader.d.ts.map +1 -0
  131. package/dist/skills/loader.js +114 -0
  132. package/dist/skills/loader.js.map +1 -0
  133. package/dist/skills/matcher.d.ts +18 -0
  134. package/dist/skills/matcher.d.ts.map +1 -0
  135. package/dist/skills/matcher.js +70 -0
  136. package/dist/skills/matcher.js.map +1 -0
  137. package/dist/studio/agent-pool.d.ts +17 -0
  138. package/dist/studio/agent-pool.d.ts.map +1 -0
  139. package/dist/studio/agent-pool.js +35 -0
  140. package/dist/studio/agent-pool.js.map +1 -0
  141. package/dist/studio/assistant-tools.d.ts +4 -0
  142. package/dist/studio/assistant-tools.d.ts.map +1 -0
  143. package/dist/studio/assistant-tools.js +36 -0
  144. package/dist/studio/assistant-tools.js.map +1 -0
  145. package/dist/studio/index.d.ts +1 -0
  146. package/dist/studio/index.d.ts.map +1 -0
  147. package/dist/studio/index.js +3 -0
  148. package/dist/studio/index.js.map +1 -0
  149. package/dist/studio/server.d.ts.map +1 -1
  150. package/dist/studio/server.js +13 -18
  151. package/dist/studio/server.js.map +1 -1
  152. package/dist/templates/index.d.ts +1 -0
  153. package/dist/templates/index.d.ts.map +1 -0
  154. package/dist/templates/index.js +3 -0
  155. package/dist/templates/index.js.map +1 -0
  156. package/dist/templates/roles/index.d.ts +4 -0
  157. package/dist/templates/roles/index.d.ts.map +1 -0
  158. package/dist/templates/roles/index.js +46 -0
  159. package/dist/templates/roles/index.js.map +1 -0
  160. package/dist/templates/template-provider.d.ts +16 -0
  161. package/dist/templates/template-provider.d.ts.map +1 -0
  162. package/dist/templates/template-provider.js +60 -0
  163. package/dist/templates/template-provider.js.map +1 -0
  164. package/dist/tools/builtin/definitions.d.ts +7 -0
  165. package/dist/tools/builtin/definitions.d.ts.map +1 -0
  166. package/dist/tools/builtin/definitions.js +60 -0
  167. package/dist/tools/builtin/definitions.js.map +1 -0
  168. package/dist/tools/execute-code.d.ts +20 -0
  169. package/dist/tools/execute-code.d.ts.map +1 -0
  170. package/dist/tools/execute-code.js +92 -0
  171. package/dist/tools/execute-code.js.map +1 -0
  172. package/dist/tools/hooks.d.ts +47 -0
  173. package/dist/tools/hooks.d.ts.map +1 -0
  174. package/dist/tools/hooks.js +69 -0
  175. package/dist/tools/hooks.js.map +1 -0
  176. package/dist/tools/index.d.ts +9 -0
  177. package/dist/tools/index.d.ts.map +1 -0
  178. package/dist/tools/index.js +16 -0
  179. package/dist/tools/index.js.map +1 -0
  180. package/dist/tools/permission.d.ts +20 -0
  181. package/dist/tools/permission.d.ts.map +1 -0
  182. package/dist/tools/permission.js +35 -0
  183. package/dist/tools/permission.js.map +1 -0
  184. package/dist/tools/registry.d.ts +25 -0
  185. package/dist/tools/registry.d.ts.map +1 -0
  186. package/dist/tools/registry.js +42 -0
  187. package/dist/tools/registry.js.map +1 -0
  188. package/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.microCompact = microCompact;
4
+ exports.compileExperience = compileExperience;
5
+ // L1 evolution — experience compilation: MicroCompact + Contrastive Reflection
6
+ const crypto_1 = require("crypto");
7
+ // MicroCompact: compress old tool outputs, keep the most recent N intact
8
+ function microCompact(messages, keepRecent = 3) {
9
+ const toolIndices = [];
10
+ messages.forEach((m, i) => {
11
+ if (m.metadata?.toolCallId || m.metadata?.isToolResult) {
12
+ toolIndices.push(i);
13
+ }
14
+ });
15
+ const keepSet = new Set(toolIndices.slice(-keepRecent));
16
+ return messages.map((m, i) => {
17
+ if ((m.metadata?.toolCallId || m.metadata?.isToolResult) && !keepSet.has(i)) {
18
+ const toolName = String(m.metadata?.toolName ?? 'unknown');
19
+ const byteCount = Buffer.byteLength(m.content, 'utf-8');
20
+ return {
21
+ ...m,
22
+ content: `[tool result compressed: ${toolName} returned ${byteCount} bytes]`,
23
+ };
24
+ }
25
+ return m;
26
+ });
27
+ }
28
+ // Contrastive Reflection: compare success/failure paths, extract lessons
29
+ async function compileExperience(messages, config, router, brain) {
30
+ if (!config.l1.enabled)
31
+ return;
32
+ if (config.strategy === 'free') {
33
+ const keywords = extractKeywords(messages);
34
+ await brain.store({
35
+ content: keywords.join(', '),
36
+ source: 'l1',
37
+ layer: 'workstation',
38
+ tags: ['keywords', 'l1'],
39
+ embedding: null,
40
+ maturityScore: 0,
41
+ useCount: 0,
42
+ lastUsed: '',
43
+ });
44
+ return;
45
+ }
46
+ const provider = router.getProvider('l1');
47
+ const reflectPrompt = `对比以下对话中的成功和失败路径,提取3个关键教训。只输出JSON:
48
+ {"summary":"一句话总结","lessons":["教训1","教训2","教训3"],"errorPatterns":["错误模式"]}`;
49
+ const response = await provider.chat({
50
+ systemPrompt: reflectPrompt,
51
+ messages: [{
52
+ id: (0, crypto_1.randomUUID)(),
53
+ role: 'user',
54
+ content: formatMessagesForReflection(messages),
55
+ timestamp: Date.now(),
56
+ }],
57
+ });
58
+ const text = response.message.content;
59
+ const parsed = safeParseJSON(text);
60
+ await brain.store({
61
+ content: JSON.stringify({
62
+ summary: parsed.summary ?? text.slice(0, 200),
63
+ lessons: parsed.lessons ?? [],
64
+ errorPatterns: parsed.errorPatterns ?? [],
65
+ }),
66
+ source: 'l1',
67
+ layer: 'workstation',
68
+ tags: ['experience', 'reflection', 'l1'],
69
+ embedding: null,
70
+ maturityScore: 0,
71
+ useCount: 0,
72
+ lastUsed: '',
73
+ });
74
+ await brain.evolve('l1', config);
75
+ }
76
+ function extractKeywords(messages) {
77
+ const stopWords = new Set([
78
+ '的', '了', '是', '在', '我', '你', '他', '她', '它', '们', '和',
79
+ 'a', 'an', 'the', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
80
+ 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'shall',
81
+ 'should', 'may', 'might', 'can', 'could', 'to', 'of', 'in', 'for',
82
+ 'on', 'with', 'at', 'by', 'from', 'it', 'this', 'that',
83
+ ]);
84
+ const freq = new Map();
85
+ for (const msg of messages) {
86
+ const words = msg.content
87
+ .toLowerCase()
88
+ .replace(/[^\w一-鿿\s]/g, ' ')
89
+ .split(/\s+/)
90
+ .filter(w => w.length >= 2 && !stopWords.has(w));
91
+ for (const word of words) {
92
+ freq.set(word, (freq.get(word) ?? 0) + 1);
93
+ }
94
+ }
95
+ return Array.from(freq.entries())
96
+ .sort((a, b) => b[1] - a[1])
97
+ .slice(0, 10)
98
+ .map(([word]) => word);
99
+ }
100
+ function formatMessagesForReflection(messages) {
101
+ return messages
102
+ .slice(-20)
103
+ .map(m => `[${m.role.toUpperCase()}]: ${m.content.slice(0, 500)}`)
104
+ .join('\n');
105
+ }
106
+ function safeParseJSON(text) {
107
+ const match = text.match(/\{[\s\S]*\}/);
108
+ if (!match)
109
+ return {};
110
+ try {
111
+ return JSON.parse(match[0]);
112
+ }
113
+ catch {
114
+ return {};
115
+ }
116
+ }
117
+ //# sourceMappingURL=l1-experience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l1-experience.js","sourceRoot":"","sources":["../../src/evolution/l1-experience.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AutoDreamAction, DeepBrainProvider, EvolutionConfig } from '../core/types';
2
+ import type { ModelRouter } from '../providers/router';
3
+ export declare function autoDream(brain: DeepBrainProvider, router: ModelRouter, config: EvolutionConfig): Promise<AutoDreamAction[]>;
4
+ //# sourceMappingURL=l2-consolidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l2-consolidation.d.ts","sourceRoot":"","sources":["../../src/evolution/l2-consolidation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAsB,SAAS,CAC7B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,EAAE,CAAC,CAgG5B"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.autoDream = autoDream;
4
+ // L2 evolution — AutoDream: merge/trim/reorganize memory entries
5
+ const crypto_1 = require("crypto");
6
+ async function autoDream(brain, router, config) {
7
+ if (!config.l2.enabled)
8
+ return [];
9
+ const recalled = await brain.recall({
10
+ query: 'knowledge experience lesson error pattern',
11
+ topK: 50,
12
+ });
13
+ const allKnowledge = recalled.entries;
14
+ if (allKnowledge.length === 0)
15
+ return [];
16
+ const provider = router.getProvider('l2');
17
+ const consolidatePrompt = `你是记忆管理器。分析以下知识条目,决定哪些该合并(语义重复)、裁剪(过时)、重组(拆分/合并)。
18
+ 输出 JSON: {"merge":[{"ids":["id1","id2"],"reason":"..."}],"trim":[{"id":"id1","reason":"..."}],"reorganize":[{"id":"id1","newContent":"...","reason":"..."}]}`;
19
+ const response = await provider.chat({
20
+ systemPrompt: consolidatePrompt,
21
+ messages: [{
22
+ id: (0, crypto_1.randomUUID)(),
23
+ role: 'user',
24
+ content: JSON.stringify(allKnowledge.slice(0, 50).map(e => ({
25
+ id: e.id,
26
+ content: e.content.slice(0, 300),
27
+ layer: e.layer,
28
+ maturityScore: e.maturityScore,
29
+ useCount: e.useCount,
30
+ }))),
31
+ timestamp: Date.now(),
32
+ }],
33
+ });
34
+ const text = response.message.content;
35
+ const parsed = safeParseJSON(text);
36
+ const actions = [];
37
+ const now = new Date().toISOString();
38
+ for (const m of (parsed.merge ?? [])) {
39
+ if (!Array.isArray(m.ids) || m.ids.length < 2)
40
+ continue;
41
+ const sources = allKnowledge.filter(e => m.ids.includes(e.id));
42
+ if (sources.length === 0)
43
+ continue;
44
+ await brain.store({
45
+ content: sources.map(e => e.content).join('\n---\n'),
46
+ source: 'l2',
47
+ layer: sources[0].layer,
48
+ tags: [...Array.from(new Set(sources.flatMap(e => e.tags))), 'merged'],
49
+ embedding: null,
50
+ maturityScore: Math.max(...sources.map(e => e.maturityScore)),
51
+ useCount: sources.reduce((s, e) => s + e.useCount, 0),
52
+ lastUsed: now,
53
+ });
54
+ actions.push({ type: 'merge', ids: m.ids });
55
+ }
56
+ for (const t of (parsed.trim ?? [])) {
57
+ if (!t.id)
58
+ continue;
59
+ const entry = allKnowledge.find(e => e.id === t.id);
60
+ if (!entry)
61
+ continue;
62
+ await brain.store({
63
+ content: entry.content,
64
+ source: entry.source,
65
+ layer: entry.layer,
66
+ tags: [...entry.tags, '_trimmed'],
67
+ embedding: null,
68
+ maturityScore: 0,
69
+ useCount: entry.useCount,
70
+ lastUsed: entry.lastUsed,
71
+ });
72
+ actions.push({ type: 'trim', ids: [t.id] });
73
+ }
74
+ for (const r of (parsed.reorganize ?? [])) {
75
+ if (!r.id || !r.newContent)
76
+ continue;
77
+ const entry = allKnowledge.find(e => e.id === r.id);
78
+ if (!entry)
79
+ continue;
80
+ await brain.store({
81
+ content: r.newContent,
82
+ source: 'l2',
83
+ layer: entry.layer,
84
+ tags: [...entry.tags.filter(t => t !== '_trimmed'), 'reorganized'],
85
+ embedding: null,
86
+ maturityScore: entry.maturityScore,
87
+ useCount: entry.useCount,
88
+ lastUsed: entry.lastUsed,
89
+ });
90
+ actions.push({ type: 'reorganize', ids: [r.id], newContent: r.newContent });
91
+ }
92
+ await brain.evolve('l2', config);
93
+ return actions;
94
+ }
95
+ function safeParseJSON(text) {
96
+ const match = text.match(/\{[\s\S]*\}/);
97
+ if (!match)
98
+ return {};
99
+ try {
100
+ return JSON.parse(match[0]);
101
+ }
102
+ catch {
103
+ return {};
104
+ }
105
+ }
106
+ //# sourceMappingURL=l2-consolidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l2-consolidation.js","sourceRoot":"","sources":["../../src/evolution/l2-consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DeepBrainProvider } from '../core/types';
2
+ export declare class MemSkill {
3
+ private brain;
4
+ constructor(brain: DeepBrainProvider);
5
+ recordRecallFeedback(query: string, results: string[], accepted: boolean): Promise<void>;
6
+ getOptimizedWeights(): Promise<{
7
+ fts: number;
8
+ vec: number;
9
+ maturity: number;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=l2-memskill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l2-memskill.d.ts","sourceRoot":"","sources":["../../src/evolution/l2-memskill.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASvD,qBAAa,QAAQ;IACP,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAEtC,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC;IAkBV,mBAAmB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CA8BrF"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemSkill = void 0;
4
+ class MemSkill {
5
+ brain;
6
+ constructor(brain) {
7
+ this.brain = brain;
8
+ }
9
+ async recordRecallFeedback(query, results, accepted) {
10
+ await this.brain.store({
11
+ content: JSON.stringify({
12
+ type: 'recall_feedback',
13
+ query,
14
+ resultCount: results.length,
15
+ accepted,
16
+ }),
17
+ source: 'l2',
18
+ layer: 'workstation',
19
+ tags: ['recall_feedback', accepted ? 'accepted' : 'rejected'],
20
+ embedding: null,
21
+ maturityScore: 0,
22
+ useCount: 0,
23
+ lastUsed: '',
24
+ });
25
+ }
26
+ async getOptimizedWeights() {
27
+ const recalled = await this.brain.recall({
28
+ query: 'recall feedback accepted rejected',
29
+ topK: 200,
30
+ });
31
+ let accepted = 0;
32
+ let total = 0;
33
+ for (const entry of recalled.entries) {
34
+ let data;
35
+ try {
36
+ data = JSON.parse(entry.content);
37
+ }
38
+ catch {
39
+ continue;
40
+ }
41
+ if (data.type !== 'recall_feedback')
42
+ continue;
43
+ total++;
44
+ if (data.accepted)
45
+ accepted++;
46
+ }
47
+ const acceptRate = total > 0 ? accepted / total : 0.5;
48
+ // High acceptance → boost vector; low → fall back to FTS
49
+ return {
50
+ fts: Math.max(0.1, 1 - acceptRate * 0.8),
51
+ vec: Math.max(0.1, acceptRate * 0.8),
52
+ maturity: 0.3,
53
+ };
54
+ }
55
+ }
56
+ exports.MemSkill = MemSkill;
57
+ //# sourceMappingURL=l2-memskill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l2-memskill.js","sourceRoot":"","sources":["../../src/evolution/l2-memskill.ts"],"names":[],"mappings":";;;AAUA,MAAa,QAAQ;IACC;IAApB,YAAoB,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;IAAG,CAAC;IAEhD,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,OAAiB,EACjB,QAAiB;QAEjB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,iBAAiB;gBACvB,KAAK;gBACL,WAAW,EAAE,OAAO,CAAC,MAAM;gBAC3B,QAAQ;aACgB,CAAC;YAC3B,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAC7D,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,mCAAmC;YAC1C,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,IAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;gBAAE,SAAS;YAC9C,KAAK,EAAE,CAAC;YACR,IAAI,IAAI,CAAC,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAEtD,yDAAyD;QACzD,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;YACxC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,GAAG,CAAC;YACpC,QAAQ,EAAE,GAAG;SACd,CAAC;IACJ,CAAC;CACF;AAvDD,4BAuDC"}
@@ -0,0 +1,4 @@
1
+ import type { Message, EvolutionConfig, DeepBrainProvider } from '../core/types';
2
+ import type { ModelRouter } from '../providers/router';
3
+ export declare function discoverSkills(recentMessages: Message[][], router: ModelRouter, config: EvolutionConfig, brain?: DeepBrainProvider): Promise<string[]>;
4
+ //# sourceMappingURL=l3-skill-discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l3-skill-discover.d.ts","sourceRoot":"","sources":["../../src/evolution/l3-skill-discover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASvD,wBAAsB,cAAc,CAClC,cAAc,EAAE,OAAO,EAAE,EAAE,EAC3B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAmEnB"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.discoverSkills = discoverSkills;
37
+ // L3 evolution — discover reusable skills from repeated conversation patterns
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ const crypto_1 = require("crypto");
41
+ async function discoverSkills(recentMessages, router, config, brain) {
42
+ if (!config.l3.enabled || !config.l3.autoDiscover)
43
+ return [];
44
+ if (recentMessages.length === 0)
45
+ return [];
46
+ const provider = router.getProvider('l3');
47
+ const discoverPrompt = `分析以下多轮对话,找出重复出现的任务模式。每个模式输出:
48
+ {"name":"skill-name","description":"做什么","triggers":["触发关键词"],"steps":["步骤1","步骤2"]}
49
+ 将多个模式放在数组中:[{...},{...}]`;
50
+ const conversationSample = recentMessages
51
+ .slice(0, 10)
52
+ .map((msgs, i) => `--- 对话 ${i + 1} ---\n${msgs.slice(0, 10).map(m => `[${m.role}]: ${m.content.slice(0, 200)}`).join('\n')}`)
53
+ .join('\n\n');
54
+ const response = await provider.chat({
55
+ systemPrompt: discoverPrompt,
56
+ messages: [{
57
+ id: (0, crypto_1.randomUUID)(),
58
+ role: 'user',
59
+ content: conversationSample,
60
+ timestamp: Date.now(),
61
+ }],
62
+ });
63
+ const patterns = safeParseJSONArray(response.message.content);
64
+ if (patterns.length === 0)
65
+ return [];
66
+ const skillsDir = '.opc/skills';
67
+ await fs.mkdir(skillsDir, { recursive: true });
68
+ const paths = [];
69
+ for (const p of patterns) {
70
+ const name = p.name;
71
+ if (typeof name !== 'string' || !name)
72
+ continue;
73
+ const safeName = name.replace(/[^a-zA-Z0-9-_]/g, '-').toLowerCase();
74
+ const filePath = path.join(skillsDir, `auto-${safeName}.md`);
75
+ await fs.writeFile(filePath, generateSkillMarkdown(p), 'utf-8');
76
+ if (brain) {
77
+ await brain.store({
78
+ content: JSON.stringify({
79
+ type: 'skill_record',
80
+ name: safeName,
81
+ description: String(p.description ?? ''),
82
+ filePath,
83
+ status: 'candidate',
84
+ }),
85
+ source: 'l3',
86
+ layer: 'workstation',
87
+ tags: ['skill', 'candidate', safeName],
88
+ embedding: null,
89
+ maturityScore: 0,
90
+ useCount: 0,
91
+ lastUsed: '',
92
+ });
93
+ }
94
+ paths.push(filePath);
95
+ }
96
+ return paths;
97
+ }
98
+ function generateSkillMarkdown(p) {
99
+ const triggers = Array.isArray(p.triggers) ? p.triggers : [];
100
+ const steps = Array.isArray(p.steps) ? p.steps : [];
101
+ return [
102
+ `# ${p.name}`,
103
+ '',
104
+ `## Description`,
105
+ String(p.description ?? ''),
106
+ '',
107
+ `## Triggers`,
108
+ triggers.map(t => `- ${t}`).join('\n') || '- (none)',
109
+ '',
110
+ `## Steps`,
111
+ steps.map((s, i) => `${i + 1}. ${s}`).join('\n') || '1. (none)',
112
+ '',
113
+ `---`,
114
+ `*Auto-generated by OPC L3 Skill Discovery*`,
115
+ ].join('\n');
116
+ }
117
+ function safeParseJSONArray(text) {
118
+ const arrayMatch = text.match(/\[[\s\S]*\]/);
119
+ if (arrayMatch) {
120
+ try {
121
+ const parsed = JSON.parse(arrayMatch[0]);
122
+ if (Array.isArray(parsed))
123
+ return parsed;
124
+ }
125
+ catch { /* fall through */ }
126
+ }
127
+ const objMatch = text.match(/\{[\s\S]*\}/);
128
+ if (objMatch) {
129
+ try {
130
+ const parsed = JSON.parse(objMatch[0]);
131
+ if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
132
+ return [parsed];
133
+ }
134
+ }
135
+ catch { /* ignore */ }
136
+ }
137
+ return [];
138
+ }
139
+ //# sourceMappingURL=l3-skill-discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l3-skill-discover.js","sourceRoot":"","sources":["../../src/evolution/l3-skill-discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DeepBrainProvider } from '../core/types';
2
+ import type { ModelRouter } from '../providers/router';
3
+ export interface VerificationResult {
4
+ skillId: string;
5
+ passed: boolean;
6
+ errors: string[];
7
+ warnings: string[];
8
+ elapsedMs: number;
9
+ }
10
+ export declare function verifySkill(skillPath: string, testCases: string[], router: ModelRouter): Promise<boolean>;
11
+ export declare function retireStaleSkills(brain: DeepBrainProvider, maxIdleDays?: number): Promise<string[]>;
12
+ //# sourceMappingURL=l3-skill-verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l3-skill-verify.d.ts","sourceRoot":"","sources":["../../src/evolution/l3-skill-verify.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CA0ClB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,WAAW,SAAK,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAyCnB"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.verifySkill = verifySkill;
37
+ exports.retireStaleSkills = retireStaleSkills;
38
+ // L3 skill verifier — quality validation and lifecycle management for auto-discovered skills
39
+ const fs = __importStar(require("fs/promises"));
40
+ const crypto_1 = require("crypto");
41
+ async function verifySkill(skillPath, testCases, router) {
42
+ let content;
43
+ try {
44
+ content = await fs.readFile(skillPath, 'utf-8');
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ if (!content.trim())
50
+ return false;
51
+ // Structural checks: must have title and description at minimum
52
+ const hasTitle = /^#\s+\S+/m.test(content);
53
+ const hasDescription = /##\s+(description|描述)/im.test(content);
54
+ if (!hasTitle || !hasDescription)
55
+ return false;
56
+ if (testCases.length === 0) {
57
+ return /##\s+(step|steps|步骤)/im.test(content);
58
+ }
59
+ const provider = router.getProvider('l3');
60
+ const verifyPrompt = `你是 Skill 质量验证员。根据以下 skill 定义和测试用例,判断 skill 是否能正确处理这些用例。
61
+ 只输出 JSON: {"passed": true/false, "reasons": ["..."]}`;
62
+ const response = await provider.chat({
63
+ systemPrompt: verifyPrompt,
64
+ messages: [{
65
+ id: (0, crypto_1.randomUUID)(),
66
+ role: 'user',
67
+ content: `Skill:\n${content.slice(0, 1000)}\n\nTest cases:\n${testCases.slice(0, 5).join('\n')}`,
68
+ timestamp: Date.now(),
69
+ }],
70
+ });
71
+ const match = response.message.content.match(/\{[\s\S]*\}/);
72
+ if (!match)
73
+ return /##\s+(step|steps|步骤)/im.test(content);
74
+ try {
75
+ const parsed = JSON.parse(match[0]);
76
+ return parsed.passed === true;
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ async function retireStaleSkills(brain, maxIdleDays = 30) {
83
+ const cutoff = new Date();
84
+ cutoff.setDate(cutoff.getDate() - maxIdleDays);
85
+ const cutoffStr = cutoff.toISOString();
86
+ const recalled = await brain.recall({
87
+ query: 'skill candidate active skill record',
88
+ topK: 200,
89
+ });
90
+ const retired = [];
91
+ for (const entry of recalled.entries) {
92
+ let data;
93
+ try {
94
+ data = JSON.parse(entry.content);
95
+ }
96
+ catch {
97
+ continue;
98
+ }
99
+ if (data.type !== 'skill_record')
100
+ continue;
101
+ if (data.status === 'retired')
102
+ continue;
103
+ const neverUsed = !entry.lastUsed;
104
+ const idleTooLong = entry.lastUsed ? entry.lastUsed < cutoffStr : true;
105
+ if (!(neverUsed || (idleTooLong && entry.useCount < 2)))
106
+ continue;
107
+ await brain.store({
108
+ content: JSON.stringify({ ...data, status: 'retired' }),
109
+ source: 'l3',
110
+ layer: 'workstation',
111
+ tags: ['skill', 'retired', String(data.name ?? '')],
112
+ embedding: null,
113
+ maturityScore: 0,
114
+ useCount: entry.useCount,
115
+ lastUsed: entry.lastUsed,
116
+ });
117
+ if (data.filePath)
118
+ retired.push(data.filePath);
119
+ }
120
+ return retired;
121
+ }
122
+ //# sourceMappingURL=l3-skill-verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l3-skill-verify.js","sourceRoot":"","sources":["../../src/evolution/l3-skill-verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { EvolutionConfig, DesensitizeResult } from '../core/types';
2
+ export declare function desensitize(content: string, _config: EvolutionConfig): Promise<DesensitizeResult>;
3
+ export declare function scanForPII(text: string): Promise<{
4
+ hasPII: boolean;
5
+ types: string[];
6
+ }>;
7
+ //# sourceMappingURL=l4-desensitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l4-desensitize.d.ts","sourceRoot":"","sources":["../../src/evolution/l4-desensitize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMxE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAa5B;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAM5F"}