rol-websocket-channel 1.1.5 → 1.2.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.
Files changed (37) hide show
  1. package/MQTT-API /346/226/260/345/242/236/346/226/207/344/273/266/345/212/237/350/203/275.md" +128 -151
  2. package/dist/index.js +613 -430
  3. package/dist/message-handler.js +503 -327
  4. package/dist/src/admin/cli.js +43 -43
  5. package/dist/src/admin/jsonrpc.js +60 -60
  6. package/dist/src/admin/lib/fs.js +30 -30
  7. package/dist/src/admin/lib/paths.js +46 -46
  8. package/dist/src/admin/methods/admin.js +60 -60
  9. package/dist/src/admin/methods/agents-extended.js +251 -235
  10. package/dist/src/admin/methods/artifacts.js +642 -0
  11. package/dist/src/admin/methods/artifacts.test.js +191 -0
  12. package/dist/src/admin/methods/cron.js +250 -0
  13. package/dist/src/admin/methods/index.js +102 -69
  14. package/dist/src/admin/methods/mem9.js +270 -0
  15. package/dist/src/admin/methods/memory.js +360 -360
  16. package/dist/src/admin/methods/models-extended.js +190 -107
  17. package/dist/src/admin/methods/models.js +195 -39
  18. package/dist/src/admin/methods/pairing.js +277 -0
  19. package/dist/src/admin/methods/sessions-extended.js +215 -207
  20. package/dist/src/admin/methods/sessions.js +75 -64
  21. package/dist/src/admin/methods/skills-extended.js +157 -157
  22. package/dist/src/admin/methods/skills-toggle.js +182 -182
  23. package/dist/src/admin/methods/skills.js +528 -384
  24. package/dist/src/admin/methods/system.js +180 -178
  25. package/dist/src/admin/methods/usage.js +1170 -1170
  26. package/dist/src/admin/types.js +1 -1
  27. package/dist/src/mqtt/connection-manager.js +209 -155
  28. package/dist/src/mqtt/index.js +5 -5
  29. package/dist/src/mqtt/mqtt-client.js +110 -86
  30. package/dist/src/mqtt/mqtt.test.js +418 -0
  31. package/dist/src/mqtt/types.js +2 -2
  32. package/dist/src/shared/context.js +24 -24
  33. package/dist/src/shared/wrapper.js +23 -23
  34. package/package.json +1 -1
  35. package/src/admin/methods/agents-extended.ts +33 -6
  36. package/src/admin/methods/models-extended.ts +17 -13
  37. package/src/admin/methods/skills.ts +69 -4
@@ -147,6 +147,11 @@
147
147
  }
148
148
  ```
149
149
 
150
+ **模型字段说明**
151
+ - `modelPrimary` 使用完整的 `providerId/modelName`。
152
+ - `modelProvider` 只做兼容校验;如果传入,必须与 `modelPrimary` 的 provider 部分一致。
153
+ - 创建后只保存 `model.primary`,不会把 `modelProvider` 写成 `model.provider`。
154
+
150
155
  ---
151
156
 
152
157
  ### agentsUpdate - 更新代理
@@ -159,10 +164,11 @@
159
164
  - `workspace`
160
165
  - `agentDir`
161
166
  - `model.primary`
162
- - `model.provider`
163
167
  - `skills`
164
168
  - `tools.profile`
165
169
  - `behavior`
170
+ - `model.provider` 不能通过 `agentsUpdate` 写入;provider 从 `model.primary` 派生。
171
+ - 切换 agent 模型时只写 `model.primary`,值必须是完整的 `providerId/modelName`。
166
172
 
167
173
  **请求**
168
174
 
@@ -305,13 +311,25 @@
305
311
 
306
312
  ## 模型管理 (Models)
307
313
 
314
+ ### 核心规则
315
+
316
+ 调整:模型配置统一收口到 `primary` 和 `models.providers`。
317
+
318
+ - 当前默认模型只看 `agents.defaults.model.primary`。
319
+ - `primary` 必须传完整 ref:`providerId/modelId`,例如 `custom-dashscope-aliyuncs-com/qwen3.6-flash`。
320
+ - 不再写 `agents.defaults.model.provider`;provider 从 `primary` 的 `/` 前半段派生。
321
+ - custom provider 必须维护在 `models.providers.<providerId>`,否则 `primary` 前缀无法解析到真实接口。
322
+ - `agents.defaults.models` 是可选模型池 / allowlist / alias 表,前端可以用它生成模型下拉。
323
+ - 前端提交完整 ref;展示可以用 alias、`modelOptions[].label`、`modelOptions[].model`,或者只展示 `/` 后半段。
324
+
308
325
  ### modelsGet - 获取模型列表
309
326
 
310
- **说明**
311
- - 返回默认模型、所有 agent 的模型配置视图、模型下拉选项、模型配置模式,以及脱敏后的 provider 配置。
312
- - 前端模型选择器使用 `modelOptions[]`。展示 `label`,提交 `value` 和 `provider`。
313
- - `modelOptions[]` 优先从 `agents.defaults.models` 生成;如果没有配置,会从 `agents.defaults.model` 和 `agents.list[].model` 中收集当前已使用的模型作为兜底选项。
314
- - `configuredProviders` 是脱敏后的 provider 原始配置,普通模型选择器不需要使用它。
327
+ 调整:只负责读取当前模型和下拉数据,不写配置。
328
+
329
+ **什么时候用**
330
+
331
+ - 页面初始化时获取当前默认模型、模型下拉选项和 provider 配置视图。
332
+ - 前端下拉框优先使用 `data.modelOptions`。
315
333
 
316
334
  **请求**
317
335
  ```json
