agentpage 0.0.32 → 0.0.34

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/README.md CHANGED
@@ -177,23 +177,6 @@ console.log(result.reply);
177
177
  pnpm demo
178
178
  ```
179
179
 
180
- ### Demo Prompt 建议(Element Plus)
181
-
182
- 在 `demo/App.vue` 中,推荐为 Demo 场景单独注册一条 prompt(key: `demo`),以减少无效调用和重复验证:
183
-
184
- ```ts
185
- agent.setSystemPrompt("demo", [
186
- "You are operating the Element Plus demo page.",
187
- "Prefer minimal action arrays and complete independent visible actions in one round.",
188
- "Do not repeat verification calls unless the user explicitly asks for verification.",
189
- ].join(" "));
190
- ```
191
-
192
- 这三条规则分别约束:
193
- - 最小化动作数组,减少冗余工具调用。
194
- - 同一轮优先完成当前可见且彼此独立的动作,提升收敛速度。
195
- - 非用户明确要求时,不重复做验证型调用,避免空转。
196
-
197
180
  ### 按路由构建 AI Skill(推荐范式)
198
181
 
199
182
  ```ts
@@ -380,33 +363,14 @@ agent.clearHistory(); // 手动清空历史
380
363
 
381
364
  | 参数 | 类型 | 默认值 | 说明 |
382
365
  | --- | --- | --- | --- |
383
- | `maxDepth` | `number` | `8`(chat 首轮)/ `7`(page_info.snapshot) | DOM 最大遍历深度,超过该深度的子树不会输出 |
366
+ | `maxDepth` | `number` | `12`(chat 首轮)/ `12`(page_info.snapshot) | DOM 最大遍历深度,超过该深度的子树不会输出 |
384
367
  | `viewportOnly` | `boolean` | `false`(chat 首轮)/ `true`(page_info.snapshot) | 是否仅保留与视口相交的元素 |
385
368
  | `pruneLayout` | `boolean` | `true` | 是否折叠无意义纯布局容器(div/span/section 等) |
386
- | `maxNodes` | `number` | `500`(chat 首轮)/ `280`(page_info.snapshot) | 快照最大节点输出数量,超出后停止遍历并追加截断提示 |
387
- | `maxChildren` | `number` | `30`(chat 首轮)/ `32`(page_info.snapshot) | 每个父节点最多保留的子元素数量 |
369
+ | `maxNodes` | `number` | `500`(chat 首轮)/ `220`(page_info.snapshot) | 快照最大节点输出数量,超出后停止遍历并追加截断提示 |
370
+ | `maxChildren` | `number` | `30`(chat 首轮)/ `25`(page_info.snapshot) | 每个父节点最多保留的子元素数量 |
388
371
  | `maxTextLength` | `number` | `40` | 单节点文本截断长度(字符数) |
389
372
  | `refStore` | `RefStore` | 自动创建 | hash ID 映射表(一般无需手动传入,WebAgent 自动管理) |
390
373
 
391
- ### 全局事件监听追踪(默认开启)
392
-
393
- 从 `0.0.26` 开始,`web` 入口会在模块加载时默认安装全局监听追踪补丁:
394
-
395
- - 劫持 `EventTarget.prototype.addEventListener/removeEventListener`
396
- - 先执行原生调用,再记录事件(不阻断业务逻辑)
397
- - 仅记录 `Element` 目标,使用 `WeakMap<Element, Set<string>>`
398
-
399
- 快照侧联动:
400
-
401
- - `page_info.snapshot` 会为命中事件追踪的元素输出 `listeners="click,input,..."`
402
- - 交互优先级识别会把运行时监听事件纳入判断(不仅依赖 `onclick/role` 等静态属性)
403
- - 智能剪枝会优先保留“自身有事件绑定”的容器,并在中浅层对子树事件做受预算探测,尽量保留可操作链路
404
-
405
- 边界说明:
406
-
407
- - 事件委托场景只能记录到父容器(这是浏览器事件机制本身决定的)
408
- - 补丁安装前已绑定的历史监听不会被回溯记录;建议尽早初始化 `WebAgent`
409
-
410
374
  ### 快照参数详细说明
