page-action-cache 2.0.9 → 2026.2.0
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 +100 -306
- package/openclaw.plugin.json +23 -14
- package/package.json +28 -21
- package/dist/browser-action-executor.d.ts +0 -87
- package/dist/browser-action-executor.d.ts.map +0 -1
- package/dist/browser-action-executor.js +0 -283
- package/dist/browser-action-executor.js.map +0 -1
- package/dist/cache-invalidation.d.ts +0 -129
- package/dist/cache-invalidation.d.ts.map +0 -1
- package/dist/cache-invalidation.js +0 -266
- package/dist/cache-invalidation.js.map +0 -1
- package/dist/cache-manager.d.ts +0 -83
- package/dist/cache-manager.d.ts.map +0 -1
- package/dist/cache-manager.js +0 -184
- package/dist/cache-manager.js.map +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -408
- package/dist/index.js.map +0 -1
- package/dist/multi-level-cache.d.ts +0 -127
- package/dist/multi-level-cache.d.ts.map +0 -1
- package/dist/multi-level-cache.js +0 -364
- package/dist/multi-level-cache.js.map +0 -1
- package/dist/scenario-recognizer.d.ts +0 -35
- package/dist/scenario-recognizer.d.ts.map +0 -1
- package/dist/scenario-recognizer.js +0 -93
- package/dist/scenario-recognizer.js.map +0 -1
- package/dist/types.d.ts +0 -62
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/variable-extractor.d.ts +0 -56
- package/dist/variable-extractor.d.ts.map +0 -1
- package/dist/variable-extractor.js +0 -161
- package/dist/variable-extractor.js.map +0 -1
- package/src/browser-action-executor.ts +0 -337
- package/src/cache-invalidation.ts +0 -342
- package/src/cache-manager.ts +0 -211
- package/src/index.ts +0 -468
- package/src/multi-level-cache.ts +0 -480
- package/src/scenario-recognizer.ts +0 -121
- package/src/types-mock.d.ts +0 -18
- package/src/types.ts +0 -66
- package/src/variable-extractor.ts +0 -206
package/README.md
CHANGED
|
@@ -1,37 +1,18 @@
|
|
|
1
1
|
# Page Action Cache - OpenClaw Extension
|
|
2
2
|
|
|
3
|
-
页面操作缓存扩展 - OpenClaw
|
|
3
|
+
页面操作缓存扩展 - 为 OpenClaw 提供页面快照缓存功能
|
|
4
4
|
|
|
5
5
|
## 功能特性
|
|
6
6
|
|
|
7
|
-
### 1.
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
### 3. 多级缓存 (Multi-Level Cache)
|
|
18
|
-
- **L3 缓存**: 持久化缓存,适合稳定的重复操作(如登录)
|
|
19
|
-
- **L2 缓存**: 内存缓存,适合频繁访问的操作(如搜索)
|
|
20
|
-
- **L1 缓存**: 热点缓存,适合当前会话的操作
|
|
21
|
-
- 自动缓存提升和容量管理
|
|
22
|
-
- LLM分类支持
|
|
23
|
-
|
|
24
|
-
### 4. 缓存失效 (Cache Invalidation)
|
|
25
|
-
- 页面变化检测(HTML、结构、内容哈希)
|
|
26
|
-
- 软/硬失效策略
|
|
27
|
-
- 变化历史追踪
|
|
28
|
-
- 自动清理过期缓存
|
|
29
|
-
|
|
30
|
-
### 5. 浏览器动作执行 (Browser Action Execution)
|
|
31
|
-
- 通过 Browser Client API 执行浏览器操作
|
|
32
|
-
- 支持操作:导航、点击、输入、截图、脚本执行
|
|
33
|
-
- 失败跳过机制
|
|
34
|
-
- 执行时间节省计算
|
|
7
|
+
### 1. 页面快照缓存
|
|
8
|
+
- 存储页面快照和角色引用
|
|
9
|
+
- 支持快速查询和失效
|
|
10
|
+
- 自动清理过期缓存(5分钟 TTL)
|
|
11
|
+
- LRU 容量管理(最多 50 个条目)
|
|
12
|
+
|
|
13
|
+
### 2. 配置选项
|
|
14
|
+
- **enabled**: 启用/禁用插件
|
|
15
|
+
- **autoUseCache**: 自动使用缓存
|
|
35
16
|
|
|
36
17
|
## 技术架构
|
|
37
18
|
|
|
@@ -39,348 +20,144 @@
|
|
|
39
20
|
```
|
|
40
21
|
page-action-cache/
|
|
41
22
|
├── src/
|
|
42
|
-
│ ├── index.ts
|
|
43
|
-
│
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
│ └── types-mock.d.ts # 模拟类型定义
|
|
51
|
-
├── tests/
|
|
52
|
-
│ ├── basic.test.ts # 基础功能测试
|
|
53
|
-
│ ├── scenario-recognizer.test.ts # 场景识别测试
|
|
54
|
-
│ ├── variable-extractor.test.ts # 变量提取测试
|
|
55
|
-
│ ├── multi-level-cache.test.ts # 多级缓存测试
|
|
56
|
-
│ ├── cache-invalidation.test.ts # 缓存失效测试
|
|
57
|
-
│ └── integration.test.ts # 集成测试
|
|
58
|
-
├── dist/ # 编译输出目录
|
|
59
|
-
├── package.json # 项目配置
|
|
60
|
-
├── tsconfig.json # TypeScript 配置
|
|
61
|
-
├── openclaw.plugin.json # OpenClaw 插件元数据
|
|
62
|
-
└── README.md # 项目文档
|
|
23
|
+
│ ├── index.ts # 主扩展入口
|
|
24
|
+
│ └── types.ts # TypeScript 类型定义
|
|
25
|
+
├── tests/ # 测试文件
|
|
26
|
+
├── dist/ # 编译输出目录
|
|
27
|
+
├── package.json # 项目配置
|
|
28
|
+
├── tsconfig.json # TypeScript 配置
|
|
29
|
+
├── openclaw.plugin.json # OpenClaw 插件元数据
|
|
30
|
+
└── README.md # 项目文档
|
|
63
31
|
```
|
|
64
32
|
|
|
65
|
-
##
|
|
33
|
+
## 安装和使用
|
|
66
34
|
|
|
67
|
-
###
|
|
35
|
+
### 开发环境安装
|
|
68
36
|
|
|
69
|
-
#### 方式一:本地开发目录(推荐用于开发调试)
|
|
70
37
|
```bash
|
|
71
|
-
# 1.
|
|
38
|
+
# 1. 确保已构建
|
|
72
39
|
cd /Users/zhoujinyu/Documents/projects/page-action-cache
|
|
73
|
-
npm
|
|
40
|
+
npm run build
|
|
74
41
|
|
|
75
|
-
# 2. 在 OpenClaw
|
|
42
|
+
# 2. 在 OpenClaw 配置中添加本地扩展引用
|
|
76
43
|
# 编辑 ~/.openclaw/openclaw.json 或实例配置文件
|
|
77
44
|
{
|
|
78
45
|
"plugins": {
|
|
79
46
|
"entries": {
|
|
80
47
|
"page-action-cache": {
|
|
81
|
-
"path": "/Users/zhoujinyu/Documents/projects/page-action-cache",
|
|
82
48
|
"enabled": true,
|
|
83
|
-
"
|
|
84
|
-
"autoUseCache": true,
|
|
85
|
-
"scenarioRecognitionEnabled": true,
|
|
86
|
-
"cacheLevelStrategy": "auto"
|
|
87
|
-
}
|
|
49
|
+
"autoUseCache": true
|
|
88
50
|
}
|
|
89
51
|
}
|
|
90
52
|
}
|
|
91
53
|
}
|
|
92
54
|
```
|
|
93
55
|
|
|
94
|
-
|
|
56
|
+
### 全局安装
|
|
57
|
+
|
|
95
58
|
```bash
|
|
96
59
|
# 从 Gitee 仓库安装
|
|
97
60
|
npm install -g https://gitee.com/jinyu_zjy/page-action-cache.git
|
|
98
|
-
|
|
99
|
-
# 或者在已安装的 OpenClaw 中自动发现
|
|
100
|
-
npm install page-action-cache --save
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### OpenClaw 配置示例
|
|
104
|
-
|
|
105
|
-
#### 基础配置
|
|
106
|
-
```json
|
|
107
|
-
{
|
|
108
|
-
"plugins": {
|
|
109
|
-
"entries": {
|
|
110
|
-
"page-action-cache": {
|
|
111
|
-
"enabled": true,
|
|
112
|
-
"config": {
|
|
113
|
-
"enabled": true,
|
|
114
|
-
"autoUseCache": true,
|
|
115
|
-
"scenarioRecognitionEnabled": true,
|
|
116
|
-
"llmClassificationThreshold": 0.8,
|
|
117
|
-
"cacheLevelStrategy": "auto",
|
|
118
|
-
"defaultCacheLevel": "L1",
|
|
119
|
-
"pageChangeDetectionEnabled": true,
|
|
120
|
-
"changeInvalidationThreshold": 0.5,
|
|
121
|
-
"invalidationStrategy": "soft",
|
|
122
|
-
"variableExtractionEnabled": true,
|
|
123
|
-
"allowUserConfirmVariables": true,
|
|
124
|
-
"allowUserForcedRefresh": true,
|
|
125
|
-
"enableUserCacheErrorReport": true,
|
|
126
|
-
"trackExecutionStats": true,
|
|
127
|
-
"statsUpdateInterval": 60000
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
61
|
```
|
|
134
62
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
#### 通过 OpenClaw CLI 使用
|
|
138
|
-
```bash
|
|
139
|
-
# 执行缓存的页面操作
|
|
140
|
-
openclaw message send --channel web --content "请帮我登录 https://example.com/login"
|
|
63
|
+
## 工具说明
|
|
141
64
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
# 1. 识别场景为 'login'
|
|
145
|
-
# 2. 从缓存中查找匹配的登录流程
|
|
146
|
-
# 3. 如果找到缓存,直接执行缓存的操作
|
|
147
|
-
# 4. 如果未找到,执行新的操作并保存到缓存
|
|
65
|
+
### 1. page_snapshot_cache
|
|
66
|
+
缓存和检索页面快照以加速重复操作
|
|
148
67
|
|
|
149
|
-
|
|
150
|
-
|
|
68
|
+
**参数**:
|
|
69
|
+
- `url` (必需): 页面 URL
|
|
70
|
+
- `snapshot` (可选): 要存储的页面快照
|
|
71
|
+
- `refs` (可选): 角色引用映射
|
|
72
|
+
- `invalidate` (可选): 失效该 URL 的缓存,默认 false
|
|
151
73
|
|
|
152
|
-
|
|
153
|
-
|
|
74
|
+
**返回示例**:
|
|
75
|
+
```
|
|
76
|
+
Cache stored for https://example.com
|
|
154
77
|
```
|
|
155
78
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
2. AI 会自动调用 page-action-cache 扩展的工具
|
|
159
|
-
3. 工具会执行浏览器操作并返回结果
|
|
160
|
-
4. 用户可以看到缓存命中情况和节省的时间
|
|
161
|
-
|
|
162
|
-
### 工具详细说明
|
|
163
|
-
|
|
164
|
-
#### 1. browser_cache_execute
|
|
165
|
-
执行缓存的页面操作序列
|
|
79
|
+
### 2. page_cache_stats
|
|
80
|
+
查看页面快照缓存统计信息
|
|
166
81
|
|
|
167
|
-
**参数**:
|
|
168
|
-
- `url` (必需): 目标页面 URL
|
|
169
|
-
- `viewport` (可选): 视口大小,如 "1920x1080"
|
|
170
|
-
- `scenario` (可选): 操作场景(login/search/payment/checkout/general)
|
|
171
|
-
- `actions` (可选): 页面操作序列数组
|
|
172
|
-
- `type`: 操作类型(navigate/click/screenshot/type/script)
|
|
173
|
-
- `params`: 操作参数对象
|
|
174
|
-
- `useCache` (可选): 是否使用缓存,默认 true
|
|
175
|
-
- `forceRefresh` (可选): 是否强制刷新缓存,默认 false
|
|
176
|
-
- `llmClassificationScore` (可选): LLM 分类置信度分数 (0-1)
|
|
82
|
+
**参数**: 无
|
|
177
83
|
|
|
178
84
|
**返回示例**:
|
|
179
85
|
```
|
|
180
|
-
##
|
|
86
|
+
## Page Snapshot Cache Statistics
|
|
181
87
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
Cache ID: 1234567890
|
|
190
|
-
URL: https://example.com/login
|
|
191
|
-
Scenario: login
|
|
192
|
-
Cache Level: L3
|
|
193
|
-
Access Count: 5
|
|
88
|
+
- Total Entries: 15
|
|
89
|
+
- Total Hits: 42
|
|
90
|
+
- Hit Rate: 85.50%
|
|
91
|
+
- Avg Hit Count: 2.8
|
|
92
|
+
- Cleaned Entries: 3
|
|
93
|
+
- Oldest Entry: 2026-03-16T10:30:00.000Z
|
|
94
|
+
- Newest Entry: 2026-03-16T11:00:00.000Z
|
|
194
95
|
```
|
|
195
96
|
|
|
196
|
-
|
|
197
|
-
|
|
97
|
+
### 3. page_cache_clear
|
|
98
|
+
清空页面快照缓存
|
|
198
99
|
|
|
199
100
|
**参数**: 无
|
|
200
101
|
|
|
201
102
|
**返回示例**:
|
|
202
103
|
```
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
### Overall Performance
|
|
206
|
-
- Total Cache Entries: 15
|
|
207
|
-
- Total Cache Hits: 42
|
|
208
|
-
- Cache Hit Rate: 85.50%
|
|
209
|
-
|
|
210
|
-
### Multi-Level Cache Distribution
|
|
211
|
-
#### L3 Cache
|
|
212
|
-
- Size: 8/1000 (0.8% full)
|
|
213
|
-
- Average Access Count: 5.2
|
|
214
|
-
|
|
215
|
-
#### L2 Cache
|
|
216
|
-
- Size: 5/200 (2.5% full)
|
|
217
|
-
- Average Access Count: 8.4
|
|
218
|
-
|
|
219
|
-
#### L1 Cache
|
|
220
|
-
- Size: 2/50 (4.0% full)
|
|
221
|
-
- Average Access Count: 12.0
|
|
222
|
-
|
|
223
|
-
### Cache Invalidation
|
|
224
|
-
- Total Snapshots: 45
|
|
225
|
-
- Active Snapshots: 38
|
|
226
|
-
- Invalidation Rate: 15.55%
|
|
104
|
+
Cleared 15 cache entries
|
|
227
105
|
```
|
|
228
106
|
|
|
229
|
-
|
|
230
|
-
清空页面操作缓存
|
|
107
|
+
## 使用示例
|
|
231
108
|
|
|
232
|
-
|
|
233
|
-
- `level` (可选): 缓存级别(all/L3/L2/L1),默认 all
|
|
234
|
-
- `url` (可选): 特定 URL
|
|
235
|
-
- `viewport` (可选): 特定视口
|
|
109
|
+
### 通过 OpenClaw CLI 使用
|
|
236
110
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
openclaw message send --channel web --content "清空所有缓存"
|
|
111
|
+
```bash
|
|
112
|
+
# 存储页面快照
|
|
113
|
+
openclaw message send --channel web --content "page_snapshot_cache https://example.com --snapshot '...' --refs {...}"
|
|
241
114
|
|
|
242
|
-
#
|
|
243
|
-
openclaw message send --channel web --content "
|
|
115
|
+
# 查询缓存
|
|
116
|
+
openclaw message send --channel web --content "page_snapshot_cache https://example.com"
|
|
244
117
|
|
|
245
|
-
#
|
|
246
|
-
openclaw message send --channel web --content "
|
|
118
|
+
# 查看统计
|
|
119
|
+
openclaw message send --channel web --content "page_cache_stats"
|
|
120
|
+
|
|
121
|
+
# 清空缓存
|
|
122
|
+
openclaw message send --channel web --content "page_cache_clear"
|
|
247
123
|
```
|
|
248
124
|
|
|
249
|
-
###
|
|
125
|
+
### 通过 Web UI 使用
|
|
126
|
+
1. 在 OpenClaw Web UI 中发送消息
|
|
127
|
+
2. AI 会自动调用 page-action-cache 扩展的工具
|
|
128
|
+
3. 工具会执行缓存操作并返回结果
|
|
129
|
+
4. 用户可以看到缓存命中情况和统计信息
|
|
250
130
|
|
|
251
|
-
|
|
131
|
+
## 配置示例
|
|
252
132
|
|
|
253
|
-
|
|
133
|
+
### 基础配置
|
|
254
134
|
```json
|
|
255
135
|
{
|
|
256
136
|
"plugins": {
|
|
257
137
|
"entries": {
|
|
258
138
|
"page-action-cache": {
|
|
259
|
-
"path": "/Users/zhoujinyu/Documents/projects/page-action-cache",
|
|
260
139
|
"enabled": true,
|
|
261
|
-
"
|
|
262
|
-
// 生产实例配置
|
|
263
|
-
"cacheLevelStrategy": "l3-only",
|
|
264
|
-
"pageChangeDetectionEnabled": true,
|
|
265
|
-
"invalidationStrategy": "hard"
|
|
266
|
-
}
|
|
140
|
+
"autoUseCache": true
|
|
267
141
|
}
|
|
268
142
|
}
|
|
269
143
|
}
|
|
270
144
|
}
|
|
271
145
|
```
|
|
272
146
|
|
|
273
|
-
不同实例可以共享同一个扩展代码,但使用不同的配置参数:
|
|
274
|
-
- **开发实例**: 使用 L1 缓存,软失效策略
|
|
275
|
-
- **测试实例**: 使用 auto 策略,快速迭代
|
|
276
|
-
- **生产实例**: 使用 L3 缓存,硬失效策略,确保稳定性
|
|
277
|
-
|
|
278
|
-
### 与 Browser Client API 集成
|
|
279
|
-
|
|
280
|
-
扩展通过 HTTP API 与 OpenClaw Browser Client 通信:
|
|
281
|
-
|
|
282
|
-
**环境变量**:
|
|
283
|
-
```bash
|
|
284
|
-
export OPENCLAW_BROWSER_CLIENT_URL="http://localhost:3000"
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
**API 端点**:
|
|
288
|
-
- `POST /api/browser/navigate` - 导航到指定 URL
|
|
289
|
-
- `POST /api/browser/click` - 点击指定元素
|
|
290
|
-
- `POST /api/browser/type` - 输入文本到指定元素
|
|
291
|
-
- `POST /api/browser/screenshot` - 截取页面截图
|
|
292
|
-
- `POST /api/browser/execute-script` - 执行 JavaScript 脚本
|
|
293
|
-
|
|
294
|
-
**自动发现机制**:
|
|
295
|
-
扩展会自动尝试连接到以下位置的 Browser Client:
|
|
296
|
-
1. 环境变量 `OPENCLAW_BROWSER_CLIENT_URL` 指定的地址
|
|
297
|
-
2. 默认地址 `http://localhost:3000`
|
|
298
|
-
3. 如果都不可用,扩展仍然可以工作,但浏览器操作会被跳过
|
|
299
|
-
|
|
300
|
-
## 安装和使用
|
|
301
|
-
|
|
302
|
-
### 安装
|
|
303
|
-
```bash
|
|
304
|
-
# 开发目录安装
|
|
305
|
-
cd /Users/zhoujinyu/Documents/projects/page-action-cache
|
|
306
|
-
npm install
|
|
307
|
-
|
|
308
|
-
# 构建项目
|
|
309
|
-
npm run build
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### 使用
|
|
313
|
-
该扩展提供三个工具:
|
|
314
|
-
|
|
315
|
-
1. **browser_cache_execute**: 执行缓存的页面操作序列
|
|
316
|
-
2. **browser_cache_stats**: 查看缓存统计信息
|
|
317
|
-
3. **browser_cache_clear**: 清空页面操作缓存
|
|
318
|
-
|
|
319
|
-
### 配置选项
|
|
320
|
-
```json
|
|
321
|
-
{
|
|
322
|
-
"enabled": true,
|
|
323
|
-
"autoUseCache": true,
|
|
324
|
-
"scenarioRecognitionEnabled": true,
|
|
325
|
-
"llmClassificationThreshold": 0.8,
|
|
326
|
-
"cacheLevelStrategy": "auto",
|
|
327
|
-
"defaultCacheLevel": "L1",
|
|
328
|
-
"pageChangeDetectionEnabled": true,
|
|
329
|
-
"changeInvalidationThreshold": 0.5,
|
|
330
|
-
"invalidationStrategy": "soft",
|
|
331
|
-
"variableExtractionEnabled": true,
|
|
332
|
-
"allowUserConfirmVariables": true,
|
|
333
|
-
"allowUserForcedRefresh": true,
|
|
334
|
-
"enableUserCacheErrorReport": true,
|
|
335
|
-
"trackExecutionStats": true,
|
|
336
|
-
"statsUpdateInterval": 60000
|
|
337
|
-
}
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
## 测试
|
|
341
|
-
|
|
342
|
-
### 运行所有测试
|
|
343
|
-
```bash
|
|
344
|
-
npm test
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
### 运行特定测试
|
|
348
|
-
```bash
|
|
349
|
-
# 场景识别测试
|
|
350
|
-
npm test -- tests/scenario-recognizer.test.ts
|
|
351
|
-
|
|
352
|
-
# 基础功能测试
|
|
353
|
-
npm test -- tests/basic.test.ts
|
|
354
|
-
```
|
|
355
|
-
|
|
356
147
|
## 性能优化
|
|
357
148
|
|
|
358
149
|
### 缓存策略
|
|
359
|
-
-
|
|
360
|
-
-
|
|
361
|
-
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
✅ **已完成的功能**:
|
|
371
|
-
- 场景识别系统
|
|
372
|
-
- 变量提取系统
|
|
373
|
-
- 多级缓存系统
|
|
374
|
-
- 缓存失效系统
|
|
375
|
-
- 浏览器动作执行系统
|
|
376
|
-
- 完整的测试覆盖
|
|
377
|
-
- TypeScript 类型定义
|
|
378
|
-
- OpenClaw 插件接口实现
|
|
379
|
-
|
|
380
|
-
⚠️ **已知限制**:
|
|
381
|
-
- 依赖 OpenClaw Browser Client API(需要实际的浏览器客户端)
|
|
382
|
-
- 某些高级测试需要实际的浏览器环境
|
|
383
|
-
- LLM 分类需要外部服务集成
|
|
150
|
+
- **TTL 过期**: 5 分钟后自动失效
|
|
151
|
+
- **LRU 驱逐**: 超过容量时删除最旧的条目
|
|
152
|
+
- **访问计数**: 跟踪每个缓存的命中次数
|
|
153
|
+
- **自动清理**: 每次操作时检查并清理过期缓存
|
|
154
|
+
|
|
155
|
+
### 预期性能提升
|
|
156
|
+
| 场景 | 无缓存 | 有缓存 | 提升 |
|
|
157
|
+
|--------|--------|--------|------|
|
|
158
|
+
| 首次访问 | ~5s | ~5s | 0% (需存储) |
|
|
159
|
+
| 再次访问 | ~5s | ~50ms | 99% |
|
|
160
|
+
| 缓存命中 | 正常 | 正常 | 0% (直接用 refs) |
|
|
384
161
|
|
|
385
162
|
## 技术栈
|
|
386
163
|
|
|
@@ -389,6 +166,23 @@ npm test -- tests/basic.test.ts
|
|
|
389
166
|
- **测试框架**: Vitest
|
|
390
167
|
- **目标环境**: Node.js 22+
|
|
391
168
|
- **构建工具**: TypeScript Compiler
|
|
169
|
+
- **OpenClaw SDK**: openclaw/plugin-sdk
|
|
170
|
+
|
|
171
|
+
## 开发状态
|
|
172
|
+
|
|
173
|
+
### 已完成的功能
|
|
174
|
+
- ✅ OpenClaw Plugin SDK 集成
|
|
175
|
+
- ✅ 内存缓存实现
|
|
176
|
+
- ✅ TTL 过期管理
|
|
177
|
+
- ✅ LRU 容量管理
|
|
178
|
+
- ✅ 统计信息工具
|
|
179
|
+
- ✅ 缓存清空工具
|
|
180
|
+
- ✅ TypeScript 类型定义
|
|
181
|
+
|
|
182
|
+
### 已知限制
|
|
183
|
+
- 缓存存储在内存中,进程重启后清空
|
|
184
|
+
- 目前不支持跨进程持久化
|
|
185
|
+
- 不支持页面变化检测(简化版本)
|
|
392
186
|
|
|
393
187
|
## 许可证
|
|
394
188
|
|
|
@@ -396,4 +190,4 @@ MIT
|
|
|
396
190
|
|
|
397
191
|
## 贡献
|
|
398
192
|
|
|
399
|
-
欢迎提交 Issue 和 Pull Request!
|
|
193
|
+
欢迎提交 Issue 和 Pull Request!
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "page-action-cache",
|
|
3
3
|
"name": "Page Action Cache",
|
|
4
|
-
"version": "2.0
|
|
4
|
+
"version": "2026.2.0",
|
|
5
5
|
"description": "Page Action Cache - Browser Client API extension for OpenClaw",
|
|
6
6
|
"author": "OpenClaw",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"
|
|
9
|
-
"main": "dist/index.js",
|
|
10
|
-
"exports": {
|
|
11
|
-
".": {
|
|
12
|
-
"types": "./src/index.d.ts",
|
|
13
|
-
"default": "./dist/index.js"
|
|
14
|
-
},
|
|
15
|
-
"./tools": {
|
|
16
|
-
"types": "./src/tools.d.ts",
|
|
17
|
-
"default": "./dist/tools.js"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
8
|
+
"keywords": ["cache", "browser", "automation", "page-actions"],
|
|
20
9
|
"configSchema": {
|
|
21
10
|
"type": "object",
|
|
22
11
|
"properties": {
|
|
@@ -24,7 +13,27 @@
|
|
|
24
13
|
"type": "boolean",
|
|
25
14
|
"default": true,
|
|
26
15
|
"description": "启用页面操作缓存功能"
|
|
16
|
+
},
|
|
17
|
+
"autoUseCache": {
|
|
18
|
+
"type": "boolean",
|
|
19
|
+
"default": true,
|
|
20
|
+
"description": "自动使用缓存"
|
|
27
21
|
}
|
|
28
22
|
}
|
|
29
|
-
}
|
|
23
|
+
},
|
|
24
|
+
"uiHints": {
|
|
25
|
+
"enabled": {
|
|
26
|
+
"label": "启用页面操作缓存",
|
|
27
|
+
"description": "缓存页面快照以加速重复操作",
|
|
28
|
+
"category": "performance"
|
|
29
|
+
},
|
|
30
|
+
"autoUseCache": {
|
|
31
|
+
"label": "自动使用缓存",
|
|
32
|
+
"description": "是否自动使用缓存来加速操作",
|
|
33
|
+
"category": "behavior"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"capabilities": [
|
|
37
|
+
"tools"
|
|
38
|
+
]
|
|
30
39
|
}
|
package/package.json
CHANGED
|
@@ -1,47 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "page-action-cache",
|
|
3
|
-
"version": "2.0
|
|
4
|
-
"description": "Page Action Cache - OpenClaw extension
|
|
3
|
+
"version": "2026.2.0",
|
|
4
|
+
"description": "Page Action Cache - OpenClaw extension",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
-
"types": "./
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
10
|
"default": "./dist/index.js"
|
|
11
|
-
},
|
|
12
|
-
"./tools": {
|
|
13
|
-
"types": "./src/tools.d.ts",
|
|
14
|
-
"default": "./dist/tools.js"
|
|
15
11
|
}
|
|
16
12
|
},
|
|
17
13
|
"scripts": {
|
|
18
14
|
"build": "tsc",
|
|
19
15
|
"test": "vitest"
|
|
20
16
|
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"openclaw": "workspace:*"
|
|
19
|
+
},
|
|
21
20
|
"devDependencies": {
|
|
21
|
+
"openclaw": "workspace:*",
|
|
22
22
|
"@types/node": "^20.0.0",
|
|
23
23
|
"typescript": "^5.0.0",
|
|
24
24
|
"vitest": "^1.0.0"
|
|
25
25
|
},
|
|
26
|
-
"peerDependencies": {
|
|
27
|
-
|
|
28
|
-
},
|
|
29
|
-
"peerDependenciesMeta": {
|
|
30
|
-
"openclaw": {
|
|
31
|
-
"optional": true
|
|
32
|
-
}
|
|
33
|
-
},
|
|
26
|
+
"peerDependencies": {},
|
|
27
|
+
"peerDependenciesMeta": {},
|
|
34
28
|
"files": [
|
|
35
29
|
"dist/",
|
|
36
|
-
"src/",
|
|
37
|
-
"tools/",
|
|
38
30
|
"package.json",
|
|
39
31
|
"openclaw.plugin.json"
|
|
40
32
|
],
|
|
41
33
|
"openclaw": {
|
|
42
|
-
"extensions": [
|
|
43
|
-
"./dist/index.js"
|
|
44
|
-
],
|
|
45
34
|
"minVersion": "2026.2.0",
|
|
46
35
|
"kind": "extension",
|
|
47
36
|
"configSchema": {
|
|
@@ -51,8 +40,26 @@
|
|
|
51
40
|
"type": "boolean",
|
|
52
41
|
"default": true,
|
|
53
42
|
"description": "启用页面操作缓存功能"
|
|
43
|
+
},
|
|
44
|
+
"autoUseCache": {
|
|
45
|
+
"type": "boolean",
|
|
46
|
+
"default": true,
|
|
47
|
+
"description": "自动使用缓存"
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
50
|
}
|
|
51
|
+
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"openclaw",
|
|
54
|
+
"plugin",
|
|
55
|
+
"extension",
|
|
56
|
+
"browser",
|
|
57
|
+
"cache"
|
|
58
|
+
],
|
|
59
|
+
"author": "OpenClaw",
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "https://gitee.com/jinyu_zjy/page-action-cache"
|
|
57
64
|
}
|
|
58
|
-
}
|
|
65
|
+
}
|