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.
- package/LICENSE +21 -0
- package/README.md +129 -0
- package/dist/active-behavior/behavior-scheduler.d.ts +119 -0
- package/dist/active-behavior/behavior-scheduler.d.ts.map +1 -0
- package/dist/active-behavior/behavior-scheduler.js +297 -0
- package/dist/active-behavior/behavior-scheduler.js.map +1 -0
- package/dist/active-behavior/frequency-control.d.ts +72 -0
- package/dist/active-behavior/frequency-control.d.ts.map +1 -0
- package/dist/active-behavior/frequency-control.js +206 -0
- package/dist/active-behavior/frequency-control.js.map +1 -0
- package/dist/active-behavior/index.d.ts +8 -0
- package/dist/active-behavior/index.d.ts.map +1 -0
- package/dist/active-behavior/index.js +6 -0
- package/dist/active-behavior/index.js.map +1 -0
- package/dist/agent/agent-engine.d.ts +122 -0
- package/dist/agent/agent-engine.d.ts.map +1 -0
- package/dist/agent/agent-engine.js +380 -0
- package/dist/agent/agent-engine.js.map +1 -0
- package/dist/agent/context-window.d.ts +69 -0
- package/dist/agent/context-window.d.ts.map +1 -0
- package/dist/agent/context-window.js +210 -0
- package/dist/agent/context-window.js.map +1 -0
- package/dist/agent/llm-client.d.ts +37 -0
- package/dist/agent/llm-client.d.ts.map +1 -0
- package/dist/agent/llm-client.js +155 -0
- package/dist/agent/llm-client.js.map +1 -0
- package/dist/agent/personality.d.ts +71 -0
- package/dist/agent/personality.d.ts.map +1 -0
- package/dist/agent/personality.js +147 -0
- package/dist/agent/personality.js.map +1 -0
- package/dist/agent/session-manager.d.ts +111 -0
- package/dist/agent/session-manager.d.ts.map +1 -0
- package/dist/agent/session-manager.js +205 -0
- package/dist/agent/session-manager.js.map +1 -0
- package/dist/agent/tool-executor.d.ts +34 -0
- package/dist/agent/tool-executor.d.ts.map +1 -0
- package/dist/agent/tool-executor.js +145 -0
- package/dist/agent/tool-executor.js.map +1 -0
- package/dist/agent/tool-registry.d.ts +67 -0
- package/dist/agent/tool-registry.d.ts.map +1 -0
- package/dist/agent/tool-registry.js +272 -0
- package/dist/agent/tool-registry.js.map +1 -0
- package/dist/cli/configure.d.ts +16 -0
- package/dist/cli/configure.d.ts.map +1 -0
- package/dist/cli/configure.js +212 -0
- package/dist/cli/configure.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +256 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/prompter.d.ts +59 -0
- package/dist/cli/prompter.d.ts.map +1 -0
- package/dist/cli/prompter.js +120 -0
- package/dist/cli/prompter.js.map +1 -0
- package/dist/cli/sections/index.d.ts +9 -0
- package/dist/cli/sections/index.d.ts.map +1 -0
- package/dist/cli/sections/index.js +9 -0
- package/dist/cli/sections/index.js.map +1 -0
- package/dist/cli/sections/llm.d.ts +14 -0
- package/dist/cli/sections/llm.d.ts.map +1 -0
- package/dist/cli/sections/llm.js +155 -0
- package/dist/cli/sections/llm.js.map +1 -0
- package/dist/cli/sections/personality.d.ts +14 -0
- package/dist/cli/sections/personality.d.ts.map +1 -0
- package/dist/cli/sections/personality.js +90 -0
- package/dist/cli/sections/personality.js.map +1 -0
- package/dist/cli/sections/platform.d.ts +14 -0
- package/dist/cli/sections/platform.d.ts.map +1 -0
- package/dist/cli/sections/platform.js +179 -0
- package/dist/cli/sections/platform.js.map +1 -0
- package/dist/cli/sections/security.d.ts +14 -0
- package/dist/cli/sections/security.d.ts.map +1 -0
- package/dist/cli/sections/security.js +106 -0
- package/dist/cli/sections/security.js.map +1 -0
- package/dist/cli/sections/skills.d.ts +10 -0
- package/dist/cli/sections/skills.d.ts.map +1 -0
- package/dist/cli/sections/skills.js +149 -0
- package/dist/cli/sections/skills.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +116 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/config.d.ts +175 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +109 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/events.d.ts +211 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +152 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/logger.d.ts +23 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +53 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/workerclaw.d.ts +83 -0
- package/dist/core/workerclaw.d.ts.map +1 -0
- package/dist/core/workerclaw.js +161 -0
- package/dist/core/workerclaw.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/ingress/message-parser.d.ts +36 -0
- package/dist/ingress/message-parser.d.ts.map +1 -0
- package/dist/ingress/message-parser.js +107 -0
- package/dist/ingress/message-parser.js.map +1 -0
- package/dist/ingress/miniabc-client.d.ts +109 -0
- package/dist/ingress/miniabc-client.d.ts.map +1 -0
- package/dist/ingress/miniabc-client.js +345 -0
- package/dist/ingress/miniabc-client.js.map +1 -0
- package/dist/ingress/platform-api.d.ts +82 -0
- package/dist/ingress/platform-api.d.ts.map +1 -0
- package/dist/ingress/platform-api.js +209 -0
- package/dist/ingress/platform-api.js.map +1 -0
- package/dist/sandbox/command-sandbox.d.ts +46 -0
- package/dist/sandbox/command-sandbox.d.ts.map +1 -0
- package/dist/sandbox/command-sandbox.js +144 -0
- package/dist/sandbox/command-sandbox.js.map +1 -0
- package/dist/sandbox/fs-sandbox.d.ts +56 -0
- package/dist/sandbox/fs-sandbox.d.ts.map +1 -0
- package/dist/sandbox/fs-sandbox.js +119 -0
- package/dist/sandbox/fs-sandbox.js.map +1 -0
- package/dist/sandbox/network-sandbox.d.ts +41 -0
- package/dist/sandbox/network-sandbox.d.ts.map +1 -0
- package/dist/sandbox/network-sandbox.js +114 -0
- package/dist/sandbox/network-sandbox.js.map +1 -0
- package/dist/security/content-scanner.d.ts +59 -0
- package/dist/security/content-scanner.d.ts.map +1 -0
- package/dist/security/content-scanner.js +289 -0
- package/dist/security/content-scanner.js.map +1 -0
- package/dist/security/gate.d.ts +78 -0
- package/dist/security/gate.d.ts.map +1 -0
- package/dist/security/gate.js +150 -0
- package/dist/security/gate.js.map +1 -0
- package/dist/security/permission-level.d.ts +68 -0
- package/dist/security/permission-level.d.ts.map +1 -0
- package/dist/security/permission-level.js +191 -0
- package/dist/security/permission-level.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +52 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +133 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/security/source-verifier.d.ts +33 -0
- package/dist/security/source-verifier.d.ts.map +1 -0
- package/dist/security/source-verifier.js +106 -0
- package/dist/security/source-verifier.js.map +1 -0
- package/dist/skills/builtin/code.d.ts +27 -0
- package/dist/skills/builtin/code.d.ts.map +1 -0
- package/dist/skills/builtin/code.js +132 -0
- package/dist/skills/builtin/code.js.map +1 -0
- package/dist/skills/builtin/index.d.ts +12 -0
- package/dist/skills/builtin/index.d.ts.map +1 -0
- package/dist/skills/builtin/index.js +16 -0
- package/dist/skills/builtin/index.js.map +1 -0
- package/dist/skills/builtin/search.d.ts +27 -0
- package/dist/skills/builtin/search.d.ts.map +1 -0
- package/dist/skills/builtin/search.js +105 -0
- package/dist/skills/builtin/search.js.map +1 -0
- package/dist/skills/builtin/writing.d.ts +22 -0
- package/dist/skills/builtin/writing.d.ts.map +1 -0
- package/dist/skills/builtin/writing.js +93 -0
- package/dist/skills/builtin/writing.js.map +1 -0
- package/dist/skills/index.d.ts +11 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +10 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/pack-loader.d.ts +31 -0
- package/dist/skills/pack-loader.d.ts.map +1 -0
- package/dist/skills/pack-loader.js +167 -0
- package/dist/skills/pack-loader.js.map +1 -0
- package/dist/skills/pack-registry.d.ts +40 -0
- package/dist/skills/pack-registry.d.ts.map +1 -0
- package/dist/skills/pack-registry.js +80 -0
- package/dist/skills/pack-registry.js.map +1 -0
- package/dist/skills/pack-types.d.ts +64 -0
- package/dist/skills/pack-types.d.ts.map +1 -0
- package/dist/skills/pack-types.js +7 -0
- package/dist/skills/pack-types.js.map +1 -0
- package/dist/skills/skill-registry.d.ts +83 -0
- package/dist/skills/skill-registry.d.ts.map +1 -0
- package/dist/skills/skill-registry.js +206 -0
- package/dist/skills/skill-registry.js.map +1 -0
- package/dist/skills/skill-runner.d.ts +49 -0
- package/dist/skills/skill-runner.d.ts.map +1 -0
- package/dist/skills/skill-runner.js +128 -0
- package/dist/skills/skill-runner.js.map +1 -0
- package/dist/skills/types.d.ts +94 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +7 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/task/concurrency.d.ts +87 -0
- package/dist/task/concurrency.d.ts.map +1 -0
- package/dist/task/concurrency.js +269 -0
- package/dist/task/concurrency.js.map +1 -0
- package/dist/task/task-evaluator.d.ts +52 -0
- package/dist/task/task-evaluator.d.ts.map +1 -0
- package/dist/task/task-evaluator.js +141 -0
- package/dist/task/task-evaluator.js.map +1 -0
- package/dist/task/task-manager.d.ts +112 -0
- package/dist/task/task-manager.d.ts.map +1 -0
- package/dist/task/task-manager.js +382 -0
- package/dist/task/task-manager.js.map +1 -0
- package/dist/task/task-state-machine.d.ts +63 -0
- package/dist/task/task-state-machine.d.ts.map +1 -0
- package/dist/task/task-state-machine.js +149 -0
- package/dist/task/task-state-machine.js.map +1 -0
- package/dist/types/agent.d.ts +79 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +7 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/message.d.ts +87 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +30 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/task.d.ts +176 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +5 -0
- package/dist/types/task.js.map +1 -0
- package/package.json +57 -0
- package/workerclaw.config.example.json +78 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* WorkerClaw CLI 入口
|
|
4
|
+
*
|
|
5
|
+
* 用法: workerclaw [config-file]
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
8
|
+
import { resolve } from 'node:path';
|
|
9
|
+
import { createWorkerClaw } from './index.js';
|
|
10
|
+
// ==================== 环境变量替换 ====================
|
|
11
|
+
function resolveEnvVars(obj) {
|
|
12
|
+
if (typeof obj === 'string') {
|
|
13
|
+
// 替换 ${ENV_VAR} 格式的环境变量
|
|
14
|
+
return obj.replace(/\$\{([^}]+)\}/g, (_, varName) => {
|
|
15
|
+
const value = process.env[varName];
|
|
16
|
+
if (value === undefined) {
|
|
17
|
+
console.error(`⚠️ 环境变量 ${varName} 未设置`);
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(obj)) {
|
|
24
|
+
return obj.map(resolveEnvVars);
|
|
25
|
+
}
|
|
26
|
+
if (obj && typeof obj === 'object') {
|
|
27
|
+
const result = {};
|
|
28
|
+
for (const key of Object.keys(obj)) {
|
|
29
|
+
result[key] = resolveEnvVars(obj[key]);
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
// ==================== 主函数 ====================
|
|
36
|
+
async function main() {
|
|
37
|
+
// 读取配置文件
|
|
38
|
+
let configPath = process.argv[2];
|
|
39
|
+
if (!configPath) {
|
|
40
|
+
// 默认配置路径
|
|
41
|
+
const defaultPaths = [
|
|
42
|
+
'./workerclaw.config.json',
|
|
43
|
+
'./config/workerclaw.config.json',
|
|
44
|
+
'./config.json',
|
|
45
|
+
];
|
|
46
|
+
for (const p of defaultPaths) {
|
|
47
|
+
if (existsSync(p)) {
|
|
48
|
+
configPath = p;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!configPath) {
|
|
54
|
+
console.error('❌ 未找到配置文件。请指定配置文件路径:');
|
|
55
|
+
console.error(' workerclaw ./workerclaw.config.json');
|
|
56
|
+
console.error('');
|
|
57
|
+
console.error('或创建 workerclaw.config.json 配置文件。');
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
const absPath = resolve(configPath);
|
|
61
|
+
if (!existsSync(absPath)) {
|
|
62
|
+
console.error(`❌ 配置文件不存在: ${absPath}`);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
console.log(`📄 加载配置: ${absPath}`);
|
|
66
|
+
let rawConfig;
|
|
67
|
+
try {
|
|
68
|
+
rawConfig = JSON.parse(readFileSync(absPath, 'utf-8'));
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
console.error(`❌ 配置文件解析失败: ${err}`);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
// 环境变量替换
|
|
75
|
+
const config = resolveEnvVars(rawConfig);
|
|
76
|
+
// 验证必要配置
|
|
77
|
+
if (!config.platform?.wsUrl || !config.platform?.token) {
|
|
78
|
+
console.error('❌ 缺少必要配置: platform.wsUrl 和 platform.token');
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
if (!config.llm?.apiKey || !config.llm?.baseUrl) {
|
|
82
|
+
console.error('❌ 缺少必要配置: llm.apiKey 和 llm.baseUrl');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
// 创建并启动 WorkerClaw
|
|
86
|
+
const workerclaw = createWorkerClaw(config);
|
|
87
|
+
// 优雅关闭
|
|
88
|
+
const shutdown = async (signal) => {
|
|
89
|
+
console.log(`\n收到 ${signal} 信号,正在关闭...`);
|
|
90
|
+
await workerclaw.stop();
|
|
91
|
+
process.exit(0);
|
|
92
|
+
};
|
|
93
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
94
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
95
|
+
process.on('uncaughtException', async (err) => {
|
|
96
|
+
console.error('未捕获的异常:', err);
|
|
97
|
+
await workerclaw.stop();
|
|
98
|
+
process.exit(1);
|
|
99
|
+
});
|
|
100
|
+
process.on('unhandledRejection', async (reason) => {
|
|
101
|
+
console.error('未处理的 Promise 拒绝:', reason);
|
|
102
|
+
});
|
|
103
|
+
// 启动
|
|
104
|
+
try {
|
|
105
|
+
await workerclaw.start();
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.error('❌ WorkerClaw 启动失败:', err);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
main().catch(err => {
|
|
113
|
+
console.error('启动失败:', err);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerClaw 配置定义
|
|
3
|
+
*/
|
|
4
|
+
export interface PlatformConfig {
|
|
5
|
+
/** 平台 HTTP API 地址 */
|
|
6
|
+
apiUrl: string;
|
|
7
|
+
/** 平台 WebSocket 地址 */
|
|
8
|
+
wsUrl: string;
|
|
9
|
+
/** Bot ID(认证后由平台分配) */
|
|
10
|
+
botId: string;
|
|
11
|
+
/** 认证 Token */
|
|
12
|
+
token: string;
|
|
13
|
+
/** Agent 名称(注册时使用) */
|
|
14
|
+
agentName?: string;
|
|
15
|
+
/** 重连配置 */
|
|
16
|
+
reconnect: {
|
|
17
|
+
maxRetries: number;
|
|
18
|
+
baseDelayMs: number;
|
|
19
|
+
maxDelayMs: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface LLMConfig {
|
|
23
|
+
provider: string;
|
|
24
|
+
model: string;
|
|
25
|
+
apiKey: string;
|
|
26
|
+
baseUrl: string;
|
|
27
|
+
safety: {
|
|
28
|
+
maxTokens: number;
|
|
29
|
+
temperature: number;
|
|
30
|
+
topP: number;
|
|
31
|
+
};
|
|
32
|
+
retry: {
|
|
33
|
+
maxRetries: number;
|
|
34
|
+
backoffMs: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface RateLimitConfig {
|
|
38
|
+
maxMessagesPerMinute: number;
|
|
39
|
+
maxConcurrentTasks: number;
|
|
40
|
+
}
|
|
41
|
+
export interface PromptInjectionConfig {
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
patterns?: string[];
|
|
44
|
+
}
|
|
45
|
+
export interface MaliciousCommandsConfig {
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
blockPatterns?: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface PIIProtectionConfig {
|
|
50
|
+
enabled: boolean;
|
|
51
|
+
detectTypes?: ('email' | 'phone' | 'id_card' | 'api_key' | 'password')[];
|
|
52
|
+
action?: 'mask' | 'block' | 'warn';
|
|
53
|
+
}
|
|
54
|
+
export interface ResourceExhaustionConfig {
|
|
55
|
+
maxOutputTokens: number;
|
|
56
|
+
maxToolCallsPerTask: number;
|
|
57
|
+
maxTotalDurationMs: number;
|
|
58
|
+
}
|
|
59
|
+
export interface DataExfiltrationConfig {
|
|
60
|
+
enabled: boolean;
|
|
61
|
+
blockedDomains?: string[];
|
|
62
|
+
allowedDomains?: string[];
|
|
63
|
+
blockUnknownDomains?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface SecurityConfig {
|
|
66
|
+
rateLimit: RateLimitConfig;
|
|
67
|
+
contentScan: {
|
|
68
|
+
promptInjection: PromptInjectionConfig;
|
|
69
|
+
maliciousCommands: MaliciousCommandsConfig;
|
|
70
|
+
piiProtection?: PIIProtectionConfig;
|
|
71
|
+
resourceExhaustion?: ResourceExhaustionConfig;
|
|
72
|
+
dataExfiltration?: DataExfiltrationConfig;
|
|
73
|
+
};
|
|
74
|
+
sandbox: {
|
|
75
|
+
workDir: string;
|
|
76
|
+
commandTimeoutMs: number;
|
|
77
|
+
taskTimeoutMs: number;
|
|
78
|
+
maxMemoryMB?: number;
|
|
79
|
+
maxOutputKB?: number;
|
|
80
|
+
allowedPaths?: string[];
|
|
81
|
+
deniedPaths?: string[];
|
|
82
|
+
allowLocalhost?: boolean;
|
|
83
|
+
allowedDomains?: string[];
|
|
84
|
+
deniedDomains?: string[];
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export interface TaskConfig {
|
|
88
|
+
autoAccept: {
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
threshold: number;
|
|
91
|
+
maxConcurrent: number;
|
|
92
|
+
};
|
|
93
|
+
/** 并发控制 */
|
|
94
|
+
concurrency: {
|
|
95
|
+
maxConcurrent: number;
|
|
96
|
+
maxPerType: Partial<Record<string, number>>;
|
|
97
|
+
queueSize: number;
|
|
98
|
+
priority: {
|
|
99
|
+
highValueFirst: boolean;
|
|
100
|
+
urgentFirst: boolean;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
/** 任务评估 */
|
|
104
|
+
evaluation: {
|
|
105
|
+
acceptThreshold: number;
|
|
106
|
+
deferThreshold: number;
|
|
107
|
+
weights: {
|
|
108
|
+
capability: number;
|
|
109
|
+
capacity: number;
|
|
110
|
+
risk: number;
|
|
111
|
+
};
|
|
112
|
+
capabilityScores: Partial<Record<string, number>>;
|
|
113
|
+
};
|
|
114
|
+
/** 超时与重试 */
|
|
115
|
+
timeout: {
|
|
116
|
+
taskTimeoutMs: number;
|
|
117
|
+
llmTimeoutMs: number;
|
|
118
|
+
queueTimeoutMs: number;
|
|
119
|
+
retryOnTimeout: boolean;
|
|
120
|
+
maxRetries: number;
|
|
121
|
+
retryDelayMs: number;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export interface ActiveBehaviorConfig {
|
|
125
|
+
/** 是否启用智能活跃行为 */
|
|
126
|
+
enabled: boolean;
|
|
127
|
+
/** 调度间隔 (ms) */
|
|
128
|
+
checkIntervalMs: number;
|
|
129
|
+
/** 最小空闲时间 (ms) */
|
|
130
|
+
minIdleTimeMs: number;
|
|
131
|
+
/** 行为概率权重 */
|
|
132
|
+
weights: {
|
|
133
|
+
tweet: number;
|
|
134
|
+
browse: number;
|
|
135
|
+
comment: number;
|
|
136
|
+
like: number;
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export interface WorkerClawConfig {
|
|
140
|
+
/** WorkerClaw 实例 ID */
|
|
141
|
+
id: string;
|
|
142
|
+
/** 实例名称 */
|
|
143
|
+
name: string;
|
|
144
|
+
/** 平台配置 */
|
|
145
|
+
platform: PlatformConfig;
|
|
146
|
+
/** LLM 配置 */
|
|
147
|
+
llm: LLMConfig;
|
|
148
|
+
/** 安全配置 */
|
|
149
|
+
security: SecurityConfig;
|
|
150
|
+
/** 任务配置 */
|
|
151
|
+
task: TaskConfig;
|
|
152
|
+
/** 人格配置 */
|
|
153
|
+
personality: {
|
|
154
|
+
name: string;
|
|
155
|
+
tone: string;
|
|
156
|
+
bio: string;
|
|
157
|
+
description?: string;
|
|
158
|
+
expertise?: string[];
|
|
159
|
+
language?: string;
|
|
160
|
+
customSystemPrompt?: string;
|
|
161
|
+
behavior?: {
|
|
162
|
+
proactivity: number;
|
|
163
|
+
humor: number;
|
|
164
|
+
formality: number;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
/** 智能活跃行为配置 */
|
|
168
|
+
activeBehavior?: ActiveBehaviorConfig;
|
|
169
|
+
}
|
|
170
|
+
export declare const DEFAULT_CONFIG: Omit<WorkerClawConfig, 'platform' | 'llm'>;
|
|
171
|
+
/**
|
|
172
|
+
* 深度合并配置
|
|
173
|
+
*/
|
|
174
|
+
export declare function mergeConfig(base: Partial<WorkerClawConfig>, overrides: Partial<WorkerClawConfig>): WorkerClawConfig;
|
|
175
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerClaw 配置定义
|
|
3
|
+
*/
|
|
4
|
+
// ==================== 默认配置 ====================
|
|
5
|
+
export const DEFAULT_CONFIG = {
|
|
6
|
+
id: 'worker-001',
|
|
7
|
+
name: 'WorkerClaw',
|
|
8
|
+
security: {
|
|
9
|
+
rateLimit: {
|
|
10
|
+
maxMessagesPerMinute: 30,
|
|
11
|
+
maxConcurrentTasks: 3,
|
|
12
|
+
},
|
|
13
|
+
contentScan: {
|
|
14
|
+
promptInjection: { enabled: true },
|
|
15
|
+
maliciousCommands: { enabled: true },
|
|
16
|
+
piiProtection: { enabled: false, action: 'warn' },
|
|
17
|
+
resourceExhaustion: { maxOutputTokens: 8000, maxToolCallsPerTask: 20, maxTotalDurationMs: 300000 },
|
|
18
|
+
dataExfiltration: { enabled: true, blockedDomains: [], allowedDomains: [], blockUnknownDomains: false },
|
|
19
|
+
},
|
|
20
|
+
sandbox: {
|
|
21
|
+
workDir: './data/sandbox',
|
|
22
|
+
commandTimeoutMs: 30000,
|
|
23
|
+
taskTimeoutMs: 300000,
|
|
24
|
+
maxMemoryMB: 512,
|
|
25
|
+
maxOutputKB: 1024,
|
|
26
|
+
allowedPaths: [],
|
|
27
|
+
deniedPaths: ['/etc', '/var', '/usr', '/System', '/Library', '/proc', '/sys'],
|
|
28
|
+
allowLocalhost: false,
|
|
29
|
+
allowedDomains: [],
|
|
30
|
+
deniedDomains: [],
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
task: {
|
|
34
|
+
autoAccept: {
|
|
35
|
+
enabled: true,
|
|
36
|
+
threshold: 75,
|
|
37
|
+
maxConcurrent: 3,
|
|
38
|
+
},
|
|
39
|
+
concurrency: {
|
|
40
|
+
maxConcurrent: 3,
|
|
41
|
+
maxPerType: {},
|
|
42
|
+
queueSize: 10,
|
|
43
|
+
priority: {
|
|
44
|
+
highValueFirst: true,
|
|
45
|
+
urgentFirst: true,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
evaluation: {
|
|
49
|
+
acceptThreshold: 80,
|
|
50
|
+
deferThreshold: 60,
|
|
51
|
+
weights: {
|
|
52
|
+
capability: 0.5,
|
|
53
|
+
capacity: 0.2,
|
|
54
|
+
risk: 0.3,
|
|
55
|
+
},
|
|
56
|
+
capabilityScores: {
|
|
57
|
+
text_reply: 90,
|
|
58
|
+
qa: 85,
|
|
59
|
+
translation: 80,
|
|
60
|
+
search_summary: 75,
|
|
61
|
+
writing: 70,
|
|
62
|
+
image_gen: 60,
|
|
63
|
+
data_analysis: 55,
|
|
64
|
+
code_dev: 40,
|
|
65
|
+
system_op: 30,
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
timeout: {
|
|
69
|
+
taskTimeoutMs: 300000,
|
|
70
|
+
llmTimeoutMs: 60000,
|
|
71
|
+
queueTimeoutMs: 60000,
|
|
72
|
+
retryOnTimeout: false,
|
|
73
|
+
maxRetries: 1,
|
|
74
|
+
retryDelayMs: 5000,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
personality: {
|
|
78
|
+
name: '小工虾',
|
|
79
|
+
tone: '专业、友好、高效',
|
|
80
|
+
bio: '智工坊平台的打工虾',
|
|
81
|
+
},
|
|
82
|
+
activeBehavior: {
|
|
83
|
+
enabled: true,
|
|
84
|
+
checkIntervalMs: 5 * 60 * 1000,
|
|
85
|
+
minIdleTimeMs: 10 * 60 * 1000,
|
|
86
|
+
weights: {
|
|
87
|
+
tweet: 15,
|
|
88
|
+
browse: 35,
|
|
89
|
+
comment: 20,
|
|
90
|
+
like: 30,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* 深度合并配置
|
|
96
|
+
*/
|
|
97
|
+
export function mergeConfig(base, overrides) {
|
|
98
|
+
return {
|
|
99
|
+
...DEFAULT_CONFIG,
|
|
100
|
+
...base,
|
|
101
|
+
...overrides,
|
|
102
|
+
security: { ...DEFAULT_CONFIG.security, ...base.security, ...overrides.security },
|
|
103
|
+
task: { ...DEFAULT_CONFIG.task, ...base.task, ...overrides.task },
|
|
104
|
+
personality: { ...DEFAULT_CONFIG.personality, ...base.personality, ...overrides.personality },
|
|
105
|
+
platform: { ...(base.platform || {}), ...(overrides.platform || {}) },
|
|
106
|
+
llm: { ...(base.llm || {}), ...(overrides.llm || {}) },
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerClaw 事件总线
|
|
3
|
+
*
|
|
4
|
+
* 模块间松耦合通信的核心机制
|
|
5
|
+
*/
|
|
6
|
+
import type { Task, TaskStatus } from '../types/task.js';
|
|
7
|
+
export declare enum WorkerClawEvent {
|
|
8
|
+
STARTING = "workerclaw:starting",
|
|
9
|
+
READY = "workerclaw:ready",
|
|
10
|
+
SHUTTING_DOWN = "workerclaw:shutting_down",
|
|
11
|
+
SHUTDOWN = "workerclaw:shutdown",
|
|
12
|
+
WS_CONNECTING = "ws:connecting",
|
|
13
|
+
WS_CONNECTED = "ws:connected",
|
|
14
|
+
WS_DISCONNECTED = "ws:disconnected",
|
|
15
|
+
WS_RECONNECTING = "ws:reconnecting",
|
|
16
|
+
WS_ERROR = "ws:error",
|
|
17
|
+
SECURITY_BLOCKED = "security:blocked",
|
|
18
|
+
SECURITY_WARNED = "security:warned",
|
|
19
|
+
TASK_RECEIVED = "task:received",
|
|
20
|
+
TASK_EVALUATED = "task:evaluated",
|
|
21
|
+
TASK_ACCEPTED = "task:accepted",
|
|
22
|
+
TASK_REJECTED = "task:rejected",
|
|
23
|
+
TASK_STARTED = "task:started",
|
|
24
|
+
TASK_PROGRESS = "task:progress",
|
|
25
|
+
TASK_COMPLETED = "task:completed",
|
|
26
|
+
TASK_FAILED = "task:failed",
|
|
27
|
+
TASK_TIMEOUT = "task:timeout",
|
|
28
|
+
TASK_CANCELLED = "task:cancelled",
|
|
29
|
+
TASK_DEFERRED = "task:deferred",
|
|
30
|
+
TASK_QUEUED = "task:queued",
|
|
31
|
+
TASK_DEQUEUED = "task:dequeued",
|
|
32
|
+
TASK_STATE_CHANGED = "task:state_changed",
|
|
33
|
+
TOOL_CALLED = "tool:called",
|
|
34
|
+
TOOL_COMPLETED = "tool:completed",
|
|
35
|
+
TOOL_BLOCKED = "tool:blocked",
|
|
36
|
+
CONCURRENCY_LIMIT = "concurrency:limit",
|
|
37
|
+
QUEUE_FULL = "queue:full",
|
|
38
|
+
API_REPORT = "api:report",
|
|
39
|
+
API_ERROR = "api:error",
|
|
40
|
+
LLM_REQUEST = "llm:request",
|
|
41
|
+
LLM_RESPONSE = "llm:response",
|
|
42
|
+
LLM_ERROR = "llm:error"
|
|
43
|
+
}
|
|
44
|
+
export interface EventMap {
|
|
45
|
+
[WorkerClawEvent.STARTING]: void;
|
|
46
|
+
[WorkerClawEvent.READY]: void;
|
|
47
|
+
[WorkerClawEvent.SHUTTING_DOWN]: {
|
|
48
|
+
reason?: string;
|
|
49
|
+
};
|
|
50
|
+
[WorkerClawEvent.SHUTDOWN]: void;
|
|
51
|
+
[WorkerClawEvent.WS_CONNECTING]: {
|
|
52
|
+
attempt: number;
|
|
53
|
+
};
|
|
54
|
+
[WorkerClawEvent.WS_CONNECTED]: void;
|
|
55
|
+
[WorkerClawEvent.WS_DISCONNECTED]: {
|
|
56
|
+
code: number;
|
|
57
|
+
reason: string;
|
|
58
|
+
};
|
|
59
|
+
[WorkerClawEvent.WS_RECONNECTING]: {
|
|
60
|
+
attempt: number;
|
|
61
|
+
delayMs: number;
|
|
62
|
+
};
|
|
63
|
+
[WorkerClawEvent.WS_ERROR]: {
|
|
64
|
+
error: Error;
|
|
65
|
+
};
|
|
66
|
+
[WorkerClawEvent.SECURITY_BLOCKED]: {
|
|
67
|
+
message: string;
|
|
68
|
+
reason: string;
|
|
69
|
+
data?: any;
|
|
70
|
+
};
|
|
71
|
+
[WorkerClawEvent.SECURITY_WARNED]: {
|
|
72
|
+
message: string;
|
|
73
|
+
reason: string;
|
|
74
|
+
data?: any;
|
|
75
|
+
};
|
|
76
|
+
[WorkerClawEvent.TASK_RECEIVED]: {
|
|
77
|
+
task: Task;
|
|
78
|
+
};
|
|
79
|
+
[WorkerClawEvent.TASK_EVALUATED]: {
|
|
80
|
+
taskId: string;
|
|
81
|
+
evaluation: any;
|
|
82
|
+
};
|
|
83
|
+
[WorkerClawEvent.TASK_ACCEPTED]: {
|
|
84
|
+
taskId: string;
|
|
85
|
+
};
|
|
86
|
+
[WorkerClawEvent.TASK_REJECTED]: {
|
|
87
|
+
taskId: string;
|
|
88
|
+
reason: string;
|
|
89
|
+
};
|
|
90
|
+
[WorkerClawEvent.TASK_STARTED]: {
|
|
91
|
+
taskId: string;
|
|
92
|
+
};
|
|
93
|
+
[WorkerClawEvent.TASK_PROGRESS]: {
|
|
94
|
+
taskId: string;
|
|
95
|
+
progress: number;
|
|
96
|
+
message?: string;
|
|
97
|
+
};
|
|
98
|
+
[WorkerClawEvent.TASK_COMPLETED]: {
|
|
99
|
+
taskId: string;
|
|
100
|
+
result: any;
|
|
101
|
+
};
|
|
102
|
+
[WorkerClawEvent.TASK_FAILED]: {
|
|
103
|
+
taskId: string;
|
|
104
|
+
error: Error;
|
|
105
|
+
};
|
|
106
|
+
[WorkerClawEvent.TASK_TIMEOUT]: {
|
|
107
|
+
taskId: string;
|
|
108
|
+
};
|
|
109
|
+
[WorkerClawEvent.TASK_CANCELLED]: {
|
|
110
|
+
taskId: string;
|
|
111
|
+
};
|
|
112
|
+
[WorkerClawEvent.TASK_DEFERRED]: {
|
|
113
|
+
taskId: string;
|
|
114
|
+
score: number;
|
|
115
|
+
};
|
|
116
|
+
[WorkerClawEvent.TASK_QUEUED]: {
|
|
117
|
+
taskId: string;
|
|
118
|
+
queuePosition: number;
|
|
119
|
+
};
|
|
120
|
+
[WorkerClawEvent.TASK_DEQUEUED]: {
|
|
121
|
+
taskId: string;
|
|
122
|
+
};
|
|
123
|
+
[WorkerClawEvent.TASK_STATE_CHANGED]: {
|
|
124
|
+
taskId: string;
|
|
125
|
+
from: TaskStatus;
|
|
126
|
+
to: TaskStatus;
|
|
127
|
+
reason?: string;
|
|
128
|
+
};
|
|
129
|
+
[WorkerClawEvent.TOOL_CALLED]: {
|
|
130
|
+
taskId: string;
|
|
131
|
+
toolName: string;
|
|
132
|
+
toolCallId: string;
|
|
133
|
+
};
|
|
134
|
+
[WorkerClawEvent.TOOL_COMPLETED]: {
|
|
135
|
+
taskId: string;
|
|
136
|
+
toolName: string;
|
|
137
|
+
toolCallId: string;
|
|
138
|
+
success: boolean;
|
|
139
|
+
};
|
|
140
|
+
[WorkerClawEvent.TOOL_BLOCKED]: {
|
|
141
|
+
taskId: string;
|
|
142
|
+
toolName: string;
|
|
143
|
+
reason: string;
|
|
144
|
+
};
|
|
145
|
+
[WorkerClawEvent.CONCURRENCY_LIMIT]: {
|
|
146
|
+
runningCount: number;
|
|
147
|
+
maxConcurrent: number;
|
|
148
|
+
};
|
|
149
|
+
[WorkerClawEvent.QUEUE_FULL]: {
|
|
150
|
+
queueSize: number;
|
|
151
|
+
maxQueueSize: number;
|
|
152
|
+
};
|
|
153
|
+
[WorkerClawEvent.API_REPORT]: {
|
|
154
|
+
taskId: string;
|
|
155
|
+
endpoint: string;
|
|
156
|
+
};
|
|
157
|
+
[WorkerClawEvent.API_ERROR]: {
|
|
158
|
+
taskId: string;
|
|
159
|
+
endpoint: string;
|
|
160
|
+
error: Error;
|
|
161
|
+
};
|
|
162
|
+
[WorkerClawEvent.LLM_REQUEST]: {
|
|
163
|
+
taskId: string;
|
|
164
|
+
model: string;
|
|
165
|
+
};
|
|
166
|
+
[WorkerClawEvent.LLM_RESPONSE]: {
|
|
167
|
+
taskId: string;
|
|
168
|
+
tokens?: {
|
|
169
|
+
prompt: number;
|
|
170
|
+
completion: number;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
[WorkerClawEvent.LLM_ERROR]: {
|
|
174
|
+
taskId: string;
|
|
175
|
+
error: Error;
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
export type EventHandler<T = any> = (data: T) => void | Promise<void>;
|
|
179
|
+
export declare class EventBus {
|
|
180
|
+
private logger;
|
|
181
|
+
private handlers;
|
|
182
|
+
private onceHandlers;
|
|
183
|
+
private maxListeners;
|
|
184
|
+
/**
|
|
185
|
+
* 注册事件监听器
|
|
186
|
+
*/
|
|
187
|
+
on<K extends keyof EventMap>(event: K, handler: EventHandler<EventMap[K]>): void;
|
|
188
|
+
/**
|
|
189
|
+
* 注册一次性事件监听器
|
|
190
|
+
*/
|
|
191
|
+
once<K extends keyof EventMap>(event: K, handler: EventHandler<EventMap[K]>): void;
|
|
192
|
+
/**
|
|
193
|
+
* 移除事件监听器
|
|
194
|
+
*/
|
|
195
|
+
off<K extends keyof EventMap>(event: K, handler: EventHandler<EventMap[K]>): void;
|
|
196
|
+
/**
|
|
197
|
+
* 触发事件
|
|
198
|
+
*/
|
|
199
|
+
emit<K extends keyof EventMap>(event: K, data: EventMap[K]): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* 等待事件触发(Promise 化)
|
|
202
|
+
*/
|
|
203
|
+
waitFor<K extends keyof EventMap>(event: K, timeoutMs?: number): Promise<EventMap[K]>;
|
|
204
|
+
/**
|
|
205
|
+
* 清除所有监听器
|
|
206
|
+
*/
|
|
207
|
+
removeAllListeners(event?: string): void;
|
|
208
|
+
}
|
|
209
|
+
/** 全局事件总线单例 */
|
|
210
|
+
export declare const eventBus: EventBus;
|
|
211
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/core/events.ts"],"names":[],"mappings":"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"}
|