opencodex 接入 Amazon Bedrock Runtime:原生 Converse/ConverseStream 适配器与可选 SigV4 签名设计解析

发布时间:2026/9/24 14:11:16

opencodex 接入 Amazon Bedrock Runtime:原生 Converse/ConverseStream 适配器与可选 SigV4 签名设计解析 【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载opencodex 作为面向 OpenAI Codex 与 Claude Code 的通用 Provider 代理其非 OpenAI Provider 追赶计划devlog/_fin/260717_non_openai_provider_chase/中的 WP14 阶段专门设计了原生 Amazon Bedrock Runtime 适配器 可选 SigV4 签名这一技术路线。本文以该工作阶段文档为骨架结合仓库中已落地的事件流解码基础设施与适配器解析链路完整解读其目标、文件改动地图、架构约束、激活场景、验证方式与终局判定标准帮助读者理解在代理层新增 AWS 原生推理通道时的设计决策与工程边界。背景Bedrock 的双路径接入策略在进入 WP14 之前opencodex 的 Bedrock 接入遵循先低成本、后原生的依赖顺序。整个追赶计划的依赖地图见 000_plan.md明确将 Bedrock 拆成两个独立工作阶段阶段文档目标依赖WP12120_bedrock_mantle.mdOpenAI 兼容的 Bedrock Mantle 通道Responses 协议 Bearer 密钥keyed Responses provider contractWP14140_bedrock_runtime_sigv4.md原生 ConverseStream/SigV4 通道C4 认证边界与事件适配器WP12 建立的 Mantle 通道复用https://bedrock-mantle.region.api.aws/v1这一 OpenAI 兼容端点使用 Bearer API Key 即可接入是成本最低的可行路径而 WP14 则完全不同——它面向 Bedrock Runtime 的原生 Converse/ConverseStream 协议走application/vnd.amazon.eventstream二进制事件流认证上不仅支持 Bearer 密钥还可选升级为 AWS SigV4 签名。二者的边界在 120_bedrock_mantle.md 中被严格划清No SigV4 or native Converse event parsing in WP12WP12 不包含 SigV4 或原生 Converse 事件解析同时 140_bedrock_runtime_sigv4.md 也写明其目标是仅为 Mantle 无法满足的具体模型或功能添加原生适配器。目标与依赖何时才需要原生 Converse 适配器WP14 的目标定义非常克制其核心依赖前置条件如下Add a native Converse/ConverseStream adapter only for concrete models or features not satisfied by Bedrock Mantle. Start with Bedrock Bearer keys; add SigV4 only when an IAM/production requirement is recorded.翻译过来即两条关键决策原生适配器不是默认选择只有当某个具体模型或功能在 Mantle 通道上不可用时才需要 Converse/ConverseStream 原生通道。仓库中src/generated/model-metadata.ts维护着amazon-bedrock的模型元数据含anthropic.claude-3-5-haiku-20241022-v1:0、anthropic.claude-3-5-sonnet-20240620-v1:0等 Claude 系列及上下文窗口、价格信息并在COST_VENDOR_PRIORITY中登记了amazon-bedrock供应商——哪些模型走 Mantle、哪些必须走 Runtime由实际可用性决定。SigV4 是条件性子任务第一版原生通道使用 Bedrock Bearer 密钥即可打通SigV4 签名只有在记录到真实的 IAM/生产环境需求后才启用绝不让签名成为阻塞 Converse 支持的理由。这种先 Bearer 后 SigV4、先可用后加固的顺序与 000_plan 中记录的dead hypothesis已证伪假设直接呼应——最初曾假设接入 Bedrock 必须从定制 SigV4 适配器开始而 Mantle 的 Responses 通道与 Bearer 密钥证明存在更低成本的接入路径因此原生 Runtime 被降级为条件性工作项。C4 循环边界无凭据、无边界就不跑真实调用由于涉及 AWS 凭据与真实线上请求WP14 被提升到 C4 安全等级并在进入实施B 阶段之前设置了一道硬性前置门槛Before B, P must state credential source, allowed AWS regions/accounts, network scope, write scope, maximum live requests/cost, and wall-clock bound. No unattended live call runs without those bounds.即在 P计划阶段就必须明确声明以下六项边界缺一不可凭据来源Bearer 密钥还是 IAM 凭据链允许的 AWS 区域/账户限定可访问的区域白名单与账户范围网络范围允许的出站网络目标写入范围允许的写操作边界最大并发请求/成本上限防止真实调用失控的预算墙上时钟界限每次真实调用的时间上限。这与 000_plan.md 中Cross-cutting invariants横切不变量里的规则一致C4 阶段不得在无明确凭据/写入/时间边界的情况下无人值守启动C4 phases cannot begin unattended without explicit credential/write/time bounds。Diff map 全解析文件级改动地图WP14 的 Diff map 以Action | Path | Before | After四列形式列出了完整的改动清单这是整个计划的可执行核心。整理如下Action路径Before现状After目标NEWsrc/adapters/bedrock.ts无原生适配器构建 Converse/ConverseStream 请求把 system/messages/images/tools/tool results/reasoning/usage/stop reasons 映射为 OCX 事件NEWsrc/adapters/bedrock-eventstream.ts无 AWS event-stream 解码器有界帧解码器带 CRC/长度校验、contentBlockIndex状态、异常帧、中止与终止处理NEWsrc/aws/credentials.ts无直接 AWS 凭据归属仅在 SigV4 获批后按明确优先级解析 env/shared config/container/metadata 凭据默认不 shelling outNEWsrc/aws/sigv4.ts无签名器仅在获批后canonical request、signed headers、session token、region/service scope、clock-skew-safe 测试MODIFYsrc/server/adapter-resolve.ts无bedrockadapter case为 registry id 构造原生适配器MODIFYsrc/providers/registry.tsWP12 之后仅有 Mantle新增bedrock-runtime要求 region 与 model/inference-profile ids认证模式区分 Bearer 密钥与 SigV4 凭据MODIFYsrc/types.ts无 AWS region/credential 配置增加窄化的 Bedrock 字段绝不做通用密钥袋secret bagMODIFYsrc/cli/provider.ts、src/server/management-api.ts、gui/src/components/AddProviderModal.tsx、gui/src/provider-payload.ts、gui/src/i18n/en.ts、gui/src/i18n/ko.ts、gui/src/i18n/zh.ts、gui/src/i18n/de.ts无原生 AWS 输入项region、model/profile id、Bearer-vs-SigV4 模式、脱敏后的就绪状态NEWtests/bedrock-adapter.test.ts无请求映射 fixturemessages、image、tools、tool results、inference config、stop/usage/errorsNEWtests/bedrock-eventstream.test.ts无解码器 fixture分片帧、多索引、CRC/长度失败、异常、取消、终端前 EOFNEWtests/aws-sigv4.test.ts无签名 fixture仅在 SigV4 构建时AWS 官方 canonical 向量、session token、path/query 编码、时钟边界NEWtests/bedrock-runtime-e2e.test.ts无原生中继证明本地 event-stream 服务器证明完整 Responses 桥接无需 AWS 凭据真实冒烟测试单独设门禁与现有代码结构的衔接点Diff map 中列出的两个 MODIFY 文件在仓库中已有明确实现可以据此理解改动落点src/server/adapter-resolve.ts其中的resolveWireProtocolOverride负责按硬 pin → 每模型覆盖 → registry 默认 → provider 自身适配器的优先级解析某模型应使用的 wireresolveAdapter则通过createRegisteredAdapter(providerConfig, ...)为解析后的配置构建适配器。WP14 要做的为 registry id 构造原生适配器就是在这一适配器解析链路上新增bedrock分支。src/providers/registry.ts作为计划中Registry 是 preset 唯一事实来源的枢纽registry → derive → CLI/管理 GUIbedrock-runtimepreset 的 region、model/inference-profile id 校验与 Bearer/SigV4 认证模式区分都会在此收敛。架构约束四条不可逾越的工程红线WP14 明确列出了六条架构约束其中四条直接决定原生适配器的实现形态协议归属隔离不要把 Kiro 适配器代码当作 Bedrock Runtime 代码使用只在所有权审查之后复用小型协议辅助函数。这一条在仓库中有极强的现实对应——src/adapters/kiro/目录下是一整套 CodeWhispererGenerateAssistantResponse适配器其流解析同样基于 AWS event-stream但协议语义完全不同绝不能混用。事件按contentBlockIndex关联事件 payload 通过contentBlockIndex关联到对应的内容块禁止使用单一全局当前块one global current block is forbidden。这是 Converse 流式响应中文本、工具调用、推理内容交错出现的正确处理前提。有界分配 严格 CRC帧与聚合大小在分配内存之前就必须有界CRC/长度不匹配属于协议错误绝不允许忽略。这直接对应激活场景中损坏 CRC、超大长度、异常帧、EOF-before-stop 各自产生有界错误并释放 reader的要求。模型特定参数受控模型专属参数只能通过经过审计的 provider/model policy 进入additionalModelRequestFields。Bearer 优先Bearer API 密钥可覆盖第一条可用的原生路径SigV4 保持为条件性子任务。无新 SDK 依赖不引入新的 AWS SDK 依赖除非通过 P 阶段的依赖/安全审查并取得 C4 新依赖规则的批准。基础设施佐证事件流解码器已在仓库落地WP14 规划的src/adapters/bedrock-eventstream.ts依赖的有界帧解码器能力仓库中已有可复用的底层实现——src/lib/eventstream-decoder.ts。该文件是application/vnd.amazon.eventstream解码器注释明确声明它同时服务两类 AWS event-stream 提供商kiroCodeWhisperer GenerateAssistantResponse与 amazon-bedrockConverse且是两者的基础依赖foundational dependency。其实现要点与 WP14 的架构约束完全同构线格式解析帧由[total length u32][headers length u32][prelude CRC32][headers][payload][message CRC32]组成全部整数大端序头部分为[name_len u8][name utf8][value_type u8][value …]序列。有界校验MAX_MESSAGE_LEN 16 * 1024 * 1024、MAX_HEADERS_LEN 128 * 1024decodeMessage对 total length、prelude CRC、message CRC、headers 越界逐项校验任何不匹配直接抛错。CRC32 实现IEEE/zlib 多项式0xEDB88320与aws-crypto/crc32兼容。异步流解码decodeEventStream消费ReadableStreamUint8Array处理任意 chunk 边界分片帧并在finally中先reader.cancel()再releaseLock()避免早期终止turn abort、HTTP/2 中段重置留下悬空的 pending read 导致 Bun 环境出现无法捕获的unhandledRejection。对应的 tests/responses/eventstream-decoder.test.ts 已覆盖message CRC mismatch、prelude CRC mismatch、headers 越界、超大帧、截断 header、多帧跨 chunk 边界、逐字节分片、CRC 已知向量zlib.crc32(hello) 0x3610a686、消费者提前终止时取消底层 reader、干净完成时正常关闭等场景——这些正是 WP14 中tests/bedrock-eventstream.test.ts计划覆盖的 fixture 类型的先导验证。Kiro 适配器侧的 src/adapters/kiro/stream.ts 则展示了该解码器在真实流解析中的用法import { decodeEventStream } from ../../lib/eventstream-decoder可视为 Bedrock 原生适配器流解析的参照系——但需牢记架构约束第一条只复用小型协议辅助不照搬整套 Kiro 逻辑。激活场景四条可验证的行为契约WP14 定义了四条激活场景作为适配器实现是否达标的行为契约交错块正确归位交错的 tool/text/reasoning event-stream 块映射到正确的 OCX item ids并只产生一个 terminal 事件。协议错误有界化损坏 CRC、超大长度、异常帧、EOF-before-stop 各自产生有界错误并释放 reader不得挂死或泄漏。认证模式纯净Bearer 模式只发送Authorization: BearerSigV4 模式启用时发送 canonicalAuthorization、date、payload hash、session token且任何情况下都不记录 secrets——这与 000_plan.md 中不记录任何凭据、token 响应体、签名材料或工作区 URL 查询参数的横切不变量一致。证明 lane 必要性某个在 Mantle 上不可用、但在 Runtime 上可用的模型是这条原生通道存在价值的直接证据。验证方式本地有界测试 门禁式真实冒烟WP14 给出的验证命令如下bun test tests/bedrock-adapter.test.ts tests/bedrock-eventstream.test.ts tests/bedrock-runtime-e2e.test.ts bun test tests/aws-sigv4.test.ts # 仅当 SigV4 存在时 bun run typecheck bun run privacy:scan bun run build:gui其设计要点是本地验证不依赖 AWS 凭据tests/bedrock-runtime-e2e.test.ts通过本地 event-stream 服务器证明完整的 Responses 桥接链路真实线上冒烟live smoke则单独设门禁——这与 150_integration_closeout.md 中缺失真实凭据记为NEEDS_HUMAN而不是静默通过的关闭原则保持一致。privacy:scan则用于确保新增的凭据解析、签名与请求构建路径不会把 secret 泄漏进日志。终局判定五个明确的退出状态与整个追赶计划的统一约定一致WP14 以五个终局状态收口DONE指定的 Mantle 缺口成立、原生适配器/事件流负向测试套件、认证模式、本地 E2E 与有界真实冒烟全部通过。NOOPMantle 已满足全部指定需求不新增原生适配器即该工作阶段完整执行了 P→A→B→C→D 循环后证明无需改动。NEEDS_HUMAN缺少经批准的 AWS 账户/模型/区域或 SigV4 需求决策未定。UNSAFE凭据解析/签名无法满足 secret、SSRF 或依赖策略。BLOCKED所需模型权限或区域不可用。这套判定体系的价值在于允许诚实地不做。NOOP不是跳过循环的借口而是经过验证后的记录在案的结果——正如 000_plan 所强调的一个阶段以NOOP结束当且仅当探针证明现有实现已满足契约。在追赶计划中的收尾关系WP14 完成后其证据链将汇入 WP15150_integration_closeout.md的关闭矩阵每个 provider 记录需要包含 registry id、adapter、认证模式、base/region 规则、静态与动态模型、图片/工具/流支持、超时/重试策略、聚焦测试、真实冒烟日期与终局状态。也就是说WP14 的 Diff map 不是孤立的一份清单它最终要通过 registry、catalog、管理界面、文档与运行时证据的五方同步成为整个非 OpenAI Provider 追赶计划闭环中的一环——让任何使用者在ocx provider list、/api/provider-presets与 GUI 中看到完全一致的 provider 列表与认证模式。对于希望深入代码的读者建议按以下路径继续探索事件流解码基础设施src/lib/eventstream-decoder.ts 及其测试 tests/responses/eventstream-decoder.test.ts适配器解析链路WP14 的 MODIFY 落点src/server/adapter-resolve.tsBedrock 模型元数据与供应商优先级src/generated/model-metadata.ts前置的 Mantle 通道设计120_bedrock_mantle.md整个追赶计划的依赖地图与横切不变量000_plan.md。赞分享【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载相关推荐opencodex 集成 Amazon Bedrock ConverseStream零 AWS SDK 依赖的 SigV4 与 EventStream 移植实战opencodex 集成 Amazon Bedrock ConverseStream零 AWS SDK 依赖的 SigV4 与 EventStream 移植实AIRI 接入 Amazon BedrockAPI Key 配置、Region 校验与 Converse 适配原理AIRI 接入 Amazon BedrockAPI Key 配置、Region 校验与 Converse 适配原理 Amazon Bedrock 是 AWSAI 应用人工智能大模型数字人AI Agent语音前端后端桌面应用移动开发即时通讯3D渲染npx skills 交互式安装快速指南3 个决策装好技能npx skills 交互式安装快速指南3 个决策装好技能 写给第一次上手、记不住任何命令参数的你。全文演示 npx skills 的交互式安装流程一条命令AI 技能CLI开发工具人工智能上一篇Dante Cloud数据持久化MongoDB与关系型数据库的协同作战下一篇Cherry定时器管理Actor定时任务调度实现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/24 14:11:16

