浏览器

千问浏览器原生 CDP 驱动

试用

用原生 Chrome DevTools Protocol 驱动千问浏览器(qianwen.exe),复用真实登录态做办公自动化。当用户要让"千问浏览器"自动打开网页、填表、点击、抓取内容、截图,或提到 xbrowser/agent-browser 驱动千问失败时,使用本技能。

它能做什么

用原生 Chrome DevTools Protocol 驱动千问浏览器(qianwen.exe),复用真实登录态做办公自动化。当用户要让"千问浏览器"自动打开网页、填表、点击、抓取内容、截图,或提到 xbrowser/agent-browser 驱动千问失败时,使用本技能。

技能文档

千问浏览器原生 CDP 驱动

为什么不用 xbrowser / agent-browser

xbrowser(底层 agent-browser)驱动不了千问。实测 agent-browser --cdp 连千问(真实或干净 profile 都试过)后,驱动已存在的页面 target 会静默/挂死(空 profile 跑 2m35s 零输出,最终报 Auto-launch failed ...:9407)。xb 的 run.cjs 对本地浏览器一律传 --cdp,所以 xb run --browser qianwen 彻底走不通,不要浪费时间在这条路上。

根因 & 解法(已验证)

  • 千问对「外部 CDP 连接」操作已存在的页面 target(通义千问桌面页、AI插件页等)一律静默。
  • 但用 browser 级 WebSocket → Target.createTarget 自己新建的页面 target 完全可控(Runtime / DOM / Input 全可用)。
  • 因此驱动千问必须「原生 CDP + 自建新 target」,绝不用 --cdp 连旧实例。

工具

qw.cjs(本 skill 目录内)。依赖 ws 模块(环境变量 QW_WS_PATH 指定,或自动探测 ~/.workbuddy/skills/xbrowser/... / ~/.openclaw/tools/xbrowser/... 常见位置)。

调用示例(用 managed node):

NODE="C:/Users/<用户名>/.workbuddy/binaries/node/versions/22.22.2/node.exe"
$NODE qw.cjs check                                   # 先诊断:9666 是否就绪 / 千问是否在跑
$NODE qw.cjs ensure                                  # 9666 在就直接连(不起实例);不在则提示用 launch 或自行从 lnk 打开
$NODE qw.cjs launch                                  # 仅当确认要起实例时:先优雅关在跑的千问,再起带 9666 的
$NODE qw.cjs open "https://www.baidu.com"            # 新建 tab 并导航,输出 targetId
$NODE qw.cjs navigate  "https://..."             # 已有 tab 导航
$NODE qw.cjs eval  "document.title"              # 执行 JS
$NODE qw.cjs snapshot  [css选择器]               # 取标题/文本/链接/输入框
$NODE qw.cjs click  "#su"                         # 点击元素(按坐标派发鼠标事件)
$NODE qw.cjs type  "#kw" "机器人 ROS2"            # 向输入框填入文本
$NODE qw.cjs screenshot  [out.png]               # 截图
$NODE qw.cjs list                                    # 列出所有 target
$NODE qw.cjs close                               # 关闭 tab
$NODE qw.cjs relaunch                                # 实例挂掉时:taskkill + 重拉 9666

每个命令都是独立进程,连接到常驻的千问 CDP 实例(默认 9666)操作,所以可多次调用串起多步自动化。

关键常量

  • 千问 exe:C:\Users\<用户名>\AppData\Local\Programs\QianwenApp\qianwen.exe(Chromium 130;环境变量 QW_EXE 可覆盖)
  • 真实 profile:C:\Users\<用户名>\AppData\Local\Qianwen\User Data登录态/标签页在这里,驱动走的也是这个实例;环境变量 QW_PROFILE 可覆盖)
  • CDP 固定端口:9666cdp_default_port 是 9407,是 agent-browser 默认回退端口,报错里见到的就是它)

已验证的端到端能力

open 百度 → type 搜索框 → click 搜索 → 搜索结果正文读出 ✅。即「开页 + 输入 + 点击 + 读内容」真实交互全通。

读钉钉文档「多维表」(已验证 2026-08-04)

钉钉多维表(alidocs.dingtalk.com/i/nodes/?...sheetId=...)在千问里由同域 iframe #wiki-notable-iframe 承载,contentDocument 可直接读(非跨域)。数据不是 canvas,是真实 DOM:[role=grid] 网格 + 虚拟化行/列(只渲染可见窗口)。

