关于 screen-control-operator-v3
screen-control-operator-v3 是用于浏览器操作与自动化测试的 Agent 技能,面向需要记录和重放网页流程的用户。它通过 CDP 与无障碍树检查页面,并提供面向止赎流程的预置技能。
主要功能
- 01记录并保存浏览器工作流
- 02重放带变量的技能
- 03并行运行隔离的浏览器任务
- 04通过无障碍树检查页面结构
- 05按多种策略恢复元素定位
- 06提供止赎业务预置技能
适用场景
- 01记录并重放网页操作流程
- 02并行查询止赎相关网站
- 03检查 DOM 结构并调试选择器
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ breverdbidder/ life-os --skill screen-control-operator-v3安装后在 Claude Code 中输入/screen-control-operator-v3确认已加载。
详细介绍
屏幕控制操作器 V3
比 Claude Cowork 的公告早 3 周打造。如今功能相当,并具备我们的优势。
相比 Claude Cowork 的核心优势
| 功能 | Claude Cowork | 屏幕控制操作器 V3 |
|---|---|---|
| 视觉方式 | 截图 | CDP + 无障碍树 |
| 速度 | 1-5 秒 | 50-200ms(快 10 倍) |
| 成本 | 视觉 Token($$$) | 仅文本 Token($) |
| 可靠性 | ~85% OCR | 100% 语义查询 |
| 技能录制 | ✅ 是 | ✅ 是 |
| 并行执行 | ✅ 是 | ✅ 是 |
| 领域技能 | 通用 | 专为止赎打造 |
| 智能路由器 | 不适用 | 90% 免费层 |
何时使用此技能
触发短语:
- “控制我的屏幕”
- “录制一个工作流”
- “重放此技能”
- “验证 Lovable 预览”
- “测试爬虫”
- “调试 DOM 选择器”
- “检查页面结构”
- “运行 BECA 查询”
- “搜索 BCPAO”
- “自主浏览器测试”
快速开始
from screen_control_operator_v3 import ScreenControlOperatorV3
operator = ScreenControlOperatorV3(headless=False)
operator.launch()
# Option 1: Record new skill
skill = operator.record_skill("My Workflow", domain="foreclosure")
operator.save_skill(skill, "my_workflow.json")
# Option 2: Play recorded skill
result = operator.play_skill_file("my_workflow.json",
variables={"case_number": "2025-CA-001234"})
# Option 3: Use pre-built foreclosure skills
result = operator.lookup_beca_case("2025-CA-001234")
result = operator.lookup_bcpao_property("12-34-56-78-90")
result = operator.search_acclaimweb_liens("SMITH JOHN")
# Option 4: Parallel execution
results = operator.execute_parallel([
{"skill": skill1, "variables": {"case": "001"}},
{"skill": skill2, "variables": {"case": "002"}},
{"skill": skill3, "variables": {"case": "003"}},
])
operator.close()
CLI 命令
# Record new skill
python screen_control_operator_v3.py record \
--name "BECA Deep Search" \
--domain foreclosure \
--output skills/beca_deep.json \
--start-url "https://vmatrix1.brevardclerk.us/beca/"
# Play skill with variables
python screen_control_operator_v3.py play \
--skill skills/beca_deep.json \
--vars '{"case_number": "2025-CA-001234"}'
# Pre-built skills
python screen_control_operator_v3.py beca --case "2025-CA-001234"
python screen_control_operator_v3.py bcpao --parcel "12-34-56-78-90"
# Inspect page DOM (NOT screenshot)
python screen_control_operator_v3.py inspect \
--url "https://example.com" \
--output structure.json
预置止赎技能
| 技能 ID | 名称 | 变量 | 描述 |
|---|---|---|---|
beca_lookup_001 | BECA 案件查询 | case_number | 搜索 BECA,提取判决 |
bcpao_lookup_001 | BCPAO 房产 | parcel_id | 获取房产详情和照片 |
acclaimweb_lien_001 | 留置权搜索 | party_name | 搜索已登记的留置权 |
realforeclose_list_001 | 拍卖列表 | auction_date | 获取拍卖日历 |
技能录制(Cowork 功能)
录制工作原理
- 启动浏览器并导航至起始页面
- 调用
record_skill(name, domain) - 手动执行工作流
- 按 Enter 或 Ctrl+C 停止
- 技能会记录以下内容:
- 所有导航事件
- 所有点击事件(含选择器)
- 所有输入事件(含值)
- 成功标准(推断得出)
录制内容
{
"skill_id": "abc123def456",
"name": "BECA Deep Search",
"domain": "foreclosure",
"actions": [
{
"action_type": "navigate",
"url": "https://vmatrix1.brevardclerk.us/beca/"
},
{
"action_type": "type",
"selector": "#caseNumber",
"value": "{{case_number}}",
"element_info": {"label": "Case Number", "role": "textbox"}
},
{
"action_type": "click",
"selector": "button[type='submit']",
"element_info": {"label": "Search", "role": "button"}
}
],
"variables": {"case_number": ""},
"success_criteria": [
{"type": "element_visible", "selector": ".case-details"}
]
}
并行执行(Cowork 功能)
在隔离的浏览器上下文中同时执行多个技能:
executor = ParallelExecutor(max_parallel=5)
executor.launch()
tasks = [
{"skill": beca_skill, "variables": {"case": "2025-CA-001"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-002"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-003"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-004"}},
{"skill": beca_skill, "variables": {"case": "2025-CA-005"}},
]
results = executor.execute_parallel(tasks)
# All 5 run simultaneously in separate contexts
DOM 检查(我们的优势)
通过无障碍树获取页面结构(而非截图):
structure = operator.get_page_structure()
# Returns:
{
"url": "https://example.com",
"title": "Page Title",
"elements": [
{"tag": "BUTTON", "role": "button", "label": "Submit", "testid": "submit-btn"},
{"tag": "INPUT", "role": "textbox", "label": "Search", "id": "search-input"},
...
]
}
通过自然语言查找元素:
selector = operator.find_element_semantic("search button")
# Returns: "[data-testid='search-btn']" or "#search-button" or similar
智能路由器集成
| 操作 | 模型层级 | 成本 |
|---|---|---|
| 页面导航 | 免费(Gemini) | $0 |
| 元素查找 | 免费(Gemini) | $0 |
| 技能录制 | 免费(Gemini) | $0 |
| 技能回放 | 免费(Gemini) | $0 |
| 错误恢复 | 均衡(Sonnet) | $ |
结果: 95% 以上的操作处于免费层
GitHub Actions 集成
# .github/workflows/browser_agent.yml
name: Browser Agent Daily
on:
schedule:
- cron: '0 4 * * *' # 11 PM EST
jobs:
scrape:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install playwright
playwright install chromium
- name: Run Browser Agent
run: |
python src/agents/screen_control_operator_v3.py beca \
--case "${{ github.event.inputs.case_number }}"
错误恢复
找不到元素时,V3 会尝试多种策略:
- data-testid(最可靠)
- aria-label(语义化)
- role + text(无障碍)
- ID(传统方式)
- 原始选择器(回退方案)
- 文本内容(最后手段)
因此,我们的可靠性达到 100%,而 Cowork 约为 85%。
依赖项
pip install playwright --break-system-packages
playwright install chromium
文件位置
- 脚本:
src/agents/screen_control_operator_v3.py - 技能:
skills/*.json - 技能库:
.claude/skills/screen-control-operator-v3/SKILL.md
由 Claude AI Architect + Ariel Shapira 打造
2025 年 12 月 25 日(原版)→ 2026 年 1 月 15 日(V3)
我们是 Claude 创新者团队!
评论
支持 Markdown