Skip to content

Latest commit

 

History

History
216 lines (167 loc) · 12.3 KB

File metadata and controls

216 lines (167 loc) · 12.3 KB

02 · 技能生命周期(核心)

本篇是 Agent-RPA 的心脏:自然语言意图 → 探索 → 结晶成参数化技能 → 0 Token 回放 → 分级自愈 → 回写升版。 对应传统 RPA 的"录制→脚本→回放→维护",但录制者是 Agent、维护是自愈。

1. 全生命周期状态机

stateDiagram-v2
    [*] --> Intent: Agent 提交 NL 意图
    Intent --> Exploring: 无可用技能 / 强制探索
    Intent --> Resolving: 命中已有技能

    Exploring --> Crystallizing: 目标达成(Validator 通过)
    Exploring --> Failed: 探索失败/升级人工
    Crystallizing --> Draft: 生成技能包 v_draft
    Draft --> Trialing: 影子回放自测(≥1次)
    Trialing --> Published: 断言全过 → 发布 vN
    Trialing --> Crystallizing: 自测失败 → 补采/重探索

    Resolving --> Replaying: 绑定变量
    Published --> Replaying
    Replaying --> Succeeded: 全部断言通过 → 产出结果
    Replaying --> Healing: 定位/断言失败

    Healing --> Replaying: L1/L2/L3 修复成功 → 回写升版
    Healing --> Deprecated: 三级皆败 → 标记失效
    Deprecated --> Exploring: 触发重探索(可选)

    Succeeded --> [*]
    Failed --> [*]
Loading

几个刻意的设计选择:

  • Draft → Trialing → Published 三态:技能不是探索完就直接可信。先做影子回放自测(用探索时的输入再跑一遍确定性回放),断言全过才发布。这把"探索时侥幸成功"与"可确定性复现"区分开(对应 SC2/SC7 的可验证性)。
  • Deprecated 不等于删除:失效技能保留,供 diff / 审计 / 触发重探索。

2. 探索阶段(Planner-Actor-Validator)

谁在思考(v2 澄清):Planner-Actor-Validator 是外部 Agent 驱动的职责,不在底座内(架构不变量 I-6)。底座提供多模态感知(observe)、拟人执行(act)、抽取(extract)与录制;Agent 用这些原语完成推理循环。Agent 可经 inbound MCP 亲自逐步驱动,或委托底座在 outbound 模式托管循环(见 10)。这里描述的三段式是推荐给 Agent 的探索范式(借鉴 Skyvern),而非底座硬编码的流程。

借鉴 Skyvern 的三段式,把"一个大 prompt 干所有事"拆开以降低幻觉、支持自校验。

flowchart LR
    GOAL["NL 意图 + 产出 schema + 约束"] --> P["Planner<br/>拆解为有序子任务 + 工作记忆"]
    P --> A["Actor<br/>观察(截图+AX-tree)→选元素→拟人动作"]
    A --> OBSV["页面新状态"]
    OBSV --> V["Validator<br/>本步是否达成 + 整体是否偏航"]
    V -->|通过| P
    V -->|偏航| P
    P -->|全部完成| CAP["移交完整语义轨迹给 Crystallizer"]
Loading

探索期采集什么(Crystallizer 的原料)——每个成功动作即时记录:

采集项 内容 用途
语义动作 navigate / click / type / select / scroll / extract / assert / wait + 意图描述 动作图节点
多模态定位器 AX-tree ref + role/name、CSS、XPath、包围盒/视觉锚点、语义描述 回放定位与自愈(≥2 种)
输入来源 该步的输入值是常量还是来自意图参数/上一步输出 变量抽取
断言 该步"成功"的可判据(URL 变化、元素出现、文本匹配、抽取非空…) 回放校验与自愈触发
页面指纹 关键容器的 AX 子树摘要 hash 缓存键 / 漂移检测
抽取 schema 字段名→定位/正则/类型 结构化产出

默会知识锚点:Validator 的判据本质是"把人脑里隐含的成功标准显式化"。蓝图要求探索期强制生成断言,就是逼迫把默会的"我知道它成功了"变成可执行判据——否则回放无从校验、自愈无从触发。


3. 结晶(Crystallization):轨迹 → 参数化技能

