Serverless中的有状态Agent:Lambda + S3 + DynamoDB的Claude Agent实现

一个朋友分享一下他的大作,我觉得这个Agent+Serverless架构在工程层面是一个很棒的实现,希望各位佬友能够指教.

省流

一种远程部署Agent的方法:
基于FileSystem持久化的无状态容器Agent部署架构.
实现Serverless部署有状态Agent,基本无单点故障,成本500-1000刀/月降到30刀/月
让Agent无痛上云而不必要单点部署!

项目源码

项目简介

为了解决部署AI Agent的两难问题:

  • 单机部署有状态但“不容易负载均衡”“成本高”“各个功能耦合”问题.
  • Serverless便宜,很多即开即用的组件,不需要管理底层架构,但每次调用丢失状态(对话历史等)。

本项目实现Lambda + S3 + DynamoDB来部署Claude Agent,实现成本30刀/月的有状态Agent,彻底解决以上问题。

这个架构打破了"Serverless=无状态"的固有观念。通过在S3中维持会话历史,Lambda获得了有状态Agent的能力,同时保持按需计费的成本优势。

状态管理不需要绑定在容器上,可以与计算完全分离。结合DynamoDB的映射、S3的持久化、Lambda的弹性计算,用更少的钱,更耦合的组件实现了更好的可靠性。

适用场景

  • Telegram/微信/Slack Bot(本项目用TelegramBot做示例的,Client还可以实现其他)
  • SaaS应用中的AI助手(需要重新写Client)
  • 多租户平台

Agent为什么难以Serverless化

Claude Agent SDK需要维护对话状态,与无状态API完全不同:

  • 每个Agent需要持久shell、工作目录、完整对话树
  • Lambda环境是无状态的:每次调用都是干净环境,/tmp会被清空
  • 官方推荐四种部署模式中,Hybrid Sessions(临时容器+状态恢复)成本最优

项目框架(这个只是当前我需要集成到TG,各位大佬如果有需要可以把Client改为其他客户端.欢迎Fork或者提PR来兼容更多客户端!)

Telegram User → Bot API → API Gateway → Producer Lambda → SQS Queue → Consumer Lambda
                                              ↓                            ↓
                                        Return 200              agent-server Lambda
                                        immediately                        ↓
                                              DynamoDB (Session mapping) + S3 (Session files) + Bedrock (Claude)

参考

1 个赞

耶耶耶耶:+1::+1::+1::+1: