
# 文件结构
- video_gen.py：使用ffmpeg 将trace中的jpeg 合成视频webm，按30秒分片；
- qwen_vl_process.py： 使用qwen-vl-max-latest，去解读视频中的动作；
- trace_server.py：本地http 服务器，用来给playwright网页应用来加载trace.zip文件
- trace_action_extract_url.py：通过playwright去读取trace.zip文件，保存pw动作列表，以及每个动作前后的url。
- summarize_design.md：使用r1进行综合策略总结的设计文档
- final_summarize.py: 使用r1推理出合理的策略-子策略-动作指令三级结构。
- trace： 存放webarena 项目提供的179个人类操作轨迹zip
- video: 存放每个trace转成视频的文件，目前转的视频只有167和506输出最后一个视频给qwen分析会报错，已经人工确认视频本身存在很大的稀疏性。未来可以进一步优化检测逻辑。现在先人工确认不影响。
- trace_extract：存放从trace文件提取的动作、url信息
- analysis: 存放基于summary中strategy总结的通用策略，以及评测r1和r1-distill去生成策略组合的效果。
   - universal_strategy_v2.md，根据summary总结的一级策略，给gemini-2.5-pro去归纳总结了11条通用策略模板，以及映射
   - task_strategy_path.py： 得到179个任务的策略组合，以及通用策略ID组合，
   - task_output.json：执行stask_strategy_path.jpy 输出
   - evaluation.py：拿task_output.json 去测试r1和r1-distill-7b，对比输出的 US ID path与期望的匹配率
   - evaluation_result.json和evaluation_result_r1_7b.json
   - prompt： evaluation.py使用的prompt，需要把通用策略模板定义描述告诉模型
- toy：存放测试实验脚本
- summary：执行final_summarize.py 输出的179个任务的策略总结，三层结构。


# TODO
- 最终综合：调用r1对视频解读以及动作/url列表信息进行综合分析，通过推理还原出strategy和low level action；
- 

# 存在问题
## 2025-4-16 16:54:38 ： 
发现几个问题，
- 一个提取动作逻辑，部分输出文件中idx序号是乱且不连续，有遗漏；
- trace.zip记录了多个tab的截图，时间戳有交错，不能直接拼接成一个视频，现在拼在一起会串；
- r1总结没有强调要他忽略掉一些与任务无用无关的动作，
- r1 应该还要识别出trace 有没有完成任务，进行判定
- 还需要从trace.zip中提取axtree 作为上下文


基于现有产出数据，是否可以进行训练：
- summary数据，有部分task提取json出错，需要进行一定的清洗；
- summary数据，包含任务、动作描述、动作指令、以及总结的策略；

训练目标：
- 先对所有strategy和substrategy进行语义分析，看是否存在某些通用的策略/子策略，进行抽象和聚类和编码，策略用SID，子策略用sid；
- 抽象策略集合 {S}，子策略集合 {s}
- 重新组织数据：
    - task -> (S, S, S) 
    - task & S -> (s, s, s)
    未来增加上下文后：
    - task & S & s & context -> (a, a, a),  context 包含网页内容，网页url

微调训练目标：
- 使用qwen2.5vl-7b-instruct 微调，
- prompt: 
- query: task
- response: strategy - 


使用gemini去对策略进行归纳
附件是GUI Agent执行网页任务进行任务策略拆解得到的策略，你的任务是去对这些策略进行抽象和归纳，提炼出一组粒度适中的通用策略，要求原有的每一个策略都能够映射到通用策略中的唯一一个策略。要求给出两个表格，一个是 | universal strategy ID | universal strategy |  ，第二个表格， |task id (number) | original strategy | universal strategy | universal strategy ID |