knight-agent 1.1.0 → 1.1.2

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 (173) hide show
  1. package/Host.d.ts +3 -11
  2. package/Host.d.ts.map +1 -1
  3. package/Host.js +4 -5
  4. package/Host.js.map +1 -1
  5. package/base/AbstractAgent.d.ts +1 -99
  6. package/base/AbstractAgent.d.ts.map +1 -1
  7. package/base/AbstractAgent.js +94 -20
  8. package/base/AbstractAgent.js.map +1 -1
  9. package/base/AbstractLLM.d.ts +43 -0
  10. package/base/AbstractLLM.d.ts.map +1 -0
  11. package/base/AbstractLLM.js +121 -0
  12. package/base/AbstractLLM.js.map +1 -0
  13. package/base/AbstractModule.d.ts +1 -0
  14. package/base/AbstractModule.d.ts.map +1 -1
  15. package/base/AbstractModule.js +3 -0
  16. package/base/AbstractModule.js.map +1 -1
  17. package/base/AbstractObject.d.ts +6 -4
  18. package/base/AbstractObject.d.ts.map +1 -1
  19. package/base/AbstractObject.js +6 -2
  20. package/base/AbstractObject.js.map +1 -1
  21. package/base/index.d.ts +1 -4
  22. package/base/index.d.ts.map +1 -1
  23. package/base/index.js +1 -4
  24. package/base/index.js.map +1 -1
  25. package/index.d.ts +2 -1
  26. package/index.d.ts.map +1 -1
  27. package/index.js +2 -6
  28. package/index.js.map +1 -1
  29. package/module/AgentModule/Agent.d.ts +1 -54
  30. package/module/AgentModule/Agent.d.ts.map +1 -1
  31. package/module/AgentModule/Agent.js +22 -207
  32. package/module/AgentModule/Agent.js.map +1 -1
  33. package/module/AgentModule/AgentModule.d.ts +1 -25
  34. package/module/AgentModule/AgentModule.d.ts.map +1 -1
  35. package/module/AgentModule/AgentModule.js +78 -63
  36. package/module/AgentModule/AgentModule.js.map +1 -1
  37. package/module/AgentModule/index.d.ts +1 -1
  38. package/module/AgentModule/index.d.ts.map +1 -1
  39. package/module/AgentModule/index.js +2 -15
  40. package/module/AgentModule/index.js.map +1 -1
  41. package/module/LLMModule/ClaudeLLM.d.ts +23 -0
  42. package/module/LLMModule/ClaudeLLM.d.ts.map +1 -0
  43. package/module/LLMModule/ClaudeLLM.js +138 -0
  44. package/module/LLMModule/ClaudeLLM.js.map +1 -0
  45. package/module/LLMModule/DeepSeekLLM.d.ts +24 -0
  46. package/module/LLMModule/DeepSeekLLM.d.ts.map +1 -0
  47. package/module/LLMModule/DeepSeekLLM.js +136 -0
  48. package/module/LLMModule/DeepSeekLLM.js.map +1 -0
  49. package/module/LLMModule/GeminiLLM.d.ts +23 -0
  50. package/module/LLMModule/GeminiLLM.d.ts.map +1 -0
  51. package/module/LLMModule/GeminiLLM.js +168 -0
  52. package/module/LLMModule/GeminiLLM.js.map +1 -0
  53. package/module/LLMModule/LLMModule.d.ts +33 -0
  54. package/module/LLMModule/LLMModule.d.ts.map +1 -0
  55. package/module/LLMModule/LLMModule.js +92 -0
  56. package/module/LLMModule/LLMModule.js.map +1 -0
  57. package/module/LLMModule/OpenAILLM.d.ts +23 -0
  58. package/module/LLMModule/OpenAILLM.d.ts.map +1 -0
  59. package/module/LLMModule/OpenAILLM.js +145 -0
  60. package/module/LLMModule/OpenAILLM.js.map +1 -0
  61. package/module/LLMModule/QWenLLM.d.ts +23 -0
  62. package/module/LLMModule/QWenLLM.d.ts.map +1 -0
  63. package/module/LLMModule/QWenLLM.js +137 -0
  64. package/module/LLMModule/QWenLLM.js.map +1 -0
  65. package/module/LLMModule/index.d.ts +7 -0
  66. package/module/LLMModule/index.d.ts.map +1 -0
  67. package/module/{SkillModule → LLMModule}/index.js +6 -1
  68. package/module/LLMModule/index.js.map +1 -0
  69. package/module/index.d.ts +1 -4
  70. package/module/index.d.ts.map +1 -1
  71. package/module/index.js +1 -4
  72. package/module/index.js.map +1 -1
  73. package/package.json +1 -1
  74. package/utility/AgentUtility.d.ts +38 -0
  75. package/utility/AgentUtility.d.ts.map +1 -0
  76. package/{base/AbstractTool.js → utility/AgentUtility.js} +1 -1
  77. package/utility/AgentUtility.js.map +1 -0
  78. package/utility/LLMUtility.d.ts +1328 -0
  79. package/utility/LLMUtility.d.ts.map +1 -0
  80. package/utility/LLMUtility.js +114 -0
  81. package/utility/LLMUtility.js.map +1 -0
  82. package/utility/index.d.ts +2 -1
  83. package/utility/index.d.ts.map +1 -1
  84. package/utility/index.js +2 -1
  85. package/utility/index.js.map +1 -1
  86. package/base/AbstractDialog.d.ts +0 -54
  87. package/base/AbstractDialog.d.ts.map +0 -1
  88. package/base/AbstractDialog.js +0 -86
  89. package/base/AbstractDialog.js.map +0 -1
  90. package/base/AbstractReason.d.ts +0 -44
  91. package/base/AbstractReason.d.ts.map +0 -1
  92. package/base/AbstractReason.js +0 -23
  93. package/base/AbstractReason.js.map +0 -1
  94. package/base/AbstractSkill.d.ts +0 -25
  95. package/base/AbstractSkill.d.ts.map +0 -1
  96. package/base/AbstractSkill.js +0 -3
  97. package/base/AbstractSkill.js.map +0 -1
  98. package/base/AbstractTool.d.ts +0 -34
  99. package/base/AbstractTool.d.ts.map +0 -1
  100. package/base/AbstractTool.js.map +0 -1
  101. package/docs/ARCHITECTURE.md +0 -601
  102. package/docs/README.md +0 -562
  103. package/module/AgentModule/Memory.d.ts +0 -55
  104. package/module/AgentModule/Memory.d.ts.map +0 -1
  105. package/module/AgentModule/Memory.js +0 -288
  106. package/module/AgentModule/Memory.js.map +0 -1
  107. package/module/DialogModule/Dialog.d.ts +0 -14
  108. package/module/DialogModule/Dialog.d.ts.map +0 -1
  109. package/module/DialogModule/Dialog.js +0 -27
  110. package/module/DialogModule/Dialog.js.map +0 -1
  111. package/module/DialogModule/DialogModule.d.ts +0 -39
  112. package/module/DialogModule/DialogModule.d.ts.map +0 -1
  113. package/module/DialogModule/DialogModule.js +0 -118
  114. package/module/DialogModule/DialogModule.js.map +0 -1
  115. package/module/DialogModule/index.d.ts +0 -3
  116. package/module/DialogModule/index.d.ts.map +0 -1
  117. package/module/DialogModule/index.js +0 -19
  118. package/module/DialogModule/index.js.map +0 -1
  119. package/module/ReasonModule/ChainReason.d.ts +0 -11
  120. package/module/ReasonModule/ChainReason.d.ts.map +0 -1
  121. package/module/ReasonModule/ChainReason.js +0 -34
  122. package/module/ReasonModule/ChainReason.js.map +0 -1
  123. package/module/ReasonModule/CommanderReason.d.ts +0 -15
  124. package/module/ReasonModule/CommanderReason.d.ts.map +0 -1
  125. package/module/ReasonModule/CommanderReason.js +0 -151
  126. package/module/ReasonModule/CommanderReason.js.map +0 -1
  127. package/module/ReasonModule/CompetitiveReason.d.ts +0 -13
  128. package/module/ReasonModule/CompetitiveReason.d.ts.map +0 -1
  129. package/module/ReasonModule/CompetitiveReason.js +0 -133
  130. package/module/ReasonModule/CompetitiveReason.js.map +0 -1
  131. package/module/ReasonModule/PlanReason.d.ts +0 -25
  132. package/module/ReasonModule/PlanReason.d.ts.map +0 -1
  133. package/module/ReasonModule/PlanReason.js +0 -133
  134. package/module/ReasonModule/PlanReason.js.map +0 -1
  135. package/module/ReasonModule/ReasonModule.d.ts +0 -41
  136. package/module/ReasonModule/ReasonModule.d.ts.map +0 -1
  137. package/module/ReasonModule/ReasonModule.js +0 -83
  138. package/module/ReasonModule/ReasonModule.js.map +0 -1
  139. package/module/ReasonModule/ReflectReason.d.ts +0 -15
  140. package/module/ReasonModule/ReflectReason.d.ts.map +0 -1
  141. package/module/ReasonModule/ReflectReason.js +0 -86
  142. package/module/ReasonModule/ReflectReason.js.map +0 -1
  143. package/module/ReasonModule/TreeReason.d.ts +0 -16
  144. package/module/ReasonModule/TreeReason.d.ts.map +0 -1
  145. package/module/ReasonModule/TreeReason.js +0 -139
  146. package/module/ReasonModule/TreeReason.js.map +0 -1
  147. package/module/ReasonModule/index.d.ts +0 -8
  148. package/module/ReasonModule/index.d.ts.map +0 -1
  149. package/module/ReasonModule/index.js +0 -24
  150. package/module/ReasonModule/index.js.map +0 -1
  151. package/module/SkillModule/SkillModule.d.ts +0 -42
  152. package/module/SkillModule/SkillModule.d.ts.map +0 -1
  153. package/module/SkillModule/SkillModule.js +0 -134
  154. package/module/SkillModule/SkillModule.js.map +0 -1
  155. package/module/SkillModule/index.d.ts +0 -2
  156. package/module/SkillModule/index.d.ts.map +0 -1
  157. package/module/SkillModule/index.js.map +0 -1
  158. package/module/ToolModule/ToolModule.d.ts +0 -57
  159. package/module/ToolModule/ToolModule.d.ts.map +0 -1
  160. package/module/ToolModule/ToolModule.js +0 -220
  161. package/module/ToolModule/ToolModule.js.map +0 -1
  162. package/module/ToolModule/ToolRAG.d.ts +0 -38
  163. package/module/ToolModule/ToolRAG.d.ts.map +0 -1
  164. package/module/ToolModule/ToolRAG.js +0 -124
  165. package/module/ToolModule/ToolRAG.js.map +0 -1
  166. package/module/ToolModule/index.d.ts +0 -3
  167. package/module/ToolModule/index.d.ts.map +0 -1
  168. package/module/ToolModule/index.js +0 -19
  169. package/module/ToolModule/index.js.map +0 -1
  170. package/utility/OpenAIUtility.d.ts +0 -333
  171. package/utility/OpenAIUtility.d.ts.map +0 -1
  172. package/utility/OpenAIUtility.js +0 -95
  173. package/utility/OpenAIUtility.js.map +0 -1