读取步骤:

  1. qw.cjs list 找标题含「多维表」的 page target(取 id)。
  2. qw.cjs eval "document.getElementById('wiki-notable-iframe').contentDocument.querySelector('[role=grid]').innerText" → 直接拿整表文本(表头+可见行)。
  3. 取行数/列数:contentDocumentquerySelectorAll('[role=row]') / [role=cell]
  4. 全表需翻页/滚动累加:虚拟化只渲染窗口(实测约 42 行/次),要对 iframe 内网格容器逐屏 scroll 并拼接,才能拿全量行。
  • 注意:钉钉文档外层 page 的 innerText 只含左侧知识库文件树,「研发项目管理多维表」本身是 iframe 里的 grid,必须进 iframe 读。
  • 该表即记忆里的「ROS软件项目管理表」:nodeId=amweZ92PV6mrnN5mIeGyNM3GWxEKBD6p、sheet=O4kXTnQ,字段≈项目名称/负责人/优先级/项目进度细节登记/进度示意/小批量跟进。

读微信读书正文(实测 2026-08-04)

微信读书网页版(weread.qq.com)分两层:

  1. 目录 / 章节标题 / 元数据:纯 DOM 文本,可读。全书 TOC 可直接从 .wr_page_reader(style/script 剔除后)textContent 抽出。
  2. 正文 prose:页面栅格化为 canvas(.readerChapterContent 里有 renderTargetContainer + ``),直接 DOM textContent 只能拿到「JS复制代码」等 UI 文本,正文不暴露为文本。想读正文必须 qw.cjs screenshot 截取页面 → OCR。
    • innerText 返回 0/空:微信读书把每一页做成绝对定位的「页」块,Chromium 的 innerText 算不出可见文本。
    • 读整本书:截图每一页 + OCR,或利用 weread 的「文本选择/复制」层(如果存在)逐段模拟选中,成本更高。
    • 环境:工作目录有 chi_sim.traineddata(中文 OCR 数据),但本机缺 tesseract 主程序,装完后即可 OCR。

坑(必记)

  1. 🚨 重要更正(2026-07-30)49666 端口不是千问!它是 svchost.exe(Windows 系统服务,PID 2400) 监听的,与千问无关(曾误判为"千问内部端口/日常实例",已纠正)。千问自身 CDP 端口固定 9666

    • lnk 注入早已生效:4 个千问快捷方式(开始菜单 / 桌面 / 任务栏 / Quick Launch)的 ARGS 均含 --remote-debugging-port=9666UTF16 编码,ASCII grep "9666" 搜不到,必须用 LNK 二进制解析确认,曾因此误判"未注入")。日常千问从 lnk 双击即带 9666。
    • 🚨 核心纪律(老板明确要求):老板的快捷方式/自启动/菜单入口已全注入 9666,日常千问本就该自带 CDP 端口。脚本启动前必须先 check 现状:
      1. 9666 已在监听 → 直接连,绝对不另起实例(最常见情况,连老板日常千问即可)。
      2. 9666 没在、但千问在跑(无端口)→ 不要 spawn 第二个实例(单例冲突、占窗口、刷回收站)。提示老板关掉后从带 9666 的 lnk 重开,或显式调 launch(launch 会先优雅关在跑的千问再起)。
      3. 9666 没在、千问也没跑 → 让老板从 lnk/菜单/自启动打开(自带 9666),或显式 launch
      • ensure 已改为「只连不起」:9666 在即 alreadyUp 直连;不在则返回 needLaunch 提示,不再 spawn 裸实例。launch 才是真正起实例的命令,且会先关在跑的千问避免单例冲突。
      • ⚠️ PowerShell Start-Process 在 WorkBuddy 沙箱里拉不起 GUI 进程,不要自己 Start-Process。
    • 回收站刷文件(千问自身行为,2026-07-30 确认):只要千问在跑,就持续把临时缓存/上报文件(1'jssdkidx'/'pctrace'/'api'/'jserr'、Browser_.ulog、network.mojom、DXCACHE-)以「可恢复删除」移入回收站 → 回收站一直涨。这是千问客户端自身行为,并非强杀导致(强杀只是加剧脏残留)。关掉千问即停止增长。治标=定时清回收站;根治=反馈千问团队/关闭诊断上报。
    • 🚨 不要起后台千问实例占单例锁qw.cjs ensure 起的 9666 实例若一直不关,会占着 SingletonLock + 显示,导致用户从桌面双击图标走单例激活这个无正常窗口的后台实例 → 表现为「打不开/看不到登录态」。需驱动千问时优先连已有实例;临时起用完即关(Browser.close / Stop-Process 不带 -Force),绝不留后台孤儿实例。
    • patch_lnk.py 已落库,用于检视/补注入 lnk 端口(正确解析 LNK 二进制,绕开被拦的 WScript.Shell COM)。
  2. 必须建新 target:永远用 open/Target.createTarget 开新 tab,别去驱动千问自带的桌面页(静默)。

  3. 实例挂掉恢复:千问主进程可被 Stop-Process -Force 杀掉,但 WpkService 孤儿进程(--type=utility,引用真实 profile)从 WorkBuddy 沙箱杀不掉(taskkill 返回 exit 1)。它们不占主 SingletonLock,新主实例仍能起,只是堆积会拖慢冷启动。恢复用 qw.cjs relaunch

  4. 路径正斜杠:千问对 --user-data-dir 反斜杠路径会秒退,必须正斜杠(脚本内已处理)。

  5. 强制窗口模式:千问无头不稳定,必须 headed(脚本内已默认)。

  6. 登录态由真实 profile 保留 → 自动化时就是老板本人已登录的千问,对外操作(发消息/发帖)仍遵循"先问再动"。

  7. 诊断登录态看 Default/Network/Cookies:新版 Chromium(M120+) 把 Cookies 从 Default/Cookies 移到 Default/Network/Cookies。查 Default/Cookies 不存在是正常现象,会误判「登录态丢失」;真正判断登录态完好与否要读 Network/Cookies(大小正常即未丢)。

  8. 对外「清理/关闭/删文件」操作极度谨慎:曾因反复强杀/清回收站/删 User Data 文件把老板日常千问搞到「打不开」。动手前先确认影响范围,拿证据说话,不嘴硬。

