@next-open-ai/openclawx 0.8.58 → 0.9.6
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/README.md +14 -5
- package/apps/desktop/renderer/dist/assets/index-BihHYEuk.js +93 -0
- package/apps/desktop/renderer/dist/assets/index-Dq83-1ma.css +10 -0
- package/apps/desktop/renderer/dist/index.html +2 -2
- package/dist/cli/cli.js +2 -2
- package/dist/core/agent/agent-manager.js +12 -1
- package/dist/core/config/agent-reload-pending.js +3 -2
- package/dist/core/config/desktop-config.d.ts +1 -1
- package/dist/core/config/desktop-config.js +31 -13
- package/dist/core/config/provider-support-default.js +1 -0
- package/dist/core/local-llm-server/download-model.d.ts +1 -1
- package/dist/core/local-llm-server/download-model.js +1 -1
- package/dist/core/local-llm-server/index.d.ts +1 -1
- package/dist/core/local-llm-server/llm-context.d.ts +1 -0
- package/dist/core/local-llm-server/llm-context.js +31 -3
- package/dist/core/local-llm-server/model-resolve.d.ts +2 -2
- package/dist/core/local-llm-server/model-resolve.js +2 -2
- package/dist/core/local-llm-server/start-from-config.js +2 -2
- package/dist/core/mcp/operator.d.ts +9 -0
- package/dist/core/mcp/operator.js +40 -6
- package/dist/core/mcp/transport/stdio.js +19 -2
- package/dist/core/tools/windows-shell.d.ts +6 -0
- package/dist/core/tools/windows-shell.js +85 -0
- package/dist/gateway/methods/agent-chat.js +30 -3
- package/dist/gateway/server.js +50 -13
- package/dist/server/agent-config/agent-config.controller.d.ts +8 -0
- package/dist/server/agent-config/agent-config.controller.js +11 -0
- package/dist/server/agent-config/agent-config.service.d.ts +10 -0
- package/dist/server/agent-config/agent-config.service.js +18 -1
- package/dist/server/agents/agents.gateway.js +1 -1
- package/dist/server/bootstrap.js +16 -2
- package/dist/server/config/config.service.d.ts +1 -1
- package/dist/server/config/config.service.js +29 -23
- package/dist/server/config/local-models.service.js +2 -3
- package/package.json +1 -1
- package/presets/preset-agents.json +2 -2
- package/presets/preset-config.json +5 -5
- package/presets/preset-providers.json +7 -0
- package/presets/recommended-local-models.json +6 -12
- package/apps/desktop/renderer/dist/assets/index-M5VGUUpo.js +0 -93
- package/apps/desktop/renderer/dist/assets/index-y8oE2q_u.css +0 -10
package/dist/server/bootstrap.js
CHANGED
|
@@ -20,7 +20,14 @@ export async function createNestAppEmbedded() {
|
|
|
20
20
|
expressApp.use(express.json({ limit: BODY_LIMIT }));
|
|
21
21
|
expressApp.use(express.urlencoded({ extended: true, limit: BODY_LIMIT }));
|
|
22
22
|
app.enableCors({
|
|
23
|
-
origin: [
|
|
23
|
+
origin: [
|
|
24
|
+
'http://localhost:5173',
|
|
25
|
+
'http://127.0.0.1:5173',
|
|
26
|
+
'http://localhost:38080',
|
|
27
|
+
'http://localhost:38081',
|
|
28
|
+
'http://127.0.0.1:38080',
|
|
29
|
+
'http://127.0.0.1:38081',
|
|
30
|
+
],
|
|
24
31
|
credentials: true,
|
|
25
32
|
});
|
|
26
33
|
await app.init();
|
|
@@ -40,7 +47,14 @@ export async function createNestAppStandalone(port = 38081) {
|
|
|
40
47
|
expressApp.use(express.urlencoded({ extended: true, limit: BODY_LIMIT }));
|
|
41
48
|
app.setGlobalPrefix('server-api');
|
|
42
49
|
app.enableCors({
|
|
43
|
-
origin: [
|
|
50
|
+
origin: [
|
|
51
|
+
'http://localhost:5173',
|
|
52
|
+
'http://127.0.0.1:5173',
|
|
53
|
+
'http://localhost:38080',
|
|
54
|
+
'http://localhost:38081',
|
|
55
|
+
'http://127.0.0.1:38080',
|
|
56
|
+
'http://127.0.0.1:38081',
|
|
57
|
+
],
|
|
44
58
|
credentials: true,
|
|
45
59
|
});
|
|
46
60
|
await app.listen(port);
|
|
@@ -98,7 +98,7 @@ export declare class ConfigService {
|
|
|
98
98
|
/** 当前缺省智能体 id */
|
|
99
99
|
getDefaultAgentId(config?: AppConfig): string;
|
|
100
100
|
private loadConfig;
|
|
101
|
-
/** 每次获取前从磁盘重新读取,保证打开配置界面时显示最新(含 CLI 写入的配置)。本地 LLM 可用时注入 local
|
|
101
|
+
/** 每次获取前从磁盘重新读取,保证打开配置界面时显示最新(含 CLI 写入的配置)。本地 LLM 可用时注入 local 与缺省模型项;OLLAMA_BASE_URL 时注入 ollama baseUrl(如与 Ollama 同栈)。 */
|
|
102
102
|
getConfig(): Promise<AppConfig>;
|
|
103
103
|
updateConfig(updates: Partial<AppConfig>): Promise<AppConfig>;
|
|
104
104
|
private saveConfig;
|
|
@@ -33,8 +33,8 @@ let ConfigService = class ConfigService {
|
|
|
33
33
|
this.loadConfig();
|
|
34
34
|
}
|
|
35
35
|
/** 预装本地推理缺省:与 desktop-config 的 DEFAULT_LOCAL_LLM_MODEL_ID / DEFAULT_LOCAL_MODEL_ITEM_CODE 一致 */
|
|
36
|
-
static DEFAULT_LOCAL_MODEL_ID = '
|
|
37
|
-
static DEFAULT_LOCAL_MODEL_ITEM_CODE = 'local-
|
|
36
|
+
static DEFAULT_LOCAL_MODEL_ID = 'hf_unsloth_Qwen3.5-4B-GGUF_Qwen3.5-4B-Q5_K_M.gguf';
|
|
37
|
+
static DEFAULT_LOCAL_MODEL_ITEM_CODE = 'local-qwen35-4b';
|
|
38
38
|
getDefaultConfig() {
|
|
39
39
|
return {
|
|
40
40
|
gatewayUrl: 'ws://localhost:38080',
|
|
@@ -53,7 +53,7 @@ let ConfigService = class ConfigService {
|
|
|
53
53
|
modelId: ConfigService_1.DEFAULT_LOCAL_MODEL_ID,
|
|
54
54
|
modelItemCode: ConfigService_1.DEFAULT_LOCAL_MODEL_ITEM_CODE,
|
|
55
55
|
type: 'llm',
|
|
56
|
-
alias: '
|
|
56
|
+
alias: 'Qwen 3.5 4B Q5_K_M',
|
|
57
57
|
},
|
|
58
58
|
],
|
|
59
59
|
rag: undefined,
|
|
@@ -91,31 +91,37 @@ let ConfigService = class ConfigService {
|
|
|
91
91
|
console.error('Error loading config:', error);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
/** 每次获取前从磁盘重新读取,保证打开配置界面时显示最新(含 CLI 写入的配置)。本地 LLM 可用时注入 local
|
|
94
|
+
/** 每次获取前从磁盘重新读取,保证打开配置界面时显示最新(含 CLI 写入的配置)。本地 LLM 可用时注入 local 与缺省模型项;OLLAMA_BASE_URL 时注入 ollama baseUrl(如与 Ollama 同栈)。 */
|
|
95
95
|
async getConfig() {
|
|
96
96
|
await this.loadConfig();
|
|
97
|
-
const baseUrl = process.env.LOCAL_LLM_BASE_URL?.trim();
|
|
98
|
-
if (!baseUrl)
|
|
99
|
-
return this.config;
|
|
100
97
|
const out = { ...this.config };
|
|
101
98
|
out.providers = { ...(this.config.providers || {}) };
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
const localBaseUrl = process.env.LOCAL_LLM_BASE_URL?.trim();
|
|
100
|
+
if (localBaseUrl) {
|
|
101
|
+
if (!out.providers['local']) {
|
|
102
|
+
out.providers['local'] = { baseUrl: localBaseUrl.replace(/\/$/, '') + (localBaseUrl.endsWith('/v1') ? '' : '/v1') };
|
|
103
|
+
}
|
|
104
|
+
else if (!out.providers['local'].baseUrl?.trim()) {
|
|
105
|
+
out.providers['local'] = { ...out.providers['local'], baseUrl: localBaseUrl.replace(/\/$/, '') + (localBaseUrl.endsWith('/v1') ? '' : '/v1') };
|
|
106
|
+
}
|
|
107
|
+
const list = [...(out.configuredModels || [])];
|
|
108
|
+
const hasLocal = list.some((m) => m.provider === 'local' && m.modelId === 'local-llm');
|
|
109
|
+
if (!hasLocal) {
|
|
110
|
+
list.push({
|
|
111
|
+
provider: 'local',
|
|
112
|
+
modelId: 'local-llm',
|
|
113
|
+
modelItemCode: 'local-llm',
|
|
114
|
+
type: 'llm',
|
|
115
|
+
alias: '本地 LLM(当前加载)',
|
|
116
|
+
});
|
|
117
|
+
out.configuredModels = list;
|
|
118
|
+
}
|
|
107
119
|
}
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
modelId: 'local-llm',
|
|
114
|
-
modelItemCode: 'local-llm',
|
|
115
|
-
type: 'llm',
|
|
116
|
-
alias: '本地 LLM(当前加载)',
|
|
117
|
-
});
|
|
118
|
-
out.configuredModels = list;
|
|
120
|
+
const ollamaBaseUrl = process.env.OLLAMA_BASE_URL?.trim();
|
|
121
|
+
if (ollamaBaseUrl) {
|
|
122
|
+
const url = ollamaBaseUrl.replace(/\/$/, '');
|
|
123
|
+
const withV1 = url.endsWith('/v1') ? url : url + '/v1';
|
|
124
|
+
out.providers['ollama'] = { ...(out.providers['ollama'] || {}), baseUrl: withV1 };
|
|
119
125
|
}
|
|
120
126
|
return out;
|
|
121
127
|
}
|
|
@@ -27,9 +27,8 @@ function inferModelType(filename) {
|
|
|
27
27
|
}
|
|
28
28
|
const PRESET_FILENAME = 'recommended-local-models.json';
|
|
29
29
|
const DEFAULT_RECOMMENDED = [
|
|
30
|
-
{ id: 'hf:
|
|
31
|
-
{ id: 'hf:
|
|
32
|
-
{ id: 'hf:Qwen/Qwen3-14B-GGUF/Qwen3-14B-Q4_K_M.gguf', name: 'Qwen3 14B Q4_K_M', type: 'llm', sizeHint: '~8.5GB' },
|
|
30
|
+
{ id: 'hf:unsloth/Qwen3.5-4B-GGUF/Qwen3.5-4B-Q5_K_M.gguf', name: 'Qwen 3.5 4B Q5_K_M', type: 'llm', sizeHint: '~3.2GB' },
|
|
31
|
+
{ id: 'hf:unsloth/Qwen3.5-9B-GGUF/Qwen3.5-9B-Q5_K_M.gguf', name: 'Qwen 3.5 9B Q5_K_M', type: 'llm', sizeHint: '~6.8GB' },
|
|
33
32
|
{ id: 'hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf', name: 'EmbeddingGemma 300M Q8 (768维)', type: 'embedding', sizeHint: '~300MB' },
|
|
34
33
|
{ id: 'hf:gpustack/bge-m3-GGUF/bge-m3-Q8_0.gguf', name: 'BGE-M3 Q8 多语言 (1024维)', type: 'embedding', sizeHint: '~1.2GB' },
|
|
35
34
|
{ id: 'hf:mixedbread-ai/mxbai-embed-large-v1-GGUF/mxbai-embed-large-v1-f16.gguf', name: 'MxBai Embed Large v1 (1024维)', type: 'embedding', sizeHint: '~670MB' },
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.9.6",
|
|
7
7
|
"description": "OpenClawX - A professional desktop application for managing and executing AI agents with real-time chat, session management, and skills browsing.",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"main": "dist/index.js",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"mcpServers": {
|
|
70
70
|
"akshare-tools": {
|
|
71
71
|
"command": "uvx",
|
|
72
|
-
"args": ["
|
|
72
|
+
"args": ["akshare-tools"],
|
|
73
73
|
"env": {}
|
|
74
74
|
}
|
|
75
75
|
}
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"command": "npx",
|
|
109
109
|
"args": ["-y", "yingdao-mcp-server"],
|
|
110
110
|
"env": {
|
|
111
|
-
"RPA_MODEL": "
|
|
111
|
+
"RPA_MODEL": "local",
|
|
112
112
|
"SHADOWBOT_PATH": "/Applications/影刀.app",
|
|
113
113
|
"USER_FOLDER": "/Users/ctrip/Library/Application Support/Shadowbot/users/718771925823332354"
|
|
114
114
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"presetVersion": "1.0",
|
|
3
3
|
"config": {
|
|
4
4
|
"defaultProvider": "local",
|
|
5
|
-
"defaultModel": "
|
|
6
|
-
"defaultModelItemCode": "local-
|
|
5
|
+
"defaultModel": "hf_unsloth_Qwen3.5-4B-GGUF_Qwen3.5-4B-Q5_K_M.gguf",
|
|
6
|
+
"defaultModelItemCode": "local-qwen35-4b",
|
|
7
7
|
"defaultAgentId": "default",
|
|
8
8
|
"maxAgentSessions": 5,
|
|
9
9
|
"providers": {
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"configuredModels": [
|
|
13
13
|
{
|
|
14
14
|
"provider": "local",
|
|
15
|
-
"modelId": "
|
|
15
|
+
"modelId": "hf_unsloth_Qwen3.5-4B-GGUF_Qwen3.5-4B-Q5_K_M.gguf",
|
|
16
16
|
"type": "llm",
|
|
17
|
-
"alias": "
|
|
18
|
-
"modelItemCode": "local-
|
|
17
|
+
"alias": "Qwen 3.5 4B Q5_K_M",
|
|
18
|
+
"modelItemCode": "local-qwen35-4b"
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"provider": "local",
|
|
@@ -3,22 +3,16 @@
|
|
|
3
3
|
"description": "推荐本地 GGUF 模型列表,用于「模型管理」备下载与已安装展示。版本升级时可在此增删改,以支持更合适的模型。",
|
|
4
4
|
"models": [
|
|
5
5
|
{
|
|
6
|
-
"id": "hf:
|
|
7
|
-
"name": "
|
|
6
|
+
"id": "hf:unsloth/Qwen3.5-4B-GGUF/Qwen3.5-4B-Q5_K_M.gguf",
|
|
7
|
+
"name": "Qwen 3.5 4B Q5_K_M",
|
|
8
8
|
"type": "llm",
|
|
9
|
-
"sizeHint": "~
|
|
9
|
+
"sizeHint": "~3.2GB"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
"id": "hf:
|
|
13
|
-
"name": "
|
|
12
|
+
"id": "hf:unsloth/Qwen3.5-9B-GGUF/Qwen3.5-9B-Q5_K_M.gguf",
|
|
13
|
+
"name": "Qwen 3.5 9B Q5_K_M",
|
|
14
14
|
"type": "llm",
|
|
15
|
-
"sizeHint": "~
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"id": "hf:Qwen/Qwen3-14B-GGUF/Qwen3-14B-Q4_K_M.gguf",
|
|
19
|
-
"name": "Qwen3 14B Q4_K_M",
|
|
20
|
-
"type": "llm",
|
|
21
|
-
"sizeHint": "~8.5GB"
|
|
15
|
+
"sizeHint": "~6.8GB"
|
|
22
16
|
},
|
|
23
17
|
{
|
|
24
18
|
"id": "hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf",
|