
浏览器即客户端通过谷歌浏览器插件快速调用云端MiniCPM-o-4.5模型你是不是也经常遇到这样的场景浏览一篇长文想快速抓住核心观点看到一段外文希望立刻得到翻译或者写邮件、发帖时总觉得措辞可以更精炼一些。传统的做法是复制文本切换到另一个AI工具或网页粘贴、等待、再复制结果流程繁琐打断了原有的工作流。今天我们来点不一样的。我将带你亲手打造一个属于你自己的“浏览器AI助手”。它将以谷歌浏览器插件的形式常驻在你的侧边栏或右键菜单里。当你需要时一键就能调用云端强大的MiniCPM-o-4.5模型实现文本总结、翻译、润色等功能让AI能力无缝融入你的每一次浏览和创作。这个方案最大的魅力在于“轻量”和“便捷”。你无需在本地部署复杂的模型环境也无需记住复杂的API调用命令。一切都在你熟悉的浏览器里完成就像给浏览器装上一个智能大脑。接下来我们就从零开始一步步实现它。1. 准备工作理清思路与获取钥匙在动手写代码之前我们先花几分钟把整个项目的脉络理清楚并准备好必需的“钥匙”。1.1 项目架构全景图我们的浏览器插件核心工作流程很简单可以概括为“三步走”用户触发你在网页上选中一段文本通过插件按钮或右键菜单发起请求。插件中转浏览器插件捕获你的请求将选中的文本和你的指令如“总结”打包发送给远端的AI服务。AI处理并返回云端的MiniCPM-o-4.5模型收到请求处理文本然后将生成的结果总结后的文字返回给插件插件再展示给你看。整个过程插件就像一个聪明的信使在你和云端AI之间搭建了一座桥梁。你完全感知不到后端的复杂只需享受前端的便捷。1.2 获取云端API访问凭证要让我们的“信使”能顺利与云端AI对话我们需要一个通行证这就是API Key。这里我们以DeepSeek平台为例请注意模型服务提供商可能变化请以实际可用为准。访问DeepSeek的官方网站或相关API平台。注册并登录你的账号。在个人中心或开发者设置页面找到创建API Key的选项。生成一个新的Key并立即妥善保存。它通常是一长串由字母数字组成的字符串像sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。请像保护密码一样保护它不要直接硬编码在代码中。有了这个Key我们的插件就能代表你合法地调用MiniCPM-o-4.5模型的服务了。2. 打造插件骨架核心文件创建与配置一个最简单的Chrome插件通常由三个核心文件构成manifest.json清单文件、popup.html弹出窗口界面和background.js后台脚本。我们来逐一创建。首先在你的电脑上新建一个文件夹命名为mini-cpm-browser-helper所有插件文件都将放在这里。2.1 定义插件蓝图manifest.json这个文件是插件的“身份证”和“说明书”告诉浏览器插件叫什么、能做什么、需要哪些权限。{ manifest_version: 3, name: MiniCPM 浏览器智能助手, version: 1.0, description: 一键调用云端MiniCPM-o-4.5模型实现文本总结、翻译与润色。, permissions: [ activeTab, contextMenus, storage ], host_permissions: [ https://api.deepseek.com/* ], action: { default_popup: popup.html, default_icon: { 16: icons/icon16.png, 48: icons/icon48.png, 128: icons/icon128.png } }, background: { service_worker: background.js }, icons: { 16: icons/icon16.png, 48: icons/icon48.png, 128: icons/icon128.png } }关键点解释manifest_version: 3必须使用Manifest V3这是Chrome插件的最新规范。permissions我们申请了三个权限。activeTab获取当前活动标签页的信息以便操作页面文本。contextMenus允许我们创建右键菜单。storage用于安全地存储你的API Key避免每次输入。host_permissions声明我们的插件需要与哪个网络地址通信这里填入了DeepSeek API的域名请根据实际API地址修改。action定义了浏览器工具栏图标的行为点击它弹出popup.html页面。background.service_worker指定后台脚本它将负责创建右键菜单和处理网络请求。你可以准备几个简单的图标16x16, 48x48, 128x128像素放在icons文件夹下或者暂时用占位图片。2.2 设计操作界面popup.html这是点击浏览器工具栏插件图标后弹出的窗口界面。我们设计一个简洁的设置面板。!DOCTYPE html html head meta charsetutf-8 style body { width: 300px; padding: 15px; font-family: sans-serif; } .input-group { margin-bottom: 15px; } label { display: block; margin-bottom: 5px; font-weight: bold; } input, select, button { width: 100%; padding: 8px; box-sizing: border-box; margin-top: 5px; } button { background-color: #4CAF50; color: white; border: none; cursor: pointer; } button:hover { background-color: #45a049; } #status { margin-top: 10px; padding: 10px; border-radius: 4px; display: none; } .success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; } .error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } /style /head body h3MiniCPM 助手设置/h3 div classinput-group label forapiKeyAPI Key:/label input typepassword idapiKey placeholder请输入你的 API Key /div div classinput-group label fordefaultAction默认操作:/label select iddefaultAction option valuesummarize总结摘要/option option valuetranslate翻译成中文/option option valuepolish润色改写/option /select /div button idsaveBtn保存设置/button div idstatus/div script srcpopup.js/script /body /html界面很简单一个输入框让你粘贴API Key一个下拉菜单选择你常用的功能总结、翻译、润色以及一个保存按钮。2.3 注入交互逻辑popup.js这个脚本负责弹出窗口的逻辑保存设置和读取设置。// popup.js document.addEventListener(DOMContentLoaded, function() { const apiKeyInput document.getElementById(apiKey); const defaultActionSelect document.getElementById(defaultAction); const saveBtn document.getElementById(saveBtn); const statusDiv document.getElementById(status); // 页面加载时从存储中读取已保存的设置并填充 chrome.storage.sync.get([apiKey, defaultAction], function(data) { if (data.apiKey) { apiKeyInput.value data.apiKey; } if (data.defaultAction) { defaultActionSelect.value data.defaultAction; } }); // 保存按钮点击事件 saveBtn.addEventListener(click, function() { const apiKey apiKeyInput.value.trim(); const defaultAction defaultActionSelect.value; if (!apiKey) { showStatus(请输入API Key。, error); return; } // 将设置保存到Chrome的同步存储中 chrome.storage.sync.set({ apiKey: apiKey, defaultAction: defaultAction }, function() { showStatus(设置保存成功, success); // 通知后台脚本设置已更新例如可能需要用新的API Key chrome.runtime.sendMessage({type: settingsUpdated}); }); }); function showStatus(message, type) { statusDiv.textContent message; statusDiv.className type; statusDiv.style.display block; setTimeout(() { statusDiv.style.display none; }, 3000); } });3. 赋予插件灵魂后台服务与AI通信后台脚本 (background.js) 是插件的“大脑”它长期运行监听事件并处理核心逻辑。3.1 初始化与右键菜单创建// background.js // 插件安装或更新时创建右键菜单 chrome.runtime.onInstalled.addListener(() { chrome.contextMenus.removeAll(() { chrome.contextMenus.create({ id: mini-cpm-process, title: 使用MiniCPM处理, contexts: [selection] // 仅在选中文本时显示 }); // 创建子菜单项 chrome.contextMenus.create({ id: summarize, parentId: mini-cpm-process, title: 总结摘要, contexts: [selection] }); chrome.contextMenus.create({ id: translate-zh, parentId: mini-cpm-process, title: 翻译成中文, contexts: [selection] }); chrome.contextMenus.create({ id: polish, parentId: mini-cpm-process, title: 润色改写, contexts: [selection] }); }); console.log(MiniCPM助手插件已初始化右键菜单创建成功。); });这段代码在插件安装时会在浏览器的右键菜单里添加一个“使用MiniCPM处理”的选项并且其下有三个子功能。3.2 处理右键菜单点击事件当你在网页上选中文字并点击我们创建的右键菜单时下面的监听器就会被触发。// 监听右键菜单的点击事件 chrome.contextMenus.onClicked.addListener((info, tab) { // 确保点击的是我们创建的菜单并且有选中的文本 if (info.menuItemId info.selectionText) { const selectedText info.selectionText.trim(); const action info.menuItemId; // 动作ID: summarize, translate-zh, polish if (!selectedText) { console.log(未选中有效文本。); return; } // 从存储中获取API Key和默认提示词模板 chrome.storage.sync.get([apiKey], function(data) { const apiKey data.apiKey; if (!apiKey) { // 如果没有保存API Key引导用户去设置 chrome.tabs.create({ url: chrome.runtime.getURL(popup.html) }); return; } // 根据不同的动作构造不同的提示词 let prompt; switch(action) { case summarize: prompt 请用简洁的语言总结以下文本的核心内容\n\n“${selectedText}”; break; case translate-zh: prompt 请将以下文本翻译成流畅的中文\n\n“${selectedText}”; break; case polish: prompt 请对以下文本进行润色和改写使其更通顺、专业\n\n“${selectedText}”; break; default: prompt 处理以下文本\n\n“${selectedText}”; } // 调用函数发送请求到AI模型 callMiniCPMAPI(apiKey, prompt, tab.id); }); } });3.3 与云端AI模型对话这是最核心的一步我们将选中的文本和构造好的指令通过HTTP请求发送给MiniCPM-o-4.5模型的API。// 调用DeepSeek Chat API的函数 async function callMiniCPMAPI(apiKey, prompt, tabId) { const apiUrl https://api.deepseek.com/chat/completions; // 示例API端点请替换为实际地址 // 构造请求体符合OpenAI API格式 const requestBody { model: deepseek-chat, // 模型名称请根据MiniCPM-o-4.5的实际API名称修改 messages: [ { role: user, content: prompt } ], stream: false // 非流式响应简单起见 }; try { const response await fetch(apiUrl, { method: POST, headers: { Content-Type: application/json, Authorization: Bearer ${apiKey} }, body: JSON.stringify(requestBody) }); if (!response.ok) { throw new Error(API请求失败: ${response.status}); } const data await response.json(); // 从响应中提取模型返回的文本内容 const aiResponse data.choices[0]?.message?.content || 未收到有效回复。; // 将AI的回复发送给内容脚本以便在页面上显示 chrome.tabs.sendMessage(tabId, { action: showResult, result: aiResponse }); } catch (error) { console.error(调用AI API时出错:, error); // 也可以将错误信息发送到页面提示用户 chrome.tabs.sendMessage(tabId, { action: showResult, result: 请求出错: ${error.message}。请检查网络和API Key设置。 }); } }请注意上面的apiUrl和model字段需要替换为你所使用的AI服务提供商如DeepSeek提供的真实API地址和模型名称。MiniCPM-o-4.5的接入方式可能因平台而异。4. 让结果呈现内容脚本与页面交互后台脚本拿到了AI的回复需要一种方式优雅地展示在原始网页上而不是在控制台。这需要依靠“内容脚本”(content.js)。4.1 创建内容脚本在插件根目录创建content.js文件。// content.js // 监听来自后台脚本的消息 chrome.runtime.onMessage.addListener((request, sender, sendResponse) { if (request.action showResult) { // 调用函数在页面上显示结果 showResultPopup(request.result); } }); // 在页面上创建一个浮动弹窗来显示AI处理结果 function showResultPopup(resultText) { // 移除可能已存在的旧弹窗 const oldPopup document.getElementById(mini-cpm-result-popup); if (oldPopup) { oldPopup.remove(); } // 创建新弹窗元素 const popup document.createElement(div); popup.id mini-cpm-result-popup; popup.style.cssText position: fixed; top: 20px; right: 20px; max-width: 400px; background: white; border: 1px solid #ccc; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 10000; font-family: sans-serif; overflow: hidden; ; // 弹窗标题栏 const header document.createElement(div); header.style.cssText padding: 12px 16px; background: #f0f7ff; border-bottom: 1px solid #ddd; font-weight: bold; display: flex; justify-content: space-between; align-items: center; ; header.textContent MiniCPM 处理结果; const closeBtn document.createElement(button); closeBtn.textContent ×; closeBtn.style.cssText background: none; border: none; font-size: 20px; cursor: pointer; line-height: 1; ; closeBtn.onclick () popup.remove(); header.appendChild(closeBtn); // 结果内容区域 const content document.createElement(div); content.style.padding 16px; content.style.maxHeight 300px; content.style.overflowY auto; content.textContent resultText; // 组装弹窗 popup.appendChild(header); popup.appendChild(content); document.body.appendChild(popup); // 点击弹窗外部关闭可选 setTimeout(() { const handleClickOutside (e) { if (!popup.contains(e.target)) { popup.remove(); document.removeEventListener(click, handleClickOutside); } }; document.addEventListener(click, handleClickOutside); }, 100); // 5秒后自动关闭 setTimeout(() { if (document.body.contains(popup)) { popup.remove(); } }, 5000); }4.2 更新清单文件以注入内容脚本我们需要修改manifest.json告诉浏览器在哪些网页中自动注入我们的content.js脚本。在manifest.json的background部分后添加以下内容content_scripts: [ { matches: [all_urls], js: [content.js], run_at: document_end } ],matches: [all_urls]意味着这个脚本会注入到所有你访问的网页中。出于安全考虑在实际发布时你可能需要限制为特定的网站。5. 测试与使用让你的插件跑起来代码部分已经完成现在让我们在Chrome浏览器中加载这个插件并进行测试。打开扩展管理页面在Chrome浏览器地址栏输入chrome://extensions/并回车。开启开发者模式在页面右上角打开“开发者模式”的开关。加载已解压的扩展程序点击左上角的“加载已解压的扩展程序”按钮。选择文件夹在弹出的文件选择器中找到并选中我们创建的mini-cpm-browser-helper文件夹。插件加载成功此时你应该在扩展列表里看到“MiniCPM 浏览器智能助手”并且浏览器工具栏会出现它的图标。首次使用配置点击工具栏上的插件图标会弹出我们之前设计的设置窗口。将你在第一步获取的API Key粘贴进去并选择一个你喜欢的默认操作。点击“保存设置”。开始使用在任何网页上用鼠标选中一段文字比如一篇新闻的几段。在选中的文字上点击鼠标右键。你应该能看到“使用MiniCPM处理”的菜单展开它并选择“总结摘要”。稍等片刻取决于网络和API速度网页的右上角就会弹出一个美观的小窗口里面就是AI为你生成的文本摘要6. 总结与展望至此一个功能完整、体验流畅的浏览器AI助手就诞生了。我们从一个简单的想法出发通过创建插件清单、设计交互界面、编写后台逻辑和内容脚本一步步将云端MiniCPM-o-4.5模型的能力“请”到了浏览器里。整个过程没有复杂的本地环境配置所有的难点都被封装在了插件背后。用起来感觉如何是不是比来回切换网站方便多了这个插件的潜力远不止于此。你可以基于这个框架轻松地扩展更多功能比如添加更多AI指令如“扩写”、“提炼要点”、“改变语气”等。优化用户体验增加一个设置选项让弹窗显示的位置、大小、自动关闭时间都可以自定义。支持流式响应修改API调用让AI的回复像打字一样逐字显示出来体验更佳。历史记录功能将处理过的文本和结果保存下来方便回顾。开发浏览器插件是接触Web前端技术和云服务API一个非常有趣的切入点。它让你能直接打造提升自己效率的工具。希望这个教程不仅给了你一个即拿即用的工具更打开了一扇窗让你看到将强大AI能力融入日常数字生活的无限可能。不妨就从修改一两个小功能开始打造一个独一无二的专属智能浏览器吧。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。