S905M2-B NAND盒子刷机全攻略:短接技巧与晶晨烧录工具实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 15:01:26

天天 AI Coding 的你,出去面试的竞争力是什么?

1. 引言 这两年 AI 编程工具铺天盖地,Cursor、Copilot、通义灵码、Claude Code…… 几乎每个开发者都在用。于是面试官开始问一个很扎心的问题:“既然 AI 都能写代码了,天天用 AI Coding 的你,凭什么比不用 AI 的人更有竞争力&…

2026/9/24 15:01:26

单片机毕设项目:基于 STM32 或 51 单片机的蓝牙 APP 联动智能温控风扇设计 基于 STM32 或 51 单片机的人体感应与语音交互风扇系统开发(025508)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/24 15:01:26

红队钓鱼场景下的Nginx反向代理技术分析

在红队钓鱼中,攻击者通过Nginx反向代理(AiTM)透明转发受害者流量至真实站点,同时利用 proxy_pass 配合日志变量捕获明文账密($request_body)与会话Cookie($http_cookie);…

2026/9/24 14:56:25

在 Redwood 8.0 中集成 Sentry:错误与性能监控完整配置指南

后端前端Web框架开发工具 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood 点击查看 免费下载 本指南基于 RedwoodJS 8.0 版本文档,系统讲解如何通过一条 CLI 命令在 Redwood 应用中接入 Sentry&#xff…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码