/root/.openclaw/workspace/tasks/task-wf027/task.md/root/.openclaw/workspace/tasks/task-wf027/session.md升级 /root/.openclaw/workspace/scripts/web_fetch.py,加入 --js flag,触发时用 Playwright headless Chromium 渲染页面,处理 JS 动态页面。
现状:web_fetch.py 已支持 requests 直连 + SOCKS5 代理轮换(50003→50002→50001)+ readability 提取。
目标:加 --js flag,触发时按需启动 Playwright headless Chromium,渲染完整 HTML 后用 readability 提取正文,其余行为不变。
coder → reviewer → 爱衣质检
agent:coder:main)任务:升级 web_fetch.py,实现 --js flag 的 Playwright 支持
具体要求:
依赖安装(在执行前先确认是否已安装,未安装则安装):
bash
pip install playwright --break-system-packages
playwright install chromium # 下载专用版本 ~300MB,放 ~/.cache/ms-playwright/
实现 --js flag,修改 web_fetch.py:
--js:跳过 requests,直接用 Playwright 启动 Chromium(--no-sandbox,root 必须),wait_until="networkidle",获取完整渲染 HTML,再用 readability 提取--proxy,通过 browser.new_context(proxy={"server": "socks5://127.0.0.1:50003"}) 传入,按 PROXIES 列表轮换无 --js:现有行为完全不变
关键实现细节:
--no-sandbox 是 root 用户运行 Chromium 的必要参数,通过 launch(args=["--no-sandbox"]) 传入browser.new_context(proxy={...}),不是 Browser 级别代理轮换逻辑同现有 requests 部分,失败换下一个
测试验证(写入 session.md):
--js):确保现有功能不受影响--js 抓一个 JS 渲染页面(如 https://example.com 验证能拿到内容)开始时:
1. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh coder receive "web_fetch Playwright升级" task-wf027
完成后:
1. 将执行日志追加到 session.md
2. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh coder handoff "web_fetch Playwright升级" reviewer task-wf027
3. sessions_send 通知 reviewer(agent:reviewer:main):
task_id=task-wf027
task=/root/.openclaw/workspace/tasks/task-wf027/task.md
agent:reviewer:main)任务:审计 web_fetch.py 的 Playwright 实现质量
审计要点:
1. --js 和 --proxy 组合是否都正确处理(4种组合:无/无、有/无、无/有、有/有)
2. --no-sandbox 是否传给 Playwright
3. 代理是否用 Context 级别传入(不是 Browser 级别)
4. 现有 requests 逻辑是否完好(无 --js 时行为不变)
5. 异常处理:Playwright 失败时是否有合理的错误输出
6. 依赖安装方式是否合理(--break-system-packages 或虚拟环境)
完成后:
1. 将审计报告追加到 session.md
2. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer handoff "web_fetch Playwright升级" main task-wf027
3. sessions_send 通知爱衣(agent:main:main):
task_id=task-wf027
task=/root/.openclaw/workspace/tasks/task-wf027/task.md
du -sb /root/.openclaw/workspace/tasks/task-wf027/
wc -l /root/.openclaw/workspace/tasks/task-wf027/session.md
若行数 N > 0,read session.md 全文。
通用检查(每次必须):
- 产出是否符合原始需求?
- 执行过程是否有明显问题?
- Agent 间是否有未解决的分歧?
任务特定检查:
- --js flag 是否实现,静态页面现有功能是否完好
- Playwright 安装是否成功,测试是否通过
- 审计发现的问题是否已修复
通过 →
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh main done "web_fetch Playwright升级" task-wf027message 工具发送给主人(telegram, 92763607),归纳任务结果不通过(rejectCount == 0) →
1. 分析问题根因,设计新执行链
2. 创建新的 task.md(task_id 加后缀 -retry1),session.md 独立
3. 在原 session.md 末尾追加一行 rejectCount=1
4. sessions_send 给新执行链起始 Agent
5. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh main retry "web_fetch Playwright升级" "<新执行链>" <起始role> 1 task-wf027
rejectCount >= 1(第二次仍失败) →
1. 发工作日志:
bash
/root/.openclaw/workspace/scripts/log-to-channel.sh main fail "web_fetch Playwright升级" task-wf027
2. message 主人,归纳问题和两次失败原因,请主人裁决
bash
wc -l /root/.openclaw/workspace/tasks/task-wf027/session.md # 获取总行数 N
# 然后 read offset=max(1, N-200) limit=200