dlinkclaw-openclaw 1.0.0 → 1.0.1

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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dlinkclaw-openclaw",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "DLinkClaw OpenClaw channel plugin — 朵联 OpenClaw 接入通道",
5
5
  "keywords": [
6
6
  "DLinkClaw",
@@ -439,21 +439,46 @@ export class ClawServices extends EventEmitter {
439
439
  }
440
440
  async handleAgentCreate(params) {
441
441
  const workspace_path = getOpenclawPath('workspace', params.id.toLowerCase().replace(/\s+/g, '-'));
442
+ const provider = params.provider ?? '';
443
+ // 2026-09-18:新版 agents.create 直接支持 model,这里一步写入(不再依赖 update 补写)
442
444
  const createParams = {
443
445
  name: params.id,
444
446
  workspace: workspace_path,
445
447
  emoji: params.emoji,
446
- avatar: (params.avatar && params.avatar.length > 0) ? this.options.baseUrl + params.avatar : undefined
447
- };
448
- const result = await this.client.createAgent(createParams);
449
- const provider = params.provider ?? '';
450
- const udpateParams = {
451
- agentId: result.agentId,
452
- name: params.name,
453
- workspace: workspace_path,
448
+ avatar: (params.avatar && params.avatar.length > 0) ? this.options.baseUrl + params.avatar : undefined,
454
449
  model: provider.length > 0 ? `${provider}/${params.model}` : params.model,
455
450
  };
456
- await this.client?.updateAgent(udpateParams);
451
+ const result = await this.client.createAgent(createParams);
452
+ // 2026-09-18 修复(石头哥报:首次点击创建失败,且 name 未写入 openclaw.json):
453
+ // agents.create 后网关是「异步热加载配置」的(日志:create 186ms 成功,紧跟的
454
+ // agents.update 报 agent "xiaoha" not found,1 秒后 config hot reload applied)。
455
+ // 这里改用「update 快速失败重试」:agents.update 对未就绪 agent 是 2ms 快速返回 not found
456
+ // (ws-client.send 在 WS 未连接时也快速抛错),不会挂起;热加载完成后下一次即成功。
457
+ // 避免原 waitAgentReady 用 listAgents 轮询导致客户端 loading 超时的问题。
458
+ const MAX_UPDATE_RETRY = 10;
459
+ const UPDATE_RETRY_MS = 500;
460
+ let nameWritten = false;
461
+ for (let i = 0; i < MAX_UPDATE_RETRY && !nameWritten; i++) {
462
+ try {
463
+ const up = await this.client.updateAgent({
464
+ agentId: result.agentId,
465
+ name: params.name,
466
+ workspace: workspace_path,
467
+ });
468
+ if (up?.ok) {
469
+ nameWritten = true;
470
+ }
471
+ }
472
+ catch {
473
+ // not found / WS 未连接 → 快速失败,等待热加载后重试
474
+ }
475
+ if (!nameWritten) {
476
+ await new Promise((r) => setTimeout(r, UPDATE_RETRY_MS));
477
+ }
478
+ }
479
+ if (!nameWritten) {
480
+ this.log(`⚠ agent ${result.agentId} 显示名写入超时(${MAX_UPDATE_RETRY * UPDATE_RETRY_MS}ms),可稍后在 openclaw.json 修改 name`, 'warn');
481
+ }
457
482
  const sessionKey = `agent:${params.agentId}:${this.options.channelId}:direct:${params.userId.toLowerCase()}`;
458
483
  await this.handleUpdateSessionModel({
459
484
  sessionKey,
@@ -74,6 +74,7 @@ export interface AgentCreateParams {
74
74
  workspace?: string;
75
75
  emoji?: string;
76
76
  avatar?: string;
77
+ model?: string;
77
78
  }
78
79
  export interface AgentCreateResponse {
79
80
  ok: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dlinkclaw-openclaw",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "DLinkClaw OpenClaw channel plugin — 朵联 OpenClaw 接入通道",
5
5
  "keywords": [
6
6
  "DLinkClaw",
@@ -92,4 +92,4 @@
92
92
  "bugs": {
93
93
  "url": "https://github.com/dlinkclaw/dlinkclaw-openclaw-channel/issues"
94
94
  }
95
- }
95
+ }