亚马逊AWS官方博客

用 Kiro构建 AI:基于 AWS 基础设施快速构建企业级 Agentic AI 平台

摘要:我们如何用 Kiro(AI IDE)完成全流程开发,基于 Strands Agents 框架、Amazon Bedrock AgentCore 和 AWS 基础设施,在一周内构建了一个能交付实际产出的 AI Agent 平台——全程零人工编码。


一、为什么需要 “能交付” 的 AI Agent?

大多数 AI 聊天产品止步于对话——你问一个问题,得到一段文字,然后就没有然后了。但企业场景需要的不是聊天,而是产出:一份架构图、一个部署好的网页、一份账单分析报告、一段可执行的代码。

这正是我们构建这个 AI Agent 平台的出发点。我们希望用户用自然语言描述需求,Agent 直接产出可交付的成果——图片、视频、文档、数据分析、部署好的静态网站,甚至 AWS 架构图。

图:平台主界面——左侧为会话列表和功能导航,右侧为 Agent 对话区域,实时展示工具调用进度和交付物产出。

[图:平台主界面——左侧为会话列表和功能导航,右侧为 Agent 对话区域,实时展示工具调用进度和交付物产出。]

挑战不在于 “做一个 Agent”,而在于让它在生产环境中可靠运行:自动扩缩容、安全的代码执行沙箱、跨会话的记忆持久化、多工具的编排协调。如果从零搭建这些能力,至少需要数月。

我们的答案是三层运行时架构:Strands AgentsAgent 框架)+ Amazon Bedrock AgentCore(运行时 + 记忆 + 沙箱)+ AWS Cloud Development Kit (AWS CDK)(基础设施即代码)。

而更关键的是——整个平台从需求到上线,全程由 AI 完成开发。

二、开发层:用 Kiro 完成全流程开发

这个项目最值得分享的一点是:从需求整理、架构设计、任务拆分、代码开发、测试到部署,全部由 KiroAWS 推出的 AI IDE)完成,全程不需要人工编写代码。

这不是 “AI 辅助开发”,而是真正的 AI 驱动开发——人类负责描述意图和验收结果,Kiro 负责从意图到代码的全链路执行。

2.1 Spec-Driven Development:从模糊想法到可执行任务

Kiro 的核心工作流是 Spec-Driven Development(规格驱动开发)。我们只需要用自然语言描述想要什么,Kiro 会自动生成三层规格文档:

第一步:需求文档 (Requirements)

我们告诉 Kiro:“构建一个 delivery-focused AI Agent 平台,用户通过对话让 Agent 产出图片、视频、文档、网页等交付物。后端用 FastAPI + Strands Agents,其中Strands Agents部署在 AgentCore Runtime 上。”

Kiro 自动生成了结构化的需求文档,包含用户故事、验收标准和技术约束:

### Requirement 1: User Authentication
**User Story:** As a user, I want to sign in with my Google account,
so that I can securely access my personal workspace and deliverables.

### Requirement 3: Agent Tool Integration
**User Story:** As a user, I want the Agent to execute code, browse web,
generate images/videos, and deploy web pages...
图:Kiro Spec-Driven Development 自动生成的需求文档,包含结构化的用户故事、验收标准和技术约束。

[图:Kiro Spec-Driven Development 自动生成的需求文档,包含结构化的用户故事、验收标准和技术约束。]

第二步:技术设计 (Design)

需求确认后,Kiro 自动生成技术设计文档——数据库 schemaAPI 接口定义、组件架构、时序图:

## Architecture
The architecture follows a three-tier design:
1. Frontend: React-based SPA for user interaction
2. Backend API: FastAPI server handling authentication and API routing
3. Agent Runtime: Strands Agent deployed on AgentCore Runtime
图:Kiro 根据需求自动生成的技术设计文档,涵盖系统架构、数据库 Schema、API 接口定义和组件交互时序。

[图:Kiro 根据需求自动生成的技术设计文档,涵盖系统架构、数据库 Schema、API 接口定义和组件交互时序。]