411
375
 
412
376
  #### `maxDepth`(遍历深度)
@@ -415,7 +379,7 @@ agent.clearHistory(); // 手动清空历史
415
379
 
416
380
  - 设置过低(如 3-4):可能遗漏深层嵌套的表单控件或弹窗内容
417
381
  - 设置过高(如 12+):快照体积膨胀,浪费 token 且可能包含大量无用结构层
418
- - 推荐值:`6-8`,覆盖大多数组件库嵌套层级
382
+ - 推荐值:`10-12`,覆盖大多数组件库深层嵌套场景
419
383
 
420
384
  #### `viewportOnly`(视口裁剪)
421
385
 
@@ -442,10 +406,6 @@ agent.clearHistory(); // 手动清空历史
442
406
 
443
407
  折叠规则:
444
408
  - 没有 `id`、没有语义标签(如 `main`/`nav`)、没有交互属性、没有直接文本的纯布局div/span
445
- - 浅层布局主干默认保留(避免页面主结构被过早折叠)
446
- - 自身有事件绑定(`on*` 或追踪到 listeners)的容器优先保留
447
- - 中浅层子树出现事件绑定时,在预算范围内尽量保留相关容器
448
- - `svg` 装饰节点与 `__SVG_SPRITE_NODE__` sprite 容器会被过滤,避免噪音吞掉节点预算
449
409
  - 子节点直接**提升**输出到父级位置
450
410
  - 当同一折叠容器提升出多个相邻节点时,用 `collapsed-group` 括号块标记它们的来源关联
451
411
 
@@ -467,9 +427,9 @@ agent.clearHistory(); // 手动清空历史
467
427
 
468
428
  | 场景 | maxDepth | viewportOnly | maxNodes | maxChildren | 原因 |
469
429
  | --- | --- | --- | --- | --- | --- |
470
- | `chat()` 首轮 | 8 | false | 500 | 30 | 优先完整性,提供充足的页面上下文 |
471
- | `page_info.snapshot`(loop 内) | 8 | false | 500 | 30 | 与首轮对齐,保证一致性 |
472
- | `page_info.snapshot`(手动调用) | 7 | true | 280 | 32 | 略放宽额度,兼顾结构完整与可操作性 |
430
+ | `chat()` 首轮 | 12 | false | 500 | 30 | 优先完整性,提供充足的页面上下文 |
431
+ | `page_info.snapshot`(loop 内) | 12 | false | 500 | 30 | 与首轮对齐,保证一致性 |
432
+ | `page_info.snapshot`(手动调用) | 12 | true | 220 | 25 | 较小体积,适合局部更新 |
473
433
 
474
434
  ---
475
435
 
@@ -893,7 +853,7 @@ AutoPilot 内置 5 个工具,覆盖浏览器交互的核心能力。所有工
893
853
  | --- | --- | --- | --- |
894
854
  | `action` | `string` | ✅ | 信息获取动作类型 |
895
855
  | `selector` | `string` | query_all | CSS 选择器(用于 `query_all` 动作) |
896
- | `maxDepth` | `number` | snapshot | 最大遍历深度(默认 6) |
856
+ | `maxDepth` | `number` | snapshot | 最大遍历深度(默认 12) |
897
857
  | `viewportOnly` | `boolean` | snapshot | 是否仅保留视口内元素(默认 true) |
898
858
  | `pruneLayout` | `boolean` | snapshot | 是否折叠布局容器(默认 true) |
899
859
  | `maxNodes` | `number` | snapshot | 最大节点数(默认 220) |
@@ -1000,7 +960,8 @@ src/
1000
960
  │ │ ├── helpers.ts
1001
961
  │ │ ├── snapshot.ts
1002
962
  │ │ ├── messages.ts
1003
- │ │ └── recovery.ts
963
+ │ │ ├── recovery.ts
964
+ │ │ └── LOOP_MECHANISM.md
1004
965
  │ └── ai-client/
1005
966
  │ ├── index.ts
1006
967
  │ ├── constants.ts
@@ -1008,26 +969,21 @@ src/
1008
969
  │ ├── openai.ts
