@honor-claw/yoyo 0.0.1-beta.2 → 0.0.1-beta.21

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 (79) hide show
  1. package/index.ts +2 -2
  2. package/openclaw.plugin.json +7 -0
  3. package/package.json +20 -20
  4. package/skills/search/SKILL.md +182 -0
  5. package/skills/search/scripts/search.sh +69 -0
  6. package/skills/yoyo-control/SKILL.md +105 -120
  7. package/skills/yoyo-control/references/alarm-create.md +473 -0
  8. package/skills/yoyo-control/references/app-close.md +183 -0
  9. package/skills/yoyo-control/references/app-open.md +178 -0
  10. package/skills/yoyo-control/references/call-phone.md +250 -0
  11. package/skills/yoyo-control/references/capture-screenshot.md +205 -54
  12. package/skills/yoyo-control/references/contact-search.md +235 -0
  13. package/skills/yoyo-control/references/hotspot.md +208 -0
  14. package/skills/yoyo-control/references/local-search.md +224 -15
  15. package/skills/yoyo-control/references/message-send.md +246 -0
  16. package/skills/yoyo-control/references/mobile-data.md +248 -0
  17. package/skills/yoyo-control/references/no-disturb.md +239 -0
  18. package/skills/yoyo-control/references/quiet-mode.md +228 -0
  19. package/skills/yoyo-control/references/ringing-mode.md +223 -0
  20. package/skills/yoyo-control/references/screen-record.md +220 -0
  21. package/skills/yoyo-control/references/vibration-mode.md +235 -0
  22. package/skills/yoyo-control/references/volume-operate.md +274 -0
  23. package/skills/yoyo-control/scripts/invoke.js +33 -111
  24. package/src/agent/copy-templates.ts +56 -0
  25. package/src/agent/index.ts +3 -0
  26. package/src/agent/templates/AGENTS.md +223 -0
  27. package/src/apis/claw-cloud.ts +70 -23
  28. package/src/apis/honor-auth.ts +20 -10
  29. package/src/apis/types.ts +24 -1
  30. package/src/cloud-channel/channel.ts +245 -58
  31. package/src/cloud-channel/client.ts +87 -12
  32. package/src/cloud-channel/types.ts +30 -0
  33. package/src/commands/env/impl.ts +58 -0
  34. package/src/commands/env/index.ts +1 -0
  35. package/src/commands/index.ts +11 -1
  36. package/src/commands/login/impl.ts +17 -8
  37. package/src/commands/logout/impl.ts +23 -0
  38. package/src/commands/logout/index.ts +1 -53
  39. package/src/commands/status/index.ts +172 -42
  40. package/src/gateway-client/client.deprecated.ts +1 -1
  41. package/src/gateway-client/client.ts +15 -20
  42. package/src/gateway-client/types.ts +2 -2
  43. package/src/honor-auth/browser.ts +12 -15
  44. package/src/honor-auth/callback-server.ts +3 -6
  45. package/src/honor-auth/cloud.ts +65 -12
  46. package/src/honor-auth/config.ts +25 -17
  47. package/src/honor-auth/index.ts +1 -0
  48. package/src/honor-auth/token-manager.ts +24 -14
  49. package/src/modules/claw-configs/config-manager.ts +211 -11
  50. package/src/modules/claw-configs/hosts.ts +48 -0
  51. package/src/modules/claw-configs/index.ts +1 -0
  52. package/src/modules/claw-configs/types.ts +4 -0
  53. package/src/modules/device/device-info.ts +20 -9
  54. package/src/modules/device/providers/linux.ts +128 -0
  55. package/src/modules/device/providers/macos.ts +123 -0
  56. package/src/modules/device/providers/pad.ts +0 -16
  57. package/src/modules/device/registry.ts +12 -3
  58. package/src/modules/login/impl.ts +38 -16
  59. package/src/runtime.ts +44 -0
  60. package/src/schemas.ts +4 -1
  61. package/src/services/connection/impl.ts +89 -9
  62. package/src/services/connection/status-tracker/events.ts +127 -0
  63. package/src/services/connection/status-tracker/index.ts +31 -0
  64. package/src/services/connection/status-tracker/storage.ts +133 -0
  65. package/src/services/connection/status-tracker/tracker.ts +370 -0
  66. package/src/services/connection/status-tracker/types.ts +131 -0
  67. package/src/types.ts +0 -4
  68. package/src/utils/fs-safe.ts +544 -0
  69. package/src/utils/version.ts +29 -0
  70. package/src/utils/ws.ts +21 -0
  71. package/skills/yoyo-control/references/open-app.md +0 -54
  72. package/skills/yoyo-control/references/phone-call.md +0 -217
  73. package/skills/yoyo-control/references/schedule.md +0 -107
  74. package/skills/yoyo-control/references/screen-recorder.md +0 -67
  75. package/skills/yoyo-control/references/search-contact.md +0 -37
  76. package/skills/yoyo-control/references/send-message.md +0 -155
  77. package/skills/yoyo-control/references/volume.md +0 -536
  78. package/skills/yoyo-control/scripts/README.md +0 -103
  79. package/skills/yoyo-control/scripts/volume-up.json +0 -7
