Files
GenericAgent/memory/web_setup_sop.md
Liang Jiaqing 6cec6d8014 feat: autonomous SOP refactor + helper.py with auto date/numbering
- Refactored autonomous_operation_sop.md with clearer path warnings and workflow
- Added helper.py: complete_task() auto-prepends R-number + date to history
- Updated scheduled_task_sop.md and web_setup_sop.md
2026-03-30 14:30:30 +08:00

4.3 KiB
Raw Blame History

Web 工具链初始化执行 SOP

若 web_scan 和 web_execute_js 已测试可用,无需执行此 SOP。 仅供初始安装时code_run 可用但 web 工具尚未配置的场景。

目标

在仅具备系统级权限code_run建立 Web 交互能力web_scan / web_execute_js

前置:检测浏览器

import shutil, subprocess
browser = "chrome" if shutil.which("chrome") else "msedge"  # Edge内置必存在Chrome可选

阶段一:安装 Tampermonkey (手动)

状态: 尚未实现自动化,需用户手动操作。

  1. start 打开扩展商店页面(自动适配浏览器):
    • Chrome: start "" "https://chromewebstore.google.com/detail/篡改猴测试版/gcalenpjmijncebpfijmoaglllgpjagf"
    • Edge: start "" "https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd"
  2. 提示用户点击"安装"并确认。

阶段 1.5:开启「允许运行用户脚本」

前置TM 已安装,但 Chrome 可能默认未开启此权限。 需打开 TM 的扩展详情页,手动开启相关开关。

自动打开详情页

  1. 从文件系统读取 TM 扩展 ID
    import os, json, glob
    ext_dir = os.path.expandvars(r'%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions')
    for eid in os.listdir(ext_dir):
        for ver in glob.glob(os.path.join(ext_dir, eid, '*')):
            mf = os.path.join(ver, 'manifest.json')
            if os.path.isfile(mf):
                with open(mf, encoding='utf-8') as f:
                    m = json.load(f)
                if 'tampermonkey' in m.get('name','').lower() or 'tampermonkey' in m.get('description','').lower():
                    tm_id = eid; break
    
  2. 导航到 chrome://extensions/?id={tm_id}
    • ⚠️ chrome:// 协议无法通过命令行参数或 JS(window.open) 打开
    • 用 ljqCtrl需先打开一个 Chrome 窗口并置顶)或剪贴板+地址栏方案:
      # 剪贴板方案写入URL → Ctrl+L → Ctrl+V → Enter
      import win32clipboard
      win32clipboard.OpenClipboard(); win32clipboard.EmptyClipboard()
      win32clipboard.SetClipboardText(f'chrome://extensions/?id={tm_id}')
      win32clipboard.CloseClipboard()
      # 然后用 ljqCtrl 或 SendKeys 发送 Ctrl+L, Ctrl+V, Enter
      
  3. 提示用户在详情页中开启「允许运行用户脚本」开关。

阶段 1.6:配置 Tampermonkey CSP 设置

目的:移除网站 CSP 头,使 web_execute_js 能在所有页面正常注入执行。 路径TM 管理面板 → 设置 → 配置模式选「高级」→ 修改内容安全策略CSP头信息 → 选「全部移除」→ 点保存按钮

  • ⚠️ 高级设置不会自动保存,必须手动点页面底部的「保存」按钮,否则配置不生效

阶段二:安装 ljq_web_driver.user.js

脚本路径: ../assets/ljq_web_driver.user.js

方案A自动化优先

本地 HTTP 服务器 + TM 中间页,用 start 命令打开:

  1. Python 启动 http.server 托管脚本Content-Type: text/javascript
    • ⚠️ 必须用 Popen(..., stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) 丢弃输出
    • 禁用 stdout=PIPEstderr=PIPE,会导致缓冲区满后服务器阻塞返回空响应
    • Windows 可加 creationflags=subprocess.CREATE_NO_WINDOW 避免弹窗
  2. start "" "https://www.tampermonkey.net/script_installation.php#url=http://127.0.0.1:{port}/ljq_web_driver.user.js"
    • ⚠️ 以上步骤均须用 Popen 非阻塞执行,禁止 subprocess.run(会等待进程结束)
    • 服务器需持续运行直到用户完成安装,用 Popen 启动后立即返回继续执行
  3. TM 秒弹安装确认,用户点"安装"即可

方案B手动 fallback

若方案A失败用剪贴板

  1. 读取脚本内容 → pyperclip.copy()
  2. 通知用户在 TM 中【新建脚本 → 全选 → 粘贴 → 保存】

阶段三:验证

调用 web_scan 或注入 JS 心跳检测,确认脚本已生效。

避坑 (Chromium untrusted 拦截)

  • 直接导航到 localhost/.user.js → Chromium 弹 untrusted 拦截 + "另存为"延迟约1分钟
  • 必须用 start 命令(系统级)打开 TM 中间页 URL → 秒弹安装,无拦截
  • 此问题 Chrome 和 Edge 均存在Chromium 内核通病)