@@ -322,111 +340,21 @@
322
340
  }
323
341
  ```
324
342
 
325
- **响应**
326
- ```json
327
- {
328
- "sourceConfigFile": "/home/woowonjae/.openclaw/openclaw.json",
329
- "defaults": {
330
- "model": {
331
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus",
332
- "provider": "custom-dashscope-aliyuncs-com"
333
- },
334
- "models": {
335
- "custom-dashscope-aliyuncs-com/qwen-plus": {
336
- "alias": "Qwen Plus"
337
- }
338
- }
339
- },
340
- "agents": [
341
- {
342
- "id": "defaults",
343
- "name": "defaults",
344
- "model": {
345
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus",
346
- "provider": "custom-dashscope-aliyuncs-com"
347
- }
348
- }
349
- ],
350
- "modelOptions": [
351
- {
352
- "label": "Qwen Plus",
353
- "value": "custom-dashscope-aliyuncs-com/qwen-plus",
354
- "provider": "custom-dashscope-aliyuncs-com",
355
- "providerLabel": "Dashscope Aliyuncs Com",
356
- "model": "qwen-plus"
357
- }
358
- ],
359
- "modelConfigMode": "merge",
360
- "configuredProviders": {}
361
- }
362
- ```
343
+ **前端取值**
344
+ - 当前默认模型:`data.defaults.model.primary`
345
+ - 下拉提交值:`data.modelOptions[].value`
346
+ - 下拉展示名:优先 `data.modelOptions[].label`
347
+ - 只展示模型名:`data.modelOptions[].model`,例如 `qwen3.6-flash`
348
+ - provider 展示:`data.modelOptions[].providerLabel` 或 `data.modelOptions[].provider`
349
+ - `data.defaults.model.provider` 即使返回,也只当派生展示值,不写回配置。
363
350
 
364
- **前端使用方式**
365
- - 默认模型:读取 `data.defaults.model.primary`。
366
- - 默认 provider:读取 `data.defaults.model.provider`;如果为空,可以从选中的 `modelOptions[].provider` 获取。
367
- - 模型下拉框:使用 `data.modelOptions`。
368
- - agent 模型列表:使用 `data.agents[]`。
351
+ ### modelsSet - 只切换默认模型
369
352
 
370
- ---
353
+ 调整:只写 `agents.defaults.model.primary即可`,`provider` 只做校验 可以不传。
371
354
 
372
- ### modelsSet - 切换默认模型
373
-
374
- **说明**
375
- - 前端模型选择器切换默认模型时使用这个接口。
376
- - `primary` 是唯一主字段,必须是完整的 `providerId/modelName`。
377
- - `provider` 是可选字段,只用于校验;如果传入,必须与 `primary` 的 provider 部分一致。
378
- - 后端写入 `agents.defaults.model.primary`,并从 `primary` 派生写入 `agents.defaults.model.provider`。
379
- - `primary` 必须存在于 `agents.defaults.models` 白名单中;如果没有配置白名单,则只允许设置当前已使用过的模型。
380
-
381
- **推荐配置**
382
- ```json
383
- {
384
- "models": {
385
- "mode": "merge",
386
- "providers": {
387
- "custom-dashscope-aliyuncs-com": {
388
- "label": "通义千问 DashScope",
389
- "apiKey": "YOUR_DASHSCOPE_API_KEY",
390
- "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1"
391
- },
392
- "custom-openai": {
393
- "label": "OpenAI",
394
- "apiKey": "YOUR_OPENAI_API_KEY",
395
- "baseUrl": "https://api.openai.com/v1"
396
- }
397
- }
398
- },
399
- "agents": {
400
- "defaults": {
401
- "model": {
402
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus",
403
- "provider": "custom-dashscope-aliyuncs-com"
404
- },
405
- "models": {
406
- "custom-dashscope-aliyuncs-com/qwen-plus": {
407
- "alias": "Qwen Plus"
408
- },
409
- "custom-dashscope-aliyuncs-com/qwen-max": {
410
- "alias": "Qwen Max"
411
- },
412
- "custom-openai/gpt-4.1": {
413
- "alias": "GPT-4.1"
414
- }
415
- }
416
- },
417
- "list": [
418
- {
419
- "id": "openai-agent",
420
- "name": "OpenAI Agent",
421
- "model": {
422
- "primary": "custom-openai/gpt-4.1",
423
- "provider": "custom-openai"
424
- }
425
- }
426
- ]
427
- }
428
- }
429
- ```
355
+ **什么时候用**
356
+ - 用户只是在已有模型列表里切换默认模型。
357
+ - 这是前端模型选择器最常用的切换接口。
430
358
 
431
359
  **请求**
432
360
  ```json
