agentpage 0.0.25 → 0.0.27

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 (2) hide show
  1. package/README.md +68 -22
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -177,6 +177,23 @@ 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
+
180
197
  ### 按路由构建 AI Skill(推荐范式)
181
198
 
182
199
  ```ts
@@ -371,6 +388,25 @@ agent.clearHistory(); // 手动清空历史
371
388
  | `maxTextLength` | `number` | `40` | 单节点文本截断长度(字符数) |
372
389
  | `refStore` | `RefStore` | 自动创建 | hash ID 映射表(一般无需手动传入,WebAgent 自动管理) |
373
390
 
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
+
374
410
  ### 快照参数详细说明
375
411
 
376
412
  #### `maxDepth`(遍历深度)
@@ -971,6 +1007,7 @@ src/
971
1007
  │ └── sse.ts
972
1008
  └── web/
973
1009
  ├── index.ts
1010
+ ├── event-listener-tracker.ts # 全局事件监听追踪(WeakMap<Element, Set<string>>)
974
1011
  ├── dom-tool.ts # 兼容转发层(re-export)
975
1012
  ├── navigate-tool.ts # 兼容转发层(re-export)
976
1013
  ├── page-info-tool.ts # 兼容转发层(re-export)
@@ -979,7 +1016,14 @@ src/
979
1016
  ├── ref-store.ts
980
1017
  ├── messaging.ts
981
1018
  └── tools/
982
- ├── dom-tool.ts
1019
+ ├── dom-tool/
1020
+ │ ├── index.ts # createDomTool 入口 + schema + execute 路由
1021
+ │ ├── constants.ts # 常量(DEFAULT_WAIT_MS, KEY_CODE_MAP 等)
1022
+ │ ├── query.ts # 元素查找、RefStore 管理、describeElement
1023
+ │ ├── actionability.ts # 可操作性检查(可见/禁用/可编辑/稳定/命中)
1024
+ │ ├── events.ts # 事件派发(click/hover/input 链、键盘 press)
1025
+ │ ├── resolve.ts # 目标解析(retarget、checkable/editable 穿透、ARIA widget→input 穿透)
1026
+ │ └── dropdown.ts # 自定义下拉增强(findVisibleOptionByText)
983
1027
  ├── navigate-tool.ts
984
1028
  ├── page-info-tool.ts
985
1029
  ├── wait-tool.ts
@@ -1153,13 +1197,13 @@ loop 对本轮返回做以下处理:
1153
1197
 
1154
1198
  ### A. System Prompt(全局规则层)
1155
1199
 
1156
- 由 `src/core/system-prompt.ts` 生成,职责是定义不可变执行约束:
1200
+ 由 `src/core/system-prompt.ts` 生成,采用 Decision Framework 架构:
1157
1201
 
1158
- - 从当前快照直接执行,不复述任务
1159
- - 任务按“剔除模型”推进(current + previous + this-round -> new remaining)
1160
- - 禁止 `page_info` 作为规划手段
1161
- - 可见目标尽量同轮批量执行
1162
- - DOM 会变化的动作执行后在下一轮继续
1202
+ - 五阶段决策流:ANALYZE → ASSESS → CHOOSE → EXECUTE → OUTPUT
1203
+ - Targeting Rules:hash selector 优先、ordinal 1-based 视觉序
1204
+ - Constraints:form-input 顺序、DOM 变化断轮、禁止冗余 page_info
1205
+ - Listener Abbreviations:快照中缩写到原始事件的映射
1206
+ - 工具部分由各工具 `t.description` 动态注入,不在 prompt 正文重复
1163
1207
  - 统一输出 `REMAINING` 协议
1164
1208
 
1165
1209
  ### B. Round Messages(轮次状态层)
@@ -1604,7 +1648,7 @@ agent.registerTool({
1604
1648
 
1605
1649
  ### 6. Tools 能力总表(详细)
1606
1650
 
1607
- #### 6.1 `dom` 工具(`src/web/tools/dom-tool.ts`)
1651
+ #### 6.1 `dom` 工具(`src/web/tools/dom-tool/`)
1608
1652
 
1609
1653
  支持动作:
1610
1654
 
@@ -1713,34 +1757,36 @@ agent.registerTool({
1713
1757
 
1714
1758
  1. **System Prompt(稳定规则层)**
1715
1759
  - 由 `buildSystemPrompt()` 生成
1716
- - 永久规则:快照优先、批处理、输入顺序、禁止 page_info、REMAINING 协议
1760
+ - 采用 Decision Framework 架构:ANALYZE → ASSESS → CHOOSE → EXECUTE → OUTPUT
1761
+ - 包含 Targeting Rules、Constraints、Listener Abbreviations
1762
+ - 工具部分由各工具 `t.description` 动态注入,prompt 不重复工具能力描述
1717
1763
  2. **Round Message(动态状态层)**
1718
1764
  - 由 `buildCompactMessages()` 生成
1719
- - 包含当前 remaining、done steps、上轮计划、上轮输出归一化、最新快照
1765
+ - 包含当前 remaining、Master goal 锚点(防漂移)、done steps、上轮计划、上轮输出归一化、最新快照
1720
1766
  3. **Recovery Context(修复层)**
1721
1767
  - Not-found retry context
1722
1768
  - Protocol violation hint
1723
1769
 
1724
1770
  #### 7.2 System Prompt 的关键规则(当前实现)
1725
1771
 
1726
- `buildSystemPrompt()` 中的核心约束(英文原文语义):
1772
+ `buildSystemPrompt()` 采用 Decision Framework 架构,不再逐条罗列规则:
1727
1773
 
1728
- - 从“当前快照 + 当前 remaining”直接执行,不复述任务
1729
- - 每轮按 task reduction 推进
1730
- - 使用 hash selector,不猜 CSS
1731
- - 可见且互不依赖的动作同轮批量执行
1732
- - 输入顺序强约束:`focus/click -> fill/type/select_option`
1733
- - 多字段交替对执行(防止 focus-only 空轮)
1734
- - DOM 结构变化动作后断轮
1735
- - 禁用 `page_info` 作为规划手段
1736
- - 输出 `REMAINING: ...` 或 `REMAINING: DONE`
1774
+ - 五阶段决策流:ANALYZE snapshot ASSESS targets → CHOOSE action → EXECUTE → OUTPUT
1775
+ - Targeting Rules:hash selector 优先、ordinal 为 1-based 视觉序
1776
+ - Constraints:form-input 顺序约束(focus/click fill/type/select_option)、DOM 结构变化后断轮
1777
+ - Listener Abbreviations:`clk`/`inp`/`chg`/`kdn`/`kup` 等缩写映射
1778
+ - 工具描述去重:工具部分完全由各工具 `t.description` 动态注入,prompt 不再重复
1779
+ - 统一输出 `REMAINING: <text>` 或 `REMAINING: DONE`
1737
1780
 
1738
1781
  #### 7.3 Round 0 与 Round 1+ 差异
1739
1782
 
1740
1783
  - Round 0:原始任务 + 首轮快照
1741
- - Round 1+:不再重复原始用户输入,改为“remaining 驱动”
1784
+ - Round 1+:以 remaining 驱动;当 remaining 与原始任务不同时,注入 `Master goal (reference only)` 锚点
1742
1785
 
1743
- 这能显著降低“回头重做”的概率。
1786
+ Master goal 锚点的设计目的:
1787
+ - 防止 remaining 因模型错误缩减而偏离原始目标(任务漂移)
1788
+ - 标注 `reference only — do NOT restart from scratch`,避免模型回头重做
1789
+ - 让模型能随时交叉校验当前行动是否符合原始意图
1744
1790
 
1745
1791
  #### 7.4 显式 UI 意图判定
1746
1792
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentpage",
3
- "version": "0.0.25",
3
+ "version": "0.0.27",
4
4
  "description": "Embeddable AI Agent SDK for browsers — let AI operate your web pages via tool-calling",
5
5
  "keywords": [
6
6
  "ai",