page-action-cache 2026.2.5 → 2026.2.7

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/index.d.ts CHANGED
@@ -9,17 +9,6 @@ interface OpenClawPluginApi {
9
9
  inputSchema: unknown;
10
10
  execute: (params: unknown) => Promise<unknown>;
11
11
  }): void;
12
- registerHook(hookName: string, handler: (event: unknown) => Promise<unknown>): void;
13
- getToolContext?: () => {
14
- config?: Record<string, unknown>;
15
- };
16
- }
17
- /**
18
- * 插件配置接口
19
- */
20
- export interface PageActionCacheConfig {
21
- enabled: boolean;
22
- autoUseCache?: boolean;
23
12
  }
24
13
  /**
25
14
  * 主扩展入口
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,UAAU,iBAAiB;IACzB,YAAY,CAAC,IAAI,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChD,GAAG,IAAI,CAAC;IACT,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpF,cAAc,CAAC,EAAE,MAAM;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAgED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAyY7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,UAAU,iBAAiB;IACzB,YAAY,CAAC,IAAI,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChD,GAAG,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA0C7D"}
package/dist/index.js CHANGED
@@ -2,49 +2,6 @@
2
2
  * Page Action Cache - OpenClaw Extension
3
3
  * 页面操作缓存扩展
4
4
  */
5
- // 内存缓存(页面会话级别)
6
- const memoryCache = new Map();
7
- const MAX_CACHE_SIZE = 50;
8
- const CACHE_TTL_MS = 5 * 60 * 1000; // 5 分钟
9
- // 用于追踪当前的 URL(从 before_tool_call 中获取)
10
- let currentSnapshotUrl = undefined;
11
- /**
12
- * 生成缓存键
13
- */
14
- function getCacheKey(url, viewport) {
15
- if (!url)
16
- return '';
17
- return viewport ? `${url}:${viewport}` : url;
18
- }
19
- /**
20
- * 清理过期缓存
21
- */
22
- function cleanupExpiredCache() {
23
- const now = Date.now();
24
- let cleaned = 0;
25
- for (const [key, entry] of memoryCache.entries()) {
26
- if (now - entry.timestamp > CACHE_TTL_MS) {
27
- memoryCache.delete(key);
28
- cleaned++;
29
- }
30
- }
31
- // LRU 清理
32
- while (memoryCache.size > MAX_CACHE_SIZE) {
33
- const oldestKey = memoryCache.keys().next().value;
34
- if (oldestKey) {
35
- memoryCache.delete(oldestKey);
36
- cleaned++;
37
- }
38
- }
39
- return cleaned;
40
- }
41
- // 日志格式化工具
42
- function logInfo(...parts) {
43
- console.log(`[PageActionCache] ${parts.join(' ')}`);
44
- }
45
- function logDivider() {
46
- console.log('[PageActionCache] =======================================');
47
- }
48
5
  /**
49
6
  * 主扩展入口
50
7
  */
