本文档描述 Enterprise 层的技术实现细节,包括认证、审计、多租户等模块的设计和接口。
相关文档:
Enterprise 层提供组织级功能,包括认证、审计、多租户支持等。单向依赖 Core 层,通过扩展点集成。
┌─────────────────────────────────────────────────┐
│ Integrations Layer (integrations/) │
│ - 第三方平台集成(飞书、Slack 等) │
│ - 依赖:Core + Enterprise │
└────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Enterprise Layer (enterprise/) │
│ - 组织功能(认证、审计、多租户) │
│ - 依赖:Core │
└────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Core Layer (agent/) │
│ - 核心 Agent 能力 │
│ - 零外部依赖 │
└─────────────────────────────────────────────────┘
enterprise/
├── gateway/ # 网关层
│ ├── middleware.py # 中间件基类
│ ├── auth.py # 认证中间件
│ ├── audit.py # 审计中间件
│ ├── rate_limit.py # 限额中间件
│ └── router.py # 企业级路由
│
├── auth/ # 认证系统
│ ├── providers/ # 认证提供者
│ │ ├── api_key.py # API Key 认证
│ │ ├── jwt.py # JWT 认证
│ │ └── oauth.py # OAuth 认证
│ ├── models.py # User, APIKey, Role
│ └── permissions.py # 权限检查
│
├── audit/ # 审计系统
│ ├── logger.py # 审计日志记录器
│ ├── events.py # 事件定义
│ ├── storage.py # 存储接口
│ └── query.py # 日志查询
│
└── multi_tenant/ # 多租户支持
├── tenant.py # 租户管理
├── isolation.py # 数据隔离
└── quota.py # 配额管理
位置:agent/trace/api.py:TraceAPI.__init__
class TraceAPI:
def __init__(
self,
trace_store: TraceStore,
runner: Optional[AgentRunner] = None,
middlewares: Optional[List[Callable]] = None # 扩展点
)
用途:在 API 入口注入认证、审计、限额等中间件
Enterprise 实现:
enterprise/gateway/auth.py:auth_middlewareenterprise/gateway/audit.py:audit_middlewareenterprise/gateway/rate_limit.py:rate_limit_middleware位置:agent/core/runner.py:AgentRunner.__init__
class AgentRunner:
def __init__(
self,
trace_store: TraceStore,
hooks: Optional[Dict[str, List[Callable]]] = None # 扩展点
)
钩子类型:
trace.created:Trace 创建后llm.called:LLM 调用后trace.completed:Trace 完成后tool.executed:工具执行后Enterprise 实现:
enterprise/audit/hooks.py:audit_trace_createdenterprise/audit/hooks.py:audit_llm_calledenterprise/audit/hooks.py:audit_trace_completed位置:agent/core/runner.py:RunConfig.context
@dataclass
class RunConfig:
context: Optional[Dict[str, Any]] = None # 扩展点
用途:传递用户身份、权限、来源等信息
Context 结构:
{
"user_id": "user_123",
"org_id": "company",
"role": "member",
"source": "feishu",
"ip": "192.168.1.100"
}
格式:ak_{org_id}_{user_id}_{random}
示例:ak_company_user123_a1b2c3d4
数据模型:
CREATE TABLE api_keys (
id TEXT PRIMARY KEY,
key_hash TEXT UNIQUE,
user_id TEXT REFERENCES users(id),
org_id TEXT,
name TEXT,
scopes JSON,
rate_limit INTEGER,
expires_at TIMESTAMP,
last_used_at TIMESTAMP,
created_at TIMESTAMP
);
实现位置:enterprise/auth/providers/api_key.py
流程:
user_open_id数据模型:
CREATE TABLE feishu_users (
feishu_user_id TEXT PRIMARY KEY,
system_user_id TEXT REFERENCES users(id),
org_id TEXT,
department_id TEXT,
name TEXT,
created_at TIMESTAMP
);
实现位置:integrations/feishu/auth.py
| 角色 | 权限 |
|---|---|
| admin | 所有权限 |
| member | 查询代码库、创建 Trace、读写知识 |
| viewer | 只读权限 |
实现位置:enterprise/auth/permissions.py
| 类型 | 文件 | 内容 |
|---|---|---|
| 操作审计 | audit.jsonl | API 调用、资源访问、配置修改 |
| 成本审计 | cost.jsonl | Token 消耗、API 调用成本 |
| 安全审计 | security.jsonl | 认证失败、权限拒绝、异常访问 |
| 知识审计 | knowledge.jsonl | 知识的创建、修改、查询 |
{
"id": "audit_001",
"timestamp": "2026-03-04T02:30:00Z",
"user_id": "user_123",
"org_id": "company",
"action": "trace.create",
"resource_type": "trace",
"resource_id": "trace-abc-123",
"status": "success",
"tokens_used": 1500,
"cost": 0.015,
"metadata": {}
}
auth.*:认证相关事件trace.*:Trace 生命周期事件knowledge.*:知识操作事件permission.denied:权限拒绝事件实现位置:
enterprise/audit/logger.py:日志记录器enterprise/audit/events.py:事件定义enterprise/audit/storage.py:存储接口用户级:
组织级:
实现位置:
enterprise/gateway/rate_limit.py:限额中间件enterprise/multi_tenant/quota.py:配额管理org_id 过滤实现位置:enterprise/multi_tenant/isolation.py
# config/enterprise.yaml
enterprise:
enabled: true
auth:
providers:
- api_key
- feishu_oauth
audit:
enabled: true
log_dir: ./workspace/audit
retention_days: 90
rate_limit:
enabled: true
default_quota:
calls_per_day: 1000
tokens_per_day: 100000
from agent.core.runner import AgentRunner
runner = AgentRunner(trace_store=store)
from agent.core.runner import AgentRunner
from enterprise.gateway.router import EnterpriseRouter
# 创建 Runner(带钩子)
runner = AgentRunner(
trace_store=store,
hooks={
"trace.created": [audit_trace_created],
"llm.called": [audit_llm_called]
}
)
# 创建企业级 Router(带中间件)
router = EnterpriseRouter(
runner=runner,
auth_config=auth_config,
audit_config=audit_config
)
[project.optional-dependencies]
enterprise = [
"fastapi>=0.100.0",
"sqlalchemy>=2.0.0",
"redis>=5.0.0",
"pyjwt>=2.8.0",
]
| 模块 | 状态 | 实现位置 |
|---|---|---|
| 中间件基类 | 规划中 | enterprise/gateway/middleware.py |
| API Key 认证 | 规划中 | enterprise/auth/providers/api_key.py |
| 审计日志 | 规划中 | enterprise/audit/logger.py |
| 限额控制 | 规划中 | enterprise/gateway/rate_limit.py |
| 多租户支持 | 规划中 | enterprise/multi_tenant/ |