:給路由掛上自定義轉(zhuǎn)換器)
claude-code-router 請求改寫實戰(zhàn)給路由掛上自定義轉(zhuǎn)換器【免費下載鏈接】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你正在給內(nèi)部網(wǎng)關(guān)接入 claude-code-router但這個網(wǎng)關(guān)要求每個請求都帶上x-tenant-id頭缺失就直接拒絕。標(biāo)準(zhǔn)轉(zhuǎn)發(fā)不會替你加這個頭手動改上游業(yè)務(wù)代碼又不現(xiàn)實——請求改寫request rewrite機(jī)制就是為這種場景準(zhǔn)備的在請求到達(dá)上游之前按規(guī)則悄悄改一下它??炊埱蟾膶懩芘鍪裁绰酚梢?guī)則的rewrites字段接受一組改寫指令命中規(guī)則的請求會在轉(zhuǎn)發(fā)前被逐條修改可以改請求頭、增刪改請求體里的任意 JSON 字段操作類型包括 set、delete 以及數(shù)組的 append / prepend / remove / replace。如果邏輯無法用靜態(tài)規(guī)則表達(dá)還有 script 類型的路由規(guī)則讓你用一段 JavaScript 腳本讀取請求內(nèi)容、動態(tài)決定怎么改。整個過程都發(fā)生在網(wǎng)關(guān)層業(yè)務(wù)側(cè)完全無感。給路由規(guī)則掛一個自定義頭注入先做最簡單的事往匹配路由的所有請求里注入一個租戶頭。改寫指令寫在規(guī)則的rewrites數(shù)組里每條指令由key、operation、value組成key必須以request開頭request.header.xxx指向頭request.body.a.b指向請求體字段。// 路由規(guī)則的 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 } ]寫起來像聲明配置但有幾個細(xì)節(jié)值得知道字符串 value 會被自動解析成 JSON 字面量4096落進(jìn) body 的是數(shù)字而不是字符串delete不需要 value數(shù)組操作用array-append、array-replace等其中array-replace還要求帶match指定要替換的元素。每次改寫的 before / after 值都會記錄到請求日志里驗證到底改了沒有不用靠猜。在桌面端 UI 的路由管理頁面里你可以直接為規(guī)則增刪改寫項配合匹配條件如 model 前綴、請求頭 contains 等把注入范圍圈定在需要的流量上。用路由腳本寫條件轉(zhuǎn)換邏輯靜態(tài) rewrites 的問題在于無腦全改。當(dāng)改寫依賴請求內(nèi)容時換成 script 規(guī)則指向一個.js/.mjs/.cjs文件腳本運行在獨立 worker 沙箱里超時上限 30 秒輸入對象input提供body、headers、summary含最后一條用戶消息文本、system 文本、工具名列表等字段。// 路由腳本只在命中billing的請求上切換模型并打標(biāo) 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表示不匹配路由繼續(xù)嘗試下一條規(guī)則返回對象則同時指定目標(biāo)模型和動態(tài) rewrites它們會與規(guī)則上靜態(tài)配置的 rewrites 按順序疊加生效。腳本還能返回fallbackretry / model-chain 模式覆蓋該規(guī)則的降級策略。改寫不生效時怎么查報Route rewrite cannot modify protected headerauthorization、api-key、x-api-key 以及x-auth-*、x-ccr-*前綴的頭受保護(hù)無法被改寫覆蓋——改注入x-tenant-id這類自定義頭。改寫靜默沒生效多半是規(guī)則未命中或key沒以request開頭——查請求日志里該規(guī)則的 before / after 記錄即可定位。腳本返回了 model 卻報未配置腳本指定的模型必須先在提供方配置里存在先加模型再掛腳本。下一步先跑通最小場景clone 倉庫git clone https://gitcode.com/GitHub_Trending/cl/claude-code-router啟動后在一條路由上寫一條頭注入改寫發(fā)一個真實請求核對日志里的 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創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考