ms-vite-plugin 1.4.9 → 1.4.11
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/mcp/device-log.js +3 -4
- package/docs/api/appleocr.md +78 -0
- package/docs/api/global.md +98 -0
- package/docs/api/ime.md +0 -25
- package/docs/api/node.md +3 -0
- package/docs/api/paddleocr.md +63 -11
- package/docs/api/system.md +67 -15
- package/docs/api/yolo.md +58 -18
- package/docs/api/yolocls.md +272 -0
- package/docs/apicn/appleocr.md +78 -0
- package/docs/apicn/global.md +98 -0
- package/docs/apicn/ime.md +0 -25
- package/docs/apicn/node.md +6 -0
- package/docs/apicn/paddleocr.md +59 -7
- package/docs/apicn/system.md +69 -15
- package/docs/apicn/yolo.md +50 -9
- package/docs/apicn/yolocls.md +272 -0
- package/docs/apipython/appleocr.md +75 -0
- package/docs/apipython/g.md +105 -0
- package/docs/apipython/ime.md +0 -26
- package/docs/apipython/node.md +4 -1
- package/docs/apipython/overview.md +1 -1
- package/docs/apipython/paddleocr.md +54 -4
- package/docs/apipython/system.md +67 -12
- package/docs/apipython/yolo.md +37 -7
- package/docs/apipython/yolocls.md +269 -0
- package/docs/httpapi/api.md +284 -1
- package/package.json +1 -1
package/dist/mcp/device-log.js
CHANGED
|
@@ -350,10 +350,9 @@ function formatRuntimeStatusEntry(entry) {
|
|
|
350
350
|
? "运行中"
|
|
351
351
|
: "未运行"
|
|
352
352
|
: "未知"}`,
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
`占用: ${formatRuntimeMetricText(memory.usagePercentage, "%")}`,
|
|
353
|
+
`系统: ${formatRuntimeMetricText(memory.systemUsed, " MB")}/${formatRuntimeMetricText(memory.total, " MB")}`,
|
|
354
|
+
`系统占用: ${formatRuntimeMetricText(memory.usagePercentage, "%")}`,
|
|
355
|
+
`应用: ${formatRuntimeMetricText(memory.used, " MB")}`,
|
|
357
356
|
].join(" | ");
|
|
358
357
|
}
|
|
359
358
|
/**
|
package/docs/api/appleocr.md
CHANGED
|
@@ -131,6 +131,32 @@ const screenResults = appleOcr.recognize("screen", 0, 0, 1920, 1080);
|
|
|
131
131
|
logi(`屏幕识别结果: ${JSON.stringify(screenResults)}`);
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
+
#### recognizeAbs
|
|
135
|
+
|
|
136
|
+
执行 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
137
|
+
|
|
138
|
+
参数与 `recognize` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
function recognizeAbs(
|
|
142
|
+
input: string,
|
|
143
|
+
x?: number,
|
|
144
|
+
y?: number,
|
|
145
|
+
ex?: number,
|
|
146
|
+
ey?: number,
|
|
147
|
+
languages?: string[],
|
|
148
|
+
): OCRResult[];
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**示例:**
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
const absResults = appleOcr.recognizeAbs("screen", 100, 100, 500, 300);
|
|
155
|
+
if (absResults.length > 0) {
|
|
156
|
+
action.click(absResults[0].centerX, absResults[0].centerY);
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
134
160
|
### 数字识别
|
|
135
161
|
|
|
136
162
|
#### recognizeNumbers
|
|
@@ -179,6 +205,31 @@ numberResults.forEach((result, index) => {
|
|
|
179
205
|
});
|
|
180
206
|
```
|
|
181
207
|
|
|
208
|
+
#### recognizeNumbersAbs
|
|
209
|
+
|
|
210
|
+
执行数字 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
211
|
+
|
|
212
|
+
参数与 `recognizeNumbers` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
function recognizeNumbersAbs(
|
|
216
|
+
input: string,
|
|
217
|
+
x?: number,
|
|
218
|
+
y?: number,
|
|
219
|
+
ex?: number,
|
|
220
|
+
ey?: number,
|
|
221
|
+
): OCRResult[];
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**示例:**
|
|
225
|
+
|
|
226
|
+
```javascript
|
|
227
|
+
const absNumberResults = appleOcr.recognizeNumbersAbs("screen", 100, 100, 500, 300);
|
|
228
|
+
if (absNumberResults.length > 0) {
|
|
229
|
+
action.click(absNumberResults[0].centerX, absNumberResults[0].centerY);
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
182
233
|
### 文本查找
|
|
183
234
|
|
|
184
235
|
#### findText
|
|
@@ -227,3 +278,30 @@ textResults.forEach((result, index) => {
|
|
|
227
278
|
logi(`中心点: (${result.centerX}, ${result.centerY})`);
|
|
228
279
|
});
|
|
229
280
|
```
|
|
281
|
+
|
|
282
|
+
#### findTextAbs
|
|
283
|
+
|
|
284
|
+
查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
|
|
285
|
+
|
|
286
|
+
参数与 `findText` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
function findTextAbs(
|
|
290
|
+
input: string,
|
|
291
|
+
texts: string[],
|
|
292
|
+
x?: number,
|
|
293
|
+
y?: number,
|
|
294
|
+
ex?: number,
|
|
295
|
+
ey?: number,
|
|
296
|
+
languages?: string[],
|
|
297
|
+
): OCRResult[];
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**示例:**
|
|
301
|
+
|
|
302
|
+
```javascript
|
|
303
|
+
const absHits = appleOcr.findTextAbs("screen", ["确定"], 100, 100, 500, 400);
|
|
304
|
+
if (absHits.length > 0) {
|
|
305
|
+
action.click(absHits[0].centerX, absHits[0].centerY);
|
|
306
|
+
}
|
|
307
|
+
```
|
package/docs/api/global.md
CHANGED
|
@@ -342,6 +342,104 @@ if (getAgentFastMode()) {
|
|
|
342
342
|
}
|
|
343
343
|
```
|
|
344
344
|
|
|
345
|
+
### setCpuAutoThrottle
|
|
346
|
+
|
|
347
|
+
设置脚本 CPU 自动限流。默认开启。开启后,脚本 API 在 CPU 占用接近系统杀进程阈值时会轻微让步,降低被系统终止的风险。
|
|
348
|
+
|
|
349
|
+
```typescript
|
|
350
|
+
function setCpuAutoThrottle(enabled: boolean): boolean;
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**参数:**
|
|
354
|
+
|
|
355
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
356
|
+
| --------- | --------- | -------- | ------ | ---------------- |
|
|
357
|
+
| `enabled` | `boolean` | 是 | - | 是否开启自动限流 |
|
|
358
|
+
|
|
359
|
+
**返回值:**
|
|
360
|
+
|
|
361
|
+
| 类型 | 描述 |
|
|
362
|
+
| --------- | -------------------- |
|
|
363
|
+
| `boolean` | 实际是否开启自动限流 |
|
|
364
|
+
|
|
365
|
+
**示例:**
|
|
366
|
+
|
|
367
|
+
```javascript
|
|
368
|
+
const enabled = setCpuAutoThrottle(true);
|
|
369
|
+
logi(`CPU 自动限流: ${enabled}`);
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### getCpuAutoThrottle
|
|
373
|
+
|
|
374
|
+
获取脚本 CPU 自动限流当前状态。默认开启。
|
|
375
|
+
|
|
376
|
+
```typescript
|
|
377
|
+
function getCpuAutoThrottle(): boolean;
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
**返回值:**
|
|
381
|
+
|
|
382
|
+
| 类型 | 描述 |
|
|
383
|
+
| --------- | -------------------- |
|
|
384
|
+
| `boolean` | 当前是否开启自动限流 |
|
|
385
|
+
|
|
386
|
+
**示例:**
|
|
387
|
+
|
|
388
|
+
```javascript
|
|
389
|
+
if (getCpuAutoThrottle()) {
|
|
390
|
+
logi("CPU 自动限流已开启");
|
|
391
|
+
}
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### setCpuThrottleDelay
|
|
395
|
+
|
|
396
|
+
设置 CPU 限流单次 sleep 延迟范围(毫秒)。默认 `minMs=3`、`maxMs=30`。仅在 CPU 自动限流开启且触发限流时生效。
|
|
397
|
+
|
|
398
|
+
```typescript
|
|
399
|
+
function setCpuThrottleDelay(minMs: number, maxMs: number): { minMs: number; maxMs: number };
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
**参数:**
|
|
403
|
+
|
|
404
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
405
|
+
| -------- | -------- | -------- | ------ | ---------------------------------- |
|
|
406
|
+
| `minMs` | `number` | 是 | - | 最低延迟(毫秒) |
|
|
407
|
+
| `maxMs` | `number` | 是 | - | 最高延迟(毫秒);小于 minMs 时自动对齐 |
|
|
408
|
+
|
|
409
|
+
**返回值:**
|
|
410
|
+
|
|
411
|
+
| 类型 | 描述 |
|
|
412
|
+
| --------------------------------- | -------------------- |
|
|
413
|
+
| `{ minMs: number; maxMs: number }` | 实际生效的延迟范围 |
|
|
414
|
+
|
|
415
|
+
**示例:**
|
|
416
|
+
|
|
417
|
+
```javascript
|
|
418
|
+
const delay = setCpuThrottleDelay(3, 30);
|
|
419
|
+
logi(`CPU 限流延迟: ${delay.minMs}~${delay.maxMs}ms`);
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### getCpuThrottleDelay
|
|
423
|
+
|
|
424
|
+
获取 CPU 限流延迟范围(毫秒)。
|
|
425
|
+
|
|
426
|
+
```typescript
|
|
427
|
+
function getCpuThrottleDelay(): { minMs: number; maxMs: number };
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**返回值:**
|
|
431
|
+
|
|
432
|
+
| 类型 | 描述 |
|
|
433
|
+
| --------------------------------- | ------------------ |
|
|
434
|
+
| `{ minMs: number; maxMs: number }` | 当前最低与最高延迟 |
|
|
435
|
+
|
|
436
|
+
**示例:**
|
|
437
|
+
|
|
438
|
+
```javascript
|
|
439
|
+
const delay = getCpuThrottleDelay();
|
|
440
|
+
logi(`CPU 限流延迟: ${delay.minMs}~${delay.maxMs}ms`);
|
|
441
|
+
```
|
|
442
|
+
|
|
345
443
|
### setStopCallback
|
|
346
444
|
|
|
347
445
|
设置停止回调函数(仅主线程调用)。
|
package/docs/api/ime.md
CHANGED
|
@@ -35,31 +35,6 @@ if (ime.isOk()) {
|
|
|
35
35
|
}
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
### autoSwitchApiKeyboard - 自动切换到 API 键盘。
|
|
39
|
-
|
|
40
|
-
```typescript
|
|
41
|
-
function autoSwitchApiKeyboard(): boolean;
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**返回值:**
|
|
45
|
-
|
|
46
|
-
| 类型 | 描述 |
|
|
47
|
-
| --------- | ------------------------------------------ |
|
|
48
|
-
| `boolean` | 是否成功切换并连接到 API 键盘,成功为 true |
|
|
49
|
-
|
|
50
|
-
- 该方法仅在系统设置中添加了快点JS API键盘 并且已授权完全访问权限时有效。
|
|
51
|
-
|
|
52
|
-
**示例:**
|
|
53
|
-
|
|
54
|
-
```typescript
|
|
55
|
-
// 自动切换到 API 键盘(如未弹出会尝试切换)
|
|
56
|
-
if (ime.autoSwitchApiKeyboard()) {
|
|
57
|
-
logi("已切换到 API 键盘");
|
|
58
|
-
} else {
|
|
59
|
-
logi("切换失败,请检查键盘设置和完全访问权限");
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
38
|
## 文本获取和清除
|
|
64
39
|
|
|
65
40
|
### getText - 获取当前输入框的文本内容。
|
package/docs/api/node.md
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
```typescript
|
|
21
21
|
function createNodeSelector(params?: {
|
|
22
22
|
maxDepth?: number; // 最大层级深度,默认 50
|
|
23
|
+
mode?: number; // 抓取模式:模式 1、模式 2,默认模式 1
|
|
23
24
|
}): NodeSelector;
|
|
24
25
|
```
|
|
25
26
|
|
|
@@ -28,6 +29,7 @@ function createNodeSelector(params?: {
|
|
|
28
29
|
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
29
30
|
| ---------- | ------ | -------- | ------ | --------------------------- |
|
|
30
31
|
| `maxDepth` | number | 否 | 50 | 遍历的最大层级深度,默认 50 |
|
|
32
|
+
| `mode` | number | 否 | 1 | 抓取模式。模式 1、模式 2,默认模式 1 |
|
|
31
33
|
|
|
32
34
|
**返回值:**
|
|
33
35
|
|
|
@@ -41,6 +43,7 @@ function createNodeSelector(params?: {
|
|
|
41
43
|
// 创建选择器
|
|
42
44
|
const selector = createNodeSelector({
|
|
43
45
|
maxDepth: 20, // 最大20层深度
|
|
46
|
+
mode: 1, // 默认模式 1
|
|
44
47
|
});
|
|
45
48
|
```
|
|
46
49
|
|
package/docs/api/paddleocr.md
CHANGED
|
@@ -64,20 +64,23 @@ interface OCRResult {
|
|
|
64
64
|
#### loadV5 - 初始化 PP-OCRv5 模型,这是使用 OCR 功能的前提。
|
|
65
65
|
|
|
66
66
|
```typescript
|
|
67
|
-
function loadV5(maxSideLen?: number): boolean;
|
|
67
|
+
function loadV5(maxSideLen?: number, useGpu?: boolean): boolean;
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
**参数:**
|
|
71
71
|
|
|
72
|
-
| 参数名 | 类型
|
|
73
|
-
| ------------ |
|
|
74
|
-
| `maxSideLen` | number
|
|
72
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
73
|
+
| ------------ | ------- | -------- | ------ | ----------------------------------- |
|
|
74
|
+
| `maxSideLen` | number | 否 | 640 | 输入图像的最大边长,默认值为 640 |
|
|
75
|
+
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
75
76
|
|
|
76
77
|
**返回值:**
|
|
77
78
|
|
|
78
|
-
| 类型 | 描述
|
|
79
|
-
| ------- |
|
|
80
|
-
| boolean |
|
|
79
|
+
| 类型 | 描述 |
|
|
80
|
+
| ------- | ------------------------------------------ |
|
|
81
|
+
| boolean | 加载成功或模型已加载返回 `true`,否则返回 `false` |
|
|
82
|
+
|
|
83
|
+
重复调用 `loadV5` 时,如果模型已经加载,会直接返回 `true`,不会重新加载或应用新的参数。需要更换加载参数时,先调用 `free()` 释放模型。
|
|
81
84
|
|
|
82
85
|
**示例:**
|
|
83
86
|
|
|
@@ -119,7 +122,7 @@ function recognize(
|
|
|
119
122
|
|
|
120
123
|
| 类型 | 描述 |
|
|
121
124
|
| ------------- | --------------------------------------------------------------------------------- |
|
|
122
|
-
| `OCRResult[]` |
|
|
125
|
+
| `OCRResult[]` | 识别结果数组,坐标相对于裁剪区域 |
|
|
123
126
|
|
|
124
127
|
**示例:**
|
|
125
128
|
|
|
@@ -137,7 +140,7 @@ fullScreenResults.forEach((result, index) => {
|
|
|
137
140
|
logi(`文本 ${index + 1}: ${JSON.stringify(result)}`);
|
|
138
141
|
});
|
|
139
142
|
|
|
140
|
-
//
|
|
143
|
+
// 识别屏幕指定区域(返回相对裁剪区域的坐标)
|
|
141
144
|
const regionResults = paddleOcr.recognize("screen", 100, 100, 500, 300);
|
|
142
145
|
logi(`指定区域识别结果: ${JSON.stringify(regionResults)}`);
|
|
143
146
|
|
|
@@ -163,6 +166,30 @@ const urlResults = paddleOcr.recognize(
|
|
|
163
166
|
logi(`网络图片识别结果: ${JSON.stringify(urlResults)}`);
|
|
164
167
|
```
|
|
165
168
|
|
|
169
|
+
#### recognizeAbs - 执行 OCR 识别,并将结果坐标映射为原图/全屏绝对坐标。
|
|
170
|
+
|
|
171
|
+
参数与 `recognize` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
172
|
+
|
|
173
|
+
```typescript
|
|
174
|
+
function recognizeAbs(
|
|
175
|
+
input: string,
|
|
176
|
+
x?: number,
|
|
177
|
+
y?: number,
|
|
178
|
+
ex?: number,
|
|
179
|
+
ey?: number,
|
|
180
|
+
confidenceThreshold?: number,
|
|
181
|
+
): OCRResult[];
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**示例:**
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
const absResults = paddleOcr.recognizeAbs("screen", 100, 100, 500, 300);
|
|
188
|
+
if (absResults.length > 0) {
|
|
189
|
+
action.click(absResults[0].centerX, absResults[0].centerY);
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
166
193
|
#### findText - 在识别结果中查找目标文本并返回对应子串坐标。
|
|
167
194
|
|
|
168
195
|
```typescript
|
|
@@ -193,7 +220,7 @@ function findText(
|
|
|
193
220
|
|
|
194
221
|
| 类型 | 描述 |
|
|
195
222
|
| ------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
196
|
-
| `OCRResult[]` |
|
|
223
|
+
| `OCRResult[]` | 匹配结果数组,坐标相对于裁剪区域 |
|
|
197
224
|
|
|
198
225
|
**示例:**
|
|
199
226
|
|
|
@@ -224,11 +251,36 @@ if (hitResults.length > 0) {
|
|
|
224
251
|
logi("未命中目标文本");
|
|
225
252
|
}
|
|
226
253
|
|
|
227
|
-
//
|
|
254
|
+
// 在指定区域查找目标文本(返回相对裁剪区域的坐标)
|
|
228
255
|
const regionHits = paddleOcr.findText("screen", ["下一步"], 100, 100, 500, 400);
|
|
229
256
|
logi(`区域命中数量: ${regionHits.length}`);
|
|
230
257
|
```
|
|
231
258
|
|
|
259
|
+
#### findTextAbs - 查找目标文本,并将结果坐标映射为原图/全屏绝对坐标。
|
|
260
|
+
|
|
261
|
+
参数与 `findText` 相同。传入裁剪区域时,返回坐标可直接用于全屏点击。
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
function findTextAbs(
|
|
265
|
+
input: string,
|
|
266
|
+
targetTexts: string[],
|
|
267
|
+
x?: number,
|
|
268
|
+
y?: number,
|
|
269
|
+
ex?: number,
|
|
270
|
+
ey?: number,
|
|
271
|
+
confidenceThreshold?: number,
|
|
272
|
+
): OCRResult[];
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**示例:**
|
|
276
|
+
|
|
277
|
+
```javascript
|
|
278
|
+
const absHits = paddleOcr.findTextAbs("screen", ["确定"], 100, 100, 500, 400, 0.6);
|
|
279
|
+
if (absHits.length > 0) {
|
|
280
|
+
action.click(absHits[0].centerX, absHits[0].centerY);
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
232
284
|
### 资源管理
|
|
233
285
|
|
|
234
286
|
#### free - 释放 OCR 模型占用的内存资源。
|
package/docs/api/system.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
- **URL 操作**: 打开网页链接或应用 URL Scheme
|
|
11
11
|
- **系统通知**: 发送系统通知消息
|
|
12
12
|
- **内存管理**: 获取内存使用信息
|
|
13
|
+
- **CPU 管理**: 获取 CPU 使用率
|
|
13
14
|
- **Agent 服务**: 启动 快点 Agent 服务
|
|
14
15
|
|
|
15
16
|
## API 参考
|
|
@@ -427,37 +428,35 @@ function getMemoryInfo(): {
|
|
|
427
428
|
used: number;
|
|
428
429
|
available: number;
|
|
429
430
|
total: number;
|
|
431
|
+
systemUsed: number;
|
|
430
432
|
usagePercentage: number;
|
|
431
433
|
};
|
|
432
434
|
```
|
|
433
435
|
|
|
434
436
|
**返回值:**
|
|
435
437
|
|
|
436
|
-
| 类型 | 描述
|
|
437
|
-
| ----------------- |
|
|
438
|
-
| `used` |
|
|
439
|
-
| `available` |
|
|
440
|
-
| `total` |
|
|
441
|
-
| `
|
|
438
|
+
| 类型 | 描述 |
|
|
439
|
+
| ----------------- | ---------------------------- |
|
|
440
|
+
| `used` | 当前应用占用(单位:MB) |
|
|
441
|
+
| `available` | 系统可用内存(单位:MB) |
|
|
442
|
+
| `total` | 系统总内存(单位:MB) |
|
|
443
|
+
| `systemUsed` | 系统已用内存(单位:MB) |
|
|
444
|
+
| `usagePercentage` | 系统内存占用率(百分比) |
|
|
442
445
|
|
|
443
446
|
**说明:**
|
|
444
447
|
|
|
445
|
-
|
|
448
|
+
该方法返回当前应用占用和系统内存概况。`usagePercentage` 表示系统整体占用率。
|
|
446
449
|
|
|
447
450
|
**示例:**
|
|
448
451
|
|
|
449
452
|
```javascript
|
|
450
|
-
// 获取完整内存信息
|
|
451
453
|
const memInfo = system.getMemoryInfo();
|
|
452
|
-
logi(
|
|
453
|
-
logi(
|
|
454
|
-
logi(
|
|
455
|
-
logi(`总计: ${memInfo.total}MB`);
|
|
456
|
-
logi(`使用率: ${memInfo.usagePercentage}%`);
|
|
454
|
+
logi(`应用占用: ${memInfo.used}MB`);
|
|
455
|
+
logi(`系统内存: ${memInfo.systemUsed}/${memInfo.total}MB`);
|
|
456
|
+
logi(`系统占用: ${memInfo.usagePercentage}%`);
|
|
457
457
|
|
|
458
|
-
// 检查内存使用率
|
|
459
458
|
if (memInfo.usagePercentage > 80) {
|
|
460
|
-
logw("
|
|
459
|
+
logw("系统内存占用较高");
|
|
461
460
|
}
|
|
462
461
|
```
|
|
463
462
|
|
|
@@ -552,6 +551,59 @@ const memoryInfo = system.getMemoryInfo();
|
|
|
552
551
|
logi(`内存信息: 已使用 ${memoryInfo.used}MB / 总计 ${memoryInfo.total}MB`);
|
|
553
552
|
```
|
|
554
553
|
|
|
554
|
+
#### getSystemUsedMemory - 获取系统已用内存。
|
|
555
|
+
|
|
556
|
+
```typescript
|
|
557
|
+
function getSystemUsedMemory(): number;
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
**返回值:**
|
|
561
|
+
|
|
562
|
+
| 类型 | 描述 |
|
|
563
|
+
| -------- | -------------------------- |
|
|
564
|
+
| `number` | 系统已用内存大小(单位:MB) |
|
|
565
|
+
|
|
566
|
+
**说明:**
|
|
567
|
+
|
|
568
|
+
该方法返回系统物理内存的已使用量,计算方式为系统总内存减去可用内存,与 `getMemoryInfo()` 返回的 `systemUsed` 一致。
|
|
569
|
+
|
|
570
|
+
**示例:**
|
|
571
|
+
|
|
572
|
+
```javascript
|
|
573
|
+
// 获取系统已用内存
|
|
574
|
+
const systemUsed = system.getSystemUsedMemory();
|
|
575
|
+
logi(`系统已用内存: ${systemUsed}MB`);
|
|
576
|
+
|
|
577
|
+
// 与 getMemoryInfo 对比
|
|
578
|
+
const memoryInfo = system.getMemoryInfo();
|
|
579
|
+
logi(`系统已用: ${systemUsed}MB, getMemoryInfo: ${memoryInfo.systemUsed}MB`);
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### CPU 管理
|
|
583
|
+
|
|
584
|
+
#### getCpuUsage - 获取 CPU 使用率。
|
|
585
|
+
|
|
586
|
+
```typescript
|
|
587
|
+
function getCpuUsage(): number;
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
**返回值:**
|
|
591
|
+
|
|
592
|
+
| 类型 | 描述 |
|
|
593
|
+
| -------- | ---------------------------- |
|
|
594
|
+
| `number` | 当前应用 CPU 使用率(百分比) |
|
|
595
|
+
|
|
596
|
+
**示例:**
|
|
597
|
+
|
|
598
|
+
```javascript
|
|
599
|
+
const cpuUsage = system.getCpuUsage();
|
|
600
|
+
logi(`CPU 使用率: ${cpuUsage}%`);
|
|
601
|
+
|
|
602
|
+
if (cpuUsage > 80) {
|
|
603
|
+
logw("CPU 使用率较高,建议降低脚本负载");
|
|
604
|
+
}
|
|
605
|
+
```
|
|
606
|
+
|
|
555
607
|
### 快点 Agent 服务
|
|
556
608
|
|
|
557
609
|
#### startAgent - 启动 快点 Agent 服务。
|
package/docs/api/yolo.md
CHANGED
|
@@ -67,19 +67,21 @@ interface YoloResult {
|
|
|
67
67
|
function load(
|
|
68
68
|
paramPath: string,
|
|
69
69
|
binPath: string,
|
|
70
|
-
nc
|
|
71
|
-
version?: number
|
|
70
|
+
nc?: number,
|
|
71
|
+
version?: number,
|
|
72
|
+
useGpu?: boolean
|
|
72
73
|
): string | null;
|
|
73
74
|
```
|
|
74
75
|
|
|
75
76
|
**参数:**
|
|
76
77
|
|
|
77
|
-
| 参数名 | 类型
|
|
78
|
-
| ----------- |
|
|
79
|
-
| `paramPath` | string
|
|
80
|
-
| `binPath` | string
|
|
81
|
-
| `nc` | number
|
|
82
|
-
| `version` | number
|
|
78
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
79
|
+
| ----------- | ------- | -------- | ------ | ------------------------------------------- |
|
|
80
|
+
| `paramPath` | string | 是 | | NCNN 模型的 param 文件绝对路径 |
|
|
81
|
+
| `binPath` | string | 是 | | NCNN 模型的 bin 文件绝对路径 |
|
|
82
|
+
| `nc` | number | 否 | 0 | 模型的标签数量;传 `0` 或省略时根据模型输出自动推断,显式传入但不匹配时检测返回空数组 |
|
|
83
|
+
| `version` | number | 否 | 11 | YOLO 模型版本号(仅支持 8/11/26) |
|
|
84
|
+
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
83
85
|
|
|
84
86
|
**返回值:**
|
|
85
87
|
|
|
@@ -94,24 +96,26 @@ function load(
|
|
|
94
96
|
const modelId = yolo.load(
|
|
95
97
|
"yolov8n_ncnn_model/model.ncnn.param",
|
|
96
98
|
"yolov8n_ncnn_model/model.ncnn.bin",
|
|
97
|
-
|
|
98
|
-
8
|
|
99
|
+
0,
|
|
100
|
+
8,
|
|
101
|
+
false
|
|
99
102
|
);
|
|
100
103
|
```
|
|
101
104
|
|
|
102
105
|
#### loadV11 - 加载 YOLOv11 模型(兼容 yolov8 模型),这是使用目标检测功能的前提。
|
|
103
106
|
|
|
104
107
|
```typescript
|
|
105
|
-
function loadV11(paramPath: string, binPath: string, nc
|
|
108
|
+
function loadV11(paramPath: string, binPath: string, nc?: number, useGpu?: boolean): string | null;
|
|
106
109
|
```
|
|
107
110
|
|
|
108
111
|
**参数:**
|
|
109
112
|
|
|
110
|
-
| 参数名 | 类型
|
|
111
|
-
| ----------- |
|
|
112
|
-
| `paramPath` | string
|
|
113
|
-
| `binPath` | string
|
|
114
|
-
| `nc` | number
|
|
113
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
114
|
+
| ----------- | ------- | -------- | ------ | ------------------------------------------- |
|
|
115
|
+
| `paramPath` | string | 是 | | NCNN 模型的 param 文件绝对路径 |
|
|
116
|
+
| `binPath` | string | 是 | | NCNN 模型的 bin 文件绝对路径 |
|
|
117
|
+
| `nc` | number | 否 | 0 | 模型的标签数量;传 `0` 或省略时根据模型输出自动推断,显式传入但不匹配时检测返回空数组 |
|
|
118
|
+
| `useGpu` | boolean | 否 | false | 是否启用 GPU 加速 |
|
|
115
119
|
|
|
116
120
|
**返回值:**
|
|
117
121
|
|
|
@@ -127,7 +131,8 @@ function loadV11(paramPath: string, binPath: string, nc: number): string | null;
|
|
|
127
131
|
const modelId = yolo.loadV11(
|
|
128
132
|
"yolo11n_ncnn_model/model.ncnn.param",
|
|
129
133
|
"yolo11n_ncnn_model/model.ncnn.bin",
|
|
130
|
-
|
|
134
|
+
0, // 自动根据模型输出推断类别数量
|
|
135
|
+
false
|
|
131
136
|
);
|
|
132
137
|
|
|
133
138
|
if (modelId) {
|
|
@@ -175,7 +180,7 @@ function detect(
|
|
|
175
180
|
const modelId = yolo.loadV11(
|
|
176
181
|
"/yolo11n_ncnn_model/model.ncnn.param",
|
|
177
182
|
"/yolo11n_ncnn_model/model.ncnn.bin",
|
|
178
|
-
|
|
183
|
+
0
|
|
179
184
|
);
|
|
180
185
|
|
|
181
186
|
if (!modelId) {
|
|
@@ -261,6 +266,41 @@ const fastResults = yolo.detect(
|
|
|
261
266
|
logi(`快速检测结果: ${fastResults.length} 个物体`);
|
|
262
267
|
```
|
|
263
268
|
|
|
269
|
+
#### detectAbs - 对指定区域执行目标检测,并将结果坐标映射为原图/全屏绝对坐标。
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
function detectAbs(
|
|
273
|
+
modelId: string,
|
|
274
|
+
img: string,
|
|
275
|
+
x?: number,
|
|
276
|
+
y?: number,
|
|
277
|
+
ex?: number,
|
|
278
|
+
ey?: number,
|
|
279
|
+
targetSize?: number,
|
|
280
|
+
threshold?: number,
|
|
281
|
+
nmsThreshold?: number
|
|
282
|
+
): YoloResult[];
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**示例:**
|
|
286
|
+
|
|
287
|
+
```javascript
|
|
288
|
+
const absResults = yolo.detectAbs(
|
|
289
|
+
modelId,
|
|
290
|
+
"screen",
|
|
291
|
+
100,
|
|
292
|
+
100,
|
|
293
|
+
500,
|
|
294
|
+
400,
|
|
295
|
+
640,
|
|
296
|
+
0.4,
|
|
297
|
+
0.5
|
|
298
|
+
);
|
|
299
|
+
if (absResults.length > 0) {
|
|
300
|
+
action.click(absResults[0].centerX, absResults[0].centerY);
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
264
304
|
### 资源管理
|
|
265
305
|
|
|
266
306
|
#### free - 释放指定模型的资源。
|