第三步:任务拆分 (Tasks)

设计完成后,Kiro 将整个项目拆分为可执行的增量任务,每个任务关联对应的需求:

- [x] 1.1 Initialize frontend project with React, TypeScript, and TailwindCSS
- [x] 1.2 Initialize backend project with FastAPI
- [x] 1.3 Set up database schemas and connections
- [x] 1.4 Set up Redis connection and utilities
- [x] 2.1 Implement Google OAuth authentication flow
- [x] 3.1 Implement Strands Agent with BedrockModel
- [x] 3.2 Implement Code Interpreter tool with AgentCore
...
图:Kiro 根据需求和设计文档自动拆分的增量任务列表,每个任务关联对应的需求编号,按依赖顺序逐个执行直到全部完成。

[图:Kiro 根据需求和设计文档自动拆分的增量任务列表,每个任务关联对应的需求编号,按依赖顺序逐个执行直到全部完成。]

然后 Kiro 按顺序逐个执行这些任务——编写代码、创建文件、配置依赖、运行测试——直到所有任务完成。

2.2 Vibe Coding:对话式迭代开发

除了 Spec-Driven 的结构化开发,日常的功能迭代和 bug 修复通过 Vibe Coding 完成——直接在 Kiro 中用自然语言描述需求,Kiro 即时修改代码。

例如:“给 Library 页面加上文件预览功能” – “Agent 生成架构图时使用 AWS 官方 SVG 图标” – “WebSocket 断连后自动重连,最多重试 3 次”

Kiro 理解项目上下文(通过 Steering Files 中的架构文档和技术栈说明),直接定位到正确的文件进行修改。

2.3 Steering Files:让 AI 理解项目全貌

Kiro 之所以能准确地编写代码,关键在于 Steering Files——放在 .kiro/steering/ 目录下的项目上下文文档。我们配置了四份核心文档:

文件

作用

product.md

产品定位、核心原则、工具选择策略

structure.md

项目目录结构、架构模式、代码约定

tech.md

技术栈、模型 ID、环境变量、开发命令

ui-ux-pro-max.md

UI/UX 设计规范、配色、字体、交互准则

这些文档让 Kiro 在每次代码生成时都能遵循项目的架构模式和编码规范,而不是生成风格不一致的代码。

2.4 Hooks:自动化质量保障

Kiro Hooks 机制让我们实现了自动化的质量保障。例如:

  • API 测试 Hook:当 routers/schemas/services/ 下的文件被修改时,自动运行 Postman 集合测试
  • 结构同步 Hook:当新文件被创建时,自动更新 structure.md 保持项目文档同步
{
  "name": "API Postman Testing",
  "when": {
    "type": "fileEdited",
    "patterns": ["backend/app/routers/*.py", "backend/app/schemas/*.py"]
  },
  "then": {
    "type": "askAgent",
    "prompt": "API source code has been modified. Run Postman collection tests..."
  }
}

2.5 MCP Server 集成:实时参考最新文档

开发过程中,Strands Agents AgentCore 都是较新的服务,文档在快速迭代。我们通过配置 Model Context Protocol (MCP) Server Kiro 能实时参考最新的官方文档:

  • Strands Agents MCP Docs Server——提供 Strands Agents SDK 的最新 API 文档、工具开发指南、部署示例
  • AgentCore MCP Docs Server——提供 AgentCore RuntimeMemoryCode InterpreterBrowser 的最新文档

这意味着当 Kiro 编写 Agent 代码时,它参考的不是训练数据中可能过时的信息,而是实时的官方文档。例如,AgentCore Memory Strands 集成 API 在开发期间经历了多次变更,Kiro 通过 MCP Docs Server 始终使用最新的接口。

图:Kiro 中配置的 MCP Server 列表,接入 Strands Agents Docs 和 AgentCore Docs,确保开发时参考的是最新官方文档。

[图:Kiro 中配置的 MCP Server 列表,接入 Strands Agents Docs 和 AgentCore Docs,确保开发时参考的是最新官方文档。]