@@ -53,258 +10,7 @@ export default function register(api) {
53
10
  console.log('[PageActionCache] 🚀 Initializing Page Action Cache Extension...');
54
11
  console.log('========================================');
55
12
  try {
56
- // 获取插件配置
57
- let toolContext = undefined;
58
- if (typeof api.getToolContext === 'function') {
59
- toolContext = api.getToolContext();
60
- console.log('[PageActionCache] Method 1: config via getToolContext:', toolContext ? 'available' : 'not available');
61
- }
62
- if (!toolContext || typeof toolContext.config === 'undefined') {
63
- try {
64
- if (typeof api.config === 'object' && api.config) {
65
- toolContext = { config: api.config };
66
- console.log('[PageActionCache] Method 2: config via api.config:', toolContext);
67
- }
68
- }
69
- catch (e) {
70
- console.log('[PageActionCache] Method 2 failed, api.config not available');
71
- }
72
- }
73
- const pluginConfig = {
74
- enabled: toolContext?.config?.['page-action-cache']?.enabled !== false,
75
- autoUseCache: toolContext?.config?.['page-action-cache']?.autoUseCache !== false,
76
- };
77
- console.log('[PageActionCache] Final config:', JSON.stringify(pluginConfig));
78
- console.log('[PageActionCache] - enabled:', pluginConfig.enabled);
79
- console.log('[PageActionCache] - autoUseCache:', pluginConfig.autoUseCache);
80
- if (!pluginConfig.enabled) {
81
- console.log('[PageActionCache] 🚫 Extension disabled by configuration');
82
- return;
83
- }
84
- console.log('[PageActionCache] ✅ Extension enabled, registering hooks and tools...');
85
- console.log('[PageActionCache] 📊 Cache settings: max=50, ttl=5min');
86
- // === 追踪:记录当前的 URL ===
87
- api.registerHook('before_tool_call', async (event) => {
88
- const { toolName, params } = event;
89
- console.log(`[PageActionCache] 🔍 before_tool_call hook triggered`);
90
- console.log(`[PageActionCache] 📌 Tool name: ${toolName}`);
91
- if (toolName === 'browser_snapshot') {
92
- const url = params?.url;
93
- const viewport = params?.viewport;
94
- if (url) {
95
- currentSnapshotUrl = url;
96
- const key = getCacheKey(url, viewport);
97
- const cached = memoryCache.get(key);
98
- console.log(`[PageActionCache] 🔑 Cache key: ${key}`);
99
- console.log(`[PageActionCache] 📦 Current cache size: ${memoryCache.size}`);
100
- if (cached && pluginConfig.autoUseCache) {
101
- // === 使用缓存 ===
102
- console.log(`[PageActionCache] ✅ Cache HIT for ${url}`);
103
- console.log(`[PageActionCache] 📊 Cached at: ${new Date(cached.timestamp).toISOString()}`);
104
- console.log(`[PageActionCache] 📋 Refs count: ${Object.keys(cached.refs).length}`);
105
- console.log(`[PageActionCache] ⏱️ Hit #${cached.hitCount + 1}`);
106
- console.log(`[PageActionCache] 💡 Found cached refs, will provide context in prompt`);
107
- // 注意:这里我们不修改 params,因为 refs 是返回值不是参数
108
- // 我们将在 before_prompt_build hook 中提供缓存的上下文
109
- }
110
- else {
111
- // === 缓存未命中 ===
112
- console.log(`[PageActionCache] ❌ Cache MISS for ${url}`);
113
- console.log(`[PageActionCache] 📸 Will generate new snapshot (~3-5s)`);
114
- }
115
- }
116
- }
117
- return undefined;
118
- });
119
- // === 提供上下文:Before Prompt Build Hook ===
120
- api.registerHook('before_prompt_build', async (event) => {
121
- const { modelProvider } = event;
122
- console.log(`[PageActionCache] 🔍 before_prompt_build hook triggered`);
123
- console.log(`[PageActionCache] 📌 Model provider: ${modelProvider}`);
124
- if (!currentSnapshotUrl || !pluginConfig.autoUseCache) {
125
- return undefined;
126
- }
127
- const key = getCacheKey(currentSnapshotUrl);
128
- const cached = memoryCache.get(key);
129
- if (cached) {
130
- console.log(`[PageActionCache] ✅ Found cached refs for ${currentSnapshotUrl}`);
131
- console.log(`[PageActionCache] 📋 Refs count: ${Object.keys(cached.refs).length}`);
132
- // 构建上下文字符串,提供缓存的 refs 信息
133
- const refsInfo = Object.entries(cached.refs)
134
- .slice(0, 10) // 只显示前 10 个 refs,避免上下文过长
135
- .map(([id, ref]) => `- [${id}] ${ref.role}${ref.name ? `: ${ref.name}` : ''}`)
136
- .join('\n');
137
- const contextText = `# Page Action Cache
138
- You have previously analyzed this page and found the following interactive elements:
139
-
140
- ${refsInfo}
141
-
142
- If you need to interact with elements, use their IDs (e.g. ["${Object.keys(cached.refs)[0]}"]). This avoids re-analyzing the page and saves tokens.
143
-
144
- Cached at: ${new Date(cached.timestamp).toISOString()}
145
- Hit count: ${cached.hitCount + 1}
146
- `;
147
- console.log(`[PageActionCache] 📝 Preparing to inject cached context (${contextText.length} chars)`);
148
- // 返回上下文,让 LLM 知道缓存的 refs
149
- return {
150
- prependSystemContext: contextText,
151
- };
152
- }
153
- return undefined;
154
- });
155
- // === 存缓存:After Tool Call Hook ===
156
- api.registerHook('after_tool_call', async (event) => {
157
- const { toolName, result, params } = event;
158
- console.log(`[PageActionCache] 🔍 after_tool_call hook triggered`);
159
- console.log(`[PageActionCache] 📌 Tool name: ${toolName}`);
160
- if (toolName === 'browser_snapshot') {
161
- const url = params?.url;
162
- const viewport = params?.viewport;
163
- const snapshot = result?.snapshot;
164
- const refs = result?.refs;
165
- if (!url)
166
- return;
167
- const key = getCacheKey(url, viewport);
168
- const existing = memoryCache.get(key);
169
- console.log(`[PageActionCache] 📦 Current cache size: ${memoryCache.size}`);
170
- console.log(`[PageActionCache] 🔑 Cache key: ${key}`);
171
- if (snapshot) {
172
- console.log(`[PageActionCache] 📄 Has snapshot: true (${snapshot.length} chars)`);
173
- }
174
- if (refs) {
175
- console.log(`[PageActionCache] 📋 Has refs: true (${Object.keys(refs).length} refs)`);
176
- }
177
- else {
178
- console.log(`[PageActionCache] ⚠️ Has refs: false`);
179
- }
180
- // 更新现有缓存
181
- if (existing && pluginConfig.autoUseCache) {
182
- console.log(`[PageActionCache] 🔄 Cache already exists for ${url}`);
183
- console.log(`[PageActionCache] 📈 Existing cached at: ${new Date(existing.timestamp).toISOString()}`);
184
- console.log(`[PageActionCache] 📊 Hit count: ${existing.hitCount}`);
185
- // 更新访问统计
186
- existing.hitCount++;
187
- memoryCache.set(key, {
188
- ...existing,
189
- hitCount: existing.hitCount + 1,
190
- timestamp: Date.now()
191
- });
192
- console.log(`[PageActionCache] ✅ Updated existing cache entry`);
193
- console.log(`[PageActionCache] 📦 New cache size: ${memoryCache.size}`);
194
- return;
195
- }
196
- // 存储新缓存
197
- if (snapshot && refs) {
198
- console.log(`[PageActionCache] 💾 Storing to cache...`);
199
- console.log(`[PageActionCache] 🔑 Cache key: ${key}`);
200
- const entry = {
201
- url,
202
- snapshot,
203
- refs,
204
- timestamp: Date.now(),
205
- hitCount: 0
206
- };
207
- memoryCache.set(key, entry);
208
- console.log(`[PageActionCache] ✅ Stored! Cache size: ${memoryCache.size}`);
209
- console.log(`[PageActionCache] 🎉 Page cached successfully! 📍 ${url}`);
210
- console.log(`[PageActionCache] 📋 Cached refs: ${Object.keys(refs).length} items`);
211
- // 清理过期缓存
212
- const cleanupCount = cleanupExpiredCache();
213
- if (cleanupCount > 0) {
214
- console.log(`[PageActionCache] 🧹 Cleaned ${cleanupCount} expired entries`);
215
- }
216
- }
217
- else {
218
- console.log(`[PageActionCache] ⚠️ Snapshot present but no refs - not caching`);
219
- }
220
- }
221
- return undefined;
222
- });
223
- // 注册页面快照缓存工具(用于手动查询)
224
- api.registerTool({
225
- name: 'page_snapshot_cache',
226
- description: 'Cache and retrieve page snapshots to speed up repeated operations',
227
- inputSchema: {
228
- type: 'object',
229
- properties: {
230
- url: {
231
- type: 'string',
232
- description: 'Page URL'
233
- },
234
- snapshot: {
235
- type: 'string',
236
- description: 'Page snapshot to store'
237
- },
238
- refs: {
239
- type: 'object',
240
- description: 'Role references map'
241
- },
242
- viewport: {
243
- type: 'string',
244
- description: 'Viewport size (e.g. 1920x1080)'
245
- },
246
- invalidate: {
247
- type: 'boolean',
248
- description: 'Invalidate cache for this URL',
249
- default: false
250
- }
251
- },
252
- required: ['url']
253
- },
254
- async execute(params) {
255
- logInfo('🔍', 'Tool: page_snapshot_cache called');
256
- const { url, snapshot, refs, invalidate = false, viewport } = params;
257
- // 处理失效请求
258
- if (invalidate) {
259
- const key = getCacheKey(url, viewport);
260
- memoryCache.delete(key);
261
- logInfo('🗑️', 'Invalidated cache for', url);
262
- return {
263
- text: `Cache invalidated for ${url}`,
264
- invalidated: true
265
- };
266
- }
267
- // 处理存储请求
268
- if (snapshot && refs) {
269
- const key = getCacheKey(url, viewport);
270
- const entry = {
271
- url,
272
- snapshot,
273
- refs,
274
- timestamp: Date.now(),
275
- hitCount: 0
276
- };
277
- memoryCache.set(key, entry);
278
- // 清理过期缓存
279
- cleanupExpiredCache();
280
- console.log(`[PageActionCache] 💾 Stored! Cache size: ${memoryCache.size}`, `📍 ${url}`);
281
- return {
282
- text: `Snapshot cached for ${url}`,
283
- cached: true
284
- };
285
- }
286
- // 处理查询请求
287
- const key = getCacheKey(url, viewport);
288
- const cached = memoryCache.get(key);
289
- if (cached && pluginConfig.autoUseCache) {
290
- cached.hitCount++;
291
- cached.timestamp = Date.now();
292
- console.log(`[PageActionCache] ✅ Cache HIT for ${url}`, `📊 Hit #${cached.hitCount}`, `💾 Saved ${5000 - 50}ms (99% improvement)`);
293
- return {
294
- text: `Cache hit for ${url}`,
295
- snapshot: cached.snapshot,
296
- refs: cached.refs,
297
- hitCount: cached.hitCount,
298
- cached: true
299
- };
300
- }
301
- logInfo('❌', `Cache MISS for ${url}`);
302
- return {
303
- text: `Cache miss for ${url}`,
304
- cached: false
305
- };
306
- }
307
- });
13
+ console.log('[PageActionCache] 🔍 Starting plugin registration...');
308
14
  // 注册缓存统计工具
309
15
  api.registerTool({
310
16
  name: 'page_cache_stats',
@@ -315,72 +21,26 @@ Hit count: ${cached.hitCount + 1}
315
21
  required: []
316
22
  },
317
23
  async execute() {
318
- logInfo('📊', 'Tool: page_cache_stats called');
319
- const cleaned = cleanupExpiredCache();
320
- const stats = {
321
- totalEntries: memoryCache.size,
322
- hits: Array.from(memoryCache.values()).reduce((sum, e) => sum + e.hitCount, 0),
323
- avgHitCount: memoryCache.size > 0
324
- ? Array.from(memoryCache.values()).reduce((sum, e) => sum + e.hitCount, 0) / memoryCache.size
325
- : 0,
326
- oldestEntry: memoryCache.size > 0
327
- ? Math.min(...Array.from(memoryCache.values()).map(e => e.timestamp))
328
- : null,
329
- newestEntry: memoryCache.size > 0
330
- ? Math.max(...Array.from(memoryCache.values()).map(e => e.timestamp))
331
- : null
332
- };
333
- logInfo('📊', 'Total:', stats.totalEntries);
334
- logInfo('✅', 'Hits:', stats.hits);
335
- logInfo('📊', 'Hit Rate:', `${(stats.totalEntries > 0 ? (stats.hits / stats.totalEntries * 100).toFixed(2) : '0.00')}%`);
336
- if (memoryCache.size > 0) {
337
- // 显示最近缓存的页面
338
- const sortedEntries = Array.from(memoryCache.values())
339
- .sort((a, b) => b.timestamp - a.timestamp)
340
- .slice(0, 5); // 显示最近 5 个
341
- logInfo('📈', 'Recent caches:');
342
- sortedEntries.forEach((entry, index) => {
343
- if (entry.url) {
344
- const hitRate = entry.hitCount > 0 ? (entry.hitCount / (entry.hitCount + 1) * 100).toFixed(1) : '0%';
345
- logInfo(` ${index + 1}. ${entry.url}`, `🎯 ${hitRate}`, `📈 Hits: ${entry.hitCount}`);
346
- }
347
- });
348
- }
349
- return {
350
- text: `## Page Snapshot Cache Statistics\n\n` +
351
- `- Total Entries: ${stats.totalEntries}\n` +
352
- `- Total Hits: ${stats.hits}\n` +
353
- `- Hit Rate: ${(stats.totalEntries > 0 ? (stats.hits / stats.totalEntries * 100).toFixed(2) : '0.00')}%\n\n` +
354
- `- Cleaned Entries: ${cleaned}\n\n`,
355
- stats
356
- };
357
- }
358
- });
359
- // 注册缓存清空工具
360
- api.registerTool({
361
- name: 'page_cache_clear',
362
- description: 'Clear page snapshot cache',
363
- inputSchema: {
364
- type: 'object',
365
- properties: {},
366
- required: []
367
- },
368
- async execute() {
369
- logInfo('🗑️', 'Tool: page_cache_clear called');
370
- const count = memoryCache.size;
371
- memoryCache.clear();
372
- logInfo('🧹', `Cleared ${count} cache entries`);
24
+ console.log('[PageActionCache] 📊 Tool: page_cache_stats called');
25
+ const statsText = '## Page Snapshot Cache Statistics\n\n' +
26
+ '- Total Entries: 0\n' +
27
+ '- Total Hits: 0\n' +
28
+ '- Hit Rate: 0.00%\n\n';
373
29
  return {
374
- text: `Cleared ${count} cache entries`,
375
- cleared: count
30
+ text: statsText,
31
+ totalEntries: 0,
32
+ hits: 0,
33
+ hitRate: '0.00%'
376
34
  };
377
35
  }
378
36
  });
379
- logDivider();
380
- logInfo('✅', 'All hooks and tools registered successfully');
37
+ console.log('[PageActionCache] =======================================');
38
+ console.log('[PageActionCache] Plugin registered successfully');
39
+ console.log('[PageActionCache] 📋 Available tools: page_cache_stats');
40
+ console.log('[PageActionCache] 📋 No hooks registered');
381
41
  }
382
42
  catch (error) {
383
- console.error('[PageActionCache] Fatal error during plugin registration:', error);
43
+ console.error('[PageActionCache] Fatal error during plugin registration:', error);
384
44
  }
385
45
  }
386
46
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAsB;IACrD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAEpE,WAAW;QACX,GAAG,CAAC,YAAY,CAAC;YACf,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,qCAAqC;YAClD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;YACD,KAAK,CAAC,OAAO;gBACX,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAElE,MAAM,SAAS,GAAG,uCAAuC;oBACvD,sBAAsB;oBACtB,mBAAmB;oBACnB,uBAAuB,CAAC;gBAE1B,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,CAAC;oBACf,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,OAAO;iBACN,CAAC;YACf,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAE1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6DAA6D,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "page-action-cache",
3
3
  "name": "Page Action Cache",
4
- "version": "2026.2.5",
4
+ "version": "2026.2.7",
5
5
  "description": "Page Action Cache - Browser Client API extension for OpenClaw",
6
6
  "author": "OpenClaw",
7
7
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "page-action-cache",
3
- "version": "2026.2.5",
3
+ "version": "2026.2.7",
4
4
  "description": "Page Action Cache - OpenClaw extension",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",