@@ -0,0 +1,178 @@
1
+ ---
2
+ name: app.open
3
+ description: >
4
+ 应用打开工具。用于帮助用户打开指定的 APP 应用,
5
+ 且不涉及任何具体 App 内部操作。
6
+ ---
7
+
8
+ # App Open 应用打开工具
9
+
10
+ ## Tool Command
11
+
12
+ ```bash
13
+ app.open
14
+ ```
15
+
16
+ ## 集成工作流
17
+
18
+ ### app_name_to_pkgName
19
+
20
+ | app | pkgName |
21
+ | :--------- | :----------------------------- |
22
+ | 手机淘宝 | com.taobao.taobao |
23
+ | 支付宝 | com.eg.android.AlipayGphone |
24
+ | 微信 | com.tencent.mm |
25
+ | QQ | com.tencent.mobileqq |
26
+ | 抖音短视频 | com.ss.android.ugc.aweme |
27
+ | 小红书 | com.xingin.xhs |
28
+ | 美团 | com.sankuai.meituan |
29
+ | 美团外卖 | com.sankuai.meituan.takeoutnew |
30
+ | 京东 | com.jingdong.app.mall |
31
+ | 拼多多 | com.xunmeng.pinduoduo |
32
+ | 高德地图 | com.autonavi.minimap |
33
+ | 百度地图 | com.baidu.BaiduMap |
34
+ | 爱奇艺 | com.qiyi.video |
35
+ | 腾讯视频 | com.tencent.qqlive |
36
+ | 微博 | com.sina.weibo |
37
+ | 今日头条 | com.ss.android.article.news |
38
+
39
+ **⚠️ 重要: 打开应用前请遵循以下工作流程**
40
+
41
+ ```
42
+ ┌─────────────────────────────────────────────────────────────┐
43
+ │ Step 1: 检查输入参数 │
44
+ │ - 有应用名称? → 进入 Step 2 │
45
+ │ - 有包名(pkgName)? → 进入 Step 3 │
46
+ │ - 仅有类型描述(appDescription)? → 进入 Step 4 │
47
+ │ - 都没有? → 向用户追问应用名称或包名 │
48
+ │ - 值为 "all"? → 不支持打开所有应用,提示用户 │
49
+ └─────────────────────────────────────────────────────────────┘
50
+
51
+
52
+ ┌─────────────────────────────────────────────────────────────┐
53
+ │ Step 2: 通过应用名称解析包名 │
54
+ │ 调用: app_name_to_pkgName(上文),用App名称去查找App包名 │
55
+ │ 若匹配到多个结果 → 请用户选择 │
56
+ │ 若无匹配结果 → 通知用户并请求提供包名 │
57
+ └─────────────────────────────────────────────────────────────┘
58
+
59
+
60
+ ┌─────────────────────────────────────────────────────────────┐
61
+ │ Step 3: 通过包名解析应用名称 │
62
+ │ 调用: app_name_to_pkgName(上文),用App包名去查找App名称 │
63
+ │ 若匹配到多个结果 → 请用户选择 │
64
+ │ 若无匹配结果 → 通知用户并请求提供应用名称 │
65
+ └─────────────────────────────────────────────────────────────┘
66
+
67
+
68
+ ┌─────────────────────────────────────────────────────────────┐
69
+ │ Step 4: 通过类型描述解析包名 │
70
+ │ 调用: 根据你的理解,基于app类型找到App名称和APP包名 │
71
+ │ 若匹配到多结果 → 请用户选择 │
72
+ │ 若无匹配结果 → 通知用户并请求提供应用名称或包名 │
73
+ └─────────────────────────────────────────────────────────────┘
74
+
75
+
76
+ ┌─────────────────────────────────────────────────────────────┐
77
+ │ Step 5: 执行打开应用 │
78
+ │ 调用: app.open,传入 app, pkgName │
79
+ │ - 根据操作系统选择对应的命令格式 │
80
+ │ - Windows: Cmd 格式(双引号需转义) │
81
+ │ - Linux: Bash 格式(单引号包裹) │
82
+ └─────────────────────────────────────────────────────────────┘
83
+ ```
84
+
85
+ ## 意图分类与参数映射
86
+
87
+ | 用户意图 | 关键词示例 | 参数组合 |
88
+ | :----------------------- | :--------------------------- | :--------------------------------- |
89
+ | **打开指定应用** | 打开/启动/运行 + [应用名] | `app`, `pkgName` |
90
+ | **打开带序号的应用** | 打开 + [序号] + [应用名] | `app`, `pkgName`, `sequence` |
91
+ | **打开带类型描述的应用** | 打开 + [应用名] + [类型描述] | `app`, `pkgName`, `appDescription` |
92
+
93
+ ## 参数定义
94
+
95
+ ```json
96
+ {
97
+ "app": {
98
+ "type": "string",
99
+ "description": "必填参数,应用名称。需要打开的应用名称,若用户指定具体应用,则填写应用名称,若用户明确表示"所有应用",则参数值为 all。"
100
+ },
101
+ "pkgName": {
102
+ "type": "string",
103
+ "description": "必填参数,应用包名。根据集成工作流中 app_name_to_pkgName 的映射表,填写应用包名。"
104
+ },
105
+ "appDescription": {
106
+ "type": "string",
107
+ "description": "类型描述。对 app 的补充描述,无论是否为空,都可以有这个参数,当且仅当 app 为空时才调用 description。示例:办公应用、聊天软件、音乐类应用。"
108
+ }
109
+ }
110
+ ```
111
+
112
+ ### 参数注意事项
113
+
114
+ 1. **app 与 appDescription 的关系**: `appDescription` 是对 `app` 的补充描述,当 `app` 为空时可单独通过 `appDescription` 进行类型匹配
115
+ 2. **不支持打开所有应用**: 当用户要求打开"所有应用"时,应提示该功能暂不支持
116
+ 3. **序号选择**: `sequence` 需保持与用户原始输入一致的表述形式(如"第一"、"倒数第二个"、"3")
117
+ 4. **未找到应用**: 若设备上未找到目标应用,可询问用户是否需要安装
118
+
119
+ ## Query 示例及输出
120
+
121
+ ### 示例1: 打开指定应用
122
+
123
+ **用户输入**: "打开微信"
124
+
125
+ **工具**: "app.open"
126
+
127
+ **JSON 参数**:
128
+
129
+ ```json
130
+ {
131
+ "app": "微信",
132
+ "pkgName": "com.tencent.mm"
133
+ }
134
+ ```
135
+
136
+ **Windows (Cmd) 执行命令**:
137
+
138
+ ```bash
139
+ openclaw nodes invoke --node <ID> --command app.open --params "{\"app\":\"微信\",\"pkgName\":\"com.tencent.mm\"}"
140
+ ```
141
+
142
+ **Linux (Bash) 执行命令**:
143
+
144
+ ```bash
145
+ openclaw nodes invoke --node <ID> --command app.open --params '{"app":"微信", "pkgName":"com.tencent.mm"}'
146
+ ```
147
+
148
+ ---
149
+
150
+ ### 示例2: 通过类型描述打开应用
151
+
152
+ **用户输入**: "打开生活类软件"
153
+
154
+ **工具**: "app.open"
155
+
156
+ **JSON 参数**:
157
+
158
+ ```json
159
+ {
160
+ "app": "支付宝",
161
+ "pkgName": "com.eg.android.AlipayGphone",
162
+ "appDescription": "生活"
163
+ }
164
+ ```
165
+
166
+ **Windows (Cmd) 执行命令**:
167
+
168
+ ```bash
169
+ openclaw nodes invoke --node <ID> --command app.open --params "{\"app\":\"支付宝\", \"pkgName\":\"com.eg.android.AlipayGphone\", Description\":\"生活\"}"
170
+ ```
171
+
172
+ **Linux (Bash) 执行命令**:
173
+
174
+ ```bash
175
+ openclaw nodes invoke --node <ID> --command app.open --params '{"app":"支付宝","pkgName":"com.eg.android.AlipayGphone","Description":"生活"}'
176
+ ```
177
+
178
+ ---
@@ -0,0 +1,250 @@
1
+ ---
2
+ name: call
3
+ description: >
4
+ 智能电话拨打与管理工具。提供全面的电话呼叫功能,
5
+ 支持通过姓名、电话号码或黄页服务发起呼叫;
6
+ 支持指定拨号使用的SIM卡(移动/联通/电信/卡槽);
7
+ 具备重拨最后号码、回拨已接听来电、回拨未接听来电及通用回拨功能;
8
+ 能够处理联系人重名消歧、多号码选择及二次确认流程。
9
+ ---
10
+
11
+ # Call 电话拨打
12
+
13
+ ## Tool Command
14
+
15
+ ```bash
16
+ call.phone
17
+ ```
18
+
19
+ ## 集成工作流
20
+
21
+ ### Step 1: 意图解析与参数组装
22
+
23
+ ```
24
+ ┌─────────────────────────────────────────────────────────────┐
25
+ │ 意图识别与参数提取 │
26
+ │ - 识别操作类型: 打电话/重拨/回拨 │
27
+ │ - 识别回拨子类型: 已接听/未接听/通用回拨 │
28
+ │ - 识别联系人: 自然人名、昵称、机构/部门名称 │
29
+ │ - 识别号码: 完整电话号码、黄页服务号码 │
30
+ │ - 识别卡槽: 卡1/卡2/移动/联通/电信等 │
31
+ │ - 识别设备: 手机/固定电话等 │
32
+ │ - 识别选择序号: 多候选时的列表序号 │
33
+ └─────────────────────────────────────────────────────────────┘
34
+
35
+ ┌─────────────────────────────────────────────────────────────┐
36
+ │ 消歧与槽位填充 │
37
+ │ - 多联系人匹配时,返回候选列表等待用户选择序号 │
38
+ │ - 联系人存在,电话号码缺失时,调用 search-contact 工具查找联系人号码 │
39
+ │ - 多SIM卡设备未指定卡槽时,需向用户确认使用哪张卡 │
40
+ │ - 黄页服务需确认具体机构/部门分支 │
41
+ │ - 号码归属地/运营商信息辅助确认 │
42
+ └─────────────────────────────────────────────────────────────┘
43
+
44
+ ┌─────────────────────────────────────────────────────────────┐
45
+ │ 生成工具调用 │
46
+ │ - 组装 actionType, recallType 及可选参数 │
47
+ │ - 区分自然人联系人与黄页机构联系人 │
48
+ │ - 生成平台特定的命令格式 │
49
+ └─────────────────────────────────────────────────────────────┘
50
+ ```
51
+
52
+ ### Step 2: 执行调用
53
+
54
+ - 根据操作系统选择对应的命令格式
55
+ - Windows: Cmd 格式(双引号需转义)
56
+ - Linux: Bash 格式(单引号包裹)
57
+
58
+ ## 参数定义
59
+
60
+ ```json
61
+ {
62
+ "actionType": {
63
+ "type": "string",
64
+ "enum": ["打电话", "重拨", "回拨"],
65
+ "description": "必填参数,拨打业务类型。打电话:主动发起呼叫;重拨:重新拨打上一次通话号码;回拨:对历史通话记录进行回拨"
66
+ },
67
+ "recallType": {
68
+ "type": "string",
69
+ "enum": ["回拨已接听来电", "回拨未接听来电", "回拨电话"],
70
+ "description": "回拨类型,仅在actionType为'回拨'时有值。用于区分回拨目标的通话记录类型"
71
+ },
72
+ "deviceType": {
73
+ "type": "string",
74
+ "description": "设备类型,如:手机、固定电话等"
75
+ },
76
+ "phoneCard": {
77
+ "type": "string",
78
+ "description": "电话卡选择,如:移动、联通、电信、卡1、卡2等。用于多卡设备指定拨号SIM卡"
79
+ },
80
+ "phoneNumber": {
81
+ "type": "string",
82
+ "description": "必填参数,完整的电话号码,数字格式"
83
+ },
84
+ "contact": {
85
+ "type": "string",
86
+ "description": "泛化的'联系人'概念,可为自然人名/昵称(如:张三、王总),或非自然实体(机构、部门、服务名称,如:招生办、物业客服)"
87
+ },
88
+ "sequence": {
89
+ "type": "string",
90
+ "description": "列表序号。用于多候选项场景(联系人重名、同一联系人多号码、黄页多分支)时的选择。应与系统返回的候选列表序号一致;目标唯一时可省略"
91
+ },
92
+ "nameContact": {
93
+ "type": "string",
94
+ "description": "明确标识contact为自然人名或昵称,强调'人'的身份,不包含机构或部门。用于区分自然人联系人与机构联系人"
95
+ },
96
+ "yellowPageContact": {
97
+ "type": "string",
98
+ "description": "黄页目录名称,涉及公共服务/企业客服等非私人联系人时使用(如:银行客服、快递客服、医院挂号)。用于限定检索范围或指向黄页条目"
99
+ }
100
+ }
101
+ ```
102
+
103
+ ### 参数注意事项
104
+
105
+ 1. **消歧逻辑**: 当 contact 对应多个联系人或号码时,工具不应直接执行,而应返回 resultCode: 101 并携带 contactCardInformation 供用户选择。
106
+ 2. **回拨类型**: 若用户仅说“回拨”,未指明是未接还是已接,recallType 默认为 回拨电话(通常指最近的一条来电记录,具体策略依系统而定)。
107
+
108
+ ## Query 示例及输出
109
+
110
+ ### 示例 1: 拨打指定号码
111
+
112
+ **用户输入**: "拨打15651621029"
113
+
114
+ **工具**: "call"
115
+
116
+ **JSON 参数**:
117
+
118
+ ```json
119
+ {
120
+ "actionType": "打电话",
121
+ "phoneNumber": "15651621029"
122
+ }
123
+ ```
124
+
125
+ **Windows (Cmd) 执行命令**:
126
+
127
+ ```bash
128
+ openclaw nodes invoke --node <ID> --command call.phone --params "{\"actionType\":\"打电话\",\"phoneNumber\":\"15651621029\"}"
129
+ ```
130
+
131
+ **Linux (Bash) 执行命令**:
132
+
133
+ ```bash
134
+ openclaw nodes invoke --node <ID> --command call.phone --params '{"actionType":"打电话","phoneNumber":"15651621029"}'
135
+ ```
136
+
137
+ ---
138
+
139
+ ### 示例 2: 拨打联系人
140
+
141
+ **用户输入**: "打电话给张三"
142
+
143
+ **JSON 参数**:
144
+
145
+ ```json
146
+ {
147
+ "actionType": "打电话",
148
+ "phoneNumber": "15651621029",
149
+ "contact": "张三",
150
+ "nameContact": "张三"
151
+ }
152
+ ```
153
+
154
+ **Windows (Cmd) 执行命令**:
155
+
156
+ ```bash
157
+ openclaw nodes invoke --node <ID> --command call.phone --params "{\"actionType\":\"打电话\",\"phoneNumber\":\"15651621029\",\"contact\":\"张三\",\"nameContact\":\"张三\"}"
158
+ ```
159
+
160
+ **Linux (Bash) 执行命令**:
161
+
162
+ ```bash
163
+ openclaw nodes invoke --node <ID> --command call.phone --params '{"actionType":"打电话","contact":"张三","nameContact":"张三"}'
164
+ ```
165
+
166
+ ---
167
+
168
+ ### 示例 3: 使用指定SIM卡拨打
169
+
170
+ **用户输入**: "用移动手机卡打电话给于洋"
171
+
172
+ **JSON 参数**:
173
+
174
+ ```json
175
+ {
176
+ "actionType": "打电话",
177
+ "phoneNumber": "15651621029",
178
+ "contact": "于洋",
179
+ "nameContact": "于洋",
180
+ "phoneCard": "移动手机卡"
181
+ }
182
+ ```
183
+
184
+ **Windows (Cmd) 执行命令**:
185
+
186
+ ```bash
187
+ openclaw nodes invoke --node <ID> --command call.phone --params "{\"actionType\":\"打电话\",\"phoneNumber\":\"15651621029\",\"contact\":\"于洋\",\"nameContact\":\"于洋\",\"phoneCard\":\"移动手机卡\"}"
188
+ ```
189
+
190
+ **Linux (Bash) 执行命令**:
191
+
192
+ ```bash
193
+ openclaw nodes invoke --node <ID> --command call.phone --params '{"actionType":"打电话","phoneNumber":"15651621029","contact":"于洋","nameContact":"于洋","phoneCard":"移动手机卡"}'
194
+ ```
195
+
196
+ ---
197
+
198
+ ### 示例 4: 重拨
199
+
200
+ **用户输入**: "重拨"
201
+
202
+ **JSON 参数**:
203
+
204
+ ```json
205
+ {
206
+ "actionType": "重拨"
207
+ }
208
+ ```
209
+
210
+ **Windows (Cmd) 执行命令**:
211
+
212
+ ```bash
213
+ openclaw nodes invoke --node <ID> --command call.phone --params "{\"actionType\":\"重拨\"}"
214
+ ```
215
+
216
+ **Linux (Bash) 执行命令**:
217
+
218
+ ```bash
219
+ openclaw nodes invoke --node <ID> --command call.phone --params '{"actionType":"重拨"}'
220
+ ```
221
+
222
+ ---
223
+
224
+ ### 示例 5: 回拨未接来电
225
+
226
+ **用户输入**: "回拨未接来电"
227
+
228
+ **JSON 参数**:
229
+
230
+ ```json
231
+ {
232
+ "actionType": "回拨",
233
+ "phoneNumber": "15651621029",
234
+ "recallType": "回拨未接听来电"
235
+ }
236
+ ```
237
+
238
+ **Windows (Cmd) 执行命令**:
239
+
240
+ ```bash
241
+ openclaw nodes invoke --node <ID> --command call.phone --params "{\"actionType\":\"回拨\",\"phoneNumber\":\"15651621029\",\"recallType\":\"回拨未接听来电\"}"
242
+ ```
243
+
244
+ **Linux (Bash) 执行命令**:
245
+
246
+ ```bash
247
+ openclaw nodes invoke --node <ID> --command call.phone --params '{"actionType":"回拨","phoneNumber":"15651621029","recallType":"回拨未接听来电"}'
248
+ ```
249
+
250
+ ---