当前位置: 首页 > news >正文

OpenClaw + Bedrock AgentCore SDK 实战:AI Agent 从开发到生产的完整路径

手里有个跑得好好的 OpenClaw Agent,想搬到 AWS 上让它自动扩缩、有监控有告警?Amazon Bedrock AgentCore 就是干这个的——把任意框架的 AI Agent 变成生产级应用,不用自己管服务器。

这篇走一遍完整流程:本地 OpenClaw Agent → AgentCore SDK 封装 → 部署到 AgentCore Runtime → 调用测试。

AgentCore 是什么

Amazon Bedrock AgentCore 是亚马逊云科技 2026 年推出的 Agent 托管平台。核心卖点:

  • 框架无关:Strands、LangGraph、CrewAI、Autogen,甚至自己写的框架都行
  • 零基础设施:不用管服务器、容器、扩缩容
  • 企业级能力:内置认证、记忆持久化、可观测性、安全隔离

GitHub 上 Python SDK 已经 600 多颗星(aws/bedrock-agentcore-sdk-python),今天还在活跃更新。

环境准备

# 创建项目
mkdir openclaw-agentcore && cd openclaw-agentcore
python3 -m venv .venv && source .venv/bin/activate# 安装依赖
pip install bedrock-agentcore strands-agents bedrock-agentcore-starter-toolkit# 验证
agentcore --help

需要的 AWS 权限:

  • bedrock:InvokeModel(调模型)
  • AgentCore Runtime 相关权限(starter toolkit 会自动处理)

写 Agent 代码

agentcore create 脚手架生成项目骨架:

agentcore create
# 选择框架:Strands Agents
# 项目名:openclaw-agent
# 模型:Claude Sonnet 4.0

生成的目录结构:

openclaw-agent/
├── agent.py              # Agent 核心逻辑
├── .bedrock_agentcore.yaml  # AgentCore 配置
├── requirements.txt
└── tools/                # 自定义工具

核心代码 agent.py

from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agentapp = BedrockAgentCoreApp()@app.entrypoint
async def handler(request):prompt = request.get("prompt")agent = Agent()  # 默认用 Bedrock Claudeasync for event in agent.stream_async(prompt):yield eventapp.run()

这段代码做了三件事:

  1. 创建 AgentCore 应用实例
  2. 定义入口函数,接收请求、创建 Agent、流式返回结果
  3. 启动应用

本地测试

# 确保 AWS 凭证已配置
aws configure list# 本地运行
agentcore dev# 另一个终端测试
curl -X POST http://localhost:8080/invoke \-H "Content-Type: application/json" \-d '{"prompt": "帮我写一个 Python 快速排序"}'

开启可观测性

AgentCore 原生支持 OpenTelemetry,一行配置搞定:

# .bedrock_agentcore.yaml
observability:enabled: truetraces:export_to: cloudwatch

部署后自动把 trace 发到 Amazon CloudWatch,可以在控制台看到每次请求的完整调用链。

部署到 AgentCore Runtime

# 一条命令部署
agentcore deploy

这条命令会:

  1. 打包 Agent 代码和依赖
  2. 上传到 AgentCore Runtime
  3. 配置自动扩缩容
  4. 返回调用端点

部署完成后拿到端点 URL。

调用已部署的 Agent

import boto3
import jsonclient = boto3.client('bedrock-agentcore-runtime')response = client.invoke_agent(agentId='your-agent-id',sessionId='test-session-001',inputPayload=json.dumps({'prompt': '用 Amazon S3 存日志有什么注意事项?'})
)for event in response['outputStream']:print(event.get('chunk', {}).get('bytes', b'').decode())

记忆持久化

AgentCore 内置 Memory 服务,Agent 可以跨会话记住上下文:

from bedrock_agentcore.memory import MemoryClientmemory = MemoryClient()# 存储
await memory.put(namespace="user-123",key="preferences",value={"language": "zh-CN", "style": "concise"}
)# 读取
prefs = await memory.get(namespace="user-123", key="preferences")

不用自己搭 Redis 或 DynamoDB,AgentCore 托管存储。

Gateway:把 API 变成 MCP 工具

AgentCore Gateway 可以把现有 REST API 自动转成 MCP 工具,Agent 直接调用:

# gateway-config.yaml
tools:- name: get_weathersource:type: httpurl: https://api.weather.com/v1/currentmethod: GETparameters:- name: citytype: stringrequired: true

这样 Agent 就能直接说"查一下北京天气",Gateway 自动调 API。

成本

AgentCore Runtime 按调用次数和运行时长计费,不用的时候不花钱(缩到 0)。对比自己跑 EC2:

方案 月成本(估算) 运维负担
EC2 t4g.small 全天跑 ~$12 需要自己管
AgentCore Runtime 按调用付费 零运维

低频调用场景下 AgentCore 更划算。

踩坑记录

  1. Python 版本:需要 3.10+,3.9 会报 asyncio 兼容问题
  2. IAM 权限:首次部署需要 bedrock-agentcore:* 权限,正式环境记得收窄
  3. 模型访问:确保在 Bedrock 控制台开启了目标模型的访问权限
  4. 冷启动:首次调用有 5-10 秒冷启动,后续请求毫秒级

Amazon Bedrock AgentCore 文档:https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/
AgentCore Python SDK:https://github.com/aws/bedrock-agentcore-sdk-python
Strands Agents:https://strandsagents.com/latest/
OpenClaw:https://github.com/openclaw/openclaw

http://www.jsqmd.com/news/563942/

相关文章:

  • Qwen All-in-One效果实测:情感分析与对话生成,一个模型全搞定
  • 告别Melodic自带的老版本!保姆级教程:在Ubuntu 18.04上从Gazebo9升级到Gazebo11
  • VQF算法实战剖析:为什么它的‘近惯性系低通滤波’能吊打传统互补滤波?
  • 手把手教你用ABB机器人安全区域功能:与发那科干涉区设置的对比实操
  • 2026年PVC工作牌应用白皮书四川市场选型参考:四川PVC工作牌公司/四川PVC工作证公司/四川UV水晶标公司/选择指南 - 优质品牌商家
  • 手把手教你用DeepLabV3+(含Decoder)搞定PASCAL VOC图像分割,附TensorFlow代码
  • 别光看芯片!手把手教你用XC7A100T核心板搭建一个千兆网+光纤通信的硬件原型
  • 高速PCB设计必看:阻焊层和助焊层的5个常见误区及解决方法
  • UE5 - 动态材质与电子围栏:ArchvizExplorer与Map Border Collection的深度整合
  • 从图像到点云:手把手教你用OrbbecSDK_ROS2玩转深度相机数据(附RViz2可视化与常用服务调用)
  • 别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别
  • 车载激光雷达设计:如何用1550nm单模光纤优化空间光耦合(含F数、MFD选型指南)
  • 2026年知名的猫窝骨架玻纤杆/东莞玻纤/东莞玩具支撑杆玻纤推荐公司 - 行业平台推荐
  • Qt实战:用QWebEngineView打造一个带多标签页的简易浏览器(附完整源码)
  • TeXstudio 4.9.3:开源 LaTeX 编辑器新升级
  • Fay数字人框架终极指南:30分钟打造你的AI虚拟助手
  • 手把手教你用Docker部署Qwen2.5-7B,体验vLLM推理加速的魅力
  • Qwen2.5-72B-GPTQ-Int4部署教程:离线环境无网络安装与证书配置
  • Realistic Vision V5.1 GPU显存碎片整理:避免OOM的torch.cuda.memory_summary实践
  • 2026年知名的景观护栏/庭院护栏生产厂家推荐 - 行业平台推荐
  • Unity游戏性能优化第一步:用SystemInfo类摸清玩家电脑的‘家底’(附完整代码)
  • 2026年质量好的大载重金属周转箱/宁波金属周转箱生产厂家推荐 - 行业平台推荐
  • Python入门:从零开始使用LiuJuan20260223Zimage
  • UI-TARS-desktop效果实测:AI智能体自动执行任务,效率提升看得见
  • FigmaCN:打破语言壁垒的终极中文界面解决方案
  • uView Input前后槽实战:5分钟搞定搜索框+验证码组合
  • Kandinsky-5.0-I2V-Lite-5s国产适配:昇腾/海光平台移植可行性分析
  • 内存价格回调:算法突破引发市场连锁反应
  • EVA-01开箱即用:体验炫酷机甲界面下的硬核图纸分析能力
  • foobar2000皮肤焕新:用foobox-cn打造沉浸式音乐体验