1009
970
  │ ├── anthropic.ts
1010
971
  │ ├── deepseek.ts
972
+ │ ├── doubao.ts
973
+ │ ├── qwen.ts
1011
974
  │ └── sse.ts
1012
975
  └── web/
1013
976
  ├── index.ts
1014
- ├── event-listener-tracker.ts # 全局事件监听追踪(WeakMap<Element, Set<string>>)
1015
977
  ├── dom-tool.ts # 兼容转发层(re-export)
1016
978
  ├── navigate-tool.ts # 兼容转发层(re-export)
1017
979
  ├── page-info-tool.ts # 兼容转发层(re-export)
1018
980
  ├── wait-tool.ts # 兼容转发层(re-export)
1019
981
  ├── evaluate-tool.ts # 兼容转发层(re-export)
982
+ ├── event-listener-tracker.ts # 全局事件监听追踪器
1020
983
  ├── ref-store.ts
1021
984
  ├── messaging.ts
1022
985
  └── tools/
1023
- ├── dom-tool/
1024
- │ ├── index.ts # createDomTool 入口 + schema + execute 路由
1025
- │ ├── constants.ts # 常量(DEFAULT_WAIT_MS, KEY_CODE_MAP 等)
1026
- │ ├── query.ts # 元素查找、RefStore 管理、describeElement
1027
- │ ├── actionability.ts # 可操作性检查(可见/禁用/可编辑/稳定/命中)
1028
- │ ├── events.ts # 事件派发(click/hover/input 链、键盘 press)
1029
- │ ├── resolve.ts # 目标解析(retarget、checkable/editable 穿透、ARIA widget→input 穿透)
1030
- │ └── dropdown.ts # 自定义下拉增强(findVisibleOptionByText)
986
+ ├── dom-tool.ts
1031
987
  ├── navigate-tool.ts
1032
988
  ├── page-info-tool.ts
1033
989
  ├── wait-tool.ts
@@ -1144,7 +1100,7 @@ loop 对本轮返回做以下处理:
1144
1100
  5. 刷新快照进入下一轮
1145
1101
  6. 更新下一轮任务文本:
1146
1102
  - 优先使用 `REMAINING`
1147
- - 若缺失 `REMAINING` 且本轮有执行动作:仅在存在明确顺序连接词(如 `然后`/`next`/`->`)时,保守地启发式推进一步
1103
+ - 若缺失 `REMAINING` 且本轮有执行动作:按线性任务剔除做启发式推进(避免整段原任务重复)
1148
1104
  - 若缺失 `REMAINING` 且本轮无执行进展:保持当前任务不推进(按协议回退)
1149
1105
  7. 若“remaining 未完成 + 无工具调用”:
1150
1106
  - 不直接结束
@@ -1173,8 +1129,6 @@ loop 对本轮返回做以下处理:
1173
1129
 
1174
1130
  ### 5) 线性任务剔除示例(标准范式)
1175
1131
 
1176
- 注意:该示例仅适用于任务文本中包含明确顺序连接词的场景(例如 `然后`、`next`、`->`)。
1177
-
1178
1132
  总任务:`点击按钮 -> 输入框输入 "abc" -> 发送`
1179
1133
 
1180
1134
  - 第 1 轮
@@ -1203,13 +1157,13 @@ loop 对本轮返回做以下处理:
1203
1157
 
1204
1158
  ### A. System Prompt(全局规则层)
1205
1159
 
1206
- 由 `src/core/system-prompt.ts` 生成,采用 Decision Framework 架构:
1160
+ 由 `src/core/system-prompt.ts` 生成,职责是定义不可变执行约束:
1207
1161
 
1208
- - 五阶段决策流:ANALYZE → ASSESS → CHOOSE → EXECUTE → OUTPUT
1209
- - Targeting Rules:hash selector 优先、ordinal 1-based 视觉序
1210
- - Constraints:form-input 顺序、DOM 变化断轮、禁止冗余 page_info
1211
- - Listener Abbreviations:快照中缩写到原始事件的映射
1212
- - 工具部分由各工具 `t.description` 动态注入,不在 prompt 正文重复
1162
+ - 从当前快照直接执行,不复述任务
1163
+ - 任务按“剔除模型”推进(current + previous + this-round -> new remaining)
1164
+ - 禁止 `page_info` 作为规划手段
1165
+ - 可见目标尽量同轮批量执行
1166
+ - DOM 会变化的动作执行后在下一轮继续
1213
1167
  - 统一输出 `REMAINING` 协议