何时用

用户要在千问里做自动操作(查资料、填表、抓页面、定时任务等),且要求保留登录态。直接调 qw.cjs,不要走 xbrowser。

相关技能

连接用户日常 Chrome 浏览器(带登录态)用于反爬严格的网站采集。 当 headless 浏览器被网站 forbidden/反爬拦截(如贝壳 hip.ke.com/forbidden、 自如 EdgeOne、小红书等),用此 skill 切换到用户日常 Chrome——它携带 真实登录态和人类行为特征,不会被...

2 次安装

国内站点(小红书/淘宝/天猫/微信/微博/B站/12306/知乎/各类 SaaS 后台)的登录态浏览器自动化。当用户需要抓取或操作需要登录的国内网站、复用本机已登录 Chrome 的会话、带 cookie 导出数据,或提到"登录态""已登录浏览器""带账号抓取""复用我的 Chrome""不想重新登录"时使用。This skill should be used when the user wants to scrape or operate Chinese domestic websites that require authentication, reuse the locally logg

在脚本里驱动真实 Chrome 完成网页交互:导航、填表、点击、截图、抽取数据。

50 次安装4 星标

当用户希望实际使用 Gemini 网页版完成一次对话时使用本 Skill,包括发送 Prompt、继续已有对话、上传图片或文件、获取 Gemini 回复以及恢复 Gemini 登录状态。典型请求包括:"帮我问 Gemini"、"用 Gemini 回答"、"把这段话发给 Gemini"、"让 Gemini 看这张图...

通过自然语言驱动浏览器交互的CLI工具,支持本地Chrome,适合个人开发者快速自动化。Use when 需要提升效率、自动化流程、批量处理、工作流优化时使用。不适用于需要人工创意判断的任务。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。

云思客(AIcloud-thought-proxy)——通过操控浏览器访问网页版 AI(DeepSeek、Kimi、豆包、通义千问、ChatGPT、Claude、Gemini、Grok 等)与本地 Agent 协同工作以节省 tokens。触发场景:用户要求"用浏览器打开某 AI 官网对话并协作"、"让网页版 AI 规划步骤/编写代码/逻辑推理、本地 Agent 执行"、"节省 tokens"、提到"云思客"等。自动检测浏览器内核(Chromium → chrome-mcp/BrowserSkill;Gecko → GeckoDriver + Marionette),引导用户选择模型/思考模式/联网搜索(含"最新/最强模型"等模糊语言解析),提示用户手动登录与人机验证,建立"网页 AI 出方案、本地 Agent 执行"的协作循环。