agentpage 0.0.25 → 0.0.26
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 +63 -20
- 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
|
|
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
|
-
-
|
|
1160
|
-
-
|
|
1161
|
-
-
|
|
1162
|
-
-
|
|
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
|
|
1651
|
+
#### 6.1 `dom` 工具(`src/web/tools/dom-tool/`)
|
|
1608
1652
|
|
|
1609
1653
|
支持动作:
|
|
1610
1654
|
|
|
@@ -1713,7 +1757,9 @@ agent.registerTool({
|
|
|
1713
1757
|
|
|
1714
1758
|
1. **System Prompt(稳定规则层)**
|
|
1715
1759
|
- 由 `buildSystemPrompt()` 生成
|
|
1716
|
-
-
|
|
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
1765
|
- 包含当前 remaining、done steps、上轮计划、上轮输出归一化、最新快照
|
|
@@ -1723,17 +1769,14 @@ agent.registerTool({
|
|
|
1723
1769
|
|
|
1724
1770
|
#### 7.2 System Prompt 的关键规则(当前实现)
|
|
1725
1771
|
|
|
1726
|
-
`buildSystemPrompt()`
|
|
1727
|
-
|
|
1728
|
-
-
|
|
1729
|
-
-
|
|
1730
|
-
-
|
|
1731
|
-
-
|
|
1732
|
-
-
|
|
1733
|
-
-
|
|
1734
|
-
- DOM 结构变化动作后断轮
|
|
1735
|
-
- 禁用 `page_info` 作为规划手段
|
|
1736
|
-
- 输出 `REMAINING: ...` 或 `REMAINING: DONE`
|
|
1772
|
+
`buildSystemPrompt()` 采用 Decision Framework 架构,不再逐条罗列规则:
|
|
1773
|
+
|
|
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
|
|