lambdagent 是 agent 的形式化 DSL 与执行引擎(计算内核)。 AgentPaaS 是将 lambdagent 包装为生产级 PaaS 平台的服务层。
类比:lambdagent 之于 AgentPaaS,如同 V8 之于 Node.js,如同 CPython 之于 Django。
用户/开发者
│
▼
┌─────────────────────────────────┐
│ AgentPaaS (平台服务层) │ ← 本项目
│ API Gateway / Dashboard / CLI │
│ 调度 · 隔离 · 监控 · 计费 │
├─────────────────────────────────┤
│ lambdagent (计算内核) │ ← 已有项目
│ DSL · β-归约 · ReAct · MCP │
└─────────────────────────────────┘
将 YAML 定义的 agent 暴露为 HTTP/WebSocket API。
POST /v1/agents/{id}/run — 同步执行POST /v1/agents/{id}/jobs — 异步提交,返回 job_idPOST /v1/agents/{id}/stream — SSE 流式输出/v1/agents/{id}/ws — 双向交互(适合多轮对话 agent)/v1/agents/{id}@v2/run)Agent 的全生命周期管理。
对 lambdagent β-归约引擎的生产级封装。
| 层次 | 选型 | 理由 |
|---|---|---|
| API Framework | FastAPI | 原生 async、自动 OpenAPI 文档、与 Python 生态契合 |
| Task Queue | Celery + Redis | 成熟稳定,支持优先级、重试、结果后端 |
| Database | PostgreSQL | Agent 注册、执行历史、租户数据 |
| Cache | Redis | Session、限流计数器、热点配置 |
| Observability | OpenTelemetry + Prometheus | 业界标准,生态丰富 |
| Container | Docker + K8s | Agent 沙箱隔离、弹性伸缩 |
| Auth | OAuth 2.0 / JWT | 标准化,支持第三方身份提供者 |
agentpaas/
├── api/ # FastAPI 路由
│ ├── v1/
│ │ ├── agents.py # Agent CRUD + 执行
│ │ ├── jobs.py # 异步任务管理
│ │ ├── auth.py # 认证端点
│ │ └── admin.py # 管理端点
│ └── middleware/
│ ├── auth.py # JWT/API Key 验证
│ ├── rate_limit.py # 限流
│ └── tenant.py # 租户上下文注入
├── engine/ # 执行引擎
│ ├── scheduler.py # 任务调度
│ ├── sandbox.py # 沙箱隔离
│ ├── worker.py # Celery worker
│ └── stream.py # SSE/WebSocket 流式
├── registry/ # Agent 注册中心
│ ├── store.py # Agent 持久化
│ ├── version.py # 版本管理
│ └── discovery.py # A2A 服务发现
├── tenant/ # 多租户
│ ├── models.py # 租户/用户/角色模型
│ ├── isolation.py # 数据隔离
│ └── quota.py # 配额管理
├── observability/ # 可观测性
│ ├── tracing.py # OpenTelemetry 集成
│ ├── metrics.py # Prometheus 指标
│ └── logging.py # 结构化日志
├── secrets/ # 密钥管理
│ ├── vault.py # 加密存储
│ └── env.py # 环境变量绑定
├── billing/ # 计费
│ ├── metering.py # Token 计量
│ └── report.py # 用量报告
├── dashboard/ # Web UI(可选,后期)
│ └── ...
├── cli/ # 管理 CLI
│ └── main.py
├── config.py # 全局配置
├── models.py # SQLAlchemy/Pydantic 模型
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
└── README.md
AgentPaaS 将 lambdagent 作为 核心依赖,不修改其代码:
# agentpaas 调用 lambdagent 的方式
from lambdagent import from_config, Runtime, Context
# 1. 从注册中心加载 agent YAML
agent_yaml = registry.get_agent(agent_id, version)
# 2. 编译为 Lambda Term
term = from_config(agent_yaml)
# 3. 构建执行上下文(注入租户密钥、配额限制等)
ctx = Context()
ctx.set("api_key", secrets.get(tenant_id, "openai_key"))
ctx.set("max_tokens", quota.remaining(tenant_id))
# 4. 在沙箱中执行 β-归约
result = await sandbox.run(Runtime().reduce, term, ctx)
# 5. 记录 trace、metrics、billing
tracing.record(ctx.trace)
metrics.record_tokens(ctx.total_tokens)
billing.record(tenant_id, ctx.total_tokens, model)