@aiscene/aiserver 1.4.4 → 1.4.6
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/config/index.js +1 -1
- package/dist/debug/web-browser-pool.d.ts +8 -0
- package/dist/debug/web-browser-pool.d.ts.map +1 -1
- package/dist/debug/web-browser-pool.js +85 -17
- package/dist/debug/web-browser-pool.js.map +1 -1
- package/dist/executor/action-executor.js +1 -1
- package/package.json +3 -3
package/dist/config/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export function loadConfig(configPath) {
|
|
|
25
25
|
apiUrl: 'http://nethp-test.jd.com',
|
|
26
26
|
nodeId: defaultNodeId,
|
|
27
27
|
maxConcurrent: maxConcurrent,
|
|
28
|
-
timeout:
|
|
28
|
+
timeout: 3600000,
|
|
29
29
|
},
|
|
30
30
|
ai: {
|
|
31
31
|
baseUrl: cliArgs.modelBaseUrl ?? 'https://modelservice.jdcloud.com/v1',
|
|
@@ -18,6 +18,14 @@ export declare class WebBrowserPool {
|
|
|
18
18
|
private maxContextsPerBrowser;
|
|
19
19
|
private initializing;
|
|
20
20
|
constructor();
|
|
21
|
+
/** 从池中移除已断连的浏览器,防止在僵尸浏览器上调用 newContext */
|
|
22
|
+
private removeDeadBrowser;
|
|
23
|
+
/** 判断浏览器是否仍然存活 */
|
|
24
|
+
private isBrowserAlive;
|
|
25
|
+
/** 注册浏览器断连监听,自动从池中移除 */
|
|
26
|
+
private watchBrowser;
|
|
27
|
+
/** 清理池中已断连的浏览器 */
|
|
28
|
+
private purgeDeadBrowsers;
|
|
21
29
|
private ensureInit;
|
|
22
30
|
/**
|
|
23
31
|
* 申请一个 BrowserContext(隔离的浏览器上下文);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-browser-pool.d.ts","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAa;IAC7B,4CAA4C;IAC5C,OAAO,CAAC,aAAa,CAA+B;IACpD,YAAY;IACZ,OAAO,CAAC,UAAU,CAAS;IAC3B,iCAAiC;IACjC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,YAAY,CAA8B;;
|
|
1
|
+
{"version":3,"file":"web-browser-pool.d.ts","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAa;IAC7B,4CAA4C;IAC5C,OAAO,CAAC,aAAa,CAA+B;IACpD,YAAY;IACZ,OAAO,CAAC,UAAU,CAAS;IAC3B,iCAAiC;IACjC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,YAAY,CAA8B;;IAOlD,0CAA0C;IAC1C,OAAO,CAAC,iBAAiB;IASzB,kBAAkB;IAClB,OAAO,CAAC,cAAc;IAItB,wBAAwB;IACxB,OAAO,CAAC,YAAY;IAOpB,kBAAkB;IAClB,OAAO,CAAC,iBAAiB;YAeX,UAAU;IAiCxB;;;OAGG;IACG,cAAc,CAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAyDlE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -23,7 +23,44 @@ export class WebBrowserPool {
|
|
|
23
23
|
this.targetSize = Number(process.env.WEB_BROWSER_POOL_SIZE) || 2;
|
|
24
24
|
this.maxContextsPerBrowser = Number(process.env.WEB_BROWSER_POOL_MAX_CTX_PER_BROWSER) || 4;
|
|
25
25
|
}
|
|
26
|
+
/** 从池中移除已断连的浏览器,防止在僵尸浏览器上调用 newContext */
|
|
27
|
+
removeDeadBrowser(b) {
|
|
28
|
+
const idx = this.browsers.indexOf(b);
|
|
29
|
+
if (idx !== -1) {
|
|
30
|
+
this.browsers.splice(idx, 1);
|
|
31
|
+
this.loadByBrowser.delete(b);
|
|
32
|
+
logger.info(`[WebBrowserPool] Removed dead browser from pool, remaining=${this.browsers.length}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** 判断浏览器是否仍然存活 */
|
|
36
|
+
isBrowserAlive(b) {
|
|
37
|
+
return b && !b._closed && b.isConnected();
|
|
38
|
+
}
|
|
39
|
+
/** 注册浏览器断连监听,自动从池中移除 */
|
|
40
|
+
watchBrowser(b) {
|
|
41
|
+
b.on('disconnected', () => {
|
|
42
|
+
logger.warn(`[WebBrowserPool] Browser disconnected event received`);
|
|
43
|
+
this.removeDeadBrowser(b);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/** 清理池中已断连的浏览器 */
|
|
47
|
+
purgeDeadBrowsers() {
|
|
48
|
+
const before = this.browsers.length;
|
|
49
|
+
this.browsers = this.browsers.filter((b) => {
|
|
50
|
+
const alive = this.isBrowserAlive(b);
|
|
51
|
+
if (!alive) {
|
|
52
|
+
this.loadByBrowser.delete(b);
|
|
53
|
+
logger.warn(`[WebBrowserPool] Purged dead browser during acquireContext`);
|
|
54
|
+
}
|
|
55
|
+
return alive;
|
|
56
|
+
});
|
|
57
|
+
if (this.browsers.length < before) {
|
|
58
|
+
logger.info(`[WebBrowserPool] Purged ${before - this.browsers.length} dead browser(s), remaining=${this.browsers.length}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
26
61
|
async ensureInit() {
|
|
62
|
+
// 先清理已断连的僵尸浏览器
|
|
63
|
+
this.purgeDeadBrowsers();
|
|
27
64
|
if (this.playwright && this.browsers.length >= this.targetSize)
|
|
28
65
|
return;
|
|
29
66
|
if (this.initializing) {
|
|
@@ -38,6 +75,7 @@ export class WebBrowserPool {
|
|
|
38
75
|
while (this.browsers.length < this.targetSize) {
|
|
39
76
|
try {
|
|
40
77
|
const b = await this.playwright.chromium.launch({ headless: false });
|
|
78
|
+
this.watchBrowser(b);
|
|
41
79
|
this.browsers.push(b);
|
|
42
80
|
this.loadByBrowser.set(b, 0);
|
|
43
81
|
logger.info(`[WebBrowserPool] Prewarmed browser, pool=${this.browsers.length}/${this.targetSize}`);
|
|
@@ -60,10 +98,15 @@ export class WebBrowserPool {
|
|
|
60
98
|
*/
|
|
61
99
|
async acquireContext(contextOptions) {
|
|
62
100
|
await this.ensureInit();
|
|
63
|
-
//
|
|
101
|
+
// 选负载最低且存活的浏览器;若都满了就再额外 launch 一个(不计入池,由 release 时关掉)
|
|
64
102
|
let target = null;
|
|
65
103
|
let minLoad = Infinity;
|
|
66
104
|
for (const b of this.browsers) {
|
|
105
|
+
if (!this.isBrowserAlive(b)) {
|
|
106
|
+
// 跳过已断连的浏览器,并清理
|
|
107
|
+
this.removeDeadBrowser(b);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
67
110
|
const load = this.loadByBrowser.get(b) || 0;
|
|
68
111
|
if (load < minLoad && load < this.maxContextsPerBrowser) {
|
|
69
112
|
minLoad = load;
|
|
@@ -72,30 +115,55 @@ export class WebBrowserPool {
|
|
|
72
115
|
}
|
|
73
116
|
let isExtra = false;
|
|
74
117
|
if (!target) {
|
|
75
|
-
logger.info('[WebBrowserPool] Pool saturated, launching extra browser (will close on release)');
|
|
76
|
-
|
|
118
|
+
logger.info('[WebBrowserPool] Pool saturated or all dead, launching extra browser (will close on release)');
|
|
119
|
+
const b = await this.playwright.chromium.launch({ headless: false });
|
|
120
|
+
this.watchBrowser(b);
|
|
121
|
+
target = b;
|
|
77
122
|
isExtra = true;
|
|
78
123
|
}
|
|
79
124
|
else {
|
|
80
125
|
this.loadByBrowser.set(target, (this.loadByBrowser.get(target) || 0) + 1);
|
|
81
126
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
await context.close();
|
|
86
|
-
}
|
|
87
|
-
catch { /* ignore */ }
|
|
88
|
-
if (isExtra) {
|
|
127
|
+
try {
|
|
128
|
+
const context = await target.newContext(contextOptions);
|
|
129
|
+
const release = async () => {
|
|
89
130
|
try {
|
|
90
|
-
await
|
|
131
|
+
await context.close();
|
|
91
132
|
}
|
|
92
133
|
catch { /* ignore */ }
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
134
|
+
if (isExtra) {
|
|
135
|
+
try {
|
|
136
|
+
await target.close();
|
|
137
|
+
}
|
|
138
|
+
catch { /* ignore */ }
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
this.loadByBrowser.set(target, Math.max(0, (this.loadByBrowser.get(target) || 1) - 1));
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
return { browser: target, context, release };
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
// newContext 失败:浏览器可能已断连,清理后重试一次
|
|
148
|
+
logger.warn(`[WebBrowserPool] newContext failed: ${e.message}, retrying with fresh browser`);
|
|
149
|
+
this.removeDeadBrowser(target);
|
|
150
|
+
// 重新补池并重试
|
|
151
|
+
await this.ensureInit();
|
|
152
|
+
const freshBrowser = await this.playwright.chromium.launch({ headless: false });
|
|
153
|
+
this.watchBrowser(freshBrowser);
|
|
154
|
+
const freshContext = await freshBrowser.newContext(contextOptions);
|
|
155
|
+
const release = async () => {
|
|
156
|
+
try {
|
|
157
|
+
await freshContext.close();
|
|
158
|
+
}
|
|
159
|
+
catch { /* ignore */ }
|
|
160
|
+
try {
|
|
161
|
+
await freshBrowser.close();
|
|
162
|
+
}
|
|
163
|
+
catch { /* ignore */ }
|
|
164
|
+
};
|
|
165
|
+
return { browser: freshBrowser, context: freshContext, release };
|
|
166
|
+
}
|
|
99
167
|
}
|
|
100
168
|
async closeAll() {
|
|
101
169
|
for (const b of this.browsers) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-browser-pool.js","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IACjB,UAAU,GAAQ,IAAI,CAAC;IACvB,QAAQ,GAAU,EAAE,CAAC;IAC7B,4CAA4C;IACpC,aAAa,GAAqB,IAAI,GAAG,EAAE,CAAC;IACpD,YAAY;IACJ,UAAU,CAAS;IAC3B,iCAAiC;IACzB,qBAAqB,CAAS;IAC9B,YAAY,GAAyB,IAAI,CAAC;IAElD;QACE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QACvE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9C,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wBACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,4CAA4C,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBACrG,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,IAAI,CAAC,2CAA4C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC/E,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,cAAuC;QAEvC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,
|
|
1
|
+
{"version":3,"file":"web-browser-pool.js","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export class ActionExecutor extends BaseExecutor {
|
|
|
12
12
|
device = null;
|
|
13
13
|
agent = null;
|
|
14
14
|
/** action 整体超时固定 20 分钟 */
|
|
15
|
-
static ACTION_TIMEOUT =
|
|
15
|
+
static ACTION_TIMEOUT = 60 * 60 * 1000;
|
|
16
16
|
/** dump 更新监听器移除函数 */
|
|
17
17
|
removeDumpListener;
|
|
18
18
|
/** aiAct 单步看门狗:超过该时长没有新 dump 更新视为卡死 */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiscene/aiserver",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.6",
|
|
4
4
|
"description": "AI automation server with device management, task scheduling, and debug capabilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"format": "prettier --write src/"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@aiscene/android": "^
|
|
22
|
+
"@aiscene/android": "^9.0.3",
|
|
23
23
|
"@midscene/ios": "^1.6.0",
|
|
24
|
-
"@aiscene/web": "^
|
|
24
|
+
"@aiscene/web": "^9.0.0",
|
|
25
25
|
"@playwright/test": "^1.59.1",
|
|
26
26
|
"acorn": "^8.16.0",
|
|
27
27
|
"axios": "^1.7.9",
|