建议WPS 浏览器助手借鉴开源项目Tactus
Lv.2潜力创作者
Castor6/tactus是一款在Github开源的浏览器扩展(Chrome / Firefox),将 Agent Skills 规范与MCP引入浏览器环境,让 AI Agent 在浏览器中通过可扩展的技能系统执行复杂任务,替代重复的自动化操作,以降低 token 消耗并提升执行效率。项目采用 TypeScript 编写,基于 WXT 浏览器扩展框架与 Vue 3 构建。
Tactus 核心功能解析
一、Agent Skills 系统
Tactus 是首个在浏览器扩展中实现 Agent Skills 规范的产品。其实现包含以下环节:
技能导入:用户通过设置页面导入符合规范的 Skill 文件夹(包含 SKILL.md 及可选的脚本、参考文档和资源文件),数据存储于本地 IndexedDB
SKILL.md 解析:内置轻量级 YAML 解析器(utils/skills.ts),对 frontmatter 中的 name、description 等字段进行格式校验(name 的正则规则、字符长度限制等),与规范要求严格一致
技能激活机制:系统将所有已导入技能的 name 和 description 生成 XML 格式的提示词注入系统上下文,AI 模型通过 <skill_activation> 标签发起激活请求,扩展侧解析该标签并加载对应技能的完整指令
脚本执行:通过 Background Script 使用 chrome.userScripts API 在页面主世界(Main World)中执行 JavaScript 脚本,绕过内容安全策略(CSP)限制
信任机制
首次执行任意 Skill 脚本时,系统向用户展示脚本完整内容并要求确认。用户可选择"永久信任"该脚本,后续执行免确认。已信任的脚本状态通过 WXT Storage 持久化。此外,脚本执行前会进行静态安全扫描(validateScript),检测 eval()、Function 构造器、document.cookie、localStorage、浏览器扩展 API 等潜在风险模式并发出警告。
二、MCP(Model Context Protocol)集成
Tactus 通过 @modelcontextprotocol/sdk 实现了 MCP 客户端,支持 HTTP(Streamable HTTP)传输方式连接外部 MCP Server。
连接管理
utils/mcp.ts 中的 McpClientManager 类维护一个 Map<string, McpClientInstance> 的客户端实例池,支持同时连接多个 MCP Server。连接建立后,客户端自动调用 listTools() 获取目标 Server 暴露的工具列表,并将其转换为 OpenAI Function Calling 格式统一接入对话系统。
认证体系
支持三种认证方式:无认证(公开服务)、Bearer Token 认证(通过 Authorization 请求头传递)、OAuth 2.1 认证(通过 createExtensionOAuthProvider 实现授权码流程,支持自动刷新)。OAuth 配置存储于独立的 mcpStorage.ts 模块。
工具名称空间
为避免多 Server 之间的工具名冲突,Tactus 对 MCP 工具名称进行命名空间转换,生成格式为 mcp__{serverId}__{toolName} 的唯一工具标识。调用时通过 parseMcpToolName 反向解析出原始 serverId 和 toolName,再路由到对应的 MCP Client 实例执行 callTool。
三、页面内容理解
Tactus 采用 Mozilla 的 Readability 算法配合 Turndown 库实现页面内容提取与格式转换(utils/pageExtractor.ts):
智能提取模式(默认):Readability 算法解析页面 DOM,提取核心文章内容(标题、正文、作者、摘要等),再由 Turndown 将 HTML 转换为 Markdown
原始提取模式:针对特定网站可配置跳过 Readability 算法,直接提取 <body> 的纯文本内容(移除 script、style、noscript 等无关元素)
上下文感知:AI 模型自主判断是否需要调用页面提取工具。若 Skill 脚本已提供所需内容,则跳过提取以避免重复消耗 token
内容长度控制:用户可配置提取内容的最大字符数限制,超出部分进行截断处理
四、浏览器自动化能力
在最新版本中,Tactus 引入了基于 Chrome DevTools Protocol(CDP)的浏览器自动化工具集(utils/browserAutomation.ts,约 60000 行),提供以下能力:
标签页管理:创建 AI 工作标签页、认领用户标签页、列示和切换标签页、任务完成后整理标签页(关闭中间标签页、保留结果标签页)
DOM 快照:读取当前页面的可见可交互 DOM 节点,为每个节点分配唯一 node_id,供后续点击和填写操作使用
页面交互:基于 node_id 的元素点击、文本填写、键盘操作、页面滚动、导航和刷新
截图与导出:全页面截图、元素级别截图、原始页面内容导出(MHTML 格式优先,降级为完整 HTML)
风险分级:交互操作按风险等级分为 none(普通)、sensitive(敏感)、destructive(破坏性)三级,敏感和破坏性操作需用户二次确认
该模块采用标签页分组机制("Tactus Task" 工作组和 "Tactus Results" 结果组),将 AI 操作的标签页与用户正常浏览隔离。
五、AI 服务商集成
Tactus 同时原生支持三套 API 协议:
Anthropic Claude API(utils/anthropic.ts):原生调用,完整支持 Tool Use 和 Vision
Google Gemini API(utils/gemini.ts):原生调用,支持 Function Calling 和多模态输入
OpenAI 兼容 API(utils/api.ts):通过 OpenAI SDK 统一接入,兼容所有 OpenAI 协议的服务商
对话系统内置 ReAct(Reasoning + Acting)范式循环:模型自主决策何时调用工具,工具执行结果回注上下文后继续推理,直至生成最终回复。
技术栈总览
层面 | 技术选型 |
扩展框架 | WXT(现代浏览器扩展开发框架) |
前端 | Vue 3 + TypeScript |
AI 集成 | 原生 Anthropic API、原生 Gemini API、OpenAI SDK |
MCP 客户端 | @modelcontextprotocol/sdk(Streamable HTTP Transport) |
内容提取 | @mozilla/readability + turndown |
本地存储 | IndexedDB(idb)+ WXT Storage |
认证 | OAuth 2.1(MCP Server 认证) |
对 WPS 浏览器助手的借鉴建议
基于对 Tactus 的技术分析,以下建议可供 WPS 浏览器助手的迭代参考:
建议一:引入 Skill 技能系统
WPS 灵犀桌面端已建立成熟的 Skill 机制(SKILL.md 规范 + 本地技能目录),具备丰富的技能生态。建议将该机制向浏览器端延伸,允许用户在浏览器助手配置中导入 SKILL.md 格式的技能文件夹。浏览器的 Skill 可侧重于以下场景:
网页内容处理:对特定网站的页面结构解析、数据提取模板
在线服务集成:将常用的表单填写、数据提交流程封装为可复用技能
内容创作辅助:针对不同平台(社区论坛、知识库等)的内容格式规范封装为技能
实现上需注意渐进式加载策略——浏览器环境的上下文窗口更为受限,应严格遵循 Agent Skills 规范的"元数据 → 指令 → 资源"三级加载模型。
建议二:集成 MCP 协议支持
Tactus 的 MCP 集成实践表明,通过 HTTP Streamable Transport 连接外部 MCP Server 是浏览器环境下的可行路径。建议 WPS 浏览器助手增加 MCP 客户端能力,使浏览器端 AI 能够调用后端工具服务,例如:
通过 MCP 调用 WPS 云文档 API,实现浏览器端直接读取和编辑云端文档
通过 MCP 连接企业内部工具 Server(知识库检索、数据分析、CRM 等),扩展浏览器助手的业务能力边界
利用 MCP 的动态工具发现机制,实现工具能力的即插即用
工具命名空间的处理值得借鉴——Tactus 采用 mcp__{serverId}__{toolName} 前缀方案,有效解决了多 Server 工具名冲突问题。
建议三:增强页面理解与自动化能力
当前 WPS 浏览器助手已具备基础的页面内容提取功能。参考 Tactus 的实现,可考虑以下增强方向:
双模式内容提取:默认使用 Readability 算法提取核心内容,针对特定网站支持配置原始提取模式
结构化 DOM 快照:提供页面可交互节点的结构化快照(而非纯文本),为后续自动化操作提供精确的元素定位
操作录制与回放:Tactus 路线图中规划的"操作录制一键生成可复用 Skills"功能值得参考,用户在浏览器中的操作流程可自动录制成 Skill 脚本
建议四:脚本安全沙箱
Tactus 的脚本信任机制(首次确认 + 永久信任 + 静态安全扫描)为浏览器环境下的脚本执行提供了基本的安全保障。WPS 浏览器助手若引入 Skill 脚本执行能力,建议在此基础上进一步强化:
采用更严格的 CSP 策略和权限隔离
引入脚本执行的超时机制和资源配额限制
对脚本的网络请求、DOM 操作进行细粒度权限控制
Lv.2潜力创作者