从零开发一个大模型浏览器插件:准备、步骤与排错

开发一个大模型浏览器插件,核心是把浏览器扩展的页面交互能力和大模型 API 的文本生成能力接起来。
本文以 Chrome 扩展的 Manifest V3 为例,环境为 Windows 或 macOS 均可,需要你已安装 Chrome 浏览器和 Node.js(建议 18 以上),并有一个可用的大模型 API Key。
下面按准备、编码、调试、避坑的顺序展开。

先确认你要做的插件形态

大模型浏览器插件常见有三种形态:侧边栏对话、选中文本后右键解释、页面内容总结。
新手建议从「选中文本后发送到大模型并弹窗显示结果」做起,因为它不依赖复杂 UI,能快速验证 API 调用链路是否通。

开始前准备好三样东西:

  • 一个空文件夹作为项目目录,例如 llm-extension
  • 一个可用的大模型 API 地址和 Key(以服务商文档为准)
  • Chrome 浏览器,用于加载未打包扩展

搭建最小可运行项目

在项目目录下新建三个文件:manifest.json、background.js、content.js。
Manifest V3 中,网络请求建议放在 background service worker 里,避免页面上下文限制。

manifest.json 最小配置如下:

{
  "manifest_version": 3,
  "name": "LLM 划词助手",
  "version": "1.0",
  "permissions": ["contextMenus", "scripting", "activeTab"],
  "host_permissions": ["https://api.example.com/*"],
  "background": { "service_worker": "background.js" },
  "content_scripts": [
    { "matches": [""], "js": ["content.js"] }
  ]
}

注意把 host_permissions 换成你实际调用的大模型 API 域名,否则请求会被浏览器拦截。

background.js 负责创建右键菜单并调用 API:

chrome.runtime.onInstalled.addListener(() => {
  chrome.contextMenus.create({
    id: "explain",
    title: "用大模型解释选中内容",
    contexts: ["selection"]
  });
});

chrome.contextMenus.onClicked.addListener(async (info, tab) => {
  if (info.menuItemId !== "explain" || !info.selectionText) return;
  const res = await fetch("https://api.example.com/v1/chat/completions", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer 你的API_KEY"
    },
    body: JSON.stringify({
      model: "你的模型名",
      messages: [{ role: "user", content: "请解释:" + info.selectionText }]
    })
  });
  const data = await res.json();
  const reply = data.choices?.[0]?.message?.content || "请求失败";
  chrome.scripting.executeScript({
    target: { tabId: tab.id },
    func: (text) => alert(text),
    args: [reply]
  });
});

content.js 可以先留空,仅用于满足 manifest 中的声明;
后续要做页面内浮层时再扩展。

加载调试与效果验证

打开 Chrome,地址栏输入 chrome://extensions/,开启右上角「开发者模式」,点击「加载已解压的扩展程序」,选择 llm-extension 文件夹。
加载成功后,在任意网页选中一段文字,右键应出现「用大模型解释选中内容」。
点击后如果弹出回复内容,说明链路已通。

如果没有任何反应,按 F12 打开开发者工具,在「扩展程序」页找到你的插件,点击「Service Worker」链接查看后台报错。
常见检查项:

  • 右键菜单没出现:确认 contextMenus 权限已声明,并重新加载扩展
  • 请求 401 或 403:检查 API Key 是否有效、请求头格式是否正确
  • 请求被拦截:核对 host_permissions 是否包含实际 API 域名
  • 弹窗无内容:在 background 控制台打印 data,确认返回结构是否符合预期

新手最容易踩的几个坑

第一,把 API Key 直接写在前端代码里。
浏览器扩展的代码对用户可见,正式发布前应通过自己的后端中转请求,避免 Key 泄露。
第二,Manifest V3 的 service worker 会休眠,不要在全局变量里存关键状态,需要时从 chrome.storage 读取。
第三,host_permissions 漏写会导致 fetch 静默失败,务必对照 API 文档补全。
第四,跨域和内容安全策略问题优先看 background 控制台,而不是页面控制台。

常见疑问

插件必须用 Node.js 吗? 不一定。
纯手写 HTML、JS、JSON 也能开发扩展,Node.js 主要用于打包、构建和本地 mock 服务。

大模型 API 调用放在 content script 里可以吗? 技术上部分场景可行,但受页面 CSP 和跨域限制影响大,建议统一放 background 中处理。

如何验证插件是否真的调用了大模型? 在 background 的 fetch 前后加 console.log,并在服务商控制台查看请求记录,两处能对上即可确认。

到这里,一个可运行的大模型浏览器插件原型就完成了。
后续再按需增加侧边栏 UI、流式输出和历史记录,建议每加一个功能就重新加载扩展并复查 background 控制台,排错成本最低。

分享到:
上一篇
大模型抖音小程序对接:从零配置到消息回传验证
下一篇
大模型VS Code插件开发:零基础跑通第一个自定义命令
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意