claude-code-router 请求改写实战:给路由挂上自定义转换器

发布时间:2026/9/1 11:27:04
claude-code-router 请求改写实战:给路由挂上自定义转换器 claude-code-router 请求改写实战给路由挂上自定义转换器【免费下载链接】claude-code-routerOne local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router你正在给内部网关接入 claude-code-router但这个网关要求每个请求都带上x-tenant-id头缺失就直接拒绝。标准转发不会替你加这个头手动改上游业务代码又不现实——请求改写request rewrite机制就是为这种场景准备的在请求到达上游之前按规则悄悄改一下它。看懂请求改写能碰什么路由规则的rewrites字段接受一组改写指令命中规则的请求会在转发前被逐条修改可以改请求头、增删改请求体里的任意 JSON 字段操作类型包括 set、delete 以及数组的 append / prepend / remove / replace。如果逻辑无法用静态规则表达还有 script 类型的路由规则让你用一段 JavaScript 脚本读取请求内容、动态决定怎么改。整个过程都发生在网关层业务侧完全无感。给路由规则挂一个自定义头注入先做最简单的事往匹配路由的所有请求里注入一个租户头。改写指令写在规则的rewrites数组里每条指令由key、operation、value组成key必须以request开头request.header.xxx指向头request.body.a.b指向请求体字段。// 路由规则的 rewrites 字段每条都是一条改写指令 rewrites: [ { key: request.header.x-tenant-id, operation: set, value: acme }, { key: request.body.max_tokens, operation: set, value: 4096 }, { key: request.header.x-legacy-flag, operation: delete } ]写起来像声明配置但有几个细节值得知道字符串 value 会被自动解析成 JSON 字面量4096落进 body 的是数字而不是字符串delete不需要 value数组操作用array-append、array-replace等其中array-replace还要求带match指定要替换的元素。每次改写的 before / after 值都会记录到请求日志里验证到底改了没有不用靠猜。在桌面端 UI 的路由管理页面里你可以直接为规则增删改写项配合匹配条件如 model 前缀、请求头 contains 等把注入范围圈定在需要的流量上。用路由脚本写条件转换逻辑静态 rewrites 的问题在于无脑全改。当改写依赖请求内容时换成 script 规则指向一个.js/.mjs/.cjs文件脚本运行在独立 worker 沙箱里超时上限 30 秒输入对象input提供body、headers、summary含最后一条用户消息文本、system 文本、工具名列表等字段。// 路由脚本只在命中billing的请求上切换模型并打标 if (!input.summary.lastUserText.includes(billing)) return null; return { model: Provider/audit, rewrites: [{ key: request.header.x-routed-by, operation: set, value: script }] };返回null或false表示不匹配路由继续尝试下一条规则返回对象则同时指定目标模型和动态 rewrites它们会与规则上静态配置的 rewrites 按顺序叠加生效。脚本还能返回fallbackretry / model-chain 模式覆盖该规则的降级策略。改写不生效时怎么查报Route rewrite cannot modify protected headerauthorization、api-key、x-api-key 以及x-auth-*、x-ccr-*前缀的头受保护无法被改写覆盖——改注入x-tenant-id这类自定义头。改写静默没生效多半是规则未命中或key没以request开头——查请求日志里该规则的 before / after 记录即可定位。脚本返回了 model 却报未配置脚本指定的模型必须先在提供方配置里存在先加模型再挂脚本。下一步先跑通最小场景clone 仓库git clone https://gitcode.com/GitHub_Trending/cl/claude-code-router启动后在一条路由上写一条头注入改写发一个真实请求核对日志里的 before / after。改写的完整操作集和脚本沙箱的校验、超时、熔断逻辑分别看 rewrite.ts 与 route-script-runtime.ts。【免费下载链接】claude-code-routerOne local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考