更新日志¶
0.0.44¶
升级提示
- 升级前请先给数据库做快照:这个版本新增了一个 migration(第 9 条)。
AutoUpdateBRConnector为true的 stack(ec2和lambda计算形态)会在 UTC 00:00 自动拉取新的latest镜像。 - 把 stack 更新到 0.0.44 的
quick-build-brconnector.yaml模板会改变 UserData:ec2实例会停止并重新启动一次;创建时KeepEc2为false的lambda和lambda-webstack 必须重新创建。见快速部署中的“已有 stack 的模板更新”一节。 lambda-webstack 现在会在更新 stack 时构建部署包,并在启动时执行 migration(第 2 条),包括从未执行过的 0.0.43 migration,它们会删除已下线 provider 的模型(见 0.0.43)。- 备选 ECS 模板在更新时会签发新的管理员密钥,请从 SSM 参数
/brconnector/admin-key-<stack name>读取。不能再直连它的 ALB,请使用CloudFrontURL(第 6 条)。 - Lambda@Edge 的 ARN 会变化:请把
LambdaEdgeVersionArn设为新的输出(第 6 条)。 - 图像模型在 config 里设置
price_per_image之前仍然不计费(第 9 条)。 - bedrock-converse 的提示词缓存 token 现在会计费(第 9 条)。
- openai-compatible 和 azure-openai 的流式调用现在会发送
stream_options。如果上游或所用的 Azure API 版本不接受它,请在模型 config 里设置"streamUsage": false(第 9 条)。 - Claude Code Web stack:模板更新不会重建后端镜像。要用上第 11 条,请在更新 stack 时修改
ClaudeCodeWebImageBuildId(例如从1改成2),见 Claude Code Web 中的“已知限制”。
-
CI - 现在每个 pull request 都会运行单元测试、构建和模板检查。
-
lambda-web 更新 - 部署包改由 CodeBuild 构建。更新 stack 时修改
SourceRepoUrl、SourceRef或新参数WebFnBuildId,会重新构建部署包,并作为新的 Web Function revision 部署;第一次更新到 0.0.44 模板时也是如此。SourceRef现在也可以是 commit。见 AutoUpdate。
- 构建失败时,更新失败并指出失败的步骤,正在运行的 revision 保持不变。
- 回滚时会重新构建上一个SourceRef,所以在更新完成之前请保留这个 ref。如果回滚也失败,请执行aws cloudformation continue-update-rollback --stack-name <stack name> --resources-to-skip WebFnPackage。
- Web Function 现在在启动时自己执行数据库迁移(不再设置SKIP_DB_INSTALL),整个安装过程都在同一个锁内完成。 -
EC2 启动日志与启动脚本
- stack 的 EC2 实例不再把密钥和密码写进启动日志或控制台输出。新建的 stack 把 BRConnector 的启动命令写在仅 root 可读的/root/brconnector-run.sh(权限 0700),每晚的更新执行bash /root/brconnector-run.sh latest。0.0.44 之前创建的 stack 仍按首次启动时记录的命令更新。
- 模板更新之后,已有 ec2 stack 的每晚更新还会把启动日志和生成的密钥文件改为仅 root 可读。
- 0.0.44 之前创建的 stack 如果有其他用户能登录实例或读取它的控制台输出,管理员可以轮换 admin key(保存在 SSM 参数/brconnector/admin-key-<stack name>)。见快速部署中的“0.0.44 之前创建的 stack 的 admin key”一节。
-PGPassword参数改为 NoEcho。 -
区域 -
ec2、lambda、ecs现在可以用在 17 个区域:us-east-1、us-east-2、us-west-1、us-west-2、ca-central-1、sa-east-1、eu-west-1、eu-west-2、eu-west-3、eu-central-1、eu-north-1、ap-northeast-1、ap-northeast-2、ap-northeast-3、ap-southeast-1、ap-southeast-2、ap-south-1。lambda-web只能用在提供 Lambda Web Functions 的区域:us-east-1、us-east-2、us-west-2、ap-northeast-1、eu-west-1(最新列表见 AWS Capabilities by Region),模板会在其他区域拒绝它。Claude Code Web 需要 AgentCore Runtime,因此不能在 ap-northeast-3 使用。见快速部署中的“支持的区域”一节。 -
IAM 角色与安全组
- 辅助 EC2 角色、清理函数角色和 lambda 夜间更新角色只保留各自实际调用所需的权限。已移除宽泛的托管策略:ECR、Lambda、ECS、EC2 的 FullAccess,EC2 只读,CloudWatch Logs FullAccess,以及 CodeBuild 管理员。
- 清理函数只能终止本 stack 的实例。
- 夜间更新的输出仍然不写入 S3。
- ECS 负载均衡器的安全组只在ecs计算形态下创建。 -
备选 ECS 模板与 Lambda@Edge
- 备选 ECS 模板的管理员密钥改用密码学随机源生成(32 位)。更新 stack 会签发新密钥,请用aws ssm get-parameter --name /brconnector/admin-key-<stack name> --query Parameter.Value --output text读取。输出AdminApiKey改为AdminApiKeyParameter。
- 它的 ALB 只允许 CloudFront 访问,并移除了LoadBalancerURL输出,因此不能再直连 ALB,请使用CloudFrontURL。
- Lambda@Edge 函数不再记录请求头,运行时升级到 nodejs24.x。它发布新版本v2,ARN 随之变化:请把 BRConnector stack 的LambdaEdgeVersionArn参数设为新的LambdaEdgeVersionArn输出。 -
图片 URL - 见 FAQ。
- 聊天请求中的图片 URL 由 BRConnector 所在主机直接下载,不经过HTTPS_PROXY或HTTP_PROXY,并且只从公网地址下载。每次重定向都会重新检查,最多 3 次。响应的内容类型须为image/*,大小不超过 10 MiB,并在 15 秒内下载完成。
- 没有直接互联网出口的部署,请以data:URL 向聊天模型发送图片,data:URL 不受影响。
- 其他 URL,以及过去会发送空图片的不支持协议,现在返回 HTTP 400。
-source含s3Location的内容块返回 HTTP 400,请内联发送内容。
- nova-canvas 接受http(s)URL,或指向模型自己的s3Bucket的s3://URL;被拒绝的图片 URL 返回 HTTP 400。 -
移除共享密钥接口 - 移除
/open/get-shared-api-key,BRClient 入口页不再自动填入密钥,BRClient 用户需自行输入密钥。名为__shared-api-key__的密钥现在是普通密钥。 -
计费
- bedrock-converse 现在按模型 config 里的price_cache_read和price_cache_write(按每 token 计;未设置时按price_in)对提示词缓存的读取和写入计费,并计入记录的输入 token。1 小时缓存写入也按price_cache_write计。自己创建的 converse 模型如果使用提示词缓存,请设置这两个价格。见 bedrock-converse。
- migration2026-10-23-converse-cache-prices.sql为claude-opus-5-5-chat、claude-sonnet-5-5-chat、claude-haiku-5-5-chat预置模型补上缺少的这两个价格:缓存读取为price_in的 0.05 倍(Opus 和 Sonnet)或 0.1 倍(Haiku),缓存写入为 1.25 倍。管理员已设置的价格保持不变。
- openai-compatible 和 azure-openai 的流式调用现在会向上游要求返回 usage,并在流结束后计费一次,不论结束原因。只含 usage 的数据块只转发给要求了它的客户端。上游不接受stream_options时,可用新的 config 项streamUsage: false关闭。
- bedrock-agent 调用现在按 agent trace 里的 token 用量计费。trace 不会发给客户端,也不写入日志。
- 配置bedrockModelArn的知识库调用现在按问题、回答和回答所引用的检索结果,以每 4 个字符 1 个 token 估算计费;未被引用的检索结果不计入。
- painter、nova-canvas 和 azure-openai-image 现在会记录每次图像生成,并按新的 config 项price_per_image(按每张图片计)计费。未设置时价格为 0,请设置它,图像生成才会计费。
- 充值金额超过两位小数时返回 HTTP 400,充值在同一事务中记录。 -
飞书机器人 - 飞书机器人现在每个连接器只保留一个 WebSocket 客户端,配置变更或删除时会关闭旧客户端。
-
Claude Code Web -
/ping现在上报最近一次真实活动的时间,使 AgentCore 空闲超时能够生效;serve将 SIGTERM 传递给服务进程以便正常关闭。对话 agent 改用 Claude Code 2.1.310(claude-agent-sdk 0.2.174,原为 2.1.1):/mcp、/cost等命令会执行并显示输出,不再和下一条消息合并;新会话不再发三次 Warmup 调用;对话里显示的费用与 BRConnector 实际计费一致。恢复一个没有会话记录的 session id 时返回 404,不再是 500 #169。已有 stack 要在更新 stack 时修改ClaudeCodeWebImageBuildId才会用上(见升级提示)。 -
文档 - 各计算形态的 AutoUpdate、已有 stack 的更新方法,以及 Claude Code Web 中的联网搜索预算示例。
-
依赖 - nodemailer 10.2.1 #165、vite 6.4.5 #166。Claude Code Web:source-map-js 1.2.2 #156、nanoid 3.3.20 #157、postcss 8.5.31 #158、react-router 和 react-router-dom 7.18.4 #159、baseline-browser-mapping 2.11.31 #160、browserslist 4.29.4 #161、vite 7.3.7(随之引入 esbuild 0.28)#162、aiohttp 3.14.4 #163、pyjwt 2.15.0 #167。
-
lambda 计算形态修复
- 新建的lambdastack 无法访问:2025 年 10 月起创建的 function URL 还需要lambda:InvokeFunction权限。模板现在授予该权限,并限定只能通过 function URL 调用;更新已有的lambdastack 会补上这条权限。
-KeepEc2为false时,辅助实例现在会在安装完成后被终止。
0.0.43¶
升级警告 - 升级前请先给数据库做快照:这次升级会删除已下线 provider 的模型(第 4 条),并添加预置模型(第 2 条)。AutoUpdateBRConnector 为 true 的 stack(ec2 和 lambda 计算形态)会在 UTC 00:00 自动拉取新的 latest 镜像。
-
Claude Code Web - 在浏览器里使用 Claude Code,由 BRConnector 在
/cc提供,运行在 Amazon Bedrock AgentCore Runtime 上,每个 API key 有自己的 microVM 和 S3 工作区。它的模型调用用该用户的 key 打回/v1/messages,额度和计费照常生效。在 CloudFormation 模板里用EnableClaudeCodeWeb打开,见 Claude Code Web。#155
- 用户的~/.claude/settings.json里没有skipWebFetchPreflight时,会写入"skipWebFetchPreflight": true;用户自己设置的值会保留。
- 新参数EnableWebSearch默认true,更新已有 stack 时也是如此。打开 Claude Code Web、且区域为 us-east-1、us-east-2、us-west-2、eu-west-1、ap-southeast-2 或 ap-northeast-1 时,会创建一个带 Web Search target 的 AgentCore Gateway。只有 Runtime 角色可以调用这个 gateway。
- 搜索由 AWS 向部署 stack 的账号收费(约每 1,000 次查询 7 美元),不计入 BRConnector 的额度。建议设置 AWS Budgets 告警,或者把EnableWebSearch设为false。
- 配置了 gateway 时,Claude Code 内置的 WebSearch 工具会被隐藏。 -
已有数据库也会获得预置模型 - BRConnector 启动时(
lambda-web形态除外,见第 4 条)会执行src/scripts/migrations/中该数据库还没有执行过的 SQL migration。已有数据库缺少的预置模型会被添加并绑定到 group 1;已经存在的同名模型保持不变。#153 -
预置模型 - bedrock-runtime-openai 新增 7 个 GPT-6、GPT-5.6 预置模型 #152。bedrock-converse 新增
claude-opus-5-5-chat、claude-sonnet-5-5-chat、claude-haiku-5-5-chat,NoDB 模式和知识库摘要改用它们。移除 Claude 3.x 预置模型和 NoDB 默认模型,已有的模型保持不变。#154 -
下线的 Provider - 移除
aws-executor、urls-reader、web-miner,请改用 Claude Code Web(/cc)。
- 升级时的 migration 会删除这些 provider 上的模型,以及它们与 key、group 的绑定。历史记录(threads 和 sessions)会保留。
- 请求这些 provider 上的模型会返回 HTTP 400,并提示改用 Claude Code Web(/cc)。模型删除之后,这类请求会得到通常的模型不存在的回答,引用该模型的 smart-router 规则、localLlmModel和机器人连接器也一样。
-lambda-web形态不同。更新 stack 不会部署 0.0.43:部署包只在创建 stack 时构建,函数启动时也不执行 migration。要运行 0.0.43,请新建一个lambda-webstack,它的数据库会在创建 stack 时按 0.0.43 初始化。如果要手动把已有数据库升级到最新,请先做快照,再按文件名顺序执行src/scripts/migrations/中的文件:2026-10-20-preset-models.sql、2026-10-20b-claude-chat-presets.sql、2026-10-22-retire-providers.sql。最后一个文件执行的语句是:BEGIN; DELETE FROM eiai_key_model WHERE model_id IN (SELECT id FROM eiai_model WHERE provider IN ('aws-executor', 'urls-reader', 'web-miner')); DELETE FROM eiai_group_model WHERE model_id IN (SELECT id FROM eiai_model WHERE provider IN ('aws-executor', 'urls-reader', 'web-miner')); DELETE FROM eiai_model WHERE provider IN ('aws-executor', 'urls-reader', 'web-miner'); COMMIT; -
移除模型 id 覆盖 - 模型字符串
name/<id>如果本身不是已配置的模型名称,现在对所有 key 都返回 HTTP 400。飞书机器人、知识库和 smart-router 中包含/的模型 id,以及 azure-openai 模型,同样如此。请求体里的model_id字段会被忽略。需要使用某个上游模型 id 时,请为它配置一个模型;配置的模型名称本身可以包含/(见 FAQ)。 -
计费
- 超出月度额度的花费现在从余额中扣除。
- 余额最多因最后几次调用变为负数。之后调用会被拒绝,直到充值,或者到下个月(月度额度大于 0 时)。
- 扣费是原子操作,充值会加到数据库中保存的余额上。
- 充值通过缓存在 60 秒内同步到所有实例。
- key 显示的month_fee在新月份第一次扣费之前,仍是上个月的值。 -
Session-Id - 在所有路由上,超过 128 个字符的
Session-Id都返回 HTTP 400。 -
用户 API
-/user/model/list只返回name、provider、price_in、price_out、multiple、group_name。
-/user/thread/list只返回调用者自己的 threads,limit最大为 100(/admin/thread/list也一样)。
- 会话列表和充值记录列表的orderBy只接受固定的几个值,其他值按默认顺序排序。 -
API key 与日志
- 新的 API key 使用密码学随机源生成。
- 除 debug 模式外,日志不再记录 SQL 参数和完整的错误对象。
0.0.42¶
-
新增 bedrock-runtime-anthropic Provider - 面向 Claude Code 等 Anthropic Messages 客户端。
POST /v1/messages直接透传到 Bedrock 原生的/anthropic/v1/messages,system、tools、thinking、cache_control、context_management原样送达模型。计费覆盖输入、缓存读、5 分钟与 1 小时缓存写入和输出;同一会话固定 region 和凭证,让 prompt cache 持续命中。新库预置 6 个 Claude 模型。#147 -
新增 bedrock-runtime-openai Provider - 将 OpenAI Chat Completions 请求透传到 Bedrock 的
/openai/v1/chat/completions,用于 Kimi K3、GLM 等 OpenAI 格式的模型。新库预置 7 个模型。#141 -
/v1/messages 返回 Anthropic 格式错误 -
/v1/messages的错误改为{"type":"error","error":{...}},状态码与类型对应,例如 401authentication_error、403permission_error,Anthropic SDK 可以直接识别。其他路由不变。#147 -
支持 AWS Lambda Web Functions - CloudFormation 模板新增
lambda-webComputeType,在 Lambda Web Functions 上运行 BRConnector:无需 adapter、原生流式响应、按活跃 CPU 计费、请求最长 900 秒。endpoint 默认IamAuth,只允许 CloudFront 访问,并且每个请求还要校验回源共享密钥。原有的lambdaComputeType 不变。#145 #148 -
并发修复:每个请求独立的 Provider 实例 - 并发请求不再共享 provider 状态和模型数据。#144
-
bedrock-converse 修复
- 不再向不接受temperature、top_p的 Claude 模型(Opus 4.x 与 Claude 5.x)发送这两个参数;单 region 模型遇到ValidationException不再重试。#146
- Bedrock API key 和 AK/SK 凭证只作用于各自的模型。#138
- 从 Anthropic 请求体读取thinking参数。#122 -
BRClient 入口页 - 没有保存 API key 时,自动开启 BRConnector 模式并打开设置页。#142
-
容器以非 root 运行 - 两个 Docker 镜像改为以
node用户运行;健康检查不再依赖 curl(之前容器一直显示 unhealthy);飞书机器人的临时文件改写到系统临时目录。#150 -
构建与依赖 -
dist/package.json不再包含 devDependencies #140。依赖升级:#109 #110 #111 #114 #115 #116 #128 #132 #133 #134 #135 #136 #137 #143
升级提示:预置模型只会写入新建的数据库;已有数据库请在管理后台手动添加需要的模型。后台的 Price-In / Price-Out 按每百万 token 填写,模型 config 里的缓存价按每 token 填写。
0.0.41¶
-
Anthropic Messages API 兼容 - 新增
POST /v1/messages端点,完全兼容 Anthropic Messages API。使用 Anthropic SDK 的客户端无需任何修改即可直接接入。支持 text、tool use、thinking 内容块,以及流式和非流式两种模式。 -
支持 x-api-key 认证头 - 新增对
x-api-keyheader(Anthropic SDK 默认认证方式)的支持,同时保留原有的Authorization: Bearer方式。 -
Bug 修复:claude-opus-4 temperature/topP - 修复了向
claude-opus-4及更新模型发送已废弃的temperature和topP参数导致invalid_request_error的问题。 -
构建修复 - 移除了
vite.config.js中硬编码的本地kui-vue路径别名(导致非作者机器构建失败),将vite从实验性的rolldown-vite降级为稳定版^6.3.3。
0.0.40¶
-
AWS Bedrock Bearer Token 支持 - 新增对 AWS Bedrock API Key(Bearer Token)认证方式的支持,可与传统 AKSK 凭证方式并用。
-
多工具调用修复 - 修复了流式模式下单次响应包含多个工具调用时处理不正确的问题。
0.0.38¶
-
Bedrock 应用配置文件支持 - 添加了对 Bedrock 应用配置文件的支持,允许为不同的部署场景提供更好的配置管理。#87
-
PostgreSQL 数据库升级 - 将独立 PostgreSQL 数据库从 16.3 版本升级到 16.10,提升性能和安全性。#89
-
零长度消息修复 - 修复了 Bedrock 在处理零长度消息时失败的问题。#90
-
常规改进 - 各种 bug 修复和性能优化。
0.0.37¶
-
bedrock-converse 提供器修复 - 修复了 Claude 新模型的一个问题:’The model returned the following errors: temperature and top_p cannot both be specified for this model. Please use only one.’
-
前端缓存优化 - 为 koa-static-server 提供的前端页面增加了 1 个月的缓存。
0.0.36¶
- 支持 anthropic_beta 特性 - 添加了对 anthropic_beta 特性的支持,包括:
- 兼容 Claude 3.7 Sonnet 的:token-efficient-tools-2025-02-19,output-128k-2025-02-19
- 兼容 Claude Sonnet 4 的:context-1m-2025-08-07
这些特性直接集成到后台逻辑中,无需单独配置。参考页面:AWS Bedrock Anthropic Claude 参数
- Thinking 模式优化 - 在 thinking 模式下,将 content 的内容设置为空字符串,之前是 null。
0.0.35¶
-
新提供器:gemini - 添加了新的 Google Gemini 提供器。感谢 “daniexon” 的贡献。
-
功能增强:openai_compatible 提供器工具调用 - openai_compatible 提供器现在支持将工具调用传递给模型。感谢 “bdavj” 的贡献。
-
格式映射:Bedrock Converse finish_reason - 将 Bedrock Converse 的 finish_reason 映射到 OpenAI 格式,提高兼容性。
-
新参数支持:max_completion_tokens - 添加了对 max_completion_tokens 参数的支持。
-
新增 Docker 文件 - 新增加了两个 Dockerfile。
0.0.34¶
- Bug 修复 - 修复了一些小的 bug,提升了系统稳定性。