2.6 开发效率:数天完成数月的工作量

整个项目的开发时间线:

阶段

耗时

Kiro 的角色

需求 + 设计 + 任务拆分

~0.5 小时

Spec 自动生成,人工审核确认

核心平台(认证、对话、Agent、工具)

~2

Spec-Driven 逐任务执行

15+ Agent 工具开发

~2

Vibe Coding 逐个实现

前端 15 个页面 + 组件

~2

Vibe Coding + UI/UX Steering

AgentCore 集成(Runtime/Memory/Browser

~1

MCP Docs 实时参考

CDK 基础设施 + 部署脚本

~0.5

Vibe Coding

测试 + 修复 + 优化

~1

Hooks 自动测试 + Vibe Coding 修复

如果按传统开发方式,这个项目至少需要一个 3-5 人的团队工作 2-3 个月。用 Kiro,一个人在一周内完成了从零到生产部署的全流程。

三、整体架构

图:平台整体架构——用户请求通过 CloudFront 进入 VPC,经 ALB 到达 ECS Fargate 上的 FastAPI 后端,Agent 通过 Bedrock AgentCore 调用大模型和工具,交付物存储在 S3 中。

[图:平台整体架构——用户请求通过 CloudFront 进入 VPC,经 ALB 到达 ECS Fargate 上的 FastAPI 后端,Agent 通过 Bedrock AgentCore 调用大模型和工具,交付物存储在 S3 中。]

整个架构运行在 AWS Cloud 内,VPC 划分为三层子网(Public / Private / Isolated),Bedrock AgentCore 提供 Runtime 自动扩缩容、Memory 记忆持久化、Code Interpreter 安全沙箱和 Browser 托管浏览器,Amazon Bedrock 作为 LLM 平台提供 ClaudeAmazon NovaStabilityLuma 等多个模型。

四、运行层一:Strands Agents —— Agent 框架

4.1 为什么选 Strands?

我们评估了多个 Agent 框架后选择了 Strands Agents,原因很简单:足够轻量,足够灵活。工具就是带 @tool 装饰器的 Python 方法,框架负责 Agent Loop、对话管理和模型调用。不需要定义复杂的图结构,不需要学习专用 DSL

Strands Agents SDK 原生支持 Amazon Bedrock 作为模型提供方,这意味着我们可以直接使用 Bedrock 上的 ClaudeAmazon NovaStability AILuma 等模型,无需额外的适配层。

4.2 Agent 核心实现

Agent 的初始化代码非常精简:

from strands import Agent
from strands.models import BedrockModel
from strands.agent.conversation_manager import SlidingWindowConversationManager

class MyAgent:
    def __init__(self, user_id: str, conversation_id: str, config: AgentConfig):
        # 通过 Amazon Bedrock 初始化模型
        self.model = BedrockModel(
            model_id="us.anthropic.claude-sonnet-4-6",
            region_name="us-west-2",
            temperature=0.7,
            max_tokens=128000,
        )

        # 加载工具——核心工具始终加载,领域工具按用户启用的 Skills 动态加载
        self.tools = get_agent_tools(
            user_id=user_id,
            conversation_id=conversation_id,
            config=config,
        )

        # 创建 Strands Agent
        self.agent = Agent(
            model=self.model,
            tools=self.tools,
            system_prompt=config.system_prompt,
            conversation_manager=SlidingWindowConversationManager(window_size=35),
        )

SlidingWindowConversationManager 是长对话的关键——通过滑动窗口只保留最近 N 轮上下文,防止 token 溢出的同时维持对话连贯性,窗口大小可根据实际场景灵活调整。

4.3 工具模式:@tool 装饰器

每个工具都遵循类方法 + @tool 装饰器的模式:

from strands import tool

class CodeInterpreterTool:
    def __init__(self, region: str, user_id: str, conversation_id: str):
        self.region = region
        self.user_id = user_id

    @tool
    def execute_code(self, code: str, language: str = "python") -> str:
        """在安全沙箱中执行代码。支持 Python、JavaScript 和 Shell。

        Args:
            code: 要执行的代码
            language: 编程语言 (python, javascript, shell)
        """
        # 通过 Amazon Bedrock AgentCore Code Interpreter 执行——隔离沙箱
        ...

docstring 自动成为 LLM 看到的工具描述,类型注解自动成为参数 schemaStrands Agents 处理剩下的一切——参数序列化、响应解析、结果回注 Agent Loop

我们用这个模式构建了 15+ 工具:

工具

能力

execute_code

通过 Amazon Bedrock AgentCore Code Interpreter 在隔离沙箱中执行 Python/JS/Shell

navigate / click / fill / screenshot

通过 Amazon Bedrock AgentCore Browser 进行浏览器自动化

search

通过 Amazon Nova 2 Lite Web Grounding 进行网页搜索

generate_image

通过 Stability AI SD3.5 (Amazon Bedrock) 生成图片

generate_video

通过 Luma Ray v2 (Amazon Bedrock) 生成视频

create_file / read_file

Amazon Simple Storage Service (Amazon S3) 文件操作

deploy

部署静态网站到 Amazon S3 + Amazon CloudFront

generate_diagram

使用 AWS 官方图标生成架构图

query_price

实时 AWS 定价查询

analyze_billing

CSV/Excel 账单分析与异常检测

4.4 动态工具加载:Skills 系统

并非每个用户都需要所有工具。我们构建了Skills 系统,根据用户启用的 Skills 动态加载对应的领域工具:

# 核心工具——始终加载
tools = [code_interpreter, browser, web_search, file_ops, ...]

# 领域工具——仅在对应 Skills 启用时加载
requested = set(domain_tool_names or [])
if "aws_pricing" in requested:
    tools.append(AWSPricingTool(region=config.aws_region).query_price)
if "architecture_diagram" in requested:
    tools.extend([arch.generate_diagram, arch.modify_diagram, arch.list_aws_icons])

工具越少,LLM 的决策越准确。这是我们在实践中学到的重要经验。

五、运行层二:Amazon Bedrock AgentCore —— 运行时、记忆与沙箱

Amazon Bedrock AgentCore 提供了三项核心能力,如果自建至少需要数月:Serverless 运行时、持久化记忆、安全代码执行沙箱。

图:Amazon Bedrock AgentCore 服务全景——提供 Runtime、Memory、Code Interpreter、Browser 等核心能力,支撑 Agent 的生产级运行。

[图:Amazon Bedrock AgentCore 服务全景——提供 Runtime、Memory、Code Interpreter、Browser 等核心能力,支撑 Agent 的生产级运行。]

5.1 AgentCore Runtime:同一份代码,开发到生产

图:AgentCore Runtime 架构——Agent 代码部署到 Runtime 后,自动获得容器编排、弹性扩缩容、会话管理和健康检查能力。

[图:AgentCore Runtime 架构——Agent 代码部署到 Runtime 后,自动获得容器编排、弹性扩缩容、会话管理和健康检查能力。]

架构中最优雅的部分是双执行模式。AgentCore Runtime 的入口文件只需要:

from bedrock_agentcore import BedrockAgentCoreApp
from bedrock_agentcore.runtime.context import RequestContext

app = BedrockAgentCoreApp()

@app.entrypoint
async def invoke(payload: dict, context: RequestContext):
    """AgentCore Runtime 的 HTTP SSE 流式入口"""
    user_id = payload.get("user_id", context.session_id)
    conversation_id = payload.get("conversation_id", context.session_id)

    agent = MyAgent(user_id=user_id, conversation_id=conversation_id)

    async for event in agent.process_message(payload["prompt"]):
        yield event  # Server-Sent Events (SSE) 流式返回给调用方

if __name__ == "__main__":
    app.run()

AgentCore Runtime 负责容器编排、自动扩缩容、健康检查和会话管理。部署只需:

# 构建并推送容器到 Amazon Elastic Container Registry (Amazon ECR)
docker build --platform linux/arm64 -t $ECR_URI:latest -f Dockerfile.agentcore .
docker push $ECR_URI:latest

# 更新 AgentCore Runtime
aws bedrock-agentcore-control update-agent-runtime \
    --agent-runtime-id $AGENT_ID \
    --agent-runtime-artifact '{"containerConfiguration":{"containerUri":"'$ECR_URI':latest"}}'

FastAPI 侧通过一个环境变量切换模式:

if settings.agentcore_runtime_enabled:
    # 生产:通过 AgentCore Runtime 流式传输 (HTTP SSE)
    async for event in agentcore_service.invoke_stream(payload):
        await websocket.send_json(event)
else:
    # 开发:Agent 直接在进程内运行
    async for event in agent.process_message(message):
        await websocket.send_json(event)

本地开发用 agentcore launch –local 启动本地 Runtime,体验与生产完全一致。

5.2 AgentCore Memory:跨会话记忆

Amazon Bedrock AgentCore Memory 提供两种持久化能力:

  • 短期记忆 (Short-Term Memory)——以事件形式存储近期对话内容,支持自动过期,让 Agent 记住最近会话中发生的事
  • 长期记忆 (Long-Term Memory)——通过语义提取存储关于用户的关键事实,实现跨会话的个性化理解
图:AgentCore Memory 的双层记忆架构——短期记忆存储近期对话事件并自动过期,长期记忆通过语义提取持久化用户关键事实,两者协同实现跨会话的上下文理解。

[图:AgentCore Memory 的双层记忆架构——短期记忆存储近期对话事件并自动过期,长期记忆通过语义提取持久化用户关键事实,两者协同实现跨会话的上下文理解。]

Strands Agents 的集成通过 SDK Session Manager 完成:

from bedrock_agentcore.memory.integrations.strands.session_manager import (
    AgentCoreMemorySessionManager,
)
from bedrock_agentcore.memory.integrations.strands.config import (
    AgentCoreMemoryConfig,
    RetrievalConfig,
)

memory_config = AgentCoreMemoryConfig(
    memory_id="my_agent_memory_id",
    region="us-west-2",
    retrieval_config=RetrievalConfig(max_results=20, retrieval_type="SEMANTIC"),
)

session_manager = AgentCoreMemorySessionManager(config=memory_config)

# 传给 Strands Agent——自动处理持久化和上下文检索
agent = Agent(model=self.model, tools=self.tools, session_manager=session_manager)

Session Manager 自动持久化对话轮次,新会话开始时自动检索相关上下文。用户隔天回来继续对话,Agent 依然记得之前的上下文。

5.3 AgentCore Code Interpreter:安全沙箱

当用户要求 “分析这个 CSV” 或 “跑一下这段 Python”,我们需要隔离执行环境。Amazon Bedrock AgentCore Code Interpreter 提供临时沙箱,预装了 pandasmatplotlibnumpy 等数据科学库。每次执行在独立沙箱中运行,无跨用户污染,自动清理。这是企业场景的硬性要求。

图:Agent 通过 AgentCore Code Interpreter 在隔离沙箱中执行 Python 代码,生成数据分析图表。每次执行在独立环境中运行,无跨用户污染。

[图:Agent 通过 AgentCore Code Interpreter 在隔离沙箱中执行 Python 代码,生成数据分析图表。每次执行在独立环境中运行,无跨用户污染。]

5.4 AgentCore Browser:Browser Use

网页抓取、表单填写、实时浏览通过 Amazon Bedrock AgentCore Browser 实现。它提供托管的 Chrome 浏览器实例,Agent 可以程序化控制。结合 Amazon DCV 流式传输,用户甚至可以在 UI 中实时观看 Agent 浏览网页。

图:AgentCore Browser 的实现架构——Agent 通过 API 控制托管的 Chrome 实例,浏览器操作结果通过截图或 Amazon DCV 流式传输回前端,实现安全隔离的 Browser Use 能力。

[图:AgentCore Browser 的实现架构——Agent 通过 API 控制托管的 Chrome 实例,浏览器操作结果通过截图或 Amazon DCV 流式传输回前端,实现安全隔离的 Browser Use 能力。]

图:Agent 正在通过 AgentCore Browser 浏览网页,用户可在嵌入式浏览器窗口中实时观看 Agent 的操作过程。

[图:Agent 正在通过 AgentCore Browser 浏览网页,用户可在嵌入式浏览器窗口中实时观看 Agent 的操作过程。]

六、运行层三:AWS 基础设施 —— AWS CDK 一把梭

整个基础设施定义在一个 AWS CDK Stack 中,可复现、可版本控制。

6.1 核心基础设施

// Amazon Virtual Private Cloud (Amazon VPC):公有、私有、隔离三层子网
const vpc = new ec2.Vpc(this, 'Vpc', {
    maxAzs: 2,
    natGateways: 1,  // 成本优化:单 NAT Gateway
    subnetConfiguration: [
        { name: 'Public', subnetType: ec2.SubnetType.PUBLIC },
        { name: 'Private', subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS },
        { name: 'Isolated', subnetType: ec2.SubnetType.PRIVATE_ISOLATED },
    ],
});

// Amazon Relational Database Service (Amazon RDS) MySQL 8.4 放在隔离子网——无互联网访问
const mysql = new rds.DatabaseInstance(this, 'Mysql', {
    engine: rds.DatabaseInstanceEngine.mysql({
        version: rds.MysqlEngineVersion.VER_8_4_7,
    }),
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.T4G, ec2.InstanceSize.MICRO),
    vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_ISOLATED },
});

