返回顶部
p

pagerunner-skill页面运行技能

Real Chrome automation for AI agents — authenticated sessions, PII anonymization, snapshots, and multi-agent coordination via KV store.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.2.3
安全检测
已通过
122
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

pagerunner-skill

Pagerunner 技能 — 快速入门指南

Pagerunner 是为 AI 智能体提供的真实 Chrome 浏览器自动化工具。它让 Claude、Cursor、Windsurf 或任何 MCP 客户端能够原生控制你的真实 Chrome 浏览器——并已加载你现有的登录会话、Cookie 和浏览历史。

面向 AI 智能体:决策指南

如果你是正在使用此技能执行任务的 AI 智能体,请遵循以下规则。这些规则不可协商——它们能防止最常见的故障。

规则 1:每个工作流都以相同方式开始

javascript
const sessionId = await open_session({ profile: personal }); // 或 agent-work 等
const [tab] = await list_tabs(sessionId);
const tabId = tab.target_id; // 保存此值——每个工具都需要它

在进行任何其他操作之前,先从 listtabs 获取 targetid。没有它,其他工具都无法工作。

规则 2:每次交互前都要 wait_for(无例外)

在 navigate() 之后,页面正在加载。选择器尚不存在。在点击、填写或评估之前始终等待:

javascript
await navigate(sessionId, tabId, url);
await wait_for(sessionId, tabId, { selector: .any-stable-element, ms: 5000 });
// 只有现在才能安全地点击、填写、get_content、evaluate

跳过此步骤会导致选择器未找到错误。如果你不知道稳定的选择器,请先使用 get_content 找到一个。

规则 3:在操作前了解页面

不要猜测选择器。调用 get_content 查看页面上有什么,然后再操作:

javascript
const structure = await get_content(sessionId, tabId);
// 显示:可见文本、表单字段、按钮、导航状态
// 在 fill/click/evaluate 之前使用此信息找到正确的选择器

规则 4:使用哪个输入工具

如果应用使用...使用...
React / Vue / Angularfill() — 清除字段,触发变更事件
普通 HTML / 原生输入
type_text() — 输入但不清除 | | 不确定 | fill() — 这是更安全的默认选项 |

规则 5:每次操作后验证

提交表单或点击按钮后,确认操作成功:

javascript
await click(sessionId, tabId, .submit-btn);
await wait_for(sessionId, tabId, { selector: .success-message, .error-message, ms: 5000 });
const result = await get_content(sessionId, tabId);
// 检查结果是否包含预期的确认信息——永远不要假设成功

规则 6:evaluate() 必须返回带标签的对象

javascript
// ❌ 永远不要这样做——数组字段顺序不明确,会导致错误答案
return [likes, replies];

// ✅ 始终这样做——带标签的字段没有歧义
return { likes, replies };

如果你返回数组,Pagerunner 的元数据块会发出警告。请阅读它。

规则 7:始终使用 try/finally 关闭会话

javascript
const sessionId = await open_session({ profile: ... });
try {
// ... 工作流 ...
} finally {
await close_session(sessionId); // 即使工作流抛出异常也会执行
}

close_session 还会写入自动检查点(v0.6.0+),保存会话状态。



选择你的路径

独立开发者(Claude Code / Cursor)

目标: 闭环实现。编辑代码 → 在浏览器中查看结果 → 无需手动验证即可迭代。

