knight-agent 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/Host.d.ts +23 -0
  2. package/Host.d.ts.map +1 -0
  3. package/Host.js +23 -0
  4. package/Host.js.map +1 -0
  5. package/base/AbstractAgent.d.ts +100 -0
  6. package/base/AbstractAgent.d.ts.map +1 -0
  7. package/base/AbstractAgent.js +23 -0
  8. package/base/AbstractAgent.js.map +1 -0
  9. package/base/AbstractDialog.d.ts +54 -0
  10. package/base/AbstractDialog.d.ts.map +1 -0
  11. package/base/AbstractDialog.js +86 -0
  12. package/base/AbstractDialog.js.map +1 -0
  13. package/base/AbstractModule.d.ts +7 -0
  14. package/base/AbstractModule.d.ts.map +1 -0
  15. package/base/AbstractModule.js +13 -0
  16. package/base/AbstractModule.js.map +1 -0
  17. package/base/AbstractObject.d.ts +18 -0
  18. package/base/AbstractObject.d.ts.map +1 -0
  19. package/base/AbstractObject.js +25 -0
  20. package/base/AbstractObject.js.map +1 -0
  21. package/base/AbstractReason.d.ts +44 -0
  22. package/base/AbstractReason.d.ts.map +1 -0
  23. package/base/AbstractReason.js +23 -0
  24. package/base/AbstractReason.js.map +1 -0
  25. package/base/AbstractSkill.d.ts +25 -0
  26. package/base/AbstractSkill.d.ts.map +1 -0
  27. package/base/AbstractSkill.js +3 -0
  28. package/base/AbstractSkill.js.map +1 -0
  29. package/base/AbstractTool.d.ts +34 -0
  30. package/base/AbstractTool.d.ts.map +1 -0
  31. package/base/AbstractTool.js +3 -0
  32. package/base/AbstractTool.js.map +1 -0
  33. package/base/index.d.ts +8 -0
  34. package/base/index.d.ts.map +1 -0
  35. package/base/index.js +24 -0
  36. package/base/index.js.map +1 -0
  37. package/docs/ARCHITECTURE.md +601 -0
  38. package/docs/README.md +562 -0
  39. package/index.d.ts +4 -0
  40. package/index.d.ts.map +1 -0
  41. package/index.js +25 -0
  42. package/index.js.map +1 -0
  43. package/module/AgentModule/Agent.d.ts +55 -0
  44. package/module/AgentModule/Agent.d.ts.map +1 -0
  45. package/module/AgentModule/Agent.js +210 -0
  46. package/module/AgentModule/Agent.js.map +1 -0
  47. package/module/AgentModule/AgentModule.d.ts +26 -0
  48. package/module/AgentModule/AgentModule.d.ts.map +1 -0
  49. package/module/AgentModule/AgentModule.js +66 -0
  50. package/module/AgentModule/AgentModule.js.map +1 -0
  51. package/module/AgentModule/Memory.d.ts +55 -0
  52. package/module/AgentModule/Memory.d.ts.map +1 -0
  53. package/module/AgentModule/Memory.js +288 -0
  54. package/module/AgentModule/Memory.js.map +1 -0
  55. package/module/AgentModule/index.d.ts +2 -0
  56. package/module/AgentModule/index.d.ts.map +1 -0
  57. package/module/AgentModule/index.js +18 -0
  58. package/module/AgentModule/index.js.map +1 -0
  59. package/module/DialogModule/Dialog.d.ts +14 -0
  60. package/module/DialogModule/Dialog.d.ts.map +1 -0
  61. package/module/DialogModule/Dialog.js +27 -0
  62. package/module/DialogModule/Dialog.js.map +1 -0
  63. package/module/DialogModule/DialogModule.d.ts +39 -0
  64. package/module/DialogModule/DialogModule.d.ts.map +1 -0
  65. package/module/DialogModule/DialogModule.js +118 -0
  66. package/module/DialogModule/DialogModule.js.map +1 -0
  67. package/module/DialogModule/index.d.ts +3 -0
  68. package/module/DialogModule/index.d.ts.map +1 -0
  69. package/module/DialogModule/index.js +19 -0
  70. package/module/DialogModule/index.js.map +1 -0
  71. package/module/ReasonModule/ChainReason.d.ts +11 -0
  72. package/module/ReasonModule/ChainReason.d.ts.map +1 -0
  73. package/module/ReasonModule/ChainReason.js +34 -0
  74. package/module/ReasonModule/ChainReason.js.map +1 -0
  75. package/module/ReasonModule/CommanderReason.d.ts +15 -0
  76. package/module/ReasonModule/CommanderReason.d.ts.map +1 -0
  77. package/module/ReasonModule/CommanderReason.js +151 -0
  78. package/module/ReasonModule/CommanderReason.js.map +1 -0
  79. package/module/ReasonModule/CompetitiveReason.d.ts +13 -0
  80. package/module/ReasonModule/CompetitiveReason.d.ts.map +1 -0
  81. package/module/ReasonModule/CompetitiveReason.js +133 -0
  82. package/module/ReasonModule/CompetitiveReason.js.map +1 -0
  83. package/module/ReasonModule/PlanReason.d.ts +25 -0
  84. package/module/ReasonModule/PlanReason.d.ts.map +1 -0
  85. package/module/ReasonModule/PlanReason.js +133 -0
  86. package/module/ReasonModule/PlanReason.js.map +1 -0
  87. package/module/ReasonModule/ReasonModule.d.ts +41 -0
  88. package/module/ReasonModule/ReasonModule.d.ts.map +1 -0
  89. package/module/ReasonModule/ReasonModule.js +83 -0
  90. package/module/ReasonModule/ReasonModule.js.map +1 -0
  91. package/module/ReasonModule/ReflectReason.d.ts +15 -0
  92. package/module/ReasonModule/ReflectReason.d.ts.map +1 -0
  93. package/module/ReasonModule/ReflectReason.js +86 -0
  94. package/module/ReasonModule/ReflectReason.js.map +1 -0
  95. package/module/ReasonModule/TreeReason.d.ts +16 -0
  96. package/module/ReasonModule/TreeReason.d.ts.map +1 -0
  97. package/module/ReasonModule/TreeReason.js +139 -0
  98. package/module/ReasonModule/TreeReason.js.map +1 -0
  99. package/module/ReasonModule/index.d.ts +8 -0
  100. package/module/ReasonModule/index.d.ts.map +1 -0
  101. package/module/ReasonModule/index.js +24 -0
  102. package/module/ReasonModule/index.js.map +1 -0
  103. package/module/SkillModule/SkillModule.d.ts +42 -0
  104. package/module/SkillModule/SkillModule.d.ts.map +1 -0
  105. package/module/SkillModule/SkillModule.js +134 -0
  106. package/module/SkillModule/SkillModule.js.map +1 -0
  107. package/module/SkillModule/index.d.ts +2 -0
  108. package/module/SkillModule/index.d.ts.map +1 -0
  109. package/module/SkillModule/index.js +18 -0
  110. package/module/SkillModule/index.js.map +1 -0
  111. package/module/ToolModule/ToolModule.d.ts +57 -0
  112. package/module/ToolModule/ToolModule.d.ts.map +1 -0
  113. package/module/ToolModule/ToolModule.js +220 -0
  114. package/module/ToolModule/ToolModule.js.map +1 -0
  115. package/module/ToolModule/ToolRAG.d.ts +38 -0
  116. package/module/ToolModule/ToolRAG.d.ts.map +1 -0
  117. package/module/ToolModule/ToolRAG.js +124 -0
  118. package/module/ToolModule/ToolRAG.js.map +1 -0
  119. package/module/ToolModule/index.d.ts +3 -0
  120. package/module/ToolModule/index.d.ts.map +1 -0
  121. package/module/ToolModule/index.js +19 -0
  122. package/module/ToolModule/index.js.map +1 -0
  123. package/module/index.d.ts +6 -0
  124. package/module/index.d.ts.map +1 -0
  125. package/module/index.js +22 -0
  126. package/module/index.js.map +1 -0
  127. package/package.json +19 -0
  128. package/utility/InterfaceUtility.d.ts +14 -0
  129. package/utility/InterfaceUtility.d.ts.map +1 -0
  130. package/utility/InterfaceUtility.js +3 -0
  131. package/utility/InterfaceUtility.js.map +1 -0
  132. package/utility/LogUtility.d.ts +41 -0
  133. package/utility/LogUtility.d.ts.map +1 -0
  134. package/utility/LogUtility.js +70 -0
  135. package/utility/LogUtility.js.map +1 -0
  136. package/utility/NetworkUtility.d.ts +91 -0
  137. package/utility/NetworkUtility.d.ts.map +1 -0
  138. package/utility/NetworkUtility.js +104 -0
  139. package/utility/NetworkUtility.js.map +1 -0
  140. package/utility/ObjectUtility.d.ts +134 -0
  141. package/utility/ObjectUtility.d.ts.map +1 -0
  142. package/utility/ObjectUtility.js +313 -0
  143. package/utility/ObjectUtility.js.map +1 -0
  144. package/utility/OpenAIUtility.d.ts +333 -0
  145. package/utility/OpenAIUtility.d.ts.map +1 -0
  146. package/utility/OpenAIUtility.js +95 -0
  147. package/utility/OpenAIUtility.js.map +1 -0
  148. package/utility/PromiseUtility.d.ts +9 -0
  149. package/utility/PromiseUtility.d.ts.map +1 -0
  150. package/utility/PromiseUtility.js +16 -0
  151. package/utility/PromiseUtility.js.map +1 -0
  152. package/utility/StringUtility.d.ts +10 -0
  153. package/utility/StringUtility.d.ts.map +1 -0
  154. package/utility/StringUtility.js +42 -0
  155. package/utility/StringUtility.js.map +1 -0
  156. package/utility/TimeUtility.d.ts +10 -0
  157. package/utility/TimeUtility.d.ts.map +1 -0
  158. package/utility/TimeUtility.js +24 -0
  159. package/utility/TimeUtility.js.map +1 -0
  160. package/utility/index.d.ts +9 -0
  161. package/utility/index.d.ts.map +1 -0
  162. package/utility/index.js +25 -0
  163. package/utility/index.js.map +1 -0
@@ -0,0 +1,139 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeReason.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/TreeReason.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,24 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,42 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,134 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillModule.js","sourceRoot":"","sources":["../../../src/module/SkillModule/SkillModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./SkillModule";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/module/SkillModule/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,18 @@
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("./SkillModule"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/module/SkillModule/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -0,0 +1,57 @@
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
@@ -0,0 +1 @@
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"}