// Amazon ElastiCache Redis 7.1 用于会话和缓存
const redis = new elasticache.CfnCacheCluster(this, 'Redis', {
    cacheNodeType: 'cache.t4g.micro',
    engine: 'redis',
    engineVersion: '7.1',
});

6.2 服务层

FastAPI 后端跑在 AWS FargateAmazon Elastic Container Service Serverless 计算引擎)上,前面是 Elastic Load Balancing (ELB) Application Load BalancerReact 前端从 Amazon S3 通过 Amazon CloudFront 分发。这种分离意味着前端部署只需 ~1 分钟(S3 sync + CloudFront 失效),后端部署是独立的滚动更新。

Amazon CloudFront (app.example.com)  → Amazon S3 (React SPA)
Amazon CloudFront (docs.example.com) → Amazon S3 (知识库门户)
ALB (api.example.com)                → AWS Fargate (FastAPI)

6.3 一键部署

所有部署操作封装在一个脚本中:

./deploy.sh all          # 全量部署(基础设施 + 前端)
./deploy.sh frontend     # 仅前端(~1 分钟)
./deploy.sh backend      # Amazon ECS 滚动更新(~10 秒触发)
./deploy.sh agent        # 部署 AgentCore Runtime Agent
./deploy.sh status       # 查看当前端点

