一、核心方法论:四层递进式蒸馏

┌─────────────────────────────────────────┐
│  第4层:Agent Skill(可执行)              │
│  SKILL.md + Tools + Prompts             │
├─────────────────────────────────────────┤
│  第3层:结构化SOP(可理解)                │
│  步骤+决策点+异常处理+成功标准              │
├─────────────────────────────────────────┤
│  第2层:语义层(可分析)                   │
│  录屏解析:动作+界面+语音+意图            │
├─────────────────────────────────────────┤
│  第1层:原始素材(可采集)                  │
│  录屏+历史成果+邮件+聊天记录               │
└─────────────────────────────────────────┘

第一层:原始素材采集(高效捕获隐性知识)

方案A:录屏采集(推荐)
最佳实践 :

要素 操作要点 为什么重要
边做边说 口述当前步骤目的和决策理由 AI提取意图,而非仅动作
展示错误处理 故意展示常见错误及修复 捕获异常处理模式
多视角录制 同一任务3-5人分别录制 捕获不同工作风格,Agent学习最优路径
关键帧标记 在决策点暂停说明 生成高质量SOP

方案B:历史成果挖掘

# 从历史文档中提取技能的知识图谱方法
class HistoricalSkillExtractor:
    def extract_from_sop(self, pdf_path: str) -> Skill:
        """
        使用PDF Extractor Skill [^122^] 解析历史SOP
        提取:目标、步骤、决策分支、工具、输出物
        """
        # 1. 结构化提取(表格、流程图、关键步骤)
        structured = PDFExtractor().parse(pdf_path)
        
        # 2. 语义理解(步骤间依赖关系)
        dependencies = LLMAnalyzer().extract_flow(structured)
        
        # 3. 冲突检测(与现有技能对比)
        conflicts = self.check_duplicates(dependencies)
        
        return Skill.from_structured(structured, dependencies)
    
    def extract_from_communication(self, email_threads: List[Email]):
        """
        从邮件/聊天记录提取隐性知识
        使用Skill Parser API [^125^] 提取协作模式
        """
        # 提取:问题解决路径、决策依据、常见问答
        pass

第二层:语义解析(录屏→结构化数据)

这是最关键的技术环节。参考 WONDERBREAD 研究项目的方法 :

# 基于WONDERBREAD的多模态解析流程
class ScreenRecordingParser:
    """
    将录屏解析为:意图+动作轨迹+关键帧+SOP草稿
    """
    
    def parse(self, video_path: str) -> ParsedWorkflow:
        # 1. 视频分帧(按动作事件)
        frames = self.extract_key_frames(video_path)
        # 输出:[(timestamp, screenshot, action_type), ...]
        
        # 2. 动作识别(计算机视觉+OCR)
        actions = []
        for frame in frames:
            ui_elements = self.detect_ui_elements(frame)  # 按钮、表单、菜单
            text_content = self.ocr(frame)               # 界面文字
            cursor_action = self.track_cursor(frame)       # 点击、输入、滚动
            
            actions.append({
                'timestamp': frame.timestamp,
                'ui_elements': ui_elements,
                'action': cursor_action,
                'context': text_content
            })
        
        # 3. 语音转意图(如录屏含旁白)
        if self.has_audio(video_path):
            transcript = self.transcribe(video_path)
            intent = self.extract_intent(transcript)  # "我正在创建测试用例..."
        else:
            intent = self.infer_intent_from_actions(actions)  # 从动作反推
        
        # 4. 生成SOP草稿
        sop = self.generate_sop(intent, actions)
        
        return ParsedWorkflow(
            intent=intent,           # 目标描述
            action_trace=actions,    # 详细动作序列
            key_frames=frames,       # 关键截图
            draft_sop=sop            # 结构化SOP
        )
    
    def generate_sop(self, intent: str, actions: List[dict]) -> SOP:
        """
        使用LLM将动作序列转化为可执行SOP
        参考WONDERBREAD的SOP生成任务 [^117^]
        """
        prompt = f"""
        基于以下录屏解析结果,生成标准SOP:
        
        目标:{intent}
        动作序列:{[a['action'] for a in actions]}
        
        要求:
        1. 每个步骤包含:动作+界面元素+预期结果
        2. 标注决策点(if/then)
        3. 标注异常处理路径
        4. 定义成功标准
        
        格式:
        ## 目标
        {intent}
        
        ## 前置条件
        - [条件1]
        
        ## 步骤
        1. [动作] → [界面元素] → [预期结果]
           - 异常:如果[条件],则[处理]
        
        ## 成功标准
        - [可验证的结果]
        """
        return LLM.generate(prompt)

第三层:SOP精化(人机协同验证)

关键原则:AI生成初稿,人类专家验证并补充隐性知识

class SOPRefiner:
    def refine(self, draft_sop: SOP, expert_review: str) -> RefinedSOP:
        """
        专家反馈循环:
        1. 专家标注:哪些步骤是"经验判断"(难以自动化)
        2. 专家补充:异常情况、业务规则、质量检查点
        3. 专家确认:工具参数、API端点、权限要求
        """
        
        # 区分可自动化 vs 需人工判断
        automation_analysis = self.analyze_automatability(draft_sop)
        
        return RefinedSOP(
            automated_steps=automation_analysis.auto,
            human_decision_points=automation_analysis.human,
            tools_required=self.extract_tools(draft_sop),
            validation_criteria=expert_review.validation_points
        )