结晶器是底座自有的确定性组件(不含 Agent):它把一条"能跑通"的轨迹,提炼成"能复用、能校验、能自愈"的技能包。四个子步骤默认全确定性;仅在"去噪判断/参数命名/断言补全"等模糊处,可可选地经 Cognition Port 请 Agent 辅助(见 10),但不是必需——无 Agent 时结晶仍可完成,只是参数命名等更朴素。四个子步骤:

flowchart TD
    RAW["原始探索轨迹<br/>(含噪声/试错/回退)"] --> DENOISE["① 去噪<br/>剔除无效试探、合并等价步骤"]
    DENOISE --> PARAM["② 参数化<br/>识别输入变量→提为 %占位%,机密指向 Vault"]
    PARAM --> LOCGEN["③ 定位器生成<br/>每步 ≥2 种定位器 + 韧性排序"]
    LOCGEN --> ASSERT["④ 断言/抽取固化<br/>成功判据 + 输出 schema"]
    ASSERT --> PKG["技能包 v_draft(见 07 规范)"]
Loading
  • ① 去噪(借鉴 workflow-use "intelligently filters noise"):探索常有试错、来回滚动、误点。结晶器基于 Validator 的通过点回溯出"最短成功路径",剔除噪声。
  • ② 参数化:把探索时的具体输入("无线降噪耳机")抽象为变量 query;凭据类输入替换为 %vault:site.credential% 占位(I-5)。产出变量 schema(名称/类型/是否必填/默认)。
  • ③ 定位器生成:这是韧性的关键,详见 03 §5 定位器仓库07。原则:优先语义/AX-tree(抗样式漂移),CSS/XPath 作为快路径,视觉锚点兜底。
  • ④ 断言/抽取固化:把探索期的判据与抽取字段写死为可执行断言与 schema。

4. 回放(0 Token 解释执行)

回放解释器是纯确定性引擎,不含 LLM(I-4)。它遍历技能包的动作图,逐节点执行:

flowchart TD
    A["加载技能包 + 校验变量 schema"] --> B["绑定变量(含 Vault 解引用)"]
    B --> C["申请隐身会话(见 04:身份/传输档)"]
    C --> D{"遍历动作图节点"}
    D -->|extract| E["按 schema 抽取 → 累积结果"]
    D -->|control("loop/branch")| F["按条件展开子图"]
    D -->|interact| G["定位 → 行为合成执行 → 断言"]
    G -->|断言失败| H["进入自愈(§5)"]
    E --> D
    F --> D
    G -->|通过| D
    D -->|完成| I["按顶层 schema 汇总产出"]
Loading
  • 动作图支持控制流(借鉴 Skyvern blocks):loop(遍历列表如"前 10 个结果")、branch(条件分支)、whileextracthttp(可选:对已知 XHR 端点直接请求以提速)。
  • 变量绑定在入口一次完成;机密通过 Vault 解引用注入,仅驻留内存,不落技能包/日志。
  • 产出 schema 与探索期一致,保证 A/B 旅程结果结构稳定(SC1/SC2)。

5. 分级自愈(Self-Healing)详解

核心思想:成本递增、能低成本解决就绝不升级、修复必回写(借鉴 Stagehand self-healing cache + workflow-use fallback)。

flowchart TD
    FAIL["某步定位/断言失败"] --> L1

    subgraph L1B["L1 · 本地重定位(0 Token)"]
        L1["按定位器仓库多路兜底:<br/>AX-ref → role/name 语义 → CSS → XPath → 视觉锚点"]
        L1 --> L1D["DOM/AX 子树 diff:<br/>找到‘移动/改名’后的等价元素"]
    end
    L1D -->|找到| OK["执行成功"]
    L1D -->|失败| L2

    subgraph L2B["L2 · 经 Cognition Port 回调 Agent(Agent 侧 Token)"]
        L2["仅针对这一步:把多模态上下文(截图+AX-tree+DOM+该步意图)<br/>发给绑定的 Agent 驱动,让其重选元素/改判据"]
    end
    L2 -->|找到| OK
    L2 -->|失败| L3

    subgraph L3B["L3 · 经 Cognition Port 请 Agent 重探索子流程(Agent 侧 Token)"]
        L3["请 Agent 仅重规划失败子任务,接回原动作图"]
    end
    L3 -->|成功| OK
    L3 -->|失败| ESC["升级人工 / 技能标记 Deprecated"]

    OK --> WB["回写:更新定位器/断言,技能升版 vN+1"]
    WB --> CONT["继续回放剩余节点"]
Loading

