爱意满满的作品展示区。
cobiao

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

  •  
  •   cobiao · 14h 6m ago · 435 views

    独立开发者,做了个 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

    11 replies    2026-07-29 20:17:36 +08:00
    adm4n
        1
    adm4n  
       14h 1m ago
    codex 不是可以直接操作网页吗
    bkingfilm
        2
    bkingfilm  
       13h 56m ago
    点击和普通 input 都好说,富文本编辑框才是坑。X 的撰写框我试过,直接 type 和 execCommand 都会被它自己的编辑器状态吞掉,最后只有逐段 insertText 加两次 insertParagraph 才稳。通用工具盖不住这类站,估计得一个一个单独适配。
    nanyong0627
        3
    nanyong0627  
       13h 55m ago
    claude code 有官方的浏览器插件
    codex 能直接操作浏览器
    有点没看明白这个能在这俩之外额外干点啥
    cobiao
        4
    cobiao  
    OP
       13h 49m ago
    @adm4n 对,Codex 官方那个扩展做的是同一件事,重度用 Codex 的话它更顺手。我这个的区别是不绑定 agent ,25 个操作走本地 daemon 暴露,Claude Code 、自己写的脚本、cron 都能调。最初做它其实就是想自己学一遍,过几天打算开源出来。
    cobiao
        5
    cobiao  
    OP
       13h 40m ago
    @nanyong0627 claude for chrome 是挺好用的,我自己也在用. 我自己做一个一方面是为了学习,一方面也是想做一个所有 agent 都能使用的,还有一个原因是目前这种通用工具真正去执行的时候既费时又耗 tokens,我想在目前 generic 工具的基础上再套一层适配各个站点的能力,比如让 agent 使用 generic 能力为 V2EX 生成一个适配脚本,以后直接调用执行,不需要额外 tokens. @bkingfilm 刚刚也提到了这一点
    cobiao
        6
    cobiao  
    OP
       13h 37m ago
    @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
        7
    fivge  
       13h 24m ago
    cobiao
        8
    cobiao  
    OP
       13h 17m ago
    @fivge 谢谢分享
    supermama
        9
    supermama  
       13h 0m ago
    最近阿里好像也出了一个,可以让 ai 控制浏览器,但是我还没有去试,不知道是否限定只能用阿里的模型。 不过最近我都是直接让 codex 去接管浏览器。
    cobiao
        10
    cobiao  
    OP
       10h 32m ago
    @bkingfilm 忘了说了,如果你只是针对 x 发内容的话,有个更简单的方法,直接打开:https://x.com/intent/tweet?text=xxx
    cobiao
        11
    cobiao  
    OP
       10h 29m ago
    @supermama https://alibaba.github.io/page-agent/ 应该是这个,官方说支持其他模型,应该也是蛮好用的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1044 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:47 · PVG 06:47 · LAX 15:47 · JFK 18:47
    ♥ Do have faith in what you're doing.