workerclaw 0.2.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 (224) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -0
  3. package/dist/active-behavior/behavior-scheduler.d.ts +119 -0
  4. package/dist/active-behavior/behavior-scheduler.d.ts.map +1 -0
  5. package/dist/active-behavior/behavior-scheduler.js +297 -0
  6. package/dist/active-behavior/behavior-scheduler.js.map +1 -0
  7. package/dist/active-behavior/frequency-control.d.ts +72 -0
  8. package/dist/active-behavior/frequency-control.d.ts.map +1 -0
  9. package/dist/active-behavior/frequency-control.js +206 -0
  10. package/dist/active-behavior/frequency-control.js.map +1 -0
  11. package/dist/active-behavior/index.d.ts +8 -0
  12. package/dist/active-behavior/index.d.ts.map +1 -0
  13. package/dist/active-behavior/index.js +6 -0
  14. package/dist/active-behavior/index.js.map +1 -0
  15. package/dist/agent/agent-engine.d.ts +122 -0
  16. package/dist/agent/agent-engine.d.ts.map +1 -0
  17. package/dist/agent/agent-engine.js +380 -0
  18. package/dist/agent/agent-engine.js.map +1 -0
  19. package/dist/agent/context-window.d.ts +69 -0
  20. package/dist/agent/context-window.d.ts.map +1 -0
  21. package/dist/agent/context-window.js +210 -0
  22. package/dist/agent/context-window.js.map +1 -0
  23. package/dist/agent/llm-client.d.ts +37 -0
  24. package/dist/agent/llm-client.d.ts.map +1 -0
  25. package/dist/agent/llm-client.js +155 -0
  26. package/dist/agent/llm-client.js.map +1 -0
  27. package/dist/agent/personality.d.ts +71 -0
  28. package/dist/agent/personality.d.ts.map +1 -0
  29. package/dist/agent/personality.js +147 -0
  30. package/dist/agent/personality.js.map +1 -0
  31. package/dist/agent/session-manager.d.ts +111 -0
  32. package/dist/agent/session-manager.d.ts.map +1 -0
  33. package/dist/agent/session-manager.js +205 -0
  34. package/dist/agent/session-manager.js.map +1 -0
  35. package/dist/agent/tool-executor.d.ts +34 -0
  36. package/dist/agent/tool-executor.d.ts.map +1 -0
  37. package/dist/agent/tool-executor.js +145 -0
  38. package/dist/agent/tool-executor.js.map +1 -0
  39. package/dist/agent/tool-registry.d.ts +67 -0
  40. package/dist/agent/tool-registry.d.ts.map +1 -0
  41. package/dist/agent/tool-registry.js +272 -0
  42. package/dist/agent/tool-registry.js.map +1 -0
  43. package/dist/cli/configure.d.ts +16 -0
  44. package/dist/cli/configure.d.ts.map +1 -0
  45. package/dist/cli/configure.js +212 -0
  46. package/dist/cli/configure.js.map +1 -0
  47. package/dist/cli/index.d.ts +17 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +256 -0
  50. package/dist/cli/index.js.map +1 -0
  51. package/dist/cli/prompter.d.ts +59 -0
  52. package/dist/cli/prompter.d.ts.map +1 -0
  53. package/dist/cli/prompter.js +120 -0
  54. package/dist/cli/prompter.js.map +1 -0
  55. package/dist/cli/sections/index.d.ts +9 -0
  56. package/dist/cli/sections/index.d.ts.map +1 -0
  57. package/dist/cli/sections/index.js +9 -0
  58. package/dist/cli/sections/index.js.map +1 -0
  59. package/dist/cli/sections/llm.d.ts +14 -0
  60. package/dist/cli/sections/llm.d.ts.map +1 -0
  61. package/dist/cli/sections/llm.js +155 -0
  62. package/dist/cli/sections/llm.js.map +1 -0
  63. package/dist/cli/sections/personality.d.ts +14 -0
  64. package/dist/cli/sections/personality.d.ts.map +1 -0
  65. package/dist/cli/sections/personality.js +90 -0
  66. package/dist/cli/sections/personality.js.map +1 -0
  67. package/dist/cli/sections/platform.d.ts +14 -0
  68. package/dist/cli/sections/platform.d.ts.map +1 -0
  69. package/dist/cli/sections/platform.js +179 -0
  70. package/dist/cli/sections/platform.js.map +1 -0
  71. package/dist/cli/sections/security.d.ts +14 -0
  72. package/dist/cli/sections/security.d.ts.map +1 -0
  73. package/dist/cli/sections/security.js +106 -0
  74. package/dist/cli/sections/security.js.map +1 -0
  75. package/dist/cli/sections/skills.d.ts +10 -0
  76. package/dist/cli/sections/skills.d.ts.map +1 -0
  77. package/dist/cli/sections/skills.js +149 -0
  78. package/dist/cli/sections/skills.js.map +1 -0
  79. package/dist/cli.d.ts +8 -0
  80. package/dist/cli.d.ts.map +1 -0
  81. package/dist/cli.js +116 -0
  82. package/dist/cli.js.map +1 -0
  83. package/dist/core/config.d.ts +175 -0
  84. package/dist/core/config.d.ts.map +1 -0
  85. package/dist/core/config.js +109 -0
  86. package/dist/core/config.js.map +1 -0
  87. package/dist/core/events.d.ts +211 -0
  88. package/dist/core/events.d.ts.map +1 -0
  89. package/dist/core/events.js +152 -0
  90. package/dist/core/events.js.map +1 -0
  91. package/dist/core/logger.d.ts +23 -0
  92. package/dist/core/logger.d.ts.map +1 -0
  93. package/dist/core/logger.js +53 -0
  94. package/dist/core/logger.js.map +1 -0
  95. package/dist/core/workerclaw.d.ts +83 -0
  96. package/dist/core/workerclaw.d.ts.map +1 -0
  97. package/dist/core/workerclaw.js +161 -0
  98. package/dist/core/workerclaw.js.map +1 -0
  99. package/dist/index.d.ts +27 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +21 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/ingress/message-parser.d.ts +36 -0
  104. package/dist/ingress/message-parser.d.ts.map +1 -0
  105. package/dist/ingress/message-parser.js +107 -0
  106. package/dist/ingress/message-parser.js.map +1 -0
  107. package/dist/ingress/miniabc-client.d.ts +109 -0
  108. package/dist/ingress/miniabc-client.d.ts.map +1 -0
  109. package/dist/ingress/miniabc-client.js +345 -0
  110. package/dist/ingress/miniabc-client.js.map +1 -0
  111. package/dist/ingress/platform-api.d.ts +82 -0
  112. package/dist/ingress/platform-api.d.ts.map +1 -0
  113. package/dist/ingress/platform-api.js +209 -0
  114. package/dist/ingress/platform-api.js.map +1 -0
  115. package/dist/sandbox/command-sandbox.d.ts +46 -0
  116. package/dist/sandbox/command-sandbox.d.ts.map +1 -0
  117. package/dist/sandbox/command-sandbox.js +144 -0
  118. package/dist/sandbox/command-sandbox.js.map +1 -0
  119. package/dist/sandbox/fs-sandbox.d.ts +56 -0
  120. package/dist/sandbox/fs-sandbox.d.ts.map +1 -0
  121. package/dist/sandbox/fs-sandbox.js +119 -0
  122. package/dist/sandbox/fs-sandbox.js.map +1 -0
  123. package/dist/sandbox/network-sandbox.d.ts +41 -0
  124. package/dist/sandbox/network-sandbox.d.ts.map +1 -0
  125. package/dist/sandbox/network-sandbox.js +114 -0
  126. package/dist/sandbox/network-sandbox.js.map +1 -0
  127. package/dist/security/content-scanner.d.ts +59 -0
  128. package/dist/security/content-scanner.d.ts.map +1 -0
  129. package/dist/security/content-scanner.js +289 -0
  130. package/dist/security/content-scanner.js.map +1 -0
  131. package/dist/security/gate.d.ts +78 -0
  132. package/dist/security/gate.d.ts.map +1 -0
  133. package/dist/security/gate.js +150 -0
  134. package/dist/security/gate.js.map +1 -0
  135. package/dist/security/permission-level.d.ts +68 -0
  136. package/dist/security/permission-level.d.ts.map +1 -0
  137. package/dist/security/permission-level.js +191 -0
  138. package/dist/security/permission-level.js.map +1 -0
  139. package/dist/security/rate-limiter.d.ts +52 -0
  140. package/dist/security/rate-limiter.d.ts.map +1 -0
  141. package/dist/security/rate-limiter.js +133 -0
  142. package/dist/security/rate-limiter.js.map +1 -0
  143. package/dist/security/source-verifier.d.ts +33 -0
  144. package/dist/security/source-verifier.d.ts.map +1 -0
  145. package/dist/security/source-verifier.js +106 -0
  146. package/dist/security/source-verifier.js.map +1 -0
  147. package/dist/skills/builtin/code.d.ts +27 -0
  148. package/dist/skills/builtin/code.d.ts.map +1 -0
  149. package/dist/skills/builtin/code.js +132 -0
  150. package/dist/skills/builtin/code.js.map +1 -0
  151. package/dist/skills/builtin/index.d.ts +12 -0
  152. package/dist/skills/builtin/index.d.ts.map +1 -0
  153. package/dist/skills/builtin/index.js +16 -0
  154. package/dist/skills/builtin/index.js.map +1 -0
  155. package/dist/skills/builtin/search.d.ts +27 -0
  156. package/dist/skills/builtin/search.d.ts.map +1 -0
  157. package/dist/skills/builtin/search.js +105 -0
  158. package/dist/skills/builtin/search.js.map +1 -0
  159. package/dist/skills/builtin/writing.d.ts +22 -0
  160. package/dist/skills/builtin/writing.d.ts.map +1 -0
  161. package/dist/skills/builtin/writing.js +93 -0
  162. package/dist/skills/builtin/writing.js.map +1 -0
  163. package/dist/skills/index.d.ts +11 -0
  164. package/dist/skills/index.d.ts.map +1 -0
  165. package/dist/skills/index.js +10 -0
  166. package/dist/skills/index.js.map +1 -0
  167. package/dist/skills/pack-loader.d.ts +31 -0
  168. package/dist/skills/pack-loader.d.ts.map +1 -0
  169. package/dist/skills/pack-loader.js +167 -0
  170. package/dist/skills/pack-loader.js.map +1 -0
  171. package/dist/skills/pack-registry.d.ts +40 -0
  172. package/dist/skills/pack-registry.d.ts.map +1 -0
  173. package/dist/skills/pack-registry.js +80 -0
  174. package/dist/skills/pack-registry.js.map +1 -0
  175. package/dist/skills/pack-types.d.ts +64 -0
  176. package/dist/skills/pack-types.d.ts.map +1 -0
  177. package/dist/skills/pack-types.js +7 -0
  178. package/dist/skills/pack-types.js.map +1 -0
  179. package/dist/skills/skill-registry.d.ts +83 -0
  180. package/dist/skills/skill-registry.d.ts.map +1 -0
  181. package/dist/skills/skill-registry.js +206 -0
  182. package/dist/skills/skill-registry.js.map +1 -0
  183. package/dist/skills/skill-runner.d.ts +49 -0
  184. package/dist/skills/skill-runner.d.ts.map +1 -0
  185. package/dist/skills/skill-runner.js +128 -0
  186. package/dist/skills/skill-runner.js.map +1 -0
  187. package/dist/skills/types.d.ts +94 -0
  188. package/dist/skills/types.d.ts.map +1 -0
  189. package/dist/skills/types.js +7 -0
  190. package/dist/skills/types.js.map +1 -0
  191. package/dist/task/concurrency.d.ts +87 -0
  192. package/dist/task/concurrency.d.ts.map +1 -0
  193. package/dist/task/concurrency.js +269 -0
  194. package/dist/task/concurrency.js.map +1 -0
  195. package/dist/task/task-evaluator.d.ts +52 -0
  196. package/dist/task/task-evaluator.d.ts.map +1 -0
  197. package/dist/task/task-evaluator.js +141 -0
  198. package/dist/task/task-evaluator.js.map +1 -0
  199. package/dist/task/task-manager.d.ts +112 -0
  200. package/dist/task/task-manager.d.ts.map +1 -0
  201. package/dist/task/task-manager.js +382 -0
  202. package/dist/task/task-manager.js.map +1 -0
  203. package/dist/task/task-state-machine.d.ts +63 -0
  204. package/dist/task/task-state-machine.d.ts.map +1 -0
  205. package/dist/task/task-state-machine.js +149 -0
  206. package/dist/task/task-state-machine.js.map +1 -0
  207. package/dist/types/agent.d.ts +79 -0
  208. package/dist/types/agent.d.ts.map +1 -0
  209. package/dist/types/agent.js +7 -0
  210. package/dist/types/agent.js.map +1 -0
  211. package/dist/types/index.d.ts +7 -0
  212. package/dist/types/index.d.ts.map +1 -0
  213. package/dist/types/index.js +5 -0
  214. package/dist/types/index.js.map +1 -0
  215. package/dist/types/message.d.ts +87 -0
  216. package/dist/types/message.d.ts.map +1 -0
  217. package/dist/types/message.js +30 -0
  218. package/dist/types/message.js.map +1 -0
  219. package/dist/types/task.d.ts +176 -0
  220. package/dist/types/task.d.ts.map +1 -0
  221. package/dist/types/task.js +5 -0
  222. package/dist/types/task.js.map +1 -0
  223. package/package.json +57 -0
  224. package/workerclaw.config.example.json +78 -0
