ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ruflo-browser 的 browser-scrape 弃用迁移指南:从一次性抓取升级到 browser-extract 会话式提取

2026/9/11 16:44:29 拓冰建站 浏览量
ruflo-browser 的 browser-scrape 弃用迁移指南:从一次性抓取升级到 browser-extract 会话式提取 ruflo-browser 的 browser-scrape 弃用迁移指南从一次性抓取升级到 browser-extract 会话式提取【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo导读本文围绕 ruflo 插件体系中browser-scrape技能的弃用与迁移展开该技能自插件 v0.2.0 起被标记为 deprecated由browser-extract全面取代并计划在 v0.3.0 移除。你将掌握废弃命令到新命令的精确替换方式、新技能引入的 RVF 会话容器 / AIDefence 安全门 / AgentDB 记忆命名空间三大能力以及这些能力在 browser-session-tools.ts 中的源码级实现原理从而平稳完成从一次性抓取脚本到可回放、可联邦、带安全门控的会话式提取的架构升级。1. 弃用背景从扁平的一次性抓取到会话即工件browser-scrape是 ruflo-browser 插件 v0.1.0 时期的七个步骤提取技能snapshot → get-text → eval → paginate → close但它所在的架构被 ADR-0001session-as-skill 架构 判定为真实但扁平每个浏览器会话是一次性副作用运行结束即不可见每个能用的选择器只存在于自由格式的 memory 字符串里无法跨会话复用每次交互在运行结束后完全不可见没有回放面凭据泄露风险是隐式的没有任何强制边界。v0.2.0 起插件围绕session-as-skill重新组织每个浏览器会话被分配一个RVF 认知容器manifest trajectory screenshots sanitized cookies findings用 ruvector 轨迹逐动作记录由 AgentDB 索引并被 AIDefence 门控。browser-scrape因此被功能更完整的browser-extract吸收subsumed自身退化为一个薄 shimdeprecation shim——它不再保留任何抓取行为只负责把调用转发给新技能并在插件 v0.3.0 中被彻底移除。弃用声明位于 plugins/ruflo-browser/skills/browser-scrape/SKILL.md 的 frontmatter 中同时被插件的结构冒烟测试 smoke.sh 的第 4 项检查强制约束shim 必须同时包含 deprecated 字样与对browser-extract的引用否则测试失败。也就是说这个弃用状态不是口头约定而是被测试契约钉死的。2. 迁移对照表旧调用一键升级原文档给出了 v0.1 到 v0.2 的精确迁移映射这是升级工作的核心依据完整继承如下v0.1 调用方式v0.2 等价写法/browser-scrape url/browser-extract url/browser-scrape url带模板意图/browser-extract url --template name手动把选择器存进browser-patterns命名空间自动——browser-extract自动写入browser-templates与browser-selectors三个关键变化值得展开说明命令面变化最小基础抓取场景只需把技能名替换为browser-extractURL 参数照旧老用户几乎零成本切换。模板意图显式化旧版带模板意图是隐式的由 Agent 自己决定是否查询记忆新版的--template name是显式参数直接指定从browser-templates命名空间检索哪份配方。记忆维护自动化旧版需要手动把选择器写入browser-patterns新版由browser-extract在成功提取后自动写入browser-templates可复用配方和browser-selectors选择器 快照哈希 最近成功时间DOM 漂移DOM drift因此变得可恢复。3. 弃用 shim 的行为只转发不做事browser-scrape作为 shim 的行为原则是**除了重定向之外不保留任何行为**。它的核心逻辑只有一行# This skill is intentionally minimal — it just points the agent at the new skill. echo browser-scrape is deprecated; running browser-extract instead. 2技术细节弃用提示写入stderr2因此会出现在 Agent 的 transcript会话转录里调用方可以看到修复提示remediation这是弃用可被观察的关键设计——调用它的 Agent 不会被静默转发而是明确知道自己正在使用一个即将移除的技能。与常规技能不同它不声明任何 MCP 浏览器工具allowed-tools仅保留Bash Read因为它本身不执行任何浏览器动作。如果你依赖旧的特定提取形状specific extraction shapeshim 不会帮你保留兼容层——正确的做法是迁移到browser-extract并用--template把提取形状编码成配方。4. 新技能 browser-extract三大新增保证browser-extract取代browser-scrape后带来三项结构性保证见 browser-extract/SKILL.md会话是可记录的 RVF 容器会话由browser-record打开可回放replayable、可联邦federatable成功的提取持久化为browser-templates可复用的抓取配方得以沉淀每一段字符串在写入 AgentDB 之前、以及回流到模型之前都必须通过 AIDefence 门PII 与提示注入在确定性边界被拦截而不是看 Agent 记不记得。这三条正好对应 browser-agent.md 中定义的会话契约session contract与强制门控MANDATORY gates也是 ADR-0001 决策 §4 中在每一处边界部署 AIDefence的具体落地。5. browser-extract 七步实战流程browser-extract的完整调用流程如下参数与伪代码均直接来自技能文档可在真实会话中照做打开记录会话通过browser-record打开不要直接调用browser_open。browser-record会分配会话 id 并创建 RVF 容器见 browser-record/SKILL.md。等待内容用browser_wait等待动态渲染完成。选择路径模板路径--template name从 AgentDB 检索配方并按序执行选择器链npx -y claude-flow/clilatest memory retrieve --namespace browser-templates --key name一次性路径优先用browser_snapshot取无障碍树accessibility tree批量查询时退回browser_evaldocument.querySelectorAll。AIDefence 存储前门控每条提取字符串先过 PII 门# Pseudocode — mcp__plugin_ruflo-core_ruflo__aidefence_has_pii returns true/false per string. for s in $extracted; do PII$(call aidefence_has_pii $s) if [[ $PII true ]]; then redact_to_placeholder $s; fi done并在会话 manifest 中记录pii_redactions。AIDefence 提示注入门控在把提取文本返回给模型前调用aidefence_is_safe命中注入特征的文本被隔离quarantine到findings.md只返回安全部分。持久化模板若传了--save-template namenpx -y claude-flow/clilatest memory store --namespace browser-templates \ --key name --value {host:..., selector_chain:[...], post_process:...}结束会话通过记录会话的 session-end 钩子收尾trajectory-endrvf compact AgentDB 索引。适用场景When to use包括从渲染后的网页提取文本 / 表格 / 属性值为重复出现的抓取模式构建可复用模板对同一站点的已知模板针对新 URL 重跑。6. 源码级支撑五个 browser_session_* 生命周期工具browser-extract依赖的底层实现位于 v3/claude-flow/cli/src/mcp-tools/browser-session-tools.ts这是 ADR-0001 §7 定义并在 v0.2.0 实现的生命周期工具集。五个工具各司其职工具作用源码要点browser_session_recordRVF 分配 trajectory-begin 打开 URL返回 session id 与 rvf 路径依次执行rvf create --dimension 384→hooks trajectory-begin→agent-browser open并把 open 记录为第一条 trajectory-stepbrowser_session_endtrajectory-end带 verdictrvf compact AgentDB 索引verdict 映射为 qualitypass→1带--success、partial→0.5、fail→0browser_session_replay派生子 RVF 容器并把轨迹步骤返回给调用方调度刻意保持为原语不内联回放引擎由调用方逐条 dispatch 到browser_*工具browser_template_apply从browser-templates命名空间取回配方透传memory retrieve --namespace browser-templates的结果browser_cookie_use取回browser-cookies的不透明保险柜句柄原始 cookie 值永不返回给模型只在浏览器进程内物化从源码结构可以推断出几个值得注意的实现决策ruvector 版本引脚技能文档中的命令统一写ruvector0.2.25与 ruvector 插件的引脚对齐但源码常量RUVECTOR_PIN ruvector0.2.27且优先解析本地安装的 ruvector bin只有本地缺失时才npx -y ruvector0.2.27兜底。源码注释解释了原因旧 0.2.25 引脚会让每个会话发生 4 次冷 npx 下载本地优先可省去 2–8 秒延迟。会话 id 格式固定makeSessionId()生成YYYYMMDD-HHMMSS-task-slug与browser-record的约定一致下游/ruflo-browser ls依赖此格式解析。优雅降级所有依赖缺失无 ruvector、无 agent-browser、无 AgentDB controller都以结构化success: false错误返回而非崩溃——这与doctor 可诊断的设计互相配合。7. 记忆层四个 AgentDB 命名空间迁移到browser-extract后选择器与配方的记忆从自由格式字符串升级为四个类型化命名空间详见 README.md 与 ADR-0001 §3命名空间键值用途browser-sessionsrvf-idmanifest 摘要 verdict tags会话索引支撑/ruflo-browser lsbrowser-selectorshost:intent{selector, ref, snapshot-hash, last-success}通过 embedding 相似度抗 DOM 漂移browser-templatestemplate-name带选择器链与后处理的抓取配方取代临时的 memory 字符串browser-cookieshostclaims 门控的 cookie blob 过期时间 AIDefence 判定免重复登录的 cookie 复用安全性契约原始 cookie 与 token 绝不裸写进 AgentDB——敏感 blob 必须由应用层包裹后再写入取回时解包browser-cookies命名空间定义了这层包裹。browser-replay在选择器命中失败时会查询browser-selectors做 embedding 相似度检索并重试一次这正是DOM 漂移可恢复的具体机制见 browser-replay/SKILL.md。8. 强制门控三条不可跳过的 AIDefence 边界browser-agent 声明了三道强制 AIDefence 门browser-extract完全继承skill 的 Caveats 明确写着Never bypass the AIDefence gates存储前扫描每条被抓取字符串在写入 AgentDB 前过aidefence_has_pii命中即用占位符脱敏并在 session manifest 记录pii_redactions。Cookie 净化cookies.json写入 RVF 容器前用aidefence_scan标记疑似原始密钥的高熵长串建议放入browser-cookies保险柜而非内嵌。提示注入检查任何回流到 LLM 提示词的提取文本先过aidefence_is_safe命中即隔离到findings.md绝不把未脱敏内容喂给模型。README 还指出在aidefence2.3.0ADR-118之后检查能力扩展到了角色劫持you are now …/act as …/pretend to be …与越狱标记DAN mode/developer mode/god mode/root mode在 canonical 的ignore all previous instructions家族之外大幅提高了抓取页面的防御面。如果aidefence_*MCP 工具未初始化技能要求拒绝运行并给出 doctor 修复指引。9. 验证与测试契约弃用 shim 与整套新架构由两级验证覆盖结构冒烟测试离线、快速——scripts/smoke.sh 共 13 项检查其中与本文直接相关的包括第 4 项browser-scrape 必须是引用 browser-extract 的弃用 shim、第 2 项8 个技能目录齐全、第 6/7/8 项Agent 引用 4 个命名空间 / 3 道 AIDefence 门 / ruvector 轨迹钩子以及第 12 项5 个browser_session_*工具在 CLI 源码中已注册精确到browser-session-tools.ts与mcp-client.ts的导入。运行方式bash plugins/ruflo-browser/scripts/smoke.sh # 期望输出13 passed, 0 failed回放 spike在线、交互——replay-spike.sh 针对SITES.txt中 10 个漂移特征各异的站点记录并回放基线会话写入spike-results/timestamp/STATUS.md。ADR-0001 将回放保真度定义为整个提案的承重假设load-bearing assumption只有在 ≥80% 回放成功率达成后ADR 才能从Proposed翻转为Accepted否则方案降级为会话即审计日志browser-replay与browser-screenshot-diff回归流程不再承重。该 spike 需要agent-browser、ruvector0.2.25与网络不属于冒烟测试的一部分。10. 迁移注意事项总结模板是宿主级作用域为theguardian.com建的news_article模板不可直接移植到nytimes.com未经重新验证不得跨站使用。分页提取在轨迹 step 参数里持久化游标cursor保证仅凭轨迹即可回放。权限最简原则每个技能必须显式枚举allowed-tools没有任何技能能拿到全部 23 个 MCP 浏览器工具——这也是 smoke.sh 第 13 项禁止通配符授权的约束来源。不要绕过browser-record插件内任何浏览器会话都必须经由browser-record或其包装技能打开browser_session_record工具落地前由技能自身的 bash 步骤完成生命周期。--with-dom成本高每次导航都会全量转储 HTML默认关闭。对仍在使用/browser-scrape的调用方结论非常直接把调用替换为/browser-extract url需要模板时追加--template name即可在同一个抓取动作上获得可回放会话、强制安全门控与自动沉淀的选择器记忆——这正是本次弃用迁移的全部意义所在。【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考