@@ -434,56 +362,47 @@
434
362
  "type": "modelsSet",
435
363
  "trace_id": "models-set-001",
436
364
  "data": {
437
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus"
365
+ "primary": "custom-dashscope-aliyuncs-com/qwen3.6-flash"
438
366
  }
439
367
  }
440
368
  ```
441
369
 
442
- **带 provider 校验的请求** 测试
370
+ **可选 provider 校验** 可以忽略不管
443
371
  ```json
444
372
  {
445
373
  "type": "modelsSet",
446
374
  "trace_id": "models-set-with-provider-001",
447
375
  "data": {
448
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus",
376
+ "primary": "custom-dashscope-aliyuncs-com/qwen3.6-flash",
449
377
  "provider": "custom-dashscope-aliyuncs-com"
450
378
  }
451
379
  }
452
380
  ```
453
381
 
454
- **成功响应 data**
455
- ```json
456
- {
457
- "ok": true,
458
- "model": {
459
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus",
460
- "provider": "custom-dashscope-aliyuncs-com"
461
- },
462
- "defaults": {
463
- "model": {
464
- "primary": "custom-dashscope-aliyuncs-com/qwen-plus",
465
- "provider": "custom-dashscope-aliyuncs-com"
466
- }
467
- }
468
- }
469
- ```
382
+ **行为**
383
+ - 写入:`agents.defaults.model.primary`
384
+ - 不写入:`agents.defaults.model.provider`
385
+ - 如果传了 `provider`,只校验它必须等于 `primary` 的前缀。
386
+ - 如果 `primary` 不在 `agents.defaults.models` allowlist 中,会返回 `MODEL_NOT_ALLOWED`。
470
387
 
471
- **错误规则**
472
- - `MODEL_PRIMARY_REQUIRED`:缺少 `primary`。
473
- - `MODEL_PRIMARY_INVALID`:`primary` 不是 `provider/model` 格式。
474
- - `MODEL_NOT_ALLOWED`:`primary` 不在允许的模型选项中。
475
- - `MODEL_PROVIDER_MISMATCH`:传入的 `provider` 与 `primary` 不一致。
388
+ ### modelsUpdate - 更新 custom provider,可选同时切默认模型
476
389
 
477
- ---
390
+ 新增 custom provider
391
+ 修改 custom provider 的 baseUrl / apiKey / api
392
+ 更新 custom provider 的 models[]
393
+ 更新 provider 后顺手用 primaryModel 切到这个模型
478
394
 
479
- ### modelsUpdate - 更新 provider 配置
395
+ 暂时不要custom provider 就不需要管这个接口
480
396
 
481
- **说明**
482
- - 用于更新 `models.providers[provider]`。
483
- - 不建议用它做前端模型下拉切换;默认模型切换请使用 `modelsSet`。
484
- - `providerConfig` 会合并到已有 provider 配置中。
485
397
 
486
- **请求**
398
+ 调整:主要维护 `models.providers`,需要切模型时传 `primaryModel`。
399
+
400
+ **什么时候用**
401
+ - 新增或更新 custom provider。
402
+ - 更新 provider 的 base URL、API key、协议类型或模型列表。
403
+ - 需要在更新 provider 后同时切到某个模型。
404
+
405
+ **只更新 provider**
487
406
  ```json
