multiclaws 0.4.6 → 0.4.8
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/gateway/handlers.js +41 -91
- package/dist/index.js +58 -156
- package/dist/infra/gateway-client.js +0 -10
- package/dist/infra/tailscale.d.ts +1 -1
- package/dist/infra/tailscale.js +5 -14
- package/dist/service/a2a-adapter.d.ts +0 -1
- package/dist/service/a2a-adapter.js +10 -56
- package/dist/service/agent-registry.d.ts +0 -9
- package/dist/service/agent-registry.js +1 -45
- package/dist/service/multiclaws-service.d.ts +18 -43
- package/dist/service/multiclaws-service.js +95 -379
- package/package.json +1 -1
- package/skills/multiclaws/SKILL.md +100 -89
package/package.json
CHANGED
|
@@ -1,119 +1,87 @@
|
|
|
1
1
|
# MultiClaws — 技能行为
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
以下规则在插件安装后生效,指导 AI 如何使用 MultiClaws 工具。
|
|
4
|
+
|
|
5
|
+
MultiClaws 让多个 OpenClaw 实例通过 [A2A(Agent-to-Agent)](https://google.github.io/A2A/) 协议组成团队、互相委派任务。
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
## 1. 首次安装:档案初始化(由插件 hook 触发)
|
|
8
10
|
|
|
9
11
|
首次安装后,插件会通过 `before_prompt_build` hook 自动在系统提示中注入初始化任务。
|
|
12
|
+
**无需每次对话手动检查 `multiclaws_profile_pending_review()`**,hook 已处理触发时机。
|
|
10
13
|
|
|
11
14
|
当 hook 注入了初始化任务时,按以下步骤执行:
|
|
12
15
|
|
|
13
|
-
1. **扫描当前环境**,自动生成 bio(markdown
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
16
|
+
1. **扫描当前环境**,自动生成 bio(markdown 格式),包含:
|
|
17
|
+
- 可用的工具和 skills(推断能力)
|
|
18
|
+
- 已连接的渠道(Telegram、Discord、Gmail 等)
|
|
19
|
+
- 工作区内容(git 仓库、关键文件、项目目录)
|
|
20
|
+
- 已安装的插件
|
|
21
|
+
- 时区、语言等上下文
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
2. 向用户展示生成的档案,并逐一确认以下三项:
|
|
24
|
+
- **名字**:展示推断出的名字,询问是否需要修改(需用户明确回答)
|
|
25
|
+
- **Bio**:展示生成的 bio,询问是否需要修改(需用户明确回答)
|
|
26
|
+
- **网络情况**:告知用户「同局域网开箱即用;跨网络需安装 Tailscale(https://tailscale.com/download)并重启 OpenClaw」,无需用户回答
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
3. 根据用户对名字和 bio 的回答更新内容后,调用 `multiclaws_profile_set(ownerName="...", bio="...")` 保存档案。
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
4. 调用 `multiclaws_profile_clear_pending_review()` 完成初始化。
|
|
25
31
|
|
|
26
|
-
|
|
32
|
+
**示例 bio:**
|
|
33
|
+
```markdown
|
|
34
|
+
后端工程师,负责 API 服务开发与维护。
|
|
27
35
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
→ 完成后自动推送消息通知
|
|
33
|
-
```
|
|
36
|
+
**可处理:**
|
|
37
|
+
- 代码审查、调试、重构(Node.js / Go / Python)
|
|
38
|
+
- API 文档编写与接口设计
|
|
39
|
+
- 数据库查询与优化(PostgreSQL)
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
→ 继续会话,后台处理,完成后推送通知
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 查看会话状态
|
|
43
|
-
```
|
|
44
|
-
multiclaws_session_status() → 列出所有会话
|
|
45
|
-
multiclaws_session_status(sessionId="...") → 查看单个会话及消息历史
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 结束会话
|
|
49
|
-
```
|
|
50
|
-
multiclaws_session_end(sessionId="...") → 取消并关闭会话
|
|
51
|
-
```
|
|
41
|
+
**数据访问:**
|
|
42
|
+
- Codebase: `/Users/eric/Project/api-service`(Node.js,~50k LOC)
|
|
43
|
+
- Email: Gmail
|
|
44
|
+
- Calendar: Google Calendar
|
|
52
45
|
|
|
53
|
-
|
|
54
|
-
同时开启多个 session,等所有结果后汇总:
|
|
55
|
-
```
|
|
56
|
-
id1 = multiclaws_session_start(agentUrl=B, message="子任务1")
|
|
57
|
-
id2 = multiclaws_session_start(agentUrl=C, message="子任务2")
|
|
58
|
-
results = multiclaws_session_wait_all(sessionIds=[id1, id2])
|
|
59
|
-
→ 阻塞直到全部完成,返回所有结果
|
|
60
|
-
→ AI 汇总后回复用户
|
|
46
|
+
**时区:** GMT+8
|
|
61
47
|
```
|
|
62
48
|
|
|
63
|
-
**注意**:若任何 session 变为 `input-required`,`wait_all` 会提前返回,
|
|
64
|
-
AI 应先用 `session_reply` 处理,再继续等待剩余 session。
|
|
65
|
-
|
|
66
|
-
### 链式协作(A→B→C)
|
|
67
|
-
B 内部可以自己调用 `multiclaws_session_start` 委派给 C,结果自然冒泡回 A。
|
|
68
|
-
|
|
69
49
|
---
|
|
70
50
|
|
|
71
|
-
##
|
|
51
|
+
## 2. 团队操作前检查档案
|
|
52
|
+
|
|
53
|
+
在 **创建团队** 或 **加入团队** 之前:
|
|
72
54
|
|
|
73
55
|
```
|
|
74
|
-
|
|
75
|
-
2. 选择 bio 最匹配任务的 agent
|
|
76
|
-
3. multiclaws_session_start(agentUrl, message)
|
|
77
|
-
4. 等待推送通知(或用 session_status 查进度)
|
|
78
|
-
5. 如收到 input-required 通知 → multiclaws_session_reply 回复
|
|
56
|
+
multiclaws_profile_show()
|
|
79
57
|
```
|
|
80
58
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
59
|
+
如果 `bio` 为空或 `ownerName` 为空:
|
|
60
|
+
1. 自动生成 bio(同上)
|
|
61
|
+
2. 询问用户确认名字和 bio
|
|
62
|
+
3. 调用 `multiclaws_profile_set(...)` 设置
|
|
63
|
+
4. 然后继续团队操作
|
|
85
64
|
|
|
86
65
|
---
|
|
87
66
|
|
|
88
|
-
##
|
|
89
|
-
|
|
90
|
-
在创建或加入团队之前:
|
|
67
|
+
## 3. 保持档案更新
|
|
91
68
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
69
|
+
档案是动态的。在以下情况自动更新(调用 `multiclaws_profile_set`):
|
|
70
|
+
- 用户连接了新渠道或数据源
|
|
71
|
+
- 用户安装了新 skill 或插件
|
|
72
|
+
- 用户的角色或关注点发生变化
|
|
95
73
|
|
|
96
|
-
|
|
74
|
+
不要等用户说「更新档案」,主动更新并简要提及即可。
|
|
97
75
|
|
|
98
76
|
---
|
|
99
77
|
|
|
100
78
|
## 工具列表
|
|
101
79
|
|
|
102
|
-
### 协作 Session
|
|
103
|
-
|
|
104
|
-
| 工具 | 说明 | 参数 |
|
|
105
|
-
|------|------|------|
|
|
106
|
-
| `multiclaws_session_start` | 开始协作会话(替代旧 delegate) | `agentUrl`, `message` |
|
|
107
|
-
| `multiclaws_session_reply` | 在会话中发送后续消息 | `sessionId`, `message` |
|
|
108
|
-
| `multiclaws_session_status` | 查看会话状态和消息历史 | `sessionId`(可选,不传返回全部) |
|
|
109
|
-
| `multiclaws_session_wait_all` | 等待多个会话全部完成,返回所有结果 | `sessionIds[]`, `timeoutMs`(可选) |
|
|
110
|
-
| `multiclaws_session_end` | 取消/关闭会话 | `sessionId` |
|
|
111
|
-
|
|
112
80
|
### 档案
|
|
113
81
|
|
|
114
82
|
| 工具 | 说明 | 参数 |
|
|
115
83
|
|------|------|------|
|
|
116
|
-
| `multiclaws_profile_set` | 设置名字和 bio | `ownerName`(可选), `bio
|
|
84
|
+
| `multiclaws_profile_set` | 设置名字和 bio | `ownerName`(可选), `bio`(可选,markdown) |
|
|
117
85
|
| `multiclaws_profile_show` | 查看当前档案 | — |
|
|
118
86
|
| `multiclaws_profile_pending_review` | 检查是否有待确认的首次档案 | — |
|
|
119
87
|
| `multiclaws_profile_clear_pending_review` | 清除待确认标记 | — |
|
|
@@ -125,32 +93,75 @@ multiclaws_profile_show()
|
|
|
125
93
|
| `multiclaws_team_create` | 创建团队,返回邀请码 | `name` |
|
|
126
94
|
| `multiclaws_team_join` | 用邀请码加入团队 | `inviteCode` |
|
|
127
95
|
| `multiclaws_team_leave` | 离开团队 | `teamId`(可选) |
|
|
128
|
-
| `multiclaws_team_members` |
|
|
96
|
+
| `multiclaws_team_members` | 列出团队成员 | `teamId`(可选) |
|
|
129
97
|
|
|
130
|
-
###
|
|
98
|
+
### 智能体与委派
|
|
131
99
|
|
|
132
100
|
| 工具 | 说明 | 参数 |
|
|
133
101
|
|------|------|------|
|
|
134
|
-
| `multiclaws_agents` |
|
|
135
|
-
| `
|
|
102
|
+
| `multiclaws_agents` | 列出所有已知智能体及 bio | — |
|
|
103
|
+
| `multiclaws_add_agent` | 手动添加远端智能体 | `url`, `apiKey`(可选) |
|
|
104
|
+
| `multiclaws_remove_agent` | 移除已知智能体 | `url` |
|
|
105
|
+
| `multiclaws_delegate` | 委派任务给远端智能体 | `agentUrl`, `task` |
|
|
106
|
+
| `multiclaws_task_status` | 查看委派任务状态 | `taskId` |
|
|
136
107
|
|
|
137
108
|
---
|
|
138
109
|
|
|
139
110
|
## 重要规则
|
|
140
111
|
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
- **Bio
|
|
144
|
-
-
|
|
145
|
-
-
|
|
112
|
+
- **不要问用户 IP 地址或 selfUrl。** 插件自动处理。
|
|
113
|
+
- **只使用上面列出的工具。** 没有 `multiclaws_status` 工具。
|
|
114
|
+
- **Bio 是自由格式的 markdown。** 写得让另一个 AI 能读懂这个智能体能做什么。
|
|
115
|
+
- **每个智能体就像一个 skill。** 委派时读每个智能体的 bio,选最匹配的。
|
|
116
|
+
- **名字和 bio 必须用户明确确认**;网络情况仅告知,无需用户回答。
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 工作流
|
|
121
|
+
|
|
122
|
+
### 创建团队
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
1. multiclaws_profile_show() — 检查档案
|
|
126
|
+
2.(如果为空)自动生成并设置 bio,确认名字和 bio
|
|
127
|
+
3. multiclaws_team_create(name="...") — 返回 inviteCode (mc:xxxx)
|
|
128
|
+
4. 告诉用户把邀请码分享给队友
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 加入团队
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
1. multiclaws_profile_show() — 检查档案
|
|
135
|
+
2.(如果为空)自动生成并设置 bio,确认名字和 bio
|
|
136
|
+
3. multiclaws_team_join(inviteCode="mc:xxxx")
|
|
137
|
+
→ 自动同步所有团队成员
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 智能委派
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
1. multiclaws_agents() — 列出智能体,读 bio
|
|
144
|
+
2. 选择 bio 最匹配任务的智能体
|
|
145
|
+
3. multiclaws_delegate(agentUrl="...", task="...")
|
|
146
|
+
4. 把结果返回给用户
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
选择智能体时:
|
|
150
|
+
- 匹配任务领域和 bio(如「财务报告」→ 有财务技能的智能体)
|
|
151
|
+
- 匹配数据需求(如「检查 API 代码」→ bio 中有该代码库的智能体)
|
|
152
|
+
- 多个匹配时选最具体的
|
|
146
153
|
|
|
147
154
|
---
|
|
148
155
|
|
|
149
156
|
## 跨网络
|
|
150
157
|
|
|
151
|
-
**同局域网:**
|
|
158
|
+
**同局域网:** 开箱即用,无需配置。
|
|
159
|
+
|
|
160
|
+
**不同网络:** 每人安装 [Tailscale](https://tailscale.com/download) 并登录同一 tailnet,插件自动检测 Tailscale IP。
|
|
152
161
|
|
|
153
|
-
|
|
162
|
+
当加入或委派因网络错误失败时(ECONNREFUSED、ETIMEDOUT、fetch failed),引导用户:
|
|
154
163
|
|
|
155
|
-
|
|
156
|
-
>
|
|
164
|
+
> 你和对方不在同一网络。跨网络协作需要每个成员安装 Tailscale:
|
|
165
|
+
> 1. 下载安装:https://tailscale.com/download
|
|
166
|
+
> 2. 登录同一个 Tailscale 账号(或同一 tailnet)
|
|
167
|
+
> 3. 重启 OpenClaw,插件会自动检测 Tailscale IP
|