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)
[](.github/workflows/ci.yml)
[](docs/self-hosting.md)






## 快速开始
**前置条件:** 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。
## 截图
**命令中心**

**工作流构建器** (React Flow 画布,fetch URL,agent 节点,运行历史)

**审计日志与合规报告** (SHA-256 签名的 PDF 导出)

## 记录内容
每个请求都会生成一条轨迹记录:
```
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), 测试用例, 自定义脚本, 请求拦截, 逆向工具, 零日漏洞检测