标题: Serverless中的有状态Agent:Lambda + S3 + DynamoDB的Claude Agent实现
作者: #fliper
板块: #开发调优
编号:
帖子: https://linux.do/t/topic/1407571
时间: 2026-01-05 15:33:43
摘要:
作者: #fliper
板块: #开发调优
编号:
1407571帖子: https://linux.do/t/topic/1407571
时间: 2026-01-05 15:33:43
摘要:
Serverless中的有状态Agent:Lambda + S3 + DynamoDB的Claude Agent实现
项目源码
github.com
GitHub - BukeLy/Stateless-FileSystem-Agent: Serverless AI Agent built on Claude Agent SDK with...
Serverless AI Agent built on Claude Agent SDK with stateful session persistence via S3+DynamoDB
项目简介
为了解决部署AI Agent的两难问题:
单机部署有状态但成本500-1000刀/月
Serverless便宜但每次调用丢失对话历史。
本项目实现Lambda + S3 + DynamoDB的Hybrid Sessions架构,实现成本$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(临时容器+状态恢复)成本最优
项目框架
三层存储分离
graph LR
subgraph DynamoDB [DynamoDB映射层]
d_chat[chat_id:thread_id] --> d_session[session_id]
end
subgraph S3 [S3持久层]
s_root[session_id/]
s_root --> s_conv[conversation.jsonl]
s_root --> s_debug[debug.txt]
s_root --> s_todos[todos.json]
end
subgraph Lambda [Lambda /tmp执行层]
l_root[/.claude-code/]
l_root --> l_projects[projects/]
l_root --> l_config[配置文件]
l_root --> l_sessions[会话文件]
end
d_session --> s_root
d_session --> l_root
DynamoDB:存储chat_id:thread_id → session_id映射,仅7个字段(session_key, session_id, chat_id, thread_id, created_at, updated_at, ttl),查询<5ms
新会话:无映射,创建新session_id
既存会话:查询到session_id,触发S3恢复
S3:存储session文件(conversation.jsonl + debug + todos),按session_id分组
conversation.jsonl:JSONL格式的对话历史(append-only),SDK恢复依赖此文件
支持无限会话数,天然多租户隔离
/tmp/.claude-code:Lambda临时工作目录
启动时:从Docker镜像复制agents.json、mcp.json、skills等静态配置
处理请求时:从S3下载该会话的conversation.jsonl
SDK指向此目录(CLAUDE_CONFIG_DIR=/tmp/.claude-code)
请求完毕:/tmp销毁,所有文件消失
核心机制:CLAUDE_CONFIG_DIR + Session Resume
启动阶段
# Lambda容器启动时(所有请求共享)
os.environ['CLAUDE_CONFIG_DIR'] = '/tmp/.claude-code'
shutil.copytree('/opt/claude-config', '/tmp/.claude-code')
# 现在/tmp/.claude-code包含: agents.json, mcp.json, system_prompt.md, skills/
请求处理(每次调用)
# Step 1: 查询DynamoDB
session_id = dynamodb.get_session_id(chat_id, thread_id)
# Step 2: 若已存在,从S3恢复会话文件
if session_id:
s3.download_file(f'sessions/{session_id}/conversation.jsonl')
# 复制到/tmp/.claude-code/projects/-tmp-workspace/agent-{session_id}.jsonl
# Step 3: 调用SDK处理消息
result = await query(
prompt=user_message,
options=ClaudeAgentOptions(
resume=session_id, # None=新建, str=恢复
cwd='/tmp/workspace',
# ...其他配置
)
)
# SDK自动从conversation.jsonl恢复对话树,基于完整历史生成回复
# Step 4: SDK返回新的session_id(首次)或更新后的对话文件
session_id = result.session_id
# Step 5: 保存映射和上传文件
dynamodb.save_session_id(chat_id, thread_id, session_id)
s3.upload_file(f'/tmp/.claude-code/projects/-tmp-workspace/agent-{session_id}.jsonl',
f'sessions/{session_id}/conversation.jsonl')
参考:
Claude Agent SDK Hosting
Session Management
标题: 可否加入浏览记录功能
作者: #RedFox
板块: #运营反馈
编号:
帖子: https://linux.do/t/topic/1407574
时间: 2026-01-05 15:34:28
摘要:
作者: #RedFox
板块: #运营反馈
编号:
1407574帖子: https://linux.do/t/topic/1407574
时间: 2026-01-05 15:34:28
摘要:
前两天刚看过的帖子,今天想起来想再次看下,结果找了半天没找到
所以,能不能加入浏览记录功能,不是简单的统计
标题: 江苏移动 50g流量月包
作者: #cherishd
板块: #福利羊毛
编号:
帖子: https://linux.do/t/topic/1407575
时间: 2026-01-05 15:34:44
摘要:
作者: #cherishd
板块: #福利羊毛
编号:
1407575帖子: https://linux.do/t/topic/1407575
时间: 2026-01-05 15:34:44
摘要:
https://wap.js.10086.cn/mb_nact/new/act-front/cj/cjklh/main.html?actNum=WJDC00016075xmhq93c
标题: 关于《聊天频道》功能……是没开放吗?
作者: #蹲神
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1407581
时间: 2026-01-05 15:34:52
摘要:
作者: #蹲神
板块: #搞七捻三
编号:
1407581帖子: https://linux.do/t/topic/1407581
时间: 2026-01-05 15:34:52
摘要:
看到这个功能,一直没用过……
是相当于微信群、QQ群这样的功能?
但是好像不能创建频道……
想知道要怎样才能创建频道呢?感觉可以开一些小分类小爱好的群组频道,聊聊唠嗑分享一下也挺好的
标题: 香港三所高校的图书馆,联合把自家出版社出版的中文学术书籍正式开放下载
作者: #张三
板块: #前沿快讯
编号:
帖子: https://linux.do/t/topic/1407586
时间: 2026-01-05 15:35:28
摘要:
作者: #张三
板块: #前沿快讯
编号:
1407586帖子: https://linux.do/t/topic/1407586
时间: 2026-01-05 15:35:28
摘要:
Open Books Hong Kong
Open Books Hong Kong
造訪文章以瞭解更多資訊。
标题: 弹幕小组件 for ldlive
作者: #丛雨
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1407593
时间: 2026-01-05 15:38:45
摘要:
作者: #丛雨
板块: #搞七捻三
编号:
1407593帖子: https://linux.do/t/topic/1407593
时间: 2026-01-05 15:38:45
摘要:
暂时不支持头像显示,因为L站的同源策略不允许我加载头像,而且也没法指望obs浏览器过盾。拉取头像是需要过盾的,如果有什么第三方api能获取头像的不胜感激了。
效果如下:
特点
单页应用,不需要后端或者客户端,直接使用obs浏览器即可
背景透明,适配obs浏览器,响应式设计,自动适配obs浏览器的宽高
到底部自动滚动
立即开始使用!
danmaku.murasame-sama.de
弹幕查看器
也支持非交互模式进行设置
# 自动设置房间id跳过设置界面
https://danmaku.murasame-sama.de/?id=murasame
# 自动设置房间id跳过设置界面,并且轮询率为5000毫秒
https://danmaku.murasame-sama.de/?id=murasame&poll=5000
标题: Cloudflare Radar《2025 年度回顾》
作者: #蛙蛙
板块: #前沿快讯
编号:
帖子: https://linux.do/t/topic/1407598
时间: 2026-01-05 15:40:13
摘要:
作者: #蛙蛙
板块: #前沿快讯
编号:
1407598帖子: https://linux.do/t/topic/1407598
时间: 2026-01-05 15:40:13
摘要:
发现了个好玩的统计
https://radar.cloudflare.com/zh-cn/year-in-review/2025
截几张中国的数据
一些全球的一些数据
标题: 大家跟长辈视频要用方言
作者: #支付宝宝
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1407629
时间: 2026-01-05 15:48:54
摘要:
作者: #支付宝宝
板块: #搞七捻三
编号:
1407629帖子: https://linux.do/t/topic/1407629
时间: 2026-01-05 15:48:54
摘要:
图中的UP小雪,四川妹子,她的普通话带川音,AI自动翻出来的英语几乎完全是她的音色,四川英语。
所以现在,你一张照片,你的一段音频,就能合成逼真的视频然后去骗长辈的钱。像我老家,隔壁镇的话都听不懂,用方言就没这个问题
交待家里人,不会用普通话跟他们视频,当然北方那边本来就是普通话的比较难搞。
标题: 有佬知道现在话费的便宜渠道吗?
作者: #LX
板块: #搞七捻三
编号:
帖子: https://linux.do/t/topic/1407634
时间: 2026-01-05 15:50:42
摘要:
作者: #LX
板块: #搞七捻三
编号:
1407634帖子: https://linux.do/t/topic/1407634
时间: 2026-01-05 15:50:42
摘要:
现在每个月话费感觉都是一大笔支出,看各位佬有没有知道便宜的渠道?前提要靠谱呀