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

WSL 下使用 Claude Code Router 将 VS Code Claude Code 指向 AWS Bedrock GLM-5 模型

背景

最近在 Windows + WSL 环境下折腾 Claude Code,希望在 VS Code 里使用 Claude Code 的编码助手能力,但后端模型不走 Anthropic 官方 Claude(因为不开放),而是走 AWS Bedrock 上的zai.glm-5

一开始以为只要在.bashrc环境参数里把 Base URL 改成 Claude Code Router 的本地地址就可以:

http://127.0.0.1:3456

但实际踩坑后发现:只配置这一行是不够的

Claude Code 插件本身仍然需要一些原始 Claude Code 参数,比如认证 Token、模型名称、默认 Haiku 模型等。虽然这些参数最后不一定真的被 AWS 使用,甚至会被 Claude Code Router 接管或忽略,但它们需要存在,否则 Claude Code 插件可能无法正常启动,在执行claude 会提示:

Not logged in · Please run /login

本文记录一下完整配置过程。


目标架构

最终架构如下:

Windows VS Code ↓ Remote WSL VS Code Server in WSL ↓ Claude Code VS Code 插件 ↓ Claude Code native binary / CLI ↓ Claude Code Router, CCR ↓ AWS Bedrock Mantle OpenAI-compatible endpoint ↓ zai.glm-5

简单说:

Claude Code 仍然以为自己在调用 Claude API,但实际请求被 Claude Code Router 转发到了 AWS Bedrock 的 GLM-5。

Claude Code Router 的定位就是把 Claude Code 请求路由到不同模型,并支持多 Provider、请求/响应转换和动态模型切换。([GitHub][1])

AWS Bedrock 上 GLM-5 的模型 ID 是:

zai.glm-5

AWS 文档中也给出了通过 Bedrock Mantle 访问该模型的端点形式。([Amazon Web Services 文档][2])


环境说明

我的环境大致如下:

Windows 11 WSL2 Ubuntu VS Code Remote WSL Claude Code VS Code 插件 Claude Code Router AWS Bedrock zai.glm-5

确认 VS Code 当前是否运行在 WSL 里,可以看左下角是否显示:

WSL: Ubuntu

也可以在 VS Code 终端里执行:

uname-a

如果输出里包含 Linux / WSL2,说明当前终端是在 WSL 环境中。


第一步:安装 Claude Code Router

在 WSL 终端中安装:

npminstall-g@musistudio/claude-code-router

安装后确认:

ccr--version

如果你也想在终端里直接使用 Claude Code CLI,可以安装:

npminstall-g@anthropic-ai/claude-code

不过需要注意:VS Code Claude Code 插件可能会自带 native binary,并不一定使用你全局安装的claude命令。

我在排查时看到 VS Code 插件实际拉起的是类似这样的进程:

/home/xxx/.vscode-server/extensions/anthropicclaude-code-2.1.xxx/resources/native-binary/claude

所以全局 CLI 和 VS Code 插件内置 binary 是两回事。


第二步:配置 Claude Code Router

创建配置目录:

mkdir-p~/.claude-code-router

编辑配置文件:

code ~/.claude-code-router/config.json

示例配置如下:

{"PORT":3456,"LOG":true,"API_TIMEOUT_MS":600000,"Providers":[{"name":"aws-glm5","api_base_url":"https://bedrock-mantle.us-east-1.api.aws/v1/chat/completions","api_key":"你的_AWS_BEARER_TOKEN_BEDROCK","models":["zai.glm-5"],"transformer":{"use":[["openai"]]}}],"Router":{"default":"aws-glm5,zai.glm-5","background":"aws-glm5,zai.glm-5","think":"aws-glm5,zai.glm-5","longContext":"aws-glm5,zai.glm-5","longContextThreshold":60000}}

其中需要替换的内容主要有:

us-east-1 你的_AWS_BEDROCK_MANTLE_API_KEY

us-east-1要改成你实际开通 Bedrock GLM-5 的 Region。

AWS GLM-5 的 Mantle endpoint 形式类似:

https://bedrock-mantle.<region>.api.aws/v1

模型 ID 为:

zai.glm-5

这些信息以 AWS 官方文档为准。([Amazon Web Services 文档][2])

配置好之后启动 CCR:

ccr start

查看状态:

ccr status

第三步:VS Code 插件配置

这是我踩坑的重点。

一开始我以为只需要在.bashrc环境变量中配置,其他可以不配:

export ANTHROPIC_BASE_URL=http://127.0.0.1:3456

但实际不够。

export ANTHROPIC_BASE_URL=http://127.0.0.1:3456 export ANTHROPIC_API_KEY=sk-XXXX export ANTHROPIC_MODEL=qwen3.6-plus export ANTHROPIC_DEFAULT_OPUS_MODEL="qwen3.6-plus" export ANTHROPIC_DEFAULT_SONNET_MODEL="qwen3.6-plus" export ANTHROPIC_DEFAULT_HAIKU_MODEL="qwen3-coder-next"

注意这里的几个点:

  1. ANTHROPIC_BASE_URL指向本地 CCR:
http://127.0.0.1:3456
  1. ANTHROPIC_API_KEY可以是占位值,例如:
dummy

因为真正访问 AWS 的 Key 在 CCR 配置里。

  1. ANTHROPIC_MODELANTHROPIC_DEFAULT_HAIKU_MODEL仍然需要配置。

这两个模型名虽然看起来是 Claude 模型,但在 CCR 路由模式下,它们主要是为了让 Claude Code 插件正常工作。真实转发到哪个模型,由~/.claude-code-router/config.json里的Router决定。

也就是说,Claude Code 前端显示的模型名和最终后端模型名不一定一致。

类似的第三方接入文章中,也会同时配置 Base URL、Auth Token、主模型和默认小模型,而不是只配 Base URL。


第四步:重启 VS Code WSL 窗口

配置完成后,建议重启 VS Code 的 WSL 窗口。

在 VS Code 命令面板执行:

Developer: Reload Window

或者直接关闭 VS Code,再从 WSL 项目目录重新打开:

cd~/work/your-project code.

第五步:验证是否真的走了 CCR

先看 Claude Code 是否能正常聊天。

如果没接上,常见提示是:

Not logged in · Please run /login

如果已经可以聊天,说明至少 Claude Code 插件已经能连到某个兼容服务。

但这还不能完全证明真实模型就是zai.glm-5。因为 Claude Code 的界面里可能仍然显示:

Sonnet 4.6 · API Usage Billing

甚至你问它:

你现在用的是哪个模型?

它也可能回答:

I'm using Claude Sonnet 4.6

这个并不能作为真实后端模型的判断依据。

原因是 Claude Code 本体仍然以为自己在和 Claude API 通信,Router 只是中间转发层。模型在上下文里看到的客户端信息可能仍然是 Claude Code / Sonnet,所以会照着回答。

真正的验证方式应该看 CCR 日志。

查看日志文件:

find~/.claude-code-router-typef-printf'%T@ %p\n'|sort-nr|head-20

然后 tail 最新日志:

tail-f~/.claude-code-router/*.log ~/.claude-code-router/logs/*.log2>/dev/null

发送一条消息后,观察日志中是否出现类似:

aws-glm5 zai.glm-5

如果出现,说明请求确实被 CCR 路由到了 AWS Bedrock GLM-5。

也可以在 AWS 侧通过 Bedrock / CloudWatch / Billing 用量进一步确认是否有zai.glm-5调用。


第六步:排查 VS Code 插件实际拉起的 Claude 进程

如果你想看 VS Code 插件到底拉起了什么,可以在 WSL 中执行:

psaux|grepclaude

我当时看到类似:

/home/xxx/.vscode-server/extensions/anthropicclaude-code-2.1.xxx/resources/native-binary/claude \ --output-format stream-json \ --input-format stream-json \ --permission-prompt-tool stdio \ --resume xxxxxxxx \ --setting-sources=user,project,local

这说明 VS Code 插件通过 stdio / stream-json 和本地 Claude Code binary 通信。

如果要看该进程环境变量,可以执行:

PID=你的进程IDtr'\0''\n'</proc/$PID/environ|sort|grep-E'ANTHROPIC|CLAUDE|OPENAI|AWS|BEDROCK|BASE|MODEL'

重点确认里面是否有:

ANTHROPIC_BASE_URL=http://127.0.0.1:3456 ANTHROPIC_AUTH_TOKEN=dummy ANTHROPIC_MODEL=claude-sonnet-4-6 ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

如果没有,说明 VS Code 插件没有读到你的环境变量配置。


最终配置回顾

CCR 配置

~/.claude-code-router/config.json

{"PORT":3456,"LOG":true,"API_TIMEOUT_MS":600000,"Providers":[{"name":"aws-glm5","api_base_url":"https://bedrock-mantle.us-east-1.api.aws/v1/chat/completions","api_key":"你的_AWS_BEDROCK_MANTLE_API_KEY","models":["zai.glm-5"],"transformer":{"use":[["openai"]]}}],"Router":{"default":"aws-glm5,zai.glm-5","background":"aws-glm5,zai.glm-5","think":"aws-glm5,zai.glm-5","longContext":"aws-glm5,zai.glm-5","longContextThreshold":60000}}

启动 CCR

ccr start ccr status

验证日志

tail-f~/.claude-code-router/*.log ~/.claude-code-router/logs/*.log2>/dev/null

总结

这次配置的核心点是:

Claude Code 插件仍然需要“看起来像 Claude”的配置,Claude Code Router 负责把真正的请求转发到 AWS Bedrock GLM-5。

所以不要只配:

ANTHROPIC_BASE_URL=http://127.0.0.1:3456

还要保留:

ANTHROPIC_AUTH_TOKEN ANTHROPIC_MODEL ANTHROPIC_DEFAULT_HAIKU_MODEL

虽然这些参数在最终请求中可能只是占位,真正生效的是 CCR 的:

"Router":{"default":"aws-glm5,zai.glm-5"}

最终判断是否成功,不要看 Claude Code 欢迎页显示的 Sonnet,也不要问模型“你是谁”,而是看:

CCR 日志 AWS Bedrock 调用记录

只要日志里出现aws-glm5zai.glm-5,就说明 VS Code Claude Code 已经通过 CCR 成功指向 AWS Bedrock 上的 GLM-5 模型。

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

相关文章:

  • 如何用大气层Atmosphere解锁Switch隐藏潜能:从新手到高手的完整路线图
  • 基于TinyEMU的RISC-V指令集验证实战(一)
  • 从游戏加载到数据库响应:为什么你的SSD需要关注99.9%延迟?一个真实场景的性能解读
  • 速度即护城河:AMD GPU 上的推理性能
  • ESP8266 I2C通信避坑指南:从SHT30读取失败到BH1750数据不准的常见问题排查
  • 明景裕达祥贴隐形车衣靠谱吗,客户案例来证明 - 工业品网
  • 白世贸花岗岩源头厂家怎么选?靠谱供应商筛选攻略来了 - 匠言榜单
  • 信创即时通讯怎么选?三个标准帮你判断
  • 修好三个老旧电源适配器后,我总结的12V开关电源常见故障排查指南(附实物图对照)
  • 终极Windows Defender禁用指南:开源工具defender-control的完整解决方案
  • 5步掌握Meshroom:开源3D重建软件终极指南
  • 从‘炼丹’到‘工程’:我的机器学习模型调优避坑指南(附SGD/过拟合实战)
  • Windows虚拟显示器终极指南:3分钟免费扩展无限屏幕空间
  • Hermes一键包:解压即用,有手就会!
  • 分析济南隐形车衣服务品牌,哪家性价比高? - 工业品牌热点
  • 蓝桥杯单片机比赛,用reg52.h还是STC15F2K60S2.h?一个选择可能让你多写几十行代码
  • Arduino新手必看:用一块面包板和几行代码,让你的第一个LED灯闪烁起来(附完整接线图)
  • STM32CubeMX配置GPIO输出模式避坑指南:推挽 vs 开漏,点亮LED时到底该选哪个?
  • Origin数据处理别再只会复制粘贴了!手把手教你用F(x)公式栏和筛选器搞定科研数据
  • 2026年聊聊前缘高速高清水墨印刷机推荐厂商,哪家性价比高 - 工业推荐榜
  • TNF-α蛋白的结构特征与信号转导机制研究
  • 酥饼机技术实力对比:核心技术与落地适配要点讲解
  • 从图片识别到灭火器交互:我是如何用Vuforia + HoloLens 2完成一个MR实体识别项目的
  • 从EEPROM到液晶屏:一个FPGA工程师的SPI实战踩坑记录(附Verilog代码)
  • MySQL 调优
  • Nintendo Switch大气层系统终极指南:如何在5分钟内完成专业级自制系统部署?
  • 2026年山东断桥铝门窗与系统阳光房选购完全指南:泰安峰睿门窗定制方案深度评测 - 企业名录优选推荐
  • 网易云音乐NCM格式终极解密:3分钟掌握免费转换技巧,彻底解放你的音乐库
  • 如何构建航班价格自动化监控系统以应对动态定价挑战?
  • Hotkey Detective:深入解析Windows热键冲突检测的技术实现与实战应用