ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Open Glean:基于 Hydra DB 的开源 AI 知识工作台——架构、部署与密钥安全深度解析

Open Glean:基于 Hydra DB 的开源 AI 知识工作台——架构、部署与密钥安全深度解析 【免费下载链接】open-gleanAn open-source AI platform for knowledge work. Connect your apps, find answers, and get work done.项目地址https://gitcode.com/gh_mirrors/op/open-glean点击查看免费下载Open Glean 是一个以 Hydra DB 为底层存储的开源 AI 知识工作台你向它提问它跨你的记忆memories、文件与已连接应用检索上下文生成带行内引用inline citations的答案并同时展示来源面板。本文以仓库根目录的 README.md 为骨架结合源码、配置与测试文件完整讲解它的核心功能、本地与 Docker 部署方式、请求链路、全部环境变量及密钥安全模型读完你可以独立安装、运行并理解其服务端代理与凭证防护的底层实现。项目定位把 Hydra DB 变成你的「第二大脑」Open Glean 本质上是架设在 Hydra DB 之上的 AI 工作区AI workspace。它在 README 中的自我描述是Open Glean is the AI workspace over Hydra DB. Ask a question across your memories, files, and connected apps. Open Glean retrieves the context, writes the answer, and cites its sources.三个关键设计决定了它和一般「套壳聊天应用」的区别答案有据可查每次提问都会先从 Hydra 数据库检索上下文再生成答案并以内联引用 来源面板SourcesPanel的方式把「答案」和「证据」绑定在一起密钥不落浏览器Next.js 服务端代理请求到官方hydradb/sdk所有 API Key 保存在AES-256-GCM 加密的 httpOnly 会话 Cookie中、仅在服务端解析使用永不进入浏览器端 JS可自托管你可以用自己的 Hydra DB Key 独立运行整个应用也可以配置部署级共享 KeyHYDRA_API_KEY让用户无需各自录入凭证。仓库的技术栈在 package.json 中一目了然Next.js 16.3.3、React 19.2.8、Tailwind CSS v4、hydradb/sdk^2.1.2、MongoDB 驱动、aws-sdk/rds-signerDocumentDB IAM 认证以及react-force-graph-2d/d3-force用于 Mindmap 知识图谱渲染。核心功能全景README 列出的功能模块与仓库目录一一对应app/(app)/下的页面与components/下的组件Ask提问一个统一的输入框。每次提问都会从 Hydra 数据库检索上下文并流式输出带行内引用的答案同时展示来源面板可选启用 Web 搜索通过 OpenRouter 的 web plugin。对应页面见 app/(app)/ask/page.tsx/ask/page.tsx)来源面板组件见 components/SourcesPanel.tsx。Deep Research深度研究面向「单次提问无法回答」的复杂问题。Open Glean 会规划一个由子问题组成的 DAG有向无环图每一层并行打到 Hydra每个分支写一条 finding所有来源去重合并为一份统一编号的引用列表最后生成答案研究过程通过时间线timeline实时展示计划与进度。对应页面 app/(app)/research/route.ts编排器与 components/ResearchTimeline.tsx。Scope switching范围切换在顶栏选择查询命中的数据库database与集合collection检索会扇出到所有选中的集合。对应组件 components/ScopeSwitcher.tsx。Context上下文你的记忆、文件、保存的网页与连接器同步的知识统一汇聚在一处页面见 app/(app)/context/page.tsx/context/page.tsx)。Collections集合将查询限定到某个集合子租户或打开单个集合在其内部搜索页面见 app/(app)/collections/page.tsx/collections/page.tsx) 与 app/(app)/collections/[slug]/page.tsx。Mindmap知识图谱Hydra 从你的上下文自动构建的知识图谱可视化页面见 app/(app)/mindmap/page.tsx/mindmap/page.tsx)。Integrations集成不离开应用即可连接 Hydra 的 connector、校验凭据、发现资源并启动同步页面见 app/(app)/integrations/page.tsx/integrations/page.tsx)。Bring your own model自带模型支持任意 OpenAI 兼容端点内置可搜索的 OpenRouter 模型选择器并支持收藏组件见 components/ModelPicker.tsx。Deep Research 的源码级原理DAG 规划与并行分层README 只描述了大致的 Deep Research 流程源码把每个环节落到了具体实现lib/research/planner.ts规划planplanPrompt要求模型把问题拆成最多 8 个子问题MAX_NODES 8、最深4 层MAX_LEVELS 4见 planner.ts每个子问题必须是能独立检索到语料的搜索语句依赖用dependsOn表达且只允许引用更早的 id禁止环模型只允许返回纯 JSON。parsePlan会从模型输出中扫描最外层平衡的{...}对象模型常把 JSON 包在散文或代码围栏里过滤掉无效节点与坏依赖边。分层layerlayerPlan用Kahn 算法把 DAG 转成执行层级——每个节点放到「其最深依赖的下一层」同层节点互不依赖、可安全并发若出现环则把剩余节点拍平到下一层并丢弃边避免死锁。执行execute编排器 app/api/research/route.ts 按groupByLevel得到的波次wave逐层并发扇出到 Hydra每个子问题默认取6 条检索结果PER_NODE_RESULTS每分支写一条 finding上限 700 字符FINDING_CHARS并作为上下文喂给下一波。去重dedup跨所有节点合并来源为一份全局编号的引用列表最终答案的上下文总量有 24,000 字符上限MAX_ANSWER_CONTEXT每条来源保留 1,200 字符摘要EXCERPT_CHARS。另外并发研究通过OPEN_GLEAN_MAX_CONCURRENT_RESEARCH默认 3做实例级限流防止单次研究的大量 LLM 与检索调用打爆实例。快速开始本地运行README 给出的启动方式极简npm ci npm run dev接着把.env.example复制为.env.local至少设置OPEN_GLEAN_SESSION_SECRET其余全部可选。没有 Hydra Key 时应用会显示连接界面ConnectGate见 components/ConnectGate.tsx并向你要一个。启动后打开 http://localhost:3000按三步走Connect连接粘贴你的 Hydra DB API Key在 Hydra 官方控制台的 Keys 页面创建并选择一个数据库Add a model添加模型在 Settings 里粘贴 OpenRouter或其他 OpenAI 兼容Key 并选择一个模型——模型只负责写答案搜索不依赖它也能工作Ask away提问或先到 Context 页面添加上下文文件、笔记、URL。环境变量文件解读完整的.env.example.env.example按用途分四组比 README 的表格多了可直接粘贴的注释与示例密钥安全组OPEN_GLEAN_SESSION_SECRETany random 16 char string必填Hydra DB 组HYDRA_API_KEY部署级共享 Key可省略、HYDRA_BASE_URLhttps://api.hydradb.com、HYDRA_DEFAULT_DATABASE默认租户例如driveLLM 组OPENROUTER_API_KEY、OPEN_GLEAN_LLM_MODEL示例google/gemini-3.7-flash1M 上下文、deepseek/deepseek-v4-flash-07311.3M 上下文、可选的OPEN_GLEAN_LLM_BASE_URL与OPEN_GLEAN_ALLOW_PRIVATE_LLM_URLtrue聊天持久化组方案 A 直连 MongoDBmongodb://localhost:27017或mongodbsrv://…方案 B 走 Lambda 代理MONGODB_URI填 API Gateway 的https://…execute-api…端点 MONGODB_PROXY_KEY。值得一提的是OPEN_GLEAN_SESSION_SECRET的「必填」约束并非只在运行时才暴露启动时 lib/env.ts 的checkEnv会一次性校验环境env.ts在 production 下缺 secret 或 secret 长度不足 16 字符会直接报 errorHYDRA_BASE_URL必须是合法 https URLKey 走 Authorization 头明文传输会泄密若MONGODB_URI看起来是 Lambda 代理端点却没配MONGODB_PROXY_KEY、或配了OPENROUTER_API_KEY却没配模型都会给出 warning——避免「部署看着健康、一进请求就挂」的陷阱。使用 Docker 部署README 提供了完整的 Docker 启动命令docker build -t open-glean . docker run -p 3000:3000 \ -e OPEN_GLEAN_SESSION_SECRETyour-random-16-char-secret \ -e HYDRA_API_KEYyour-hydra-key \ -e OPENROUTER_API_KEYyour-openrouter-key \ -e OPEN_GLEAN_LLM_MODELgoogle/gemini-3.7-flash \ -e MONGODB_URImongodb://your-mongo-host:27017 \ open-glean镜像的两个特点README 原文使用Next.js standalone 输出只打包运行期文件与构建实际用到的依赖并且以非 root 用户运行。从 Dockerfile 可以看到多阶段构建的具体实现deps阶段用node:24-slim执行npm cibuild阶段执行npm run buildnext.config.ts设置了output: standalone产物在.next/standaloneruntime阶段只拷贝public、.next/standalone、.next/static与certs/DocumentDB CA 证书包供 lib/mongo.ts 运行时读取创建 uid 1001 的系统用户open-glean并以node server.js启动。构建期会塞一个占位 secret 以让next build静默通过真实 secret 在容器运行时注入——这解释了为什么 README 强调生产环境必须在 run 时提供OPEN_GLEAN_SESSION_SECRET。架构与请求链路README 用一张 ASCII 图概括了整体请求流Browser ──► Next.js proxy (/api/hydra/*) ──► hydradb/sdk ──► api.hydradb.com └─► /api/llm/chat (streaming web plugin) ─► your LLM provider三个要点README 原文所有 Hydra 调用都经过类型化的 SDK由 SDK 统一处理鉴权、重试与 envelope 解析对话持久化到 MongoDB可达时带 localStorage 兜底非机密设置留在浏览器端Web 搜索由 LLM 提供商的 web pluginOpenRouter提供其引用与 Hydra 来源并排展示。代理层细节/api/hydra 路由如何工作浏览器到 Hydra 的桥梁是app/api/hydra/[...path]动态路由文件注释完整列出了浏览器端路由与 SDK 方法的一一映射。两个值得注意的实现事实Key 的解析优先级服务端、仅服务端见buildClientapp/api/hydra/[...path]/route.tsAuthorization: Bearer …请求头显式按请求覆盖加密 httpOnly 会话 Cookie通过/api/auth/key写入HYDRA_API_KEY环境变量部署级共享 Key 数据库的解析顺序与之对应x-hydra-base-url请求头 → 会话 →HYDRA_BASE_URL环境变量。/context/relations这类会遍历知识图谱的调用会把超时从默认 15s 放宽到 45sHYDRA_DEFAULT_DATABASE会在调用方与会话都没指定数据库时填充默认租户避免「All databases」视图静默漏数据。查询参数全部按 wire 格式手写/query走裸 fetchraw fetch因此不会获得 SDK 的 camelCase→snake_case 自动转换——源码注释明确指出如果按 camelCase 写max_results、graph_context、metadata_filters会被静默忽略导致整个筛选 UI 变成 no-op。多集合选择器支持列表collections与加权映射两种形式且与单集合collection互斥、多集合优先。错误处理上humanMessage会把 SDK 拼接的一整段上游 envelope 错误文本Status code: 401\nBody: {…}解析成人类可读的一句error.message并透传上游状态码——否则 401 被包装成 502 会让客户端误以为服务端坏了。环境变量与密钥安全重点章节README 用一整节强调 API Key 的安全模型API keys arenot stored in the browser. When you connect in Settings, the key is verified server-side and stored in an AES-256-GCM-encrypted, httpOnly session cookie; every proxied request resolves it on the server. Nothing key-shaped is inlined into the JS bundle, localStorage, or any client state.源码把这句话落实在 lib/session.tsCookie 名为open-glean.session采用AES-256-GCMCIPHER aes-256-gcm12 字节随机 IV 认证标签见 session.ts密钥由OPEN_GLEAN_SESSION_SECRET经 SHA-256 派生为稳定的 32 字节Cookie 设置httpOnly、sameSite: lax、生产环境secure有效期 90 天。开发模式下若未配置 secret会退化为每进程临时的固定开发密钥重启即失效仅限本地。第二个关键机制是Key 与端点的「钉扎」pinningREADME 原文A stored key is alsopinned to the endpoint it was stored with. A request may only choose the LLM base URL when it supplies its own API key. Otherwise a caller could pair an attacker-controlled URL with the servers key and have it sent there in anAuthorizationheader.对应实现分别在 LLM 路径 lib/llmServer.tsresolveLlmCredsKey 与 base URL 必须来自同一来源请求自带 Key 才能自带 URL会话 Key 钉扎到存储时的 URL部署 Key 钉扎到部署的 base URL与 Hydra 代理路径base URL 解析同理且无论 URL 来自请求头、会话还是环境变量都汇合到assertSafeLlmUrl这一单点校验。未类型化的 connector 裸请求还会经过pinPathlib/hydra/pinPath.ts防止//host形式的路径覆盖 authority 把 Bearer Key 发给攻击者选定的主机。SSRF 防护安全 URL 校验lib/safeUrl.ts 实现了统一的出站 base URL 校验纯函数、可被所有调用方导入避免多处副本各自被绕过传输规则默认必须https:明文http:会让 Key 暴露在网络路径上主机规则拒绝 loopback、私有网段、link-local 与内网域名含localhost、.local、.internal后缀IPv4 的 10/8、127/8、172.16/12、192.168/16、100.64/10、169.254/16以及 IPv6 的::、::1、ULA fc00::/7、fe80::/10 和各类内嵌 IPv4 的映射形式否则服务端就成了可中继响应体的SSRF 中继白名单例外只有OPEN_GLEAN_ALLOW_PRIVATE_LLM_URLtrue时才允许「私有地址 明文 http」组合本地 Ollama、LM Studio 的典型场景且公网主机明文仍然禁止非 http(s) 协议一律拒绝。文件注释还坦诚指出该校验不防 DNS rebinding公网域名解析到内网地址仍会通过需要由 lib/safeFetch.ts 在响应体回传调用方的路径上做解析后二次校验。Key 的唯一边界入口/api/auth/keyapp/api/auth/key/route.ts 是全系统唯一允许 Key 进入的地方POST会先用 SDK 的listDatabases在服务端验证 Hydra Key 有效性验证通过才写入加密会话 Cookie响应里返回数据库列表供范围选择而绝不回传 Key 本身验证失败统一返回一句Could not verify that key.不透传「Key 错误 / 限流 / 超时」的差异——否则该接口就成了免费的对 Key 测试预言机。GET只返回configured、fromEnv与掩码后的hydraKeyMaskedmaskKey仅保留前 8 位与后 4 位session.ts部署级共享 Key 只报告configured: true而不暴露任何 Key 材料DELETE清空会话。完整环境变量表README 的环境变量表是部署配置的权威来源逐项继承如下含默认值与用途VariablePurposeOPEN_GLEAN_SESSION_SECRET生产环境必填。任意随机 16 字符字符串。用于加密 Key 会话 Cookie。HYDRA_API_KEY可选部署级共享 Key设置后用户无需再输入任何 Key。HYDRA_BASE_URL可选默认后端地址默认为 https://api.hydradb.com。HYDRA_DEFAULT_DATABASE可选默认租户。未显式指定数据库的请求都会落到该租户。MONGODB_URI聊天持久化。MongoDB 连接串或裸 DocumentDB 集群端点通过.docdb.*.amazonaws.com自动识别。MONGODB_DB聊天记录库名默认open_glean。OPENROUTER_API_KEY可选服务端级 LLM Key。设置后用户无需再输入自己的 Key。OPEN_GLEAN_LLM_MODEL默认答案模型 id例如openai/gpt-4o-mini。无内置默认值缺省或无用户级模型时答案不可用。OPEN_GLEAN_LLM_BASE_URL可选 OpenAI 兼容端点服务端级 Key 使用默认 OpenRouter。OPEN_GLEAN_ALLOW_PRIVATE_LLM_URL是否允许 LLM base URL 指向私有/回环地址如 Ollama、LM Studio 本地模型。默认关闭。开启后仅允许私有地址上的明文http:公网主机仍要求https:非 http 协议一律拒绝。MONGODB_PROXY_KEYLambda 代理共享密钥。Lambda 端读取同名值PROXY_KEY两边必须一致。OPEN_GLEAN_MAX_CONCURRENT_RESEARCH每实例并发 Deep Research 数量默认 3。每次研究都会消耗大量 LLM 与检索调用。DocumentDB 不支持 IAM 数据库认证。代码中的 IAM token 路径无法对 Amazon DocumentDB 完成认证AWS_REGION、AWS_IAM_USER_ARN、AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY会被该路径读取此处列出仅为说明其预期输入。DocumentDB 请使用标准 MongoDB 连接串或 Lambda 代理。结合 lib/mongo.ts 可以把表格落到实现MONGODB_URI以https://开头且配置了MONGODB_PROXY_KEY时进入proxy 模式调用 API Gateway Lambda 的 REST 代理见 lambda/handler.mjs否则直连isDocumentDB()通过.docdb.region.amazonaws.com正则或AWS_IAM_USER_ARN存在性判断进入 IAM 模式用aws-sdk/rds-signer生成短时 RDS token10 分钟 TTL提前 5 分钟轮换并以 TLS 全局 CA bundle 连接retryWritesfalseDocumentDB 不支持可重试写入。当两种后端都不可达时API 路由返回{ persisted: false }客户端 store 自动回退到 localStoragelib/store/chat.tsx。技术栈与许可证README 的 Stack 一节明确了运行时边界Next.js 16、React 19、Tailwind CSS v4 与hydradb/sdk除此之外数据与 AI 没有任何其他运行时依赖。这一条与 package.json 的实际依赖一致——核心运行依赖仅有 SDK、MongoDB 驱动、AWS RDS signer、图标与图谱渲染库。许可证为Apache-2.0详见 LICENSE 与 NOTICENOTICE 特别声明connector 图标是第三方商标不在 Apache 授权覆盖范围内图标资源位于 public/static/images/logos/connectors。小结从快速启动到生产部署Open Glean 的工程重点其实不在「套一个聊天 UI」而在于类型化 SDK 统一承接 Hydra 的全部调用、DAG 规划驱动的高并发深度研究、以及一套以「Key 永不落浏览器 Key 与端点钉扎 SSRF 单点校验」为核心的服务端凭证安全模型。对照 README.md、.env.example 与上述源码路径你可以完整复现它的本地运行、Docker 部署与生产环境变量配置并把它的安全设计思路直接迁移到自己的 AI 应用架构中。赞分享【免费下载链接】open-gleanAn open-source AI platform for knowledge work. Connect your apps, find answers, and get work done.项目地址https://gitcode.com/gh_mirrors/op/open-glean点击查看免费下载相关推荐DeepAudit 深度解析基于 Multi-Agent 协作架构的 AI 代码安全审计平台DeepAudit 深度解析基于 Multi Agent 协作架构的 AI 代码安全审计平台 DeepAudit 是当前开源仓库中的核心项目一个基于 Mul应用安全人工智能大模型AI Agent多智能体SASTRAGFastGPT 部署与能力全景基于 LLM 的知识库平台与 AI Agent 工作流编排指南FastGPT 部署与能力全景基于 LLM 的知识库平台与 AI Agent 工作流编排指南 本文以仓库根目录的泰文版项目说明 README_th.md 为核人工智能AI AgentRAG大模型工作流自动化后端前端MindGraph深度解析基于Schema驱动的AI知识图谱构建平台全攻略MindGraph深度解析基于Schema驱动的AI知识图谱构建平台全攻略 你还在为非结构化文本转化为结构化知识图谱而烦恼MindGraph让这一切变得简单后端知识图谱AI 应用人工智能NLP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表