agentic_huge_data_base / wiki
页面 Onyx · 13.4 Chrome 扩展·DeepWiki 中文全文译文

13.4 · Chrome 扩展

企业连接器与统一搜索 · 聚焦本章的模块关系、源码依据与实现要点。

项目Onyx 章节13.4 状态全文译文 模块系统架构、安装与启动、检索、召回与索引、界面与交互
源码线索
  • .github/actions/setup-python-and-install-dependencies/action.yml
  • .github/actions/setup-test-license/action.yml
  • backend/Dockerfile
  • backend/Dockerfile.model_server
  • backend/scripts/seed_dev_license.py
  • backend/tests/daily/conftest.py
  • backend/tests/daily/embedding/test_embeddings.py
  • backend/tests/integration/Dockerfile
  • backend/tests/integration/mock_services/mock_connector_server/Dockerfile
  • backend/tests/utils/__init__.py
模块标签
  • 系统架构
  • 安装与启动
  • 检索、召回与索引
  • 界面与交互
  • 测试、发布与运维

章节正文

Chrome 扩展

Chrome 扩展

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • .github/actions/setup-python-and-install-dependencies/action.yml
  • .github/actions/setup-test-license/action.yml
  • backend/Dockerfile
  • backend/Dockerfile.model_server
  • backend/scripts/seed_dev_license.py
  • backend/tests/daily/conftest.py
  • backend/tests/daily/embedding/test_embeddings.py
  • backend/tests/integration/Dockerfile
  • backend/tests/integration/mock_services/mock_connector_server/Dockerfile
  • backend/tests/utils/__init__.py
  • backend/tests/utils/aws_secrets.py
  • backend/tests/utils/pytest_secrets.py
  • backend/tests/utils/secret_names.py
  • web/Dockerfile
  • web/README.md
  • web/next.config.js
  • web/package-lock.json
  • web/package.json
  • web/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

搜索与聊天执行流程
  1. 输入: 用户在扩展侧边栏中输入查询。
  2. 请求: 扩展调用 Onyx 后端的 /query/chat 端点。
  3. 处理: 后端触发 handle_stream_message_objects 管线。
  4. 检索: SearchTool 查询文档索引后端(Vespa 或 OpenSearch),查找相关文档片段 backend/Dockerfile:113-116
  5. 响应: 大语言模型(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 扩展实体如何映射到后端服务架构和代码实体。

Onyx · 图表:扩展与后端通信 · 图 1
Onyx · 图表:扩展与后端通信 · 图 1

来源: backend/Dockerfile:1-177web/next.config.js:80-111web/README.md:30-42

安装与设置

该扩展通常通过 Chrome 网上应用店分发,也可以在开发环境中作为未打包的扩展加载。

  1. 导航到 chrome://extensions/
  2. 启用"开发者模式"。
  3. 点击"加载已解压的扩展程序",然后选择 extensions/chrome/ 目录。
  4. 在扩展选项中配置 ONYX_SERVER_URL,指向正在运行的 Onyx 后端。

技术摘要表

功能实现/文件路径详情
键盘快捷键manifest.json默认:Ctrl+OAlt+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-42backend/Dockerfile:1-177

组件交互图

此图将扩展的功能需求映射到满足这些需求的具体后端模块。

Onyx · 组件交互图 · 图 2
Onyx · 组件交互图 · 图 2

来源: backend/Dockerfile:1-177web/next.config.js:80-111web/package.json:84-96