6.4 成本概览

全套基础设施月最低成本约 $89(实际以实时价格为准)

服务

月费用

NAT Gateway

~$32

AWS Fargate (512 CPU)

~$15

Application Load Balancer

~$16

Amazon RDS t4g.micro

~$12

Amazon ElastiCache t4g.micro

~$12

Amazon CloudFront (x2)

~$2

AI 模型费用(Amazon Bedrock 按量付费)和 AgentCore 各服务费用额外计算,按实际使用量计费。

七、平台能力展示

除了核心的 Agent 对话,我们还构建了完整的平台功能来支撑企业级使用场景。

7.1 交付物管理

Agent 产出的所有文件——图片、文档、代码、部署的网页——都存储在 Amazon S3 中,通过 Library 页面统一管理。用户可以浏览、预览、下载所有历史交付物。

图:Library 页面——统一管理 Agent 产出的所有交付物,支持按类型筛选、在线预览和一键下载。

[图:Library 页面——统一管理 Agent 产出的所有交付物,支持按类型筛选、在线预览和一键下载。]

7.2 架构图生成

Agent 可以使用 AWS 官方图标生成 Draw.io 格式的架构图,支持在线查看和编辑。

Agent 产出的所有文件——图片、文档、代码、部署的网页——都存储在 Amazon S3 中,通过 Library 页面统一管理。用户可以浏览、预览、下载所有历史交付物。

