做了一个 chrome 插件,让 agent 自动化你的浏览器

cobiao 2026-07-29 16:40 1

独立开发者,做了个 Chrome 扩展 WebCLI ,刚上架商店,来求点真实反馈。


我平时工作学习基本就在 terminal 和浏览器之间,一直想把浏览器这边的重复操作也自动化掉。类似的插件试了一圈,要么太重,要么功能太受限,干脆自己写一个,顺便当作学习。


它做的事很简单: 把你登录的 Chrome 变成外部 AI agent 的手。本身没有 agent 、没有界面,只有一个显示连接状态的 popup; 外部 agent 你自己搭(Claude Code 、Codex ,或者任何能发 HTTP 请求的东西),WebCLI 只负责执行。


一共 25 个工具,开关标签页、读页面、点击输入、搜索抓链、截图这些,解包不到 300 KB ,基本覆盖手动能在浏览器里做的事。


怎么用,很简单:



  1. webstore 安装 WebCLI

  2. 让你的 agent 安装 skill(npx skills add whitefoxx/webcli-skills -g),然后 agent 就知道怎么使用了


权限有点多(debugger<all_urls> 这类),慎重,因为它做的就是代替你操作整个浏览器。过几天我整理下代码,然后开源出来,目前只开源了 skills


商店: https://chromewebstore.google.com/detail/webcli/jnhfdhpafndcbppkphhfpecflhogngge


daemon + skill(已开源): https://github.com/whitefoxx/webcli-skills

最新回复 (13)
  • adm4n 07-29 16:45
    1
    codex 不是可以直接操作网页吗
  • bkingfilm 07-29 16:50
    2
    点击和普通 input 都好说,富文本编辑框才是坑。X 的撰写框我试过,直接 type 和 execCommand 都会被它自己的编辑器状态吞掉,最后只有逐段 insertText 加两次 insertParagraph 才稳。通用工具盖不住这类站,估计得一个一个单独适配。
  • nanyong0627 07-29 16:52
    3
    claude code 有官方的浏览器插件
    codex 能直接操作浏览器
    有点没看明白这个能在这俩之外额外干点啥
  • cobiao 楼主 07-29 16:57
    4
    @adm4n 对,Codex 官方那个扩展做的是同一件事,重度用 Codex 的话它更顺手。我这个的区别是不绑定 agent ,25 个操作走本地 daemon 暴露,Claude Code 、自己写的脚本、cron 都能调。最初做它其实就是想自己学一遍,过几天打算开源出来。
  • cobiao 楼主 07-29 17:06
    5
    @nanyong0627 claude for chrome 是挺好用的,我自己也在用. 我自己做一个一方面是为了学习,一方面也是想做一个所有 agent 都能使用的,还有一个原因是目前这种通用工具真正去执行的时候既费时又耗 tokens,我想在目前 generic 工具的基础上再套一层适配各个站点的能力,比如让 agent 使用 generic 能力为 V2EX 生成一个适配脚本,以后直接调用执行,不需要额外 tokens. @bkingfilm 刚刚也提到了这一点
  • cobiao 楼主 07-29 17:09
    6
    @bkingfilm 富文本确实是最难的一块。我的做法是不去跟编辑器抢 DOM,而是用它自己的输入协议跟它说话。

    先把 selection 放到目标位置(替换就 selectNodeContents 全选,追加就 collapse 到末尾),然后派一个合成的 beforeinput,带 inputType: 'insertText' 和 data 。Lexical / Slate / ProseMirror / Draft 这些受控编辑器都靠这个事件更新自己的 model 。关键是看它有没有 preventDefault():取消了就说明编辑器打算自己把内容写进去,那我什么都不做,不去 clobber 它;没取消才自己写 innerText 再补一个 input 。你说的 execCommand 那条路留着当兜底,合成事件被 isTrusted 挡掉的站确实还有。

    普通 input 也有个类似的坑:直接 el.value = 会被 React 的脏值检测吃掉,得 HTMLInputElement.prototype 上取原生 setter 来调,再补 input + change 。

    我目前只验证到单段文本,你说的多段 + 两次 insertParagraph 那种没专门处理。所以 type_into 会把写完之后的实际内容 final_value 返回给 agent,让它自己看得见有没有写进去,而不是默默失败。要是你手上有能打穿它的站,欢迎丢给我。
  • fivge 07-29 17:22
    7
    官方就有啊

    https://github.com/ChromeDevTools/chrome-devtools-mcp
  • cobiao 楼主 07-29 17:29
    8
    @fivge 谢谢分享
  • supermama 07-29 17:46
    9
    最近阿里好像也出了一个,可以让 ai 控制浏览器,但是我还没有去试,不知道是否限定只能用阿里的模型。 不过最近我都是直接让 codex 去接管浏览器。
  • cobiao 楼主 07-29 20:14
    10
    @bkingfilm 忘了说了,如果你只是针对 x 发内容的话,有个更简单的方法,直接打开:https://x.com/intent/tweet?text=xxx
  • cobiao 楼主 07-29 20:17
    11
    @supermama https://alibaba.github.io/page-agent/ 应该是这个,官方说支持其他模型,应该也是蛮好用的
  • Nois9527 07-30 09:31
    12
    https://browsermcp.io/
    我看有一个这个
  • ydong 07-30 10:01
    13
    现在 agent 操作浏览器的工具太多了,没啥亮点很难吸引人,你可以看看 ego-lite 这个浏览器,目前应该是做的最好的了
* 帖子来源V2EX
返回