@@ -1,15 +0,0 @@
1
- import { AbstractReason, ReasonConfig, ReasonResult } from "../../base";
2
- /**
3
- * 反思推理策略 (Reflexion)
4
- * 执行 → 自我批评 → 修正 → 再执行,最多 3 轮
5
- * 适合:代码生成、写作、翻译等质量敏感任务
6
- * 策略内部自行创建/管理一个 Agent 贯穿全流程
7
- */
8
- export declare class ReflectReason extends AbstractReason {
9
- readonly type: string;
10
- private readonly _maxRounds;
11
- execute(input: string, config: ReasonConfig): Promise<ReasonResult>;
12
- /** 简单相似度检测(基于前 200 字符) */
13
- private _isSimilar;
14
- }
15
- //# sourceMappingURL=ReflectReason.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReflectReason.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/ReflectReason.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAE7C,SAAgB,IAAI,EAAE,MAAM,CAAmB;IAE/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAE3B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAkFhF,0BAA0B;IAC1B,OAAO,CAAC,UAAU;CAIrB"}
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReflectReason = void 0;
4
- const base_1 = require("../../base");
5
- /**
6
- * 反思推理策略 (Reflexion)
7
- * 执行 → 自我批评 → 修正 → 再执行,最多 3 轮
8
- * 适合:代码生成、写作、翻译等质量敏感任务
9
- * 策略内部自行创建/管理一个 Agent 贯穿全流程
10
- */
11
- class ReflectReason extends base_1.AbstractReason {
12
- constructor() {
13
- super(...arguments);
14
- this.type = "ReflectReason";
15
- this._maxRounds = 3;
16
- }
17
- async execute(input, config) {
18
- const agent = config.useAgent ?? this.host.agentModule.createAgent(config.baseConfig);
19
- const runOptions = this.buildRunOptions(config);
20
- try {
21
- const trace = [];
22
- let bestResult = null;
23
- // Round 1: 初始执行
24
- trace.push("[Round 1] 初始执行");
25
- const r1 = await agent.run(input, runOptions);
26
- if (!r1.success) {
27
- return { ...r1, strategy: this.type, trace };
28
- }
29
- bestResult = { ...r1, strategy: this.type, trace: [...trace] };
30
- trace.push(`输出: ${r1.content.substring(0, 200)}`);
31
- // Round 2+: 自我批评 → 修正
32
- for (let round = 2; round <= this._maxRounds; round++) {
33
- // 自我批评
34
- trace.push(`[Round ${round}] 自我批评`);
35
- const critiqueResult = await agent.run(`请严格审视你上一个回答的质量。找出以下问题:\n` +
36
- `1. 事实性错误或逻辑漏洞\n` +
37
- `2. 遗漏的关键信息\n` +
38
- `3. 可以改进的表达或结构\n\n` +
39
- `只输出批评意见,不要输出修正后的版本。`, runOptions);
40
- if (!critiqueResult.success)
41
- break;
42
- const critique = critiqueResult.content.trim();
43
- trace.push(`批评意见: ${critique.substring(0, 300)}`);
44
- // 如果批评意见为空或表示"没有改进空间",提前结束
45
- if (!critique || critique.includes("没有") || critique.includes("无需")) {
46
- trace.push("无可改进,提前结束反思");
47
- break;
48
- }
49
- // 修正
50
- trace.push(`[Round ${round}] 修正输出`);
51
- const reviseResult = await agent.run(`基于以下批评意见,请输出修正后的完整版本:\n\n${critique}\n\n` +
52
- `要求:\n` +
53
- `1. 修正所有指出的问题\n` +
54
- `2. 保持原有正确的内容\n` +
55
- `3. 输出完整的最终版本,不要解释修改了什么`, runOptions);
56
- if (!reviseResult.success)
57
- break;
58
- trace.push(`修正输出: ${reviseResult.content.substring(0, 200)}`);
59
- bestResult = {
60
- ...reviseResult,
61
- strategy: this.type,
62
- trace: [...trace],
63
- reflectionRounds: round,
64
- };
65
- // 如果修正后的输出与之前相似度很高,提前结束
66
- const prevContent = bestResult.content;
67
- if (this._isSimilar(reviseResult.content, prevContent)) {
68
- trace.push("修正输出趋于稳定,提前结束");
69
- break;
70
- }
71
- }
72
- return bestResult;
73
- }
74
- finally {
75
- if (!config.useAgent) {
76
- this.host.agentModule.destroyAgent(agent.id);
77
- }
78
- }
79
- }
80
- /** 简单相似度检测(基于前 200 字符) */
81
- _isSimilar(a, b) {
82
- return a.substring(0, 200).trim() === b.substring(0, 200).trim();
83
- }
84
- }
85
- exports.ReflectReason = ReflectReason;
86
- //# sourceMappingURL=ReflectReason.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReflectReason.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/ReflectReason.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { AbstractReason, ReasonConfig, ReasonResult } from "../../base";
2
- /**
3
- * 思维树推理策略 (Tree of Thoughts)
4
- * 生成多个候选方案 → 评估择优 → 展开最佳方案
5
- * 适合:方案设计、多方案对比、需要多角度探索的开放问题
6
- * 策略内部自行创建/管理一个 Agent 贯穿全流程
7
- */
8
- export declare class TreeReason extends AbstractReason {
9
- readonly type: string;
10
- /** 候选分支数 */
11
- private readonly _branches;
12
- execute(input: string, config: ReasonConfig): Promise<ReasonResult>;
13
- /** 解析候选方案文本 */
14
- private _parseCandidates;
15
- }
16
- //# sourceMappingURL=TreeReason.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeReason.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/TreeReason.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAgB;IAE5C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IAE1B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IA4HhF,eAAe;IACf,OAAO,CAAC,gBAAgB;CAwB3B"}
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TreeReason = void 0;
4
- const base_1 = require("../../base");
5
- /**
6
- * 思维树推理策略 (Tree of Thoughts)
7
- * 生成多个候选方案 → 评估择优 → 展开最佳方案
8
- * 适合:方案设计、多方案对比、需要多角度探索的开放问题
9
- * 策略内部自行创建/管理一个 Agent 贯穿全流程
10
- */
11
- class TreeReason extends base_1.AbstractReason {
12
- constructor() {
13
- super(...arguments);
14
- this.type = "TreeReason";
15
- /** 候选分支数 */
16
- this._branches = 3;
17
- }
18
- async execute(input, config) {
19
- const agent = config.useAgent ?? this.host.agentModule.createAgent(config.baseConfig);
20
- const runOptions = this.buildRunOptions(config);
21
- try {
22
- const trace = [];
23
- // Phase 1: 生成多个候选方案
24
- trace.push("[ToT Phase 1] 生成候选方案");
25
- const genResult = await agent.run(`请针对以下问题,生成 ${this._branches} 个不同的解决方案。\n\n` +
26
- `问题: ${input}\n\n` +
27
- `请严格按以下格式输出:\n` +
28
- `\`\`\`\n` +
29
- `【方案 1】\n` +
30
- `思路: (简要说明核心思路)\n` +
31
- `方案: (详细方案)\n` +
32
- `优劣: (优点和缺点)\n\n` +
33
- `【方案 2】\n` +
34
- `...\n` +
35
- `\`\`\`\n\n` +
36
- `要求:\n` +
37
- `1. 每个方案应有不同的切入角度\n` +
38
- `2. 每个方案应具体、可操作\n` +
39
- `3. 客观分析各方案的优劣`, runOptions);
40
- if (!genResult.success) {
41
- return { ...genResult, strategy: this.type, trace };
42
- }
43
- const candidates = this._parseCandidates(genResult.content);
44
- if (candidates.length === 0) {
45
- trace.push("候选方案解析失败,降级为直接执行");
46
- const fallback = await agent.run(`请直接回答: ${input}`, runOptions);
47
- return { ...fallback, strategy: this.type, trace };
48
- }
49
- trace.push(`生成 ${candidates.length} 个候选方案`);
50
- for (let i = 0; i < candidates.length; i++) {
51
- trace.push(` 候选 ${i + 1}: ${candidates[i].summary}`);
52
- }
53
- // Phase 2: 评估并选择最佳方案
54
- trace.push("[ToT Phase 2] 评估候选方案");
55
- const evalPrompt = `以下是针对问题「${input}」的 ${candidates.length} 个候选方案:\n\n` +
56
- candidates.map((c, i) => `【候选 ${i + 1}】\n${c.full}\n`).join("---\n\n") +
57
- `\n请完成以下评估:\n` +
58
- `1. 对每个候选方案打分(1-10 分)并简要说明理由\n` +
59
- `2. 选出最佳方案并说明为什么\n` +
60
- `3. 对最佳方案提出改进建议\n\n` +
61
- `请按以下格式输出:\n` +
62
- `评分:\n` +
63
- `- 候选 1: X分 - (理由)\n` +
64
- `- 候选 2: X分 - (理由)\n` +
65
- `...\n` +
66
- `最佳方案: 候选 X\n` +
67
- `改进建议: (具体建议)`;
68
- const evalResult = await agent.run(evalPrompt, runOptions);
69
- if (!evalResult.success) {
70
- trace.push("评估失败,返回第一个候选方案");
71
- return {
72
- success: true,
73
- content: candidates[0].full,
74
- strategy: this.type,
75
- trace,
76
- };
77
- }
78
- trace.push(`评估结果: ${evalResult.content.substring(0, 300)}`);
79
- // 解析获胜方案编号
80
- const winnerMatch = evalResult.content.match(/最佳方案[::]\s*候选\s*(\d+)/i);
81
- const winnerIdx = winnerMatch
82
- ? Math.max(0, Math.min(parseInt(winnerMatch[1]) - 1, candidates.length - 1))
83
- : 0;
84
- // 提取改进建议
85
- const improveMatch = evalResult.content.match(/改进建议[::]\s*([\s\S]*?)(?:\n\n|$)/i);
86
- const improveSuggestion = improveMatch ? improveMatch[1].trim() : "";
87
- trace.push(`选择候选 ${winnerIdx + 1},改进建议: ${improveSuggestion.substring(0, 200)}`);
88
- // Phase 3: 基于改进建议,展开最佳方案
89
- trace.push("[ToT Phase 3] 展开最佳方案");
90
- const refinePrompt = improveSuggestion
91
- ? `请基于以下最佳方案和改进建议,输出最终的完整方案。\n\n` +
92
- `最佳方案:\n${candidates[winnerIdx].full}\n\n` +
93
- `改进建议:\n${improveSuggestion}\n\n` +
94
- `要求: 整合改进建议,输出完整、可执行的最终方案。`
95
- : `请将以下最佳方案展开为完整的最终输出:\n\n${candidates[winnerIdx].full}\n\n` +
96
- `要求: 详细阐述,形成可执行的完整方案。`;
97
- const finalResult = await agent.run(refinePrompt, runOptions);
98
- if (!finalResult.success) {
99
- return {
100
- success: true,
101
- content: candidates[winnerIdx].full,
102
- strategy: this.type,
103
- trace,
104
- };
105
- }
106
- return {
107
- ...finalResult,
108
- strategy: this.type,
109
- trace,
110
- };
111
- }
112
- finally {
113
- if (!config.useAgent) {
114
- this.host.agentModule.destroyAgent(agent.id);
115
- }
116
- }
117
- }
118
- /** 解析候选方案文本 */
119
- _parseCandidates(text) {
120
- const candidates = [];
121
- // 按【方案 N】分割
122
- const parts = text.split(/【方案\s*(\d+)】/);
123
- // parts: ["", "1", "方案内容...", "2", "方案内容...", ...]
124
- for (let i = 1; i < parts.length; i += 2) {
125
- const full = parts[i + 1]?.trim();
126
- if (!full || full.length < 10)
127
- continue;
128
- // 提取"思路:"作为摘要
129
- const thoughtMatch = full.match(/思路[::]\s*(.+)/);
130
- const summary = thoughtMatch
131
- ? thoughtMatch[1].substring(0, 80)
132
- : full.substring(0, 80);
133
- candidates.push({ summary, full });
134
- }
135
- return candidates;
136
- }
137
- }
138
- exports.TreeReason = TreeReason;
139
- //# sourceMappingURL=TreeReason.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeReason.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/TreeReason.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export * from "./ReasonModule";
2
- export * from "./ChainReason";
3
- export * from "./ReflectReason";
4
- export * from "./TreeReason";
5
- export * from "./PlanReason";
6
- export * from "./CompetitiveReason";
7
- export * from "./CommanderReason";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -1,24 +0,0 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./ReasonModule"), exports);
18
- __exportStar(require("./ChainReason"), exports);
19
- __exportStar(require("./ReflectReason"), exports);
20
- __exportStar(require("./TreeReason"), exports);
21
- __exportStar(require("./PlanReason"), exports);
22
- __exportStar(require("./CompetitiveReason"), exports);
23
- __exportStar(require("./CommanderReason"), exports);
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,gDAA8B;AAC9B,kDAAgC;AAChC,+CAA6B;AAC7B,+CAA6B;AAC7B,sDAAoC;AACpC,oDAAkC"}
@@ -1,42 +0,0 @@
1
- import { AbstractModule, ToolDefinition, Skill } from "../../base";
2
- /** 技能管理模块 — 能力包注册 + 对话级启用/禁用 */
3
- export declare class SkillModule extends AbstractModule {
4
- /** 技能注册表 */
5
- private readonly _skills;
6
- /** 对话启用的技能(对话ID → 技能名集合) */
7
- private readonly _dialogSkills;
8
- constructor();
9
- /** 已注册技能数量 */
10
- get count(): number;
11
- /** 注册技能 */
12
- register(skill: Skill): this;
13
- /** 批量注册 */
14
- registerAll(skills: Array<Skill>): this;
15
- /** 移除技能 */
16
- unregister(name: string): boolean;
17
- /** 获取技能定义 */
18
- get(name: string): Skill | undefined;
19
- /** 获取全部技能 */
20
- list(): Array<Skill>;
21
- /** 按分类获取 */
22
- listByCategory(category: string): Array<Skill>;
23
- /** 为对话启用技能 */
24
- enable(dialogId: string, skillName: string): boolean;
25
- /** 为对话禁用技能 */
26
- disable(dialogId: string, skillName: string): void;
27
- /** 获取对话启用的技能名列表 */
28
- getEnabled(dialogId: string): Array<string>;
29
- /**
30
- * 解析对话可用的工具集合
31
- * 遍历启用的技能,匹配工具名(支持 "ns/*" 通配),
32
- * 从 ToolModule 中查找对应 ToolDefinition
33
- */
34
- resolveTools(dialogId: string): Array<ToolDefinition>;
35
- /**
36
- * 聚合对话启用技能的系统提示
37
- */
38
- buildPrompt(dialogId: string): string;
39
- /** 清理对话的技能绑定 */
40
- clearDialog(dialogId: string): void;
41
- }
42
- //# sourceMappingURL=SkillModule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillModule.d.ts","sourceRoot":"","sources":["../../../src/module/SkillModule/SkillModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnE,gCAAgC;AAChC,qBAAa,WAAY,SAAQ,cAAc;IAE3C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;;IASzD,cAAc;IACd,IAAW,KAAK,IAAI,MAAM,CAA8B;IAIxD,WAAW;IACJ,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMnC,WAAW;IACJ,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;IAM9C,WAAW;IACJ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASxC,aAAa;IACN,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAK3C,aAAa;IACN,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC;IAK3B,YAAY;IACL,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;IAOrD,cAAc;IACP,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAa3D,cAAc;IACP,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKzD,mBAAmB;IACZ,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAMlD;;;;OAIG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC;IA8C5D;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAe5C,gBAAgB;IACT,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAI7C"}
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SkillModule = void 0;
4
- const base_1 = require("../../base");
5
- /** 技能管理模块 — 能力包注册 + 对话级启用/禁用 */
6
- class SkillModule extends base_1.AbstractModule {
7
- constructor() {
8
- super();
9
- this._skills = new Map();
10
- this._dialogSkills = new Map();
11
- }
12
- /** 已注册技能数量 */
13
- get count() { return this._skills.size; }
14
- // ======================== 技能注册 ========================
15
- /** 注册技能 */
16
- register(skill) {
17
- this._skills.set(skill.name, skill);
18
- return this;
19
- }
20
- /** 批量注册 */
21
- registerAll(skills) {
22
- for (const s of skills) {
23
- this.register(s);
24
- }
25
- return this;
26
- }
27
- /** 移除技能 */
28
- unregister(name) {
29
- for (const [, skills] of this._dialogSkills) {
30
- skills.delete(name);
31
- }
32
- return this._skills.delete(name);
33
- }
34
- /** 获取技能定义 */
35
- get(name) {
36
- return this._skills.get(name);
37
- }
38
- /** 获取全部技能 */
39
- list() {
40
- return Array.from(this._skills.values());
41
- }
42
- /** 按分类获取 */
43
- listByCategory(category) {
44
- return this.list().filter(s => s.category === category);
45
- }
46
- // ======================== 对话级启用/禁用 ========================
47
- /** 为对话启用技能 */
48
- enable(dialogId, skillName) {
49
- if (!this._skills.has(skillName)) {
50
- return false;
51
- }
52
- let skills = this._dialogSkills.get(dialogId);
53
- if (!skills) {
54
- skills = new Set();
55
- this._dialogSkills.set(dialogId, skills);
56
- }
57
- skills.add(skillName);
58
- return true;
59
- }
60
- /** 为对话禁用技能 */
61
- disable(dialogId, skillName) {
62
- this._dialogSkills.get(dialogId)?.delete(skillName);
63
- }
64
- /** 获取对话启用的技能名列表 */
65
- getEnabled(dialogId) {
66
- const skills = this._dialogSkills.get(dialogId);
67
- return skills ? Array.from(skills) : [];
68
- }
69
- /**
70
- * 解析对话可用的工具集合
71
- * 遍历启用的技能,匹配工具名(支持 "ns/*" 通配),
72
- * 从 ToolModule 中查找对应 ToolDefinition
73
- */
74
- resolveTools(dialogId) {
75
- const enabled = this.getEnabled(dialogId);
76
- if (enabled.length === 0) {
77
- return [];
78
- }
79
- const toolNames = new Set();
80
- const allTools = this.host.toolModule.list();
81
- const toolMap = new Map();
82
- for (const t of allTools) {
83
- toolMap.set(t.name, t);
84
- }
85
- for (const skillName of enabled) {
86
- const skill = this._skills.get(skillName);
87
- if (!skill) {
88
- continue;
89
- }
90
- for (const pattern of skill.tools) {
91
- if (pattern.endsWith("/*")) {
92
- // 通配: "pc/*" → 匹配 "pc/screenshot", "pc/clipboard", ...
93
- const prefix = pattern.slice(0, -1);
94
- for (const name of toolMap.keys()) {
95
- if (name.startsWith(prefix)) {
96
- toolNames.add(name);
97
- }
98
- }
99
- }
100
- else {
101
- // 精确匹配
102
- if (toolMap.has(pattern)) {
103
- toolNames.add(pattern);
104
- }
105
- }
106
- }
107
- }
108
- return Array.from(toolNames).map(n => toolMap.get(n)).filter(Boolean);
109
- }
110
- /**
111
- * 聚合对话启用技能的系统提示
112
- */
113
- buildPrompt(dialogId) {
114
- const enabled = this.getEnabled(dialogId);
115
- if (enabled.length === 0) {
116
- return "";
117
- }
118
- const parts = [];
119
- for (const skillName of enabled) {
120
- const skill = this._skills.get(skillName);
121
- if (!skill?.systemPrompt) {
122
- continue;
123
- }
124
- parts.push(`[${skillName}]: ${skill.systemPrompt}`);
125
- }
126
- return parts.join("\n");
127
- }
128
- /** 清理对话的技能绑定 */
129
- clearDialog(dialogId) {
130
- this._dialogSkills.delete(dialogId);
131
- }
132
- }
133
- exports.SkillModule = SkillModule;
134
- //# sourceMappingURL=SkillModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillModule.js","sourceRoot":"","sources":["../../../src/module/SkillModule/SkillModule.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from "./SkillModule";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/module/SkillModule/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/module/SkillModule/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -1,57 +0,0 @@
1
- import { AbstractModule, ToolDefinition, ToolContext } from "../../base";
2
- import { OpenAIUtility } from "../../utility";
3
- import { IEmbeddingProvider } from "./ToolRAG";
4
- /** 工具管理模块 — 注册表 + 缓存 + 重试 + 执行调度 */
5
- export declare class ToolModule extends AbstractModule {
6
- /** 工具注册表 */
7
- private readonly _tools;
8
- /** 结果缓存 */
9
- private readonly _cache;
10
- /** 工具语义检索器(可选) */
11
- private readonly _rag;
12
- constructor();
13
- /** 已注册工具数量 */
14
- get count(): number;
15
- /** 注册单个工具 */
16
- register(tool: ToolDefinition): this;
17
- /** 批量注册 */
18
- registerAll(tools: Array<ToolDefinition>): this;
19
- /** 移除工具 */
20
- unregister(name: string): boolean;
21
- /** 获取工具定义 */
22
- get(name: string): ToolDefinition | undefined;
23
- /** 获取全部工具 */
24
- list(): Array<ToolDefinition>;
25
- /** 按分类获取 */
26
- listByCategory(category: string): Array<ToolDefinition>;
27
- /** 设置语义检索的嵌入提供者(不设则使用内置关键词匹配) */
28
- setEmbeddingProvider(provider: IEmbeddingProvider): void;
29
- /**
30
- * 根据用户输入从候选工具中检索最相关的 Top-K 个
31
- * 先经过 RAG 语义排序,再取前 topK 个
32
- * @param query 用户输入
33
- * @param candidates 候选工具名列表(如 Skill 过滤后的结果)
34
- * @param topK 返回数量
35
- */
36
- selectTools(query: string, candidates?: Array<string>, topK?: number): Promise<Array<string>>;
37
- /**
38
- * 导出为 OpenAI API 工具列表(可按名称过滤)
39
- * @param names 工具名白名单
40
- * @param compact 精简模式:去掉 schema 中的 description/default,减少 token 开销
41
- */
42
- ToAPITools(names?: Array<string>, compact?: boolean): Array<OpenAIUtility.OpenAI.ToolCall>;
43
- /** 递归裁剪 JSONSchema:去掉 description/default,只保留 type/enum/required/properties/items */
44
- private stripSchema;
45
- private cacheKey;
46
- private checkCache;
47
- private setCache;
48
- /** 清除缓存(可按工具名精确清除) */
49
- invalidateCache(name?: string): void;
50
- /** 执行单个工具调用 */
51
- Execute(toolCall: OpenAIUtility.OpenAI.ToolResponse, ctx: ToolContext): Promise<string>;
52
- /** 批量执行(自动分组并行/串行) */
53
- ExecuteBatch(toolCalls: Array<OpenAIUtility.OpenAI.ToolResponse>, ctx: ToolContext): Promise<Map<string, string>>;
54
- /** 清空全部工具和缓存 */
55
- clear(): void;
56
- }
57
- //# sourceMappingURL=ToolModule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolModule.d.ts","sourceRoot":"","sources":["../../../src/module/ToolModule/ToolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAW,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,oCAAoC;AACpC,qBAAa,UAAW,SAAQ,cAAc;IAE1C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;;IAS/C,cAAc;IACd,IAAW,KAAK,IAAI,MAAM,CAA6B;IAIvD,aAAa;IACN,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAO3C,WAAW;IACJ,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI;IAMtD,WAAW;IACJ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOxC,aAAa;IACN,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAKpD,aAAa;IACN,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC;IAKpC,YAAY;IACL,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC;IAK9D,iCAAiC;IAC1B,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAK/D;;;;;;OAMG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAY9G;;;;OAIG;IACI,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,GAAE,OAAe,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;IAgBxG,qFAAqF;IACrF,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,QAAQ;IAMhB,sBAAsB;IACf,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAiB3C,eAAe;IACF,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CpG,sBAAsB;IACT,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAiC9H,gBAAgB;IACT,KAAK,IAAI,IAAI;CAMvB"}