瀏覽器自動化架構實戰:RVF 認知容器 + ruvector 軌跡 + AgentDB 記憶 + AIDefence 門禁)
ruflo-browser 會話即技能Session-as-Skill瀏覽器自動化架構實戰RVF 認知容器 ruvector 軌跡 AgentDB 記憶 AIDefence 門禁【免費下載鏈接】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/rufloruflo-browser 是 ruflo 插件體系中面向開放網頁的瀏覽器自動化插件其核心思想是把每一次瀏覽器會話從一次性副作用升級為一級公民的可尋址、可回放、可聯邦化工件RVF 認知容器。本文以插件 README 與 ADR-0001 會話即技能架構決策 為主線結合 browser-session-tools.ts 等源碼實現完整講解安裝方式、RVF 會話容器結構、7 個生命周期命令、8 項技能、AgentDB 記憶命名空間、AIDefence 三道強制門禁、235 MCP 工具面以及從結構性冒煙測試到回放尖峰Replay Spike的驗證體系。讀完你可以在自己的 ruflo 環境中把跑一次瀏覽器變成沉淀一份可復用、可回放、可審計的知識資產。一、架構總覽為什么需要 Session-as-Skill1.1 舊版v0.1.0的扁平化問題舊版 ruflo-browser 只是一層圍繞 23 個 Playwright MCP 工具的薄包裝mcp__plugin_ruflo-core_ruflo__browser_*。表面上可用測試、截圖、抓取、會話列表都有但存在四個結構性問題會話是短暫的瀏覽器會話結束后一切消失沒有一級的會話工件選擇器不沉淀每個試過能用的選擇器只存在于自由格式的記憶字符串里換一次 DOM 就失效交互不可見運行結束后無法回溯任何交互憑據風險隱式存在cookie、token 泄漏風險沒有顯式邊界。1.2 核心決策RVF 即會話容器ADR-0001狀態Proposed2026-05-04提出把 ruflo-browser 重構為session-as-skill架構每個瀏覽器會話是一級的、可回放、可審計的 RVF 容器內含一條 ruvector 軌跡技能是穩定 Playwright 原語之上的薄組合市場形態鏡像 Browserbase 的 skills 倉庫。這一決策的支點性假設load-bearing assumption是選擇器 動作軌跡在 DOM 漂移下可回放依賴browser-selectors的嵌入相似度恢復。因此 ADR 在驗收前強制要求一次預接受尖峰pre-Accept spike在 10 個漂移特征各異的站點上回放成功率≥80%達標才能把 ADR 從Proposed翻轉為Accepted詳見 驗證體系。1.3 基座對齊ADR-122插件本身是用戶可感知的技能層底層原語Ed25519 RVF 簽名軌跡、因果圖自愈、AIDefence 認證的 cookie 保管庫、聯邦 MCTS、Session Capsules、Workflow Compiler在claude-flow/browsernpm 包中發布由 v3 源碼的 browser-session-tools.ts 與 browser-tools.ts 承載。二、安裝在 ruflo 的插件市場中通過兩條命令完成安裝/plugin marketplace add ruvnet/ruflo /plugin install ruflo-browserruflo安裝后需要保證以下運行期依賴可用/ruflo-browser doctor會逐一探測agent-browserPlaywright 瀏覽器驅動器或通過npx --yes agent-browser按需獲取ruvectorCLI軌跡鉤子 RVF 容器文檔與 ADR 記錄釘住ruvector0.2.25AgentDB 控制器browser-sessions等四個命名空間AIDefence三道門禁工具。實現細節實際 MCP 實現browser-session-tools.ts已將 ruvector 的 npx 回退釘釘升級為ruvector0.2.27并采用本地優先解析策略——若 CLI 依賴樹中已存在本地 ruvector 包則直接用node bin派生其 bin避免每次會話為下載第二個ruvector 版本付出 2–8 秒冷啟動每會話 4 次 shell-out。這與 README/ADR 中 0.2.25 的記載屬于版本演進命令形態rvf create/compact/status/derive/segments、hooks trajectory-begin/step/end在 0.2.25 與 0.2.27 上均經驗證。三、會話如何工作RVF 容器結構一個瀏覽器會話在會話開始時分配 RVF 容器在會話結束時提交rvf-id/ ├── manifest.yaml # URL、viewport、profile、runner、lineage父會話譜系 ├── trajectory.ndjson # 每個動作一行由 ruvector hooks trajectory-step 寫入 ├── screenshots/step.png ├── snapshots/step.json # 按導航邊界索引的可訪問性樹 ├── dom/ # 可選當傳入 --with-dom 時生成 ├── cookies.json # 經 AIDefence 清洗后的 cookie └── findings.md # 測試裁決、抓取輸出、注入隔離記錄各槽位的生產者與說明見 ADR-0001 §1槽位生產者說明manifest.yaml會話開始鉤子URL、viewport、profile、runner本地 Playwright 或遠程、父會話譜系trajectory.ndjsonruvectorhooks trajectory-step每個 click/nav/extract 一行含 selector、ref、截圖路徑、毫秒時間戳screenshots/browser_screenshot動作后文件名遵循step-id.png約定snapshots/browser_snapshot導航后按導航邊界索引的可訪問性樹dom/可選導航后傳入--with-dom時的 HTML 轉儲cookies.json會話結束寫入前經 AIDefence PII 掃描清洗findings.mdreviewer 技能測試失敗、抓取結果或軌跡裁決的 Markdown 摘要會話引用從此是 RVF id而不是 Playwright 句柄。這是關鍵轉折會話可以重新打開rvf ingest id、派生rvf derive、聯邦共享rvf export、歸檔而不會丟失軌跡或認證狀態。ADR-0001 明確指出這是從 Browserbase.o11y/run-id/旁車布局借來的模式區別在于他們的布局是丟在磁盤上的旁車文件而我們讓它本身就是會話本體用rvf query id可查詢。四、命令/ruflo-browser動詞分發器commands/ruflo-browser.md被重寫為按子命令分發的動詞分發器/ruflo-browser ls [--query text] # 列出會話AgentDB 索引 /ruflo-browser show session-id # 顯示 manifest trajectory 裁決 /ruflo-browser replay session-id # 重新驅動軌跡 /ruflo-browser export session-id # rvf export → tar.zst /ruflo-browser fork session-id # rvf derive → 新的譜系追蹤會話 /ruflo-browser purge session-id # 銷毀保留脫敏 manifest /ruflo-browser doctor # 檢查 Playwright、MCP、AgentDB、AIDefence各動詞的關鍵調用來自 commands/ruflo-browser.md動詞底層調用說明ls [--query text] [--host host] [--verdict pass\|fail\|partial]memory list --namespace browser-sessions/memory search --namespace browser-sessions --query QUERY語義過濾基于 AgentDB活動會話還會調browser_session-listshow session-idnpx -y ruvector0.2.25 rvf status id.rvfrvf segments打印 manifest 最近 20 條軌跡 裁決再讀trajectory.ndjson尾部與findings.mdreplay session-id [--url new-url] [--mutate json]調用browser-replay技能browser_session_replayMCP 工具就緒后改走該工具用于回歸測試export session-id [-o path] [--federate]rvf export id.rvf -o path--federate時經ruflo-federation推送聯邦共享fork session-id [--name new-name]rvf derive id.rvf new.rvf譜系追蹤cookie、選擇器、模板全部繼承purge session-id [--keep-manifest]銷毀 RVF 容器默認保留browser-sessions中的脫敏 manifest 使后續搜索仍可發現--no-keep-manifest完全擦除doctorbash plugins/ruflo-browser/scripts/smoke.sh 依賴探測探測browser_openagainstabout:blank、agentdb_health、aidefence_stats、npx -y ruvector0.2.25 --version五、技能目錄8 個新技能 1 個棄用 shim每個技能目錄遵循既有約定kebab-case 目錄 帶 frontmattername、description、argument-hint、allowed-tools的SKILL.md。allowed-tools 必須逐技能顯式枚舉——沒有任何技能獲得全部 23 個 MCP 瀏覽器工具這是從 Browserbase 的Bash-only 原語原則繼承而來的克制。技能用途說明browser-record打開一個命名的、被追蹤的會話到 RVF 容器原語其余技能都在其上組合browser-replay回放存儲的軌跡可換 URL 或注入變異輸入v0.2.0 架構的支點性假設browser-extract運行存儲的browser-templates配方或一次性抽取PII 掃描browser-login驅動一次認證流清洗并保管 cookie 供復用借用 Browserbasecookie-sync模式browser-form-fill表單交互字段名 → 值映射集成browser-templatesbrowser-screenshot-diff兩個會話截圖的像素 DOM 差異視覺回歸browser-auth-flow探測認證流的重定向泄漏、缺 CSRF、弱會話 cookie對抗式審計browser-testUI 測試配方組合browser-recordbrowser-replaybrowser-scrape是棄用 shim委托給browser-extract在插件 v0.3.0 移除。5.1 browser-record一切的原語skills/browser-record/SKILL.md 是插件內所有瀏覽器技能組合的基座不調用這個技能或其包裝就不要在插件里跑瀏覽器會話。核心步驟# 1. 分配會話 id 與 RVF 容器session id 格式固定YYYYMMDD-HHMMSS-task-slug SID$(date %Y%m%d-%H%M%S)-${TASK_SLUG:-record} npx -y ruvector0.2.25 rvf create $SID.rvf --dimension 384 npx -y ruvector0.2.25 hooks trajectory-begin --session-id $SID --task $1 # 2. browser_open 打開 URL3. browser_snapshot 初始可訪問性樹 browser_screenshot 基線圖 # 4. 每個交互前后記錄軌跡步驟 npx -y ruvector0.2.25 hooks trajectory-step \ --session-id $SID --action click --args {selector:#login} --result ok # 5. 干凈收尾 npx -y ruvector0.2.25 hooks trajectory-end --session-id $SID --verdict pass npx -y ruvector0.2.25 rvf compact $SID.rvf # 6. 在 AgentDB browser-sessions 下建立索引 npx -y claude-flow/clilatest memory store --namespace browser-sessions \ --key $SID --value {rvf_id:$SID,host:...,task:...,verdict:pass}注意事項--with-dom昂貴每次導航全量 HTML 轉儲默認關閉AIDefence 門禁發生在抽取時而非導航時——browser-record是原語脫敏責任在讀取內容的技能browser-extract、browser-test。5.2 browser-replay回放支點skills/browser-replay/SKILL.md 直接聲明自己是v0.2.0 架構的支點性假設ADR-0001 Verification §4 要求跨 10 個漂移特征各異的站點回放成功率 ≥80%之后提案才能從Proposed→Accepted。若回放不可靠把失敗模式記錄進findings.md并上報 ADR。回放流程rvf status定位源會話 → 讀trajectory.ndjson每行{ts, action, args, selector, result}→browser_open開新瀏覽器 → 逐步驟分派對應 MCP 工具 →選擇器未命中時不要立刻失敗先在browser-selectors命名空間查詢嵌入相似選擇器并重試一次npx -y claude-flow/clilatest memory search --namespace browser-selectors \ --query host intent --limit 5裁決方式matched-step / total-step 比率默認容差閾值0.85--tolerance可配置裁決寫入findings.md。ADR 明確提示Browserbase 明確不提供回放rrweb 會話回放已被棄用我們押注的是選擇器嵌入恢復如果單步恢復需要超過一次重試那說明該站點需要重新錄制而非回放。5.3 browser-extract模板化抽取 強制門禁skills/browser-extract/SKILL.md 取代舊browser-scrape帶來三條新保證會話是已記錄的 RVF 容器成功的抽取持久化為browser-templates每條字符串在存入 AgentDB 和回流模型前都經過 AIDefence。支持模板路徑--template name從browser-templates檢索配方與一次性路徑優先browser_snapshot可訪問性樹批量查詢回退browser_evaldocument.querySelectorAll。模板是host 作用域的——news_article模板不能跨站直接復用分頁抽取要把游標持久化進軌跡步驟參數保證僅憑軌跡就可回放。5.4 browser-login 與 cookie 保管庫skills/browser-login/SKILL.md 驅動一次認證流然后把結果 cookie 保管進browser-cookies供后續復用npx -y claude-flow/clilatest memory store --namespace browser-cookies \ --key host \ --value {vault_handle:opaque, expiry:iso, aidefence_verdict:safe}三條紀律絕不把原始 cookie、token、密碼寫進日志或軌跡認證 POST 的軌跡步驟只記錄字段名 redacted占位符憑據來自用戶或環境不從.env讀取、不粘貼進軌跡參數MFA 時只捕獲重定向結果不捕獲驗證碼本身。注意此技能不是憑據存儲方案——vault-handle 模式防御的是 AgentDB 泄漏而非代理環境的整體淪陷。5.5 其余技能速覽browser-form-fill結構化字段映射{first_name: Ada, ...}有browser-templates條目時自動解析字段名 → CSS 選擇器否則走可訪問性快照填寫值必須脫敏——軌跡只記錄字段名 重定向占位符browser_type模擬按鍵與browser_fill程序化賦值語義不同需在軌跡步驟里記錄用的是哪個遇到 CAPTCHA 必須上拋給用戶禁止繞過。browser-screenshot-diff按step-id配對兩個會話的截圖與可訪問性快照支持--mode pixel|dom|both像素 diff 報告mse、psnr和最大差異簇邊界框默認閾值 0.02即 2% 像素DOM diff 在 Playwright 可訪問性樹上做節點級比較比 HTML diff 更穩定。該技能不計劃提供browser_screenshot_diffMCP 工具直接在本地 RVF 工件上運行diff 裁決也寫進新的 RVF 容器使 diff 本身可回放。browser-auth-flow對抗式認證審計--probes csrf,redirect,cookie,oauth四類探針——csrf 檢查同源 token 字段redirect 監視跨源重定向攜帶認證狀態cookie 逐一檢查Secure/HttpOnly/SameSite/過期/熵并把每條過aidefence_scanoauth 驗證state/nonce高熵且redirect_uri匹配注冊回調域。輸出結構化的findings.md供人工審查禁止自動處置。典型審計軌跡 15–40 步。browser-testUI 測試配方由browser-record錄制browser-replay驗證組合每個測試產出可回放 RVF 工件而非短暫運行--against prior-session-id可對基線跑browser-screenshot-diff。browser-intent自然語言層通過browser_actpage-agentADR-175執行點擊登錄按鈕這類意圖式指令當目標元素難以用選擇器表達時使用會引入 LLM 延遲與成本已知精確選擇器時仍應直接用browser_click/browser_fill。六、記憶層四個 AgentDB 命名空間命名空間鍵值用途browser-sessionsrvf-idmanifest 摘要 裁決 標簽/ruflo-browser ls的會話索引browser-selectorshost:intent{selector, ref, snapshot-hash, last-success}通過嵌入相似度扛 DOM 漂移browser-templatestemplate-name帶選擇器鏈 后處理的抓取配方取代即興記憶字符串browser-cookieshost聲明門控的 cookie blob 過期 AIDefence 裁決免重認證復用 cookie原始 cookie 與 token 永遠不會裸入 AgentDB——見 ADR-0001 §3。該層不假設加密存儲encryption-at-rest敏感 blob原始 cookie、token必須由應用層在插入前包裝、取回時解包browser-cookies命名空間定義了這種包裝契約。這也對應 Browserbase--context-id持久上下文的模式差異他們的上下文活在 Browserbase 服務器上我們的活在 AgentDB 里受聲明門控并可通過聯邦共享。browser-agent.md中給出了寫入側約定會話結束時寫{rvf_id, host, task, verdict, tags, created_at}成功點擊/填寫后寫選擇器{host, intent, selector, ref, snapshot_hash, last_success}成功抓取管道后寫模板成功認證流后寫 cookie 條目。同時有一條硬性紀律造新選擇器之前必須先搜browser-selectors——命名空間記憶的全部意義在于選擇器知識跨會話累積并經嵌入相似度扛住 DOM 漂移。七、AIDefence 門禁強制不可跳過三道門禁全部強制且位于 MCP 表面之下——Agent 無法通過換工具跳過它們存儲前掃描Pre-storage scan每條抓取字符串在 AgentDB store 前必須通過aidefence_has_pii。命中以占位符脫敏并在會話 manifest 記pii_redactions: [{path, kind, count}]。Cookie 清洗Cookie sanitizationcookies.json落入 RVF 容器前先跑aidefence_scan標記高熵原始密鑰長、高熵、無過期提議將其保管進browser-cookies聲明門控取回而非嵌入會話。提示注入檢查Prompt-injection check任何回流到 LLM 的抽取文本先過aidefence_is_safe觸發注入裁決的頁面內容隔離到findings.md絕不未脫敏抵達模型。ADR-118 升級高杠桿配合aidefence2.3.0升級狀態 Proposed2026-05-14aidefence_is_safe的檢測面大幅擴展——提示注入正則從恰好一個修飾詞放寬到0–4 個修飾詞窗口從而首次匹配經典前綴ignore all previous instructions家族新增角色劫持模式you are now …/act as …/pretend to be …與越獄標記DAN mode/developer mode/god mode/root mode。對瀏覽器抓取頁面而言這是高杠桿升級——被抓取的網頁是這些模式的高泄漏源。該 ADR 同時聲明無 MCP 工具簽名變更、aidefence_stats的total_mitigations從硬編碼 0 改為基于AtomicU64的熱路徑計數器觀察者永遠不會看到低于真值的計數。browser-agent.md的強制條款若 AIDefence 未初始化必須拒絕運行并給出 doctor 修復指引——不存儲、不向模型返回任何內容。八、MCP 表面23 個交互原語 5 個會話生命周期工具18 個既有交互原語位于 browser-tools.tsopen/close/click/type/fill/select/check/uncheck/hover/press/scroll/screenshot/snapshot/eval/wait/reload/back/forward另加 v0.2.0 新增的 5 個browser_session_*生命周期工具共 23 個。新增工具實現在 browser-session-tools.ts418 行已在 mcp-client.ts 注冊工具用途實現要點源碼確認browser_session_recordRVF 分配 ruvectortrajectory-beginagent-browser open返回 session id rvf path必填url、task可選session自動生成格式YYYYMMDDHHMMSS-slug、rvf_dir默認.ruflo/browser-sessionsruvector 本地優先解析缺失時npx -y ruvector0.2.27兜底browser_session_endtrajectory-endrvf compact AgentDB 索引到browser-sessionsverdict枚舉pass/fail/partial映射為 ruvector 的--quality1/0.5/0pass 加--success索引失敗非致命——RVF 容器才是真值源browser_session_replayRVF derive 子容器 返回軌跡步驟供調用方分派刻意保持為原語不內聯回放引擎返回rvfStatus/rvfSegments并在nextStep中要求調用方逐條讀trajectory.ndjson、分派browser_*工具、選擇器未命中時查browser-selectors重試、最后以聚合裁決調browser_session_endbrowser_template_apply從browser-templatesAgentDB 命名空間取配方經memory retrieve --namespace browser-templates --key name返回配方 nextStep提示調用方分派并持久化新選擇器browser_cookie_use從browser-cookies取不透明保管句柄原始 cookie 值永不返回——只返回vault句柄 過期 AIDefence 裁決原始值僅在瀏覽器進程內物化設計要點源碼注釋確認優雅降級缺失依賴無 ruvector、無 agent-browser、無 AgentDB 控制器時返回結構化success: false錯誤而非崩潰釘釘與子命令面RUVECTOR_PIN ruvector0.2.27rvf create/compact/status/derive/segments與hooks trajectory-begin/step/end的旗標已對照--help驗證——例如trajectory-begin接受的是-c/--context-a/--agent而非文檔示例中的--session-id/--taskrvf create僅接受-d/--dimension必填-m/--metric--kind為未知選項issue #2015 修復維度 384與工具鏈其他部分ONNX embedder AgentDB 向量索引的 MiniLM-L6 默認對齊browser_session_record的工具描述明確區分了使用邊界JS 密集 SPA 抓取、登錄流 cookie 復用、DOM 漂移回放、內容進入 Claude 前的 AIDefence PII 門禁這些場景才需要真實瀏覽器自動化靜態 HTML 頁面用原生 WebFetch 更快更省。九、驗證體系冒煙測試與回放尖峰兩類互補檢查README §Verification9.1 結構性冒煙快速、離線bash plugins/ruflo-browser/scripts/smoke.sh # 預期綠燈13 passed, 0 failedsmoke.sh13 步驗證插件結構健全性plugin.json版本 0.2.1 與新關鍵詞rvf/replay/trajectory/agentdb/aidefence8 個技能目錄齊全每個技能 frontmatter 含 name/description/allowed-toolsbrowser-scrape是標注棄用的 shim/ruflo-browser命令覆蓋全部 7 個動詞agent 引用 4 個 AgentDB 命名空間與 3 個 AIDefence 門禁及 trajectory 鉤子ADR-0001 存在且為 Proposed 且標注支點性回放風險README 枚舉 8 技能 動詞5 個browser_session_*工具在 CLI 源碼注冊且browserSessionTools導入于 mcp-client.ts無任何技能授予通配符工具權限。9.2 回放尖峰交互式、在線、pre-Accept 門檻bash plugins/ruflo-browser/scripts/replay-spike.shreplay-spike.sh 對 SITES.txt 中每個 URL默認 10 個站點覆蓋靜態 / SPA 密集 / 頻繁部署 / 認證墻 / 反機器人等不同漂移特征執行錄制基線會話 → 派生子容器回放 → 比對動作序列的完整循環輸出spike-results/timestamp/STATUS.md含每站點裁決與聚合回放率。ADR 閾值≥80%達標即翻轉 ADR-0001 為Accepted低于閾值則提案降級為會話即審計日志回放與截圖 diff 變成盡力而為而非支點。該尖峰不屬于冒煙測試——運行它是刻意的審計步驟需要agent-browser或npx --yes agent-browser、ruvector0.2.25npx 自動獲取、5 個生命周期 MCP 工具已接線、以及網絡訪問。腳本內注釋明確rvf create需要--dimension 384且不支持--kind#2015。十、架構決策與邊界聲明架構決策記錄ADR-0001 —— Adopt session-as-skill architecture for ruflo-browser狀態Proposed其驗證契約7 項編號測試會話生命周期、AgentDB 索引、AIDefence 門禁、回放、cookie 保管庫、聯邦、doctor被scripts/smoke.sh物化為 13 項結構性檢查 獨立回放尖峰。負向后果ADR §ConsequencesAgentDB 與 AIDefence 成為硬依賴doctor與 init 流程必須強制RVF 壓縮每會話加 100–500ms 開銷短抓取場景可用--no-rvf逃生口跨機器復用需要聯邦導出/導入Browserbase 的托管能力反機器人、住宅代理、CAPTCHA 解決不被復制——本插件保持本地 Playwright 定位需要這些特性的用戶應繼續直接用 Browserbase本提案關乎架構而非功能對等。十一、相關插件生態ruflo-ruvector—— 軌跡鉤子、SONA 模式蒸餾、MCP 工具ruflo-agentdb—— 支撐browser-sessions/browser-selectors/browser-templates/browser-cookies的控制器ruflo-aidefence—— PII / 提示注入門禁3-gate 契約與 ADR-118 升級ruflo-federation—— 經 RVF 導出的跨安裝會話共享。許可MIT。【免費下載鏈接】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),僅供參考