488
407
  {
489
408
  "type": "modelsUpdate",
@@ -491,35 +410,68 @@
491
410
  "data": {
492
411
  "provider": "custom-dashscope-aliyuncs-com",
493
412
  "providerConfig": {
413
+ "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
414
+ "api": "openai-completions",
494
415
  "apiKey": "YOUR_API_KEY",
495
- "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1"
416
+ "models": [
417
+ {
418
+ "id": "qwen3.6-flash",
419
+ "name": "qwen3.6-flash (Custom Provider)"
420
+ }
421
+ ]
496
422
  }
497
423
  }
498
424
  }
499
425
  ```
500
426
 
501
- **切换指定 agent 模型**
427
+ **更新 provider 并切默认模型**
502
428
  ```json
503
429
  {
504
- "type": "agentsUpdate",
505
- "trace_id": "agent-switch-model-001",
430
+ "type": "modelsUpdate",
431
+ "trace_id": "models-update-and-switch-001",
506
432
  "data": {
507
- "agentId": "my-agent",
508
- "updates": {
509
- "model.primary": "custom-dashscope-aliyuncs-com/qwen-plus",
510
- "model.provider": "custom-dashscope-aliyuncs-com"
433
+ "primaryModel": "custom-dashscope-aliyuncs-com/qwen3.6-flash",
434
+ "provider": "custom-dashscope-aliyuncs-com",
435
+ "providerConfig": {
436
+ "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
437
+ "api": "openai-completions",
438
+ "apiKey": "YOUR_API_KEY",
439
+ "models": [
440
+ {
441
+ "id": "qwen3.6-flash",
442
+ "name": "qwen3.6-flash (Custom Provider)"
443
+ }
444
+ ]
511
445
  }
512
446
  }
513
447
  }
514
448
  ```
515
449
 
516
- **参数说明**
517
- - `provider`:要更新配置的 provider ID,写入 `models.providers[provider]`。
518
- - `providerConfig`:provider 配置增量,会合并到已有 provider 配置中。
450
+ **带 modelProvider 的兼容校验**
451
+ ```json
452
+ {
453
+ "type": "modelsUpdate",
454
+ "trace_id": "models-update-with-model-provider-001",
455
+ "data": {
456
+ "primaryModel": "custom-dashscope-aliyuncs-com/qwen3.6-flash",
457
+ "modelProvider": "custom-dashscope-aliyuncs-com"
458
+ }
459
+ }
460
+ ```
461
+
462
+ **行为**
463
+ - `provider + providerConfig` 写入并合并到 `models.providers[provider]`。
464
+ - `primaryModel` 写入 `agents.defaults.model.primary`。
465
+ - `modelProvider` 不能单独传;它只在同时传 `primaryModel` 时做兼容校验。
466
+ - 不写入 `agents.defaults.model.provider`。
519
467
 
520
- **允许更新的 providerConfig 字段**
468
+ **providerConfig 允许字段**
521
469
  - `apiKey`
470
+ - `api`
522
471
  - `baseUrl`
472
+ - `models`
473
+ - `name`
474
+ - `label`
523
475
  - `model`
524
476
  - `temperature`
525
477
  - `maxTokens`
@@ -527,6 +479,31 @@
527
479
  - `frequencyPenalty`
528
480
  - `presencePenalty`
529
481
 
482
+ ### agentsUpdate - 切换指定 agent 模型
483
+
484
+ 调整:只允许写 agent 的 `model.primary`,不再写 `model.provider`。
485
+
486
+ **什么时候用**
487
+ - 只切某个命名 agent 的模型,而不是默认模型。
488
+
489
+ **请求**
490
+ ```json
491
+ {
492
+ "type": "agentsUpdate",
493
+ "trace_id": "agent-switch-model-001",
494
+ "data": {
495
+ "agentId": "my-agent",
496
+ "updates": {
497
+ "model.primary": "custom-dashscope-aliyuncs-com/qwen3.6-flash"
498
+ }
499
+ }
500
+ }
501
+ ```
502
+
503
+ **行为**
504
+ - 只能写 `model.primary`。
505
+ - 不能写 `model.provider`。
506
+
530
507
  ---
531
508
 
532
509
  ## Mem9 管理 (Mem9)