可易

用 Amazon Bedrock 上的开放权重模型运行 AI 编码智能体

可易团队阅读约 14 分钟

本文说明如何在自有 AWS 账户内,用 OpenCode 接入 Amazon Bedrock 上的开放权重模型,按任务切换 Kimi K3、GPT-OSS 120B 与 Nemotron,并配置权限、分层计费与批量任务。

目录

AI 编码智能体(agent)已经成为开发人员编写、调试和重构软件的核心方式。Amazon Bedrock 上的开放权重(open weight)模型,现在使这些智能体可以私密且经济地运行。但多数选项要求你把专有数据发送到第三方 API,把你锁定在单一模型提供商,或者无论用量多少都按席位收取订阅费。如果你有数据驻留要求、对成本敏感的工作负载,或需要模型灵活性,这些约束会造成真实摩擦。

如果有一种 AI 编码智能体,能把数据留在你自己的 AWS 账户里,按需在前沿开放权重模型之间切换,并且只为实际消耗付费,会怎样?

OpenCode(https://opencode.ai)是一个用 Go 构建的开源、终端原生 AI 编码智能体。它读取并编辑文件、运行 shell 命令,并通过语言服务器协议(Language Server Protocol, LSP)诊断理解项目结构。它可连接超过 75 家大语言模型(large language model, LLM)提供商,包括 Amazon Bedrock(/bedrock/)。当你把 OpenCode 与 Bedrock 上的开放权重模型配合使用时,得到的是一个在本地运行的编码助手,而推理在你的 AWS 账户内安全进行。无需管理基础设施,也没有按席位计费。

在本文中,我们说明如何在 Amazon Bedrock 上用开放权重模型配置 OpenCode,如何配置把合适模型匹配到每项任务的多模型工作流,并演练使用 Moonshot AI Kimi K3(https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k3.html)、OpenAI GPT-OSS 120B(https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-oss-120b.html)和 NVIDIA Nemotron 3 Super 120B(https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-nvidia-nemotron-super-3-120b.html)的实际编码示例。我们还分享 Ethara.AI(http://ethara.ai/)如何在生产环境中部署这一架构,用多智能体编排大规模支撑 AI 工程与研究工作流。

为什么用开放权重模型做 AI 辅助编码

行业正在转向开放权重模型。根据 McKinsey 的报告《人工智能时代的开源技术》(Open-source technology in the age of AI,2025)(https://www.mckinsey.com/capabilities/quantumblack/our-insights/open-source-technology-in-the-age-of-ai),76% 的组织预期会增加开源 AI 的使用,领先的 AI 采用者使用开放权重模型的可能性高出 40%。对编码工作负载而言,五个因素推动这一转变:

性能对等:经过微调的开放权重模型,可以在特定领域任务上超过专有替代方案。CrowdStrike 微调后的 NVIDIA Nemotron(https://www.crowdstrike.com/en-us/blog/crowdstrike-journey-in-customizing-nvidia-nemotron-models/)达到 96% 的有效查询准确率,超过 GPT-4o(61%)和 Claude Sonnet 4.5(94%)。

成本效率:根据 Gartner 2026 年的分析(https://neuralwired.com/2026/06/20/gartner-llm-inference-cost-enterprise/),智能体式工作流会使 token 消耗乘以 5–30 倍,因此每 token 成本变得关键。在规模上,大约每月数百万次对话的量级,改用 Bedrock 上的开放权重模型可以降低年化成本。

定制与控制:开放权重支持微调、蒸馏和领域适配。较小的模型可以在保持质量的同时,替代昂贵的通用模型。

模型灵活性:有了开放权重,你可以为每项任务采用合适的模型,并随着新模型出现而演进。在 Amazon Bedrock(/bedrock/)上,切换模型只是改一个 API 参数。

透明度:可检查的模型架构与行为,支持有 AI 治理要求的受监管行业。

为什么用 Amazon Bedrock 作为后端

Amazon Bedrock 提供对开放权重模型的全托管、无服务器访问。无需预配 GPU,也无需管理推理基础设施。对企业编码工作流而言,Bedrock 相对自建托管或直接对接模型提供商有若干优势:

数据驻留与合规:代码、提示和响应留在你的 AWS 账户中。通过区域内或地理配置文件访问的模型,在该区域或该地理范围内运行。你可以通过跨区域推理配置文件调用 Kimi K3。对于没有区域限制的工作负载,我们建议使用全球配置文件 global.moonshotai.kimi-k3,它把每个请求路由到全球任意受支持的商业 AWS 区域。全球跨区域推理的成本大约比地理配置文件低 10%。美国地理配置文件 us.moonshotai.kimi-k3 把处理保持在美国地理范围内,以满足数据驻留要求。Amazon Bedrock 纳入常见合规计划的范围,包括 HIPAA、SOC 2、ISO 27001、FedRAMP 和 GDPR。完整列表见按合规计划列出的 AWS 服务(/compliance/)。

企业安全控制:开放权重模型继承与专有模型相同的 AWS Identity and Access Management(IAM)(/iam/)策略、AWS CloudTrail(/cloudtrail/)日志、AWS PrivateLink 连接和加密控制。不需要单独的安全栈。

灵活定价:三个层级把成本与工作负载匹配:Priority 用于对延迟敏感的生产环境,Standard 用于按需推理(按 token 付费),Flex 对可变延迟工作负载低 50% 成本。

不用你的数据训练模型:Bedrock 不会使用你的输入或输出来训练或改进基础模型(foundation models, FMs)。

较高的默认容量:默认限制为每分钟 1 亿 token 和每分钟 1 万次请求,有助于在团队扩展时减少吞吐瓶颈。

为任务选择合适的模型

并非每项编码任务都需要同一个模型。把 OpenCode 与 Bedrock 一起使用的关键优势之一,是能够根据你正在做的事情选择并切换模型。

到哪里评估模型:Artificial Analysis Coding Index(https://artificialanalysis.ai/coding)在真实软件工程任务(SWE-Bench、Terminal-Bench、SWE-Atlas)上提供综合基准。用它比较模型性能、每项任务的成本和延迟。若要针对你自己的提示和数据做评估,可以使用 Amazon Bedrock Evaluations(/bedrock/evaluations/)进行并排比较,并采用自动评分、LLM-as-a-judge 或人工复核。

原始性能之外的考量

  • 推理深度:对于复杂调试、架构决策或计划生成,推理模型会逐步追踪问题。Kimi K3 在回答之前先推理。你用 reasoning_config(low、high 或 max)设置深度。你用延迟换取难题上的正确性。
  • 生成速度与延迟:对于代码补全、样板生成和交互式结对编程,更低的延迟比峰值推理更重要。NVIDIA 报告称,Nemotron 3 Super 120B 凭借其混合专家(Mixture-of-Experts)架构,每个 token 只激活 120B 总参数中的 12B,从而提供高达 7 倍的吞吐。
  • 每 token 成本:对于大批量工作流(批量重构、大型代码库),成本会累积。Bedrock 上的开放权重模型,每 token 定价低于专有替代方案。
  • 上下文窗口:Kimi K3 支持 1M token 上下文,大约相当于数万行代码。你可以加载整个存储库,而不是少数几个文件,以进行跨文件推理。
  • 区域可用性:检查哪些模型在你的目标区域可用。这对数据主权和延迟要求很重要。

在本文中,我们重点介绍覆盖这一谱系的三个模型:

模型优势最适合
Moonshot AI Kimi K3始终开启推理,并具备 1M token 上下文调试、架构分析、复杂逻辑
OpenAI GPT-OSS 120B前沿代码生成(120B 参数)完整服务生成、多文件实现
NVIDIA Nemotron 3 Super 120B优化后的吞吐,经过企业验证大批量生成类工作负载

解决方案概述

该架构有两部分:OpenCode 作为终端用户界面(terminal user interface, TUI)在你的本地机器上运行,并调用 Amazon Bedrock Converse API 进行推理。Bedrock 以全托管、无服务器端点托管这些模型。

OpenCode 在终端中运行并调用 Amazon Bedrock Converse API,AWS IAM 对每次请求进行身份验证,AWS CloudTrail 记录 API 活动

图 1:OpenCode 与 Amazon Bedrock 上开放权重模型的解决方案架构。开发人员在终端中与 OpenCode 交互,OpenCode 通过 Bedrock Converse API 把请求发送到开放权重模型。AWS IAM 对每次请求进行身份验证,AWS CloudTrail 记录 API 活动

OpenCode 的智能体架构支持把不同模型分配给不同角色:用推理模型做规划,用更快的模型做代码生成。这在单个会话内形成多模型工作流。

前提条件

开始之前,请确认你具备:

  • 一个已启用 Amazon Bedrock 访问(https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)的有效 AWS 账户(/free/)。
  • 已在 Amazon Bedrock 控制台中授予 Kimi K3、GPT-OSS 120B 和 NVIDIA Nemotron 3 Super 120B 的模型访问权限(https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)。
  • 已配置 AWS 凭证(IAM 访问密钥(https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)、AWS IAM Identity Center,或 Bedrock API 密钥(https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html))。
  • Node.js(https://nodejs.org/en/download)18+(用于 npm 安装方式)或 Homebrew(https://brew.sh/)(用于 macOS/Linux)。

安装并配置 OpenCode

本节逐步说明安装 OpenCode CLI,并将其配置为向 Amazon Bedrock 进行身份验证。

安装 OpenCode

选择下列方法之一:

# Install script (recommended)
curl -fsSL https://opencode.ai/install | bash

# Or via npm
npm install -g opencode-ai

# Or via Homebrew (macOS/Linux)
brew install sst/tap/opencode

验证安装:

$ opencode --version
1.18.20

配置 AWS 凭证

OpenCode 的 Bedrock 提供商使用标准 AWS 凭证链。配置下列选项之一:

#### 选项 A:AWS IAM Identity Center(企业推荐)

aws sso login --profile my-bedrock-profile
export AWS_PROFILE=my-bedrock-profile
export AWS_REGION=us-west-2

#### 选项 B:IAM 访问密钥

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_REGION=us-west-2

将这些替换为你自己的凭证。生产环境优先使用 IAM Identity Center 或 IAM 角色,而不是长期访问密钥。

#### 选项 C:Bedrock API 密钥

export AWS_BEARER_TOKEN_BEDROCK=your-bedrock-api-key
export AWS_REGION= us-west-2

你也可以把这些存放在项目根目录的 .env 文件中,以便持久配置。

配置多模型工作流

借助 OpenCode 的智能体系统,你可以把不同模型分配给不同角色。在项目根目录创建或编辑 opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "amazon-bedrock/us.openai.gpt-oss-120b-1:0",
  "agent": {
    "plan": {
      "model": " amazon-bedrock/global.moonshotai.kimi-k3"
    },
    "build": {
      "model": "amazon-bedrock/us.nvidia.nemotron-super-3-120b"
    }
  }
}

此配置把规划和架构任务(它们受益于深度推理)路由到 Kimi K3,而代码生成与实现则交给 Nemotron 3 Super 120B,以获得优化后的吞吐。顶层 model 字段把 GPT-OSS 120B 设为其他上下文的默认模型。

要交互式浏览可用的 Bedrock 模型,启动 OpenCode 并输入 /models。

用开放权重模型编码

下列示例说明如何把每个模型匹配到它最擅长处理的任务类型。

用 GPT-OSS 120B 生成事件溯源订单服务

GPT-OSS 120B 是 OpenAI 的 1200 亿参数开放权重模型。它把较强的推理与代码生成结合起来,适合跨越多个文件、架构上较复杂的实现。使用上一节的多模型配置时,你可以在行内覆盖默认模型,或使用 /model 显式切换:

$ opencode
> /model us.openai.gpt-oss-120b-1:0
> Build an event-sourced CQRS order service in Python (FastAPI) with:
> - Command side: append-only event store in DynamoDB, idempotent handlers
> - DynamoDB Streams triggering a projection Lambda that builds a read-model
> - Query side: denormalized read-model optimized for "orders by customer"
>   and "orders by status" access patterns
> - Event replay CLI to rebuild projections from scratch
> - Snapshotting every 50 events per aggregate to bound replay time
> Include CDK infrastructure.
OpenCode 在终端中用 GPT-OSS 120B 生成事件溯源 CQRS 订单服务

图 2:OpenCode 用 GPT-OSS 120B 生成事件溯源 CQRS 订单服务

OpenCode 通过带 IAM 身份验证的 Bedrock Converse API 把请求路由到 GPT-OSS 120B。该模型生成完整的服务结构,包括处理程序、事件存储、投影和 CDK 栈,并直接写入你的本地文件系统。CloudTrail 记录这次调用,你的提示和响应仍留在你的 AWS 账户内。

用 Kimi K3 诊断分布式死锁

Kimi K3 擅长需要追踪多条执行路径的推理任务。它在每一轮都进行推理,reasoning_config 字段设置推理有多深:low 用于快速过一遍,max 用于困难问题。如果你把 Kimi K3 配置为 plan 智能体,它已经是分析任务的默认模型。你也可以用 /model 显式切换:

> /model amazon-bedrock/global.moonshotai.kimi-k3
> This Step Functions workflow hangs ~2% of the time under load.
> The pattern: Task A does a DynamoDB conditional put that expects
> status="PENDING", Task B (triggered by SQS) sets status="READY"
> but only after Task A's callback confirms receipt. Both tasks
> wait on each other. Trace the deadlock, explain why it only
> manifests under concurrency, and propose a fix that doesn't
> require redesigning the state machine.
> @order_workflow.asl.json @task_a_handler.py @task_b_handler.py

@文件引用把你的本地代码作为上下文注入,无需手工复制粘贴。Kimi K3 的混合专家架构每个 token 只激活其 2.8T 总参数中的 104B,以高效吞吐提供前沿推理。你实时观看模型追踪并发路径。因为推理过程可见,你可以在接受所提出的修复之前,判断分析是否成立。

在会话中途切换模型

你不需要锁定单一模型。在会话期间输入 /models 即可切换。一种实用模式是:用 Nemotron 3 Super 120B 或 GPT-OSS 120B 做快速代码生成和样板,当你遇到复杂调试问题或需要推理架构权衡时,再切换到 Kimi K3。

使用前面所示的多模型 opencode.json 配置时,这种路由会自动发生。plan 智能体用 Kimi K3 做推理,build 智能体用 Nemotron 做实现。

用 Flex 层级降低批量编码任务的成本

有些编码工作是交互式的。跨大型代码库的批量重构、为现有模块生成测试套件,或从代码生成文档。这些任务可以容忍延迟,并且可以异步运行。Amazon Bedrock Flex 层级对这些工作负载的成本比 Standard 低 50%。

你可以把它与 OpenCode 的 CLI 模式结合起来,为批量操作编写脚本:

# Process multiple files through GPT-OSS 120B for test generation
for file in src/**/*.py; do
  opencode run -m amazon-bedrock/us.openai.gpt-oss-120b-1:0 \
    "Generate comprehensive unit tests for @${file}. Use pytest with fixtures."
done

把层级叠起来用:交互式会话用 Standard,批量处理用 Flex,对延迟敏感的生产用途用 Priority。

扩展到多模型路由架构

本文所示的 OpenCode + Bedrock 模式是单开发人员工作流。对团队和生产系统而言,同样的多模型原则可以扩展为一种路由架构:编排器把每个子任务导向最优模型:

多模型路由架构:路由器把子任务分派到 Amazon Bedrock 上的意图分类、代码生成和推理模型层级

图 3:使用 Amazon Bedrock 上开放权重模型的多模型路由架构。路由器分析传入请求,并把子任务分派到最优模型层级,以帮助降低总拥有成本(total cost of ownership, TCO),相对把所有任务都路由到单一模型而言

在此模式中:

  • 意图分类路由到低成本模型(小型、推理快)。
  • 代码生成路由到为吞吐优化的中层开放权重模型。
  • 复杂推理(架构决策、安全分析)路由到高端推理模型。

相对把一切都发送给单一昂贵模型,这种路由有助于降低总体总拥有成本,同时不降低质量。Amazon Bedrock 统一 API 使这一点切实可行:切换模型是一次参数变更,而这些模型共享同一套身份验证、日志和护栏(Guardrails)基础设施。

对于准备超越单开发人员使用的团队,把 OpenCode 的本地智能体路由与服务端编排层(Amazon Bedrock Agents(/bedrock/managed-agents-openai/)或 AWS Step Functions(/step-functions/))结合起来,形成完整的多模型编码流水线。

生产部署:大规模多智能体编排

Ethara.AI 是一家 AWS 客户,在生产环境中部署这一架构,把 OpenCode 用作 AI 工程与研究工作流的基础运行时。Oh-My-OpenAgent(https://omo.dev/docs)作为与专用 AI 智能体协作的编排层。Ethara.AI 并不依赖单一编码助手,而是运行一支按不同任务优化的智能体队伍,例如规划、执行、代码评审、架构分析、知识检索、多模态理解和基准评测。通过 Oh-My-OpenAgent 基于类别的路由系统,工程师请求一种能力(例如深度推理、快速执行、视觉工程或写作辅助),系统把工作委派给最合适的智能体。这种抽象帮助团队把注意力放在结果而不是模型管理上,同时在不断演进的 AI 框架之间保持灵活性。

Amazon Bedrock 与 OpenCode 的提供商无关架构,支撑着 Ethara.AI 的模型选择策略。OpenCode 支持访问广泛的基础模型,而 Amazon Bedrock 提供对前沿模型的安全访问。他们不是使用单一模型,而是根据推理复杂度、延迟要求、成本效率和任务类型等因素动态路由工作负载。Amazon Bedrock、OpenCode 与 Oh-My-OpenAgent 的组合,帮助他们把智能体能力与底层模型层分开。这有助于确保最合适的智能体与模型组合执行每项任务,同时保留在模型格局演进时评估并采用新模型的能力。

展望未来,Ethara.AI 正在投资可自我改进的智能体系统,借鉴诸如 SkillClaw(https://github.com/AMAP-ML/SkillClaw)的研究。他们正在开发一些机制,帮助技能和智能体行为根据成功与失败的执行轨迹演进,从而形成一种基础设施:智能体通过真实使用持续改进。这一愿景建立在 OpenCode 的可扩展架构、Oh-My-OpenAgent 的委派框架,以及 Amazon Bedrock 模型目录之上,以创建随时间变得更有能力、更能适应、更高效的 AI 系统。

企业使用的安全考量

Bedrock 上的开放权重模型继承与专有模型相同的企业控制。权重的来源并不改变你的安全态势。用遵循最小权限的 IAM 策略,限制用户可以调用哪些模型:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:us-west-2::foundation-model/openai.gpt-oss-120b-1:0",
        "arn:aws:bedrock:us-west-2::foundation-model/nvidia.nemotron-super-3-120b",
        "arn:aws:bedrock:us-west-2:{account-id}:inference-profile/global.moonshotai.kimi-k3",
        "arn:aws:bedrock:*::foundation-model/moonshotai.kimi-k3"
      ]
    },
    {
      "Effect": "Allow",
      "Action": ["bedrock:CallWithBearerToken"],
      "Resource": ["*"]
    }
  ]
}

你还可以进一步叠加 Amazon Bedrock Guardrails(/bedrock/guardrails/),在各次调用上做内容过滤和个人可识别信息(personally identifiable information, PII)脱敏。CloudTrail 记录每一次 InvokeModel 调用以供审计,并且 Bedrock 不会使用你的输入或输出来训练模型。

清理

本演练除启用模型访问之外,不创建持久的 AWS 基础设施。如果你只是为测试启用了模型访问,可以在 Amazon Bedrock 控制台的 Model catalog 中将其禁用。没有其他资源需要清理,并且在你不发起 API 调用时不会产生费用。

结论

我们说明了如何在 Amazon Bedrock 上用开放权重模型配置 OpenCode,以构建安全、灵活、按使用付费的 AI 编码工作流。你得到开放权重模型的成本效率与定制潜力、Bedrock 的企业安全与托管基础设施,以及能融入现有开发人员工作流的终端原生体验,并能够自动把不同任务路由到不同模型。

要开始使用,请安装 OpenCode,配置你的 AWS 凭证,并设置多模型配置。浏览完整的 Amazon Bedrock 模型目录(/bedrock/models/),找到适合你工作负载的模型,并使用 Artificial Analysis Coding Index(https://artificialanalysis.ai/coding)比较模型在编码任务上的表现。

有关 Amazon Bedrock 安全与合规的更多信息,请参阅 Amazon Bedrock 用户指南(https://docs.aws.amazon.com/bedrock/latest/userguide/)。如果你想讨论 Amazon Bedrock 如何支持贵组织中的 AI 辅助开发,请联系 AWS 代表(/contact-us/)。

PRIMARY_SOURCE: https://aws.amazon.com/blogs/machine-learning/use-open-weight-models-as-your-ai-coding-agent-with-amazon-bedrock

  • #开放权重
  • #OpenCode
  • #Amazon Bedrock
  • #编码智能体
  • #成本分层