1214
1168
 
1215
1169
  ### B. Round Messages(轮次状态层)
@@ -1231,7 +1185,7 @@ loop 对本轮返回做以下处理:
1231
1185
  - 首轮使用前端注入的 `initialSnapshot`
1232
1186
  - 每轮执行后刷新快照
1233
1187
  - 推进 `remainingInstruction`
1234
- - `REMAINING` 缺失且本轮有执行动作时:仅在显式序列任务下启发式推进一步
1188
+ - `REMAINING` 缺失且本轮有执行动作时:按线性任务剔除做启发式推进
1235
1189
  - `REMAINING` 缺失且本轮无执行进展时:保持当前 remaining
1236
1190
  - 防空转、防重复、防无限循环
1237
1191
  - DOM 变更动作触发强制断轮(等待下一轮新快照)
@@ -1276,6 +1230,7 @@ flowchart LR
1276
1230
  subgraph Web[web 层]
1277
1231
  WI[web/index.ts\nWebAgent]
1278
1232
  WT[web tools]
1233
+ ELT[event-listener-tracker.ts]
1279
1234
  RS[ref-store.ts]
1280
1235
  MG[messaging.ts]
1281
1236
  end
@@ -1292,6 +1247,7 @@ flowchart LR
1292
1247
  WI --> SP
1293
1248
  WI --> WT
1294
1249
  WT --> RS
1250
+ WT --> ELT
1295
1251
  WI --> MG
1296
1252
 
1297
1253
  AL --> AI
