功能介绍
为什么叫 Mole(鼹鼠)?
Mole 的工作方式就像一只鼹鼠:你提出问题后,它钻入地下(后台),在隧道网络中默默挖掘——调用工具、搜索网页、解析数据。找到宝藏后,它浮出地面,把结果呈现在悬浮球中。整个过程不打扰你正在做的事。
地面 = 悬浮球(你看到的入口) 地下 = Background(AI 工作的地方) 隧道 = Channel + MCP(连接一切的通信网络)
悬浮球 AI 对话
Mole 在每个网页上注入一个悬浮球,作为与 AI 交互的入口。
- Shadow DOM 隔离 - 悬浮球的样式完全隔离在 Shadow DOM 内,不会影响宿主网页的样式,也不会被宿主网页的样式干扰
- 快捷键唤起 -
Cmd+E(Mac)/Ctrl+E(Windows)快速唤起搜索框 - 拖拽定位 - 悬浮球可以拖拽到屏幕任意位置,位置会持久化到
chrome.storage.local - 贴边微隐藏 - 胶囊形态贴边微隐藏,hover 时滑出,不干扰正常浏览
- 流式响应 - AI 回复以流式方式呈现,实时展示思考过程和工具调用状态
Agentic Loop 架构
Mole 的核心是一个极简的 Agentic Loop(代理循环),设计哲学是:
代码管机制和边界(保下限),模型管决策和策略(定上限)
核心循环
采样 -> 有工具调用 -> 执行 -> 回写 -> 继续采样
无工具调用 -> 结束代码负责(机制 + 边界)
- 采样 -> 执行 -> 回写循环
- 预算执行(轮数上限、调用数上限、上下文长度限制)
- 死循环检测(相同工具+参数重复 N 次自动终止)
- 空响应重试
- 上下文超长自动压缩
- 子任务递归入口
模型负责(决策 + 策略)
- 意图分类 / 工具选择 / 任务拆分
- 验证策略 / 何时停止 / 回复措辞
任务分级
Mole 按任务复杂度分为四个等级,由模型自主判断:
第一类:直接回答
问候、闲聊、知识问答等,直接用文字回答,不调用任何工具。
第二类:单步操作
一个明确的小目标(搜索、点击、截图、查询),调用最合适的工具,拿到结果后回复。
第三类:多步任务
需要 2 步以上才能完成的目标。每一步根据上一步的实际结果来决定下一步,不会在开头就把所有步骤都规划好。
第四类:复合任务
包含多个相对独立的子目标。使用 spawn_subtask 将每个独立子目标拆分为隔离任务执行,每个子任务有独立的上下文,避免信息混杂。
CDP 深度控制
Mole 通过 Chrome DevTools Protocol(CDP)接入 10 个协议域,提供浏览器进程级别的深度控制能力,弥补 Content Script 的固有限制:
- 可信事件注入 — 发送
isTrusted=true的鼠标/键盘事件,绕过反爬的事件来源检测 - 对话框处理 — 自动检测和处理 alert/confirm/prompt 对话框,不再阻断自动化流程
- iframe 穿透 — 跨域 iframe 中执行 JS、获取文本,解决验证码和支付表单等场景
- 网络可见性 — 完整的请求/响应数据(包括 body 和 headers),以及 Cookie 读写
- 请求拦截 — 拦截请求后修改参数放行、返回 Mock 响应、或模拟失败,支持注入认证 headers 和绕过 CORS
- DOM 深度操作 — 无视同源策略直接查询/修改 DOM,获取精确 box model 几何信息
- 页面存储 — 跨域读写 localStorage / sessionStorage,无需 content script
- CSS 样式 — 获取计算样式和匹配规则、修改内联样式、动态注入 CSS 规则
- 视觉高亮 — 高亮标注 DOM 元素或区域,AI 操作时让用户直观看到操作对象
- 设备模拟 — 模拟移动端视口、覆盖 User-Agent、伪造地理位置和时区
- 控制台捕获 — 自动收集 console 输出和未捕获异常,辅助诊断页面问题
所有 CDP 工具共享统一的会话管理器(cdp-session.ts),自动管理 debugger 的 attach/detach 生命周期和域事件监听。
上下文自动压缩
当对话上下文变得过长时,Mole 会自动压缩历史上下文,保留关键信息,确保在 LLM 的上下文窗口限制内持续工作。这使得长时间的多步任务不会因为上下文溢出而失败。
会话历史记录
Mole 支持会话历史记录,可以在 Options 页面查看和管理过往的对话记录。每次对话的完整过程(包括工具调用和结果)都会被保存。