图:Agent 使用 AWS 官方 SVG 图标自动生成的架构图,输出 Draw.io 格式,支持在线查看和二次编辑。

[图:Agent 使用 AWS 官方 SVG 图标自动生成的架构图,输出 Draw.io 格式,支持在线查看和二次编辑。]

7.3 网页部署

Agent 可以将生成的 HTML/CSS/JS 直接部署到 Amazon S3 + Amazon CloudFront,用户获得一个可分享的公开 URL

图:Agent 在对话中接收用户需求,自动生成 HTML/CSS/JS 代码并一键部署。

[图:Agent 在对话中接收用户需求,自动生成 HTML/CSS/JS 代码并一键部署。]

图:部署完成后用户获得可分享的公开 URL,通过 Amazon S3 + Amazon CloudFront 分发,实现端到端交付。

[图:部署完成后用户获得可分享的公开 URL,通过 Amazon S3 + Amazon CloudFront 分发,实现端到端交付。]

7.4 图片与视频生成

通过 Amazon Bedrock 上的 Stability AI Luma AI 模型,Agent 可以直接生成图片和视频内容。

图:Agent 通过 Amazon Bedrock 上的 Stability AI SD3.5 模型生成图片,结果内联展示在对话中,用户可直接下载使用。

[图:Agent 通过 Amazon Bedrock 上的 Stability AI SD3.5 模型生成图片,结果内联展示在对话中,用户可直接下载使用。]

