@roarpeng/graphflow 1.3.4 → 1.4.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 (180) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +124 -118
  3. package/dist/agents/insight.d.ts +1 -1
  4. package/dist/agents/insight.d.ts.map +1 -1
  5. package/dist/agents/insight.js +1 -1
  6. package/dist/agents/insight.js.map +1 -1
  7. package/dist/agents/validator.js +1 -1
  8. package/dist/agents/validator.js.map +1 -1
  9. package/dist/config/defaults.d.ts.map +1 -1
  10. package/dist/config/defaults.js +3 -17
  11. package/dist/config/defaults.js.map +1 -1
  12. package/dist/config/embedding-factory.d.ts.map +1 -1
  13. package/dist/config/embedding-factory.js +4 -5
  14. package/dist/config/embedding-factory.js.map +1 -1
  15. package/dist/config/llm-availability.d.ts.map +1 -1
  16. package/dist/config/llm-availability.js +0 -8
  17. package/dist/config/llm-availability.js.map +1 -1
  18. package/dist/config/loader.d.ts.map +1 -1
  19. package/dist/config/loader.js +4 -75
  20. package/dist/config/loader.js.map +1 -1
  21. package/dist/config/merge.d.ts.map +1 -1
  22. package/dist/config/merge.js +0 -40
  23. package/dist/config/merge.js.map +1 -1
  24. package/dist/config/schema.d.ts +5 -43
  25. package/dist/config/schema.d.ts.map +1 -1
  26. package/dist/core/agent-delegation.d.ts +1 -1
  27. package/dist/core/agent-delegation.d.ts.map +1 -1
  28. package/dist/core/orchestrator-context.d.ts.map +1 -1
  29. package/dist/core/orchestrator-context.js +12 -5
  30. package/dist/core/orchestrator-context.js.map +1 -1
  31. package/dist/core/orchestrator.js +8 -2
  32. package/dist/core/orchestrator.js.map +1 -1
  33. package/dist/core/triage.js +2 -2
  34. package/dist/core/triage.js.map +1 -1
  35. package/dist/core/types.d.ts +1 -1
  36. package/dist/core/types.d.ts.map +1 -1
  37. package/dist/graph/context-slicer-types.d.ts +13 -16
  38. package/dist/graph/context-slicer-types.d.ts.map +1 -1
  39. package/dist/graph/context-slicer-types.js.map +1 -1
  40. package/dist/graph/context-slicer.d.ts +4 -5
  41. package/dist/graph/context-slicer.d.ts.map +1 -1
  42. package/dist/graph/context-slicer.js +14 -28
  43. package/dist/graph/context-slicer.js.map +1 -1
  44. package/dist/graph/file-indexer.d.ts.map +1 -1
  45. package/dist/graph/file-indexer.js +19 -0
  46. package/dist/graph/file-indexer.js.map +1 -1
  47. package/dist/hooks/post-run-sync.d.ts +1 -1
  48. package/dist/hooks/post-run-sync.d.ts.map +1 -1
  49. package/dist/hooks/post-run-sync.js +3 -14
  50. package/dist/hooks/post-run-sync.js.map +1 -1
  51. package/dist/index.d.ts +2 -4
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +5 -7
  54. package/dist/index.js.map +1 -1
  55. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  56. package/dist/integrations/agent-mcp-installer.js +6 -17
  57. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  58. package/dist/learning/embeddings.d.ts +0 -1
  59. package/dist/learning/embeddings.d.ts.map +1 -1
  60. package/dist/learning/embeddings.js +0 -15
  61. package/dist/learning/embeddings.js.map +1 -1
  62. package/dist/learning/episodic-memory.d.ts +1 -1
  63. package/dist/learning/episodic-memory.d.ts.map +1 -1
  64. package/dist/learning/episodic-memory.js +38 -1
  65. package/dist/learning/episodic-memory.js.map +1 -1
  66. package/dist/learning/hnsw-index.d.ts +23 -4
  67. package/dist/learning/hnsw-index.d.ts.map +1 -1
  68. package/dist/learning/hnsw-index.js +78 -4
  69. package/dist/learning/hnsw-index.js.map +1 -1
  70. package/dist/learning/nightly-trainer.d.ts +0 -2
  71. package/dist/learning/nightly-trainer.d.ts.map +1 -1
  72. package/dist/learning/nightly-trainer.js +10 -18
  73. package/dist/learning/nightly-trainer.js.map +1 -1
  74. package/dist/learning/skill-flywheel.d.ts +2 -3
  75. package/dist/learning/skill-flywheel.d.ts.map +1 -1
  76. package/dist/learning/skill-flywheel.js +23 -84
  77. package/dist/learning/skill-flywheel.js.map +1 -1
  78. package/dist/learning/skill-store.d.ts +1 -3
  79. package/dist/learning/skill-store.d.ts.map +1 -1
  80. package/dist/learning/skill-store.js +0 -36
  81. package/dist/learning/skill-store.js.map +1 -1
  82. package/dist/learning/skill-types.d.ts +0 -13
  83. package/dist/learning/skill-types.d.ts.map +1 -1
  84. package/dist/learning/skill-types.js.map +1 -1
  85. package/dist/routing/model-router.d.ts +1 -1
  86. package/dist/routing/model-router.d.ts.map +1 -1
  87. package/dist/routing/model-router.js +1 -52
  88. package/dist/routing/model-router.js.map +1 -1
  89. package/dist/routing/provider-executor.d.ts.map +1 -1
  90. package/dist/routing/provider-executor.js +0 -48
  91. package/dist/routing/provider-executor.js.map +1 -1
  92. package/dist/routing/provider-health.d.ts.map +1 -1
  93. package/dist/routing/provider-health.js +2 -12
  94. package/dist/routing/provider-health.js.map +1 -1
  95. package/dist/surfaces/cli/index.js +19 -77
  96. package/dist/surfaces/cli/index.js.map +1 -1
  97. package/dist/surfaces/cli/init.d.ts +2 -25
  98. package/dist/surfaces/cli/init.d.ts.map +1 -1
  99. package/dist/surfaces/cli/init.js +57 -312
  100. package/dist/surfaces/cli/init.js.map +1 -1
  101. package/dist/surfaces/cli/output.d.ts.map +1 -1
  102. package/dist/surfaces/cli/output.js +1 -3
  103. package/dist/surfaces/cli/output.js.map +1 -1
  104. package/dist/surfaces/cli/runtime/env.d.ts +0 -5
  105. package/dist/surfaces/cli/runtime/env.d.ts.map +1 -1
  106. package/dist/surfaces/cli/runtime/env.js +0 -115
  107. package/dist/surfaces/cli/runtime/env.js.map +1 -1
  108. package/dist/surfaces/cli/runtime/facade.d.ts +10 -17
  109. package/dist/surfaces/cli/runtime/facade.d.ts.map +1 -1
  110. package/dist/surfaces/cli/runtime/facade.js +5 -5
  111. package/dist/surfaces/cli/runtime/facade.js.map +1 -1
  112. package/dist/surfaces/cli/runtime/graph.d.ts +11 -21
  113. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  114. package/dist/surfaces/cli/runtime/graph.js +31 -261
  115. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  116. package/dist/surfaces/cli/runtime/learning.d.ts +6 -0
  117. package/dist/surfaces/cli/runtime/learning.d.ts.map +1 -0
  118. package/dist/surfaces/cli/runtime/learning.js +28 -0
  119. package/dist/surfaces/cli/runtime/learning.js.map +1 -0
  120. package/dist/surfaces/cli/runtime/routing.d.ts +1 -3
  121. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
  122. package/dist/surfaces/cli/runtime/routing.js +12 -36
  123. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  124. package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -1
  125. package/dist/surfaces/cli/runtime/settings.js +11 -117
  126. package/dist/surfaces/cli/runtime/settings.js.map +1 -1
  127. package/dist/surfaces/cli/runtime/types.d.ts +11 -35
  128. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  129. package/dist/surfaces/cli/runtime.d.ts +4 -4
  130. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  131. package/dist/surfaces/cli/runtime.js +5 -12
  132. package/dist/surfaces/cli/runtime.js.map +1 -1
  133. package/dist/surfaces/cursor-rules/graphflow.mdc +3 -3
  134. package/dist/surfaces/mcp/server.d.ts +4 -4
  135. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  136. package/dist/surfaces/mcp/server.js +18 -21
  137. package/dist/surfaces/mcp/server.js.map +1 -1
  138. package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
  139. package/dist/surfaces/mcp/tool-definitions.js +0 -42
  140. package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
  141. package/dist/surfaces/mcp/tool-handlers.d.ts +1 -4
  142. package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
  143. package/dist/surfaces/mcp/tool-handlers.js +1 -64
  144. package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
  145. package/dist/surfaces/trae-skill/graphflow/SKILL.md +10 -30
  146. package/package.json +3 -5
  147. package/src/surfaces/cursor-rules/graphflow.mdc +3 -3
  148. package/src/surfaces/trae-skill/graphflow/SKILL.md +10 -30
  149. package/dist/graph/compression-model.d.ts +0 -52
  150. package/dist/graph/compression-model.d.ts.map +0 -1
  151. package/dist/graph/compression-model.js +0 -125
  152. package/dist/graph/compression-model.js.map +0 -1
  153. package/dist/graph/semantic-compression.d.ts +0 -65
  154. package/dist/graph/semantic-compression.d.ts.map +0 -1
  155. package/dist/graph/semantic-compression.js +0 -173
  156. package/dist/graph/semantic-compression.js.map +0 -1
  157. package/dist/graph/semantic-enricher.d.ts +0 -17
  158. package/dist/graph/semantic-enricher.d.ts.map +0 -1
  159. package/dist/graph/semantic-enricher.js +0 -97
  160. package/dist/graph/semantic-enricher.js.map +0 -1
  161. package/dist/learning/canary-gate.d.ts +0 -6
  162. package/dist/learning/canary-gate.d.ts.map +0 -1
  163. package/dist/learning/canary-gate.js +0 -13
  164. package/dist/learning/canary-gate.js.map +0 -1
  165. package/dist/learning/local-embedding.d.ts +0 -3
  166. package/dist/learning/local-embedding.d.ts.map +0 -1
  167. package/dist/learning/local-embedding.js +0 -37
  168. package/dist/learning/local-embedding.js.map +0 -1
  169. package/dist/learning/skill-evolution.d.ts +0 -16
  170. package/dist/learning/skill-evolution.d.ts.map +0 -1
  171. package/dist/learning/skill-evolution.js +0 -154
  172. package/dist/learning/skill-evolution.js.map +0 -1
  173. package/dist/learning/vector-store.d.ts +0 -20
  174. package/dist/learning/vector-store.d.ts.map +0 -1
  175. package/dist/learning/vector-store.js +0 -77
  176. package/dist/learning/vector-store.js.map +0 -1
  177. package/dist/routing/provider-adapters/openbmb.d.ts +0 -16
  178. package/dist/routing/provider-adapters/openbmb.d.ts.map +0 -1
  179. package/dist/routing/provider-adapters/openbmb.js +0 -368
  180. package/dist/routing/provider-adapters/openbmb.js.map +0 -1
