Chrome 扩展
Chrome 扩展
相关源文件
以下文件为本维基页面的生成提供了上下文:
.github/actions/setup-python-and-install-dependencies/action.yml.github/actions/setup-test-license/action.ymlbackend/Dockerfilebackend/Dockerfile.model_serverbackend/scripts/seed_dev_license.pybackend/tests/daily/conftest.pybackend/tests/daily/embedding/test_embeddings.pybackend/tests/integration/Dockerfilebackend/tests/integration/mock_services/mock_connector_server/Dockerfilebackend/tests/utils/__init__.pybackend/tests/utils/aws_secrets.pybackend/tests/utils/pytest_secrets.pybackend/tests/utils/secret_names.pyweb/Dockerfileweb/README.mdweb/next.config.jsweb/package-lock.jsonweb/package.jsonweb/tailwind.config.js
Onyx Chrome 扩展(extensions/chrome/)将平台的 AI 能力直接扩展到用户的浏览工作流中。它提供了一个持久化的侧边栏用于聊天和搜索,与浏览器的"新标签页"集成,并提供了快速访问的键盘快捷键,使用户无需离开当前网站即可与 Onyx 知识库交互。
概述与集成
该扩展充当 Onyx 后端的专用客户端,与 Web 应用程序类似,但针对上下文浏览进行了优化。它使用相同的 FastAPI 端点进行搜索和聊天编排,同时维护自己的 UI 状态和浏览器特定的集成。
主要功能
- 侧边栏访问: 一个可切换的侧边栏,用于即时聊天和搜索。
- 键盘快捷键: 默认映射为
Ctrl+O(Windows/Linux)或Alt+O(macOS),用于打开 Onyx 界面。 - 新标签页: 可选覆盖 Chrome 默认的新标签页,提供以搜索为中心的登录体验。
- 后端连接: 与 Onyx API 服务器(默认地址为
http://localhost:8080,或配置的云/自托管 URL)通信,执行检索增强生成(RAG)和智能体工作流。
数据流与架构
该扩展遵循标准的 Chrome 扩展架构,包含用于生命周期管理的后台脚本、用于侧边栏注入的内容脚本,以及用于配置的弹出/选项 UI。
与后端的连接
该扩展与后端核心系统交互。它使用系统安全架构中定义的标准认证流程。当用户从扩展发起搜索或聊天时,它会向 FastAPI 服务器发送请求,该服务器通过主后端基础设施进行容器化和管理 backend/Dockerfile:1-177。前端通信依赖 next.config.js 中的重写规则,在开发环境中正确代理 API 调用 web/next.config.js:80-111。
搜索与聊天执行流程
- 输入: 用户在扩展侧边栏中输入查询。
- 请求: 扩展调用 Onyx 后端的
/query或/chat端点。 - 处理: 后端触发
handle_stream_message_objects管线。 - 检索:
SearchTool查询文档索引后端(Vespa 或 OpenSearch),查找相关文档片段backend/Dockerfile:113-116。 - 响应: 大语言模型(LLM)生成响应,并通过流式传输返回给扩展 UI。
实现细节
UI 组件
扩展 UI 使用 Onyx 设计系统的子集构建。虽然它与主 web/ 目录是独立的构建,但在概念上与 Opal 组件库和 Tailwind 配置保持一致 web/package.json:40。扩展的样式设计参考了 Web 应用程序 tailwind.config.js 中使用的相同设计令牌 web/tailwind.config.js:1-27。
配置
用户可以通过选项页面配置扩展。关键设置包括:
- 服务器 URL: Onyx 实例的基础 URL(例如
https://onyx.yourcompany.com)。 - API 密钥/认证: 扩展使用用户现有的会话或专用的 API 密钥对后端进行请求认证。在开发环境中,这通常镜像了用于测试本地前端与远程后端通信的
DEBUG_AUTH_COOKIE逻辑web/README.md:30-42。
图表:扩展与后端通信
下图展示了 Chrome 扩展实体如何映射到后端服务架构和代码实体。
来源: backend/Dockerfile:1-177、web/next.config.js:80-111、web/README.md:30-42
安装与设置
该扩展通常通过 Chrome 网上应用店分发,也可以在开发环境中作为未打包的扩展加载。
- 导航到
chrome://extensions/。 - 启用"开发者模式"。
- 点击"加载已解压的扩展程序",然后选择
extensions/chrome/目录。 - 在扩展选项中配置
ONYX_SERVER_URL,指向正在运行的 Onyx 后端。
技术摘要表
| 功能 | 实现/文件路径 | 详情 |
|---|---|---|
| 键盘快捷键 | manifest.json | 默认:Ctrl+O 或 Alt+O |
| API 客户端 | extensions/chrome/src/api/ | 与 FastAPI 后端通信 backend/Dockerfile:80-82 |
| 新标签页集成 | extensions/chrome/src/newtab/ | 覆盖 Chrome 默认行为 |
| 侧边栏注入 | extensions/chrome/src/content/ | 向活动标签页注入 iframe |
| 认证处理 | onyx/auth/ | 与主 Web 应用程序共享逻辑 web/README.md:33-41 |
来源: extensions/chrome/(目录结构)、web/README.md:30-42、backend/Dockerfile:1-177
组件交互图
此图将扩展的功能需求映射到满足这些需求的具体后端模块。
来源: backend/Dockerfile:1-177、web/next.config.js:80-111、web/package.json:84-96