Files
agent/docs/production-roadmap.md

3.1 KiB
Raw Permalink Blame History

从课堂 MVP 到生产 Harness

目标架构

flowchart LR
  Web --> Gateway[Gateway / Auth / CSRF / Rate Limit]
  Gateway --> API[Stateless API]
  API --> DB[(Postgres)]
  API --> Redis[(Redis Streams / Locks)]
  API --> KMS[KMS / Secret Manager]
  API --> Blob[Object Storage]
  Redis --> Workers[Agent Workers]
  Workers --> Sandbox[Per-run Container / microVM]
  Sandbox --> Egress[Egress Proxy / Allowlist]
  Workers --> Audit[Immutable Audit Log]
  Redis --> SSE[Distributed SSE Gateway]
  SSE --> Web

阶段 1:身份与持久化

  • 引入用户、组织、Session 所有权与 RBAC。
  • Postgres 保存 Session、Run、Message、Event、ToolCall 和 Approval 的不可变记录。
  • 以 (session_id, sequence) 唯一约束保证事件顺序;命令使用幂等键。
  • Redis 保存短期锁、队列和 fan-out,避免同 Session 多 Worker 并发。
  • 为迁移和清理任务定义明确的数据保留周期。

阶段 2:凭证与 Web 安全

  • API Key 进入 KMS / Secret Manager,应用只持有短期解密结果。
  • OAuth 或短期 provider token 优先于长期静态密钥。
  • Secure、HttpOnly、SameSite cookie;CSRF token;严格 CSP 与 frame-ancestors。
  • 对 Session、模型测试、消息、上传和审批分别限速并设置租户配额。
  • 所有错误响应使用稳定 code,不回显 provider body 或敏感 headers。

阶段 3:文件与执行隔离

  • 原图和规范化图进入私有对象存储,使用租户前缀、服务端加密和生命周期规则。
  • 图片扫描、解码超时、内存限制和异步规范化。
  • 每个 run 在低权限容器或 microVM 内执行;只挂载该 Session 工作区。
  • 使用只读根文件系统、CPU/内存/文件数/时长配额、seccomp 和无特权用户。
  • 出站流量经过代理,只允许已批准的模型域名;禁止 metadata 和横向内网访问。

阶段 4:可靠 Agent 运行

  • Durable queue 驱动 run 状态机,Worker 崩溃后可重试或终止。
  • Approval request 持久化并使用 compare-and-set 解决重复、冲突和超时竞态。
  • 工具 side effect 使用幂等键或事务 outbox;审批不等于可以重复执行。
  • 版本化 Prompt、Skill、模型配置和工具 schema,以便重放与审计。
  • 对 token、费用、延迟、tool error、approval time 和 cancellation 建立指标。

阶段 5:分布式事件与审计

  • Redis Streams、Kafka 或数据库 outbox 发布事件。
  • SSE Gateway 按租户鉴权、从持久 cursor 重放,并支持跨实例 fan-out。
  • 审计日志记录操作者、决策、策略版本、输入摘要和 side effect,不记录秘密或原始敏感内容。
  • 定期验证删除任务确实清除了数据库、对象存储、缓存、凭证与 Sandbox volume。

上线门槛

生产发布前需要威胁建模、依赖与镜像扫描、SSRF/路径/上传模糊测试、故障注入、备份恢复演练、租户逃逸测试和第三方安全评审。课堂测试套件应保留,并新增真实 provider 的隔离式 smoke test;后者不能进入默认 CI,也不能使用个人密钥。