@@ -1,97 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enrichGraphSemanticsSilent = enrichGraphSemanticsSilent;
4
- const logger_1 = require("../utils/logger");
5
- const provider_executor_1 = require("../routing/provider-executor");
6
- const model_router_1 = require("../routing/model-router");
7
- /**
8
- * 后台静默富化图谱节点语义
9
- */
10
- async function enrichGraphSemanticsSilent(client, options) {
11
- if (!client.readSnapshot || typeof client.readSnapshot !== "function") {
12
- return { enrichedCount: 0 };
13
- }
14
- const batchSize = options?.batchSize ?? 5;
15
- const sleepMs = options?.sleepMs ?? 0;
16
- const modelOverride = options?.model ?? options?.openbmbModel;
17
- const timeoutMs = options?.timeoutMs;
18
- // 1. 读取当前图谱快照
19
- const snapshot = await client.readSnapshot();
20
- // 2. 筛选出缺乏自然语言摘要说明的 Symbol 节点
21
- const pendingNodes = snapshot.nodes.filter((node) => {
22
- if (node.type !== "Symbol")
23
- return false;
24
- const summary = node.metadata?.summary;
25
- return typeof summary !== "string" || summary.trim().length === 0;
26
- });
27
- if (pendingNodes.length === 0) {
28
- return { enrichedCount: 0 };
29
- }
30
- // 3. 小批量增量提取并分析
31
- const batch = pendingNodes.slice(0, batchSize);
32
- const updatedNodes = [];
33
- for (const node of batch) {
34
- const codeSignature = node.content; // 原有的代码签名行
35
- const fileSource = node.metadata?.file ?? "unknown";
36
- const prompt = [
37
- "你是一个卓越的代码语义分析器。",
38
- "请用一句话极其精炼地总结以下代码片段或函数签名的核心功能,限 20 字以内(使用中文)。",
39
- "绝不要输出任何解释、标点或引言,直接给出核心功能总结。",
40
- `代码签名: ${safeQuote(codeSignature)}`,
41
- `所在文件: ${fileSource}`,
42
- "功能总结:"
43
- ].join("\n");
44
- try {
45
- const selection = (0, model_router_1.resolveModelForRole)("enricher");
46
- if (modelOverride?.trim()) {
47
- selection.model = modelOverride.trim();
48
- }
49
- const previousTimeout = process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS;
50
- if (timeoutMs !== undefined) {
51
- process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS = String(timeoutMs);
52
- }
53
- let rawSummary = "";
54
- try {
55
- rawSummary = await (0, provider_executor_1.executeRolePrompt)("enricher", prompt, selection);
56
- }
57
- finally {
58
- if (timeoutMs !== undefined) {
59
- if (previousTimeout === undefined) {
60
- delete process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS;
61
- }
62
- else {
63
- process.env.GRAPHFLOW_PROVIDER_TIMEOUT_MS = previousTimeout;
64
- }
65
- }
66
- }
67
- const summary = rawSummary.trim().replace(/^功能总结[::]?\s*/, "");
68
- // 5. 写入 metadata 存储
69
- updatedNodes.push({
70
- ...node,
71
- metadata: {
72
- ...node.metadata,
73
- summary: summary || "无描述",
74
- enrichedAt: Date.now()
75
- }
76
- });
77
- // 批次内微休眠,保护系统 IO 性能
78
- if (sleepMs > 0) {
79
- await new Promise((resolve) => setTimeout(resolve, sleepMs));
80
- }
81
- }
82
- catch (error) {
83
- logger_1.logger.error({ error }, "Caught error");
84
- // 异常保护,如果小模型离线或限流,跳过当前节点,保证后台线程绝对健壮
85
- continue;
86
- }
87
- }
88
- // 6. 增量写回图谱数据库 (SQLite 或 File 自动增量更新)
89
- if (updatedNodes.length > 0) {
90
- await client.upsertNodes(updatedNodes);
91
- }
92
- return { enrichedCount: updatedNodes.length };
93
- }
94
- function safeQuote(value) {
95
- return "```\n" + value.replace(/```/g, "''").slice(0, 800) + "\n```";
96
- }
97
- //# sourceMappingURL=semantic-enricher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-enricher.js","sourceRoot":"","sources":["../../src/graph/semantic-enricher.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export interface CanaryDecision {
2
- allowNewPolicy: boolean;
3
- reason: string;
4
- }
5
- export declare function evaluateCanary(trafficPercent: number, firstPassRateDelta: number, tokenDelta: number): CanaryDecision;
6
- //# sourceMappingURL=canary-gate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canary-gate.d.ts","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,GACjB,cAAc,CAUhB"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.evaluateCanary = evaluateCanary;
4
- function evaluateCanary(trafficPercent, firstPassRateDelta, tokenDelta) {
5
- if (trafficPercent <= 0) {
6
- return { allowNewPolicy: false, reason: "Canary traffic is disabled." };
7
- }
8
- if (firstPassRateDelta < 0 || tokenDelta > 0) {
9
- return { allowNewPolicy: false, reason: "Metrics regressed, rollback required." };
10
- }
11
- return { allowNewPolicy: true, reason: "Metrics passed canary gate." };
12
- }
13
- //# sourceMappingURL=canary-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canary-gate.js","sourceRoot":"","sources":["../../src/learning/canary-gate.ts"],"names":[],"mappings":";;AAKA,wCAcC;AAdD,SAAgB,cAAc,CAC5B,cAAsB,EACtB,kBAA0B,EAC1B,UAAkB;IAElB,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,kBAAkB,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACpF,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;AACzE,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { EmbeddingProvider } from "./embeddings.js";
2
- export declare function createLocalEmbeddingProvider(modelName?: string): EmbeddingProvider;
3
- //# sourceMappingURL=local-embedding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-embedding.d.ts","sourceRoot":"","sources":["../../src/learning/local-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,wBAAgB,4BAA4B,CAC1C,SAAS,GAAE,MAAkC,GAC5C,iBAAiB,CAwCnB"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLocalEmbeddingProvider = createLocalEmbeddingProvider;
4
- function createLocalEmbeddingProvider(modelName = "Xenova/bge-base-zh-v1.5") {
5
- let pipelinePromise = null;
6
- // 预热标记:确保本地模型的懒加载管线只触发一次
7
- let warmupStarted = false;
8
- return {
9
- async embed(text) {
10
- if (!pipelinePromise) {
11
- pipelinePromise = (async () => {
12
- const { pipeline } = await import("@xenova/transformers");
13
- const extractor = await pipeline("feature-extraction", modelName);
14
- return extractor;
15
- })();
16
- }
17
- const extractor = await pipelinePromise;
18
- const output = await extractor(text, { pooling: "mean", normalize: true });
19
- return Array.from(output.data);
20
- },
21
- // 预热:用 dummy 文本 "warmup" 触发一次推理,提前完成模型权重加载与管线初始化,
22
- // 避免首个真实请求承担冷启动延迟。幂等:仅触发一次实际加载。
23
- async warmup() {
24
- if (warmupStarted) {
25
- // 等待已在进行的加载完成即可
26
- if (pipelinePromise) {
27
- await pipelinePromise.catch(() => undefined);
28
- }
29
- return;
30
- }
31
- warmupStarted = true;
32
- // embed 内部会初始化 pipelinePromise 并执行一次推理
33
- await this.embed("warmup").catch(() => undefined);
34
- },
35
- };
36
- }
37
- //# sourceMappingURL=local-embedding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-embedding.js","sourceRoot":"","sources":["../../src/learning/local-embedding.ts"],"names":[],"mappings":";;AAEA,oEA0CC;AA1CD,SAAgB,4BAA4B,CAC1C,YAAoB,yBAAyB;IAE7C,IAAI,eAAe,GAER,IAAI,CAAC;IAEhB,yBAAyB;IACzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAY;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;oBAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAC1D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;oBAClE,OAAO,SAGkC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,kDAAkD;QAClD,gCAAgC;QAChC,KAAK,CAAC,MAAM;YACV,IAAI,aAAa,EAAE,CAAC;gBAClB,gBAAgB;gBAChB,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO;YACT,CAAC;YACD,aAAa,GAAG,IAAI,CAAC;YACrB,uCAAuC;YACvC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { GraphNode } from "../core/types";
2
- import type { GraphClient } from "../graph/client-factory";
3
- import type { CompositeSkillState, EvolutionarySkillNode } from "./skill-types";
4
- /**
5
- * 调遣 MiniCPM-1B 模拟人类进行跨技能融会贯通与概念演进
6
- */
7
- export declare function evolveCompositeSkillLlm(_client: GraphClient, n1: string, n2: string, previousComposite: CompositeSkillState | null): Promise<GraphNode | null>;
8
- export declare function getTripleAtomNames(skills: string[]): [string, string, string] | undefined;
9
- export declare function buildTripleFusionNode(names: [string, string, string], now: number): GraphNode | undefined;
10
- export declare function cleanJsonString(raw: string, n1: string, n2: string): string;
11
- /**
12
- * 更新合成技能的 canary 验证状态
13
- * 当 canaryUses >= 3 时评估通过率决定 verified 或 demoted
14
- */
15
- export declare function updateSkillCanary(client: GraphClient, skillId: string, outcome: 'pass' | 'fail'): Promise<EvolutionarySkillNode | undefined>;
16
- //# sourceMappingURL=skill-evolution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-evolution.d.ts","sourceRoot":"","sources":["../../src/learning/skill-evolution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGhF;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,iBAAiB,EAAE,mBAAmB,GAAG,IAAI,GAC5C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAwD3B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAUzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAuBzG;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA+B5C"}
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.evolveCompositeSkillLlm = evolveCompositeSkillLlm;
4
- exports.getTripleAtomNames = getTripleAtomNames;
5
- exports.buildTripleFusionNode = buildTripleFusionNode;
6
- exports.cleanJsonString = cleanJsonString;
7
- exports.updateSkillCanary = updateSkillCanary;
8
- const hash_1 = require("../utils/hash");
9
- const logger_1 = require("../utils/logger");
10
- const provider_executor_1 = require("../routing/provider-executor");
11
- const skill_store_1 = require("./skill-store");
12
- /**
13
- * 调遣 MiniCPM-1B 模拟人类进行跨技能融会贯通与概念演进
14
- */
15
- async function evolveCompositeSkillLlm(_client, n1, n2, previousComposite) {
16
- const openbmbModel = process.env.GRAPHFLOW_SKILL_EVOLVE_MODEL ?? "minicpm5-1b";
17
- const prompt = [
18
- `你是一个卓越的代码认知科学家,正模拟人类大脑的技能成长。`,
19
- `你已完全精通以下两项基础“原子技能”:`,
20
- `1. 技能 A: ${n1}`,
21
- `2. 技能 B: ${n2}`,
22
- ``,
23
- `请联想推演:人类在综合 A 和 B 后,能够融会贯通衍生出解决 C 领域什么问题的“复合高阶技能”?`,
24
- `请严格返回 JSON 格式:{"compositeSkillName": "复合技能名", "domainC": "C领域名", "methodologyDescription": "一句话核心方法论"}`,
25
- `不要有任何标点、引言 or markdown 包裹。直接输出合法 JSON:`
26
- ].join("\n");
27
- try {
28
- const selection = {
29
- provider: "openbmb",
30
- model: openbmbModel,
31
- tier: "economy",
32
- fallbackApplied: false
33
- };
34
- const rawJson = await (0, provider_executor_1.executeRolePrompt)("evolver", prompt, selection);
35
- const cleaned = cleanJsonString(rawJson, n1, n2);
36
- const parsed = JSON.parse(cleaned);
37
- if (!parsed.compositeSkillName || !parsed.domainC) {
38
- return null;
39
- }
40
- const evolutionId = `skill:evolution:${(0, hash_1.hashTextHex)(parsed.compositeSkillName)}`;
41
- const record = {
42
- id: evolutionId,
43
- name: parsed.compositeSkillName,
44
- parents: [(0, skill_store_1.skillNodeId)(n1), (0, skill_store_1.skillNodeId)(n2)],
45
- domain: parsed.domainC,
46
- description: parsed.methodologyDescription || "",
47
- score: previousComposite?.score ?? 1,
48
- uses: previousComposite?.uses ?? 1,
49
- updatedAt: Date.now(),
50
- canaryUses: 0,
51
- canaryPasses: 0,
52
- canaryStatus: 'probation',
53
- };
54
- // 返回生成的高阶进化技能节点,在外部写入图谱,并关联 prerequisite 拓扑边
55
- return {
56
- id: evolutionId,
57
- type: "Skill",
58
- content: JSON.stringify({ kind: "evolution", ...record })
59
- };
60
- }
61
- catch (error) {
62
- logger_1.logger.error({ error }, "Caught error");
63
- // 异常安全降级,若推理失败,退回传统规则拼接
64
- return null;
65
- }
66
- }
67
- function getTripleAtomNames(skills) {
68
- if (skills.length < 3) {
69
- return undefined;
70
- }
71
- // 别忘了从 skill-store.ts 拿 dedup (或者这里自己 dedup。为了简单,直接在这里使用 Set,也可以从 skill-store 导入。这里用 Set 也很简单,或者直接从 skill-store 导入。)
72
- const atoms = Array.from(new Set(skills)).sort();
73
- if (atoms.length < 3) {
74
- return undefined;
75
- }
76
- return [atoms[0], atoms[1], atoms[2]];
77
- }
78
- function buildTripleFusionNode(names, now) {
79
- if (process.env.GRAPHFLOW_SKILL_TRIPLE_FUSION === "0") {
80
- return undefined;
81
- }
82
- const [a, b, c] = names;
83
- const text = `${a}+${b}+${c}`;
84
- const id = `skill:triple:${(0, skill_store_1.sanitizeAtom)(a)}__${(0, skill_store_1.sanitizeAtom)(b)}__${(0, skill_store_1.sanitizeAtom)(c)}`;
85
- const content = {
86
- kind: "triple-composite",
87
- id,
88
- name: text,
89
- parents: [(0, skill_store_1.skillNodeId)(a), (0, skill_store_1.skillNodeId)(b), (0, skill_store_1.skillNodeId)(c)],
90
- score: 1,
91
- uses: 1,
92
- updatedAt: now,
93
- methodology: `融合 ${a}、${b}、${c} 的三元高阶技能`,
94
- };
95
- return {
96
- id,
97
- type: "Skill",
98
- content: JSON.stringify(content),
99
- };
100
- }
101
- function cleanJsonString(raw, n1, n2) {
102
- let text = raw.trim();
103
- // 适配测试环境及 mock 环境下的返回
104
- if (text.includes("[openbmb:") || text.includes("[openai:") || !text.startsWith("{")) {
105
- return JSON.stringify({
106
- compositeSkillName: `构建 ${n1} 与 ${n2} 融合高阶技能`,
107
- domainC: `${n1} & ${n2} 复合工程领域`,
108
- methodologyDescription: `在 mock 测试下完美融合 ${n1} 与 ${n2},达到大师级设计。`
109
- });
110
- }
111
- const fence = text.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i);
112
- if (fence && fence[1]) {
113
- text = fence[1].trim();
114
- }
115
- const start = text.indexOf("{");
116
- const end = text.lastIndexOf("}");
117
- if (start !== -1 && end !== -1 && end > start) {
118
- return text.slice(start, end + 1);
119
- }
120
- return text;
121
- }
122
- /**
123
- * 更新合成技能的 canary 验证状态
124
- * 当 canaryUses >= 3 时评估通过率决定 verified 或 demoted
125
- */
126
- async function updateSkillCanary(client, skillId, outcome) {
127
- const existing = await (0, skill_store_1.loadEvolutionSkill)(client, skillId);
128
- if (!existing) {
129
- return undefined;
130
- }
131
- existing.canaryUses += 1;
132
- if (outcome === 'pass') {
133
- existing.canaryPasses += 1;
134
- }
135
- // 累积足够样本后进行阈值判定
136
- if (existing.canaryUses >= 3) {
137
- const passRate = existing.canaryPasses / existing.canaryUses;
138
- if (passRate >= 0.5) {
139
- existing.canaryStatus = 'verified';
140
- }
141
- else {
142
- existing.canaryStatus = 'demoted';
143
- existing.score = -10;
144
- }
145
- }
146
- existing.updatedAt = Date.now();
147
- await client.upsertNodes([{
148
- id: existing.id,
149
- type: "Skill",
150
- content: JSON.stringify({ kind: "evolution", ...existing }),
151
- }]);
152
- return existing;
153
- }
154
- //# sourceMappingURL=skill-evolution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-evolution.js","sourceRoot":"","sources":["../../src/learning/skill-evolution.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- export interface VectorNode {
2
- id: string;
3
- content: string;
4
- embedding: number[];
5
- }
6
- export declare class VectorStore {
7
- private db;
8
- constructor(dbPath?: string);
9
- private initSchema;
10
- addNode(node: VectorNode): void;
11
- addNodes(nodes: VectorNode[]): void;
12
- query(queryEmbedding: number[], topK?: number, minSimilarity?: number): Array<{
13
- node: VectorNode;
14
- score: number;
15
- }>;
16
- deleteNode(id: string): void;
17
- /** 关闭底层 SQLite 句柄,长驻进程退出前必须调用以避免文件描述符泄漏。 */
18
- close(): void;
19
- }
20
- //# sourceMappingURL=vector-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../src/learning/vector-store.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAoC;gBAElC,MAAM,GAAE,MAAsC;IAU1D,OAAO,CAAC,UAAU;IAUX,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAQ/B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI;IAanC,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAU,EAAE,aAAa,GAAE,MAAU,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;IAuBtH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKnC,4CAA4C;IACrC,KAAK,IAAI,IAAI;CAGrB"}
@@ -1,77 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.VectorStore = void 0;
7
- const node_fs_1 = require("node:fs");
8
- const node_path_1 = require("node:path");
9
- const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
10
- const embeddings_1 = require("./embeddings");
11
- class VectorStore {
12
- db;
13
- constructor(dbPath = ".graphflow-cache/vectors.db") {
14
- const dir = (0, node_path_1.dirname)(dbPath);
15
- if (dir && dir !== "." && dir !== "") {
16
- (0, node_fs_1.mkdirSync)(dir, { recursive: true });
17
- }
18
- this.db = new better_sqlite3_1.default(dbPath);
19
- this.db.pragma("journal_mode = WAL");
20
- this.initSchema();
21
- }
22
- initSchema() {
23
- this.db.exec(`
24
- CREATE TABLE IF NOT EXISTS vector_nodes (
25
- id TEXT PRIMARY KEY,
26
- content TEXT NOT NULL,
27
- embedding TEXT NOT NULL
28
- )
29
- `);
30
- }
31
- addNode(node) {
32
- const stmt = this.db.prepare(`INSERT INTO vector_nodes (id, content, embedding) VALUES (?, ?, ?)
33
- ON CONFLICT(id) DO UPDATE SET content=excluded.content, embedding=excluded.embedding`);
34
- stmt.run(node.id, node.content, JSON.stringify(node.embedding));
35
- }
36
- addNodes(nodes) {
37
- const stmt = this.db.prepare(`INSERT INTO vector_nodes (id, content, embedding) VALUES (?, ?, ?)
38
- ON CONFLICT(id) DO UPDATE SET content=excluded.content, embedding=excluded.embedding`);
39
- const tx = this.db.transaction((batch) => {
40
- for (const node of batch) {
41
- stmt.run(node.id, node.content, JSON.stringify(node.embedding));
42
- }
43
- });
44
- tx(nodes);
45
- }
46
- query(queryEmbedding, topK = 5, minSimilarity = 0) {
47
- const rows = this.db.prepare(`SELECT id, content, embedding FROM vector_nodes`).all();
48
- const results = [];
49
- for (const row of rows) {
50
- try {
51
- const emb = JSON.parse(row.embedding);
52
- const score = (0, embeddings_1.cosineSimilarity)(queryEmbedding, emb);
53
- if (score >= minSimilarity) {
54
- results.push({
55
- node: { id: row.id, content: row.content, embedding: emb },
56
- score
57
- });
58
- }
59
- }
60
- catch {
61
- // ignore invalid JSON
62
- }
63
- }
64
- results.sort((a, b) => b.score - a.score);
65
- return results.slice(0, topK);
66
- }
67
- deleteNode(id) {
68
- const stmt = this.db.prepare(`DELETE FROM vector_nodes WHERE id = ?`);
69
- stmt.run(id);
70
- }
71
- /** 关闭底层 SQLite 句柄,长驻进程退出前必须调用以避免文件描述符泄漏。 */
72
- close() {
73
- this.db.close();
74
- }
75
- }
76
- exports.VectorStore = VectorStore;
77
- //# sourceMappingURL=vector-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../src/learning/vector-store.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- export interface ProviderTextRequest {
2
- prompt: string;
3
- model: string;
4
- }
5
- export type OpenBmbMode = "embedded" | "ollama" | "openai-compat";
6
- export interface OpenBmbRuntimeOptions {
7
- mode?: OpenBmbMode;
8
- baseUrl?: string;
9
- apiKey?: string;
10
- timeoutMs?: number;
11
- maxTokens?: number;
12
- temperature?: number;
13
- modelPath?: string;
14
- }
15
- export declare function openbmbGenerateText(request: ProviderTextRequest, runtimeOptions?: OpenBmbRuntimeOptions): Promise<string>;
16
- //# sourceMappingURL=openbmb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openbmb.d.ts","sourceRoot":"","sources":["../../../src/routing/provider-adapters/openbmb.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,eAAe,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8aD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,EAC5B,cAAc,CAAC,EAAE,qBAAqB,GACrC,OAAO,CAAC,MAAM,CAAC,CAsBjB"}