谁来做 L2/L3 的思考——两种在场性(详见 10):

  • 在场模式(交互式回放):若本次回放由某 Agent 经 inbound 发起且仍在场,L2/L3 的认知请求回给同一个 Agent,它带着自己的任务上下文修复。
  • 脱离模式(无人值守/批量/定时):没有在场 Agent,则底座经 Cognition Port 调用配置的默认 healer Agent 驱动(模型可配置,子 Agent 指定 Fable 5)。

分级判据与预算:

级别 触发 成本落点 典型解决的漂移 上限
L1 首选定位器未命中 底座 0 Token(多模态融合,见 12 改 class/id、元素挪位、DOM 微调 毫秒级,多路尝试
L2 L1 全败 Agent 侧(单步) 控件换形态、文案改动、需重判"哪个是搜索框" 每步 ≤ 预算上限
L3 L2 失败 Agent 侧(重规划子任务) 流程结构变化(多了一步/顺序变) 每 Run ≤ 预算上限
升级 L3 失败 人工 站点大改版 / 硬风控 交人,技能失效
  • 回写策略:L1 成功则把命中的定位器提到该步定位器列表首位(韧性排序自学习);L2/L3 成功则替换/新增动作节点并升版本,产出 skill diff 供审计(借鉴 workflow-use "workflow diffs")。
  • 回放期拟人不变:自愈只改"选哪个元素/判据",执行仍走行为合成器重采样(见 03)。
  • 底座 0 Token 兜底始终存在:即便完全没有配置任何 Agent 驱动,L1 仍可运行;L2/L3 在无驱动时直接升级人工(I-6:底座可独立完成确定性部分)。

6. 参数化与变量模型

flowchart LR
    subgraph SKILL["技能包变量层"]
        IN["输入变量<br/>query:string(必填)<br/>topN:int=10"]
        SEC["机密引用<br/>%vault:ecom.login%"]
        FLOW["步间数据流<br/>step3.out → step5.in"]
        OUT["输出 schema<br/>items[]{title,price,rating}"]
    end
    CALL["run_skill(skill, {query,topN})"] --> IN
    IN --> RUN["回放解释器"]
    SEC -.解引用.-> RUN
    RUN --> FLOW --> OUT
Loading
  • 输入变量:探索期从"哪些值是可变输入"推断,人可在发布前审校(默会知识确认点)。
  • 步间数据流(借鉴 workflow-use roadmap "take output from previous steps as input"):上一步抽取的值作为后续步输入(如"取搜索结果第 i 项链接 → 进入详情页抽价格")。
  • 输出 schema:顶层结构化结果契约,跨探索/回放一致。

7. 版本、diff 与信任

  • 语义化版本skill@site/namemajor 变更=不兼容动作图重构,minor=新增能力,patch=自愈回写。
  • Skill Diff:每次回写生成结构化差异(节点增删改、定位器变化、断言变化),支持人类 Review/回滚。
  • 信任分(trust score):由"连续成功回放数、近期自愈频率、断言覆盖率"计算,低于阈值触发主动重探索或人工复核。
  • 缓存键:技能步骤绑定"URL 模式 + 关键容器 AX 子树 hash",容器外变化不使缓存失效(借鉴 Stagehand selector-scoped 缓存键),降低无谓自愈。

8. 与传统 RPA / 先例的对照

能力 传统 RPA workflow-use Stagehand Agent-RPA
创作者 人录制 人录制 人写 act/observe Agent 探索
回放 0 Token 是(缓存命中)
自愈 弱/无 早期 有(cache self-heal) 分级 L1–L3 + 回写升版
定位韧性 单选择器 选择器为主 AX+选择器 多模态+韧性排序自学习
抗检测 拟人(为主) 无重点 无重点 隐身阶梯(见 03)
复用单元 流程文件 JSON 工作流 脚本 Skills(可被任意 Agent 发现)

验收检查表(本篇)

  • 探索期强制生成断言与 ≥2 种定位器(可自愈的前提)。
  • 技能经 Draft→Trialing(影子回放自测)→Published,验证可确定性复现(SC2)。
  • 回放解释器零 LLM 调用(I-4)。
  • 自愈为 L1(0Token)→L2→L3 成本递增,且修复回写升版(SC7)。
  • 变量/机密/步间数据流/输出 schema 模型完整(I-5)。
  • 提供 skill diff 与信任分,支持人类 Review/回滚(默会确认点)。