SOP质量标准(参考Termo的Skill Extraction规范)

检查项 要求 为什么
WHAT+WHEN+触发词 清晰描述做什么、何时做、触发条件 Agent能自主判断调用时机
>70%专家知识 非基础LLM已知的常识 确保Skill有独特价值
<300行 保持原子性 便于组合和调试
“When to Use” 明确触发场景 避免误调用
代码示例 可执行片段 降低使用门槛
NEVER Do 反模式警示 防止常见错误

第四层:Agent Skill封装(可执行化)

最终输出为 SKILL.md 标准格式,兼容CrewAI、Claude Code等框架。

# Skill: 自动化测试用例生成

## Goal
基于PRD文档生成可执行的Playwright自动化测试脚本,覆盖核心业务流程和边界场景。

## Workflow
1. **需求解析**
   - 输入:PRD文档(Markdown/PDF)
   - 动作:提取功能点、用户故事、验收标准
   - 工具:`PDFExtractor` + `LLMParser`
   - 输出:结构化测试点列表

2. **风险评估** [决策点]
   - IF 涉及支付/安全/合规 → 标记为高优先级,增加异常流覆盖
   - IF 纯UI展示 → 标记为低优先级,仅覆盖主路径
   - 工具:`RiskMatrix`(历史缺陷模式库)

3. **用例设计**
   - 动作:为每个测试点生成BDD场景(Gherkin格式)
   - 模板:Given/When/Then + 数据表
   - 输出:`.feature`文件草稿

4. **代码生成**
   - 动作:将BDD场景转为Playwright代码
   - 约束:使用Page Object模式,添加注释说明业务意图
   - 工具:`PlaywrightCodegen` + `CodeReviewAgent`

5. **验证与优化**
   - 动作:静态检查(语法、最佳实践)
   - 异常:如果检测到硬编码等待 → 改为显式断言
   - 输出:可执行的`.spec.ts`文件

## Success Criteria
- [ ] 代码通过ESLint检查
- [ ] 包含至少3个边界场景(异常输入、空状态、超时)
- [ ] 注释说明每个测试的业务价值
- [ ] 不含有`waitForTimeout`等脆弱等待

## Tools Required
- `PDFExtractor`:解析PRD文档 [^122^]
- `RiskMatrix`:查询历史缺陷模式(RAG)
- `PlaywrightCodegen`:代码生成
- `CodeReviewAgent`:静态检查

## Never Do
- 生成无断言的测试(只操作不验证)
- 使用坐标点击(使用语义选择器)
- 硬编码测试数据(使用数据驱动)

## Examples
### 正常输入
```typescript
// 生成:用户登录成功流程
test('用户可使用有效凭证登录', async ({ page }) =&gt; {
  const loginPage = new LoginPage(page);
  await loginPage.goto();
  await loginPage.login('valid_user', 'valid_pass');
  await expect(page).toHaveURL('/dashboard');
});

二、完整实施流程图

┌─────────────────────────────────────────┐
│  1. 录制阶段(员工执行日常任务)            │
│  - 边做边说,展示决策过程                   │
│  - 包含错误处理(隐性知识)                 │
│  - 多视角录制(3-5人同任务不同做法)         │
└────────────────┬────────────────────────┘
↓
┌─────────────────────────────────────────┐
│  2. AI解析阶段(自动化)                  │
│  - 视频→关键帧+动作轨迹                    │
│  - 语音→意图+步骤说明                      │
│  - 生成SOP草稿(结构化)                   │
└────────────────┬────────────────────────┘
↓
┌─────────────────────────────────────────┐
│  3. 专家验证阶段(人机协同)                │
│  - 补充隐性判断逻辑("这种情况下...")        │
│  - 标注需人工决策的点                      │
│  - 确认工具API和参数                       │
└────────────────┬────────────────────────┘
↓
┌─────────────────────────────────────────┐
│  4. 封装阶段(可执行化)                    │
│  - 生成SKILL.md(标准格式)                │
│  - 开发对应Tools(Playwright/Git/Jira)    │
│  - 集成到Agent框架(CrewAI/Claude Code)   │
└────────────────┬────────────────────────┘
↓
┌─────────────────────────────────────────┐
│  5. 运营阶段(持续进化)                    │
│  - 监控Agent执行,收集失败案例              │
│  - 定期回流:新录屏→更新Skill              │
│  - 冲突检测:避免Skill重复或矛盾            │
└─────────────────────────────────────────┘

关键成功因素

1.不要追求完美录屏:真实工作中的"试错-修正"过程包含最宝贵的异常处理知识。
2.多视角录制:同一任务让不同专家录制,Agent可以学习"最优路径"和"多种可行方案"。
3.保持人工在回路:复杂判断点保留人类确认,而非完全自动化(参考WONDERBREAD的BPM四阶段模型)。
4.工具先行:先封装常用工具(Jira API、Git操作、Playwright),再录制使用这些工具的过程。
5.持续迭代:Skill不是一次生成,而是通过"执行→反馈→再录制"循环进化。
这套方法可以转化为可复用的Agent Skill,让团队其他成员(包括初级工程师和AI Agent)都能以接近专家水平执行同类任务。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