八、实践经验

  • 让 LLM 自己决策,不要过度编排:早期我们尝试构建刚性工作流——“如果用户问定价,就路由到定价工具”。这很脆弱,无法处理模糊请求。Strands Agents Agent Loop 方式更好:给 LLM 工具和好的 System Prompt,让它自己决定编排顺序。模型在选择工具序列方面出乎意料地好。
  • 工具越少,决策越准:我们最初为每个对话加载所有 15+ 工具。LLM 在选项过多时偶尔会选错工具。基于 Skills 的动态加载解决了这个问题——用户启用需要的 Skills,只加载相关工具。
  • 双执行模式是杀手级特性:同一份 Agent 代码在本地(Direct Mode)和生产(AgentCore Mode)运行,消除了一整类 “在我机器上能跑” 的 bug。抽象成本极低——只是 WebSocket Handler 中的一个条件判断。
  • 流式传输不可或缺:Agent 任务可能耗时数分钟(生成视频、执行复杂代码、浏览多个页面)。没有 WebSocket 实时流式传输,用户只能盯着空白屏幕。我们流式传输每一个事件——思考、工具选择、工具结果、文件创建——让用户始终知道正在发生什么。
  • 记忆让 Agent 真正智能:没有 AgentCore Memory,每次对话都从零开始。有了它,Agent 记住用户偏好、历史产出和进行中的项目。这把体验从 “使用工具” 变成了 “与助手协作”。

九、快速上手

如果你想构建类似的平台,以下是最短路径。推荐使用 Kiro 作为开发工具——通过 Spec-Driven Development 自动生成需求、设计和任务,再用 Vibe Coding 逐步实现。

9.1 搭建 Strands Agent

pip install strands-agents strands-agents-tools
from strands import Agent, tool
from strands.models import BedrockModel

@tool
def my_tool(query: str) -> str:
    """搜索信息。"""
    return f"Results for: {query}"

agent = Agent(
    model=BedrockModel(
        model_id="us.anthropic.claude-sonnet-4-6",
        region_name="us-west-2",
    ),
    tools=[my_tool],
)
response = agent("帮我查一下最新的 EC2 定价")

9.2 接入 AgentCore Runtime

pip install bedrock-agentcore
from bedrock_agentcore import BedrockAgentCoreApp

app = BedrockAgentCoreApp()

