@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
@@ -1,66 +1,217 @@
1
- # capture_screenshot 截屏工具使用说明
1
+ ---
2
+ name: capture-screenshot
3
+ description: >
4
+ 截屏功能管理与触发工具。提供对截屏功能的管理与触发能力,
5
+ 支持将当前手机屏幕内容以图片的形式保存,
6
+ 包括普通截屏和滚动截屏等操作。
7
+ ---
8
+
9
+ # Capture Screenshot 截屏管理
2
10
 
3
11
  ## Tool Command
4
12
 
5
13
  ```bash
6
- capture.shot
14
+ capture-screenshot
7
15
  ```
8
16
 
9
- ## Tool Parameters and Examples
17
+ ## 集成工作流
18
+
19
+ ### Step 1: 意图解析与参数组装
20
+
21
+ ```
22
+ ┌─────────────────────────────────────────────────────────────┐
23
+ │ 意图识别与参数提取 │
24
+ │ - 识别操作类型: 截屏 / 滚动截屏 │
25
+ │ - 提取修饰词: 应用名称 │
26
+ │ - 特殊处理: "保存屏幕/屏幕截图/截图" → 映射为截屏 │
27
+ │ - 特殊处理: "长截图/滚动截图/长图" → 映射为滚动截屏 │
28
+ └─────────────────────────────────────────────────────────────┘
29
+
30
+ ┌─────────────────────────────────────────────────────────────┐
31
+ │ 消歧与槽位填充 │
32
+ │ - 未指定截屏类型时,默认使用普通截屏 │
33
+ │ - 应用级操作需验证应用名称有效性 │
34
+ └─────────────────────────────────────────────────────────────┘
35
+
36
+ ┌─────────────────────────────────────────────────────────────┐
37
+ │ 生成工具调用 │
38
+ │ - 组装 actionType 及可选参数(app) │
39
+ │ - 生成平台特定的命令格式 │
40
+ └─────────────────────────────────────────────────────────────┘
41
+ ```
42
+
43
+ ### Step 2: 执行调用
44
+
45
+ - 根据操作系统选择对应的命令格式
46
+ - Windows: Cmd 格式(双引号需转义)
47
+ - Linux: Bash 格式(单引号包裹)
48
+
49
+ ## 意图分类与参数映射
50
+
51
+ | 用户意图 | 关键词示例 | actionType | 可选参数 |
52
+ | :----------- | :---------------------------- | :--------- | :------- |
53
+ | **普通截屏** | 截屏/截图/保存屏幕/屏幕截图 | `截屏` | `app` |
54
+ | **滚动截屏** | 滚动截屏/长截图/滚动截图/长图 | `滚动截屏` | `app` |
55
+
56
+ ## 参数定义
10
57
 
11
58
  ```json
12
59
  {
13
- "name": "capture_screenshot",
14
- "description": "该工具提供对截屏功能(将当前手机屏幕内容以图片的形式保存)的管理与触发能力,支持截屏和滚动截屏等操作。",
15
- "parameters": {
16
- "actionType": {
17
- "type": "string",
18
- "enum": ["截屏", "滚动截屏"],
19
- "description": "截屏相关操作的动作类型,用于明确本次指令的主要行为。当需要对当前屏幕内容进行一次性截图保存时使用截屏;当需要对可上下滚动的长页面内容进行连续截图并合成为长图时使用滚动截屏。"
20
- },
21
- "app": {
22
- "type": "string",
23
- "description": "指定需要进行截屏操作的应用名称。当明确要求对某个特定应用界面进行截图时填写,用于限定截屏作用范围。"
24
- }
60
+ "actionType": {
61
+ "type": "string",
62
+ "enum": ["截屏", "滚动截屏"],
63
+ "description": "截屏相关操作的动作类型,用于明确本次指令的主要行为。当需要对当前屏幕内容进行一次性截图保存时使用截屏;当需要对可上下滚动的长页面内容进行连续截图并合成为长图时使用滚动截屏。"
25
64
  },
26
- "required": [],
27
- "examples": [
28
- {
29
- "query": "截屏",
30
- "arguments": {
31
- "actionType": "截屏"
32
- }
33
- },
34
- {
35
- "query": "滚动截屏",
36
- "arguments": {
37
- "actionType": "滚动截屏"
38
- }
39
- },
40
- {
41
- "query": "立刻保存手机屏幕",
42
- "arguments": {
43
- "actionType": "截屏"
44
- }
45
- },
46
- {
47
- "query": "我想要滚动截屏",
48
- "arguments": {
49
- "actionType": "滚动截屏"
50
- }
51
- },
52
- {
53
- "query": "请将屏幕内容保存为图片",
54
- "arguments": {
55
- "actionType": "截屏"
56
- }
57
- },
58
- {
59
- "query": "我需要当前手机屏幕的图片",
60
- "arguments": {
61
- "actionType": "截屏"
62
- }
63
- }
64
- ]
65
+ "app": {
66
+ "type": "string",
67
+ "description": "指定需要进行截屏操作的应用名称。当明确要求对某个特定应用界面进行截图时填写,用于限定截屏作用范围。"
68
+ }
69
+ }
70
+ ```
71
+
72
+ ### 参数注意事项
73
+
74
+ 1. **截屏类型默认**: 未指定截屏类型时,默认使用普通截屏
75
+ 2. **同义词映射**: "截图"、"保存屏幕"、"屏幕截图"等表述均应映射为截屏操作;"长截图"、"滚动截图"、"长图"等表述均应映射为滚动截屏操作
76
+
77
+ ## Query 示例及输出
78
+
79
+ ### 示例 1: 普通截屏
80
+
81
+ **用户输入**: "截屏"
82
+
83
+ **工具**: "capture-screenshot"
84
+
85
+ **JSON 参数**:
86
+
87
+ ```json
88
+ {
89
+ "actionType": "截屏"
90
+ }
91
+ ```
92
+
93
+ **Windows (Cmd) 执行命令**:
94
+
95
+ ```bash
96
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params "{\"actionType\":\"截屏\"}"
97
+ ```
98
+
99
+ **Linux (Bash) 执行命令**:
100
+
101
+ ```bash
102
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params '{"actionType":"截屏"}'
103
+ ```
104
+
105
+ ---
106
+
107
+ ### 示例 2: 滚动截屏
108
+
109
+ **用户输入**: "滚动截屏"
110
+
111
+ **工具**: "capture-screenshot"
112
+
113
+ **JSON 参数**:
114
+
115
+ ```json
116
+ {
117
+ "actionType": "滚动截屏"
65
118
  }
66
119
  ```