@@ -0,0 +1,206 @@
1
+ /**
2
+ * 频率控制器
3
+ *
4
+ * 控制智能行为的发布频率
5
+ * 防止过于频繁或过于沉默
6
+ */
7
+ import { createLogger } from '../core/logger.js';
8
+ export const DEFAULT_FREQUENCY_CONFIG = {
9
+ limits: {
10
+ tweet: {
11
+ minIntervalMs: 30 * 60 * 1000, // 最少 30 分钟
12
+ maxIntervalMs: 4 * 60 * 60 * 1000, // 最多 4 小时
13
+ maxPerHour: 3,
14
+ maxPerDay: 10,
15
+ },
16
+ browse: {
17
+ minIntervalMs: 10 * 60 * 1000, // 最少 10 分钟
18
+ maxIntervalMs: 2 * 60 * 60 * 1000, // 最多 2 小时
19
+ maxPerHour: 10,
20
+ maxPerDay: 50,
21
+ },
22
+ comment: {
23
+ minIntervalMs: 20 * 60 * 1000, // 最少 20 分钟
24
+ maxIntervalMs: 3 * 60 * 60 * 1000, // 最多 3 小时
25
+ maxPerHour: 5,
26
+ maxPerDay: 20,
27
+ },
28
+ like: {
29
+ minIntervalMs: 2 * 60 * 1000, // 最少 2 分钟
30
+ maxIntervalMs: 30 * 60 * 1000, // 最多 30 分钟
31
+ maxPerHour: 20,
32
+ maxPerDay: 100,
33
+ },
34
+ },
35
+ dailyLimit: 100,
36
+ };
37
+ // ==================== FrequencyController ====================
38
+ export class FrequencyController {
39
+ logger;
40
+ config;
41
+ records = [];
42
+ dailyCount = new Map();
43
+ currentDay = '';
44
+ constructor(config) {
45
+ this.config = {
46
+ ...DEFAULT_FREQUENCY_CONFIG,
47
+ limits: { ...DEFAULT_FREQUENCY_CONFIG.limits, ...config?.limits },
48
+ ...config,
49
+ };
50
+ this.logger = createLogger('FrequencyController');
51
+ this.currentDay = this.getToday();
52
+ }
53
+ /**
54
+ * 检查行为是否允许执行
55
+ */
56
+ canPerform(type) {
57
+ const now = Date.now();
58
+ // 检查每日限额
59
+ if (!this.isSameDay(now)) {
60
+ this.resetDaily();
61
+ }
62
+ // 1. 每日总限额
63
+ const totalToday = this.getTodayTotal();
64
+ if (totalToday >= this.config.dailyLimit) {
65
+ return { allowed: false, reason: '已达到每日行为上限' };
66
+ }
67
+ // 2. 行为类型每日限额
68
+ const typeConfig = this.config.limits[type];
69
+ if (!typeConfig) {
70
+ return { allowed: true };
71
+ }
72
+ const typeToday = this.dailyCount.get(type) || 0;
73
+ if (typeToday >= typeConfig.maxPerDay) {
74
+ return { allowed: false, reason: `${type} 已达到每日上限 (${typeConfig.maxPerDay})` };
75
+ }
76
+ // 3. 每小时限额
77
+ const hourAgo = now - 60 * 60 * 1000;
78
+ const hourCount = this.records.filter(r => r.type === type && r.timestamp >= hourAgo).length;
79
+ if (hourCount >= typeConfig.maxPerHour) {
80
+ return { allowed: false, reason: `${type} 已达到每小时上限 (${typeConfig.maxPerHour})` };
81
+ }
82
+ // 4. 最小间隔
83
+ const lastRecord = this.getLastRecord(type);
84
+ if (lastRecord && now - lastRecord.timestamp < typeConfig.minIntervalMs) {
85
+ const waitMs = typeConfig.minIntervalMs - (now - lastRecord.timestamp);
86
+ return {
87
+ allowed: false,
88
+ reason: `${type} 需要等待 ${Math.round(waitMs / 1000)} 秒`,
89
+ };
90
+ }
91
+ return { allowed: true };
92
+ }
93
+ /**
94
+ * 记录行为执行
95
+ */
96
+ record(type) {
97
+ const now = Date.now();
98
+ if (!this.isSameDay(now)) {
99
+ this.resetDaily();
100
+ }
101
+ this.records.push({ type, timestamp: now });
102
+ this.dailyCount.set(type, (this.dailyCount.get(type) || 0) + 1);
103
+ // 清理旧记录(保留最近 24 小时)
104
+ const cutoff = now - 24 * 60 * 60 * 1000;
105
+ this.records = this.records.filter(r => r.timestamp >= cutoff);
106
+ this.logger.debug(`记录行为: ${type}`, {
107
+ today: this.dailyCount.get(type),
108
+ total: this.getTodayTotal(),
109
+ });
110
+ }
111
+ /**
112
+ * 检查是否应该主动执行某种行为(超过最大间隔)
113
+ */
114
+ shouldAct(type) {
115
+ const typeConfig = this.config.limits[type];
116
+ if (!typeConfig)
117
+ return false;
118
+ const lastRecord = this.getLastRecord(type);
119
+ if (!lastRecord)
120
+ return true; // 从未执行过,应该执行
121
+ return Date.now() - lastRecord.timestamp >= typeConfig.maxIntervalMs;
122
+ }
123
+ /**
124
+ * 获取下次建议执行的行为类型
125
+ * 返回最需要执行的行为(距上次执行最久的)
126
+ */
127
+ getNextSuggested() {
128
+ const suggestions = [];
129
+ for (const type of ['tweet', 'browse', 'comment', 'like']) {
130
+ const check = this.canPerform(type);
131
+ if (!check.allowed)
132
+ continue;
133
+ const typeConfig = this.config.limits[type];
134
+ if (!typeConfig)
135
+ continue;
136
+ const lastRecord = this.getLastRecord(type);
137
+ const elapsed = lastRecord ? Date.now() - lastRecord.timestamp : Infinity;
138
+ // 紧迫度 = 已过时间 / 最大间隔(超过 1.0 表示应该执行)
139
+ const urgency = Math.min(elapsed / typeConfig.maxIntervalMs, 2.0);
140
+ if (urgency > 0.5) { // 超过一半间隔就开始考虑
141
+ suggestions.push({ type, urgency });
142
+ }
143
+ }
144
+ if (suggestions.length === 0)
145
+ return null;
146
+ // 返回紧迫度最高的
147
+ suggestions.sort((a, b) => b.urgency - a.urgency);
148
+ return suggestions[0];
149
+ }
150
+ /**
151
+ * 获取距离下次可执行的最短等待时间
152
+ */
153
+ getTimeUntilNext(type) {
154
+ const typeConfig = this.config.limits[type];
155
+ if (!typeConfig)
156
+ return 0;
157
+ const lastRecord = this.getLastRecord(type);
158
+ if (!lastRecord)
159
+ return 0;
160
+ const remaining = typeConfig.minIntervalMs - (Date.now() - lastRecord.timestamp);
161
+ return Math.max(0, remaining);
162
+ }
163
+ /**
164
+ * 获取统计信息
165
+ */
166
+ getStats() {
167
+ const today = {
168
+ tweet: 0, browse: 0, comment: 0, like: 0,
169
+ };
170
+ for (const [type, count] of this.dailyCount) {
171
+ today[type] = count;
172
+ }
173
+ return {
174
+ today,
175
+ totalToday: this.getTodayTotal(),
176
+ dailyLimit: this.config.dailyLimit,
177
+ };
178
+ }
179
+ // ==================== 私有方法 ====================
180
+ getLastRecord(type) {
181
+ for (let i = this.records.length - 1; i >= 0; i--) {
182
+ if (this.records[i].type === type)
183
+ return this.records[i];
184
+ }
185
+ return undefined;
186
+ }
187
+ getTodayTotal() {
188
+ let total = 0;
189
+ for (const count of this.dailyCount.values()) {
190
+ total += count;
191
+ }
192
+ return total;
193
+ }
194
+ getToday() {
195
+ return new Date().toISOString().slice(0, 10);
196
+ }
197
+ isSameDay(timestamp) {
198
+ return new Date(timestamp).toISOString().slice(0, 10) === this.currentDay;
199
+ }
200
+ resetDaily() {
201
+ this.currentDay = this.getToday();
202
+ this.dailyCount.clear();
203
+ this.logger.debug('频率控制器:重置每日计数');
204
+ }
205
+ }
206
+ //# sourceMappingURL=frequency-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frequency-control.js","sourceRoot":"","sources":["../../src/active-behavior/frequency-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 智能活跃行为模块导出
3
+ */
4
+ export { FrequencyController, DEFAULT_FREQUENCY_CONFIG } from './frequency-control.js';
5
+ export type { FrequencyConfig, BehaviorType } from './frequency-control.js';
6
+ export { BehaviorScheduler, DEFAULT_BEHAVIOR_CONFIG } from './behavior-scheduler.js';
7
+ export type { BehaviorSchedulerConfig, BehaviorCallbacks, BehaviorResult } from './behavior-scheduler.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/active-behavior/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvF,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACrF,YAAY,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 智能活跃行为模块导出
3
+ */
4
+ export { FrequencyController, DEFAULT_FREQUENCY_CONFIG } from './frequency-control.js';
5
+ export { BehaviorScheduler, DEFAULT_BEHAVIOR_CONFIG } from './behavior-scheduler.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/active-behavior/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Agent 引擎 (Phase 4 完整版)
3
+ *
4
+ * WorkerClaw 的核心执行引擎
5
+ * 集成人格系统、会话管理、上下文窗口、技能系统和工具调用循环
6
+ *
7
+ * 执行流程:
8
+ * 1. 构建系统提示(人格 + 技能提示 + 权限信息)
9
+ * 2. 获取/创建会话
10
+ * 3. 添加用户消息
11
+ * 4. 上下文窗口适配
12
+ * 5. 调用 LLM
13
+ * 6. 处理工具调用(循环直到完成)
14
+ * 7. 返回结果
15
+ */
16
+ import { EventBus } from '../core/events.js';
17
+ import { Personality } from './personality.js';
18
+ import { SessionManager } from './session-manager.js';
19
+ import { type SkillRunnerConfig } from '../skills/skill-runner.js';
20
+ import { SkillRegistry } from '../skills/skill-registry.js';
21
+ import type { LLMConfig, SecurityConfig } from '../core/config.js';
22
+ import type { Task, TaskResult, TaskExecutionContext } from '../types/task.js';
23
+ import type { PermissionLevel } from '../types/agent.js';
24
+ import type { PersonalityConfig } from './personality.js';
25
+ export interface AgentEngineConfig {
26
+ llm: LLMConfig;
27
+ personality: PersonalityConfig;
28
+ security: SecurityConfig;
29
+ /** 会话管理配置 */
30
+ session?: {
31
+ maxActiveSessions?: number;
32
+ sessionTTL?: number;
33
+ maxTokens?: number;
34
+ };
35
+ /** 技能执行配置 */
36
+ skillRunner?: Partial<SkillRunnerConfig>;
37
+ }
38
+ export declare class AgentEngine {
39
+ private logger;
40
+ private config;
41
+ private eventBus;
42
+ private llm;
43
+ private personality;
44
+ private sessionManager;
45
+ private toolExecutor;
46
+ private skillRunner;
47
+ private skillRegistry;
48
+ constructor(config: AgentEngineConfig, eventBus: EventBus);
49
+ /**
50
+ * 执行任务(Phase 4 完整版)
51
+ */
52
+ executeTask(task: Task, context: TaskExecutionContext): Promise<TaskResult>;
53
+ /**
54
+ * LLM 调用循环(支持工具调用)
55
+ */
56
+ private llmLoop;
57
+ /**
58
+ * 处理单个工具调用
59
+ */
60
+ private handleToolCall;
61
+ /**
62
+ * 获取任务可用的工具
63
+ */
64
+ private getToolsForTask;
65
+ /**
66
+ * 构建系统提示(人格 + 技能 + 权限)
67
+ */
68
+ private buildSystemPrompt;
69
+ /**
70
+ * 构建用户消息
71
+ */
72
+ private buildUserMessage;
73
+ /**
74
+ * 构建任务输出
75
+ */
76
+ private buildOutputs;
77
+ /**
78
+ * 获取人格实例
79
+ */
80
+ getPersonality(): Personality;
81
+ /**
82
+ * 获取会话管理器
83
+ */
84
+ getSessionManager(): SessionManager;
85
+ /**
86
+ * 获取技能注册表
87
+ */
88
+ getSkillRegistry(): SkillRegistry;
89
+ /**
90
+ * 注册技能
91
+ */
92
+ registerSkill(skill: import('../skills/types.js').Skill): void;
93
+ /**
94
+ * 初始化所有技能
95
+ */
96
+ initializeSkills(): Promise<{
97
+ success: number;
98
+ failed: number;
99
+ }>;
100
+ /**
101
+ * 获取会话统计
102
+ */
103
+ getSessionStats(): {
104
+ totalSessions: number;
105
+ activeSessions: number;
106
+ completedSessions: number;
107
+ totalTokensUsed: number;
108
+ };
109
+ /**
110
+ * 获取技能统计
111
+ */
112
+ getSkillStats(): {
113
+ total: number;
114
+ byState: Record<import("../skills/types.js").SkillState, number>;
115
+ byLevel: Record<PermissionLevel, number>;
116
+ };
117
+ /**
118
+ * 清理资源
119
+ */
120
+ dispose(): void;
121
+ }
122
+ //# sourceMappingURL=agent-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-engine.d.ts","sourceRoot":"","sources":["../../src/agent/agent-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,QAAQ,EAAmB,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,IAAI,EAAE,UAAU,EAAE,oBAAoB,EACvC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACyB,eAAe,EACnD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa;IACb,OAAO,CAAC,EAAE;QACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa;IACb,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC1C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ;IAmCzD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAkFjF;;OAEG;YACW,OAAO;IAyGrB;;OAEG;YACW,cAAc;IAgE5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,oBAAoB,EAAE,KAAK,GAAG,IAAI;IAI9D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAItE;;OAEG;IACH,eAAe;;;;;;IAIf;;OAEG;IACH,aAAa;;;;;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}