@@ -1493,8 +1449,37 @@ agent.registerTool({
1493
1449
  - `web`(浏览器实现):
1494
1450
  - `WebAgent`:入口编排、记忆、autoSnapshot、callbacks
1495
1451
  - `tools`:DOM/导航/页面信息/等待/evaluate
1452
+ - `event-listener-tracker`:全局事件监听追踪(`EventTarget.prototype` 补丁)
1496
1453
  - `RefStore`:`#hashID -> Element` 映射
1497
1454
 
1455
+ #### 1.1.1 事件监听追踪器(event-listener-tracker)
1456
+
1457
+ `src/web/event-listener-tracker.ts` 是快照交互性判定的基础设施:
1458
+
1459
+ **原理:**
1460
+ - 在 `web/index.ts` 模块加载时默认调用 `installEventListenerTracking()`(幂等),一次性补丁 `EventTarget.prototype.addEventListener/removeEventListener`
1461
+ - 所有后续的 `addEventListener` 调用都会被拦截并记录,`removeEventListener` 同理反向清除
1462
+ - 仅记录 Element 实例(跳过 `document`/`window` 等非元素目标)
1463
+ - 内部用 `WeakMap<Element, Set<string>>` 存储,元素被 GC 后自动释放
1464
+
1465
+ **导出 API:**
1466
+
1467
+ | 函数 | 说明 |
1468
+ | --- | --- |
1469
+ | `installEventListenerTracking()` | 安装全局补丁(幂等) |
1470
+ | `getTrackedElementEvents(el)` | 返回元素已记录的事件名数组(排序后) |
1471
+ | `hasTrackedElementEvents(el)` | 判断元素是否存在至少一个被追踪的事件绑定 |
1472
+
1473
+ **下游消费方(page-info-tool.ts):**
1474
+ - `hasInteractiveTrackedEvents(el)` — 判断元素是否绑定了 INTERACTIVE_EVENTS 集合中的事件(click/input/change/focus 等 15 种),作为 hash ID 分配和优先级排序的首要判据
1475
+ - `getTrackedElementEvents(el)` — 输出快照中的 `listeners="clk,inp,..."` 事件简写标注
1476
+ - `getElementPriorityScore(el)` — 基于事件类型计算优先级分数,决定同层子元素输出顺序
1477
+
1478
+ **安全约束:**
1479
+ - 补丁不改变原调用语义(先执行原生方法,再做记录)
1480
+ - 追踪失败时静默兜底,不影响业务代码执行
1481
+ - 不记录 listener 函数引用,避免内存泄漏
1482
+
1498
1483
  #### 1.2 Chat 生命周期(从 `WebAgent.chat()` 到收敛)
1499
1484
 
1500
1485
  1. 创建本次会话 `RefStore`,并激活到 DOM 工具层。
@@ -1547,7 +1532,7 @@ agent.registerTool({
1547
1532
 
1548
1533
  #### 2.3 缺失协议时的回退策略
1549
1534
 
1550
- - 若本轮有执行动作:仅当当前任务包含显式顺序连接词时,启发式推进一步(`reduceRemainingHeuristically`)
1535
+ - 若本轮有执行动作:启发式线性剔除(`reduceRemainingHeuristically`)
1551
1536
  - 若本轮无推进:保持 remaining 不变,并标记协议违约风险
1552
1537
 
1553
1538
  #### 2.4 协议修复回合(Protocol Violation Round)
@@ -1614,14 +1599,14 @@ agent.registerTool({
1614
1599
  #### 5.2 Core 与 Web 的参数默认值差异(很重要)
1615
1600
 
1616
1601
  - `core/agent-loop/snapshot.ts` 默认读取:
1617
- - `maxDepth=8`
1602
+ - `maxDepth=12`
1618
1603
  - `viewportOnly=false`(优先完整性)
1619
1604
  - `pruneLayout=true`
1620
1605
  - `maxNodes=500`
1621
1606
  - `maxChildren=30`
1622
1607
  - `maxTextLength=40`
1623
1608
  - `web/tools/page-info-tool.ts` 的 `snapshot` action 默认值:
1624
- - `maxDepth=6`
1609
+ - `maxDepth=12`
1625
1610
  - `viewportOnly=true`
1626
1611
  - `pruneLayout=true`
1627
1612
  - `maxNodes=220`
@@ -1640,13 +1625,17 @@ agent.registerTool({
1640
1625
  - 子节点提升输出
1641
1626
  - 多子节点提升时输出 `collapsed-group` 括号块
1642
1627
  5. 交互优先:同层先输出 interactive children
1643
- 6. 预算控制:`maxNodes` + `maxChildren` 截断
1644
- 7. 文字压缩:`maxTextLength`
1645
- 8. 属性压缩:仅保留关键属性、运行时状态(`checked/disabled/readonly/selected/val`)
1628
+ 6. 仅交互节点分配 hash ID:通过 `hasInteractiveTrackedEvents()` + 语义标签 + ARIA role 判定交互性,非交互节点不输出 `#hashId`
1629
+ 7. 角色优先标签:当元素有 `INTERACTIVE_ROLES` 中的 ARIA role 且与 tag 不等价时,用 role 作为显示标签(`[combobox]` 替代 `[input] role="combobox"`),同时去除冗余 `role` 属性
1630
+ 8. 预算控制:`maxNodes` + `maxChildren` 截断
1631
+ 9. 文字压缩:`maxTextLength`
1632
+ 10. 属性压缩:仅保留关键属性、运行时状态(`checked/disabled/readonly/selected/val`)
1633
+ 11. 事件信号压缩:输出 `listeners="clk,inp,chg,..."` 简写,帮助模型识别真实交互链路
1646
1634
 
1647
1635
  #### 5.4 RefStore 与 hash selector
1648
1636
 
1649
- - 快照中元素使用 `#hashId`(而非长 CSS/XPath
1637
+ - 快照中仅交互元素携带 `#hashId`(而非长 CSS/XPath),非交互元素(标题/标签/纯文本)无标识
1638
+ - 交互性判定:运行时事件绑定(`hasInteractiveTrackedEvents`)> 语义标签(`input/button/a`)> ARIA role(`INTERACTIVE_ROLES` 集合)> `tabindex`/`contenteditable`
1650
1639
  - 工具执行时优先按 hash 命中真实 Element
1651
1640
  - 页面变化/恢复快照时会重建映射,避免旧引用污染
1652
1641
 
@@ -1654,7 +1643,7 @@ agent.registerTool({
1654
1643
 
1655
1644
  ### 6. Tools 能力总表(详细)
1656
1645
 
1657
- #### 6.1 `dom` 工具(`src/web/tools/dom-tool/`)
1646
+ #### 6.1 `dom` 工具(`src/web/tools/dom-tool.ts`)
1658
1647
 
1659
1648
  支持动作:
1660
1649
 
@@ -1763,36 +1752,36 @@ agent.registerTool({
1763
1752
 
1764
1753
  1. **System Prompt(稳定规则层)**
1765
1754
  - 由 `buildSystemPrompt()` 生成
1766
- - 采用 Decision Framework 架构:ANALYZE → ASSESS → CHOOSE → EXECUTE → OUTPUT
1767
- - 包含 Targeting Rules、Constraints、Listener Abbreviations
1768
- - 工具部分由各工具 `t.description` 动态注入,prompt 不重复工具能力描述
1755
+ - 永久规则:快照优先、批处理、输入顺序、禁止 page_info、REMAINING 协议
1769
1756
  2. **Round Message(动态状态层)**
1770
1757
  - 由 `buildCompactMessages()` 生成
1771
- - 包含当前 remaining、Master goal 锚点(防漂移)、done steps、上轮计划、上轮输出归一化、最新快照
1758
+ - 包含当前 remaining、done steps、上轮计划、上轮输出归一化、最新快照
1772
1759
  3. **Recovery Context(修复层)**
1773
1760
  - Not-found retry context
1774
1761
  - Protocol violation hint
1775
1762
 
1776
1763
  #### 7.2 System Prompt 的关键规则(当前实现)
1777
1764
 
1778
- `buildSystemPrompt()` 采用 Decision Framework 架构,不再逐条罗列规则:
1765
+ `buildSystemPrompt()` 中的核心约束(英文原文语义):
1779
1766
 
1780
- - 五阶段决策流:ANALYZE snapshot ASSESS targets → CHOOSE action → EXECUTE → OUTPUT
1781
- - Targeting Rules:hash selector 优先、ordinal 为 1-based 视觉序
1782
- - Constraints:form-input 顺序约束(focus/click fill/type/select_option)、DOM 结构变化后断轮
1783
- - Listener Abbreviations:`clk`/`inp`/`chg`/`kdn`/`kup` 等缩写映射
1784
- - 工具描述去重:工具部分完全由各工具 `t.description` 动态注入,prompt 不再重复
1785
- - 统一输出 `REMAINING: <text>` 或 `REMAINING: DONE`
1767
+ - 从“当前快照 + 当前 remaining”直接执行,不复述任务
1768
+ - 每轮按 task reduction 推进
1769
+ - 仅交互元素(有事件/输入框/按钮/链接等)携带 `#hashID`,无 `#hashID` 的元素为上下文
1770
+ - 角色优先标签:方括号标签可能是 ARIA role 而非 HTML tag(如 `[combobox]`/`[slider]`),表示交互模式
1771
+ - 使用 hash selector,不猜 CSS
1772
+ - 可见且互不依赖的动作同轮批量执行
1773
+ - 输入顺序强约束:`focus/click -> fill/type/select_option`
1774
+ - 多字段交替对执行(防止 focus-only 空轮)
1775
+ - DOM 结构变化动作后断轮
1776
+ - 禁用 `page_info` 作为规划手段
1777
+ - 输出 `REMAINING: ...` 或 `REMAINING: DONE`
1786
1778
 
1787
1779
  #### 7.3 Round 0 与 Round 1+ 差异
1788
1780
 
1789
1781
  - Round 0:原始任务 + 首轮快照
1790
- - Round 1+:以 remaining 驱动;当 remaining 与原始任务不同时,注入 `Master goal (reference only)` 锚点
1782
+ - Round 1+:不再重复原始用户输入,改为“remaining 驱动”
1791
1783
 
1792
- Master goal 锚点的设计目的:
1793
- - 防止 remaining 因模型错误缩减而偏离原始目标(任务漂移)
1794
- - 标注 `reference only — do NOT restart from scratch`,避免模型回头重做
1795
- - 让模型能随时交叉校验当前行动是否符合原始意图
1784
+ 这能显著降低“回头重做”的概率。
1796
1785
 
1797
1786
  #### 7.4 显式 UI 意图判定
1798
1787
 
package/dist/index.d.mts CHANGED
@@ -164,16 +164,6 @@ declare class RefStore {
164
164
  get(id: string): Element | undefined;
165
165
  /** 检查 hash ID 是否存在 */
166
166
  has(id: string): boolean;
167
- /** 删除指定 hash ID 映射,返回是否删除成功。 */
168
- delete(id: string): boolean;
169
- /**
170
- * 清理失效引用:
171
- * - 仅保留 keepIds 中的映射(若提供)
172
- * - 自动移除已脱离文档(isConnected=false)的元素
173
- *
174
- * @returns 被移除的映射数量
175
- */
176
- prune(keepIds?: ReadonlySet<string>): number;
177
167
  /** 清空所有映射 */
178
168
  clear(): void;
179
169
  /**
@@ -192,7 +182,7 @@ declare class RefStore {
192
182
  //#region src/web/tools/page-info-tool.d.ts
193
183
  /** 快照配置选项 */
194
184
  type SnapshotOptions = {
195
- /** 最大遍历深度(默认 7) */maxDepth?: number;
185
+ /** 最大遍历深度(默认 12) */maxDepth?: number;
196
186
  /**
197
187
  * 视口裁剪:只保留与视口相交的元素(默认 true)。
198
188
  * 开启后,完全在视口外的元素会被跳过,大幅减少 token 消耗。
@@ -210,8 +200,8 @@ type SnapshotOptions = {
210
200
  * 传入 RefStore 实例后,每个元素使用确定性 hash ID 替代完整 XPath,
211
201
  * 大幅减少 token 消耗。dom-tool 通过 RefStore.get(id) 解析回 DOM 元素。
212
202
  */
213
- refStore?: RefStore; /** 最大输出节点数(默认 280),超过后停止继续遍历。 */
214
- maxNodes?: number; /** 每个父节点最多输出的子元素数(默认 32),超出部分会折叠。 */
203
+ refStore?: RefStore; /** 最大输出节点数(默认 220),超过后停止继续遍历。 */
204
+ maxNodes?: number; /** 每个父节点最多输出的子元素数(默认 25),超出部分会折叠。 */
215
205
  maxChildren?: number; /** 文本截断长度(默认 40)。 */
216
206
  maxTextLength?: number;
217
207
  /**
@@ -249,7 +239,7 @@ type SnapshotOptions = {
249
239
  declare function generateSnapshot(root?: Element, options?: SnapshotOptions | number): string;
250
240
  declare function createPageInfoTool(): ToolDefinition;
251
241
  //#endregion
252
- //#region src/web/tools/dom-tool/index.d.ts
242
+ //#region src/web/tools/dom-tool.d.ts
253
243
  declare function createDomTool(): ToolDefinition;
254
244
  //#endregion
255
245
  //#region src/web/tools/navigate-tool.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/tool-registry.ts","../src/core/types.ts","../src/core/agent-loop/types.ts","../src/web/ref-store.ts","../src/web/tools/page-info-tool.ts","../src/web/tools/dom-tool/index.ts","../src/web/tools/navigate-tool.ts","../src/web/tools/wait-tool.ts","../src/web/tools/evaluate-tool.ts","../src/web/messaging.ts","../src/web/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/tool-registry.ts","../src/core/types.ts","../src/core/agent-loop/types.ts","../src/web/ref-store.ts","../src/web/tools/page-info-tool.ts","../src/web/tools/dom-tool.ts","../src/web/tools/navigate-tool.ts","../src/web/tools/wait-tool.ts","../src/web/tools/evaluate-tool.ts","../src/web/messaging.ts","../src/web/index.ts"],"mappings":"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"}