@licity/qclaw-local-connector 1.1.0
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/.env.example +14 -0
- package/README.md +419 -0
- package/index.js +986 -0
- package/package.json +37 -0
- package/setup.js +78 -0
package/.env.example
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
LICITY_API_BASE_URL=https://li.city
|
|
2
|
+
OPENCLAW_CONNECTOR_SECRET=replace-with-your-connector-secret
|
|
3
|
+
CONNECTOR_PROVIDER=qclaw-local
|
|
4
|
+
DEVICE_NAME=
|
|
5
|
+
QCLAW_PATH=D:\QClaw\QClaw.exe
|
|
6
|
+
QCLAW_STATE_DIR=C:\Users\Administrator\.qclaw
|
|
7
|
+
QCLAW_CONFIG_PATH=C:\Users\Administrator\.qclaw\qclaw.json
|
|
8
|
+
OPENCLAW_CONFIG_PATH=C:\Users\Administrator\.qclaw\openclaw.json
|
|
9
|
+
OPENCLAW_CLI_PATH=D:\QClaw\resources\openclaw\node_modules\openclaw\openclaw.mjs
|
|
10
|
+
OPENCLAW_AGENT_ID=main
|
|
11
|
+
OPENCLAW_COMMAND_TIMEOUT_MS=60000
|
|
12
|
+
CAPABILITY_SCOPES=private_chat,neighbor,anchor,time_travel
|
|
13
|
+
HEARTBEAT_INTERVAL_MS=25000
|
|
14
|
+
POLL_INTERVAL_MS=3000
|
package/README.md
ADDED
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# 里世界 QClaw 本地连接器
|
|
2
|
+
|
|
3
|
+
这是把本机 QClaw 或其他第三方本地 Runtime,桥接到里世界 APP 龙虾系统的本地连接器。
|
|
4
|
+
|
|
5
|
+
它解决的不是“让 QClaw 自己联网找里世界”,而是另一件事:
|
|
6
|
+
|
|
7
|
+
- 在你电脑上生成一个给里世界 APP 扫描的连接二维码。
|
|
8
|
+
- 扫码成功后,把某只龙虾和你这台电脑上的 Runtime 绑定起来。
|
|
9
|
+
- 后续由里世界把任务派发给本地连接器,再由本地连接器转给 QClaw/OpenClaw 执行。
|
|
10
|
+
|
|
11
|
+
如果你是第一次接触这个链路,先记住一句话:
|
|
12
|
+
|
|
13
|
+
只启动本目录里的连接器还不够。QClaw 主程序、本地 19000 网关、连接器扫码绑定,这三层必须同时成立。
|
|
14
|
+
|
|
15
|
+
## 安装方式
|
|
16
|
+
|
|
17
|
+
### 方式一:npm 全局安装(推荐)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g @licity/qclaw-local-connector
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
安装后,在任意目录创建 `.env` 配置文件(见第 4 步),然后执行:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
licity-connector
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 方式二:本地克隆 / 下载后运行
|
|
30
|
+
|
|
31
|
+
进入连接器目录,执行:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install && npm run quickstart
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 一图看懂
|
|
38
|
+
|
|
39
|
+
1. 先启动 QClaw 主程序。
|
|
40
|
+
2. 确认 127.0.0.1:19000 已监听。
|
|
41
|
+
3. 创建 `.env` 配置文件并填写必要字段(见第 4 步)。
|
|
42
|
+
4. 运行连接器(`licity-connector` 或 `npm run quickstart`)。
|
|
43
|
+
5. 终端出现二维码。
|
|
44
|
+
6. 打开里世界 APP 的"我的龙虾",点"扫码连接本地龙虾"。
|
|
45
|
+
7. 选择一只龙虾并确认连接。
|
|
46
|
+
8. 到龙虾私聊页测试文本,再测试截图或文件能力。
|
|
47
|
+
|
|
48
|
+
## 这套方案现在已经支持什么
|
|
49
|
+
|
|
50
|
+
当前已经打通:
|
|
51
|
+
|
|
52
|
+
- 文本私聊回复。
|
|
53
|
+
- 截图类任务回传图片。
|
|
54
|
+
- 第三方 Runtime 按结构化附件格式回传图片或文件。
|
|
55
|
+
- 心跳保活、扫码绑定、换账号接管 Runtime。
|
|
56
|
+
|
|
57
|
+
当前仍有限制:
|
|
58
|
+
|
|
59
|
+
- 普通问答是否能真正执行,仍取决于你本机 QClaw/OpenClaw 环境是否可用。
|
|
60
|
+
- 连接器默认通过 JSON 回传附件,建议单个附件控制在 8MB 以内。
|
|
61
|
+
- 如果第三方程序只会回纯文本,不会输出结构化附件,那它就只能回文本,不能自动把本地文件带回里世界。
|
|
62
|
+
|
|
63
|
+
## 适合谁用
|
|
64
|
+
|
|
65
|
+
适合以下场景:
|
|
66
|
+
|
|
67
|
+
- 你已经在电脑上用 QClaw。
|
|
68
|
+
- 你希望把本机 AI 能力映射成里世界里的龙虾。
|
|
69
|
+
- 你想让龙虾能回复文本,或者进一步回传截图、图片、文件。
|
|
70
|
+
|
|
71
|
+
不适合以下场景:
|
|
72
|
+
|
|
73
|
+
- 你手里已经是官方 OpenClaw Runtime,并且它本身就能直接生成里世界配对二维码。
|
|
74
|
+
这种情况优先走官方 OpenClaw 原生扫码,不需要这个桥接器。
|
|
75
|
+
|
|
76
|
+
## 先说结论
|
|
77
|
+
|
|
78
|
+
要让龙虾真正工作,至少要同时满足这 3 个条件:
|
|
79
|
+
|
|
80
|
+
1. QClaw 主程序已经启动,并保持登录和可用。
|
|
81
|
+
2. QClaw 启动后,本机本地网关已经监听,当前实际检查口径是 127.0.0.1:19000。
|
|
82
|
+
3. 本连接器已经启动,并成功和里世界中的某只龙虾完成扫码绑定。
|
|
83
|
+
|
|
84
|
+
如果第 1 或第 2 条不满足,APP 里给龙虾发消息后,任务虽然会进入队列,但 OpenClaw agent 无法真实执行。
|
|
85
|
+
|
|
86
|
+
## 目录里有哪些文件
|
|
87
|
+
|
|
88
|
+
- `index.js`:连接器主程序。
|
|
89
|
+
- `.env.example`:环境变量模板。
|
|
90
|
+
- `setup.js`:本地安装助手和自检脚本。
|
|
91
|
+
- `data/runtime.json`:保存本机 Runtime ID。
|
|
92
|
+
- `data/screenshots/`:截图任务产生的临时图片。
|
|
93
|
+
|
|
94
|
+
## 新手最短路径
|
|
95
|
+
|
|
96
|
+
### 第 1 步:启动 QClaw 主程序
|
|
97
|
+
|
|
98
|
+
QClaw 的位置取决于你的安装路径,常见的在:
|
|
99
|
+
- Windows:`C:\QClaw\QClaw.exe` 或安装时指定的目录
|
|
100
|
+
- 也可以通过桌面快捷方式直接启动
|
|
101
|
+
|
|
102
|
+
启动后不要立刻关闭,保持 QClaw 正常运行。
|
|
103
|
+
|
|
104
|
+
### 第 2 步:确认本地 19000 端口已监听
|
|
105
|
+
|
|
106
|
+
在 PowerShell 执行:
|
|
107
|
+
|
|
108
|
+
```powershell
|
|
109
|
+
Get-NetTCPConnection -LocalPort 19000 -State Listen
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
如果能看到监听结果,说明 QClaw 本地网关已经起来。
|
|
113
|
+
|
|
114
|
+
如果没有结果,优先检查:
|
|
115
|
+
|
|
116
|
+
- QClaw 是否真的已经启动。
|
|
117
|
+
- QClaw 是否卡在登录页、权限弹窗、升级弹窗。
|
|
118
|
+
- 刚启动时是否还没完全拉起网关,等 5 到 15 秒再查一次。
|
|
119
|
+
|
|
120
|
+
### 第 3 步:启动连接器
|
|
121
|
+
|
|
122
|
+
**npm 全局安装用户:**
|
|
123
|
+
|
|
124
|
+
在已创建好 `.env` 的目录下直接执行:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
licity-connector
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**本地克隆 / 下载用户:**
|
|
131
|
+
|
|
132
|
+
进入连接器目录后执行:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npm install && npm run quickstart
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
这行命令会做两件事:
|
|
139
|
+
|
|
140
|
+
1. 安装依赖。
|
|
141
|
+
2. 运行安装助手,检查 `.env`、QClaw 路径、OpenClaw 配置,再启动连接器。
|
|
142
|
+
|
|
143
|
+
### 第 4 步:第一次启动时补全 `.env`
|
|
144
|
+
|
|
145
|
+
如果你是第一次运行,`npm run quickstart` 前,先打开本目录的 `.env` 文件。
|
|
146
|
+
|
|
147
|
+
如果 `.env` 不存在,运行安装助手后会自动从 `.env.example` 生成一份。
|
|
148
|
+
|
|
149
|
+
至少确认这些字段(路径按你的实际安装位置填写):
|
|
150
|
+
|
|
151
|
+
```env
|
|
152
|
+
LICITY_API_BASE_URL=https://li.city
|
|
153
|
+
OPENCLAW_CONNECTOR_SECRET=replace-with-your-connector-secret
|
|
154
|
+
CONNECTOR_PROVIDER=qclaw-local
|
|
155
|
+
|
|
156
|
+
# Windows 示例(路径按实际安装位置填写)
|
|
157
|
+
QCLAW_PATH=C:\QClaw\QClaw.exe
|
|
158
|
+
QCLAW_STATE_DIR=%USERPROFILE%\.qclaw
|
|
159
|
+
OPENCLAW_CONFIG_PATH=%USERPROFILE%\.qclaw\openclaw.json
|
|
160
|
+
OPENCLAW_CLI_PATH=C:\QClaw\resources\openclaw\node_modules\openclaw\openclaw.mjs
|
|
161
|
+
|
|
162
|
+
# macOS / Linux 示例
|
|
163
|
+
# QCLAW_PATH=/Applications/QClaw.app/Contents/MacOS/QClaw
|
|
164
|
+
# QCLAW_STATE_DIR=~/.qclaw
|
|
165
|
+
# OPENCLAW_CONFIG_PATH=~/.qclaw/openclaw.json
|
|
166
|
+
# OPENCLAW_CLI_PATH=~/.nvm/versions/node/v20/lib/node_modules/openclaw/openclaw.mjs
|
|
167
|
+
|
|
168
|
+
OPENCLAW_AGENT_ID=main
|
|
169
|
+
OPENCLAW_COMMAND_TIMEOUT_MS=60000
|
|
170
|
+
CAPABILITY_SCOPES=private_chat,neighbor,anchor,time_travel
|
|
171
|
+
HEARTBEAT_INTERVAL_MS=25000
|
|
172
|
+
POLL_INTERVAL_MS=3000
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
其中最关键的是:
|
|
176
|
+
|
|
177
|
+
- `OPENCLAW_CONNECTOR_SECRET`
|
|
178
|
+
- `QCLAW_PATH`
|
|
179
|
+
- `OPENCLAW_CONFIG_PATH`
|
|
180
|
+
|
|
181
|
+
如果连接器密钥没填,程序会直接阻止启动。
|
|
182
|
+
|
|
183
|
+
### 第 5 步:扫码连接到里世界 APP
|
|
184
|
+
|
|
185
|
+
当连接器启动成功后,终端会打印:
|
|
186
|
+
|
|
187
|
+
- 当前 Runtime ID
|
|
188
|
+
- QClaw 路径
|
|
189
|
+
- OpenClaw 配置路径
|
|
190
|
+
- 启动前检查结果
|
|
191
|
+
- 一个二维码
|
|
192
|
+
|
|
193
|
+
这时在里世界 APP 里操作:
|
|
194
|
+
|
|
195
|
+
1. 打开“我的龙虾”。
|
|
196
|
+
2. 找到“接入已有龙虾”。
|
|
197
|
+
3. 点击“扫码连接本地龙虾”。
|
|
198
|
+
4. 扫终端里的二维码。
|
|
199
|
+
5. 在确认页选择一只龙虾并确认。
|
|
200
|
+
|
|
201
|
+
如果你当前账号下还没有龙虾,APP 会允许你先创建一只,再直接完成连接。
|
|
202
|
+
|
|
203
|
+
### 第 6 步:验证链路
|
|
204
|
+
|
|
205
|
+
连接成功后,按下面顺序测:
|
|
206
|
+
|
|
207
|
+
1. 文本测试:`请只回复:已收到`
|
|
208
|
+
2. 普通问答:`帮我查北京明天的天气`
|
|
209
|
+
3. 截图测试:`帮我截图桌面`
|
|
210
|
+
4. 文件测试:让第三方程序返回结构化附件
|
|
211
|
+
|
|
212
|
+
建议永远先测短文本,再测截图,再测文件。这样最容易判断故障卡在哪一层。
|
|
213
|
+
|
|
214
|
+
## 连接器会输出哪些关键信息
|
|
215
|
+
|
|
216
|
+
### 1. 启动前检查
|
|
217
|
+
|
|
218
|
+
终端会输出类似:
|
|
219
|
+
|
|
220
|
+
- OpenClaw 配置文件是否存在
|
|
221
|
+
- OpenClaw CLI 是否存在
|
|
222
|
+
- 模型网关地址
|
|
223
|
+
- 19000 端口是否已监听
|
|
224
|
+
- 微信通道地址
|
|
225
|
+
- 网关探测是否成功
|
|
226
|
+
|
|
227
|
+
### 2. 二维码会话
|
|
228
|
+
|
|
229
|
+
会输出类似:
|
|
230
|
+
|
|
231
|
+
- 新的连接会话 ID
|
|
232
|
+
- 二维码原文 JSON
|
|
233
|
+
|
|
234
|
+
### 3. 心跳日志
|
|
235
|
+
|
|
236
|
+
会输出类似:
|
|
237
|
+
|
|
238
|
+
`[Heartbeat 3] 龙虾=3号龙虾 权限快照已同步`
|
|
239
|
+
|
|
240
|
+
说明本地连接器和后端之间的保活链路是通的。
|
|
241
|
+
|
|
242
|
+
### 4. 任务日志
|
|
243
|
+
|
|
244
|
+
收到私聊任务时会输出:
|
|
245
|
+
|
|
246
|
+
`[Task] 收到任务 private_chat_message (...)`
|
|
247
|
+
|
|
248
|
+
如果进入普通问答,还会输出:
|
|
249
|
+
|
|
250
|
+
`[Agent] 开始调用 OpenClaw,agent=main,宿主=QClaw.exe,入口=openclaw.mjs,直连=yes,wrapper=bypassed,超时=60000ms`
|
|
251
|
+
|
|
252
|
+
如果最后出现:
|
|
253
|
+
|
|
254
|
+
`[Task] 私聊回写成功`
|
|
255
|
+
|
|
256
|
+
说明至少“里世界 -> 连接器 -> 本地执行 -> 回写里世界”这条主链路已经走通。
|
|
257
|
+
|
|
258
|
+
## 如何判断问题卡在哪一层
|
|
259
|
+
|
|
260
|
+
### A. APP 能发消息,但连接器终端完全没有任务日志
|
|
261
|
+
|
|
262
|
+
这说明任务压根没有派发到本地连接器。
|
|
263
|
+
|
|
264
|
+
优先检查:
|
|
265
|
+
|
|
266
|
+
- 这只龙虾是否真的显示已连接。
|
|
267
|
+
- 是否扫的是当前这台连接器终端打印的二维码。
|
|
268
|
+
- 是否连错了账号。
|
|
269
|
+
- 是否刚切换账号但还没重新扫码接管 Runtime。
|
|
270
|
+
|
|
271
|
+
### B. 终端出现 `[Task] 收到任务`,但没有后续执行日志
|
|
272
|
+
|
|
273
|
+
说明里世界到连接器链路是通的。
|
|
274
|
+
|
|
275
|
+
问题在本机执行层,通常是:
|
|
276
|
+
|
|
277
|
+
- OpenClaw 配置异常。
|
|
278
|
+
- QClaw 主程序未完全就绪。
|
|
279
|
+
- 本地网关虽然监听,但 agent 无法真正拿到模型结果。
|
|
280
|
+
|
|
281
|
+
### C. 19000 端口已监听,但启动前检查显示 `Access denied (PID)`
|
|
282
|
+
|
|
283
|
+
这代表一个很具体的现象:
|
|
284
|
+
|
|
285
|
+
- 你的 QClaw 本地代理端口确实起来了。
|
|
286
|
+
- 但外部普通 Node 进程直连探测这个代理时,被本机 PID 策略拒绝。
|
|
287
|
+
|
|
288
|
+
这不一定等于完全不能用。
|
|
289
|
+
|
|
290
|
+
如果后续任务执行日志里显示:
|
|
291
|
+
|
|
292
|
+
- `直连=yes`
|
|
293
|
+
- `wrapper=bypassed`
|
|
294
|
+
- `私聊回写成功`
|
|
295
|
+
|
|
296
|
+
说明虽然 HTTP 探测被拦截,但当前连接器已经通过更可信的宿主路径完成了调用,实际聊天链路仍然可能是可用的。
|
|
297
|
+
|
|
298
|
+
### D. 文本能回,截图能回,但文件回不来
|
|
299
|
+
|
|
300
|
+
这通常不是里世界 APP 的问题,而是第三方程序本身没有输出结构化附件。
|
|
301
|
+
|
|
302
|
+
当前连接器支持两种附件输入:
|
|
303
|
+
|
|
304
|
+
1. 直接给出 `media_base64`
|
|
305
|
+
2. 给出本地文件路径,连接器读取后转为 base64 回传
|
|
306
|
+
|
|
307
|
+
如果第三方 Runtime 只输出一段纯文本,例如“文件已生成到 D:\xxx”,但没有在结构化结果里真正带出文件字段,连接器就没法自动把那个文件回传到里世界。
|
|
308
|
+
|
|
309
|
+
### E. 换账号扫码失败或旧账号仍占着连接
|
|
310
|
+
|
|
311
|
+
当前后端已经支持 Runtime 接管。
|
|
312
|
+
|
|
313
|
+
正常行为应该是:
|
|
314
|
+
|
|
315
|
+
- 新账号扫码成功后,旧账号上的同一 Runtime 绑定自动失效。
|
|
316
|
+
- 不需要手动删数据库或重装连接器。
|
|
317
|
+
|
|
318
|
+
如果仍失败,优先重新生成二维码再扫一次,并确认 APP 当前登录的是正确账号。
|
|
319
|
+
|
|
320
|
+
## 文件和图片回传的经验总结
|
|
321
|
+
|
|
322
|
+
这一部分是本次接第三方龙虾最关键的经验。
|
|
323
|
+
|
|
324
|
+
### 1. 里世界数据库本身支持媒体字段,不是后端存不下
|
|
325
|
+
|
|
326
|
+
真正的短板往往不是数据库,而是“第三方 Runtime 有没有把媒体按规范回出来”。
|
|
327
|
+
|
|
328
|
+
### 2. 截图类任务最好在连接器侧直接做
|
|
329
|
+
|
|
330
|
+
例如“帮我截图桌面”这种需求,连接器可以直接本地截图,然后把图片回传给里世界。
|
|
331
|
+
|
|
332
|
+
这样最稳定,因为:
|
|
333
|
+
|
|
334
|
+
- 不依赖模型自己理解如何上传文件。
|
|
335
|
+
- 不依赖第三方程序输出复杂附件格式。
|
|
336
|
+
|
|
337
|
+
### 3. 普通文件回传,关键在结构化附件
|
|
338
|
+
|
|
339
|
+
如果你要让第三方程序回传文件,建议它在结构化结果里带出至少这些字段之一:
|
|
340
|
+
|
|
341
|
+
- `media_base64`
|
|
342
|
+
- `media_file_path`
|
|
343
|
+
- `file_base64`
|
|
344
|
+
- `file_path`
|
|
345
|
+
|
|
346
|
+
以及这些辅助字段:
|
|
347
|
+
|
|
348
|
+
- `media_name`
|
|
349
|
+
- `media_mime_type`
|
|
350
|
+
- `media_type`
|
|
351
|
+
|
|
352
|
+
### 4. 附件不要太大
|
|
353
|
+
|
|
354
|
+
当前连接器默认走 JSON 请求把附件回传到后端,建议单个附件控制在 8MB 以内。
|
|
355
|
+
|
|
356
|
+
如果你后续要走更大的文件,建议改成先上传对象存储,再只回传 URL。
|
|
357
|
+
|
|
358
|
+
## 推荐的标准操作顺序
|
|
359
|
+
|
|
360
|
+
1. 先启动 QClaw 主程序。
|
|
361
|
+
2. 用 `Get-NetTCPConnection` 确认 19000 已监听。
|
|
362
|
+
3. 进入本目录,执行 `npm install && npm run quickstart`。
|
|
363
|
+
4. 看安装助手是否通过关键检查。
|
|
364
|
+
5. 看连接器终端是否打印二维码。
|
|
365
|
+
6. 去 APP 里扫码绑定。
|
|
366
|
+
7. 先测短文本。
|
|
367
|
+
8. 再测截图。
|
|
368
|
+
9. 最后再测文件。
|
|
369
|
+
|
|
370
|
+
## 常用命令
|
|
371
|
+
|
|
372
|
+
### npm 全局安装用户
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
# 直接在 .env 文件所在目录运行
|
|
376
|
+
licity-connector
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### 本地克隆 / 下载用户
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
# 一键准备并启动
|
|
383
|
+
npm install && npm run quickstart
|
|
384
|
+
|
|
385
|
+
# 只做环境自检
|
|
386
|
+
npm run doctor
|
|
387
|
+
|
|
388
|
+
# 只启动连接器
|
|
389
|
+
npm run start
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### 手工执行 OpenClaw 自检(Windows PowerShell)
|
|
393
|
+
|
|
394
|
+
把下面的路径替换成你实际的 QClaw 安装路径和状态目录:
|
|
395
|
+
|
|
396
|
+
```powershell
|
|
397
|
+
$env:OPENCLAW_CONFIG_PATH="$env:USERPROFILE\.qclaw\openclaw.json"
|
|
398
|
+
$env:QCLAW_LLM_BASE_URL='http://127.0.0.1:19000/proxy'
|
|
399
|
+
$env:QCLAW_LLM_API_KEY='<从 openclaw.json 中获取的 apiKey>'
|
|
400
|
+
$env:QCLAW_WECHAT_WS_URL='ws://127.0.0.1:19000/proxy'
|
|
401
|
+
node '<QClaw安装目录>\resources\openclaw\node_modules\openclaw\openclaw.mjs' agent --agent main --message '请只回复四个字:已收到。不要解释。' --json --timeout 30
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
如果这条命令都不能正常返回,问题就不在里世界,也不在这个连接器,而在你本机 QClaw/OpenClaw 环境本身。
|
|
405
|
+
|
|
406
|
+
## 最后的建议
|
|
407
|
+
|
|
408
|
+
如果你是小白,别一上来就测复杂问题。
|
|
409
|
+
|
|
410
|
+
永远按这个顺序:
|
|
411
|
+
|
|
412
|
+
1. 先看 19000 端口。
|
|
413
|
+
2. 再看连接器能不能出二维码。
|
|
414
|
+
3. 再看 APP 能不能扫码成功。
|
|
415
|
+
4. 再测短文本。
|
|
416
|
+
5. 再测截图。
|
|
417
|
+
6. 最后再测文件。
|
|
418
|
+
|
|
419
|
+
按这个顺序,你几乎总能很快定位问题卡在哪一层。
|