120
+
121
+ **Windows (Cmd) 执行命令**:
122
+
123
+ ```bash
124
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params "{\"actionType\":\"滚动截屏\"}"
125
+ ```
126
+
127
+ **Linux (Bash) 执行命令**:
128
+
129
+ ```bash
130
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params '{"actionType":"滚动截屏"}'
131
+ ```
132
+
133
+ ---
134
+
135
+ ### 示例 3: 口语化保存屏幕
136
+
137
+ **用户输入**: "立刻保存手机屏幕"
138
+
139
+ **工具**: "capture-screenshot"
140
+
141
+ **JSON 参数**:
142
+
143
+ ```json
144
+ {
145
+ "actionType": "截屏"
146
+ }
147
+ ```
148
+
149
+ **Windows (Cmd) 执行命令**:
150
+
151
+ ```bash
152
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params "{\"actionType\":\"截屏\"}"
153
+ ```
154
+
155
+ **Linux (Bash) 执行命令**:
156
+
157
+ ```bash
158
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params '{"actionType":"截屏"}'
159
+ ```
160
+
161
+ ---
162
+
163
+ ### 示例 4: 口语化滚动截屏
164
+
165
+ **用户输入**: "我想要滚动截屏"
166
+
167
+ **工具**: "capture-screenshot"
168
+
169
+ **JSON 参数**:
170
+
171
+ ```json
172
+ {
173
+ "actionType": "滚动截屏"
174
+ }
175
+ ```
176
+
177
+ **Windows (Cmd) 执行命令**:
178
+
179
+ ```bash
180
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params "{\"actionType\":\"滚动截屏\"}"
181
+ ```
182
+
183
+ **Linux (Bash) 执行命令**:
184
+
185
+ ```bash
186
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params '{"actionType":"滚动截屏"}'
187
+ ```
188
+
189
+ ---
190
+
191
+ ### 示例 5: 描述性截屏指令
192
+
193
+ **用户输入**: "请将屏幕内容保存为图片"
194
+
195
+ **工具**: "capture-screenshot"
196
+
197
+ **JSON 参数**:
198
+
199
+ ```json
200
+ {
201
+ "actionType": "截屏"
202
+ }
203
+ ```
204
+
205
+ **Windows (Cmd) 执行命令**:
206
+
207
+ ```bash
208
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params "{\"actionType\":\"截屏\"}"
209
+ ```
210
+
211
+ **Linux (Bash) 执行命令**:
212
+
213
+ ```bash
214
+ openclaw nodes invoke --node <ID> --command capture-screenshot --params '{"actionType":"截屏"}'
215
+ ```
216
+
217
+ ---
@@ -0,0 +1,235 @@
1
+ ---
2
+ name: contact.search
3
+ description: >
4
+ 联系人查找服务工具。提供按姓名、昵称、电话号码检索联系人的能力,
5
+ 支持区分自然人名与机构/黄页条目,可处理模糊匹配、多结果列表展示及序号选择场景。
6
+ ---
7
+
8
+ # Search Contact 联系人查找服务
9
+
10
+ ## Tool Command
11
+
12
+ ```bash
13
+ contact.search
14
+ ```
15
+
16
+ ## 集成工作流
17
+
18
+ ### Step 1: 意图解析与参数组装
19
+
20
+ ```
21
+ ┌─────────────────────────────────────────────────────────────┐
22
+ │ 意图识别与参数提取 │
23
+ │ - 识别操作类型: 查找/搜索/查询/对应 │
24
+ │ - 识别操作对象: 姓名/昵称/电话号码/机构名 │
25
+ │ - 提取修饰词: 实体类型 (人名/机构)、序号 (第几个) │
26
+ │ - 特殊处理: 区分 nameContact (人名) 与 yellowPageContact (机构) │
27
+ └─────────────────────────────────────────────────────────────┘
28
+
29
+ ┌─────────────────────────────────────────────────────────────┐
30
+ │ 消歧与槽位填充 │
31
+ │ - 未指定具体联系人信息 → 触发槽位追问 (resultCode 100) │
32
+ │ - 匹配到多个联系人 → 返回卡片列表 (cardInformation), 等待序号选择 │
33
+ │ - 仅输入电话号码 → 反向查询联系人姓名 │
34
+ │ - 机构/公共服务 → 映射到 yellowPageContact 字段 │
35
+ └─────────────────────────────────────────────────────────────┘
36
+
37
+ ┌─────────────────────────────────────────────────────────────┐
38
+ │ 生成工具调用 │
39
+ │ - 组装 contact, nameContact, phoneNumber, sequence, yellowPageContact │
40
+ │ - 生成平台特定的命令格式 │
41
+ └─────────────────────────────────────────────────────────────┘
42
+ ```
43
+
44
+ ### Step 2: 执行调用
45
+
46
+ - 根据操作系统选择对应的命令格式
47
+ - Windows: Cmd 格式(双引号需转义)
48
+ - Linux: Bash 格式(单引号包裹)
49
+
50
+ ## 意图分类与参数映射
51
+
52
+ | 用户意图 | 关键词示例 | contact | nameContact | phoneNumber | yellowPageContact | sequence |
53
+ | :----------- | :------------------ | :--------- | :---------- | :---------- | :---------------- | :------- |
54
+ | 查人名电话 | 找/查 + [人名] 电话 | `[人名]` | `[人名]` | - | - | - |
55
+ | 查电话对应人 | [号码] 是谁/对应谁 | - | - | `[号码]` | - | - |
56
+ | 查最新联系人 | 最新联系人/最近联系 | - | - | - | - | - |
57
+ | 查机构客服 | [机构名] 客服/电话 | `[机构名]` | - | - | `[机构名]` | - |
58
+ | 序号选择 | 第 X 个 / 选第 X 个 | (上下文) | (上下文) | (上下文) | (上下文) | `[序号]` |
59
+
60
+ ## 参数定义
61
+
62
+ ```json
63
+ {
64
+ "contact": {
65
+ "type": "string",
66
+ "description": "联系人信息,如张三、李四、王哥等,可以为非自然实体如招办。"
67
+ },
68
+ "nameContact": {
69
+ "type": "string",
70
+ "description": "判断 contact 是否是人名、昵称之类的。明确为自然实体的人名或昵称,强调“人”的身份,不包含机构或部门。若 contact 为机构,此字段为空。"
71
+ },
72
+ "phoneNumber": {
73
+ "type": "string",
74
+ "description": "电话号码。用于反向查询联系人姓名。"
75
+ },
76
+ "sequence": {
77
+ "type": "string",
78
+ "description": "序号。目前只有查找联系人使用,用于用户在列表中选择特定项。示例:'第一'、'第二个'、'3'。"
79
+ },
80
+ "yellowPageContact": {
81
+ "type": "string",
82
+ "description": "涉及公共服务/企业客服等非私人联系人时的黄页目录名称(如:银行客服、快递客服、医院挂号)。用于限定检索范围或指向黄页条目。"
83
+ }
84
+ }
85
+ ```
86
+
87
+ ### 参数注意事项
88
+
89
+ 1. **人名与机构区分**:
90
+ 若用户查询的是具体的人(如“张三”),nameContact 必须填写,且值与 contact 一致。
91
+ 若用户查询的是机构(如“工商银行”),nameContact 留空,yellowPageContact 填写机构名。
92
+ 2. **反向查询**: 当用户仅提供电话号码时,phoneNumber 必填,contact 和 nameContact 留空。
93
+ 3. **无参查询**: 查询“最新联系人”等无具体目标的指令,所有参数字段可为空,由后端逻辑处理默认行为。
94
+ 4. **无参查询**: 序号格式: sequence 需保持用户原始输入的格式(中文数字或阿拉伯数字),以便前端交互回显。
95
+
96
+ ## Query 示例及输出
97
+
98
+ ### 示例 1: 查找指定人名电话
99
+
100
+ **用户输入**: "找一下张玉的电话"
101
+
102
+ **工具**: "contact.search"
103
+
104
+ **JSON 参数**:
105
+
106
+ ```json
107
+ {
108
+ "contact": "张玉",
109
+ "nameContact": "张玉"
110
+ }
111
+ ```
112
+
113
+ **Windows (Cmd) 执行命令**:
114
+
115
+ ```bash
116
+ openclaw nodes invoke --node <ID> --command contact.search --params "{\"contact\":\"张玉\",\"nameContact\":\"张玉\"}"
117
+ ```
118
+
119
+ **Linux (Bash) 执行命令**:
120
+
121
+ ```bash
122
+ openclaw nodes invoke --node <ID> --command contact.search --params '{"contact":"张玉","nameContact":"张玉"}'
123
+ ```
124
+
125
+ ---
126
+
127
+ ### 示例 2: 电话号码反查联系人
128
+
129
+ **用户输入**: "13653336777 对应的联系人是谁"
130
+
131
+ **工具**: "contact.search"
132
+
133
+ **JSON 参数**:
134
+
135
+ ```json
136
+ {
137
+ "phoneNumber": "13653336777"
138
+ }
139
+ ```
140
+
141
+ **Windows (Cmd) 执行命令**:
142
+
143
+ ```bash
144
+ openclaw nodes invoke --node <ID> --command contact.search --params "{\"phoneNumber\":\"13653336777\"}"
145
+ ```
146
+
147
+ **Linux (Bash) 执行命令**:
148
+
149
+ ```bash
150
+ openclaw nodes invoke --node <ID> --command contact.search --params '{"phoneNumber":"13653336777"}'
151
+ ```
152
+
153
+ ---
154
+
155
+ ### 示例 3: 查询最新联系人
156
+
157
+ **用户输入**: "查看手机中最新联系人号码"
158
+
159
+ **工具**: "contact.search"
160
+
161
+ **JSON 参数**:
162
+
163
+ ```json
164
+ {}
165
+ ```
166
+
167
+ **Windows (Cmd) 执行命令**:
168
+
169
+ ```bash
170
+ openclaw nodes invoke --node <ID> --command contact.search --params "{}"
171
+ ```
172
+
173
+ **Linux (Bash) 执行命令**:
174
+
175
+ ```bash
176
+ openclaw nodes invoke --node <ID> --command contact.search --params '{}'
177
+ ```
178
+
179
+ ---
180
+
181
+ ### 示例 4: 查找机构客服电话 (黄页)
182
+
183
+ **用户输入**: "寻找中国工商银行的客服电话"
184
+
185
+ **JSON 参数**:
186
+
187
+ ```json
188
+ {
189
+ "contact": "中国工商银行",
190
+ "nameContact": "中国工商银行",
191
+ "yellowPageContact": "中国工商银行"
192
+ }
193
+ ```
194
+
195
+ **Windows (Cmd) 执行命令**:
196
+
197
+ ```bash
198
+ openclaw nodes invoke --node <ID> --command contact.search --params "{\"contact\":\"中国工商银行\",\"nameContact\":\"中国工商银行\",\"yellowPageContact\":\"中国工商银行\"}"
199
+ ```
200
+
201
+ **Linux (Bash) 执行命令**:
202
+
203
+ ```bash
204
+ openclaw nodes invoke --node <ID> --command contact.search --params '{"contact":"中国工商银行","nameContact":"中国工商银行","yellowPageContact":"中国工商银行"}'
205
+ ```
206
+
207
+ ---
208
+
209
+ ### 示例 5: 多结果列表选择 (模拟场景)
210
+
211
+ **用户输入**: "(系统返回多个“张磊”后) "选第一个"
212
+
213
+ **JSON 参数**:
214
+
215
+ ```json
216
+ {
217
+ "contact": "张磊",
218
+ "nameContact": "张磊",
219
+ "sequence": "第一个"
220
+ }
221
+ ```
222
+
223
+ **Windows (Cmd) 执行命令**:
224
+
225
+ ```bash
226
+ openclaw nodes invoke --node <ID> --command contact.search --params "{\"contact\":\"张磊\",\"nameContact\":\"张磊\",\"sequence\":\"第一个\"}"
227
+ ```
228
+
229
+ **Linux (Bash) 执行命令**:
230
+
231
+ ```bash
232
+ openclaw nodes invoke --node <ID> --command contact.search --params '{"contact":"张磊","nameContact":"张磊","sequence":"第一个"}'
233
+ ```
234
+
235
+ ---