快速入门(5 行):
javascript
const sessionId = await open_session({ profile: personal });
const [tab] = await list_tabs(sessionId);
await navigate(sessionId, tab.target_id, http://localhost:3000);
await screenshot(sessionId, tab.target_id); // 查看你构建的内容
await close_session(sessionId);

杀手级功能: 你的 Chrome,已登录所有内容。无需设置 API 令牌。

了解更多: 参见 PATTERNS.md → 前端开发循环



📱 高级用户(OpenClaw / Hermes)

目标: 在笔记本电脑无人值守运行时,从手机完成浏览器任务。

快速入门(8 行):
javascript
// 首次:手动登录并保存会话
pagerunner open-session agent-work
// ... 执行登录步骤 ...
pagerunner save-snapshot https://jira.mycompany.com

// 之后:智能体配置文件已预认证
pagerunner open-session agent-work
pagerunner restore-snapshot https://jira.mycompany.com
// 智能体已登录。现在开始工作:navigate、get_content、填写表单

杀手级功能: 智能体配置文件隔离 + 快照持久化 + 守护进程实现始终在线

真实示例:

WhatsApp:检查我的 Jira 是否有阻塞项
→ OpenClaw 触发技能
→ opensession(profile=agent-work) → restoresnapshot
→ 导航到 Jira → get_content → 总结
→ 截图 → 发送回 WhatsApp

了解更多: 参见 PATTERNS.md → 认证持久化



🔒 安全敏感型(NemoClaw / 受监管行业)

目标: 在敏感数据上自动化工作流,且 PII 不触及 LLM。

快速入门(1 个标志):
javascript
open_session({
profile: agent,
anonymize: true // 就这样。PII 在到达你之前已被剥离。
});

// 每个 get_content 和 evaluate 结果中的 PII 都被替换为令牌:
// john@company.com → [EMAIL:a3f9b2]
// Claude 使用令牌工作
// Pagerunner 仅在写入表单时进行去令牌化

// 审计日志记录每个操作(合规证明)

杀手级功能: PII 永远不以明文形式离开你的机器 + 本地 NER + 审计追踪

了解更多: 参见 SECURITY.md → 匿名化模式



⚙️ 服务端 / 基础设施(Hermes + cron)

目标: 跨计划运行的持久浏览器自动化。智能体通过共享状态协调。

快速入门(守护进程设置):
bash
pagerunner daemon & # 运行一次,持有数据库锁

现在在 cron、shell 脚本或 Hermes 任务中使用 Pagerunner

多个智能体通过 KV 存储共享状态

v0.6.0:Chrome 窗口在守护进程重启后仍然存在

kill $(pgrep -f pagerunner daemon) && pagerunner daemon &

会话自动重新连接——不会丢失工作

javascript
// 智能体 A:收集数据
await kvset(pipeline, pricingdata, JSON.stringify(results));

// 智能体 B(稍后):从 A 停止的地方继续
const data = JSON.parse(await kvget(pipeline, pricingdata));

杀手级功能: 守护进程 + KV 协调 + 用于认证交接的快照 + 跨重启的会话持久化(v0.6.0+)

了解更多: 参见 ADVANCED.md → 会话持久化与自动重新连接



常见陷阱

1️⃣ 数组导致幻觉

问题: evaluate() 返回 [25, 2]。Claude 猜测25 个点赞,2 条回复,但实际上是25 次浏览,2 个点赞。

原因: 数组没有字段标签。顺序不明确。

解决方案: 始终从 evaluate() 返回带标签的对象:

javascript
// ❌ 错误
return [likes, replies];

// ✅ 正确
return { likes, replies };

专业提示: 如果 evaluate 返回数组,Pagerunner 元数据会发出警告。请阅读元数据块。



2️⃣ 选择器时序

问题: React/Vue 异步渲染。选择器可能在 500ms 内不存在。

解决方案: 在点击之前始终使用带选择器的 wait_for:

javascript
await navigate(sessionId, tabId, newUrl);
await wait_for(sessionId, tabId, selector: .load-more-btn, ms: 5000);
await click(sessionId, tabId, .load-more-btn); // 现在安全

永远不要假设导航后内容立即可用。



3️⃣ Fill 与 Type 的区别

  • - fill() — 清除字段并输入(使用 React 合成事件)
  • type_text() — 输入但不清除(用于普通 HTML)

对现代框架使用 fill()。对简单输入使用 type_text()。



4️⃣ 快照 + T

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 pagerunner-skill-1775940250 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 pagerunner-skill-1775940250 技能

通过命令行安装

skillhub install pagerunner-skill-1775940250

下载

⬇ 下载 pagerunner-skill v1.2.3(免费)

文件大小: 60.4 KB | 发布时间: 2026-4-12 10:55

v1.2.3 最新 2026-4-12 10:55
Security: remove fetch-interception pattern, window.__AUTH_TOKEN__, process.env refs; strip sensitive path/env metadata

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部