@app.entrypoint
async def invoke(payload: dict, context):
    agent = Agent(model=model, tools=tools)
    result = agent(payload["prompt"])
    yield {"type": "text", "data": {"content": str(result)}}

if __name__ == "__main__":
    app.run()
# 本地测试
agentcore configure --entrypoint app.py --name my_agent
agentcore launch --local

# 部署到生产
agentcore deploy

9.3 用 AWS CDK 部署基础设施

import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as rds from 'aws-cdk-lib/aws-rds';

const vpc = new ec2.Vpc(this, 'Vpc', { maxAzs: 2 });
const cluster = new ecs.Cluster(this, 'Cluster', { vpc });
const db = new rds.DatabaseInstance(this, 'DB', {
  engine: rds.DatabaseInstanceEngine.mysql({ version: rds.MysqlEngineVersion.VER_8_0 }),
  vpc,
});
// ECS Fargate Service, ALB, CloudFront, ElastiCache...

一个 CDK Stack 即可定义 VPCECS FargateRDSElastiCacheALBCloudFront 等全部生产基础设施,npx cdk deploy 一键部署。

十、总结

构建企业级 Agentic AI 平台曾经需要数月的基础设施工作——容器编排、沙箱执行、记忆系统、自动扩缩容。而现在,整个链路都可以由 AI 驱动:

  • Kiro 负责从需求到代码的全流程开发——Spec-Driven Development 生成结构化规格,Vibe Coding 处理日常迭代,MCP Server 提供实时文档参考
  • Strands Agents 提供干净的工具抽象和 Agent Loop,让我们专注于工具能力而非框架细节
  • Amazon Bedrock AgentCore 提供运行时、记忆和沙箱,省去数月的基础设施自建工作
  • AWS CDK 让整套基础设施可复现、可版本控制,一键部署到生产

这不只是 “用 AI 辅助开发”,而是 用 AI 构建 AI——Kiro 作为开发者,构建了一个能为用户交付成果的 AI Agent 平台。从模糊的产品想法到生产环境上线,一个人、一周时间、零人工编码。

这就是 AI 原生开发的未来。

➡️ 下一步行动:

相关产品:

  • Amazon Bedrock — 用于构建生成式人工智能应用程序和代理的端到端平台
  • Amazon S3 — 专为从任意位置检索任意数量的数据而构建的对象存储
  • Amazon CloudFront — 以低延迟和高传输速度安全地交付内容
  • Amazon Fargate — 适用于容器的无服务器计算
  • Amazon RDS — 易于管理关系数据库,针对总拥有成本进行了优化

相关文章:

十一、项目源码

本文涉及的完整项目代码已开源,欢迎参考和交流:

十二、参考文档

12.1 Kiro (AI IDE)

  • Kiro 官网 — AWS 推出的 AI IDE,支持 Spec-Driven Development Vibe Coding
  • Kiro 文档 — Steering FilesHooksMCP 集成等功能指南

12.2 Strands Agents

12.3 Amazon Bedrock AgentCore

12.4 AWS 基础设施

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

黎小为

亚马逊云科技解决方案架构师,负责亚马逊云科技解决方案构建,在加入亚马逊云科技之前,就职于腾讯、网易、京东等国内大型互联网企业,拥有丰富的研发经验。

贾京京

亚马逊云科技解决方案架构师,负责媒体广告行业云计算方案和架构咨询。

李进

亚马逊云科技解决方案架构师,负责基于亚马逊云科技的架构咨询与方案设计。致力于帮助客户实现创新、提升效率、达成业务目标。在 GenAI、Serverless、音视频处理等方向具有丰富的实践经验。

朱晓阳

AWS 资深解决方案架构师, 负责基于AWS云计算的解决方案的架构设计和咨询,同时致力于AWS云计算服务在数字广告和社交应用领域的应用和推广. 在加入AWS之前,曾任IBM Cloud资深软件架构师. 在OpenStack, Docker, Kubernetes和DevOps领域有多年实战经验. 现致力于容器和服务网格相关领域的研究。


AWS 架构师中心:云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用