eudora-hq/eudora

GitHub: eudora-hq/eudora

面向 AI agent 与 LLM 应用的开源治理代理,提供审计追踪、DLP 数据泄露防护与提示注入检测。

Stars: 0 | Forks: 0

# Eudora **面向 AI agent 和 LLM 应用的开源代理** 记录每一次模型交互,执行 DLP 检查,检测 prompt 注入尝试,并保留每次运行的决策轨迹。 兼容 OpenAI、Anthropic、Azure OpenAI、Ollama 以及现有的 agent,只需极少的改动。 支持自托管。采用 MIT 许可证。 [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Tests](https://img.shields.io/badge/tests-468%20passing-brightgreen)](.github/workflows/ci.yml) [![Self-hostable](https://img.shields.io/badge/self--host-free%20forever-blue)](docs/self-hosting.md) ![Node.js](https://img.shields.io/badge/node-22-339933?logo=node.js&logoColor=white) ![React](https://img.shields.io/badge/react-18-61DAFB?logo=react&logoColor=black) ![TypeScript](https://img.shields.io/badge/typescript-blue?logo=typescript) ![OpenAI](https://img.shields.io/badge/OpenAI-supported-black?logo=openai) ![Anthropic](https://img.shields.io/badge/Anthropic-supported-orange) ![Ollama](https://img.shields.io/badge/Ollama-supported-000000)
## 快速开始 **前置条件:** Node.js 18+, Git ``` git clone https://github.com/eudora-hq/eudora.git cd eudora npm install && cd server && npm install && cd .. cp .env.example server/.env ``` 编辑 `server/.env`: ``` JWT_SECRET=any-random-string-32-chars-or-more ENCRYPTION_KEY=64-char-hex-string # openssl rand -hex 32 SELF_HOSTED=true # 可选:使用 Postgres 代替默认的 SQLite 数据库 # DATABASE_URL=postgresql://user:password@host:5432/eudora ``` ``` # 启动后端(端口 3001) cd server && npm run dev # 在新终端中启动前端(端口 5173) npm run dev ``` 打开 `http://localhost:5173` 并注册。如果您正在运行 Ollama,安装向导将自动检测到它。 **Python SDK** ``` pip install eudora-sdk ``` ``` from openai import OpenAI from eudora import wrap_openai # 之前:直接连接到 OpenAI,无任何记录 # client = OpenAI(api_key="sk-...") # 之后:仅修改一行代码,所有内容均被审计 client = wrap_openai( OpenAI(api_key="sk-..."), proxy_key="eudora-proxy-..." ) response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "..."}] ) # 每次调用现在都会:进行 DLP 检查、injection 扫描和 tracing ``` **Node.js SDK** ``` npm install @eudora/sdk ``` ``` import OpenAI from 'openai' import { wrapOpenAI } from '@eudora/sdk' const client = wrapOpenAI( new OpenAI({ apiKey: process.env.OPENAI_KEY }), { proxyKey: 'eudora-proxy-...' } ) ``` 或者,在任何现有的 agent 中修改一行代码: ``` # 之前 client = OpenAI(base_url="https://api.openai.com/v1", api_key="sk-...") # 之后 client = OpenAI(base_url="https://api.geteudora.com/proxy/openai/v1", api_key="eudora-proxy-...") ``` ## 架构 ``` sequenceDiagram participant Agent participant Eudora participant Model Agent->>Eudora: LLM request Eudora->>Eudora: DLP scan · injection detection · risk score Eudora->>Model: Forward if allowed Model-->>Eudora: Model response Eudora->>Eudora: Response scan · HMAC sign · RFC 3161 timestamp Eudora-->>Agent: Response + audit trace ``` 该 pipeline 在每个请求到达模型之前对其进行运行。如果请求被阻止,它绝不会离开 Eudora。 ## 截图 **命令中心** ![Command Center](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5adbf480f0005611.png) **工作流构建器** (React Flow 画布,fetch URL,agent 节点,运行历史) ![Workflow Canvas](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/370a2eacbf005616.png) **审计日志与合规报告** (SHA-256 签名的 PDF 导出) ![Audit Log](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0682b64f48005622.png) ## 记录内容 每个请求都会生成一条轨迹记录: ``` Run #4821 2026-06-05 14:23:11 Agent Finance Analyst Owner alice@company.eu (verified human) Intent compliance (0.94 confidence) Context 2 files loaded DLP CLEAN Injection CLEAN Risk score 8 / 100 Guard ALLOWED Scope COMPLIANT Output 847 tokens, 2341ms Hash sha256:a7f3c2... ``` 被标记的运行包含完整的推理链。所有轨迹均经过 SHA-256 签名,且仅允许追加。 ## DLP:在模型看到凭据之前进行拦截 Eudora 会在转发之前扫描每个 prompt 中的凭据和密钥。一旦检测到,凭据将被替换为 `[CREDENTIAL REDACTED]` 并记录审计事件。实际值永远不会到达模型。 检测到的模式: - AWS Access Key ID (AKIA...) - PEM 私钥 (RSA, EC, OpenSSH, PGP) - GitHub token (ghp_, ghs_, gho_) - 带有内嵌密码的数据库连接字符串 - JWT token - Stripe 实环境和测试密钥 - Slack token - 通用 `api_key=`、`secret=`、`password=` 模式 - 高熵十六进制字符串 ## 功能 **安全性** - 24 种模式的 prompt 注入净化器 - 对每个请求进行 0-100 的风险评分 - 范围强制执行(agent 保持在定义的目的范围内) - 具有 15 种以上凭据模式的 DLP **审计** - 在数据库触发器级别强制执行的仅追加审计日志 - 对每个条目进行 SHA-256 内容哈希处理 - 包含完整推理链的单次运行决策轨迹 - 人工问责链(每个操作都可追溯到指定的个人所有者) - 带有单次运行轨迹的签名 PDF 合规报告 **集成** - 用于 OpenAI、Anthropic、Azure OpenAI、自定义 endpoint 的代理模式 - Python SDK (`pip install eudora-sdk`) - Node.js SDK (`npm install @eudora/sdk`) - Azure OpenAI 审计日志导入 - GitHub Copilot Business 审计日志导入 - Webhook 输出、RSS feed 监控、工作流中的 REST API 调用 **平台** - 可视化工作流构建器 (React Flow 画布) - Cron 定时 agent 任务 - 具有基于意图检索的上下文文件管理 - 团队邀请和席位管理 - MFA (TOTP)、OAuth 登录 (Google, GitHub) - 使用分析仪表板 - 系统健康监控 - 具有 Ollama 检测功能的自托管设置向导 - Eudora Tunnel — 通过 frp 将本地 Ollama 实例暴露给云托管的 Eudora,具备哈希一次性密钥、心跳认证、速率限制和陈旧隧道检测功能 ## 数据库后端 SQLite 仍然是自托管部署的默认选项。设置 `DATABASE_URL` 以便为需要并发写入者的云部署使用 Postgres。当配置 Postgres 插件时,Railway 会自动提供 `DATABASE_URL`。 Railway 后端环境清单: - `JWT_SECRET` - `ENCRYPTION_KEY` - `CLIENT_URL` - `DATABASE_URL`(可选,仅在使用 Postgres 时需要) 两种后端上的审计日志均保持仅追加状态。SQLite 使用数据库触发器,而 Postgres 在迁移期间安装等效的触发器函数。 对现有审计行的写入尝试将在触发器级别被拒绝,而不是在应用程序级别。这意味着即使应用程序代码被破坏,保护仍然有效。 对于一个将审计日志作为核心产品的系统,简单性和可验证性比规模更为重要。 ## 为什么没有向量数据库 默认情况下,Eudora 使用意图分类和基于标签的上下文检索,而不是 embedding 和语义搜索。 这使得自托管部署保持轻量级,并避免了额外的基础设施依赖。如果您有 OpenAI 密钥或带有 `nomic-embed-text` 的 Ollama,Eudora 将自动使用 embedding。如果没有,TF-IDF 回退机制无需任何额外设置即可工作。 在本地运行 14B 模型依然可行。 ## 自托管 vs 云端 自托管永久免费。包含所有功能。没有限制、没有试用、没有功能门槛。 | | 自托管 | 云端 | |---|---|---| | 成本 | 永久免费 | 每月 99 欧元起 | | 功能 | 全部功能 | 基于套餐 | | 数据 | 您的服务器 | 托管于欧盟 | | 限制 | 无 | 基于计划 | | 支持 | 社区 | SLA | 有关 Docker Compose 设置、环境变量和 Ollama 集成,请参阅 [docs/self-hosting.md](docs/self-hosting.md)。 ## 合规背景 Eudora 被受 DORA(欧盟数字运营弹性法案)和欧盟 AI 法案约束的团队所使用。审计追踪、问责链和决策轨迹的设计围绕实际操作弹性评估的要求展开。 如果您不属于受监管行业,这些功能中的大多数仍然适用:DLP 可以捕获真实的凭据泄露,注入检测可以捕获真实的攻击,而审计追踪对于调试 agent 行为非常有用。 ## 技术栈 | 层级 | 技术 | |---|---| | 前端 | React 18, Vite, Tailwind CSS, Zustand, React Flow | | 后端 | Node.js 22, Fastify, better-sqlite3, Postgres (可选) | | 安全 | AES-256-GCM, JWT, bcrypt, SHA-256 | | AI 提供商 | Anthropic, OpenAI, Gemini, Ollama, Azure OpenAI, 自定义 | | 支付 | Stripe (仅限云端) | | 测试 | Vitest (468 个通过) | ## 安全 向 [security@geteudora.com](mailto:security@geteudora.com) 报告漏洞或参见 [SECURITY.md](SECURITY.md)。 ## 许可证 MIT。参见 [LICENSE](LICENSE)。
标签:AI治理, LLM代理网关, LLM集成, MITM代理, Prompt注入检测, 审计日志, 数据防泄漏(DLP), 测试用例, 自定义脚本, 请求拦截, 逆向工具, 零日漏洞检测