每天早上打开电脑后,我都要在浏览器里把前一天关掉的七八个网页重新打开一遍——项目后台、数据看板、两个内部系统、行业资讯、翻译页、在线文档……以前的做法是收藏夹里建个文件夹,右键"全部打开",但一来顺序固定,二来有时候我只想打开其中几个,三来收藏夹越用越乱,夹着太多历史遗留。
我一直在找一款能"一键批量打开指定网页"的插件,市面上的要么带广告、要么很久没更新、要么把网址数据传到云端,实在不放心。后来看到身边同事用AI编程工具(我当时用的Cursor)几分钟就写了一个小工具,我也动了心思:能不能让AI帮我开发一个浏览器插件,功能就一句话——一键多开网页?
答案是完全可以。整个流程从萌生想法到插件在谷歌浏览器里跑起来,我用了大约一个多小时,其中大部分时间花在描述需求和跑测试上,真正对着代码枯坐的时间很少。这篇文章就完整记录一下这个过程:用AI编程从零写一个"一键多开网页"浏览器插件的思路、提示词、代码结构和踩坑点,给同样有这个需求又不太熟悉前端的朋友一个可复现的参考。
1. 为什么我会想做一个"一键多开网页"的浏览器插件
1.1 每天重复劳动的真实场景
先说说需求从哪来。我做运营相关工作,日常工作流里有几个固定动作:到公司开机,打开Chrome,逐个点开工作台、数据后台、工单系统、文档协作页、素材后台,有时候还要加上客户官网、竞品页面。这些网址我闭着眼都能背出来,但每天依然要重复"点收藏夹、选网址、点开"这一套动作。
攒了几年下来,收藏夹已经变成一个大杂烩,重要的、临时的、早就不看的全混在一起。想在收藏夹里快速找到某个网址,本身就已经够费劲了,更别提"每次固定打开同一批"这件事——收藏夹的文件夹"全部打开"功能确实能做,但只能按文件夹顺序全部打开,没法挑,也没法控制打开时机。
我评估过几种替代方案:用浏览器自带的多账户功能、用"会话管理"类插件保存整组标签页、或者干脆在地址栏里逐个输入。但这些方案各有各的别扭:会话管理插件会把"所有开着的东西"打包,而我需要的是一个固定的、经过挑选的网址清单;逐个输入更是低效到令人绝望。我要的东西其实特别简单——维护一份固定的网址清单,点一下按钮,这批网页在新标签页里全部打开。
1.2 现成插件为什么不合用
其实Chrome网上应用店里这类工具不少,英文搜索"open multiple urls"能翻出来一大堆。我挨个试过几个热门插件,问题集中在三方面:一是免费版有广告或弹窗,体验上很打扰;二是很多插件很久没更新,用的是已经被淘汰的Manifest V2规范,每次打开浏览器都提示"不再支持",迟早出事;三是隐私顾虑,把常用网址清单交给第三方插件,哪怕是本地存储,也总觉得不踏实。
我在测试过程中还发现了一个更深层的问题:很多现成插件功能是固定的,没法改。我想要"批量打开前去重""自动补全https""打开后自动按分组排列"这些细节,几乎没有任何一款插件能满足。与其在别人的半成品上做取舍,不如自己写一个——但问题又来了,我不是专业前端,浏览器插件的开发虽然门槛不高,能看懂和能从头写之间还是有距离的。
1.3 为什么选择用AI编程而不是手写
这里解释一下我选型逻辑。浏览器插件本质上就是一个包裹在特定结构里的网页应用,核心代码量不大,比如"一键多开"这款,去掉界面样式,真正的逻辑代码可能就一百多行JavaScript。这种规模的小工具,非常适合交给AI编程来做,原因有三:
第一,需求边界清晰。"批量打开网址"这个功能可以拆成"维护网址清单"和"打开清单中的网址"两个动作,对AI来说没有理解难度。
第二,迭代成本极低。手写的话,每次加功能都得自己处理HTML、CSS、JS的耦合问题;用AI编程,你只需要在对话里追加一句"加一个去重功能",它会把涉及改动的地方一并改完。
第三,代码量小,审查负担小。一百多行代码,凭经验逐行看一遍用不了太久,哪怕你不是程序员,只要把关键几个API的逻辑搞明白,就能判断它写得对不对。这就避免了"AI写了什么我都看不懂"的最大风险。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开工前先搞懂浏览器插件的运行骨架
2.1 插件的三个核心文件:从manifest说起
在用AI写代码之前,我建议你先花十分钟理解浏览器插件的基本结构,不然AI生成的东西放在你面前,你连从哪看起都不知道。
任何Chrome插件都要有一个manifest.json,它是插件的"身份证+说明书"。这个文件用JSON格式记录了插件名称、版本、权限、入口文件等基本信息。Manifest V3(简称MV3)是目前的主流规范,Manifest V2已经被谷歌宣布淘汰,所以让AI写的时候一定要求它输出MV3版本。
一键多开这类"点工具栏图标弹面板"的插件,还需要一个popup页面。你点击工具栏上的插件图标时,弹出来的那个小窗口就是popup.html。这个窗口宽度几百像素,高度通常也不大,本质是一个缩小版的网页,正常写HTML/CSS/JS就行。
第三个核心角色是background service worker。MV3里它替代了老版本的background page,负责监听浏览器层面的全局事件,比如快捷键、右键菜单、来自popup的消息等。"一键多开"里,如果我想支持"按快捷键直接打开全部网址"这种不打开面板就能触发的功能,就需要它来配合。
2.2 "一键多开"的技术实现路径
从功能逻辑上看,"一键多开"其实只有三个步骤,
