{
  "issues": [
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1217",
      "id": 3947527711,
      "node_id": "I_kwDON-_mZc7rSn4f",
      "number": 1217,
      "title": "Claude code breaks prompt caching for llama.cpp models",
      "user": {
        "login": "WinPooh32",
        "id": 8412071,
        "node_id": "MDQ6VXNlcjg0MTIwNzE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8412071?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/WinPooh32",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-16T12:27:22Z",
      "updated_at": "2026-02-16T12:27:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Claude cli adds header message at the beginning of the chat history and changes it's content on every new user request:\n\n<img width=\"1099\" height=\"473\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/09d17d8b-1c77-42c9-a911-6c6c8764567a\" />\n\nThis message breaks prompt caching. \n\nI have made simple script for **mimtmproxy** that removes that text from the request:\n```py\nfrom mitmproxy import http \nimport re\n\ncchRe = r\"cc_version=.*?;.*? cch=.*?;\"\n\nfrom collections.abc import Iterable\n\ndef request(flow: http.HTTPFlow) -> None:\n    c =  flow.request.content\n    flow.request.content = str.encode(re.sub(cchRe, r\"\",  c.decode('utf-8')))\n```\n\nAnd prompt caching starts to work!\n\n<img width=\"758\" height=\"892\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2d8613bd-36bd-4e0b-a6b7-c24f6c830fca\" />\n\nCan we remove that header message by the **claude-code-router**?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1217/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1213",
      "id": 3940585559,
      "node_id": "I_kwDON-_mZc7q4JBX",
      "number": 1213,
      "title": "API Error: 400 {\"error\":\"Missing model in request body\"}",
      "user": {
        "login": "Uzair-Ahmed-Dev",
        "id": 160987011,
        "node_id": "U_kgDOCZh3gw",
        "avatar_url": "https://avatars.githubusercontent.com/u/160987011?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Uzair-Ahmed-Dev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-02-14T06:19:11Z",
      "updated_at": "2026-02-16T08:33:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{  \n  \"LOG\": true,  \n  \"LOG_LEVEL\": \"info\",  \n  \"HOST\": \"127.0.0.1\",  \n  \"PORT\": 3456,  \n  \"API_TIMEOUT_MS\": 600000,  \n  \"Providers\": [  \n    {  \n      \"name\": \"qwen\",  \n      \"api_base_url\": \"https://portal.qwen.ai/v1/chat/completions\",  \n      \"api_key\": \"xyz\",  \n      \"models\": [  \n        \"qwen3-coder-plus\",  \n        \"qwen3-coder-plus\",  \n        \"qwen3-coder-plus\"  \n      ]  \n    }  \n  ],  \n  \"Router\": {  \n    \"default\": \"qwen,qwen3-coder-plus\",  \n    \"background\": \"qwen,qwen3-coder-plus\",  \n    \"think\": \"qwen,qwen3-coder-plus\",  \n    \"longContext\": \"qwen,qwen3-coder-plus\",  \n    \"longContextThreshold\": 60000,  \n    \"webSearch\": \"qwen,qwen3-coder-plus\"  \n  }  \n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1213/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1212",
      "id": 3940323781,
      "node_id": "I_kwDON-_mZc7q3JHF",
      "number": 1212,
      "title": "【👍】为 CCR (Claude Code) 装备“视觉终端”：直接在浏览器中实现“点哪改哪  Enhancing CCR with a Visual Layer: Click-to-edit directly from the browser (React 19 support)",
      "user": {
        "login": "brucetoo",
        "id": 6925516,
        "node_id": "MDQ6VXNlcjY5MjU1MTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6925516?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/brucetoo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-14T04:01:24Z",
      "updated_at": "2026-02-14T04:01:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/user-attachments/assets/099e936d-880c-4d3a-ab2d-b1f2e9a48556\n\n我是 CCR 的忠实粉丝，非常喜欢它在终端里的响应速度。但在开发过程中，我发现自己仍然需要频繁在浏览器“审查元素”和 IDE 之间切换，手动找文件路径和行号发给 CCR，这非常打断心流。\n\n为了解决这个问题，我做了一个开源工具 Visual Agentic Dev，它是专门为 CCR 设计的“视觉伴侣”：\n\n🎯 视觉点选：在页面上直接点击任何元素，利用 React Fiber 自动解析出源码文件和精确行号。\n🤖 浏览器内闭环：通过 Chrome 扩展将 CCR 终端集成在侧边栏，你可以选定 UI 元素后直接对 CCR 说“重构这个组件”，全程无需离开浏览器。\n⚛️ 适配 React 19：针对 React 19 移除 _debugSource 的改进，我实现了一个构建插件将其找回，确保在最新技术栈下依然能秒定源码。\n这个项目是开源的，旨在让 CCR 的命令行能力与浏览器的视觉开发无缝衔接。\n\n项目地址：https://github.com/brucetoo/visual-agentic-dev\n\n大家觉得这种“视觉辅助 + 命令行 Agent”的组合是否能真正提升你们的开发效率？期待反馈！\n\nI’ve been using CCR and I absolute love its terminal-driven speed. However, I found that I was still spending too much time manually looking up file paths and line numbers in the browser inspector to feed into CCR prompts.\n\nTo bridge this gap, I built Visual Agentic Dev — a \"Visual Eye\" for CCR. It allows you to:\n\n🎯 Click-to-Prompt: Select any element in your browser, and it automatically resolves the exact source file and line via React Fiber.\n🤖 Integrated Loop: It wraps the CCR terminal in a sidebar extension, so you can just click a button, type \"refactor this,\" and watch CCR do the work without leaving the browser.\n⚛️ React 19 Support: Since React 19 removed _debugSource, I implemented a custom build plugin to restore that metadata, making visual locating work perfectly in the latest React stack.\nIt’s open-source and designed to be a companion to make the CCR workflow feel more \"native\" to the browser.\n\nRepo: https://github.com/brucetoo/visual-agentic-dev\n\nWould love to hear if the community thinks a visual entry point like this complements the CLI power of CCR!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1212/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1209",
      "id": 3933043417,
      "node_id": "I_kwDON-_mZc7qbXrZ",
      "number": 1209,
      "title": "Easy Alternate of Claude-Code-Router",
      "user": {
        "login": "keepuahead",
        "id": 257182863,
        "node_id": "U_kgDOD1RMjw",
        "avatar_url": "https://avatars.githubusercontent.com/u/257182863?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/keepuahead",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-12T17:24:50Z",
      "updated_at": "2026-02-12T17:24:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "So, I was trying \"Claude-Code-Router\" and It is awesome, but Its highly instable and have multiple bugs + Really hard for a beginner to configure. So, I made a better alternate with just 1 line installation.\nHere is the link -> https://github.com/keepuahead/custom-claude-code ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1209/reactions",
        "total_count": 2,
        "+1": 0,
        "-1": 2,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1208",
      "id": 3930277286,
      "node_id": "I_kwDON-_mZc7qQ0Wm",
      "number": 1208,
      "title": "我使用ccr code，总是报 API Error: 400 {\"error\":\"Missing model in request body\"}",
      "user": {
        "login": "hborning",
        "id": 31602081,
        "node_id": "MDQ6VXNlcjMxNjAyMDgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/31602081?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hborning",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-02-12T07:28:20Z",
      "updated_at": "2026-02-16T03:21:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我是用nvidia的glm4.7模型的API key\n\n但是ccr code启动后，总是报错\n\n<img width=\"1466\" height=\"681\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ca870da4-b996-44fc-93a0-0ba3376c5a6f\" />\n\n\n我是用 ccr ui来设置的，我感觉API key那些都正常提交，但是我不明白一些转换器是什么东西，我都选了openrouter\n\n我的配置json 如下：\n\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"nvidia\",\n      \"api_base_url\": \"https://integrate.api.nvidia.com/v1\",\n      \"api_key\": \"nvapi-*************************************************************\",\n      \"models\": [\n        \"z-ai/glm4.7\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\"\n        ],\n        \"z-ai/glm4.7\": {\n          \"use\": [\n            \"openrouter\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"nvidia,z-ai/glm4.7\",\n    \"background\": \"nvidia,z-ai/glm4.7\",\n    \"think\": \"nvidia,z-ai/glm4.7\",\n    \"longContext\": \"nvidia,z-ai/glm4.7\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"nvidia,z-ai/glm4.7\",\n    \"image\": \"nvidia,z-ai/glm4.7\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1208/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1203",
      "id": 3919225378,
      "node_id": "I_kwDON-_mZc7pmqIi",
      "number": 1203,
      "title": "【Bug】404 Provider：\"Save and Restart\" button in UI causes \"provider not found\" error, but works with CLI command",
      "user": {
        "login": "xzxiaoshan",
        "id": 16459864,
        "node_id": "MDQ6VXNlcjE2NDU5ODY0",
        "avatar_url": "https://avatars.githubusercontent.com/u/16459864?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xzxiaoshan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-10T03:16:31Z",
      "updated_at": "2026-02-10T03:16:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Description**\nIn the claude-code-router open source project, the \"Save and Restart\" button in the top-right corner of the UI appears to have a bug. When adding the Alibaba Cloud Bailian platform provider through the UI and clicking \"Save and Restart\", it shows a \"provider not found\" error. However, using the CLI command `ccr restart` works correctly.\n\n**Steps to Reproduce**\n1. Add Alibaba Cloud Bailian platform provider through the UI\n2. Click the \"Save and Restart\" button in the top-right corner of the UI\n3. Observe the \"provider not found\" error message\n4. Try the same operation on different computers - issue is consistently reproducible\n5. Use the CLI command `ccr restart` instead - it works correctly\n\n**Expected Behavior**\nThe \"Save and Restart\" button in the UI should work the same way as the `ccr restart` CLI command and successfully restart the service with the newly added provider.\n\n**Actual Behavior**\nThe UI \"Save and Restart\" functionality fails with a \"provider not found\" error, while the CLI command works properly.\n\n**Environment**\n- Project: claude-code-router\n- Provider: Alibaba Cloud Bailian platform\n- Multiple computer environments tested\n\n**Additional Context**\nThis issue seems to be specific to the UI implementation of the restart functionality, as the backend/provider configuration is correct (verified by successful CLI usage). The problem may be related to how the UI handles the restart process or timing issues during the restart sequence.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1203/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1202",
      "id": 3918545472,
      "node_id": "I_kwDON-_mZc7pkEJA",
      "number": 1202,
      "title": "[Bug] calculateTokenCount() skips \"thinking\" content blocks, undercounting by 30-60%",
      "user": {
        "login": "dpearson2699",
        "id": 32114370,
        "node_id": "MDQ6VXNlcjMyMTE0Mzcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/32114370?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dpearson2699",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-09T22:58:03Z",
      "updated_at": "2026-02-09T22:58:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Summary\n\n`calculateTokenCount()` in `packages/core/src/utils/router.ts` only counts `text`, `tool_use`, and `tool_result` content blocks. It silently skips `type: \"thinking\"` blocks, which can contain substantial content during extended thinking sessions.\n\nThis causes token count to be undercounted by **30-60%**, leading to incorrect longContext threshold decisions — the router sees ~60% context utilization when reality is ~95%.\n\n## Root Cause\n\nIn `calculateTokenCount()`, the `forEach` over content parts at ~line 48 only handles three types:\n\n```typescript\n// ~lines 48-59\nmessage.content.forEach((contentPart: any) => {\n  if (contentPart.type === \"text\") {\n    tokenCount += enc.encode(contentPart.text).length;\n  } else if (contentPart.type === \"tool_use\") {\n    tokenCount += enc.encode(JSON.stringify(contentPart.input)).length;\n  } else if (contentPart.type === \"tool_result\") {\n    tokenCount += enc.encode(\n      typeof contentPart.content === \"string\"\n        ? contentPart.content\n        : JSON.stringify(contentPart.content)\n    ).length;\n  }\n  // ← No handling for contentPart.type === \"thinking\"\n  //   These blocks are silently dropped from the count\n});\n```\n\n`type: \"thinking\"` content blocks (from Claude's extended thinking / chain-of-thought) contain the model's reasoning text in `contentPart.thinking`. During complex tasks, thinking blocks can be **larger than all other content combined**, making this a significant undercount.\n\n## Impact\n\n- **Incorrect routing decisions**: The `longContext` model is never activated because the router thinks context is well under the threshold when it's actually past it\n- **API errors**: When the true context exceeds a model's limit but the router doesn't switch to a long-context model, the API returns errors (e.g. context too long, 400 errors)\n- **Cascading with #1201**: Combined with the comma bypass bug, this makes longContext routing effectively non-functional for extended thinking sessions\n\n## Reproduction\n\n1. Enable extended thinking on a model\n2. Start a conversation that triggers substantial thinking (complex multi-step tasks)\n3. Monitor `req.tokenCount` — it will plateau or grow slowly even as thinking blocks accumulate thousands of tokens\n4. Context will exceed the model's actual limit before `longContextThreshold` is triggered\n\n## Suggested Fix\n\nAdd a `\"thinking\"` case to the content block iteration:\n\n```typescript\nmessage.content.forEach((contentPart: any) => {\n  if (contentPart.type === \"text\") {\n    tokenCount += enc.encode(contentPart.text).length;\n  } else if (contentPart.type === \"thinking\" && contentPart.thinking) {\n    tokenCount += enc.encode(contentPart.thinking).length;\n  } else if (contentPart.type === \"tool_use\") {\n    tokenCount += enc.encode(JSON.stringify(contentPart.input)).length;\n  } else if (contentPart.type === \"tool_result\") {\n    tokenCount += enc.encode(\n      typeof contentPart.content === \"string\"\n        ? contentPart.content\n        : JSON.stringify(contentPart.content)\n    ).length;\n  }\n});\n```\n\n## Environment\n\n- CCR version: latest (main branch)\n- File: `packages/core/src/utils/router.ts`, `calculateTokenCount()` function\n- Related: #1201 (comma bypass compounds this issue)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1202/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1201",
      "id": 3918544106,
      "node_id": "I_kwDON-_mZc7pkDzq",
      "number": 1201,
      "title": "[Bug] getUseModel() short-circuits longContext routing for comma-prefixed models",
      "user": {
        "login": "dpearson2699",
        "id": 32114370,
        "node_id": "MDQ6VXNlcjMyMTE0Mzcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/32114370?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dpearson2699",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-09T22:57:40Z",
      "updated_at": "2026-02-09T22:57:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Summary\n\n`getUseModel()` in `packages/core/src/utils/router.ts` returns early when the model string contains a comma (the standard `\"provider,model\"` format), **completely skipping** the longContext threshold check and all other scenario routing (think, webSearch, background).\n\nThis means any provider configured with comma-prefixed models will **never** trigger `longContext` routing regardless of token count.\n\n## Reproduction\n\n1. Configure a provider with a model (e.g. `myprovider,mymodel`)\n2. Set `Router.longContext` to a different model and `longContextThreshold` to a reasonable value (e.g. 127000)\n3. Start a conversation and let context grow past the threshold\n4. Observe that the router never switches to the `longContext` model — it always returns the original model with `scenarioType: 'default'`\n\n## Root Cause\n\nIn `getUseModel()`, the comma check at ~line 125 fires an early return before the longContext/think/webSearch routing logic at ~line 139+:\n\n```typescript\n// ~line 125-137 — this returns BEFORE any scenario routing\nif (req.body.model.includes(\",\")) {\n    const [provider, model] = req.body.model.split(\",\");\n    const finalProvider = providers.find(\n      (p: any) => p.name.toLowerCase() === provider\n    );\n    const finalModel = finalProvider?.models?.find(\n      (m: any) => m.toLowerCase() === model\n    );\n    if (finalProvider && finalModel) {\n      return { model: `${finalProvider.name},${finalModel}`, scenarioType: 'default' };\n      //     ^^^^^^ always 'default', never checks longContext threshold\n    }\n    return { model: req.body.model, scenarioType: 'default' };\n}\n\n// ~line 139+ — longContext check is here, but never reached for comma models\n```\n\nSince the standard CCR model format is `\"provider,model\"` (which always contains a comma), **every provider-qualified model request** hits this early return.\n\n## Expected Behavior\n\nWhen context exceeds `longContextThreshold`, the router should return the `longContext` model — even when the original model uses the `\"provider,model\"` comma format.\n\n## Suggested Fix\n\nMove the comma-split provider/model resolution **before** the scenario routing, but don't return early. Instead, resolve the provider and model name, then let the resolved model flow through the normal longContext/think/webSearch/background checks:\n\n```typescript\n// Resolve comma-prefixed model first (if applicable)\nlet resolvedModel = req.body.model;\nif (req.body.model.includes(\",\")) {\n    const [provider, model] = req.body.model.split(\",\");\n    const finalProvider = providers.find(\n      (p: any) => p.name.toLowerCase() === provider\n    );\n    const finalModel = finalProvider?.models?.find(\n      (m: any) => m.toLowerCase() === model\n    );\n    if (finalProvider && finalModel) {\n      resolvedModel = `${finalProvider.name},${finalModel}`;\n    }\n    // Don't return — fall through to scenario routing below\n}\n\n// Now check longContext, think, webSearch, background as usual...\nif (tokenCount > longContextThreshold && Router.longContext) {\n    return { model: Router.longContext, scenarioType: 'longContext' };\n}\n// ... etc\n```\n\n## Environment\n\n- CCR version: latest (main branch)\n- File: `packages/core/src/utils/router.ts`, `getUseModel()` function",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1201/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1200",
      "id": 3914722293,
      "node_id": "I_kwDON-_mZc7pVev1",
      "number": 1200,
      "title": "模型访问不到，感觉是没走router而是连到claude官方路线去了",
      "user": {
        "login": "xinliu9451",
        "id": 93365789,
        "node_id": "U_kgDOBZCmHQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/93365789?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xinliu9451",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2026-02-09T06:32:33Z",
      "updated_at": "2026-02-14T02:37:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "报错内容是：“There's an issue with the selected model (claude-sonnet-4-5-20250929). It may not exist or you may not have access to\n  it. Run /model to pick a different model.”\n\n我已经在ui中将所有的模型设置为gpt了，也ccr restart了，但是使用一直报这个错误，大佬有法子解决吗？感谢~",
      "closed_by": {
        "login": "xinliu9451",
        "id": 93365789,
        "node_id": "U_kgDOBZCmHQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/93365789?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xinliu9451",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1200/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1199",
      "id": 3913290815,
      "node_id": "I_kwDON-_mZc7pQBQ_",
      "number": 1199,
      "title": "Vg",
      "user": {
        "login": "waldewagnerdasilvacarneiro2-maker",
        "id": 234333969,
        "node_id": "U_kgDODfenEQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/234333969?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/waldewagnerdasilvacarneiro2-maker",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-08T18:39:30Z",
      "updated_at": "2026-02-08T18:39:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### ### ****",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1199/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1198",
      "id": 3911868747,
      "node_id": "I_kwDON-_mZc7pKmFL",
      "number": 1198,
      "title": "调用模型参数调整",
      "user": {
        "login": "nyxira2012",
        "id": 218356199,
        "node_id": "U_kgDODQPZ5w",
        "avatar_url": "https://avatars.githubusercontent.com/u/218356199?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nyxira2012",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-08T03:21:31Z",
      "updated_at": "2026-02-08T03:21:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请问大佬可以增加这方面功能不？包括温度，K,P值等，最好可以支持在cc内调节，现在skill里有些地方会用到…",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1198/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1197",
      "id": 3909166865,
      "node_id": "I_kwDON-_mZc7pAScR",
      "number": 1197,
      "title": "[Bug] UI 中 JSON 编辑器自动解析并回填环境变量占位符，导致敏感信息泄露到配置文件",
      "user": {
        "login": "pr0t0nme",
        "id": 130115978,
        "node_id": "U_kgDOB8Fpig",
        "avatar_url": "https://avatars.githubusercontent.com/u/130115978?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pr0t0nme",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-07T02:40:21Z",
      "updated_at": "2026-02-07T02:40:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "---\n\n## 问题描述\n\n在使用 UI 的 JSON 编辑器编辑配置时，环境变量占位符（如 `${XX}` 或 `$XX`）会被自动解析并回填为实际值，保存后导致敏感信息（如 API 密钥）被明文写入配置文件。\n\n---\n\n## 复现步骤\n\n1. 手动编辑 `~/.claude-code-router/config.json`，将 API 密钥设置为环境变量占位符，例如：\n   ```json\n   {\n     \"Providers\": [\n       {\n         \"name\": \"openai\",\n         \"api_key\": \"${OPENAI_API_KEY}\"\n       }\n     ]\n   }\n   ```\n\n2. 启动 UI 模式：`ccr ui`\n\n3. 在 UI 中点击「JSON 编辑器」查看配置\n\n4. 观察到 `${OPENAI_API_KEY}` 被自动解析并显示为实际的密钥值（如 `sk-xxxxxxxx...`）\n\n5. 点击保存，配置文件中原本的 `${OPENAI_API_KEY}` 被替换为实际的密钥字符串\n\n---\n\n## 预期行为\n\nJSON 编辑器应该**保留**环境变量占位符的原始形式（`${XX}` 或 `$XX`），而不是将其解析为实际值。只有在运行时才会进行环境变量插值。\n\n---\n\n## 实际行为\n\nJSON 编辑器在渲染时自动解析环境变量，显示实际值，保存时将解析后的值写回配置文件。\n\n---\n\n## 影响\n\n- **安全风险**：敏感信息（API 密钥）被明文写入配置文件，可能意外提交到版本控制\n- **配置失效**：环境变量动态配置的能力丢失，必须手动修改配置文件才能更新密钥\n\n---\n\n## 建议修复方案\n\n1. JSON 编辑器在展示配置时，应禁用环境变量解析功能，保持原始文本\n2. 或者添加可视化提示，区分哪些值是环境变量占位符\n3. 保存时应保留原始的占位符语法，不做任何替换\n\n---\n\n## 环境信息\n\n- **项目名称**: claude-code-router\n- **项目地址**: https://github.com/musistudio/claude-code-router\n- **claude-code-router 版本**：最新版\n- **操作系统**：全平台\n- **使用方式**：`ccr ui` 的 JSON 编辑器功能\n\n---\n\n## 提交信息\n\n- **目标仓库**: `musistudio/claude-code-router`\n- **提交时间**: 2026-02-07\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1197/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1195",
      "id": 3904566462,
      "node_id": "I_kwDON-_mZc7ouvS-",
      "number": 1195,
      "title": "为啥使用这个老是报400的错误，用几次就报一次400",
      "user": {
        "login": "yppgo",
        "id": 88564576,
        "node_id": "MDQ6VXNlcjg4NTY0NTc2",
        "avatar_url": "https://avatars.githubusercontent.com/u/88564576?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yppgo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-06T02:48:52Z",
      "updated_at": "2026-02-06T02:48:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1960\" height=\"705\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6125ff5c-bb72-4965-ac54-2bc2761629e7\" />\n用dashscope也是时不时的报这个错误\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1195/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1192",
      "id": 3895873176,
      "node_id": "I_kwDON-_mZc7oNk6Y",
      "number": 1192,
      "title": "如何禁止 ui 访问",
      "user": {
        "login": "tonglei100",
        "id": 530089,
        "node_id": "MDQ6VXNlcjUzMDA4OQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/530089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tonglei100",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-04T10:43:46Z",
      "updated_at": "2026-02-04T10:43:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我是使用 ccr restart 启动服务的，但是依然可以通过/ui 访问 Web",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1192/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1191",
      "id": 3889721770,
      "node_id": "I_kwDON-_mZc7n2HGq",
      "number": 1191,
      "title": "使用gemini模型出现报错：500 {\"error\":{\"type\":\"api_error\",\"message\":\"Authentication failed\"}}",
      "user": {
        "login": "neonsun1",
        "id": 127680818,
        "node_id": "U_kgDOB5xBMg",
        "avatar_url": "https://avatars.githubusercontent.com/u/127680818?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/neonsun1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-02-03T07:43:00Z",
      "updated_at": "2026-02-17T12:55:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"854\" height=\"212\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d41c5027-2384-4666-9171-158faf542903\" />\n\nconfig.json：\n{\n  \"PROXY_URL\": \"127.0.0.1:7897\",\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models\",\n      \"apikey\": \"AIzaSy已替换成实际地址4Dq9PrmS4VI\",\n      \"models\": [\n        \"gemini-2.5-flash\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-flash\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1191/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1189",
      "id": 3884317012,
      "node_id": "I_kwDON-_mZc7nhflU",
      "number": 1189,
      "title": "Hope the UI can support relative paths (supporting proxy access).",
      "user": {
        "login": "Displease3121",
        "id": 150413106,
        "node_id": "U_kgDOCPcfMg",
        "avatar_url": "https://avatars.githubusercontent.com/u/150413106?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Displease3121",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-02T06:59:18Z",
      "updated_at": "2026-02-02T06:59:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When the CCR UI starts, some platforms generate a proxy address to access the port, such as `/proxy/3456/ui/`. However, the page's resource and API requests are encoded to be accessed from the root directory `/`, resulting in 404 errors. It is hoped that relative paths, similar to `../api`, can be supported.\n\nSimilar to the code modifications in the screenshot below, but I'm not proficient in programming. I hope the author can consider my needs and provide support in future versions.\n\n<img width=\"1562\" height=\"377\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d01d7bca-13ac-41fb-924a-fbc9e04484f3\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1189/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1188",
      "id": 3883554112,
      "node_id": "I_kwDON-_mZc7nelVA",
      "number": 1188,
      "title": "error reading file and error editing file",
      "user": {
        "login": "xueshuai0922",
        "id": 36756769,
        "node_id": "MDQ6VXNlcjM2NzU2NzY5",
        "avatar_url": "https://avatars.githubusercontent.com/u/36756769?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xueshuai0922",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-02T02:01:47Z",
      "updated_at": "2026-02-02T02:01:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i use a qwen3-coder-408B   llm \n\n<img width=\"820\" height=\"916\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0dd7fdcc-4151-43ca-b01a-e33ebb27984f\" />\n\nthis is log: \n```\nNow let's fix the OsdRouter.java file. The issue is that the response object is being treated as TopicOsdRequest but it's actually of type Object. Let me check the route method more carefully:\n  ⎿  Error reading file\n  ⎿  Error reading file\n\n⏺ Let me read the specific lines around the error:\n  ⎿  Error reading file\n\n⏺ Let me read the file without limits and look at the route method:\n\n⏺ Read(drone-module-dji/drone-module-dji-biz/src/main/java/drone/module/dji/sdk/mqtt/osd/OsdRouter.java)\n  ⎿  Read 104 lines\n\n⏺ I can see the issue now. The problem is in the route method where response is treated as a TopicOsdRequest, but the compiler is seeing it as an Object. Let me fix this by casting it properly:\n  ⎿  Error editing file\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1188/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1187",
      "id": 3883514859,
      "node_id": "I_kwDON-_mZc7nebvr",
      "number": 1187,
      "title": "CCR 处理流式请求的的时候，会把 Input/Output tokens 设置成0，导致CC /context异常，即使原有的 Openai 响应包含usage例如 prompt tokens 信息",
      "user": {
        "login": "luyufan498",
        "id": 6166841,
        "node_id": "MDQ6VXNlcjYxNjY4NDE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6166841?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luyufan498",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-02-02T01:39:10Z",
      "updated_at": "2026-02-02T17:11:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "是使用 reasoning 转换时候.\n\n在使用 vLLM 后端时，stream 模式下返回的 token 统计始终为 0，\n\"input_tokens\":0,\"output_tokens\":0,\"cache_read_input_tokens\":0\n\n\n但是抓取的vLLM原始stream请求在最后一个chunk是有 usage的 （开启强制 --enable-force-include-usage）\n```\n {\"id\":\"chatcmpl-a77668095499818c\",\"object\":\"chat.completion.chunk\",\"created\":1769965431,\"model\":\"glm-4.7-flash\",\"choices\":[],\"usage\":{\"prompt_tokens\":6,\"total_tokens\":167,\"completion_tokens\":161}}\n```\n\n\n预期：应该正确显示 vLLM 返回的 usage 信息\n\"input_tokens\":6,\"output_tokens\":161,\"cache_read_input_tokens\":0\n\n\n\n目前看起来是最后一个chunk里面更新的 usage 信息没有被正确的处理返回。\n\n\n\nCCR目前还有个问题，是返回第一个chunk的usage里面永远都是0，由于CC（不知道哪个版本开始）的 context统计的似乎是第一个 chunk的input token，造成CC现在 /context一直是 0",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1187/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1186",
      "id": 3882247594,
      "node_id": "I_kwDON-_mZc7nZmWq",
      "number": 1186,
      "title": "目前这个项目还不支持阿里coding plan 往改进下，不要采用硬编码模式，基本确认了",
      "user": {
        "login": "Blacksmith2b",
        "id": 33141484,
        "node_id": "MDQ6VXNlcjMzMTQxNDg0",
        "avatar_url": "https://avatars.githubusercontent.com/u/33141484?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Blacksmith2b",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-02-01T15:31:05Z",
      "updated_at": "2026-02-05T04:26:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1300\" height=\"627\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b15a4537-258c-4614-9a75-4b33f059a8cb\" />\n如图所示，如果购买了阿里的编程计划套餐，对应的访问url是单独的，但是目前测试下来，项目里面用的是通用的地址。\n\n所以，尽管在ui界面、json配置文件里面修改为符合要求的地址，但是在实际执行的时候，还是指向了老的访问地址。\n\n1、界面和json文件也查看了，都是新地址\n\n2、报错404\n\n3、日志输出后确认了。\n\n官方文档地址：https://bailian.console.aliyun.com/cn-beijing/?spm=a2c4g.11186623.0.0.43f455c9xtvrUN&tab=doc#/doc/?type=model&url=3005961",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1186/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1183",
      "id": 3878894444,
      "node_id": "I_kwDON-_mZc7nMzts",
      "number": 1183,
      "title": "配置了CUSTOM_ROUTER_PATH，为什么不生效？",
      "user": {
        "login": "javaboy863",
        "id": 1332763,
        "node_id": "MDQ6VXNlcjEzMzI3NjM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1332763?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/javaboy863",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-31T10:18:06Z",
      "updated_at": "2026-01-31T13:12:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "版本：2.0.0\n配置：\n```\nmodule.exports = async function router(req, config) {\n\n  const userMessage = req.body.messages.find(m => m.role === 'user')?.content;\n  if (userMessage && userMessage.includes(\"解释这段代码\")) {\n    // Use a powerful model for code explanation\n    return \"test,minimaxai/minimax-m2.1\";\n  }\n\n  // Fallback to the default router configuration\n  return null;\n};\n\n```\n我在code输入：解释这段代码,public ...\n为什么看日志还是走的默认的模型？\n\n谢谢",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1183/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1182",
      "id": 3877089001,
      "node_id": "I_kwDON-_mZc7nF67p",
      "number": 1182,
      "title": "ccr 接入本地 vllm部署的qwen3模型 配置问题",
      "user": {
        "login": "Zero2one2024",
        "id": 151485582,
        "node_id": "U_kgDOCQd8jg",
        "avatar_url": "https://avatars.githubusercontent.com/u/151485582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Zero2one2024",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-30T19:36:30Z",
      "updated_at": "2026-01-30T19:45:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "帮忙看一下 配置本地vllm模型哪里不对\n\n提示错误\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8: 400):\n    {\\\"object\\\":\\\"error\\\",\\\"message\\\":\\\"This model's maximum context length is 32768 tokens. However, you requested\n    48147 tokens (16147 in the messages, 32000 in the completion). Please reduce the length of the messages or\n    completion. None\\\",\\\"type\\\":\\\"BadRequestError\\\",\\\"param\\\":null,\\\"code\\\":400}Error: Error from\n    provider(LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8: 400): {\\\"object\\\":\\\"error\\\",\\\"message\\\":\\\"This model's maximum\n    context length is 32768 tokens. However, you requested 48147 tokens (16147 in the messages, 32000 in the\n    completion). Please reduce the length of the messages or completion.\n    None\\\",\\\"type\\\":\\\"BadRequestError\\\",\\\"param\\\":null,\\\"code\\\":400}\\n    at qn (C:\\\\Users\\\\Zero2one\\\\AppData\\\\Local\\\\nv\n    m\\\\v22.18.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:582:7451)\\n    at fD (C:\\\\Users\\\\Zero2one\\\\\n    AppData\\\\Local\\\\nvm\\\\v22.18.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:582:11338)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async cN\n    (C:\\\\Users\\\\Zero2one\\\\AppData\\\\Local\\\\nvm\\\\v22.18.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:582\n    :8659)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n配置\n\n\n\n\n\n\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"LocalLLM\",\n      \"api_base_url\": \"http://192.168.100.143:8200/v1/chat/completions\",\n      \"api_key\": \"fakekey\",\n      \"models\": [\n        \"Qwen3-235B-A22B-Instruct-2507-FP8\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"enhancetool\",\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 32768\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8\",\n    \"background\": \"LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8\",\n    \"think\": \"LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8\",\n    \"longContext\": \"LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8\",\n    \"longContextThreshold\": 32768,\n    \"webSearch\": \"LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8\",\n    \"image\": \"LocalLLM,Qwen3-235B-A22B-Instruct-2507-FP8\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1182/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1181",
      "id": 3873663264,
      "node_id": "I_kwDON-_mZc7m42kg",
      "number": 1181,
      "title": "/ide 对齐pycharm出错，识别pycharm处于WSL环境",
      "user": {
        "login": "zsh-zzu",
        "id": 82990217,
        "node_id": "MDQ6VXNlcjgyOTkwMjE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/82990217?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zsh-zzu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-30T03:23:03Z",
      "updated_at": "2026-01-30T03:29:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"822\" height=\"182\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/77200780-be82-40d9-b35f-311103a6486d\" />\npycharm项目目录为 C:\\code\\BasicIRSTDCCR，ccr 使用/ide的时候错误识别为/mnt/c/code/BasicIRSTDCCR，请问该如何解决呢",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1181/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1180",
      "id": 3870983189,
      "node_id": "I_kwDON-_mZc7muoQV",
      "number": 1180,
      "title": "Login screen still showing",
      "user": {
        "login": "tevincent",
        "id": 149579879,
        "node_id": "U_kgDOCOpoZw",
        "avatar_url": "https://avatars.githubusercontent.com/u/149579879?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tevincent",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2026-01-29T14:26:45Z",
      "updated_at": "2026-02-11T14:32:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey there,\n\nI have configured clode-caude-router with my config.json file but the login screen is still showing (anthropic account, etc.) when using any version of claude-caude > 2.0.64.\n\nWhat I don't understand is that my colleagues does not have this problem, even with the last version of claude-code (2.1.23).\n\nIs that a known issue ? Am I missing something?\n\nThanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1180/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1178",
      "id": 3866523656,
      "node_id": "I_kwDON-_mZc7mdngI",
      "number": 1178,
      "title": "Working Cerebas Code GLM 4.7 Transformer for Claude Code CLI",
      "user": {
        "login": "blocka613",
        "id": 200495613,
        "node_id": "U_kgDOC_NR_Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/200495613?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/blocka613",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-28T17:24:04Z",
      "updated_at": "2026-02-05T22:57:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey Everyone, not sure where to put this, but I created a Working Cerebas Code GLM 4.7 Transformer for Claude Code CLI that handles the rate limiting, tool translation, and context etc. Hope it is helpful for others.\n\n# Cerebras GLM-4.7 Transformer for Claude Code Router\n\nA custom transformer that enables Claude Code to work with Cerebras's GLM-4.7 model through Claude Code Router (CCR).\n\n## Recommended Setup\n\n**It is highly recommended to use [Continuous Claude Code v3](https://github.com/continuedev/continue) alongside this transformer.** Continuous Claude Code automatically handles context compaction, so you don't need to worry about manually running `/compact` when you hit context limits.\n\n---\n\n## Features\n\n### 1. Proactive Rate Limiting\n\nThe transformer implements a sliding window rate limiter that tracks usage **before** hitting Cerebras's limits, preventing 429 errors entirely.\n\n**Tracked Limits (Code Max Plan - $200/mo):**\n- **120 RPM** (Requests Per Minute)\n- **1.5M TPM** (Tokens Per Minute)\n- **120M tokens/day** (Daily limit)\n\n**How it works:**\n- Estimates tokens for each request before sending\n- Calculates the exact delay needed if any limit would be exceeded\n- Automatically waits the minimum required time\n- Updates estimates with actual token counts from responses\n\n### 2. Context Limit Handling\n\nCerebras GLM-4.7 has a **131,072 token context limit**. The transformer:\n\n- Estimates total context size before each request\n- Reserves ~20K tokens for output (safe input limit: ~111K tokens)\n- When limit is exceeded, returns an **Anthropic-format error**:\n  ```json\n  {\n    \"type\": \"error\",\n    \"error\": {\n      \"type\": \"invalid_request_error\",\n      \"message\": \"prompt is too long: X tokens > 131072 maximum\"\n    }\n  }\n  ```\n- This triggers Claude Code's standard \"Context limit reached\" message, prompting you to run `/compact`\n\n### 3. Message Format Conversion\n\nConverts Claude Code's message format to OpenAI-compatible format that Cerebras expects:\n\n- Converts content arrays (with text/image objects) to plain strings\n- Handles top-level `system` field by converting to system message\n- Removes unsupported fields: `reasoning`, `thinking`, `anthropic_version`, `metadata`, `cache_control`, `stream_options`\n\n### 4. Agent Name Casing Fixes\n\nGLM models sometimes output lowercase agent names, but Claude Code is case-sensitive. The transformer automatically corrects:\n\n| GLM Output | Corrected |\n|------------|-----------|\n| `explore` | `Explore` |\n| `plan` | `Plan` |\n| `bash` | `Bash` |\n\n### 5. Tool Call ID Deduplication\n\nCerebras is strict about duplicate `tool_call.id` values in the conversation history. The transformer:\n\n- Tracks all seen tool call IDs\n- Removes duplicate tool calls before sending to Cerebras\n- Prevents 422 errors from duplicate IDs\n\n### 6. Streaming Response Support\n\nHandles both streaming and non-streaming responses:\n\n- Intercepts streaming responses to fix agent name casing in real-time\n- Extracts token usage from SSE data for accurate rate limit tracking\n\n---\n\n## Configuration\n\n### config.json\n\n```json\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"API_TIMEOUT_MS\": 600000,\n  \"transformers\": [\n    {\n      \"path\": \"/path/to/cerebras-transformer.js\"\n    }\n  ],\n  \"Providers\": [\n    {\n      \"name\": \"cerebras\",\n      \"api_base_url\": \"https://api.cerebras.ai/v1/chat/completions\",\n      \"api_key\": \"YOUR_CEREBRAS_API_KEY\",\n      \"models\": [\"zai-glm-4.7\"],\n      \"transformer\": {\n        \"use\": [\n          \"cerebras\",\n          \"enhancetool\",\n          [\"maxtoken\", { \"max_tokens\": 16384 }]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"cerebras,zai-glm-4.7\",\n    \"background\": \"cerebras,zai-glm-4.7\",\n    \"think\": \"cerebras,zai-glm-4.7\",\n    \"longContext\": \"cerebras,zai-glm-4.7\",\n    \"longContextThreshold\": 60000,\n    \"claude-3-5-haiku-20241022\": \"cerebras,zai-glm-4.7\",\n    \"claude-3-5-haiku\": \"cerebras,zai-glm-4.7\",\n    \"haiku\": \"cerebras,zai-glm-4.7\"\n  }\n}\n```\n\n### Important: WebFetch Support\n\nClaude Code's `WebFetch` tool makes a secondary API call to `claude-3-5-haiku` for summarizing fetched web content. **You must add routes for Haiku models** in your Router config (as shown above), otherwise WebFetch will fail.\n\n---\n\n## Console Output\n\nThe transformer logs helpful information to stderr:\n\n```\n[Cerebras] Rate limit: waiting 2.5s (RPM: 118/120, TPM: 1450K/1500K)\n[Cerebras] Token tracking: estimated 45000 -> actual 42350 (daily: 15M/120M)\n[Cerebras] Context 125000 tokens exceeds safe limit 111072. Returning compact message.\n[Cerebras] Removing duplicate tool_call.id: call_abc123\n```\n\n---\n\n## Limitations\n\n- **No extended thinking support**: Cerebras doesn't support reasoning/thinking parameters\n- **131K context limit**: Smaller than Anthropic's 200K limit - use `/compact` or Continuous Claude Code v3\n- **Token estimation**: Uses ~4 chars/token approximation, actual may vary slightly\n\n---\n\n## Troubleshooting\n\n### \"Context limit reached\" appearing frequently\n- Use Continuous Claude Code v3 for automatic context management\n- Or manually run `/compact` when prompted\n\n### WebFetch not working\n- Ensure you have the Haiku routes in your Router config\n- WebFetch uses Haiku for content summarization\n\n### 422 errors about duplicate tool_call.id\n- The transformer handles this automatically\n- If still occurring, check for very long conversations with repeated tool calls\n\n### Rate limit delays\n- Normal behavior - the transformer is preventing 429 errors\n- Consider upgrading your Cerebras plan for higher limits\n\n---\n\n## Credits\n\nBuilt for use with [Claude Code Router](https://github.com/musistudio/claude-code-router) by musistudio.\n\nCerebras GLM-4.7 provides extremely fast inference speeds, making it an excellent choice for Claude Code workflows.\n\n\n```javascript\n// Custom transformer for Cerebras GLM-4.7 with proactive rate limiting\n// Tracks tokens and requests to avoid 429 errors before they happen\n\n/**\n * Context limit configuration\n * GLM-4.7 has 131072 token limit - reserve space for output\n */\nconst CONTEXT_LIMIT = 131072;\nconst MAX_INPUT_TOKENS = 115000;  // Leave ~16K for output\n\n/**\n * Converts content from Claude Code format (array of objects) to plain string\n */\nfunction convertContentToString(content) {\n  if (typeof content === 'string') {\n    return content;\n  }\n\n  if (Array.isArray(content)) {\n    return content\n      .map((item) => {\n        if (typeof item === 'string') {\n          return item;\n        }\n        if (item.type === 'text' && item.text) {\n          return item.text;\n        }\n        if (item.type === 'image' || item.type === 'image_url') {\n          return '[Image content]';\n        }\n        return '';\n      })\n      .join('');\n  }\n\n  return '';\n}\n\n/**\n * Estimate token count from text (rough approximation: ~4 chars per token)\n */\nfunction estimateTokens(text) {\n  if (!text) return 0;\n  return Math.ceil(text.length / 4);\n}\n\n/**\n * Known agent name corrections (lowercase -> correct case)\n * GLM models often output lowercase but Claude Code is case-sensitive\n */\nconst AGENT_NAME_CORRECTIONS = {\n  'explore': 'Explore',\n  'plan': 'Plan',\n  'bash': 'Bash',\n  'general-purpose': 'general-purpose',\n  'statusline-setup': 'statusline-setup',\n  'claude-code-guide': 'claude-code-guide',\n};\n\n/**\n * Fix agent name casing in tool call arguments\n */\nfunction fixAgentNameCasing(text) {\n  if (!text) return text;\n\n  let fixed = text;\n  for (const [wrong, correct] of Object.entries(AGENT_NAME_CORRECTIONS)) {\n    const patterns = [\n      new RegExp(`\"subagent_type\"\\\\s*:\\\\s*\"${wrong}\"`, 'gi'),\n      new RegExp(`'subagent_type'\\\\s*:\\\\s*'${wrong}'`, 'gi'),\n      new RegExp(`subagent_type.*?[\"']${wrong}[\"']`, 'gi'),\n    ];\n\n    for (const pattern of patterns) {\n      fixed = fixed.replace(pattern, (match) => {\n        return match.replace(new RegExp(wrong, 'gi'), correct);\n      });\n    }\n  }\n\n  return fixed;\n}\n\n/**\n * Transformer class for Cerebras GLM-4.7 with proactive rate limiting\n */\nclass CerebrasTransformer {\n  constructor() {\n    this.name = 'cerebras';\n\n    // Rate limit configuration for Code Max plan ($200/mo)\n    this.config = {\n      maxRequestsPerMinute: 120,\n      maxTokensPerMinute: 1500000,\n      maxTokensPerDay: 120000000,\n      windowSizeMs: 60000,\n    };\n\n    this.dailyTokens = 0;\n    this.dailyResetTime = this.getNextMidnight();\n    this.pendingRequestId = 0;\n    this.requestHistory = [];\n    this.lastRequestTime = 0;\n  }\n\n  getNextMidnight() {\n    const now = new Date();\n    const midnight = new Date(now);\n    midnight.setHours(24, 0, 0, 0);\n    return midnight.getTime();\n  }\n\n  checkDailyReset() {\n    const now = Date.now();\n    if (now >= this.dailyResetTime) {\n      console.error(`[Cerebras] Daily token counter reset. Previous day: ${Math.round(this.dailyTokens/1000000)}M tokens used.`);\n      this.dailyTokens = 0;\n      this.dailyResetTime = this.getNextMidnight();\n    }\n  }\n\n  cleanupHistory() {\n    const cutoff = Date.now() - this.config.windowSizeMs;\n    this.requestHistory = this.requestHistory.filter(r => r.timestamp > cutoff);\n  }\n\n  getCurrentUsage() {\n    this.cleanupHistory();\n    const requestCount = this.requestHistory.length;\n    const tokenCount = this.requestHistory.reduce((sum, r) => sum + r.tokens, 0);\n    return { requestCount, tokenCount };\n  }\n\n  calculateDelay(estimatedRequestTokens) {\n    this.checkDailyReset();\n    this.cleanupHistory();\n\n    const now = Date.now();\n    const usage = this.getCurrentUsage();\n\n    const withinRPM = usage.requestCount < this.config.maxRequestsPerMinute;\n    const withinTPM = usage.tokenCount + estimatedRequestTokens < this.config.maxTokensPerMinute;\n    const withinDaily = this.dailyTokens + estimatedRequestTokens < this.config.maxTokensPerDay;\n\n    if (withinRPM && withinTPM && withinDaily) {\n      return 0;\n    }\n\n    let requiredDelay = 0;\n\n    if (!withinRPM && this.requestHistory.length > 0) {\n      const oldestRequest = this.requestHistory[0];\n      const expiresAt = oldestRequest.timestamp + this.config.windowSizeMs;\n      const rpmDelay = Math.max(0, expiresAt - now + 50);\n      requiredDelay = Math.max(requiredDelay, rpmDelay);\n    }\n\n    if (!withinTPM && this.requestHistory.length > 0) {\n      const tokensNeeded = (usage.tokenCount + estimatedRequestTokens) - this.config.maxTokensPerMinute;\n      let tokensFreed = 0;\n      for (const req of this.requestHistory) {\n        tokensFreed += req.tokens;\n        if (tokensFreed >= tokensNeeded) {\n          const expiresAt = req.timestamp + this.config.windowSizeMs;\n          const tpmDelay = Math.max(0, expiresAt - now + 50);\n          requiredDelay = Math.max(requiredDelay, tpmDelay);\n          break;\n        }\n      }\n    }\n\n    if (!withinDaily) {\n      const dailyDelay = Math.max(0, this.dailyResetTime - now);\n      requiredDelay = Math.max(requiredDelay, dailyDelay);\n    }\n\n    return requiredDelay;\n  }\n\n  estimateRequestTokens(request) {\n    let tokens = 0;\n\n    if (request.messages && Array.isArray(request.messages)) {\n      for (const msg of request.messages) {\n        const content = typeof msg.content === 'string'\n          ? msg.content\n          : convertContentToString(msg.content);\n        tokens += estimateTokens(content);\n      }\n    }\n\n    if (request.system) {\n      tokens += estimateTokens(convertContentToString(request.system));\n    }\n\n    tokens += request.max_tokens || 16384;\n\n    return tokens;\n  }\n\n  recordRequest(tokens) {\n    this.pendingRequestId++;\n    const requestId = this.pendingRequestId;\n\n    this.requestHistory.push({\n      id: requestId,\n      timestamp: Date.now(),\n      tokens: tokens,\n      estimated: true\n    });\n    this.lastRequestTime = Date.now();\n    this.dailyTokens += tokens;\n\n    return requestId;\n  }\n\n  updateRequestTokens(requestId, actualTokens) {\n    const request = this.requestHistory.find(r => r.id === requestId);\n    if (request && request.estimated) {\n      const oldTokens = request.tokens;\n      const tokenDiff = actualTokens - oldTokens;\n      request.tokens = actualTokens;\n      request.estimated = false;\n      this.dailyTokens += tokenDiff;\n      console.error(`[Cerebras] Token tracking: estimated ${oldTokens} -> actual ${actualTokens} (daily: ${Math.round(this.dailyTokens/1000000)}M/${Math.round(this.config.maxTokensPerDay/1000000)}M)`);\n    }\n  }\n\n  /**\n   * Transform the request from Claude Code format to Cerebras format\n   */\n  async transformRequestIn(request, provider, context) {\n    const estimatedTokens = this.estimateRequestTokens(request);\n\n    // Check context limit BEFORE sending to Cerebras\n    const maxSafeInput = CONTEXT_LIMIT - 20000; // Leave 20K for output\n    if (estimatedTokens > maxSafeInput) {\n      console.error(`[Cerebras] Context ${estimatedTokens} tokens exceeds safe limit ${maxSafeInput}. Returning compact message.`);\n\n      // Flag to return error response\n      this._contextLimitHit = {\n        estimatedTokens,\n        limit: CONTEXT_LIMIT\n      };\n\n      // Return minimal request that will succeed\n      return {\n        model: request.model,\n        messages: [\n          { role: 'system', content: 'Say OK' },\n          { role: 'user', content: 'OK' }\n        ],\n        max_tokens: 10,\n        stream: false\n      };\n    }\n\n    // Calculate and apply delay if needed\n    const delay = this.calculateDelay(estimatedTokens);\n    if (delay > 0) {\n      const usage = this.getCurrentUsage();\n      const delayStr = delay >= 60000\n        ? `${Math.round(delay/60000)}m ${Math.round((delay%60000)/1000)}s`\n        : `${(delay/1000).toFixed(1)}s`;\n      console.error(`[Cerebras] Rate limit: waiting ${delayStr} (RPM: ${usage.requestCount}/${this.config.maxRequestsPerMinute}, TPM: ${Math.round(usage.tokenCount/1000)}K/${Math.round(this.config.maxTokensPerMinute/1000)}K)`);\n      await new Promise(resolve => setTimeout(resolve, delay));\n    }\n\n    this.currentRequestId = this.recordRequest(estimatedTokens);\n\n    // Deep clone and transform\n    const transformedRequest = JSON.parse(JSON.stringify(request));\n\n    // Deduplicate tool_call.ids (Cerebras is strict about this)\n    const seenToolCallIds = new Set();\n    if (transformedRequest.messages && Array.isArray(transformedRequest.messages)) {\n      for (const msg of transformedRequest.messages) {\n        if (msg.tool_calls && Array.isArray(msg.tool_calls)) {\n          msg.tool_calls = msg.tool_calls.filter(tc => {\n            if (tc.id && seenToolCallIds.has(tc.id)) {\n              console.error(`[Cerebras] Removing duplicate tool_call.id: ${tc.id}`);\n              return false;\n            }\n            if (tc.id) seenToolCallIds.add(tc.id);\n            return true;\n          });\n        }\n\n        if (msg.role === 'tool' && msg.tool_call_id) {\n          if (seenToolCallIds.has(msg.tool_call_id + '_response')) {\n            msg._duplicate = true;\n          } else {\n            seenToolCallIds.add(msg.tool_call_id + '_response');\n          }\n        }\n      }\n\n      transformedRequest.messages = transformedRequest.messages.filter(msg => !msg._duplicate);\n    }\n\n    // Remove unsupported fields\n    delete transformedRequest.reasoning;\n    delete transformedRequest.reasoning_content;\n    delete transformedRequest.thinking;\n    delete transformedRequest.anthropic_version;\n    delete transformedRequest.metadata;\n\n    // Transform messages\n    if (transformedRequest.messages && Array.isArray(transformedRequest.messages)) {\n      transformedRequest.messages = transformedRequest.messages.map((message) => {\n        const transformedMessage = { ...message };\n\n        if (message.content !== undefined) {\n          transformedMessage.content = convertContentToString(message.content);\n        }\n\n        if (message.role === 'system' && message.content !== undefined) {\n          transformedMessage.content = convertContentToString(message.content);\n        }\n\n        delete transformedMessage.cache_control;\n\n        return transformedMessage;\n      });\n    }\n\n    // Handle top-level system field\n    if (transformedRequest.system !== undefined) {\n      const systemContent = convertContentToString(transformedRequest.system);\n\n      const hasSystemMessage = transformedRequest.messages &&\n        transformedRequest.messages.length > 0 &&\n        transformedRequest.messages[0].role === 'system';\n\n      if (!hasSystemMessage && transformedRequest.messages) {\n        transformedRequest.messages.unshift({\n          role: 'system',\n          content: systemContent\n        });\n      }\n\n      delete transformedRequest.system;\n    }\n\n    if (!transformedRequest.max_tokens) {\n      transformedRequest.max_tokens = 16384;\n    }\n\n    delete transformedRequest.stream_options;\n\n    return transformedRequest;\n  }\n\n  /**\n   * Transform the response\n   */\n  async transformResponseOut(response, context) {\n    const requestId = this.currentRequestId;\n\n    // Check if we hit context limit - return Anthropic error format\n    if (this._contextLimitHit) {\n      const info = this._contextLimitHit;\n      this._contextLimitHit = null;\n\n      console.error(`[Cerebras] Returning Anthropic-format context limit error`);\n\n      // Return exact Anthropic error format that Claude Code recognizes\n      const errorBody = {\n        type: 'error',\n        error: {\n          type: 'invalid_request_error',\n          message: `prompt is too long: ${info.estimatedTokens} tokens > ${info.limit} maximum`\n        }\n      };\n\n      return new Response(JSON.stringify(errorBody), {\n        status: 400,\n        headers: { 'Content-Type': 'application/json' }\n      });\n    }\n\n    // Handle non-streaming JSON response\n    try {\n      if (response && typeof response === 'object' && !response.body) {\n        // Fix agent name casing in tool calls\n        if (response.choices) {\n          for (const choice of response.choices) {\n            if (choice.message?.tool_calls) {\n              for (const toolCall of choice.message.tool_calls) {\n                if (toolCall.function?.arguments) {\n                  toolCall.function.arguments = fixAgentNameCasing(toolCall.function.arguments);\n                }\n              }\n            }\n            if (typeof choice.message?.content === 'string') {\n              choice.message.content = fixAgentNameCasing(choice.message.content);\n            }\n          }\n        }\n\n        if (response.usage) {\n          const actualTokens = response.usage.total_tokens ||\n            (response.usage.prompt_tokens || 0) + (response.usage.completion_tokens || 0);\n          if (actualTokens > 0) {\n            this.updateRequestTokens(requestId, actualTokens);\n          }\n        }\n        return response;\n      }\n\n      // For streaming responses, intercept and fix agent names\n      if (response && response.body && typeof response.body.getReader === 'function') {\n        const originalBody = response.body;\n        const transformer = this;\n\n        const encoder = new TextEncoder();\n        const decoder = new TextDecoder();\n\n        const { readable, writable } = new TransformStream({\n          transform(chunk, controller) {\n            try {\n              let text = decoder.decode(chunk, { stream: true });\n              const fixedText = fixAgentNameCasing(text);\n              controller.enqueue(encoder.encode(fixedText));\n\n              // Parse SSE for usage info\n              const lines = fixedText.split('\\n');\n              for (const line of lines) {\n                if (line.startsWith('data: ') && !line.includes('[DONE]')) {\n                  try {\n                    const data = JSON.parse(line.slice(6));\n                    if (data.usage) {\n                      const actualTokens = data.usage.total_tokens ||\n                        (data.usage.prompt_tokens || 0) + (data.usage.completion_tokens || 0);\n                      if (actualTokens > 0) {\n                        transformer.updateRequestTokens(requestId, actualTokens);\n                      }\n                    }\n                  } catch (e) {\n                    // Not valid JSON, skip\n                  }\n                }\n              }\n            } catch (e) {\n              controller.enqueue(chunk);\n            }\n          }\n        });\n\n        originalBody.pipeTo(writable).catch(() => {});\n\n        return new Response(readable, {\n          status: response.status,\n          statusText: response.statusText,\n          headers: response.headers\n        });\n      }\n    } catch (e) {\n      console.error('[Cerebras] Error processing response:', e.message);\n    }\n\n    return response;\n  }\n}\n\nmodule.exports = CerebrasTransformer;\nmodule.exports.default = CerebrasTransformer;\n```\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1178/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1177",
      "id": 3866374489,
      "node_id": "I_kwDON-_mZc7mdDFZ",
      "number": 1177,
      "title": "提供vscode 插件管理CCR配置，以便快速切换模型。 vscode插件：CCR Settings",
      "user": {
        "login": "VonSdite",
        "id": 25704948,
        "node_id": "MDQ6VXNlcjI1NzA0OTQ4",
        "avatar_url": "https://avatars.githubusercontent.com/u/25704948?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/VonSdite",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-28T16:50:21Z",
      "updated_at": "2026-02-15T02:17:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "提供vscode 插件管理CCR配置，以便快速切换模型。 vscode插件：CCR Settings\nhttps://marketplace.visualstudio.com/items?itemName=VonSdite.ccr-settings\n详见：https://github.com/VonSdite/Claude-Code-Router-Settings\n核心功能：\n\n<img width=\"669\" height=\"741\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f4b34379-0799-4017-b735-55f9cbf28936\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1177/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1175",
      "id": 3859747990,
      "node_id": "I_kwDON-_mZc7mDxSW",
      "number": 1175,
      "title": "The vscode cc plugin cannot switch models. The default model in the ccr ui is used. Is there any way to switch it?",
      "user": {
        "login": "gdw-java",
        "id": 44169276,
        "node_id": "MDQ6VXNlcjQ0MTY5Mjc2",
        "avatar_url": "https://avatars.githubusercontent.com/u/44169276?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gdw-java",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-27T09:51:55Z",
      "updated_at": "2026-01-27T09:51:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The vscode cc plugin cannot switch models. The default model in the ccr ui is used. Is there any way to switch it?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1175/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1174",
      "id": 3858647281,
      "node_id": "I_kwDON-_mZc7l_kjx",
      "number": 1174,
      "title": "How to switch back to claude provider after activating ccr ?",
      "user": {
        "login": "iqbalmineraltown",
        "id": 3488542,
        "node_id": "MDQ6VXNlcjM0ODg1NDI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3488542?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iqbalmineraltown",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-27T03:39:37Z",
      "updated_at": "2026-01-27T03:43:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, is there any built in way to switch back to Claude provider on the go?\ne.g. adding claude provider then switch preset, or via ccr command\n\nIf I already set the `ccr activate`, I need to unset the env variables to switch back using Claude provider in claude code\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1174/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1173",
      "id": 3858593848,
      "node_id": "I_kwDON-_mZc7l_Xg4",
      "number": 1173,
      "title": "ccr 没有 ui",
      "user": {
        "login": "XDhughie",
        "id": 21984781,
        "node_id": "MDQ6VXNlcjIxOTg0Nzgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/21984781?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/XDhughie",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-27T03:12:21Z",
      "updated_at": "2026-02-06T05:34:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "[2026-01-27T03:11:57.109Z] INFO: Transformation manager initialized\nUsage: ccr [options] [command]\n\nClaude Code Router - Route Claude Code requests to multiple AI providers\n\nOptions:\n  -v, --version             Display version number\n  -h, --help                display help for command\n\nCommands:\n  start [options]           Start the Claude Code Router server\n  status [options]          Check router status\n  health [options]          Check router and provider health\n  code [options] [...args]  Start router and launch Claude Code with routing\n  config [options]          Show or edit configuration\n  help [command]            display help for command",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1173/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1172",
      "id": 3858405256,
      "node_id": "I_kwDON-_mZc7l-peI",
      "number": 1172,
      "title": "ccr部署到k8s集群中时，挂载卷后无法启动问题",
      "user": {
        "login": "dydy-94",
        "id": 109022375,
        "node_id": "U_kgDOBn-Mpw",
        "avatar_url": "https://avatars.githubusercontent.com/u/109022375?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dydy-94",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-27T01:38:41Z",
      "updated_at": "2026-01-27T01:38:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我将源码下载、修改dockerfile后打成了镜像，在部署到k8s集群后，我给ccr挂载了一个文件（通过volume mount），但是在挂载后，ccr就无法启动了， 日志里面有报错PM2 error: Error: Could not create folder,  我挂载文件地址为/opt/.claude-code-router/config.json",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1172/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1170",
      "id": 3852650823,
      "node_id": "I_kwDON-_mZc7loslH",
      "number": 1170,
      "title": "AskUserQuestion工具调用时，传递的参数是string而不是array",
      "user": {
        "login": "dream-north",
        "id": 20548939,
        "node_id": "MDQ6VXNlcjIwNTQ4OTM5",
        "avatar_url": "https://avatars.githubusercontent.com/u/20548939?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dream-north",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-25T06:00:49Z",
      "updated_at": "2026-01-25T06:01:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "模型qwen3-max，在触发AskUserQuestion工具时基本上很难成功，原因是传递的参数是string而不是array\n感觉是模型调用工具的输出问题，但是已经添加了enhancetool还是这样，是不是可以在enhancetool层尝试转换一下array？\n\n<tool_use_error>InputValidationError: AskUserQuestion failed due to the following issue:\nThe parameter `questions` type is expected as `array` but provided as `string`</tool_use_error>\n\n<img width=\"1298\" height=\"830\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/94695358-ea90-4abd-aa9b-e0aa30fa5a6e\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1170/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1168",
      "id": 3846289503,
      "node_id": "I_kwDON-_mZc7lQbhf",
      "number": 1168,
      "title": "env variable interpolation overwritten when saving config via Ui",
      "user": {
        "login": "academo",
        "id": 227916,
        "node_id": "MDQ6VXNlcjIyNzkxNg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/227916?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/academo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-23T07:53:05Z",
      "updated_at": "2026-01-23T07:53:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "e.g. config of a provider:\n\n```json\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"$DEEPSEEK_API_KEY\",\n      \"models\": [\n        \"deepseek-chat\",\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"deepseek\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"tooluse\"\n          ]\n        }\n      }\n    },\n```\nProblem: When the Web UI saves the config, environment variable placeholders (e.g., ${API_KEY}) are permanently replaced with their actual values.\n\n## Root Cause\n- GET /api/config returns interpolated config (env vars expanded to actual values via interpolateEnvVars())\n- UI modifies and sends this interpolated config back\n- POST /api/config writes it exactly as received, losing ${VAR_NAME} placeholders\n\nthis means saving the config will hardcode the values back into the config file exposing the secrets that otherwise you'd like to keep in env or in my case, in my password manager that I use to pass the ENV values to CCR when I invoke it\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1168/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1167",
      "id": 3846277679,
      "node_id": "I_kwDON-_mZc7lQYov",
      "number": 1167,
      "title": "web search routing",
      "user": {
        "login": "tjengbudi",
        "id": 3039807,
        "node_id": "MDQ6VXNlcjMwMzk4MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3039807?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tjengbudi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-23T07:49:08Z",
      "updated_at": "2026-01-23T07:49:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i trying web search and strugle a bit. \n\ncan i used web search z.ai provide? or how to used it locally? with brave mcp? is that possible?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1167/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1166",
      "id": 3845837654,
      "node_id": "I_kwDON-_mZc7lOtNW",
      "number": 1166,
      "title": "custom Transformer for Ollama didn't work.",
      "user": {
        "login": "ThousandOfWind",
        "id": 21994238,
        "node_id": "MDQ6VXNlcjIxOTk0MjM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/21994238?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ThousandOfWind",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-23T04:59:45Z",
      "updated_at": "2026-01-23T04:59:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I use local ollama api/chat,  but when I check curl directly call Ollama it works.\n\nerror I get \n>API Error: 400 {\"error\":{\"message\":\"Error from provider(local,deepseek-r1: 400): {\\\"error\\\":\\\"json: cannot unmarshal array into Go struct field                     \n    ChatRequest.messages.content of type string\\\"}Error: Error from provider(local,deepseek-r1: 400): {\\\"error\\\":\\\"json: cannot unmarshal array into Go struct field    \n    ChatRequest.messages.content of type string\\\"}\\n    at qn                                                                                                           \n    (/Users/zhuzhirui/.nvm/versions/node/v24.13.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:7451)\\n    at fD                                      \n    (/Users/zhuzhirui/.nvm/versions/node/v24.13.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:11338)\\n    at process.processTicksAndRejections      \n    (node:internal/process/task_queues:103:5)\\n    at async cN (/Users/zhuzhirui/.nvm/versions/node/v24.13.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js\n    582:8659)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}    \n\n\nI add a custom transformer, but it looks like never used, because with I find the log {\"level\":20,\"time\":1769144019944,\"pid\":26614,\"hostname\":\"Mac\",\"reqId\":\"req-3\",\"request\":{\"method\":\"POST\",\"headers\":{},\"body\": ....\nI find the body is never changed whatever I have config the transform or not\n\n```js\n// azure-responses-simple.js\n\nclaudeMessage2OllamaMessage = (message) => {\n  let text = \"\";\n  if (typeof message.content === \"string\") {\n    text = message.content;\n  }\n  else\n  {\n    text = message.content.where(m => m.type === \"text\").map(m => m.text).join(\"\\n\");\n  }\n  let tool_calls = message.content.where(m => m.type === \"tool_use\").map(t => {\n    return {\n      name: t.name,\n      arguments: t.input\n    }\n  });\n  return {\n    role: message.role,\n    content: text,\n    tool_calls: tool_calls\n  };\n}\n\nmodule.exports = class OllamaTransformer {\n  constructor(options) {\n    this.name = 'ollama';\n    this.options = options;\n  }\n\n  async transformRequestIn(request) {\n    let messages = [\n      ...request.messages.map((message) => claudeMessage2OllamaMessage(message))\n    ];\n\n    var think = false;\n\n    if (!!request.reasoning?.effort && request.reasoning.effort.toLowerCase() != \"none\" && request.reasoning.enabled) {\n      think = request.reasoning.effort;\n    } else {\n    }\n    \n    // request.stream = false;\n    return {\n      ...request,\n      messages: messages,\n      think: think\n    };\n  }\n\n};\n```\n\nconfig\n```json\n  \"Providers\": [\n    {\n      \"name\": \"local\",\n      \"api_base_url\": \"http://localhost:11434/api/chat\",\n      \"api_key\": \"ollama\",\n      \"models\": [\n        \"gemma3\",\n        \"deepseek-r1\",\n        \"qwen3-vl\",\n        \"functiongemma\",\n        \"qwen3:30b\",\n        \"llama3.2\"\n      ],\n      \"transformers\": [\n        {\n          \"name\": \"ollama\",\n          \"path\": \"/Users/zhuzhirui/.claude-code-router/plugins/ollama.transform.js\",\n          \"options\": {}\n        }\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"ollama\"\n        ]\n      }\n    },\n...\n```\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1166/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1163",
      "id": 3842711944,
      "node_id": "I_kwDON-_mZc7lCyGI",
      "number": 1163,
      "title": "README out of date",
      "user": {
        "login": "l3afyb0y",
        "id": 153578368,
        "node_id": "U_kgDOCSdrgA",
        "avatar_url": "https://avatars.githubusercontent.com/u/153578368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/l3afyb0y",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-22T12:27:21Z",
      "updated_at": "2026-01-22T12:27:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "the npm install for Claude Code is deprecated according to the Github for it. \n\nThe new command is\n``` bash\ncurl -fsSL https://claude.ai/install.sh | bash\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1163/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1162",
      "id": 3842694596,
      "node_id": "I_kwDON-_mZc7lCt3E",
      "number": 1162,
      "title": "自定义路由该怎么写",
      "user": {
        "login": "redhair4740",
        "id": 86517331,
        "node_id": "MDQ6VXNlcjg2NTE3MzMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/86517331?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/redhair4740",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-22T12:22:57Z",
      "updated_at": "2026-01-22T12:23:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nmodule.exports = async function(req, config) {\n  const userMessage = req.body.messages.find(m => m.role === 'user')?.content;\n\n  if (!userMessage) return null;\n/**\n  if (userMessage.includes('Design') || userMessage.includes('Architecture') || \n       userMessage.includes('Diagram') || userMessage.includes('Conceptual') || \n       userMessage.includes('Plan') || userMessage.includes('Strategy') || \n       userMessage.includes('System Structure') || userMessage.includes('Database Schema') || \n       userMessage.includes('Roadmap') || userMessage.includes('设计') || \n       userMessage.includes('架构') || userMessage.includes('规划') || \n       userMessage.includes('方案') || userMessage.includes('数据库模型') || \n       userMessage.includes('原理')) {\n    \treturn 'cpa, claude-opus-4-5-20251101';\n  \t}\n    */\n\n  if (userMessage.includes('Search') || userMessage.includes('查找') || \n       userMessage.includes('Find') || userMessage.includes('搜索') || \n       userMessage.includes('List') || userMessage.includes('列出') || \n       userMessage.includes('Grep') || userMessage.includes('解释') || \n       userMessage.includes('Locate') || userMessage.includes('阅读') || \n       userMessage.includes('Where is') || userMessage.includes('在哪') || \n       userMessage.includes('Explain') || userMessage.includes('Read') || \n       userMessage.includes('Bash')) {\n        console.log(\"============2\");\n    \treturn 'cpa, minimax-m2.1';\n  \t}\n\n  // 默认\n  return null;\n};\n\n这是我的custom-router.js，但是search、bash之类的命令并不会走我配置的minimax\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1162/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1161",
      "id": 3841802395,
      "node_id": "I_kwDON-_mZc7k_UCb",
      "number": 1161,
      "title": "ValidationException: x-anthropic-billing-header",
      "user": {
        "login": "Aaron-qf",
        "id": 28803166,
        "node_id": "MDQ6VXNlcjI4ODAzMTY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/28803166?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Aaron-qf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2026-01-22T08:22:26Z",
      "updated_at": "2026-02-12T18:38:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error: 400 {\"error\":{\"message\":\"Error from provider(jk,claude-sonnet-4-5-20250929: 400):                                \n    {\\\"error\\\":{\\\"message\\\":\\\"Provider API error: InvokeModelWithResponseStream: operation error Bedrock Runtime:               \n    InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: d529ab16-da2c-4500-a93e-78b37334acdb,       \n    ValidationException: x-anthropic-billing-header is a reserved keyword and may not be used in the system prompt.   (request  \n    id: 20260122161833487719282t9RBCjxq)\\\",\\\"type\\\":\\\"system_error\\\"}}Error: Error from provider(jk,claude-sonnet-4-5-20250929: \n    400): {\\\"error\\\":{\\\"message\\\":\\\"Provider API error: InvokeModelWithResponseStream: operation error Bedrock Runtime:         \n    InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: d529ab16-da2c-4500-a93e-78b37334acdb,       \n    ValidationException: x-anthropic-billing-header is a reserved keyword and may not be used in the system prompt.   (request  \n    id: 20260122161833487719282t9RBCjxq)\\\",\\\"type\\\":\\\"system_error\\\"}}\\n    at qn                                               \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:7451)\\n    at fD                                \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:11338)\\n    at process.processTicksAndRejections\n     (node:internal/process/task_queues:105:5)\\n    at async cN (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist\n    /cli.js:582:8659)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}  \n\n\nrequest body has valid key : x-anthropic-billing-header",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1161/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1160",
      "id": 3841422227,
      "node_id": "I_kwDON-_mZc7k93OT",
      "number": 1160,
      "title": "我用Antigravity Tools反代的应该怎么贴链接呀",
      "user": {
        "login": "zjj873994125",
        "id": 123728006,
        "node_id": "U_kgDOB1_whg",
        "avatar_url": "https://avatars.githubusercontent.com/u/123728006?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zjj873994125",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-22T06:17:40Z",
      "updated_at": "2026-01-22T06:17:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"994\" height=\"371\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b130e413-594f-4cde-a9c8-c9c3c40a0f62\" />  \n\n<img width=\"776\" height=\"825\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6229ef6b-453e-470b-b2c0-1e4112cf131f\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1160/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1159",
      "id": 3841357436,
      "node_id": "I_kwDON-_mZc7k9nZ8",
      "number": 1159,
      "title": "Title: OpenRouter provider returns HTML error instead of JSON response",
      "user": {
        "login": "Auskadi",
        "id": 218418228,
        "node_id": "U_kgDODQTMNA",
        "avatar_url": "https://avatars.githubusercontent.com/u/218418228?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Auskadi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-22T05:51:50Z",
      "updated_at": "2026-01-22T05:51:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "                                                    \n                                                                                                                                       \n  Body:                                                                                                                                \n                                                                                                                                       \n  ---                                                                                                                                  \n  Description                                                                                                                          \n                                                                                                                                       \n  When using OpenRouter as a provider, requests fail with a 500 error indicating the response is HTML (<!DOCTYPE ...) instead of valid \n  JSON. The OpenRouter API key is confirmed working via direct curl request.                                                           \n                                                                                                                                       \n  Environment                                                                                                                          \n                                                                                                                                       \n  - claude-code-router version: latest (installed via npm 2026-01-22)                                                                  \n  - Node.js: v20.20.0                                                                                                                  \n  - OS: Linux (Debian)                                                                                                                 \n  - Claude Code: v2.1.15                                                                                                               \n                                                                                                                                       \n  Configuration                                                                                                                        \n                                                                                                                                       \n  {                                                                                                                                    \n    \"LOG\": true,                                                                                                                       \n    \"LOG_LEVEL\": \"debug\",                                                                                                              \n    \"HOST\": \"127.0.0.1\",                                                                                                               \n    \"PORT\": 3456,                                                                                                                      \n    \"Providers\": [                                                                                                                     \n      {                                                                                                                                \n        \"name\": \"openrouter\",                                                                                                          \n        \"api_base_url\": \"https://openrouter.ai/api/v1\",                                                                                \n        \"api_key\": \"sk-or-v1-xxxx\",                                                                                                    \n        \"models\": [\"anthropic/claude-3.5-sonnet:beta\", \"google/gemini-flash-1.5\"],                                                     \n        \"transformers\": [\"openrouter\"],                                                                                                \n        \"default_model\": \"anthropic/claude-3.5-sonnet:beta\"                                                                            \n      }                                                                                                                                \n    ],                                                                                                                                 \n    \"Router\": {                                                                                                                        \n      \"default\": \"openrouter\",                                                                                                         \n      \"background\": \"openrouter\"                                                                                                       \n    }                                                                                                                                  \n  }                                                                                                                                    \n                                                                                                                                       \n  Error                                                                                                                                \n                                                                                                                                       \n  500 {\"error\":{\"message\":\"Unexpected token '<', \\\"<!DOCTYPE \\\"... is not valid JSON                                                   \n  SyntaxError: Unexpected token '<', \\\"<!DOCTYPE \\\"... is not valid JSON                                                               \n      at JSON.parse (<anonymous>)                                                                                                      \n      ...                                                                                                                              \n      at async yN.transformResponseIn                                                                                                  \n                                                                                                                                       \n  Verification                                                                                                                         \n                                                                                                                                       \n  Direct API call works correctly:                                                                                                     \n  curl https://openrouter.ai/api/v1/models -H \"Authorization: Bearer sk-or-v1-xxxx\"                                                    \n  # Returns valid JSON model list                                                                                                      \n                                                                                                                                       \n  Expected Behavior                                                                                                                    \n                                                                                                                                       \n  Requests should be properly transformed and sent to OpenRouter, returning valid JSON responses.                                      \n                                                                                                                                       \n  Logs                                                                                                                                 \n                                                                                                                                       \n  {\"msg\":\"openrouter provider registered\"}                                                                                             \n  {\"msg\":\"Server listening at http://127.0.0.1:3456\"}                                                                                  \n  {\"msg\":\"Using background model for claude-haiku-4-5-20251001\"}                                                                       \n                                                                                                                                       \n  The provider registers successfully but subsequent requests return HTML error pages from OpenRouter.    ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1159/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1158",
      "id": 3840932167,
      "node_id": "I_kwDON-_mZc7k7_lH",
      "number": 1158,
      "title": "好像用不了，是不支持node18.19版本吗",
      "user": {
        "login": "zjj873994125",
        "id": 123728006,
        "node_id": "U_kgDOB1_whg",
        "avatar_url": "https://avatars.githubusercontent.com/u/123728006?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zjj873994125",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-22T02:31:59Z",
      "updated_at": "2026-01-22T02:31:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1080\" height=\"335\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b0d753be-41ce-47c6-9cc1-8fd5ebd4288b\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1158/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1156",
      "id": 3836110063,
      "node_id": "I_kwDON-_mZc7kpmTv",
      "number": 1156,
      "title": "Statusline",
      "user": {
        "login": "gadnaw",
        "id": 54025209,
        "node_id": "MDQ6VXNlcjU0MDI1MjA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/54025209?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gadnaw",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-21T01:12:45Z",
      "updated_at": "2026-01-21T02:15:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Edit packages/cli/src/utils/statusline.ts - fix the calculateContextPercent",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1156/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1155",
      "id": 3833792485,
      "node_id": "I_kwDON-_mZc7kgwfl",
      "number": 1155,
      "title": "ccr",
      "user": {
        "login": "Eivs",
        "id": 358178,
        "node_id": "MDQ6VXNlcjM1ODE3OA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/358178?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Eivs",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-20T13:40:05Z",
      "updated_at": "2026-01-20T13:40:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "~/.claude/settings.json\n{\n  \"skipWebFetchPreflight\": true\n}\n~/.claude-code-router/config.json\n{\n  \"LOG\": false,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"deepseek-chat\",\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"deepseek\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"tooluse\"\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"coreshub\",\n      \"api_base_url\": \"https://openapi.coreshub.cn/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"DeepSeek-V3.2\",\n        \"GLM-4.7\",\n        \"Kimi-K2\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"coreshub,GLM-4.7\",\n    \"background\": \"coreshub,GLM-4.7\",\n    \"think\": \"coreshub,GLM-4.7\",\n    \"longContext\": \"coreshub,GLM-4.7\",\n    \"longContextThreshold\": 200000,\n    \"webSearch\": \"coreshub,GLM-4.7\"\n  }\n}%",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1155/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1153",
      "id": 3831967629,
      "node_id": "I_kwDON-_mZc7kZy-N",
      "number": 1153,
      "title": "transformers.md里的图是不是画错了，应该先调用transformResponseOut 再调用transformResponseIn",
      "user": {
        "login": "qbwu",
        "id": 16622942,
        "node_id": "MDQ6VXNlcjE2NjIyOTQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/16622942?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/qbwu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-20T04:11:17Z",
      "updated_at": "2026-01-20T04:11:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "[claude-code-router](https://github.com/musistudio/claude-code-router/tree/main)/[packages](https://github.com/musistudio/claude-code-router/tree/main/packages)/[core](https://github.com/musistudio/claude-code-router/tree/main/packages/core)/[src](https://github.com/musistudio/claude-code-router/tree/main/packages/core/src)/[api](https://github.com/musistudio/claude-code-router/tree/main/packages/core/src/api)/[routes.ts](https://github.com/musistudio/claude-code-router/tree/main/packages/core/src/api/routes.ts)\n\n```\nasync function processResponseTransformers(\n  requestBody: any,\n  response: any,\n  provider: any,\n  transformer: any,\n  bypass: boolean,\n  context: any\n) {\n  let finalResponse = response;\n\n  // Execute provider-level response transformers\n  if (!bypass && provider.transformer?.use?.length) {\n    for (const providerTransformer of Array.from(\n      provider.transformer.use\n    ).reverse() as Transformer[]) {\n      if (\n        !providerTransformer ||\n        typeof providerTransformer.transformResponseOut !== \"function\"\n      ) {\n        continue;\n      }\n      finalResponse = await providerTransformer.transformResponseOut!(\n        finalResponse,\n        context\n      );\n    }\n  }\n\n  // Execute model-specific response transformers\n  if (!bypass && provider.transformer?.[requestBody.model]?.use?.length) {\n    for (const modelTransformer of Array.from(\n      provider.transformer[requestBody.model].use\n    ).reverse() as Transformer[]) {\n      if (\n        !modelTransformer ||\n        typeof modelTransformer.transformResponseOut !== \"function\"\n      ) {\n        continue;\n      }\n      finalResponse = await modelTransformer.transformResponseOut!(\n        finalResponse,\n        context\n      );\n    }\n  }\n\n  // Execute transformer's transformResponseIn method\n  if (!bypass && transformer.transformResponseIn) {\n    finalResponse = await transformer.transformResponseIn(\n      finalResponse,\n      context\n    );\n  }\n\n  return finalResponse;\n}\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1153/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1151",
      "id": 3825639346,
      "node_id": "I_kwDON-_mZc7kBp-y",
      "number": 1151,
      "title": "Web search models not being called.",
      "user": {
        "login": "filiptrplan",
        "id": 8643457,
        "node_id": "MDQ6VXNlcjg2NDM0NTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8643457?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/filiptrplan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-01-17T18:45:22Z",
      "updated_at": "2026-01-23T07:44:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I configured the `webSearch` model to be an Openrouter `:online` variant but I always get `Did 0 searches in 3s`. In the Openrouter dashboard, the request isn't made at all.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1151/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1150",
      "id": 3822750781,
      "node_id": "I_kwDON-_mZc7j2ow9",
      "number": 1150,
      "title": "update gemini cli transformers",
      "user": {
        "login": "Axtraa",
        "id": 194104611,
        "node_id": "U_kgDOC5HNIw",
        "avatar_url": "https://avatars.githubusercontent.com/u/194104611?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Axtraa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-16T16:33:46Z",
      "updated_at": "2026-01-16T16:33:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "is it possible to update gemini cli transformers to use gemini 3.0 pro and gemini 3.0 flash in claude code router ?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1150/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1149",
      "id": 3821940418,
      "node_id": "I_kwDON-_mZc7jzi7C",
      "number": 1149,
      "title": "OpenAI response api support",
      "user": {
        "login": "abhijit8ganguly-afk",
        "id": 237199272,
        "node_id": "U_kgDODiNfqA",
        "avatar_url": "https://avatars.githubusercontent.com/u/237199272?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/abhijit8ganguly-afk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-16T13:00:14Z",
      "updated_at": "2026-01-16T13:00:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey i want to use claude code with gpt-5.2-codex, but this model only support response api. \nDoes this tool provide support for responses API?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1149/reactions",
        "total_count": 9,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 4
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1148",
      "id": 3821721373,
      "node_id": "I_kwDON-_mZc7jytcd",
      "number": 1148,
      "title": "No command  or configuration guide to integrate mcp servers( github mcp )  to claude code router.",
      "user": {
        "login": "AbdulQadir8",
        "id": 72802808,
        "node_id": "MDQ6VXNlcjcyODAyODA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/72802808?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AbdulQadir8",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-16T11:53:49Z",
      "updated_at": "2026-01-17T07:39:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1148/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1146",
      "id": 3820088573,
      "node_id": "I_kwDON-_mZc7jsez9",
      "number": 1146,
      "title": "customized transformer : ResponseIn has not been called",
      "user": {
        "login": "wzl-1997",
        "id": 71863056,
        "node_id": "MDQ6VXNlcjcxODYzMDU2",
        "avatar_url": "https://avatars.githubusercontent.com/u/71863056?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wzl-1997",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-16T03:09:40Z",
      "updated_at": "2026-01-16T03:24:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我基于 https://musistudio.github.io/claude-code-router/zh-CN/docs/server/config/transformers 文中的mock示例开发了一个自己的转换器\n期望实现2个功能：\n1. 将统一格式请求转为厂商格式请求\n2. 将厂商格式回复转为统一格式回复\n我现在遇到的问题是：我的转换器的RequestIn接口可以被正确调用，但是ResponseIn接口没有被调用，导致触发AnthropicTransformer中的“Provider Error” status 500报错\n我的相关配置：\n```\n  \"transformers\": [\n    {\n      \"name\": \"ducky\",\n      \"path\": \"/Users/xxx/.claude-code-router/plugins/ducky.transformer.js\",\n      \"options\": {}\n    }\n   ]\n```\n```\n   {\n      \"name\": \"xxx\",\n      \"api_base_url\": \"xxx\",\n      \"api_key\": \"xxx\",\n      \"models\": [\n        \"xxx\",\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"ducky\"\n        ]\n      }\n    }\n  ],\n```\nducky.transformer.js中部分代码：\n```\nmodule.exports = class DuckyTransformer {\n  constructor() {\n    this.name = 'ducky';\n    this.endPoint = '/v1/chat/';\n  }\n```\n函数声明：\n```\nasync transformRequestIn(request, provider, context) \nasync transformResponseIn(response, context)\n```\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1146/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1145",
      "id": 3818926573,
      "node_id": "I_kwDON-_mZc7joDHt",
      "number": 1145,
      "title": "very few CLI commands",
      "user": {
        "login": "uzair-aidev",
        "id": 226806159,
        "node_id": "U_kgDODYTJjw",
        "avatar_url": "https://avatars.githubusercontent.com/u/226806159?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/uzair-aidev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-15T19:50:07Z",
      "updated_at": "2026-01-15T19:50:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "there should be a command for one-shot interaction in the CLI. like: ccr code \"complete my taks\". and some other flags and options that claude code has",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1145/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1144",
      "id": 3816644206,
      "node_id": "I_kwDON-_mZc7jfV5u",
      "number": 1144,
      "title": "Cannot read properties o f undefined (reading 'image')",
      "user": {
        "login": "jlwang1980",
        "id": 130333384,
        "node_id": "U_kgDOB8S6yA",
        "avatar_url": "https://avatars.githubusercontent.com/u/130333384?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jlwang1980",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2026-01-15T09:06:15Z",
      "updated_at": "2026-01-28T08:56:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\"level\":50,\"time\":1768467792575,\"pid\":1784385,\"hostname\":\"AI-07\",\"reqId\":\"req-4\",\"err\":{\"type\":\"TypeError\",\"message\":\"Cannot read properties of undefined (reading 'image')\",\"stack\":\"TypeError: Cannot read properties o\nf undefined (reading 'image')\\n    at K6.shouldHandle (/home/AI01/.nvm/versions/node/v20.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:858:714)\\n    at Object.<anonymous> (/home/AI01/.nvm/versions/no\nde/v20.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:871:3531)\\n    at R (/home/AI01/.nvm/versions/node/v20.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:56:30438)\\n    at j (/home\n/AI01/.nvm/versions/node/v20.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:56:29363)\\n    at ee (/home/AI01/.nvm/versions/node/v20.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:56:\n29463)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\"},\"msg\":\"Cannot read properties of undefined (reading 'image')\"}\n\nnode 20.10.0\ncentos7\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1144/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1143",
      "id": 3816558849,
      "node_id": "I_kwDON-_mZc7jfBEB",
      "number": 1143,
      "title": "doubao 1.8 1228 支持",
      "user": {
        "login": "msxfXF",
        "id": 38368353,
        "node_id": "MDQ6VXNlcjM4MzY4MzUz",
        "avatar_url": "https://avatars.githubusercontent.com/u/38368353?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/msxfXF",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-15T08:40:03Z",
      "updated_at": "2026-01-15T08:40:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error: 400 {\"error\":{\"message\":\"Error from \n    provider(ark2,ep-20260115162741-qb4l8: 400): \n    {\\\"error\\\":{\\\"code\\\":\\\"InvalidParameter\\\",\\\"message\\\":\\\"Invalid decoding \n    guidance syntax. Request id: 0217684662584696c55f13bae619a3d0171e4d824c718ba\n    bb79c4\\\",\\\"param\\\":\\\"\\\",\\\"type\\\":\\\"BadRequest\\\"}}Error: Error from \n    provider(ark2,ep-20260115162741-qb4l8: 400): \n    {\\\"error\\\":{\\\"code\\\":\\\"InvalidParameter\\\",\\\"message\\\":\\\"Invalid decoding \n    guidance syntax. Request id: 0217684662584696c55f13bae619a3d0171e4d824c718ba\n    bb79c4\\\",\\\"param\\\":\\\"\\\",\\\"type\\\":\\\"BadRequest\\\"}}\\n    at nt \n    (/Users/bytedance/.nvm/versions/node/v22.17.1/lib/node_modules/@musistudio/c\n    laude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/Users/bytedance/.nvm/versions/node/v22.17.1/lib/node_modules/@musistudio/c\n    laude-code-router/dist/cli.js:80000:11)\\n    at \n    process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async f0 \n    (/Users/bytedance/.nvm/versions/node/v22.17.1/lib/node_modules/@musistudio/c\n    laude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider\n    _response_error\"}}\n\n请帮忙看下 doubao 1.8-1228，解码有问题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1143/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1142",
      "id": 3816548820,
      "node_id": "I_kwDON-_mZc7je-nU",
      "number": 1142,
      "title": "Claude Code Router does not overwrite Claude Code",
      "user": {
        "login": "matteoFeduzi",
        "id": 28727919,
        "node_id": "MDQ6VXNlcjI4NzI3OTE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/28727919?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/matteoFeduzi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2026-01-15T08:37:43Z",
      "updated_at": "2026-01-28T19:23:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, I've tried everything, but unfortunately Claude Code Router doesn't seem to be working. It doesn't overwrite Claude Code, and every time I launch `ccr code`, it's as if I were launching the `claude` command. Where am I going wrong? I have a 2019 iMac with an Intel processor and I'm using this:\nnode v25.3.0\nnpm 11.6.2",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1142/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1140",
      "id": 3811854689,
      "node_id": "I_kwDON-_mZc7jNElh",
      "number": 1140,
      "title": "使用opencode的glm-4.7-free出现错误",
      "user": {
        "login": "yanlin0604",
        "id": 31529099,
        "node_id": "MDQ6VXNlcjMxNTI5MDk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/31529099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanlin0604",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2026-01-14T06:58:15Z",
      "updated_at": "2026-02-11T08:24:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " 500 {\"error\":{\"message\":\"Error from provider(opencode,glm-4.7-free: 500): {\\\"type\\\":\\\"error\\\",\\\"error\\\":{\\\"type\\\":\\\"error\\\",\\\"message\\\":\\\"Cannot read properties of undefined (reading 'prompt_tokens')\\\"}}Error: Error from \n     provider(opencode,glm-4.7-free: 500): {\\\"type\\\":\\\"error\\\",\\\"error\\\":{\\\"type\\\":\\\"error\\\",\\\"message\\\":\\\"Cannot read properties of undefined (reading 'prompt_tokens')\\\"}}\\n    at qn \n     (C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\nvm\\\\v23.10.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:582:7451)\\n    at fD \n     (C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\nvm\\\\v23.10.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:582:11338)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at \n     async cN (C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\nvm\\\\v23.10.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:582:8659)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1140/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1137",
      "id": 3809684585,
      "node_id": "I_kwDON-_mZc7jEyxp",
      "number": 1137,
      "title": "`ccr code` command does not pass routing configuration to Claude Code subprocess",
      "user": {
        "login": "MrGTV-love",
        "id": 222846155,
        "node_id": "U_kgDODUhcyw",
        "avatar_url": "https://avatars.githubusercontent.com/u/222846155?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MrGTV-love",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2026-01-13T16:44:21Z",
      "updated_at": "2026-01-27T07:12:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When using `ccr code`, Claude Code connects to Anthropic API instead of the configured CCR proxy.\n\n  ## Root Cause\n  The `ccr code` command starts the router service but fails to set `ANTHROPIC_BASE_URL` environment variable before launching Claude Code subprocess.\n\n  ## Evidence\n  - CCR server running on port 3456 ✓\n  - Configuration file is correct with glm-4.7-provider ✓\n  - No ANTHROPIC_BASE_URL in environment ✗\n  - Manual env var setup proves routing works ✓\n\n  ## Proposed Fix\n  In dist/cli.js, the `code` command handler needs to set environment variables before spawning:\n\n  const env = Object.assign({}, process.env);\n  env.ANTHROPIC_BASE_URL = http://${config.server.host}:${config.server.port};\n  env.ANTHROPIC_API_KEY = \"routing-proxy\";\n  spawn(\"claude\", args || [], { env });\n\n  ## Workaround\n  ccr start\n  export ANTHROPIC_BASE_URL=\"http://127.0.0.1:3456\"\n  export ANTHROPIC_API_KEY=\"routing-key\"\n  claude\n\n  ## Impact\n  - Severity: HIGH - Complete routing failure for `ccr code` users\n  - Version affected: 2.0.0\n  - Fix scope: 2-3 lines in subprocess spawn logic",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1137/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1136",
      "id": 3808996510,
      "node_id": "I_kwDON-_mZc7jCKye",
      "number": 1136,
      "title": "使用docker启动后一添加配置文件重启就无法访问ui",
      "user": {
        "login": "redhair4740",
        "id": 86517331,
        "node_id": "MDQ6VXNlcjg2NTE3MzMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/86517331?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/redhair4740",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-13T14:03:03Z",
      "updated_at": "2026-01-13T14:03:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "尝试删除config.json中的配置重启，就可以访问ui",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1136/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1135",
      "id": 3808786336,
      "node_id": "I_kwDON-_mZc7jBXeg",
      "number": 1135,
      "title": "路由规则不起作用了",
      "user": {
        "login": "RealMartin507",
        "id": 88704226,
        "node_id": "MDQ6VXNlcjg4NzA0MjI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/88704226?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/RealMartin507",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-13T13:09:20Z",
      "updated_at": "2026-01-16T09:51:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### 问题1：路由规则未按预期工作\n尽管在 config.json 中配置了完整的路由规则（default、background、think、longContext等），但 大部分请求都被自动路由到think模型（DeepSeek-R1） ，而不是根据请求类型分配到相应的模型。在硅基流动的后台看到全是R1的流量，少部分dsv3.2的流量是我把思考模型换成了3.2去测试\n\n### 问题2：Qwen模型使用场景受限\n配置中指定 background 场景应使用 Qwen/Qwen2.5-Coder-7B-Instruct 模型，但实际测试发现：\n- 只有特定的Bash命令前缀检测任务会使用Qwen模型\n- 简单的Bash命令（如 ls -la 、 echo 'Hello World' ）都被错误地路由到DeepSeek-R1模型\n- 长文本请求（11,000字符）未触发longContext路由规则\n\n### 问题3：路由决策缺乏透明度\n日志中缺少 明确的路由决策记录 ，难以追踪：\n- 系统如何判断请求类型\n- 为什么特定请求会被路由到某个模型\n- 路由规则的匹配逻辑是否正常工作\n\n### 问题4：命令行工具功能限制\n- 缺少直接通过命令行参数指定模型的功能\n- 没有/background等指令来强制使用特定路由\n- 难以直接测试不同模型的响应\n\n### 配置文件验证\n- 所有模型的transformer配置已统一为\"OpenAI\"\n- 路由规则配置正确： longContextThreshold: 60000\n- 服务已重启但问题依旧\n\n\n[config - 副本.json](https://github.com/user-attachments/files/24591085/config.-.json)\n\n[ccr-20260113192525.log](https://github.com/user-attachments/files/24591090/ccr-20260113192525.log)\n[ccr-20260113194432.log](https://github.com/user-attachments/files/24591093/ccr-20260113194432.log)\n[ccr-20260113195411.log](https://github.com/user-attachments/files/24591091/ccr-20260113195411.log)\n[ccr-20260113203557.log](https://github.com/user-attachments/files/24591092/ccr-20260113203557.log)\n[ccr-20260113205939.log](https://github.com/user-attachments/files/24591089/ccr-20260113205939.log)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1135/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1134",
      "id": 3806849526,
      "node_id": "I_kwDON-_mZc7i5-n2",
      "number": 1134,
      "title": "docker的挂载目录变成root了吧",
      "user": {
        "login": "kestrelbright",
        "id": 1538847,
        "node_id": "MDQ6VXNlcjE1Mzg4NDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1538847?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kestrelbright",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2026-01-13T02:58:24Z",
      "updated_at": "2026-01-21T07:03:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我看文档里还是写的app\n```\nversion: '3.8'\nservices:\n  claude-code-router:\n    image: musistudio/claude-code-router:latest\n    container_name: claude-code-router\n    ports:\n      - \"3456:3456\"\n    volumes:\n      - ./config:/app/.claude-code-router\n    environment:\n      - LOG_LEVEL=info\n      - HOST=0.0.0.0\n      - PORT=3456\n    restart: unless-stopped\n```\n\n实际测试最新版镜像使用的root目录\n```\n2026-01-13T02:08:08: Created minimal default configuration file at ~/.claude-code-router/config.json\n2026-01-13T02:08:08: Please edit this file with your actual configuration.\n2026-01-13T02:08:08: ℹ️  No providers configured. Listening on 0.0.0.0 without authentication.\n2026-01-13T02:08:08: Loaded JSON config from: /root/.claude-code-router/config.json\n2026-01-13T02:54:54: ℹ️  No providers configured. Listening on 0.0.0.0 without authentication.\n2026-01-13T02:54:54: Loaded JSON config from: /root/.claude-code-router/config.json\n2026-01-13T02:55:09: Backed up existing configuration file to /root/.claude-code-router/config.json.2026-01-13T02-55-09-124Z.bak\n2026-01-13T02:55:09: Loaded JSON config from: /root/.claude-code-router/config.json\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1134/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1133",
      "id": 3802373912,
      "node_id": "I_kwDON-_mZc7io58Y",
      "number": 1133,
      "title": "Bug: reasoning_content not converted to thinking block in non-streaming mode - sglang glm-4.7",
      "user": {
        "login": "voipmonitor",
        "id": 7045031,
        "node_id": "MDQ6VXNlcjcwNDUwMzE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7045031?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/voipmonitor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-01-12T00:32:53Z",
      "updated_at": "2026-01-23T03:59:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " ```\n --- a/dist/cli.js\n  +++ b/dist/cli.js\n  @@ -76231,7 +76231,7 @@ convertOpenAIResponseToAnthropic(e) {\n           let a = `srvtoolu_${Tr()}`;\n           n.push({ type: \"server_tool_use\", id: a, name: \"web_search\", input: { query: \"\" } }), n.push({ type: \"web_search_tool_result\", tool_use_id: a, content: t.message.annotations.map((u) => ({ type: \"web_search_result\", url: u.url_citation.url, title: u.url_citation.title })) });\n         }\n  -      t.message.content && n.push({ type: \"text\", text: t.message.content }), t.message.tool_calls && t.message.tool_calls.length > 0 && t.message.tool_calls.forEach((a, u) => {\n  +      t.message.reasoning_content && n.push({ type: \"thinking\", thinking: t.message.reasoning_content }), t.message.content && n.push({ type: \"text\", text: t.message.content }), t.message.tool_calls && t.message.tool_calls.length > 0 && t.message.tool_calls.forEach((a, u) => {\n\n```\n\n\n  In convertOpenAIResponseToAnthropic(), the function handles streaming responses correctly (lines 76447-76450 convert reasoning_content to thinking blocks), but non-streaming responses ignore reasoning_content entirely.\n\n  Result: When using non-streaming mode with an LLM that returns reasoning_content, the Anthropic-format response has an empty content array instead of including the thinking block.\n\n  Fix: Add handling for t.message.reasoning_content before t.message.content:\n\n  t.message.reasoning_content && n.push({ type: \"thinking\", thinking: t.message.reasoning_content }),",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1133/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1131",
      "id": 3801037147,
      "node_id": "I_kwDON-_mZc7ijzlb",
      "number": 1131,
      "title": "Bug Report: Custom Transformer Loading Fails Silently",
      "user": {
        "login": "ishan-parihar",
        "id": 129376561,
        "node_id": "U_kgDOB7YhMQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/129376561?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ishan-parihar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-11T09:51:19Z",
      "updated_at": "2026-01-11T09:51:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Summary\nCustom transformers configured via `transformers` array in config.json fail to load, causing the ccr service to exit immediately without any error messages.\n\n## Environment\n- **Installation method**: bun (via npm package `@musistudio/claude-code-router`)\n- **Node.js version**: v25.2.1\n- **OS**: Linux (CachyOS)\n\n## Description\nWhen configuring custom transformers in the `transformers` array of `~/.claude-code-router/config.json`, the ccr service fails to start. The service prints \"Loaded JSON config\" and then exits with exit code 1, but no error messages are logged to help diagnose the issue.\n\n## Reproduction Steps\n\n### Step 1: Create a custom transformer file\n```bash\ncat > ~/.claude-code-router/iflow-transformer.js << 'EOF'\nmodule.exports = class IflowTransformer {\n  constructor(options) {\n    this.name = 'iflow';\n    this.endPoint = '/v1/chat/completions';\n    this.options = options;\n  }\n\n  async auth(request, provider, context) {\n    return {\n      body: request,\n      config: {\n        headers: {\n          'User-Agent': 'iFlow-Cli',\n          'X-Client-Type': 'iflow-cli',\n          'X-Client-Version': '0.3.26',\n          'Authorization': `Bearer ${provider.apiKey}`\n        }\n      }\n    };\n  }\n\n  async transformRequestOut(request, context) {\n    return request;\n  }\n\n  async transformResponseIn(response, context) {\n    return new Response(response.body, {\n      status: response.status,\n      headers: response.headers\n    });\n  }\n};\nEOF\n```\n\n### Step 2: Verify transformer syntax\n```bash\nnode -c ~/.claude-code-router/iflow-transformer.js\n# Returns: (no output = syntax OK)\n\nnode -e \"\nconst T = require('/home/ishanp/.claude-code-router/iflow-transformer.js');\nconst t = new T({});\nconsole.log('Name:', t.name);\nconsole.log('Has auth:', typeof t.auth);\nconsole.log('Has endPoint:', t.endPoint);\n\"\n# Output:\n# Name: iflow\n# Has auth: function\n# Has endPoint: /v1/chat/completions\n```\n\n### Step 3: Configure ccr to use the transformer\n```bash\ncat > ~/.claude-code-router/config.json << 'EOF'\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"transformers\": [\n    {\n      \"path\": \"/home/ishanp/.claude-code-router/iflow-transformer.js\",\n      \"options\": {}\n    }\n  ],\n  \"Providers\": [\n    {\n      \"name\": \"iflow\",\n      \"api_base_url\": \"https://apis.iflow.cn/v1/chat/completions\",\n      \"api_key\": \"sk-f14c7b9fee2b1d37c10eecb63e6af030\",\n      \"models\": [\"glm-4.6\", \"glm-4.7\", \"minimax-m2.1\"],\n      \"transformer\": {\n        \"use\": [\"iflow\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"iflow,glm-4.7\"\n  }\n}\nEOF\n```\n\n### Step 4: Start ccr service\n```bash\nccr start\n```\n\n## Expected Behavior\nThe service should:\n1. Load the config file\n2. Register the custom transformer\n3. Start listening on port 3456\n4. Show status: \"✅ Status: Running\"\n\n## Actual Behavior\nThe service:\n1. Prints: \"Loaded JSON config from: /home/ishanp/.claude-code-router/config.json\"\n2. Exits immediately with exit code 1\n3. No error messages are logged\n4. Service status shows: \"❌ Status: Not Running\"\n\n## Logs\nLog files in `~/.claude-code-router/logs/` are empty (0 bytes) when the service fails to start.\n\n## Additional Context\n\n### Working Configuration (without custom transformer)\n```json\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"Providers\": [\n    {\n      \"name\": \"iflow\",\n      \"api_base_url\": \"https://apis.iflow.cn/v1/chat/completions\",\n      \"api_key\": \"sk-f14c7b9fee2b1d37c10eecb63e6af030\",\n      \"models\": [\"glm-4.6\", \"glm-4.7\", \"minimax-m2.1\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"iflow,glm-4.7\"\n  }\n}\n```\nThis configuration works fine and the service starts successfully, but fails to add the required headers for the iflow API.\n\n### Transformer Interface Analysis\nBased on examining the source code in `/home/ishanp/claude-code-router/packages/core/src/`, the expected transformer interface is:\n\n```typescript\ninterface Transformer {\n  name: string;\n  endPoint?: string;\n  auth?(request: any, provider: LLMProvider): Promise<{\n    body: any;\n    config: { headers: Record<string, string> };\n  }>;\n  transformRequestOut?(request: any, context?: any): Promise<any>;\n  transformResponseIn?(response: Response, context?: any): Promise<Response>;\n}\n```\n\nThe custom transformer follows this interface correctly.\n\n### Transformer Loading Code\nThe relevant code in `packages/core/src/services/transformer.ts`:\n\n```typescript\nasync registerTransformerFromConfig(config: {\n  path?: string;\n  options?: any;\n}): Promise<boolean> {\n  try {\n    if (config.path) {\n      const module = require(require.resolve(config.path));\n      if (module) {\n        const instance = new module(config.options);\n        if (!instance.name) {\n          throw new Error(\n            `Transformer instance from ${config.path} does not have a name property.`\n          );\n        }\n        this.registerTransformer(instance.name, instance);\n        return true;\n      }\n    }\n    return false;\n  } catch (error: any) {\n    this.logger.error(\n      `load transformer (${config.path}) \\nerror: ${error.message}\\nstack: ${error.stack}`\n    );\n    return false;\n  }\n}\n```\n\nThe `this.logger.error` should be logging errors, but nothing appears in the log files.\n\n## Workaround\nCurrently, there is no workaround. Custom transformers cannot be used with ccr 2.0.0.\n\n## Priority\n**High** - This blocks the ability to use providers that require custom headers or request/response transformations.\n\n## Suggested Fix\n1. Ensure error messages from `registerTransformerFromConfig` are properly logged\n2. Investigate why the service exits silently when custom transformers are configured\n3. Consider adding better validation and error reporting for transformer configuration\n4. Provide example working custom transformers in documentation\n\n## Additional Information\n- The issue occurs with both simple auth-only transformers and full transformers with all three methods\n- The transformer file syntax is valid and can be loaded successfully with `require()`\n- The issue persists across multiple restart attempts\n- The log files remain empty, suggesting the crash happens before logging is fully initialized",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1131/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1130",
      "id": 3796994199,
      "node_id": "I_kwDON-_mZc7iUYiX",
      "number": 1130,
      "title": "429 text content blocks must be non-empty",
      "user": {
        "login": "hurricane-0",
        "id": 183594418,
        "node_id": "U_kgDOCvFtsg",
        "avatar_url": "https://avatars.githubusercontent.com/u/183594418?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hurricane-0",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-09T13:41:30Z",
      "updated_at": "2026-01-09T13:41:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "环境\nNode.js v24.12.0\nClaude Code v2.1.2\nclaude-code-router version: 2.0.0\n使用api：yunwu.ai\n模型：claude-sonnet-4-5-20250929 或 claude-haiku-4-5-20251001\n\n运行ccr时提示：\n(node:12200) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.\n(Use `node --trace-deprecation ...` to show where the warning was created)\n\n使用ccr时有时会报：\n429 {\"error\":{\"message\":\"Error from provider(yunwu,claude-sonnet-4-5-20250929: 429):\n     {\\\"error\\\":{\\\"message\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"error\\\\\\\",\\\\\\\"error\\\\\\\":{\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request_error\\\\\\\",\\\\\\\"message\\\\\\\":\\\\\\\"messages: text content blocks must be\n     non-empty\\\\\\\"},\\\\\\\"request_id\\\\\\\":\\\\\\\"req_011CWwdzmNMf5YLX7zGinxkf\\\\\\\"}（traceid: 082fe5d6ee0889189deaac784db8aabe） (request id: 20260109182230513345753qPXcGug0) (request\n     id: 20260109182230480498139VDRdofEQ)\\\",\\\"type\\\":\\\"\\\\u003cnil\\\\u003e\\\",\\\"param\\\":\\\"\\\",\\\"code\\\":null}}\n\n但不使用ccr，直接在.claude/settings.json内配置相同的api就没有出现上诉问题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1130/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1129",
      "id": 3791918786,
      "node_id": "I_kwDON-_mZc7iBBbC",
      "number": 1129,
      "title": "新版cc多了tool、think等参数的要求导致一些国产模型又不能通过ccr用了",
      "user": {
        "login": "jcj1996",
        "id": 12026314,
        "node_id": "MDQ6VXNlcjEyMDI2MzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/12026314?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jcj1996",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-08T08:29:34Z",
      "updated_at": "2026-01-09T01:44:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "先后安装了比较新的cc版本2.0.76和2.1.1,想通过ccr用国内的模型。尝试了本地ollama部署的qwen2.5-coder:7b报错不支持think，尝试ollama部署的deepseek-r1:7b报错不支持tool。想了想可能是本地部署的小参数模型不够强大，不支持tool和think:high参数，所以就尝试百炼平台的qwen3-coder-plus的api，配置文件是按照这个写的，{\n      \"name\": \"dashscope\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\"qwen3-coder-plus\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ]\n      }\n    }\n结果又提示tool的名称太长了超过了64，感觉cc搞了很多参数导致国内一些模型不适配了，于是又退回到了1.0.72的cc，本地ollama部署的小参数模型就又可以用了",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1129/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1127",
      "id": 3789031691,
      "node_id": "I_kwDON-_mZc7h2AkL",
      "number": 1127,
      "title": "希望能更新一下UI，以使用备用模型等功能",
      "user": {
        "login": "asusd37hsg",
        "id": 147826484,
        "node_id": "U_kgDOCM-nNA",
        "avatar_url": "https://avatars.githubusercontent.com/u/147826484?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/asusd37hsg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-07T14:38:05Z",
      "updated_at": "2026-01-07T14:38:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "希望能更新一下UI，以使用备用模型等功能",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1127/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1124",
      "id": 3787295851,
      "node_id": "I_kwDON-_mZc7hvYxr",
      "number": 1124,
      "title": "ccr code 开始后配置不生效，还是使用claude sonnet模型",
      "user": {
        "login": "Aisikaer-ym",
        "id": 146925868,
        "node_id": "U_kgDOCMHpLA",
        "avatar_url": "https://avatars.githubusercontent.com/u/146925868?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Aisikaer-ym",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2026-01-07T04:20:27Z",
      "updated_at": "2026-02-06T08:35:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr  配置\n\n<img width=\"1891\" height=\"742\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/71da7128-56f5-44ad-b0cd-7e28fdd1707b\" />\n\n但是ccr  code之后\n\n<img width=\"1899\" height=\"1001\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a939eed5-bd0d-42f6-a7e5-21cab88ffc38\" />\n\n配置不生效。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1124/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1123",
      "id": 3787276897,
      "node_id": "I_kwDON-_mZc7hvUJh",
      "number": 1123,
      "title": "MCP 连接失败问题请教",
      "user": {
        "login": "songjiawang",
        "id": 33470505,
        "node_id": "MDQ6VXNlcjMzNDcwNTA1",
        "avatar_url": "https://avatars.githubusercontent.com/u/33470505?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/songjiawang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-07T04:08:37Z",
      "updated_at": "2026-01-27T13:37:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "给 Claude 配置了MCP工具,使用'claude mcp list' 显示是能连接的,并且使用'claude'命令启动claude后,在命令行敲/mcp 显示mcp也是连接状态\n问题是,使用'ccr code' 启动 claude,在命令行敲/mcp显示的  'failed'状态,这时什么问题呢\nccr 版本 :1.0.73\n-----------------------------\n使用ccr code 打开后的mcp状态\n\n> /mcp \n──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n Manage MCP servers\n 1 server\n\n ❯ 1. ft_generate_mcp_server  ✘ failed · Enter to view details\n\n ※ Tip: Run claude --debug to see logs inline, or view log files in\n------------------------------------------------------------------------------------------------------------------------------------------------------------------\n\n\n\n\n使用claude 打开后的mcp状态\n\n\n * ▐▛███▜▌ *   Claude Code v2.0.76\n* ▝▜█████▛▘ *  Sonnet 4.5 · API Usage Billing\n *  ▘▘ ▝▝  *   ~/code/5g_nr_v4/cpf/ucs/huc_alpha\n\n  /model to try Opus 4.5\n\n> /mcp \n\n──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n Manage MCP servers\n 1 server\n\n ❯ 1. ft_generate_mcp_server  ✔ connected · Enter to view details\n\n MCP Config locations (by scope):\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1123/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1119",
      "id": 3785440147,
      "node_id": "I_kwDON-_mZc7hoTuT",
      "number": 1119,
      "title": "did anyone try  using openrouter free account with free api ?",
      "user": {
        "login": "Priyabhunia",
        "id": 116344684,
        "node_id": "U_kgDOBu9HbA",
        "avatar_url": "https://avatars.githubusercontent.com/u/116344684?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Priyabhunia",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-01-06T14:59:16Z",
      "updated_at": "2026-01-15T08:32:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " I am using this model \"xiaomi/mimo-v2-flash:free\" with tool call capability\n\n\nI am changing the config but it is keep failing .\n\nI want to know if free account works with claude code using CCR",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1119/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1118",
      "id": 3784819919,
      "node_id": "I_kwDON-_mZc7hl8TP",
      "number": 1118,
      "title": "使用claude-sdk返回的结果没有token消耗和cost",
      "user": {
        "login": "git-msw",
        "id": 253071993,
        "node_id": "U_kgDODxWSeQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/253071993?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/git-msw",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-06T11:29:24Z",
      "updated_at": "2026-01-06T11:29:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "async for message in query(prompt = 'hello'):\n       print(message)\n\n返回的结果中token和cost都是0\nHello! How can I help you today? I'm ready to assist with any coding tasks, questions, or projects you might have.\nResult ended ResultMessage(subtype='success', duration_ms=5222, duration_api_ms=5198, is_error=False, num_turns=1, session_id='161e1a97-fab3-4c74-8f56-e3070e2fc136', total_cost_usd=0, usage={'input_tokens': 0, 'cache_creation_input_tokens': 0, 'cache_read_input_tokens': 0, 'output_tokens': 0, 'server_tool_use': {'web_search_requests': 0, 'web_fetch_requests': 0}, 'service_tier': 'standard', 'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0}}, result=\"\\n\\nHello! How can I help you today? I'm ready to assist with any coding tasks, questions, or projects you might have.\", structured_output=None)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1118/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1117",
      "id": 3783586178,
      "node_id": "I_kwDON-_mZc7hhPGC",
      "number": 1117,
      "title": "现在能用了吗，我想配置使用glm4.7，但是不管怎么改配置，都提示找不到 API Error: 400 {\"error\":\"Missing model in request body\"",
      "user": {
        "login": "regalouisei",
        "id": 221350372,
        "node_id": "U_kgDODTGJ5A",
        "avatar_url": "https://avatars.githubusercontent.com/u/221350372?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/regalouisei",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-01-06T03:21:18Z",
      "updated_at": "2026-01-07T08:16:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我的config.json如下，请问有什么问题吗？claude router，我已经重新卸载重装过了应该是最新版本。打开的也是个claude的界面\n{\n  \"PORT\": 3456,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/paas/v4/chat/completions\",\n      \"api_key\": \"我的智谱key\",\n      \"models\": [\n        \"glm-4.7\",\n              ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    },\n        \n  ],\n  \"Router\": {\n    \"default\": \"openrouter,glm-4.7\",\n    \"background\": \"openrouter,glm-4.7\",\n    \"think\": \"openrouter,glm-4.7\",\n    \"longContext\": \"openrouter,glm-4.7\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"openrouter,glm-4.7\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1117/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1116",
      "id": 3783490914,
      "node_id": "I_kwDON-_mZc7hg31i",
      "number": 1116,
      "title": "Web UI 中的 Save and restart 按钮无法restart",
      "user": {
        "login": "lf2941270",
        "id": 5663474,
        "node_id": "MDQ6VXNlcjU2NjM0NzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5663474?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lf2941270",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-06T02:24:25Z",
      "updated_at": "2026-01-06T05:30:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "# 问题现象：\n最新版本2.0.0中的 Web UI 中的 Save and restart 按钮在之前的版本点击可以直接restart，但是最新的版本没有起作用，需要用命令行 ccr restart 才能生效。\n\n# 问题分析：\n根本原因: /api/restart 端点使用 spawn(\"ccr\", [\"restart\"]) 来执行重启，但这在 Windows 上不起作用：\nWindows 上 npm 全局安装的命令是 .cmd 文件（如 ccr.cmd）\nNode.js 的 spawn 默认不通过 shell 执行，无法识别 .cmd 文件\n由于 stdio: \"ignore\"，错误被静默忽略\n对比:\nCLI ccr restart 命令使用 spawn(\"node\", [cliPath, \"start\"]) ✅ 跨平台兼容\nAPI /api/restart 使用 spawn(\"ccr\", [\"restart\"]) ❌ Windows 上失败\n\n# 解决方案\n修改 [packages/cli/src/utils/index.ts](vscode-webview://1c9ntmb2ue45ko3bglr04dfgv379aerbem9g4lb5itvaiupo0m8d/packages/cli/src/utils/index.ts) 中的 /api/restart 处理函数，复用已有的 restartService 函数，这样可以确保与 CLI 行为一致。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1116/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1114",
      "id": 3781803451,
      "node_id": "I_kwDON-_mZc7hab27",
      "number": 1114,
      "title": "forcereasoning for glm-4.7?",
      "user": {
        "login": "kierr",
        "id": 229534,
        "node_id": "MDQ6VXNlcjIyOTUzNA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/229534?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kierr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-05T14:59:51Z",
      "updated_at": "2026-01-05T14:59:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Thoughts @musistudio?\n\nCan you update the docs?\n\nThanks",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1114/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1112",
      "id": 3780061273,
      "node_id": "I_kwDON-_mZc7hTyhZ",
      "number": 1112,
      "title": "CC一直是等待状态，没有退出，也没有回复",
      "user": {
        "login": "luyufan498",
        "id": 6166841,
        "node_id": "MDQ6VXNlcjYxNjY4NDE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6166841?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luyufan498",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2026-01-05T03:49:13Z",
      "updated_at": "2026-01-05T04:26:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1919\" height=\"874\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b1f2a86f-1537-4f85-85f6-5e719067cdce\" />\n\n\n我的配置如下，实际连接的是VLLM部署的 GLM模型：\n\n<img width=\"881\" height=\"267\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f97dce5b-3994-428f-865b-74a49b33d161\" />\n\nAPI地址测试是可用的：\n\n<img width=\"2915\" height=\"1171\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6db84e36-598b-454d-8c91-6f79969c936f\" />\n\n查看日志如下：\n\n<img width=\"2765\" height=\"1386\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/dd47f6e6-78a0-4e31-9945-bb0d14e38bd9\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1112/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1111",
      "id": 3779787872,
      "node_id": "I_kwDON-_mZc7hSvxg",
      "number": 1111,
      "title": "CCR Subagent 私有协议，应用一则研究 cc-plugin",
      "user": {
        "login": "zz5678",
        "id": 67672527,
        "node_id": "MDQ6VXNlcjY3NjcyNTI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/67672527?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zz5678",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-05T00:03:46Z",
      "updated_at": "2026-01-05T00:16:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在 \nhttps://github.com/TokenRollAI/cc-plugin/issues/5\n\n发现，原本有关介绍和应用极少的 `<CCR-SUBAGENT-MODEL>`[标签](https://github.com/musistudio/claude-code-router?tab=readme-ov-file#subagent-routing)，原来它是 ccr 的私有协议 🤔，如下分析研究，分享各位进行进一步开发使用，也可以请 ccr 作者合并到项目中\n\n# CCR (Claude Code Router) 集成分析\n\n## 概述\n\ncc-plugin 通过 `<CCR-SUBAGENT-MODEL>` 标签与 Claude Code Router 配合，实现 subagent 的模型路由。\n\n**重要**: 这是 CCR 的**私有协议**，非 Anthropic Claude Code 官方规范。\n\n---\n\n## 机制原理\n\n### 数据流\n\n```\nClaude Code 发送请求 (model: \"claude-3-5-haiku-...\")\n         ↓\nCCR router() 检测 system[1] 中的标签\n         ↓\n提取 \"glm,glm-4.6\"，覆盖 req.body.model\n         ↓\nmodelProviderMiddleware 解析: provider=\"glm\", model=\"glm-4.6\"\n         ↓\n使用 glm provider 调用 glm-4.6 模型\n```\n\n### 核心代码 (CCR router.ts:161-174)\n\n```typescript\nif (\n  req.body?.system?.length > 1 &&\n  req.body?.system[1]?.text?.startsWith(\"<CCR-SUBAGENT-MODEL>\")\n) {\n  const model = req.body?.system[1].text.match(\n    /<CCR-SUBAGENT-MODEL>(.*?)<\\/CCR-SUBAGENT-MODEL>/s\n  );\n  if (model) {\n    req.body.system[1].text = req.body.system[1].text.replace(...);\n    return { model: model[1], scenarioType: 'default' };\n  }\n}\n```\n\n### 关键点\n\n| 项目 | 说明 |\n|------|------|\n| 检测位置 | `system[1].text` (第二个 system 块) |\n| 匹配条件 | 必须以标签**开头** |\n| 处理方式 | 提取模型后**移除**标签 |\n| 格式 | `provider,model` (逗号分隔) |\n\n---\n\n## 与 Router 配置的区别\n\n| 路由场景 | 需要 Router 配置 | 说明 |\n|---------|-----------------|------|\n| default | 需要 | `Router.default` |\n| background | 需要 | `Router.background` |\n| think | 需要 | `Router.think` |\n| longContext | 需要 | `Router.longContext` |\n| webSearch | 需要 | `Router.webSearch` |\n| **CCR-SUBAGENT-MODEL** | **不需要** | 直接指定任意 provider,model |\n\n**结论**: `<CCR-SUBAGENT-MODEL>` 是一种\"后门\"机制，允许绕过 Router 配置直接指定模型。\n\n---\n\n## 硬编码说明\n\n### 当前实现\n\n所有 agent 文件末尾硬编码：\n\n```xml\n<CCR-SUBAGENT-MODEL>glm,glm-4.6</CCR-SUBAGENT-MODEL>\n```\n\n### 为什么硬编码\n\n1. **CCR 限制**: 不支持变量替换或外部配置引用\n2. **位置要求**: 必须在 agent prompt 正文开头\n3. **独立配置**: 允许不同 agent 使用不同模型\n\n### 用户定制\n\n如需使用其他模型，需手动修改 `agents/*.md` 文件：\n\n```bash\n# 示例：改用 deepseek\nsed -i 's/glm,glm-4.6/deepseek,deepseek-chat/g' agents/*.md\n```\n\n**注意**: 插件更新后需重新修改。\n\n---\n\n## 常见误解\n\n### 误解 1: 这是 Claude Code 官方功能\n\n**事实**: 这是 CCR 的私有协议。Claude Code 本身不识别此标签，只是将其作为普通 prompt 文本传递。\n\n### 误解 2: 必须使用 GLM 模型\n\n**事实**: `glm,glm-4.6` 只是默认配置。可改为任何 CCR 已配置的 provider。\n\n### 误解 3: 标签位置无所谓\n\n**事实**: 必须在 front matter 之后、正文**最开头**。CCR 检查 `system[1].text.startsWith()`。\n\n### 误解 4: 不用 CCR 也能生效\n\n**事实**: 不使用 CCR 时，标签会作为普通文本发送给 Claude，不会有任何路由效果。\n\n---\n\n## 设计背景\n\n### Claude Code 的限制\n\n- 官方只允许 `haiku` 作为 subagent model\n- 用户无法通过正常配置改变 subagent 模型\n\n### CCR 的解决方案\n\n- 在 prompt 中嵌入私有协议标签\n- 绕过 Claude Code 的 model 参数限制\n- 实现 subagent 成本优化\n\n---\n\n## 相关文件\n\n| 文件 | 说明 |\n|------|------|\n| `agents/*.md` | 标签位置 (第 9 行) |\n| CCR `packages/core/src/utils/router.ts` | 路由逻辑 (161-174 行) |\n| CCR `packages/core/src/server.ts` | provider 解析 (228 行) |\n\n---\n\n\n\n\n@\nhttps://github.com/musistudio/claude-code-router/issues/771",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1111/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1109",
      "id": 3779166135,
      "node_id": "I_kwDON-_mZc7hQX-3",
      "number": 1109,
      "title": "ccr code的时候有一个提示",
      "user": {
        "login": "owenzhao",
        "id": 2182896,
        "node_id": "MDQ6VXNlcjIxODI4OTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2182896?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/owenzhao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-04T11:53:38Z",
      "updated_at": "2026-01-04T13:01:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr code\n(node:4033) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.\n(Use `node --trace-deprecation ...` to show where the warning was created)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1109/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1108",
      "id": 3779096228,
      "node_id": "I_kwDON-_mZc7hQG6k",
      "number": 1108,
      "title": "Feature Request: Multiple API keys per provider",
      "user": {
        "login": "ShahFaisalIslam",
        "id": 55596038,
        "node_id": "MDQ6VXNlcjU1NTk2MDM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/55596038?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ShahFaisalIslam",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2026-01-04T10:31:19Z",
      "updated_at": "2026-01-07T10:10:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have around three API keys for use with Gemini. In order to swap between the keys, I have to go to the UI, manually edit the key, and then 'save & restart'.\n\nIt would be great if I can keep multiple API keys for the same provider, so that when one key gives rate-limit error, the router automatically retries with the next key, and so on till it hits the last key, after which it can cycle back to the first key.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1108/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1107",
      "id": 3779095429,
      "node_id": "I_kwDON-_mZc7hQGuF",
      "number": 1107,
      "title": "tool call issue .",
      "user": {
        "login": "YoByron",
        "id": 30400178,
        "node_id": "MDQ6VXNlcjMwNDAwMTc4",
        "avatar_url": "https://avatars.githubusercontent.com/u/30400178?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/YoByron",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-01-04T10:30:18Z",
      "updated_at": "2026-01-23T01:37:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i am using openrouter \"https://openrouter.ai/api/v1/chat/completions\"    model xiaomi/mimo-v2-flash:free   claude code \n, pwd; ls -la public/styles/\n\n :tree /f | head -50   , before command i guess that is causing problem... btw i have been using the claude code with other it was working fine this happens only with ccr\n :C\\Users\\byron\\Documents\\GitHub\\Donate\n\nwhy there is :\nRead [volunteer.css:0<|tool_call_argument_begin|>{](vscode-webview://0cms2s1hg68ppq49g4k83hfb25sap17dq8o9o5i39t0djo3j57o1/index.html?id=e5f67a83-4587-45f8-b94f-bfd6af7095ff&parentId=1&origin=a9cfd034-42fa-42fe-b3a1-37e0d0f7f278&swVersion=4&extensionId=Anthropic.claude-code&platform=electron&vscode-resource-base-authority=vscode-resource.vscode-cdn.net&parentOrigin=vscode-file%3A%2F%2Fvscode-app&session=77b2b943-3f75-4f2d-9231-31efb214bcd5#)\n\n\n\n● Let me use a different approach and read some key files to understand the codebase structure:\n\n● Read(:)\n  ⎿  Error reading file\n\n● Let me read the main layout file to understand the structure:\n\n● Read(:)\n  ⎿  Error reading file\n\n● Read(:)\n  ⎿  Error reading file\n  ⎿  Error reading file\n\n● Read(:)\n  ⎿  Error reading file\n\n● I'm experiencing technical issues with the tools. Let me use a different approach:\n\n● Read(:)\n  ⎿  Error reading file\n\n● Read(:)\n  ⎿  Error reading file\n\n● Let me try to read the index file that we know exists:\n ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1107/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1105",
      "id": 3775711918,
      "node_id": "I_kwDON-_mZc7hDMqu",
      "number": 1105,
      "title": "Can open discussion tab for this project?",
      "user": {
        "login": "zzz6519003",
        "id": 1625608,
        "node_id": "MDQ6VXNlcjE2MjU2MDg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1625608?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zzz6519003",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2026-01-02T06:35:42Z",
      "updated_at": "2026-01-04T05:46:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1105/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1104",
      "id": 3773018226,
      "node_id": "I_kwDON-_mZc7g47By",
      "number": 1104,
      "title": "plugins problem",
      "user": {
        "login": "lisserQAQ",
        "id": 170694402,
        "node_id": "U_kgDOCiyXAg",
        "avatar_url": "https://avatars.githubusercontent.com/u/170694402?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lisserQAQ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-31T15:29:46Z",
      "updated_at": "2026-01-04T05:47:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "class UserAgentRewriter {\n  constructor(options = {}) {\n    this.options = options;\n    console.log(\"UserAgentRewriter plugin initialized\");\n  }\n\n  get name() {\n    return \"userAgentHeader\";\n  }\n\n  async auth(request, provider, context) {\n    if (!request.headers) {\n      request.headers = {};\n    }\n\n    request.headers['user-agent'] = 'iFlow-Cli';\n\n    console.log(\"Modified User-Agent to:\", request.headers['user-agent']);\n    return request;\n  }\n\n  async transformRequestIn(request, provider, context) {\n    if (!request.headers) {\n      request.headers = {};\n    }\n    request.headers['user-agent'] = 'iFlow-Cli';\n    return request;\n  }\n}\n\nmodule.exports = UserAgentRewriter;\n\n\n\n我发现无法修改请求头中的useragent，想请教一下我的写法是错误的吗？暂时没有什么办法去解决\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1104/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1103",
      "id": 3772013498,
      "node_id": "I_kwDON-_mZc7g1Fu6",
      "number": 1103,
      "title": "近期，cc 升级以后，ccr 不能路由了？",
      "user": {
        "login": "dengcb",
        "id": 12539131,
        "node_id": "MDQ6VXNlcjEyNTM5MTMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/12539131?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dengcb",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-12-31T05:22:22Z",
      "updated_at": "2026-01-05T01:08:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我说我配置的底下状态栏怎么没了。\n\n前几天 cc 升级到 2.0.74 以后，好像 ccr 无论如何都插不进手？\n\n我不知道，所以昨晚兴奋的干了一晚上，早上一看，哎？走的全部是 GLM 流量？？？\n\n我 ccr 配置的是 Gemini-Cli，结果泡汤了，以为搂着小甜甜，结果早上天亮看是牛夫人！！！",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1103/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1102",
      "id": 3764882978,
      "node_id": "I_kwDON-_mZc7gZ44i",
      "number": 1102,
      "title": "增加火山引擎code plan API支持",
      "user": {
        "login": "likeaturtle",
        "id": 56377910,
        "node_id": "MDQ6VXNlcjU2Mzc3OTEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/56377910?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/likeaturtle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-27T16:07:18Z",
      "updated_at": "2026-01-30T05:58:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "火山引擎的code plan使用的base URL为`https://ark.cn-beijing.volces.com/api/coding`，写入ccr配置文件后使用/model切换相关模型提示not found，可能是由于API请求格式不对应造成的。\n\n火山方舟code plan接入Claude Code文档：[https://www.volcengine.com/docs/82379/1928261?lang=zh#%E4%BD%BF%E7%94%A8claude-code](https://www.volcengine.com/docs/82379/1928261?lang=zh#%E4%BD%BF%E7%94%A8claude-code)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1102/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1099",
      "id": 3761351742,
      "node_id": "I_kwDON-_mZc7gMaw-",
      "number": 1099,
      "title": "能适配下GLM-4.7吗",
      "user": {
        "login": "yaguo",
        "id": 9066977,
        "node_id": "MDQ6VXNlcjkwNjY5Nzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9066977?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yaguo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-25T03:48:42Z",
      "updated_at": "2026-01-16T21:01:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "和官方接口对比了下，官方默认是thinking模式，ccr无法进入thinking模式\n\n另外，调用工具的时候，会把tool call当做文本打印出来：\n\n<img width=\"1406\" height=\"490\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4968e6a2-dd6f-4ff9-af77-6fc28fff3b91\" />\n\n谢谢",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1099/reactions",
        "total_count": 9,
        "+1": 9,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1098",
      "id": 3761327807,
      "node_id": "I_kwDON-_mZc7gMU6_",
      "number": 1098,
      "title": "windows 10, command input laggy while open ccrcode terminals >=2",
      "user": {
        "login": "HustCoderHu",
        "id": 18300226,
        "node_id": "MDQ6VXNlcjE4MzAwMjI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/18300226?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/HustCoderHu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-25T03:18:33Z",
      "updated_at": "2025-12-25T03:18:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "system: windows 10\nterminal: wezterm\nno wsl\n\nif just only opening 1 ccr code, inputing in wezterm is not laggy much ( still a litte laggier than just `claude` ),\nbut after opening the 2nd, inputing in the 2nd wezterm is laggy much, quite hard to operate workflow",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1098/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1096",
      "id": 3758158586,
      "node_id": "I_kwDON-_mZc7gAPL6",
      "number": 1096,
      "title": "ccr ui fails on WSL with no browser",
      "user": {
        "login": "adiologydev",
        "id": 9266227,
        "node_id": "MDQ6VXNlcjkyNjYyMjc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9266227?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adiologydev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-23T18:16:19Z",
      "updated_at": "2026-01-04T13:07:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, when you run `ccr ui` on WSL + Ubuntu, it fails if you don't have a browser installed in the Linux distribution. It should simply allow us to use the external browser (on Windows) rather than exiting the process.\n\n<img width=\"978\" height=\"509\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/9cdf1855-f359-48ec-9281-cbe7616e0b9c\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1096/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1095",
      "id": 3756396435,
      "node_id": "I_kwDON-_mZc7f5g-T",
      "number": 1095,
      "title": "使用CCR时CC不显示上下文使用",
      "user": {
        "login": "zodiacg",
        "id": 910023,
        "node_id": "MDQ6VXNlcjkxMDAyMw==",
        "avatar_url": "https://avatars.githubusercontent.com/u/910023?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zodiacg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-23T07:25:11Z",
      "updated_at": "2025-12-30T06:21:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我目前使用CCR转接智谱Coding Plan来支持GLM4.6的思考模式（OpenAI端点， 为GLM4.6启用forcereasoning transformer），主模型和长文本模型都使用了GLM4.6\n\n但在claude code中context占用显示始终为0% （0 tokens），不会触发auto compact，也不知晓当前上下文占用情况。导致偶尔任务执行到后期突然爆了context，没能及时compact或者记录进度。\n\n我理解ccr因为会切换模型，会导致context的占用基本没有实际意义，但出于用户友好角度是否可以考虑设置一个象征性的数值限制/显示来帮助claude code/用户判断是否应该整理上下文。\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1095/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1094",
      "id": 3755897676,
      "node_id": "I_kwDON-_mZc7f3nNM",
      "number": 1094,
      "title": "Can't get started? Always says invalid API key?",
      "user": {
        "login": "sachin-fluid",
        "id": 173653756,
        "node_id": "U_kgDOClm-_A",
        "avatar_url": "https://avatars.githubusercontent.com/u/173653756?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sachin-fluid",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-23T03:29:00Z",
      "updated_at": "2025-12-23T08:13:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1139\" height=\"466\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/87716f18-c221-41b3-854a-c1a433e66660\" />\n\n```\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"0.0.0.0\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"ZAI\",\n      \"api_base_url\": \"https://api.z.ai/api/coding/paas/v4/chat/completions\",\n      \"api_key\": \"a5248e0da5d44bceb8a1ffa6aa660402.61yxBWijJR444ZPx\",\n      \"models\": [\n        \"glm-4.6\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"forcereasoning\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"ZAI,glm-4.6\",\n    \"background\": \"ZAI,glm-4.6\",\n    \"think\": \"ZAI,glm-4.6\",\n    \"longContext\": \"ZAI,glm-4.6\",\n    \"longContextThreshold\": 200000,\n    \"webSearch\": \"ZAI,glm-4.6\",\n    \"image\": \"ZAI,glm-4.6\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1094/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1093",
      "id": 3753648074,
      "node_id": "I_kwDON-_mZc7fvB_K",
      "number": 1093,
      "title": "think value high is not supported for this model",
      "user": {
        "login": "BrightMoon-000",
        "id": 66005211,
        "node_id": "MDQ6VXNlcjY2MDA1MjEx",
        "avatar_url": "https://avatars.githubusercontent.com/u/66005211?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BrightMoon-000",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-22T12:35:21Z",
      "updated_at": "2025-12-24T11:39:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "╭─── Claude Code v2.0.75 ───────────────────────────────────────────────────────────────────────╮\n│                                        │ Tips for getting started                             │\n│              Welcome back!             │ Ask Claude to create a new app or clone a repository │\n│                                        │ ──────────────────────────────────────────────────── │\n│               * ▐▛███▜▌ *              │ Recent activity                                      │\n│              * ▝▜█████▛▘ *             │ No recent activity                                   │\n│               *  ▘▘ ▝▝  *              │                                                      │\n│                                        │                                                      │\n│     Sonnet 4.5 · API Usage Billing     │                                                      │\n│   D:\\dbapp\\projects\\test_claude_code   │                                                      │\n╰───────────────────────────────────────────────────────────────────────────────────────────────╯\n\n  /model to try Opus 4.5\n\n> hello\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(ollama,qwen3:8b: 400): {\\\"error\\\":{\\\"message\\\":\\\"think value\n    \\\\\\\"high\\\\\\\" is not supported for this model\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\nError: Error from\n    provider(ollama,qwen3:8b: 400): {\\\"error\\\":{\\\"message\\\":\\\"think value \\\\\\\"high\\\\\\\" is not supported for this\n    model\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\n\\n    at nt\n    (D:\\\\nvm\\\\v20.12.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79940:11)\\n    at p0\n    (D:\\\\nvm\\\\v20.12.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80000:114)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async f0 (D:\\\\nvm\\\\v20.12.0\\\\node_mod\n    ules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n> \n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n  ? for shortcuts\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1093/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1092",
      "id": 3753595408,
      "node_id": "I_kwDON-_mZc7fu1IQ",
      "number": 1092,
      "title": "I need help with gemini-cli",
      "user": {
        "login": "aminahbelinda-jpg",
        "id": 250784809,
        "node_id": "U_kgDODvKsKQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/250784809?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aminahbelinda-jpg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-12-22T12:21:33Z",
      "updated_at": "2025-12-23T09:01:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I cant find the gcp project it creates",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1092/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1091",
      "id": 3752895097,
      "node_id": "I_kwDON-_mZc7fsKJ5",
      "number": 1091,
      "title": "ccr code lanuch cause errors",
      "user": {
        "login": "syw2014",
        "id": 6802806,
        "node_id": "MDQ6VXNlcjY4MDI4MDY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6802806?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/syw2014",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-22T08:58:47Z",
      "updated_at": "2025-12-22T13:54:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " ? for shortcuts\nThis error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:\nError: UNKNOWN: unknown error, watch '/var/folders/3h/0ztbl8bs1l3cnzw0n3f8s6_c0000gn/T/ssh-askpass-6c401c24-795f-40ea-b1d9-3e69fb5fbe09.sock'\n    at FSWatcher.<computed> (node:internal/fs/watchers:247:19)\n    at watch (node:fs:2491:36)\n    at UFB (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6516)\n    at Y23 (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:11679)\n    at mi1._watchWithNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6997)\n    at mi1._handleFile (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:7723)\n    at mi1._addToNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:10731)\nThis error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:\nError: UNKNOWN: unknown error, watch '/var/folders/3h/0ztbl8bs1l3cnzw0n3f8s6_c0000gn/T/ssh-askpass-a2789481-cd2d-4d41-b55d-f99f98219bde.sock'\n    at FSWatcher.<computed> (node:internal/fs/watchers:247:19)\n    at watch (node:fs:2491:36)\n    at UFB (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6516)\n    at Y23 (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:11679)\n    at mi1._watchWithNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6997)\n    at mi1._handleFile (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:7723)\n    at mi1._addToNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:10731)\nThis error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:\nError: UNKNOWN: unknown error, watch '/var/folders/3h/0ztbl8bs1l3cnzw0n3f8s6_c0000gn/T/ssh-askpass-e413d505-5055-48c8-ba9d-488af1f160ec.sock'\n    at FSWatcher.<computed> (node:internal/fs/watchers:247:19)\n    at watch (node:fs:2491:36)\n    at UFB (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6516)\n    at Y23 (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:11679)\n    at mi1._watchWithNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6997)\n    at mi1._handleFile (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:7723)\n    at mi1._addToNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:10731)\nThis error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:\nError: UNKNOWN: unknown error, watch '/var/folders/3h/0ztbl8bs1l3cnzw0n3f8s6_c0000gn/T/vscode-git-4dccfd319b.sock'\n    at FSWatcher.<computed> (node:internal/fs/watchers:247:19)\n    at watch (node:fs:2491:36)\n    at UFB (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6516)\n    at Y23 (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:11679)\n    at mi1._watchWithNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6997)\n    at mi1._handleFile (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:7723)\n    at mi1._addToNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:10731)\nThis error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:\nError: UNKNOWN: unknown error, watch '/var/folders/3h/0ztbl8bs1l3cnzw0n3f8s6_c0000gn/T/vscode-git-5721729954.sock'\n    at FSWatcher.<computed> (node:internal/fs/watchers:247:19)\n    at watch (node:fs:2491:36)\n    at UFB (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6516)\n    at Y23 (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:11679)\n    at mi1._watchWithNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:6997)\n    at mi1._handleFile (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:7723)\n    at mi1._addToNodeFs (file:///Users/jerryshi/.nvm/versions/node/v20.19.2/lib/node_modules/@anthropic-ai/claude-code/cli.js:448:10731)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1091/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1090",
      "id": 3751494306,
      "node_id": "I_kwDON-_mZc7fm0Ki",
      "number": 1090,
      "title": "Problems to run on ollama",
      "user": {
        "login": "jpsaunier",
        "id": 158021348,
        "node_id": "U_kgDOCWs25A",
        "avatar_url": "https://avatars.githubusercontent.com/u/158021348?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jpsaunier",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-21T19:16:42Z",
      "updated_at": "2025-12-25T10:40:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi ! I've a problem to configure ccr with my ollama..\nWhen I start \n```\nccr start\n✅ Service is already running in the background.\n```\nand \nccr code, I have this :\n```\nccr code \n╭─── Claude Code v2.0.75 ────────────────────────────────────────────────────────────────────────────────╮\n│                                    │ Tips for getting started                                          │\n│            Welcome back!           │ Run /init to create a CLAUDE.md file with instructions for Claude │\n│                                    │ ───────────────────────────────────────────────────────────────── │\n│             * ▐▛███▜▌ *            │ Recent activity                                                   │\n│            * ▝▜█████▛▘ *           │ No recent activity                                                │\n│             *  ▘▘ ▝▝  *            │                                                                   │\n│                                    │                                                                   │\n│   Sonnet 4.5 · API Usage Billing   │                                                                   │\n│                D:\\                 │                                                                   │\n╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n\n  /model to try Opus 4.5\n\n> /model\n  ⎿  Kept model as Default (recommended)\n\n> /model\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n Select model\n Switch between Claude models. Applies to this session and future Claude Code sessions. For other/previous model names,\n  specify with --model.\n\n > 1. Default (recommended) √  Use the default model (currently Sonnet 4.5) · $3/$15 per Mtok\n   2. Opus                     Opus 4.5 · Most capable for complex work · $5/$25 per Mtok\n   3. Haiku                    Haiku 4.5 · Fastest for quick answers · $1/$5 per Mtok\n```\n\n\nNowhere I found my config, only Sonnet opus or Haiku !\nBut my config is  (with ccr ui) :\n```\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\n        \"qwen2.5-coder:1.5b-base\",\n        \"deepcoder:latest\",\n        \"codestral:latest\"\n      ]\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"ollama,qwen2.5-coder:1.5b-base\",\n    \"background\": \"ollama,qwen2.5-coder:1.5b-base\",\n    \"think\": \"ollama,deepcoder:latest\",\n    \"longContext\": \"ollama,codestral:latest\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"ollama,codestral:latest\",\n    \"image\": \"\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```\n\nI missed something ?\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1090/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1087",
      "id": 3750715833,
      "node_id": "I_kwDON-_mZc7fj2G5",
      "number": 1087,
      "title": "aws bedrock mantle service",
      "user": {
        "login": "mxp231",
        "id": 164154863,
        "node_id": "U_kgDOCcjN7w",
        "avatar_url": "https://avatars.githubusercontent.com/u/164154863?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mxp231",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-21T04:20:25Z",
      "updated_at": "2025-12-21T04:20:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "HI,\n\ni am trying the bedrock mantle service which gives openai chat completions endpoint for models. e.g. the url is `https://bedrock-mantle.us-west-2.api.aws/v1`\n\nBut when i use with CCR, i get errors\n\nhere is my config\n\n```\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://bedrock-mantle.us-west-2.api.aws/v1/chat/completions\",\n      \"api_key\": \"{bedrock api key here}\",\n      \"models\": [],\n      \"transformer\": {\n        \"use\": [\n          \"OpenAI\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"openai,minimax.minimax-m2\",\n    \"background\": \"openai,minimax.minimax-m2\",\n    \"think\": \"openai,minimax.minimax-m2\",\n    \"longContext\": \"openai,minimax.minimax-m2\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"\",\n    \"image\": \"\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```\n\nhere is the error \n\n```\n API Error: 400 {\"error\":{\"message\":\"Error from provider(openai,minimax.minimax-m2: 400): {\\\"code\\\":\\\"validation_error\\\",\\\"message\\\":\\\"Failed to deserialize the JSON body into the target type: ?[0]: Invalid 'messages': Invalid \n    'content': value did not match any expected variant at line 1 column 13254\\\",\\\"param\\\":null,\\\"type\\\":\\\"invalid_request_error\\\"}Error: Error from provider(openai,minimax.minimax-m2: 400): \n    {\\\"code\\\":\\\"validation_error\\\",\\\"message\\\":\\\"Failed to deserialize the JSON body into the target type: ?[0]: Invalid 'messages': Invalid 'content': value did not match any expected variant at line 1 column \n    13254\\\",\\\"param\\\":null,\\\"type\\\":\\\"invalid_request_error\\\"}\\n    at nt (/home/maiz/.npm-global/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/home/maiz/.npm-global/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:114)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async f0 \n    (/home/maiz/.npm-global/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n```\n\nnote that openai requests (using openai library or http requests work fine. please help! this is urgent",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1087/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1086",
      "id": 3750672236,
      "node_id": "I_kwDON-_mZc7fjrds",
      "number": 1086,
      "title": "[IGNORE] Gemini did not work with settings giving in README.md. This did....",
      "user": {
        "login": "SamuelMiller",
        "id": 10334059,
        "node_id": "MDQ6VXNlcjEwMzM0MDU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/10334059?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SamuelMiller",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-21T03:00:31Z",
      "updated_at": "2025-12-21T18:38:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In order to get Gemini to work, this is what I had to specify in the config.json file (noticed that I dropped the suffix \"/model\" on the api url):\n\n{\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta\",\n      \"api_key\": \"REDACTED\",\n      \"models\": [\n        \"gemini-3-flash-preview\",\n        \"gemini-3-pro-preview\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1086/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1084",
      "id": 3750551695,
      "node_id": "I_kwDON-_mZc7fjOCP",
      "number": 1084,
      "title": "statusline 无法显示",
      "user": {
        "login": "luochen1990",
        "id": 2309868,
        "node_id": "MDQ6VXNlcjIzMDk4Njg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luochen1990",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-21T00:22:40Z",
      "updated_at": "2025-12-22T03:10:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claude-code-router version: 1.0.73\n\n配置是用 ccr ui 生成的 (以下是相关片段）:\n\n```\n  \"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": [\n        {\n          \"type\": \"model\",\n          \"icon\": \"🤖\",\n          \"text\": \"{{model}}\",\n          \"color\": \"bright_yellow\"\n        },\n        {\n          \"type\": \"usage\",\n          \"icon\": \"📊\",\n          \"text\": \"{{inputTokens}} → {{outputTokens}}\",\n          \"color\": \"bright_magenta\"\n        }\n      ]\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n```\n\n完整配置用线上 JSON validator 测试过，JSON语法是没问题的。\n\n---\n\n发现相关代码在这里:  https://github.com/musistudio/claude-code-router/commit/a7e20325dbb2a8827db0c9ee12924bdecfa19fd9#r173269387",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1084/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1083",
      "id": 3750176755,
      "node_id": "I_kwDON-_mZc7fhyfz",
      "number": 1083,
      "title": "win10系统下新版本1.0.73，使用/model命令出现API error: 400错误",
      "user": {
        "login": "chinaperrin",
        "id": 12561452,
        "node_id": "MDQ6VXNlcjEyNTYxNDUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/12561452?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chinaperrin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-20T15:57:58Z",
      "updated_at": "2025-12-20T15:57:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置：win10系统，claude-code@2.0.74， claude-code-router@1.0.73\n\n错误现象：\nwin10系统（没用wsl），ccr升级到最新版1.0.73，在执行/model切换模型时，出现如下的错误信息：\n API error: 400 {\"error\":{\"message\":\"unknown provider for model deepseek,deepseek-chat\",\"type\":\"invalid_request_error\"}}\n\n试用了/model命令切换配置文件中的所有模型（原来ccr旧版的正常使用模型），都会出现上述类似的错误信息。降级到1.0.72版本，/model命令使用正常。\n\n同样的网络环境，linux系统（ubuntu系统）ccr最新版本1.0.73下，/model命令使用正常。\n\n这是什么原因？\n\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1083/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1082",
      "id": 3749640585,
      "node_id": "I_kwDON-_mZc7ffvmJ",
      "number": 1082,
      "title": "Plan Mode 执行卡住无响应（使用 OpenAI 兼容 API）",
      "user": {
        "login": "chchuj",
        "id": 15321655,
        "node_id": "MDQ6VXNlcjE1MzIxNjU1",
        "avatar_url": "https://avatars.githubusercontent.com/u/15321655?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chchuj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-20T06:18:46Z",
      "updated_at": "2026-01-29T02:50:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "问题描述\n使用 OpenAI 兼容格式的 API（Antigravity Manager）配置 CCR 后：\n\n✅ 普通对话正常工作\n✅ Plan mode 制订 Plan 正常工作\n❌ Plan mode 执行计划时无限等待，没有实际执行\n复现步骤\n配置 CCR 连接 Antigravity Manager（OpenAI 兼容端点）\n启动 ccr code\n使用 /plan 或 shift+tab 进入 Plan mode\n输入任务，模型成功制订执行计划\n输入「执行计划」确认执行\n界面显示 \"Philosophising…\" 一直转圈，无任何实际操作\n现象\n> 执行计划\n✢ Philosophising… (esc to interrupt · 1m 21s · ↓ 4.0k tokens)\n等待超过 1 分钟仍无响应，没有任何工具调用或文件操作。\n\n配置文件\njson\n{\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"Providers\": [\n    {\n      \"name\": \"antigravity\",\n      \"api_base_url\": \"http://127.0.0.1:8045/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"gemini-3-flash\",\n        \"gemini-3-pro-high\",\n        \"gemini-2.5-flash\",\n        \"claude-sonnet-4-5\",\n        \"claude-sonnet-4-5-thinking\",\n        \"claude-opus-4-5-thinking\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"antigravity,claude-sonnet-4-5\",\n    \"think\": \"antigravity,claude-opus-4-5-thinking\",\n    \"background\": \"antigravity,gemini-3-flash\",\n    \"longContext\": \"antigravity,gemini-3-pro-high\",\n    \"longContextThreshold\": 60000\n  }\n}\n环境信息\n操作系统: Windows 11\nCCR 版本: 最新版\nAPI 后端: [Antigravity Manager](https://github.com/lbjlaq/Antigravity-Manager)\nAPI 端点: http://127.0.0.1:8045/v1/chat/completions（OpenAI 兼容格式）\n补充说明\n普通对话模式下工具调用（Read、Write、Glob 等）正常工作\n仅 Plan mode 执行阶段 卡住\n直接测试 API 所有模型均正常响应\n怀疑 Plan mode 执行时的请求格式与普通模式不同，可能存在兼容性问题\n期望行为\n确认执行计划后，模型应该开始执行计划中的步骤（工具调用、文件操作等），而不是无限等待。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1082/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1081",
      "id": 3747341451,
      "node_id": "I_kwDON-_mZc7fW-SL",
      "number": 1081,
      "title": "OpenRouter Gemini 3 推理令牌问题",
      "user": {
        "login": "hjnnjh",
        "id": 37699150,
        "node_id": "MDQ6VXNlcjM3Njk5MTUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/37699150?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hjnnjh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-12-19T12:19:03Z",
      "updated_at": "2026-01-05T09:23:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## 问题描述\n\n当使用 Claude Code 通过 OpenRouter 访问 Gemini 3 模型（例如 `google/gemini-3-flash-preview`）时，函数调用（tool_use）会失败并返回 HTTP 400 错误：\n\n```\nAPI Error: 400 {\"error\":{\"message\":\"Provider returned error\",\"code\":400,\"metadata\":{\"raw\":\"Gemini models require OpenRouter reasoning details to be preserved in each request. Please refer to our docs: https://openrouter.ai/docs/guides/best-practices/reasoning-tokens#preserving-reasoning-blocks. ... Function call is missing a thought_signature in functionCall parts.\n```\n\n## 复现步骤\n\n1. 配置 Claude Code 使用 OpenRouter 和 Gemini 3 模型\n2. 启用推理/思考模式\n3. 发送一个会触发工具使用的请求（例如：\"搜索今天的 AI 新闻\"）\n4. 第一次带工具调用的响应成功\n5. 当 Claude Code 将工具结果发送回去时，OpenRouter 返回 HTTP 400 错误\n\n## 技术分析\n\n### 根本原因\n\nOpenRouter 要求在 Gemini 3 模型的后续请求中保留并发送回 `reasoning_details`（包括 `reasoning.encrypted` 条目）。这是必需的，因为 Gemini 使用加密的推理令牌来维护多轮对话中工具调用的思维链完整性。\n\n**关键问题**：OpenRouter 在**流式**响应中不包含 `reasoning_details`。\n\n日志分析证据：\n- 非流式响应（`\"object\":\"chat.completion\"`）包含完整的 `reasoning_details`：\n  ```json\n  \"reasoning_details\":[\n    {\"type\":\"reasoning.text\",\"text\":\"**Seeking Today's AI News**...\"},\n    {\"type\":\"reasoning.encrypted\",\"data\":\"EoEDCv4CAXLI2nzwzXF0S3sG...\",\"id\":\"tool_WebSearch_v31GM7CftUoMaFZEmVfP\"}\n  ]\n  ```\n- 流式响应（`\"object\":\"chat.completion.chunk\"`）的 `reasoning_details` 始终为空数组 `[]`\n\n### 数据流分析\n\n1. **Anthropic 格式**（Claude Code 原生）：使用 `thinking` 块，结构如下：\n   ```json\n   {\"type\": \"thinking\", \"thinking\": \"...\", \"signature\": \"...\"}\n   ```\n\n2. **OpenRouter/OpenAI 格式**：使用 `reasoning_details` 数组：\n   ```json\n   \"reasoning_details\": [\n     {\"type\": \"reasoning.text\", \"text\": \"...\", \"format\": \"google-gemini-v1\"},\n     {\"type\": \"reasoning.encrypted\", \"data\": \"Base64...\", \"id\": \"tool_xxx\"}\n   ]\n   ```\n\n3. **不匹配问题**：\n   - Claude Code 使用流式模式\n   - OpenRouter 在流式模式下不发送 `reasoning.encrypted`\n   - 没有加密推理数据，后续工具调用请求会验证失败\n\n## 已尝试的解决方案\n\n### 尝试 1：在 signature 字段中编码 reasoning_details\n- **方法**：将完整的 `reasoning_details` 数组以 JSON 格式存储在 Anthropic 的 `signature` 字段中\n- **结果**：失败 - 流式响应不包含可编码的 `reasoning_details`\n\n### 尝试 2：对 Gemini + 工具强制使用非流式模式\n- **方法**：检测 Gemini 3 + 工具请求，强制 `stream: false`，然后将响应转换回 SSE\n- **结果**：单次请求部分有效，但多轮对话中底层问题仍然存在\n\n### 尝试 3：从 thinking 块中捕获\n- **方法**：从流式 `thinking` 块中提取推理内容并重建\n- **结果**：失败 - 只有文本内容可用，没有加密部分\n\n## 建议的解决方案\n\n### 方案 1：OpenRouter API 修复（推荐）\nOpenRouter 应该在 Gemini 模型的流式响应中包含 `reasoning_details`。这与其非流式行为一致，可以从源头解决问题。\n\n**参考**：\n- OpenRouter AI SDK 有类似修复：PR #240、#242、#258、#268、#288\n- 这些 PR 在 SDK 层面实现了 `reasoning_details` 累积\n\n### 方案 2：OpenRouter 请求参数\nOpenRouter 可以添加请求参数，如 `include_reasoning_details_in_stream: true` 来启用此功能。\n\n### 方案 3：Anthropic/Claude Code 适配\nClaude Code 在路由到 OpenRouter 的 Gemini 模型时可以使用非流式模式，但这会降低用户体验。\n\n### 方案 4：代理层状态管理\n代理（如 llms 或 claude-code-router）可以：\n1. 对第一个请求强制使用非流式模式\n2. 从响应中缓存 `reasoning_details`\n3. 将缓存的 `reasoning_details` 注入到后续请求中\n\n这种方法复杂且可能存在可靠性问题。\n\n## 相关链接\n\n- #1057 \n- OpenRouter 推理令牌文档：https://openrouter.ai/docs/guides/best-practices/reasoning-tokens\n- OpenRouter AI SDK Provider：https://github.com/openrouter-ai/ai-sdk-provider\n- Vercel AI SDK 讨论：https://github.com/vercel/ai/discussions\n\n## 环境信息\n\n- 模型：通过 OpenRouter 的 `google/gemini-3-flash-preview`\n- 客户端：Claude Code（Anthropic 格式）\n- 代理：claude-code-router + @musistudio/llms\n- 日期：2025-12-19\n\n## 附加说明\n\n此问题是 OpenRouter API 的限制，而非客户端或代理的 bug。在 OpenRouter 修复此问题之前，使用 Gemini 3 模型进行多轮工具调用对话时会遇到此错误。\n\n临时解决方法：\n- 使用其他支持流式推理令牌的模型\n- 或者在 OpenRouter 修复此问题之前避免在 Gemini 3 模型中使用工具调用功能\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1081/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1079",
      "id": 3746545345,
      "node_id": "I_kwDON-_mZc7fT77B",
      "number": 1079,
      "title": "请问自定义transformer里怎么调试？",
      "user": {
        "login": "3Spiders",
        "id": 17819303,
        "node_id": "MDQ6VXNlcjE3ODE5MzAz",
        "avatar_url": "https://avatars.githubusercontent.com/u/17819303?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/3Spiders",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-19T08:11:34Z",
      "updated_at": "2025-12-22T10:14:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```ts\nasync transformResponseOut(response, provider, logger) {\n    if (logger) {\n      logger.debug(\"Transforming response out...\");\n    }\n    if (this.logger) {\n      this.logger.debug(\"Transforming response out...\");\n    }\n}\n```\n\n试了这两种方式都不生效",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1079/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1078",
      "id": 3745727644,
      "node_id": "I_kwDON-_mZc7fQ0Sc",
      "number": 1078,
      "title": "CCR UI没有导入模板功能",
      "user": {
        "login": "listky",
        "id": 22831059,
        "node_id": "MDQ6VXNlcjIyODMxMDU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/22831059?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/listky",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-12-19T02:19:38Z",
      "updated_at": "2025-12-21T16:29:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "CCR UI没有导入模板功能，是windows系统无法支持吗",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1078/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1077",
      "id": 3745116174,
      "node_id": "I_kwDON-_mZc7fOfAO",
      "number": 1077,
      "title": "Support running inside Toad",
      "user": {
        "login": "saidelike",
        "id": 387346,
        "node_id": "MDQ6VXNlcjM4NzM0Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/387346?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/saidelike",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-18T22:47:18Z",
      "updated_at": "2025-12-18T22:47:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "See https://github.com/batrachianai/toad/discussions/99\n\nI don't think anything is required from ccr but creating this in case I am missing anything? ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1077/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1076",
      "id": 3743408950,
      "node_id": "I_kwDON-_mZc7fH-M2",
      "number": 1076,
      "title": "Introducing Claude Code Router Switch - CCR配置快速管理工具",
      "user": {
        "login": "hjnnjh",
        "id": 37699150,
        "node_id": "MDQ6VXNlcjM3Njk5MTUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/37699150?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hjnnjh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-18T14:30:43Z",
      "updated_at": "2025-12-18T14:30:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "# Claude Code Router Switch - 官方配置管理工具\n\n## 🎉 项目介绍\n\n我们很高兴为 Claude Code Router (CCR) 社区发布一个全新的配置管理工具：**Claude Code Router Switch**。\n\n这是一个轻量级但功能强大的工具，旨在帮助开发者轻松管理 CCR 的路由配置，并自动同步到 Claude Code 设置。\n\n## ✨ 核心特性\n\n- **📋 查看路由配置** - 以格式化表格显示当前所有路由配置，快速了解你的设置\n- **👀 查看模型列表** - 列出所有可用的供应商和模型\n- **➕ 添加新模型** - 通过交互式菜单轻松添加模型到供应商\n- **🔄 灵活更新路由**\n  - 全局更新：一次改变所有路由的模型\n  - 单个更新：为特定路由（如 `default`、`think`、`webSearch`）更新模型\n- **💾 预设管理** - 保存和恢复完整的路由配置快照，快速切换不同配置\n- **⚡ 自动同步** - 自动重启 CCR 服务并更新 Claude Code 设置\n- **🚀 全局命令** - 安装后从任何地方使用 `ccrswitch` 命令\n\n## 🛠️ 技术栈\n\n- **Bash** - 交互式菜单和脚本\n- **Python 3** - JSON 操作和 CLI 命令处理\n- **[uv](https://github.com/astral-sh/uv)** - 快速 Python 包管理\n\n## 📦 快速开始\n\n### 安装\n\n```bash\ngit clone https://github.com/hjnnjh/claude-code-router-switch.git\ncd claude-code-router-switch\nchmod +x install.sh\n./install.sh\n```\n\n### 使用\n\n```bash\nccrswitch\n```\n\n然后通过交互式菜单选择操作：\n- 查看当前路由配置\n- 添加新模型\n- 更新单个或全部路由\n- 管理预设配置\n- 自动同步设置\n\n## 📋 主要命令示例\n\n```bash\n# 查看当前路由配置\nccrswitch\n# 然后选择选项 1\n\n# 或者直接调用 Python 助手\nuv run python ccr_helper.py show_router\nuv run python ccr_helper.py list_providers\nuv run python ccr_helper.py update_router_all \"provider_name\" \"model_name\"\n```\n\n## 🌍 国际化支持\n\n我们提供了完整的双语文档：\n- **English**: [README.md](https://github.com/hjnnjh/claude-code-router-switch)\n- **中文**: [README.zh.md](https://github.com/hjnnjh/claude-code-router-switch/blob/master/README.zh.md)\n\n## 📄 开源许可\n\n本项目采用 **MIT License**，欢迎自由使用、修改和分享。\n\n## 🤝 社区贡献\n\n我们欢迎任何形式的贡献：\n- 📝 报告 Bug 或提出功能建议\n- 🔧 提交 Pull Request\n- 📚 改进文档\n\n## 🔗 项目链接\n\n- **GitHub 仓库**: https://github.com/hjnnjh/claude-code-router-switch\n- **Issue 区**: https://github.com/hjnnjh/claude-code-router-switch/issues\n- **Discussions**: https://github.com/hjnnjh/claude-code-router-switch/discussions\n\n## 💡 为什么选择我们？\n\n1. **轻量级** - 无重依赖，纯 Bash + Python 实现\n2. **易用** - 交互式菜单，无需记住复杂命令\n3. **可靠** - 完整的类型提示和错误处理\n4. **灵活** - 支持预设管理，快速切换配置\n5. **跨平台** - 同时支持 macOS 和 Linux\n6. **开源** - MIT 许可，代码完全透明\n\n## 📞 反馈与支持\n\n如果你有任何问题或建议，欢迎：\n- 在 GitHub Issues 中提交问题\n- 加入我们的讨论区\n- 直接联系项目维护者\n\n---\n\n**开始使用 Claude Code Router Switch，让你的路由配置管理变得简单高效！** 🚀\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1076/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 1,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1075",
      "id": 3742233439,
      "node_id": "I_kwDON-_mZc7fDfNf",
      "number": 1075,
      "title": "Utilizing Doubao-Seed-1.8 API",
      "user": {
        "login": "wangminle",
        "id": 45917348,
        "node_id": "MDQ6VXNlcjQ1OTE3MzQ4",
        "avatar_url": "https://avatars.githubusercontent.com/u/45917348?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wangminle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-18T09:27:25Z",
      "updated_at": "2026-01-23T07:50:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如图配置，通过CCR可以在Claude Code中成功使用火山引擎新上线的Seed-1.8的API。\n\n<img width=\"671\" height=\"689\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/094ea95e-5757-46bf-9f3d-07a32a28c96b\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1075/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 1,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1074",
      "id": 3741793884,
      "node_id": "I_kwDON-_mZc7fBz5c",
      "number": 1074,
      "title": "使用openai-responses偶尔出现这个错误",
      "user": {
        "login": "ianeolhy",
        "id": 239568489,
        "node_id": "U_kgDODkeGaQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/239568489?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ianeolhy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-18T07:17:58Z",
      "updated_at": "2025-12-18T07:17:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(openai,gpt-5.2: 400): {\\\"detail\\\":\\\"Stream must be set to true\\\"}Error:     \n    Error from provider(openai,gpt-5.2: 400): {\\\"detail\\\":\\\"Stream must be set to true\\\"}\\n    at nt\n    (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\nvm\\\\v24.11.1\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79940:11)\\n    at p0\n     (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\nvm\\\\v24.11.1\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80000:11)\\n    at  \n    process.processTicksAndRejections (node:internal/process/task_queues:103:5)\\n    at async f0\n    (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\nvm\\\\v24.11.1\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:96)\",\"type\":\"a\n    pi_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1074/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1073",
      "id": 3741252464,
      "node_id": "I_kwDON-_mZc7e_vtw",
      "number": 1073,
      "title": "iflow 无法使用",
      "user": {
        "login": "liulongblog",
        "id": 41796627,
        "node_id": "MDQ6VXNlcjQxNzk2NjI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/41796627?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liulongblog",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-18T03:12:07Z",
      "updated_at": "2026-02-14T06:59:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " 500 {\"error\":{\"message\":\"invalid urlInvalidArgumentError: invalid url\\n    at Object.parseOrigin (D:\\\\Program\n     Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:36530:15)\\n    at new Pool\n     (D:\\\\Program Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:43921:27)\\n   \n     at defaultFactory (D:\\\\Program\n     Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:44257:14)\\n    at new\n     ProxyAgent (D:\\\\Program\n     Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:44353:25)\\n    at Gf\n     (D:\\\\Program Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79959:42)\\n   \n     at p0 (D:\\\\Program\n     Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79997:17)\\n    at f0\n     (D:\\\\Program Files\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:102)\",\"ty\n     pe\":\"api_error\",\"code\":\"UND_ERR_INVALID_ARG\"}}\n\n\n     Retrying in 1 second… (attempt 5/10) · API_TIMEOUT_MS=600000ms, try increasing it\n\n✽ Meandering… (esc to interrupt)\n\n<img width=\"1912\" height=\"922\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/edfbd2e3-b8e9-4025-adcd-bf5000c3bc45\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1073/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1071",
      "id": 3735994737,
      "node_id": "I_kwDON-_mZc7ersFx",
      "number": 1071,
      "title": "config for  Z.AI - GLM V4.6",
      "user": {
        "login": "seanysull",
        "id": 17618461,
        "node_id": "MDQ6VXNlcjE3NjE4NDYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/17618461?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/seanysull",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-12-16T19:07:39Z",
      "updated_at": "2026-01-21T09:26:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Given Z.AI are sposnsoring the project could we get some guidance on how to configure it? ive tried various things but i keep getting the following error:\n\n429 {\"error\":{\"message\":\"Error from provider(zai,glm-4.6: 429): {\\\"error\\\":{\\\"code\\\":\\\"1113\\\",\\\"message\\\":\\\"Insufficient \n     balance or no resource package. Please recharge.\\\"}}Error: Error from provider(zai,glm-4.6: 429): \n     {\\\"error\\\":{\\\"code\\\":\\\"1113\\\",\\\"message\\\":\\\"Insufficient balance or no resource package. Please recharge.\\\"}}\\n    at nt (/h\n     ome/sean/.nvm/versions/node/v22.17.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n  \n       at p0 (/home/sean/.nvm/versions/node/v22.17.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80\n     000:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async f0 \n     (/home/sean/.nvm/versions/node/v22.17.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\"\n     ,\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1071/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1070",
      "id": 3734764638,
      "node_id": "I_kwDON-_mZc7em_xe",
      "number": 1070,
      "title": "openrouter mistralai/devstral-2512:free",
      "user": {
        "login": "tjengbudi",
        "id": 3039807,
        "node_id": "MDQ6VXNlcjMwMzk4MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3039807?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tjengbudi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-12-16T13:19:33Z",
      "updated_at": "2025-12-28T13:01:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "anyone have set this mistralai/devstral-2512:free with ccr?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1070/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 1,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1069",
      "id": 3734384727,
      "node_id": "I_kwDON-_mZc7eljBX",
      "number": 1069,
      "title": "401 Invalid API key",
      "user": {
        "login": "TomCruise-TXY",
        "id": 210811262,
        "node_id": "U_kgDODJC5fg",
        "avatar_url": "https://avatars.githubusercontent.com/u/210811262?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TomCruise-TXY",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-16T11:27:25Z",
      "updated_at": "2025-12-16T11:27:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"675\" height=\"44\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/562cdfb3-ea0c-46b8-b0b1-ca73f91c273b\" />\n\nI am certain my API key is valid, but it is simply not working. Below is my JSON file configuration. Are there any issues with it?\n\n{\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"...\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-flash\",\n    \"think\": \"gemini,gemini-2.5-pro\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1069/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1068",
      "id": 3733461360,
      "node_id": "I_kwDON-_mZc7eiBlw",
      "number": 1068,
      "title": "在中转站中使用Codex/Openai等模型报错",
      "user": {
        "login": "seho-dev",
        "id": 35763284,
        "node_id": "MDQ6VXNlcjM1NzYzMjg0",
        "avatar_url": "https://avatars.githubusercontent.com/u/35763284?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/seho-dev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-16T06:55:27Z",
      "updated_at": "2025-12-29T06:58:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n API Error: 400 {\"error\":{\"message\":\"Error from provider(foxcode,gpt-5-codex: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: \n    'input[0].content[0].cache_control'.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"input[0].content[0].cache_control\\\",\\n    \\\"code\\\": \n    \\\"unknown_parameter\\\"\\n  }\\n}\\nError: Error from provider(foxcode,gpt-5-codex: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: \n    'input[0].content[0].cache_control'.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"input[0].content[0].cache_control\\\",\\n    \\\"code\\\": \n    \\\"unknown_parameter\\\"\\n  }\\n}\\n\\n    at nt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at \n    async f0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n使用的是foxcode；\n\n<img width=\"779\" height=\"1144\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4cdb5d53-9e1e-4895-a63c-fa6df1354338\" />\n\n如果用Openai的转换器也是一样的错误；所以换成了这个仓库的转换器也不行，这个错误也不清楚是啥问题\n\nhttps://github.com/xlbljz/ccr-plugin-openai-res",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1068/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1065",
      "id": 3726782135,
      "node_id": "I_kwDON-_mZc7eIi63",
      "number": 1065,
      "title": "内置的转换器参数有哪些，或者它的 js 实现在代码哪个位置",
      "user": {
        "login": "luffichen",
        "id": 239928368,
        "node_id": "U_kgDODk0EMA",
        "avatar_url": "https://avatars.githubusercontent.com/u/239928368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luffichen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-14T05:18:19Z",
      "updated_at": "2025-12-15T15:28:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "你好，我想修改内置转换器的转换器参数，但不知道比如 gemnini 转换器支持什么参数，没有找到文档和相关代码，它的 js 实现在代码哪个位置",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1065/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1064",
      "id": 3726413634,
      "node_id": "I_kwDON-_mZc7eHI9C",
      "number": 1064,
      "title": "ccr 改了什么让中转站拒绝？或者说有了什么特征？",
      "user": {
        "login": "zz5678",
        "id": 67672527,
        "node_id": "MDQ6VXNlcjY3NjcyNTI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/67672527?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zz5678",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-12-13T21:40:07Z",
      "updated_at": "2026-01-19T10:31:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "多个知名中转的对 ccr 适配都有问题。比如 \n其一：\n\n```\n - claude-sonnet-4-5-20250929 | 详情: \"状态码: 400 - 请勿在 Claude Code CLI 之外使用接口 (request id: 202512) (端点: https://duckcoding.com/v1/messages)\"\n```\n\n```\nerror\": {\n    \"message\": \"Error from provider(duck,claude-opus-4-5-20251101: 400): {\\\"error\\\":{\\\"code\\\":\\\"invalid_request\\\",\\\"message\\\":\\\"请勿在 Claude Code CLI 之外使用接口 (request id: 202512)\\\",\\\"type\\\":\\\"new_api_error\\\"}}Error: Error from provider(duck,claude-opus-4-5-20251101: 400): {\\\"error\\\":{\\\"code\\\":\\\"invalid_request\\\",\\\"message\\\":\\\"请勿在 Claude Code CLI 之外使用接口 (request id: 202512)\\\",\\\"type\\\":\\\"new_api_error\\\"}}\\n    at nt (/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 (/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\\n    at async f0 (/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\"\n```\n\n使用 env 设定，绕开 ccr， cc 直连走中转站的 api endpoint 没问题\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1064/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1063",
      "id": 3717559844,
      "node_id": "I_kwDON-_mZc7dlXYk",
      "number": 1063,
      "title": "[Feature] 希望增加“路由组”功能，可提供一键切换组、脚本自动切换组的能力",
      "user": {
        "login": "tangshuang",
        "id": 7940461,
        "node_id": "MDQ6VXNlcjc5NDA0NjE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7940461?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tangshuang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-12-11T03:16:18Z",
      "updated_at": "2026-02-16T06:35:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "现在ccr里面只有一个路由控制，但由于成本原因，我会经常去切换不同模型。\n\n我希望可以提供多个路由组合可随时切换的“路由组”功能。\n比如我大部分情况下想要用claude opus模型，但随着token消耗，或某些任务可以换便宜点的模型，我可以一键切换为其他路由组合。\n同时，还希望可以通过脚本来自动切换，我可以在脚本里面自己统计或去拉api来查看自己的用量，来决定使用哪个组。\n\n希望能考虑这个功能。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1063/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1062",
      "id": 3717406966,
      "node_id": "I_kwDON-_mZc7dkyD2",
      "number": 1062,
      "title": "How to place the cccusage statusline in the status bar",
      "user": {
        "login": "lzhprigrammer",
        "id": 16067215,
        "node_id": "MDQ6VXNlcjE2MDY3MjE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/16067215?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lzhprigrammer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-11T02:00:15Z",
      "updated_at": "2025-12-11T02:00:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"513\" height=\"35\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/93926011-5872-4a03-86e7-d1720e9125e2\" />\n如何将这里的 Script Module 位置处 展示为 ccusage statusline，哪位设置成功过，Thank you very much for your guidance.\n\n<img width=\"684\" height=\"520\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/be5f4f80-942e-4c51-8035-807a15705f86\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1062/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1060",
      "id": 3716015767,
      "node_id": "I_kwDON-_mZc7dfeaX",
      "number": 1060,
      "title": "Feature request: support user-agent (custom or claude version)",
      "user": {
        "login": "saidelike",
        "id": 387346,
        "node_id": "MDQ6VXNlcjM4NzM0Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/387346?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/saidelike",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-10T16:51:12Z",
      "updated_at": "2025-12-10T23:22:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be nice if we could have the HTTP user-agent set by claude-code-router. It seems at the moment it is set to `User-Agent: node`, not sure if it is \"claude\" or \"claude-code-router\" which sets it. But it would be nice to set it to the Claude code version, e.g.:\n\n```\nclaude --version\n2.0.64 (Claude Code)\n```\n\nEven better, it could be initialized from an environment variable, e.g. `CCR_USER_AGENT`? So in my case I would set it to `CCR_USER_AGENT=$(claude --version)`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1060/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1057",
      "id": 3703754942,
      "node_id": "I_kwDON-_mZc7cwtC-",
      "number": 1057,
      "title": "使用 OpenRouter 的 Gemini 3（如 `google/gemini-3-pro-preview`）时出现 400：工具调用内容块缺少 `thought_signature`（未保留 reasoning blocks / thought signatures）",
      "user": {
        "login": "yosennn",
        "id": 155208095,
        "node_id": "U_kgDOCUBJnw",
        "avatar_url": "https://avatars.githubusercontent.com/u/155208095?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yosennn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-12-07T17:36:45Z",
      "updated_at": "2026-01-07T10:40:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## 简要说明\n\n在 **claude-code-router（CCR）** 中通过 **OpenRouter** 调用 **Google Gemini 3 系列模型**（例如 `google/gemini-3-pro-preview`）时，只要对话流程触发 **工具调用 / function calling**（例如 Claude Code 内置的 `TodoWrite` 等），就会稳定报 **HTTP 400**。\n\n报错信息表明：**Gemini 模型要求在每一次请求中保留并回放（preserve）OpenRouter 的 reasoning details / thought signatures**。但 CCR（或其 OpenRouter transformer）在跨轮对话时**未能保留/回放这些字段**，导致上游 Google/Vertex 拒绝请求并返回 `INVALID_ARGUMENT`。\n\n\n## 环境信息\n\n* 操作系统：Windows 11\n* claude-code-router 版本：`1.0.72`\n* Claude Code 版本：`2.0.37`\n* Provider：OpenRouter\n* 受影响模型：`google/gemini-3-pro-preview`（可能也影响其他 Gemini 3 / thinking 相关模型）\n\n\n## 复现步骤\n\n1. 在 CCR 中配置 OpenRouter，并将 `think` 路由指向 Gemini 3 模型：\n\n   ```jsonc\n   {\n     \"Providers\": [\n       {\n         \"name\": \"openrouter\",\n         \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n         \"models\": [\"google/gemini-3-pro-preview\"],\n         \"transformer\": { \"use\": [\"openrouter\"] }\n       }\n     ],\n     \"Router\": {\n       \"think\": \"openrouter,google/gemini-3-pro-preview\"\n     }\n   }\n   ```\n2. 启动 CCR，使用 Claude Code（或任何会触发工具调用的流程）。\n3. 触发 `TodoWrite` / `Task` 等 tool/function calling（Claude Code 经常会自动触发）。\n4. 观察请求失败并返回 400。\n\n## 实际结果\n\nCCR 返回 400 provider error。典型报错（已脱敏、精简）：\n\n```text\nError from provider(openrouter,google/gemini-3-pro-preview: 400):\nGemini models require OpenRouter reasoning details to be preserved in each request.\nUpstream error:\nUnable to submit request because function call `default_api:TodoWrite` ... is missing a `thought_signature`.\nstatus: INVALID_ARGUMENT\n```\n\n同时包含堆栈（示例）：\n\n```text\nat nt (...\\claude-code-router\\dist\\cli.js:79940:11)\n...\n```\n\n\n## 期望结果\n\n* 通过 CCR 路由到 OpenRouter 的 Gemini 3 时，包含工具调用的请求应能正常完成；\n* 或者 CCR 能在检测到 Gemini 3 这类需要强校验的模型时，自动正确处理并 **保留/回放 reasoning blocks / thought signatures**，避免上游拒绝。\n\n\n## 问题分析（为什么像是 CCR 的能力缺口）\n\n错误信息指出两件事：\n\n1. OpenRouter 要求：Gemini models 必须在每次请求中保留 reasoning details（reasoning blocks）。可见 `https://openrouter.ai/docs/guides/best-practices/reasoning-tokens?utm_source=chatgpt.com#preserving-reasoning-blocks`\n2. Google/Vertex 要求：工具调用内容块缺少 `thought_signature` 会被直接拒绝（400 / INVALID_ARGUMENT）。可见 `https://ai.google.dev/gemini-api/docs/thought-signatures?hl=zh-CN&utm_source=chatgpt.com#how_it_works`\n\n这很像 CCR 在以下任一环节丢失了必要字段：\n\n* 处理 OpenRouter 返回内容时，没有把 reasoning/thought_signature 相关内容存入会话历史；\n* 下一轮请求时对 messages/content blocks 做了重排、合并、裁剪或 schema 转换，导致 `thought_signature` 丢失；\n* OpenRouter transformer 生成 tool/function blocks 时未携带/未回放上轮返回的签名字段。\n\n其他 LLM 客户端开源项目也遇到了一样的问题：\n \n* chatbox-`https://github.com/chatboxai/chatbox/issues/2734`\n* jan-`https://github.com/janhq/jan/issues/7009`\n\n## 建议维护者排查/收集的证据\n\n为了定位“是谁把 thought_signature 丢了”，建议在 debug 日志中打印两类内容（脱敏即可）：\n\n1. **上一轮 OpenRouter(Gemini) response** 中与 reasoning/签名相关的内容块（content parts / metadata）。\n2. **下一轮发送给 OpenRouter 的 request body**：看是否仍包含上述内容块及 `thought_signature`。\n\n只要对比这两份就能确定：是“没存”还是“存了但没带回去”，或是“带回去了但被转换器抹掉”。\n\n## 可能的修复方向（供讨论）\n\n### 方案 A（推荐）：为 Gemini 模型实现 reasoning blocks / thought signatures 的保留与回放\n\n* 当 OpenRouter 返回包含 reasoning/thought signature 的内容块时，将其按原结构持久化到对话状态；\n* 下一轮请求中保持**内容块顺序与结构不变**，并原样回放签名字段。\n\n### 方案 B：模型/路由层的自动降级策略\n\n* 检测到 Gemini 3（或需要该校验的模型）且本轮包含工具调用时：\n\n  * 自动切到其它 provider/model（例如 Claude/DeepSeek）完成 tool-heavy 流程；或\n  * 禁用工具调用（若产品允许）；或\n  * 给出明确告警提示用户调整路由。\n\n### 方案 C：文档补充（短期可落地）\n\n* 在 README / 配置说明中明确：\n\n  * Gemini 3（经 OpenRouter）在 function calling 场景需要保留 reasoning blocks / thought signatures\n  * 若 CCR 当前不支持，建议将工具高频路由避开 Gemini 3\n\n## 当前可用的临时规避方案（Workaround）\n\n* 不要将 `think` / `default` 等会频繁触发工具调用的路由指向 OpenRouter Gemini 3；\n* 改为指向不会要求 thought_signature 的模型（例如 Claude / DeepSeek 等），或尽量减少工具调用。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1057/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1054",
      "id": 3703555281,
      "node_id": "I_kwDON-_mZc7cv8TR",
      "number": 1054,
      "title": "上周还能正常使用，今天就报500错误，请问怎么解决",
      "user": {
        "login": "iceAI999",
        "id": 126835866,
        "node_id": "U_kgDOB49cmg",
        "avatar_url": "https://avatars.githubusercontent.com/u/126835866?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iceAI999",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-07T14:29:20Z",
      "updated_at": "2026-01-25T12:34:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at\n     node:internal/deps/undici/undici:15845:13\\n    at process.processTicksAndRejections\n     (node:internal/process/task_queues:103:5)\\n    at async p0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Ro\n     aming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79997:11)\\n    at async\n     f0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-route\n     r\\\\dist\\\\cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1054/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1052",
      "id": 3703297226,
      "node_id": "I_kwDON-_mZc7cu9TK",
      "number": 1052,
      "title": "经常不显示加载，状态，干一半就断了",
      "user": {
        "login": "yuanjize",
        "id": 11979757,
        "node_id": "MDQ6VXNlcjExOTc5NzU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/11979757?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yuanjize",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2025-12-07T09:22:46Z",
      "updated_at": "2026-01-09T06:14:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "经常干一半就不显示工作状态了，我输入继续，状态会显示一会儿，然后又不行了，是开的glm4.6\n使用直连的glm4.6没问题，能帮忙看一下吗",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1052/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1050",
      "id": 3701149270,
      "node_id": "I_kwDON-_mZc7cmw5W",
      "number": 1050,
      "title": "最近使用了新的deepseek之后ccr就用不了了，一直是这个报错",
      "user": {
        "login": "Even-lwx",
        "id": 135977013,
        "node_id": "U_kgDOCBrYNQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/135977013?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Even-lwx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-12-06T06:02:58Z",
      "updated_at": "2025-12-30T04:09:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " API Error: 400 {\"error\":{\"message\":\"Error from provider(deepseek,deepseek-reasoner: 400): {\\\"error\\\":{\\\"message\\\":\\\"Missing\n    `reasoning_content` field in the assistant message at message index 2. For more information, please refer to https://api-docs.deepseek.com/gu\n    ides/thinking_mode#tool-calls\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}Error: Error from      \n    provider(deepseek,deepseek-reasoner: 400): {\\\"error\\\":{\\\"message\\\":\\\"Missing `reasoning_content` field in the assistant message at message   \n    index 2. For more information, please refer to https://api-docs.deepseek.com/guides/thinking_mode#tool-calls\\\",\\\"type\\\":\\\"invalid_request_err\n    or\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}\\n    at nt\n    (C:\\\\Users\\\\lx\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79940:11)\\n    at p0\n    (C:\\\\Users\\\\lx\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80000:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async f0 (C:\\\\Users\\\\lx\\\\AppData\\\\Roaming\\\\npm\\\\node_modul\n    es\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1050/reactions",
        "total_count": 5,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 5
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1049",
      "id": 3698965435,
      "node_id": "I_kwDON-_mZc7cebu7",
      "number": 1049,
      "title": "404 报错问题解决",
      "user": {
        "login": "Shuimo03",
        "id": 22347407,
        "node_id": "MDQ6VXNlcjIyMzQ3NDA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/22347407?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Shuimo03",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-05T13:20:43Z",
      "updated_at": "2025-12-05T13:20:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n ⎿ API Error: 404 {\"error\":{\"message\":\"Provider 'anthropic/claude-3.7-sonnet:thinking' not foundError: Provider 'anthropic/claude-3.7-sonnet:thinking' not found\\n    at nt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at f0 \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79964:17)\\n    at Object.<anonymous> (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80016:86)\\n    at preHandlerCallbackInner (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:4571:28)\\n    at \n    preHandlerCallback (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:4543:9)\\n    at next (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3662:13)\\n    at handleResolve (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3677:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\",\"type\":\"api_error\",\"code\":\"provider_not_found\"}}\n```\n\n配置 json\n```json\n{\n  \"APIKEY\": \"ai_proxy\",\n  \"PROXY_URL\": \"http://127.0.0.1:7893\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"anthropic/claude-sonnet-4\",\n    \"background\": \"anthropic/claude-sonnet-4\",\n    \"think\": \"anthropic/claude-sonnet-4\",\n    \"longContext\": \"anthropic/claude-sonnet-4\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }\n}\n```\n\n解决方式:\n1. Router 里所有值都变成：\"openrouter,<模型名>\"\n2. 不再直接写裸的 \"anthropic/claude-xxx\"\n3.  确保模型本身在 OpenRouter 上存在\n\n修复之后的 JSON:\n```json\n{\n  \"APIKEY\": \"ai_proxy\",\n  \"PROXY_URL\": \"http://127.0.0.1:7893\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"xxx\",\n      \"models\": [\n        \"anthropic/claude-sonnet-4.5\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.5-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,anthropic/claude-sonnet-4.5\",\n    \"background\": \"openrouter,anthropic/claude-sonnet-4.5\",\n    \"think\": \"openrouter,anthropic/claude-3.5-sonnet:thinking\",\n    \"longContext\": \"openrouter,anthropic/claude-sonnet-4.5\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"openrouter,anthropic/claude-sonnet-4.5\"\n  }\n}\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1049/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1048",
      "id": 3697694123,
      "node_id": "I_kwDON-_mZc7cZlWr",
      "number": 1048,
      "title": "ccr不兼容deepseek-v3.2模型接口",
      "user": {
        "login": "Lewis-404",
        "id": 188748302,
        "node_id": "U_kgDOC0ASDg",
        "avatar_url": "https://avatars.githubusercontent.com/u/188748302?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lewis-404",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-12-05T06:36:22Z",
      "updated_at": "2025-12-21T03:02:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "deepsee升级到v3.2之后，使用模型接口一直报错：\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(deepseek,deepseek-reasoner: 400): {\\\"error\\\":{\\\"message\\\":\\\"Missing `reasoning_content` field in the \n    assistant message at message index 2. For more information, please refer to \n    https://api-docs.deepseek.com/guides/thinking_mode#tool-calls\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}Error: Error \n    from provider(deepseek,deepseek-reasoner: 400): {\\\"error\\\":{\\\"message\\\":\\\"Missing `reasoning_content` field in the assistant message at message index 2. For more \n    information, please refer to \n    https://api-docs.deepseek.com/guides/thinking_mode#tool-calls\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}\\n    at nt \n    (/usr/local/Cellar/claude-code-router/1.0.72/libexec/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/usr/local/Cellar/claude-code-router/1.0.72/libexec/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:11)\\n    at process.processTicksAndRejections\n     (node:internal/process/task_queues:103:5)\\n    at async f0 (/usr/local/Cellar/claude-code-router/1.0.72/libexec/lib/node_modules/@musistudio/claude-code-router/dis\n    t/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1048/reactions",
        "total_count": 12,
        "+1": 11,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1047",
      "id": 3697687240,
      "node_id": "I_kwDON-_mZc7cZjrI",
      "number": 1047,
      "title": "ccr 调用 glm coding plan 报错",
      "user": {
        "login": "htle2101",
        "id": 5510363,
        "node_id": "MDQ6VXNlcjU1MTAzNjM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5510363?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/htle2101",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-12-05T06:32:53Z",
      "updated_at": "2025-12-10T07:23:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "这是我的配置：\n\n<img width=\"1420\" height=\"774\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/87186b9b-7a92-400e-9278-f58cd0075eae\" />\n\n这是报错信息：\n\n<img width=\"2928\" height=\"862\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1df83031-8360-41b6-92f2-a4a4479882df\" />\n\n麻烦指点下",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1047/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1046",
      "id": 3697239638,
      "node_id": "I_kwDON-_mZc7cX2ZW",
      "number": 1046,
      "title": "[Bug] 使用 Ollama 本地模型时，所有请求都会失败并报错：\"模型名称 does not support thinking\"。即使将 think 路由设置为空字符串或禁用也无法解决。Ollama models fail with \"does not support thinking\" error in v2.0.58",
      "user": {
        "login": "wusunzu",
        "id": 67815728,
        "node_id": "MDQ6VXNlcjY3ODE1NzI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/67815728?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wusunzu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-12-05T02:18:57Z",
      "updated_at": "2025-12-20T18:14:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "# Bug Report: Ollama Models Failing with \"does not support thinking\" Error\n\n## Environment\n- **OS**: Windows 11\n- **CCR Version**: v2.0.58\n- **Node Version**: (run `node -v` to get this)\n- **Ollama Version**: Latest\n- **Models**: qwen2.5:14b, qwen2.5-coder:7b, deepseek-r1:7b\n\n## Description\nWhen using Ollama local models with `claude-code-router`, all requests fail with error: `\"model_name does not support thinking\"`. This happens even when the `think` router is set to empty string or disabled.\n\n使用 Ollama 本地模型时，所有请求都会失败并报错：`\"模型名称 does not support thinking\"`。即使将 `think` 路由设置为空字符串或禁用也无法解决。\n\n## Steps to Reproduce\n\n1. Install claude-code-router v2.0.58:\n   ```bash\n   npm install -g @musistudio/claude-code-router@2.0.58\n   ```\n\n2. Configure `~/.claude-code-router/config.json`:\n   ```json\n   {\n     \"Providers\": [\n       {\n         \"name\": \"ollama\",\n         \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n         \"api_key\": \"ollama\",\n         \"models\": [\"qwen2.5:14b\"],\n         \"request_overrides\": {\n           \"tool_choice\": \"none\"\n         }\n       }\n     ],\n     \"Router\": {\n       \"default\": \"ollama,qwen2.5:14b\",\n       \"think\": \"\"\n     }\n   }\n   ```\n\n3. Start the service:\n   ```bash\n   ccr start\n   ccr code\n   ```\n\n4. Send any message (e.g., \"Hello\")\n\n## Expected Behavior\nThe model should respond normally, as Ollama models work fine with direct API calls and other tools like Continue VSCode extension.\n\n模型应该正常响应，因为 Ollama 模型在直接 API 调用和其他工具（如 Continue VSCode 扩展）中都能正常工作。\n\n## Actual Behavior\nEvery request fails with:\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(ollama,qwen2.5:14b: 400): \n{\\\"error\\\":{\\\"message\\\":\\\"\\\\\\\"qwen2.5:14b\\\\\\\" does not support thinking\\\",\n\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\"}}\n```\n\n## Additional Context\n\n- Tested with multiple models: `qwen2.5:14b`, `qwen2.5-coder:7b`, `deepseek-r1:7b` - all fail\n- Direct Ollama API calls work fine: `ollama run qwen2.5:14b` works normally\n- Tried various config options:\n  - Setting `\"think\": \"\"` (empty string)\n  - Setting `\"think\": \"ollama,qwen2.5:14b\"` (same model)\n  - Adding `\"thinking\": {\"type\": \"disabled\"}` to `request_overrides`\n  - Adding `\"tools\": null` to `request_overrides`\n  - None of these resolve the issue\n\n尝试了多种配置选项均无法解决：\n- 将 `think` 设为空字符串\n- 在 `request_overrides` 中添加各种禁用选项\n- 所有配置都无法解决问题\n\n## Root Cause Analysis\nIt appears that v2.0.58 **force-enables** the extended thinking feature for all requests, even when:\n1. The `think` router is empty\n2. The provider explicitly disables it\n3. The model doesn't support Claude's extended thinking API\n\n看起来 v2.0.58 版本**强制启用**了 extended thinking 功能，即使在以下情况下也会尝试使用：\n1. think 路由为空\n2. Provider 明确禁用\n3. 模型不支持 Claude 的 extended thinking API\n\n## Suggested Fix\nAdd a global flag to completely disable extended thinking for providers that don't support it:\n\n建议添加全局标志来完全禁用不支持的功能：\n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"capabilities\": {\n        \"thinking\": false,\n        \"tools\": false\n      }\n    }\n  ]\n}\n```\n\nOr detect provider capabilities automatically and skip unsupported features.\n\n或者自动检测 Provider 的能力并跳过不支持的功能。\n\n## Workaround\nCurrently no workaround exists. Users with Ollama models cannot use v2.0.58.\n\n目前没有可用的解决方法。使用 Ollama 模型的用户无法使用 v2.0.58 版本。\n\nPotential temporary solution: Downgrade to an earlier version (if available).\n\n可能的临时解决方案：降级到早期版本（如果可用）。\n\n---\n\n**Hardware**: Lenovo Y9000P, RTX 4060 (8GB VRAM)\n**Use Case**: Local AI development without API costs\n\nThank you for this amazing project! Looking forward to Ollama support being fixed. 🙏\n\n感谢这个出色的项目！期待 Ollama 支持问题能够得到修复。🙏",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1046/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1045",
      "id": 3696513793,
      "node_id": "I_kwDON-_mZc7cVFMB",
      "number": 1045,
      "title": "failed to start with 0 error",
      "user": {
        "login": "tribbloid",
        "id": 3441413,
        "node_id": "MDQ6VXNlcjM0NDE0MTM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3441413?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tribbloid",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-12-04T20:51:30Z",
      "updated_at": "2026-02-11T18:08:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\npeng@pop-os:~$ ccr ui\nService not running, starting service...\nService startup timeout, trying to start with default configuration...\nBacked up existing configuration file to /home/peng/.claude-code-router/config.json.2025-12-04T20-49-00-332Z.bak\nCreated minimal default configuration file at ~/.claude-code-router/config.json\nPlease edit this file with your actual configuration.\nService startup still failing. Please manually run `ccr start` to start the service and check the logs.\npeng@pop-os:~$ ccr start\nLoaded JSON config from: /home/peng/.claude-code-router/config.json\npeng@pop-os:~$ ccr ui\nService not running, starting service...\nService startup timeout, trying to start with default configuration...\nBacked up existing configuration file to /home/peng/.claude-code-router/config.json.2025-12-04T20-49-42-374Z.bak\nCreated minimal default configuration file at ~/.claude-code-router/config.json\nPlease edit this file with your actual configuration.\nService startup still failing. Please manually run `ccr start` to start the service and check the logs.\npeng@pop-os:~$ \n```\n\nthis shouldn't happen, there is no log or error anywhere",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1045/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1043",
      "id": 3690561602,
      "node_id": "I_kwDON-_mZc7b-YBC",
      "number": 1043,
      "title": "LM-Studio Qwen3 VL 30B takes many minutes using CCR - Takes less than seconds as chat in LM Studio - How to optimize?",
      "user": {
        "login": "StudioRATATA",
        "id": 22966504,
        "node_id": "MDQ6VXNlcjIyOTY2NTA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/22966504?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/StudioRATATA",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-03T14:48:09Z",
      "updated_at": "2025-12-03T14:48:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey all,\n\nI try to run `Qwen3-VL-30B` via CCR. I do get responses, but they take an awful long time to finish. And the results are subpar when I compare the same prompt and reference image in LM-Studio chat itself.\n\n`qwen/qwen3-vl-235b-a22b-instruct` returns a response in the chat, but appears to drop the prompt without response in CCR. (granted chat also takes a minute, but CCR stops after 20min? )\n\nNow, this could (as I expect) be an error from my side. Do I need to optimize my settings maybe?\n\n# Context\nI try to run CCR inside a wordpress (roots sage) theme project. I've got a `claude.md` setup.\n\n\nthe config:  \n```\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"lmstudio\",\n      \"api_base_url\": \"http://<<myLocalIP>>:1234/v1/chat/completions\",\n      \"api_key\": \"test\",\n      \"models\": [\n        \"qwen/qwen3-coder-30b\",\n        \"qwen/qwen3-32b\",\n        \"qwen/qwen3-235b-a22b-2507\",\n        \"qwen/qwen3-vl-30b\",\n        \"qwen/qwen3-vl-235b-a22b-thinking\",\n        \"qwen/qwen3-vl-30b-a3b-thinking\",\n        \"qwen/qwen3-vl-235b-a22b-instruct\"\n      ]\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"lmstudio,qwen/qwen3-vl-30b\",\n    \"background\": \"lmstudio,qwen/qwen3-vl-30b\",\n    \"think\": \"lmstudio,qwen/qwen3-vl-30b\",\n    \"longContext\": \"lmstudio,qwen/qwen3-vl-30b\",\n    \"longContextThreshold\": 200000,\n    \"webSearch\": \"lmstudio,qwen/qwen3-vl-30b\",\n    \"image\": \"lmstudio,qwen/qwen3-vl-30b\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1043/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1041",
      "id": 3680705788,
      "node_id": "I_kwDON-_mZc7bYxz8",
      "number": 1041,
      "title": "API Error 400: Missing `reasoning_content` field when using DeepSeek Reasoner/V3.2 models",
      "user": {
        "login": "Banditman74",
        "id": 64268271,
        "node_id": "MDQ6VXNlcjY0MjY4Mjcx",
        "avatar_url": "https://avatars.githubusercontent.com/u/64268271?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Banditman74",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-12-01T12:10:37Z",
      "updated_at": "2026-01-05T08:50:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Description\nCCR fails with API error 400 when attempting to use DeepSeek models that require `reasoning_content` field (likely the new V3.2 reasoning-first models). The error occurs because CCR doesn't include the mandatory `reasoning_content` field in assistant messages for these models.\n\n## Error Message\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(deepseek,deepseek-reasoner: 400): {\"error\":{\"message\":\"Missing reasoning_content field in the assistant message at message index 5. For more information, please refer to [https://api-docs.deepseek.com/guides/thinking_with_tools\\](https://api-docs.deepseek.com/guides/thinking_with_tools%5C)\",\"type\":\"invalid_request_error\",\"param\":null,\"code\":\"invalid_request_error\"}}Error: Error from\nprovider(deepseek,deepseek-reasoner: 400): {\"error\":{\"message\":\"Missing reasoning_content field in the assistant message at message index 5. For more information, please refer to [https://api-docs.deepseek.com/guides/thinking_with_tools\\](https://api-docs.deepseek.com/guides/thinking_with_tools%5C)\",\"type\":\"invalid_request_error\",\"param\":null,\"code\":\"invalid_request_error\"}}\\n at nt\n(/home/michael/.nvm/versions/node/v24.7.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n at p0 (/home/michael/.nvm/versions/node/v24.7.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:11)\\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n at async f0\n(/home/michael/.nvm/versions/node/v24.7.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n## Steps to Reproduce\n1. Install latest CCR version\n2. Run `ccr code` or `ccr chat` (with default or DeepSeek provider)\n3. Observe the 400 API error\n\n## Expected Behavior\nCCR should either:\n1. Automatically include the `reasoning_content` field for DeepSeek Reasoner/V3.2 models\n2. OR default to compatible models (like `deepseek-chat`) that don't require this field\n3. OR provide clear configuration options for reasoning models\n\n## Workaround\nExplicitly specify a compatible model:\n```bash\nccr code -m deepseek-chat\n# or\nccr config set default_model deepseek-chat\n\n## Environment\n- CCR Version: claude-code-router version: 1.0.71\n- Node.js: 24.7.0\n- OS: Fedora 43",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1041/reactions",
        "total_count": 5,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 3
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1040",
      "id": 3680435299,
      "node_id": "I_kwDON-_mZc7bXvxj",
      "number": 1040,
      "title": "[BUG] 图像代理设置 不生效 +  状态栏设置 不生效",
      "user": {
        "login": "zhu-jl18",
        "id": 48956204,
        "node_id": "MDQ6VXNlcjQ4OTU2MjA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48956204?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhu-jl18",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-12-01T10:58:43Z",
      "updated_at": "2025-12-08T03:45:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "第一个bug 如图 这里 ,当勾选为  是 的 时候 点击 保存 和 保存重启，。，，， 总会自动自己改回去否，完全不能用。。。。\n\n<img width=\"1016\" height=\"681\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/91c14284-4654-47ec-97d9-b37cffa9f2b1\" />\n\n第二个bug 如图，这里设置好，并且 ccr ui 开启设置后，完全不生效 \n\n<img width=\"1592\" height=\"635\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/23cc6131-df34-42d6-a050-cdd13b078ff2\" />\n\n<img width=\"992\" height=\"531\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/427ac75f-2035-4bcc-aea5-c5dc43ca71ea\" />\n\n如需更多信息，可以要求我补充",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1040/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1039",
      "id": 3677972250,
      "node_id": "I_kwDON-_mZc7bOWca",
      "number": 1039,
      "title": "使用OpenRouter的Claude Sonnet 4.5模型时，处理图像出现报错",
      "user": {
        "login": "NicoOniwa",
        "id": 81894447,
        "node_id": "MDQ6VXNlcjgxODk0NDQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/81894447?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NicoOniwa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-30T16:08:17Z",
      "updated_at": "2025-11-30T16:08:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "报错如图。\n\n<img width=\"1483\" height=\"442\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8c3c966e-94c3-4376-875c-b6cf3bd40c32\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1039/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1038",
      "id": 3676367196,
      "node_id": "I_kwDON-_mZc7bIOlc",
      "number": 1038,
      "title": "/model 得到的模型列表还是原生的三个选择",
      "user": {
        "login": "withloveryou",
        "id": 125202969,
        "node_id": "U_kgDOB3ZyGQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/125202969?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/withloveryou",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-11-29T05:17:50Z",
      "updated_at": "2025-12-15T11:03:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "这个问题能切换显示下吗",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1038/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1037",
      "id": 3673954992,
      "node_id": "I_kwDON-_mZc7a_Bqw",
      "number": 1037,
      "title": "Git Bash 中运行 claude-code-router 出现 DeprecationWarning 与 “node 不是内部命令” 错误",
      "user": {
        "login": "lunrenyi",
        "id": 87307989,
        "node_id": "MDQ6VXNlcjg3MzA3OTg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/87307989?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lunrenyi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-28T07:48:44Z",
      "updated_at": "2025-11-28T07:48:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### 问题描述\n在 Windows 的 Git Bash 中使用 claude-code-router 时出现以下错误：\n```bash\n(node:14824) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.\n(Use `node --trace-deprecation ...` to show where the warning was created)\n'\"node\"' 不是内部或外部命令，也不是可运行的程序\n或批处理文件。\n```\n\n### 运行环境\n\n- 操作系统：Windows + Git Bash\n- claude-code-router 版本：v1.0.65\n- Node.js 版本：v22.11.0\n- 安装方式：npm install\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1037/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1036",
      "id": 3671563019,
      "node_id": "I_kwDON-_mZc7a15sL",
      "number": 1036,
      "title": "希望接入XAI",
      "user": {
        "login": "cryotx",
        "id": 129533354,
        "node_id": "U_kgDOB7iFqg",
        "avatar_url": "https://avatars.githubusercontent.com/u/129533354?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cryotx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-27T13:29:31Z",
      "updated_at": "2025-11-27T13:29:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "想用grok code  fast 1 希望增加一个这个",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1036/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1035",
      "id": 3670478173,
      "node_id": "I_kwDON-_mZc7axw1d",
      "number": 1035,
      "title": "魔搭 500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed",
      "user": {
        "login": "HyberLinker",
        "id": 38147125,
        "node_id": "MDQ6VXNlcjM4MTQ3MTI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/38147125?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/HyberLinker",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-27T08:58:11Z",
      "updated_at": "2026-01-05T08:40:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n<img width=\"1093\" height=\"426\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/dd08c6c7-fdc4-4ae5-9a25-1c79b0398b18\" />\n\n配置文件如下\n\n<img width=\"790\" height=\"638\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1bd90993-aee6-4146-a8a9-29754b1a95b8\" />\n\n\n之前使用ccr ui配置了多个模型，是可以用的，今天切换成qwen就不行了，一直报错这个500",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1035/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1033",
      "id": 3666128239,
      "node_id": "I_kwDON-_mZc7ahK1v",
      "number": 1033,
      "title": "cc里调gemini的api偶尔报错中断",
      "user": {
        "login": "duanpj001",
        "id": 29009107,
        "node_id": "MDQ6VXNlcjI5MDA5MTA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/29009107?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/duanpj001",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-26T06:59:07Z",
      "updated_at": "2025-12-06T04:14:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如下,好像是第三方API报错了?这种能自动重试吗\n\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(gemini,undefined: 400): {\\\"error\\\":{\\\"code\\\":400,\\\"message\\\":\\\"Missing or invalid 'alt' query \n     parameter. Expected 'alt=sse'\\\",\\\"status\\\":\\\"INVALID_ARGUMENT\\\"}}Error: Error from provider(gemini,undefined: 400): \n     {\\\"error\\\":{\\\"code\\\":400,\\\"message\\\":\\\"Missing or invalid 'alt' query parameter. Expected 'alt=sse'\\\",\\\"status\\\":\\\"INVALID_ARGUMENT\\\"}} at nt \n     (/usr/local/node-v22.19.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11) at p0 \n     (/usr/local/node-v22.19.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:11) at process.processTicksAndRejections \n     (node:internal/process/task_queues:105:5) at async f0 \n     (/usr/local/node-v22.19.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1033/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1032",
      "id": 3665576591,
      "node_id": "I_kwDON-_mZc7afEKP",
      "number": 1032,
      "title": "Have function call error",
      "user": {
        "login": "AkoWu101",
        "id": 2141985,
        "node_id": "MDQ6VXNlcjIxNDE5ODU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2141985?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AkoWu101",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-26T03:36:47Z",
      "updated_at": "2025-11-26T16:53:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " API Error: 400 {\"error\":{\"message\":\"Error from provider(gemini,undefined: 400): {\\n  \n    \\\"error\\\": {\\n    \\\"code\\\": 400,\\n    \\\"message\\\": \\\"Function call is missing a \n    thought_signature in functionCall parts. This is required for tools to work correctly, and \n    missing thought_signature may lead to degraded model performance. Additional data, function\n     call `default_api:TodoWrite` , position 3. Please refer to \n    https://ai.google.dev/gemini-api/docs/thought-signatures for more details.\\\",\\n    \n    \\\"status\\\": \\\"INVALID_ARGUMENT\\\"\\n  }\\n}\\nError: Error from provider(gemini,undefined: \n    400): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 400,\\n    \\\"message\\\": \\\"Function call is missing a \n    thought_signature in functionCall parts. This is required for tools to work correctly, and \n    missing thought_signature may lead to degraded model performance. Additional data, function\n     call `default_api:TodoWrite` , position 3. Please refer to \n    https://ai.google.dev/gemini-api/docs/thought-signatures for more details.\\\",\\n    \n    \\\"status\\\": \\\"INVALID_ARGUMENT\\\"\\n  }\\n}\\n\\n    at nt (/Users/kingwu/.nvm/versions/node/v22\n    .18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/Users/kingwu/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/\n    dist/cli.js:80000:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async f0 \n    (/Users/kingwu/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/\n    dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1032/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1031",
      "id": 3663633146,
      "node_id": "I_kwDON-_mZc7aXpr6",
      "number": 1031,
      "title": "关于claude code router如何部署环境变量（Regarding the deployment of environment variables for Claude Code Router）",
      "user": {
        "login": "PArk1231-f",
        "id": 209158779,
        "node_id": "U_kgDODHeCew",
        "avatar_url": "https://avatars.githubusercontent.com/u/209158779?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PArk1231-f",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-25T15:51:47Z",
      "updated_at": "2025-12-07T16:54:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "各位大哥，小弟请教一个问题。\n关于自述文件中的第六点部署环境变量先要运行：eval \"$(ccr activate)\"\n但是我是用cmd运行了说不是内部或外部命令，也不是可运行的程序或批处理文件。出现了这个报错，后来换了管理员身份运行也一样不行。\n请教各位大哥如何解决这个问题，万分感谢！\n\n\n(Esteemed colleagues, I would like to seek your guidance on a technical issue.\n\nRegarding the sixth point in the documentation concerning environment variable deployment, it specifies that the command eval \"$(ccr activate)\" must be executed first. However, when I attempted to run this command in CMD, the system returned an error indicating that it is neither an internal nor external command, nor an executable program or batch file. The issue persisted even when I tried executing it with administrator privileges.\n\nI would be immensely grateful if anyone could advise on how to resolve this matter. Thank you sincerely for your assistance.)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1031/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1028",
      "id": 3657167137,
      "node_id": "I_kwDON-_mZc7Z-_Eh",
      "number": 1028,
      "title": "Router 配置实际上的用处是什么。",
      "user": {
        "login": "iamckun",
        "id": 65990499,
        "node_id": "MDQ6VXNlcjY1OTkwNDk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/65990499?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iamckun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-11-24T05:41:43Z",
      "updated_at": "2026-02-10T10:57:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```json\n\"Router\": {\n    \"default\": \"deepseek,deepseek-chat\",\n    \"background\": \"ollama,qwen2.5-coder:latest\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }\n```\n文档解释的比较清楚。但是在cc里面使用的时候都是需要手动切换模型的。没有看到这个Router的实际用处。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1028/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1026",
      "id": 3655755168,
      "node_id": "I_kwDON-_mZc7Z5mWg",
      "number": 1026,
      "title": "大佬，啥时候出纯SERVER版本？",
      "user": {
        "login": "luluxiuxiu",
        "id": 86842763,
        "node_id": "MDQ6VXNlcjg2ODQyNzYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/86842763?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luluxiuxiu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-23T09:45:31Z",
      "updated_at": "2025-12-30T14:06:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "大佬，啥时候出纯SERVER版本？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1026/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1024",
      "id": 3653596952,
      "node_id": "I_kwDON-_mZc7ZxXcY",
      "number": 1024,
      "title": "Can't use gemini-3-pro-preview from Openrouter",
      "user": {
        "login": "djeidy",
        "id": 36420074,
        "node_id": "MDQ6VXNlcjM2NDIwMDc0",
        "avatar_url": "https://avatars.githubusercontent.com/u/36420074?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/djeidy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 19,
      "created_at": "2025-11-22T01:37:34Z",
      "updated_at": "2025-12-25T14:34:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I get the error bellow when I try to use gemini-3-pro-preview from Openrouter. Is there any work around?\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(openrouter,google/gemini-3-pro-preview: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned \n    error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"Gemini models require OpenRouter reasoning details to be preserved in each request. Please refer to our docs: \n    https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks. Upstream error: {\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"code\\\\\\\": 400,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Function \n    call is missing a thought_signature in functionCall parts. This is required for tools to work correctly, and missing thought_signature may lead to degraded model performance. \n    Additional data, function call `default_api:TodoWrite` , position 2. Please refer to https://ai.google.dev/gemini-api/docs/thought-signatures for more details.\\\\\\\",\\\\n    \n    \\\\\\\"status\\\\\\\": \\\\\\\"INVALID_ARGUMENT\\\\\\\"\\\\n  }\\\\n}\\\\n\\\",\\\"provider_name\\\":\\\"Google AI Studio\\\"}},\\\"user_id\\\":\\\"user_2dOv1J5wtMvwXLCnuCxFMLblqu5\\\"}Error: Error from \n    provider(openrouter,google/gemini-3-pro-preview: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"Gemini models require OpenRouter \n    reasoning details to be preserved in each request. Please refer to our docs: https://openrouter.ai/docs/use-cases/reasoning-tokens#preserving-reasoning-blocks. Upstream error: {\\\\n  \n    \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"code\\\\\\\": 400,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Function call is missing a thought_signature in functionCall parts. This is required for tools to work correctly, \n    and missing thought_signature may lead to degraded model performance. Additional data, function call `default_api:TodoWrite` , position 2. Please refer to \n    https://ai.google.dev/gemini-api/docs/thought-signatures for more details.\\\\\\\",\\\\n    \\\\\\\"status\\\\\\\": \\\\\\\"INVALID_ARGUMENT\\\\\\\"\\\\n  }\\\\n}\\\\n\\\",\\\"provider_name\\\":\\\"Google AI \n    Studio\\\"}},\\\"user_id\\\":\\\"user_2dOv1J5wtMvwXLCnuCxFMLblqu5\\\"}\\n    at nt (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80000:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async \n    f0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1024/reactions",
        "total_count": 16,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 6
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1023",
      "id": 3650437772,
      "node_id": "I_kwDON-_mZc7ZlUKM",
      "number": 1023,
      "title": "连接glm-4.6出现如下报错",
      "user": {
        "login": "WebGISLuki",
        "id": 135120327,
        "node_id": "U_kgDOCA3Fxw",
        "avatar_url": "https://avatars.githubusercontent.com/u/135120327?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/WebGISLuki",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-11-21T06:40:16Z",
      "updated_at": "2025-12-08T04:22:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "连接glm-4.6出现如下报错 \n500 {\"error\":{\"message\":\"Provider error: {\\\"code\\\":500,\\\"msg\\\":\\\"404 NOT_FOUND\\\",\\\"success\\\":false}Error: Provider\n     error: {\\\"code\\\":500,\\\"msg\\\":\\\"404 NOT_FOUND\\\",\\\"success\\\":false}\\n    at nt\n     (D:\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79940:11)\\n    at\n     bo.convertOpenAIResponseToAnthropic\n     (D:\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80547:13)\\n    at\n     bo.transformResponseIn\n     (D:\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80284:40)\\n    at\n     process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async m0\n     (D:\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80008:46)\\n    at async f0\n     (D:\\\\nodejs\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:140)\",\"type\":\"api_error\"\n     ,\"code\":\"provider_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1023/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1020",
      "id": 3646285134,
      "node_id": "I_kwDON-_mZc7ZVeVO",
      "number": 1020,
      "title": "Claude Code Router Error after some minutes of work",
      "user": {
        "login": "LumenYoung",
        "id": 45258158,
        "node_id": "MDQ6VXNlcjQ1MjU4MTU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/45258158?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LumenYoung",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-20T09:17:52Z",
      "updated_at": "2025-11-20T09:18:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, I'm using openrouter with the ccr and I always hit this error. Seems to related to the Gemini constraint\n\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(openrouter,google/gemini-3-pro-preview: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"code\\\\\\\": 400,\\\\n    \n     \\\\\\\"message\\\\\\\": \\\\\\\"Request contains an invalid argument.\\\\\\\",\\\\n    \\\\\\\"status\\\\\\\": \\\\\\\"INVALID_ARGUMENT\\\\\\\"\\\\n  }\\\\n}\\\\n\\\",\\\"provider_name\\\":\\\"Google\\\"}},\\\"user_id\\\":\\\"user_2nQJUCRCpoz00A5MaY5hjxzylMi\\\"}Error: Error from \n     provider(openrouter,google/gemini-3-pro-preview: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"code\\\\\\\": 400,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Request contains an invalid \n     argument.\\\\\\\",\\\\n    \\\\\\\"status\\\\\\\": \\\\\\\"INVALID_ARGUMENT\\\\\\\"\\\\n  }\\\\n}\\\\n\\\",\\\"provider_name\\\":\\\"Google\\\"}},\\\"user_id\\\":\\\"user_2nQJUCRCpoz00A5MaY5hjxzylMi\\\"}\\n    at nt \n     (/home/yang/.local/share/mamba/envs/main/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at h0 (/home/yang/.local/share/mamba/envs/main/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    at \n     process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 \n     (/home/yang/.local/share/mamba/envs/main/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nThe config is here:\n\n```\n{\n  \"log\": true,\n  \"OPENAI_API_KEY\": \"$OPENROUTER_API_KEY\",\n  \"OPENAI_BASE_URL\": \"https://openrouter.ai/api/v1/chat/completions\",\n  \"OPENAI_MODEL\": \"qwen/qwen3-coder\",\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"$OPENROUTER_API_KEY\",\n      \"models\": [\n        \"qwen/qwen-3-coder\",\n        \"openai/gpt-5.1\",\n        \"openai/gpt-5.1-codex\",\n        \"openai/gpt-5.1-codex-mini\",\n        \"google/gemini-3-pro-preview\",\n        \"moonshotai/kimi-k2-0905:exacto\",\n        \"moonshotai/kimi-k2-thinking\",\n        \"deepseek/deepseek-v3.1-terminus:exacto\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2-0905:exacto\",\n    \"background\": \"openrouter,deepseek/deepseek-v3.1-terminus:exacto\",\n    \"think\": \"openrouter,google/gemini-3-pro-preview\",\n    \"longContext\": \"openrouter,openai/gpt-5.1\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"openrouter,moonshotai/kimi-k2-thinking\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1020/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1018",
      "id": 3644837998,
      "node_id": "I_kwDON-_mZc7ZP9Bu",
      "number": 1018,
      "title": "I got the Router working with Gemini",
      "user": {
        "login": "Nubebuster",
        "id": 7793993,
        "node_id": "MDQ6VXNlcjc3OTM5OTM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7793993?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Nubebuster",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 17,
      "created_at": "2025-11-20T00:02:21Z",
      "updated_at": "2025-12-29T14:12:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "~/.claude-code-router/plugins/gemini-cli.js\n\n```js\nconst os = require(\"os\");\nconst path = require(\"path\");\nconst fs = require(\"fs/promises\");\n\n// Auth file paths (only needed for OAuth mode)\nconst OAUTH_FILE = process.env.GOOGLE_APPLICATION_CREDENTIALS;\nconst CLIENT_FILE = process.env.GOOGLE_APPLICATION_CCR_CLIENT_FILE;\nconst TOKEN_FILE = path.join(os.homedir(), \".claude-code-router\", \"gemini_oauth_creds.json\");\n\n// Type enum equivalent in JavaScript for Schema Processing\nconst Type = {\n  TYPE_UNSPECIFIED: \"TYPE_UNSPECIFIED\",\n  STRING: \"STRING\",\n  NUMBER: \"NUMBER\",\n  INTEGER: \"INTEGER\",\n  BOOLEAN: \"BOOLEAN\",\n  ARRAY: \"ARRAY\",\n  OBJECT: \"OBJECT\",\n  NULL: \"NULL\",\n};\n\n/**\n * HELPER: Flatten type arrays to anyOf\n */\nfunction flattenTypeArrayToAnyOf(typeList, resultingSchema) {\n  if (typeList.includes(\"null\")) {\n    resultingSchema[\"nullable\"] = true;\n  }\n  const listWithoutNull = typeList.filter((type) => type !== \"null\");\n\n  if (listWithoutNull.length === 1) {\n    const upperCaseType = listWithoutNull[0].toUpperCase();\n    resultingSchema[\"type\"] = Object.values(Type).includes(upperCaseType)\n      ? upperCaseType\n      : Type.TYPE_UNSPECIFIED;\n  } else {\n    resultingSchema[\"anyOf\"] = [];\n    for (const i of listWithoutNull) {\n      const upperCaseType = i.toUpperCase();\n      resultingSchema[\"anyOf\"].push({\n        type: Object.values(Type).includes(upperCaseType)\n          ? upperCaseType\n          : Type.TYPE_UNSPECIFIED,\n      });\n    }\n  }\n}\n\n/**\n * HELPER: Robust JSON Schema Processor for Gemini\n */\nfunction processJsonSchema(_jsonSchema) {\n  const genAISchema = {};\n  const schemaFieldNames = [\"items\"];\n  const listSchemaFieldNames = [\"anyOf\"];\n  const dictSchemaFieldNames = [\"properties\"];\n\n  if (_jsonSchema[\"type\"] && _jsonSchema[\"anyOf\"]) {\n    const incomingAnyOf = _jsonSchema[\"anyOf\"];\n    if (incomingAnyOf && Array.isArray(incomingAnyOf) && incomingAnyOf.length === 2) {\n      const nullIndex = incomingAnyOf.findIndex(item => item.type === 'null');\n      if (nullIndex !== -1) {\n        genAISchema[\"nullable\"] = true;\n        _jsonSchema = incomingAnyOf[nullIndex === 0 ? 1 : 0];\n      }\n    }\n  }\n\n  if (_jsonSchema[\"type\"] && Array.isArray(_jsonSchema[\"type\"])) {\n    flattenTypeArrayToAnyOf(_jsonSchema[\"type\"], genAISchema);\n  }\n\n  for (const [fieldName, fieldValue] of Object.entries(_jsonSchema)) {\n    if (fieldValue == null) continue;\n\n    if (fieldName === \"type\") {\n      if (fieldValue === \"null\") continue;\n      if (Array.isArray(fieldValue)) continue;\n\n      const upperCaseValue = fieldValue.toUpperCase();\n      genAISchema[\"type\"] = Object.values(Type).includes(upperCaseValue)\n        ? upperCaseValue\n        : Type.TYPE_UNSPECIFIED;\n    } else if (schemaFieldNames.includes(fieldName)) {\n      genAISchema[fieldName] = processJsonSchema(fieldValue);\n    } else if (listSchemaFieldNames.includes(fieldName)) {\n      const listSchemaFieldValue = [];\n      for (const item of fieldValue) {\n        if (item[\"type\"] === \"null\") {\n          genAISchema[\"nullable\"] = true;\n          continue;\n        }\n        listSchemaFieldValue.push(processJsonSchema(item));\n      }\n      genAISchema[fieldName] = listSchemaFieldValue;\n    } else if (dictSchemaFieldNames.includes(fieldName)) {\n      const dictSchemaFieldValue = {};\n      for (const [key, value] of Object.entries(fieldValue)) {\n        dictSchemaFieldValue[key] = processJsonSchema(value);\n      }\n      genAISchema[fieldName] = dictSchemaFieldValue;\n    } else {\n      if (fieldName === \"additionalProperties\" || fieldName === \"$schema\") continue;\n      genAISchema[fieldName] = fieldValue;\n    }\n  }\n  return genAISchema;\n}\n\n/**\n * HELPER: Transform Tool Object\n */\nfunction tTool(tool) {\n  if (tool.functionDeclarations) {\n    for (const functionDeclaration of tool.functionDeclarations) {\n      if (functionDeclaration.parameters) {\n        if (!Object.keys(functionDeclaration.parameters).includes(\"$schema\")) {\n          functionDeclaration.parameters = processJsonSchema(\n            functionDeclaration.parameters\n          );\n        } else {\n          if (!functionDeclaration.parametersJsonSchema) {\n            functionDeclaration.parametersJsonSchema = functionDeclaration.parameters;\n            delete functionDeclaration.parameters;\n          }\n        }\n      }\n    }\n  }\n  return tool;\n}\n\nclass GeminiCLITransformer {\n  constructor(options = {}) {\n    this.name = \"gemini-cli\";\n    this.options = options;\n  }\n\n  loadOAuthCredentials() {\n    try {\n      if (OAUTH_FILE) this.oauth_creds = require(OAUTH_FILE);\n    } catch (e) {\n      this.logger.error ? this.logger.error({ e, file: OAUTH_FILE }, \"OAUTH_FILE load error\") : console.error(\"OAUTH_FILE load error\", e);\n    }\n\n    try {\n      if (CLIENT_FILE) this.client_creds = require(CLIENT_FILE);\n    } catch (e) {\n      this.logger.error ? this.logger.error({ e, file: CLIENT_FILE }, \"CLIENT_FILE load error\") : console.error(\"CLIENT_FILE load error\", e);\n    }\n\n    try {\n      this.token_creds = require(TOKEN_FILE);\n    } catch (e) {\n      // Token file might not exist yet\n    }\n  }\n\n  async transformRequestIn(request, provider) {\n    let authMode;\n    let apiKey;\n    this.logger.debug(provider, \"Prov In\");\n\n    this.logger.debug(request, \"Req In\");\n    // Determine auth mode and key\n    const rawKey = provider.apiKey || process.env.API_KEY;\n    if (rawKey) {\n      apiKey = rawKey.trim();\n      authMode = 'api-key';\n    } else {\n      authMode = 'oauth';\n    }\n\n    // --- Debug Logging ---\n    if (this.options?.debug) {\n      const debugInfo = {\n        authMode: authMode,\n        model: request.model,\n        hasApiKey: !!apiKey\n      };\n\n      if (this.logger.debug) {\n        this.logger.debug(debugInfo, \"Gemini Request In\");\n      } else {\n        console.log(\"[GeminiUniversal] Request Debug:\", JSON.stringify(debugInfo, null, 2));\n      }\n    }\n\n\n    this.logger.debug(\"options: \" + JSON.stringify(this.options));\n\n    // --- Authentication Header Generation ---\n    let headers = {\n      'Content-Type': 'application/json'\n    };\n\n    if (authMode === 'api-key') {\n      if (!apiKey) throw new Error(\"Auth mode is api-key but no key found.\");\n\n      // Removed x-goog-api-key header in favor of query param below\n      // delete headers['x-goog-api-key']; \n\n      // Critical: Explicitly remove Authorization to prevent conflict\n      delete headers['Authorization'];\n      headers['Authorization'] = null;\n    } else {\n      // OAuth Mode: Load credentials if not already loaded\n      if (!this.oauth_creds || !this.client_creds) {\n        this.loadOAuthCredentials();\n      }\n\n      // OAuth Mode checks\n      if (!this.oauth_creds) {\n        throw new Error(\"Missing Google OAuth credentials (GOOGLE_APPLICATION_CREDENTIALS). Set this or an API_KEY.\");\n      }\n      if (!this.client_creds) {\n        throw new Error(\"Missing Google Client credentials (GOOGLE_APPLICATION_CCR_CLIENT_FILE). Set this or an API_KEY.\");\n      }\n\n      // Refresh token if expired\n      if (!this.token_creds || this.token_creds.expiry_date < Date.now()) {\n        await this.refreshToken(this.oauth_creds);\n      }\n\n      headers['Authorization'] = `Bearer ${this.token_creds.access_token}`;\n    }\n\n    // --- Tool Transformation ---\n    const tools = [];\n    const functionDeclarations = request.tools\n      ?.filter((tool) => tool.function.name !== \"web_search\")\n      ?.map((tool) => {\n        return {\n          name: tool.function.name,\n          description: tool.function.description,\n          parametersJsonSchema: tool.function.parameters,\n        };\n      });\n\n    if (functionDeclarations?.length) {\n      tools.push(tTool({ functionDeclarations }));\n    }\n\n    // Handle Google Search Grounding\n    const webSearch = request.tools?.find(\n      (tool) => tool.function.name === \"web_search\"\n    );\n    if (webSearch) {\n      tools.push({ googleSearch: {} });\n    }\n\n    // --- Message Transformation ---\n    const contents = request.messages.map((message) => {\n      let role = message.role;\n      if (role === \"assistant\") role = \"model\";\n      else if ([\"user\", \"system\", \"tool\"].includes(role)) role = \"user\";\n      else role = \"user\";\n\n      const parts = [];\n\n      if (typeof message.content === \"string\") {\n        parts.push({ text: message.content });\n      } else if (Array.isArray(message.content)) {\n        parts.push(\n          ...message.content.map((content) => {\n            if (content.type === \"text\") {\n              return { text: content.text || \"\" };\n            }\n            if (content.type === \"image_url\") {\n              if (content.image_url.url.startsWith(\"http\")) {\n                return {\n                  file_data: {\n                    mime_type: content.media_type || \"image/jpeg\",\n                    file_uri: content.image_url.url,\n                  },\n                };\n              } else {\n                const base64Data = content.image_url.url.includes(\"base64,\")\n                  ? content.image_url.url.split(\"base64,\")[1]\n                  : content.image_url.url;\n                return {\n                  inlineData: {\n                    mime_type: content.media_type || \"image/jpeg\",\n                    data: base64Data,\n                  },\n                };\n              }\n            }\n            return null;\n          }).filter(Boolean)\n        );\n      }\n\n      if (Array.isArray(message.tool_calls)) {\n        parts.push(\n          ...message.tool_calls.map((toolCall) => ({\n            functionCall: {\n              id: toolCall.id || `tool_${Math.random().toString(36).substring(2, 15)}`,\n              name: toolCall.function.name,\n              args: JSON.parse(toolCall.function.arguments || \"{}\"),\n            },\n          }))\n        );\n      }\n\n      return { role, parts };\n    });\n\n    const rawModel = request.model;\n    const model = (rawModel && rawModel.trim().length > 0) ? rawModel.trim() : 'gemini-2.5-flash';\n\n    let baseUrl = provider.api_base_url || 'https://generativelanguage.googleapis.com/v1beta/models/';\n    if (!baseUrl.endsWith('/')) {\n      baseUrl += '/';\n    }\n\n    // Construct URL\n    const method = request.stream ? 'streamGenerateContent?alt=sse' : 'generateContent';\n    const fullUrlString = `${baseUrl}${model}:${method}`;\n\n    const url = new URL(fullUrlString);\n\n    // CRITICAL FIX: Append API Key as query param if in API Key mode\n    if (authMode === 'api-key') {\n      url.searchParams.append('key', apiKey);\n    }\n\n    // Debug log to catch URL issues\n    if (this.options.debug) {\n      // Log URL but redact the key for security in logs\n      const logUrl = new URL(url.toString());\n      if (logUrl.searchParams.has('key')) {\n        logUrl.searchParams.set('key', 'REDACTED');\n      }\n      console.log(\"[GeminiUniversal] Constructed URL:\", logUrl.toString());\n    }\n\n    return {\n      body: {\n        contents,\n        tools: tools.length ? tools : undefined,\n        generationConfig: {\n          temperature: request.temperature,\n          topP: request.top_p,\n          maxOutputTokens: request.max_tokens,\n        }\n      },\n      config: {\n        url,\n        headers,\n        method: 'POST'\n      },\n    };\n  }\n\n  async transformResponseOut(response) {\n    const requestUrl = response.url;\n\n    // CASE 1: Standard JSON Response\n    if (response.headers.get(\"Content-Type\")?.includes(\"application/json\")) {\n      let jsonResponse = await response.json();\n\n      if (this.options?.debug) {\n        if (this.logger.debug) this.logger.debug({ jsonResponse }, \"Gemini JSON Response\");\n        else console.log(\"[GeminiUniversal] JSON Response:\", JSON.stringify(jsonResponse, null, 2));\n      }\n\n      if (!response.ok || jsonResponse.error) {\n        const errorMsg = jsonResponse.error?.message || response.statusText;\n        throw new Error(`Gemini API Error (${response.status}) at ${requestUrl}: ${errorMsg}`);\n      }\n\n      const candidate = jsonResponse.candidates?.[0];\n      if (!candidate) throw new Error(\"No candidates returned from Gemini.\");\n\n      const tool_calls = candidate.content?.parts\n        ?.filter((part) => part.functionCall)\n        ?.map((part) => ({\n          id: `call_${Math.random().toString(36).substring(2, 15)}`,\n          type: \"function\",\n          function: {\n            name: part.functionCall?.name,\n            arguments: JSON.stringify(part.functionCall?.args || {}),\n          },\n        }));\n\n      const res = {\n        id: jsonResponse.responseId,\n        choices: [\n          {\n            finish_reason: candidate.finishReason?.toLowerCase() || \"stop\",\n            index: 0,\n            message: {\n              content: candidate.content?.parts\n                ?.filter((part) => part.text)\n                .map((part) => part.text)\n                .join(\"\\n\") || null,\n              role: \"assistant\",\n              tool_calls: tool_calls?.length > 0 ? tool_calls : undefined,\n            },\n          },\n        ],\n        created: Math.floor(Date.now() / 1000),\n        model: jsonResponse.modelVersion,\n        object: \"chat.completion\",\n        usage: {\n          completion_tokens: jsonResponse.usageMetadata?.candidatesTokenCount || 0,\n          prompt_tokens: jsonResponse.usageMetadata?.promptTokenCount || 0,\n          total_tokens: jsonResponse.usageMetadata?.totalTokenCount || 0,\n        },\n      };\n      return new Response(JSON.stringify(res), {\n        status: 200,\n        headers: { 'Content-Type': 'application/json' }\n      });\n\n      // CASE 2: SSE Streaming Response\n    } else if (response.headers.get(\"Content-Type\")?.includes(\"stream\")) {\n      if (!response.body) return response;\n\n      const decoder = new TextDecoder();\n      const encoder = new TextEncoder();\n\n      const processLine = (line, controller) => {\n        if (line.startsWith(\"data: \")) {\n          const chunkStr = line.slice(6).trim();\n          if (chunkStr && chunkStr !== '[DONE]') {\n\n            if (this.options?.debug && this.logger.debug) {\n              this.logger.debug({ chunkStr }, \"Gemini Stream Chunk\");\n            }\n\n            try {\n              const chunk = JSON.parse(chunkStr);\n              const candidate = chunk.candidates?.[0];\n              if (!candidate) return;\n\n              const tool_calls = candidate.content?.parts\n                ?.filter((part) => part.functionCall)\n                ?.map((part) => ({\n                  id: `call_${Math.random().toString(36).substring(2, 15)}`,\n                  type: 'function',\n                  function: {\n                    name: part.functionCall.name,\n                    arguments: JSON.stringify(part.functionCall.args)\n                  }\n                }));\n\n              const res = {\n                choices: [{\n                  delta: {\n                    role: \"assistant\",\n                    content: candidate.content?.parts\n                      ?.filter((part) => part.text)\n                      ?.map((part) => part.text)\n                      ?.join(\"\\n\"),\n                    tool_calls: tool_calls?.length ? tool_calls : undefined\n                  },\n                  finish_reason: candidate.finishReason?.toLowerCase() || null,\n                  index: 0\n                }],\n                created: Math.floor(Date.now() / 1000),\n                id: chunk.responseId || \"\",\n                model: chunk.modelVersion || \"\",\n                object: \"chat.completion.chunk\",\n                usage: {\n                  completion_tokens: chunk.usageMetadata?.candidatesTokenCount || 0,\n                  prompt_tokens: chunk.usageMetadata?.promptTokenCount || 0,\n                  total_tokens: chunk.usageMetadata?.totalTokenCount || 0,\n                },\n              };\n\n              if (candidate.groundingMetadata?.groundingChunks?.length) {\n                res.choices[0].delta.annotations =\n                  candidate.groundingMetadata.groundingChunks.map(\n                    (groundingChunk, index) => {\n                      const support =\n                        candidate.groundingMetadata?.groundingSupports?.filter(\n                          (item) => item.groundingChunkIndices.includes(index)\n                        );\n                      return {\n                        type: \"url_citation\",\n                        url_citation: {\n                          url: groundingChunk.web.uri,\n                          title: groundingChunk.web.title,\n                          content: support?.[0]?.segment?.text,\n                          start_index: support?.[0]?.segment?.startIndex,\n                          end_index: support?.[0]?.segment?.endIndex,\n                        },\n                      };\n                    }\n                  );\n              }\n\n              controller.enqueue(encoder.encode(`data: ${JSON.stringify(res)}\\n\\n`));\n            } catch (e) {\n              if (this.options?.debug) console.error(\"Gemini stream parse error:\", e);\n            }\n          }\n        }\n      };\n\n      const stream = new ReadableStream({\n        async start(controller) {\n          const reader = response.body.getReader();\n          let buffer = \"\";\n          try {\n            while (true) {\n              const { done, value } = await reader.read();\n              if (done) {\n                if (buffer) processLine(buffer, controller);\n                break;\n              }\n              buffer += decoder.decode(value, { stream: true });\n              const lines = buffer.split(\"\\n\");\n              buffer = lines.pop() || \"\";\n              lines.forEach(line => processLine(line, controller));\n            }\n          } catch (e) { controller.error(e); }\n          finally { controller.close(); }\n        },\n      });\n\n      return new Response(stream, {\n        status: 200,\n        headers: { 'Content-Type': 'text/event-stream' }\n      });\n    }\n\n    return response;\n  }\n\n  refreshToken(oauth_creds) {\n    return fetch(\"https://oauth2.googleapis.com/token\", {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify({\n        client_id: this.client_creds.installed.client_id,\n        client_secret: this.client_creds.installed.client_secret,\n        refresh_token: oauth_creds.refresh_token,\n        grant_type: \"refresh_token\",\n      }),\n    })\n      .then((response) => response.json())\n      .then(async (data) => {\n        data.expiry_date = new Date().getTime() + data.expires_in * 1000 - 60000;\n        this.token_creds = data;\n        try {\n          await fs.writeFile(TOKEN_FILE, JSON.stringify(data, null, 2));\n        } catch (e) {\n          if (this.options?.debug) console.error(\"Failed to save refreshed token:\", e);\n        }\n      });\n  }\n}\n\nmodule.exports = GeminiCLITransformer;\n\n```\n\nIt supports gcloud tokens but that was becuase I couldn't get API key working. But it works now so recommended example setup\n\nconfig.json\n\n```json\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [\n    {\n      \"path\": \"/home/mark/.claude-code-router/plugins/gemini-cli.js\",\n      \"options\": {\n        \"project\": \"ccr\",\n        \"debug\": true\n      }\n    }\n  ],\n  \"Providers\": [\n    {\n      \"name\": \"gpt-oss-local\",\n      \"api_base_url\": \"http://127.0.0.1:8000/v1/chat/completions\",\n      \"api_key\": \"dummy\",\n      \"models\": [\"gpt-oss-20b-ccr\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"model_params\",\n            {\n              \"temperature\": 0.2,\n              \"top_p\": 0.1,\n              \"reasoning_effort\": \"high\"\n            }\n          ]\n        ]\n      }\n    },\n    {\n      \"name\": \"gemini-cli\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"get one at https://aistudio.google.com/app/api-keys\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\", \"gemini-3-pro-preview\"],\n      \"transformer\": {\n        \"use\": [\"gemini-cli\"]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": [\n        {\n          \"type\": \"script\",\n          \"icon\": \"📁\",\n          \"text\": \"{{workDirName}}\",\n          \"color\": \"bright_blue\",\n          \"scriptPath\": \"/home/mark/Scripts/agentsettings/ccr/statusline/pwd.js\"\n        },\n        {\n          \"type\": \"gitBranch\",\n          \"icon\": \"🌐\",\n          \"text\": \"{{gitBranch}}\",\n          \"color\": \"bright_green\"\n        },\n        {\n          \"type\": \"model\",\n          \"icon\": \"🧠\",\n          \"text\": \"{{model}}\",\n          \"color\": \"bright_yellow\"\n        },\n        {\n          \"type\": \"usage\",\n          \"icon\": \"💳\",\n          \"text\": \"{{inputTokens}} ▲▼ {{outputTokens}}\",\n          \"color\": \"bright_magenta\"\n        }\n      ]\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"gemini-cli,gemini-2.5-pro\",\n    \"background\": \"gpt-oss-local,gpt-oss-20b-ccr\",\n    \"think\": \"gemini-cli,gemini-3-pro-preview\",\n    \"longContext\": \"gemini-cli,gemini-2.5-flash\",\n    \"longContextThreshold\": 200000,\n    \"webSearch\": \"gemini-cli,gemini-2.5-flash\",\n    \"image\": \"gemini-cli,gemini-2.5-pro\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1018/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1017",
      "id": 3643121357,
      "node_id": "I_kwDON-_mZc7ZJZ7N",
      "number": 1017,
      "title": "网络搜索配置为gemini并不work",
      "user": {
        "login": "Tint0ri",
        "id": 64587482,
        "node_id": "MDQ6VXNlcjY0NTg3NDgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/64587482?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Tint0ri",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-19T14:53:48Z",
      "updated_at": "2025-11-19T14:53:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "按教程配置的：\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"。。。\",\n      \"models\": [\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ],\n        \"gemini-2.5-flash\": {\n          \"use\": [\n            \"gemini\"\n          ]\n        },\n        \"gemini-2.5-pro\": {\n          \"use\": [\n            \"gemini\"\n          ]\n        }\n      }\n    }\n。。。\n    \"webSearch\": \"gemini,gemini-2.5-flash\",\n\nCC中执行webSearch(\" 今日股市大事件\")没有返回，后台相关日志：\n\n{\"level\":30,\"time\":1763563567871,\"pid\":16720,\"hostname\":\"someone-laptop\",\"reqId\":\"req-8\",\"req\":{\"method\":\"POST\",\"url\":\"/v1/messages?beta=true\",\"host\":\"127.0.0.1:3456\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":1469},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1763563567872,\"pid\":16720,\"hostname\":\"someone-laptop\",\"reqId\":\"req-8\",\"data\":{\"model\":\"gemini,gemini-2.5-flash\",\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Perform a web search for the query: 今日股市大事件\",\"cache_control\":{\"type\":\"ephemeral\"}}]}],\"system\":[{\"type\":\"text\",\"text\":\"You are Claude Code, Anthropic's official CLI for Claude.\",\"cache_control\":{\"type\":\"ephemeral\"}},{\"type\":\"text\",\"text\":\"You are an assistant for performing a web search tool use\",\"cache_control\":{\"type\":\"ephemeral\"}}],\"tools\":[{\"type\":\"web_search_20250305\",\"name\":\"web_search\",\"max_uses\":8}],\"metadata\":{\"user_id\":\"user_。。。account__session_a6cedb67-d489-4cb5-aa90-1cf18b265cae\"},\"max_tokens\":32000,\"thinking\":{\"budget_tokens\":31999,\"type\":\"enabled\"},\"stream\":true},\"type\":\"request body\"}\n{\"level\":50,\"time\":1763563567874,\"pid\":16720,\"hostname\":\"someone-laptop\",\"reqId\":\"req-8\",\"err\":{\"type\":\"TypeError\",\"message\":\"Cannot read properties of undefined (reading 'name')\",\"stack\":\"TypeError: Cannot read properties of undefined (reading 'name')\\n    at C:\\\\Users\\\\someone\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80602:53\\n    at Array.filter (<anonymous>)\\n    at Eo (C:\\\\Users\\\\someone\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80602:28)\\n    at Do.transformRequestIn (C:\\\\Users\\\\someone\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80689:20)\\n    at d0 (C:\\\\Users\\\\someone\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79979:158)\\n    at async f0 (C:\\\\Users\\\\someone\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:50)\"},\"msg\":\"Cannot read properties of undefined (reading 'name')\"}\n{\"level\":30,\"time\":1763563567874,\"pid\":16720,\"hostname\":\"someone-laptop\",\"reqId\":\"req-8\",\"res\":{\"statusCode\":500},\"responseTime\":3.64879999961704,\"msg\":\"request completed\"}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1017/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1016",
      "id": 3642264575,
      "node_id": "I_kwDON-_mZc7ZGIv_",
      "number": 1016,
      "title": "API error: 500",
      "user": {
        "login": "fengjf1995",
        "id": 18639939,
        "node_id": "MDQ6VXNlcjE4NjM5OTM5",
        "avatar_url": "https://avatars.githubusercontent.com/u/18639939?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/fengjf1995",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-19T11:20:50Z",
      "updated_at": "2025-12-06T00:53:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "/model gemini,gemini-2.5-pro\nAPI error: 500 {\"error\":{\"message\":\"Unexpected token '<', \\\"<!doctype \\\"... is not valid JSONSyntaxError: Unexpected token '<',\n    \\\"<!doctype \\\"... is not valid JSON\\n    at JSON.parse (<anonymous>)\\n    at parseJSONFromBytes\n    (node:internal/deps/undici/undici:5738:19)\\n    at successSteps (node:internal/deps/undici/undici:5719:27)\\n    at fullyReadBody\n    (node:internal/deps/undici/undici:4609:9)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at\n    async consumeBody (node:internal/deps/undici/undici:5728:7)\\n    at async bo.transformResponseIn\n    (/Users/fengjianfeng/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80284:15)\\n    at async m0\n     (/Users/fengjianfeng/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80008:46)\\n    at async\n    f0 (/Users/fengjianfeng/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:140)\",\"type\":\"api\n    _error\",\"code\":\"internal_error\"}}\n\n/model openapi,gpt-5-codex\n  ⎿  Model 'openapi,gpt-5-codex' not found\n\n上面两个切换模型报错，下面是json文件，有大佬帮忙看一下问题在哪边不\n\n\njson文件\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk\",\n      \"models\": [\n        \"deepseek-chat\",\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"deepseek\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"deepseek\"\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"openapi\",\n      \"api_base_url\": \"\",\n      \"api_key\": \"cr\",\n      \"models\": [\n        \"gpt-5.1-codex\",\n        \"gpt-5-codex\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"maxcompletiontokens\"\n        ]\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"\",\n      \"api_key\": \"sk\",\n      \"models\": [\n        \"gemini-3-pro-preview\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n    \"background\": \"gemini,gemini-2.5-pro\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-pro\",\n    \"image\": \"gemini,gemini-3-pro-preview\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1016/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1015",
      "id": 3641855963,
      "node_id": "I_kwDON-_mZc7ZEk_b",
      "number": 1015,
      "title": "glm-4.6 报错",
      "user": {
        "login": "ld-2022",
        "id": 107178363,
        "node_id": "U_kgDOBmNpew",
        "avatar_url": "https://avatars.githubusercontent.com/u/107178363?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ld-2022",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-19T09:29:57Z",
      "updated_at": "2025-11-21T06:20:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "[DEBUG] AssistantMessage 文本片段: API Error: 400 {\"error\":{\"message\":\"Error from provider(deepseek,glm-4.6: 400): {\\\"error\\\":{\\\"message\\\":\\\"<400> InternalError.Algo.InvalidParameter: An assistant message with \\\\\\\"tool_calls\\\\\\\" must be followed by tool messages responding to each \\\\\\\"tool_call_id\\\\\\\".\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_parameter_error\\\"},\\\"id\\\":\\\"chatcmpl-e0e81dad-e41e-49ec-8ce9-aff2c83d5b95\\\",\\\"request_id\\\":\\\"e0e81dad-e41e-49ec-8ce9-aff2c83d5b95\\\"}Error: Error from provider(deepseek,glm-4.6: 400): {\\\"error\\\":{\\\"message\\\":\\\"<400> InternalError.Algo.InvalidParameter: An assistant message with \\\\\\\"tool_calls\\\\\\\" must be followed by tool messages responding to each \\\\\\\"tool_call_id\\\\\\\".\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_parameter_error\\\"},\\\"id\\\":\\\"chatcmpl-e0e81dad-e41e-49ec-8ce9-aff2c83d5b95\\\",\\\"request_id\\\":\\\"e0e81dad-e41e-49ec-8ce9-aff2c83d5b95\\\"}\\n at nt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n at p0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n at async f0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1015/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1014",
      "id": 3641400396,
      "node_id": "I_kwDON-_mZc7ZC1xM",
      "number": 1014,
      "title": "Sample config.json",
      "user": {
        "login": "esxr",
        "id": 24644880,
        "node_id": "MDQ6VXNlcjI0NjQ0ODgw",
        "avatar_url": "https://avatars.githubusercontent.com/u/24644880?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/esxr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-19T07:19:41Z",
      "updated_at": "2025-11-19T07:19:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I couldn't find the `sample.config.json`. Could someone verify if this exhaustive `config.json` is valid?\n\nhttps://gist.github.com/esxr/52d895c2d0032ef424892eae5f135692",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1014/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1013",
      "id": 3641305416,
      "node_id": "I_kwDON-_mZc7ZCelI",
      "number": 1013,
      "title": "通过cloudflare 的 ai gateway 代理的gemini 如何配置 config.json",
      "user": {
        "login": "elcnu986",
        "id": 91621147,
        "node_id": "U_kgDOBXYHGw",
        "avatar_url": "https://avatars.githubusercontent.com/u/91621147?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/elcnu986",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-19T06:47:21Z",
      "updated_at": "2025-11-19T06:47:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "通过curl 调用ai gateway 可以成功\n但是在ccr的 config.json 中应该如何配置啊\n\n<img width=\"1729\" height=\"438\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/24003a5a-9c45-4820-b6f5-fbe64dac27a3\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1013/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1010",
      "id": 3636768312,
      "node_id": "I_kwDON-_mZc7YxK44",
      "number": 1010,
      "title": "恢复历史对话时，无法传递query",
      "user": {
        "login": "xubaifuCode",
        "id": 14217592,
        "node_id": "MDQ6VXNlcjE0MjE3NTky",
        "avatar_url": "https://avatars.githubusercontent.com/u/14217592?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xubaifuCode",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-18T08:23:15Z",
      "updated_at": "2025-11-18T08:24:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "例如：`ccr code --resume abc123 \"query\"` 这里的 `query` 没有传进去。\n\n如果用`claude --resume abc123 \"query\"` 就是正常的，能正确传递 `query`\n\n\n❯ ccr -v\nclaude-code-router version: 1.0.68\n❯ claude -v\n2.0.44 (Claude Code)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1010/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1009",
      "id": 3633564490,
      "node_id": "I_kwDON-_mZc7Yk8tK",
      "number": 1009,
      "title": "Web search with OpenRouter's Claude models, isn't working",
      "user": {
        "login": "JoelShepard",
        "id": 57812697,
        "node_id": "MDQ6VXNlcjU3ODEyNjk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/57812697?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JoelShepard",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-17T14:25:51Z",
      "updated_at": "2025-11-30T14:33:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\nI’m having an issue with the web search function in OpenRouter's models, which used to work.\n\nThe issue is that when I configure the router to use the `anthropic/claude-haiku-4.5` model for all tasks and the `anthropic/claude-sonnet-4.5:online` model for web search, the web search function stops working. This setup functioned correctly before, but it stopped working at some point. Unfortunately, I’m not sure which version it last worked on.\n\nThanks in advance!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1009/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1007",
      "id": 3631418666,
      "node_id": "I_kwDON-_mZc7Ycw0q",
      "number": 1007,
      "title": "Feature Request: Add \"same_as_default\" option to Router configuration for batch management",
      "user": {
        "login": "Shu-Ji",
        "id": 1127594,
        "node_id": "MDQ6VXNlcjExMjc1OTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1127594?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Shu-Ji",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-17T01:43:16Z",
      "updated_at": "2025-11-17T01:43:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem Description\nCurrently, in the Claude Code Router's `config.json` file, each scenario/key (e.g., `background`, `think`, `longContext`, `webSearch`) under the `Router` object must be explicitly assigned a specific provider and model string . When users wish to have multiple scenarios use the same model as defined in the `default` scenario, they must manually set the same value for each key. If the user later changes the `default` model, they must remember to update all other corresponding keys individually. This process is inefficient, prone to errors (like forgetting to update a key), and contradicts the DRY (Don't Repeat Yourself) principle, making configuration management cumbersome .\n\n## Proposed Solution\nIntroduce a special value option, tentatively named `\"same_as_default\"`, for the scenario keys within the `Router` configuration object.\n\nWhen a key's value is set to `\"same_as_default\"`, the Claude Code Router's routing logic should dynamically resolve it to use the current value of the `default` key for that request.\n\nThis approach provides a significant usability improvement. Users can simply change the `default` value, and all scenarios configured with `\"same_as_default\"` will automatically inherit the change, achieving the \"one-click modification\" goal.\n\n## Example Configuration (After Change)\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"$DEEPSEEK_API_KEY\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"]\n    },\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"$OPENROUTER_API_KEY\",\n      \"models\": [\"anthropic/claude-3.5-sonnet\", \"google/gemini-2.5-pro-preview\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-chat\",\n    \"background\": \"same_as_default\",\n    \"think\": \"same_as_default\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"same_as_default\"\n  }\n}\n```\nIn this example, `background`, `think`, and `webSearch` are set to inherit from `default`. If the user changes `default` to `\"openrouter,anthropic/claude-3.5-sonnet\"`, these three scenarios will automatically use the new model, while `longContext` retains its specific setting .\n\n## Expected Behavior\n1.  **Backward Compatibility:** This change must be fully backward compatible. Existing configuration files where all scenarios have explicit model strings should continue to work without any modification.\n2.  **Resolution Logic:** During configuration loading or at the time of routing decision-making, if a scenario's value is `\"same_as_default\"`, the router should resolve it to the current value of the `Router.default` key .\n3.  **Error Handling:** If the `default` key itself is misconfigured or empty, attempting to resolve a `\"same_as_default\"` reference should result in a clear and informative error message.\n\n## Additional Context\nClaude Code Router already supports flexible multi-model routing . This feature is a natural extension to the existing configuration system, significantly enhancing the project's usability and maintainability, especially for users who need centralized model management or frequently switch between different model sets.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1007/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1005",
      "id": 3630074545,
      "node_id": "I_kwDON-_mZc7YXoqx",
      "number": 1005,
      "title": "how to used glm reasoning",
      "user": {
        "login": "tjengbudi",
        "id": 3039807,
        "node_id": "MDQ6VXNlcjMwMzk4MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3039807?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tjengbudi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-11-16T06:43:21Z",
      "updated_at": "2025-12-05T14:25:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "hello\ni read your article https://github.com/musistudio/claude-code-router/blob/main/blog/en/glm-4.6-supports-reasoning.md\n\nhow we can used it? \n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1005/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1004",
      "id": 3629425278,
      "node_id": "I_kwDON-_mZc7YVKJ-",
      "number": 1004,
      "title": "add Zhipu (hosted on z.ai) template",
      "user": {
        "login": "tribbloid",
        "id": 3441413,
        "node_id": "MDQ6VXNlcjM0NDE0MTM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3441413?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tribbloid",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-15T23:21:56Z",
      "updated_at": "2025-11-21T17:27:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "when configuring GLM 4.6 wtih all default settings from the template, I got the following error\n\n<img width=\"1093\" height=\"269\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/55e92392-1393-4c2a-8d64-01ec580c5e59\" />\n\n(in text)\n\n```\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(智谱,glm-4.6: 400):\n    {\\\"error\\\":{\\\"code\\\":\\\"1214\\\",\\\"message\\\":\\\"tools[0].type:type cannot be empty.\\\"}}Error: Error from\n    provider(智谱,glm-4.6: 400): {\\\"error\\\":{\\\"code\\\":\\\"1214\\\",\\\"message\\\":\\\"tools[0].type:type cannot be empty.\\\"}}\\n\n      at nt\n    (C:\\\\Users\\\\pengc\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79940:11)\\n\n     at p0\n    (C:\\\\Users\\\\pengc\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79998:11)\\n\n     at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\\n    at async f0\n    (C:\\\\Users\\\\pengc\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79965:96)\",\"ty\n    pe\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nthis revealed at least 2 design flaws:\n\n- error stacktrace still uses escaped JSON string which is very hard to read\n- GLM 4.6 integration is broken",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1004/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1003",
      "id": 3629149413,
      "node_id": "I_kwDON-_mZc7YUGzl",
      "number": 1003,
      "title": "[Bug] Always get \"401 Invalid API key\" on Windows despite correct configuration and environment",
      "user": {
        "login": "wsk3373",
        "id": 34394612,
        "node_id": "MDQ6VXNlcjM0Mzk0NjEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/34394612?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wsk3373",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-15T19:38:39Z",
      "updated_at": "2026-01-04T05:12:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, I'm experiencing a persistent \"401 Invalid API key\" error when trying to use a provider (like DeepSeek). I have confirmed that this is not a configuration or environment issue on my side.\n**My Environment:**\nOS: Windows\nTerminal: PowerShell with Conda (base environment)\nclaude-code-router Version: v2.0.42\n**My Configuration (ccr.config.json):**\ncode\nJSON\n// 在这里粘贴您完整的 JSON 配置文件\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"info\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"srthghc\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n\n  \"Router\": {\n    \"default\": \"deepseek/deepseek-chat\",\n    \"background\": \"deepseek/deepseek-chat\",\n    \"think\": \"deepseek/deepseek-chat\",\n    \"longContext\": \"qwen/qwen3-235b-a22b-thinking-2507\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"deepseek/deepseek-chat\",\n    \"image\": \"\"\n  },\n\n  \"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"powerline\",\n    \"powerline\": {\n      \"modules\": [\"modelName\", \"route\", \"tokensUsed\"]\n    }\n  },\n\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com\",\n      \"api_key\": \"s21212c\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"]\n    },\n    {\n      \"name\": \"qwen\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"sk-ae1\",\n      \"models\": [\"qwen3-coder-plus\", \"qwen3-235b-a22b-thinking-2507\"]\n    },\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:latest\", \"llama3.1:8b\"]\n    },\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\",\n        \"google/gemini-2.5-pro-preview\"\n      ]\n    }\n  ],\n\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n**Troubleshooting Steps Taken:**\nMy DeepSeek API key is 100% valid. I can call the API successfully using a simple PowerShell script.\nI have disabled the proxy by setting \"PROXY_URL\": \"\".\nThe program correctly reads my config file, because it shows my custom model \"deepseek-chat\" in the /model list.\nMost importantly, I found and permanently removed a conflicting environment variable (CF_API_KEY). My environment is now clean and only contains the correct DEEPSEEK_API_KEY, but the 401 error still occurs.\n**Conclusion:**\nEven with a valid key, correct config file, no proxy, and a clean environment, the application still sends an invalid key to the API. This strongly suggests a potential bug within the application itself where it fails to use the provided API key.\nI can provide any further information needed. Thank you!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1003/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1002",
      "id": 3628243155,
      "node_id": "I_kwDON-_mZc7YQpjT",
      "number": 1002,
      "title": "macos ccr not found",
      "user": {
        "login": "NigelxxY",
        "id": 15921754,
        "node_id": "MDQ6VXNlcjE1OTIxNzU0",
        "avatar_url": "https://avatars.githubusercontent.com/u/15921754?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NigelxxY",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-15T07:12:05Z",
      "updated_at": "2025-11-25T03:22:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "after install claude code router by npm. use `ccr` command in terminal. get this error message.\n\n<img width=\"1412\" height=\"294\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/cd75238e-6414-4e08-97bb-e6679d6d1800\" />\n\n(base) xuxiaoyang@U-2M3H749C-2057 ~ % node -v\nv24.11.1\n(base) xuxiaoyang@U-2M3H749C-2057 ~ % npm -v\n11.6.2\n(base) xuxiaoyang@U-2M3H749C-2057 ~ % npm install -g @musistudio/claude-code-router\n\nnpm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead\n\nchanged 189 packages in 15s\n\n54 packages are looking for funding\n  run `npm fund` for details\n(base) xuxiaoyang@U-2M3H749C-2057 ~ % ccr\nzsh: command not found: ccr\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1002/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1001",
      "id": 3627971554,
      "node_id": "I_kwDON-_mZc7YPnPi",
      "number": 1001,
      "title": "使用非 claude的模型 无法正常读取pdf内容",
      "user": {
        "login": "PanAndy",
        "id": 15311784,
        "node_id": "MDQ6VXNlcjE1MzExNzg0",
        "avatar_url": "https://avatars.githubusercontent.com/u/15311784?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PanAndy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-15T03:58:28Z",
      "updated_at": "2025-11-15T03:58:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "相同的命令用iflow-cli是能正常读的， claude code输出的内容都不知道是哪儿来的\nclaude code + glm-4.6\n<img width=\"1025\" height=\"644\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f5dc2407-da4f-4473-94eb-4927da6ed3db\" />\n\niflow-cli\n<img width=\"991\" height=\"467\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/98a386d7-c664-466f-9e7a-b4723b8bb60d\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1001/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1000",
      "id": 3624698065,
      "node_id": "I_kwDON-_mZc7YDIDR",
      "number": 1000,
      "title": "500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed",
      "user": {
        "login": "z00879244",
        "id": 168498610,
        "node_id": "U_kgDOCgsVsg",
        "avatar_url": "https://avatars.githubusercontent.com/u/168498610?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/z00879244",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-11-14T09:09:25Z",
      "updated_at": "2026-02-07T15:05:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr code一直报 500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\n\n参考了网上其他人的方法，有的说要配置proxy_url，有的说去掉proxy_url，我都试了但都没用。\n\n通过curl deepseek API是正常的，但是ccr code就不行\n\n请问这到底是什么原因？要怎么解决呢？\n<img width=\"843\" height=\"329\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d99a7767-c943-408a-9a5c-eab9a182dae7\" />\n\n\nconfig.json 是zcf自动生成的，如下：\n<img width=\"472\" height=\"590\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a2e94c38-974c-458c-abac-8755d952f4bd\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/1000/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/997",
      "id": 3620975529,
      "node_id": "I_kwDON-_mZc7X07Op",
      "number": 997,
      "title": "ccr config.json配置deepseek，但是不生效，用的还是默认Sonnet模型",
      "user": {
        "login": "z00879244",
        "id": 168498610,
        "node_id": "U_kgDOCgsVsg",
        "avatar_url": "https://avatars.githubusercontent.com/u/168498610?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/z00879244",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-11-13T12:16:43Z",
      "updated_at": "2025-11-20T05:15:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr config.json配置deepseek后，运行了ccr restart，然后ccr code，但是配置不生效，用的还是默认Sonnet模型，/model里也选不了deepseek。请问大家，怎么才能解决？\n\n/status 显示结果：\n<img width=\"515\" height=\"430\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/735e50ca-33fd-434b-9a3d-80776108499c\" />\n\nconfig.json 是zcf自动生成的，如下：\n\n<img width=\"472\" height=\"590\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c4d35590-5275-4806-90fb-ee3e59dbc397\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/997/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/996",
      "id": 3619789106,
      "node_id": "I_kwDON-_mZc7XwZky",
      "number": 996,
      "title": "能否整理一份完整的配置文档，以及如何定制 transformer ，这样才具有扩展性，目前这工具我没用成过。文档也说得不清不楚",
      "user": {
        "login": "dehengxu",
        "id": 193302,
        "node_id": "MDQ6VXNlcjE5MzMwMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/193302?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dehengxu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-13T06:57:14Z",
      "updated_at": "2025-11-13T06:57:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/996/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/995",
      "id": 3619213360,
      "node_id": "I_kwDON-_mZc7XuNAw",
      "number": 995,
      "title": "请问如何增加配置",
      "user": {
        "login": "NathanKong76",
        "id": 61924969,
        "node_id": "MDQ6VXNlcjYxOTI0OTY5",
        "avatar_url": "https://avatars.githubusercontent.com/u/61924969?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NathanKong76",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-13T03:24:43Z",
      "updated_at": "2025-11-13T21:49:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "比如加入bypass。选择shell为pwsh。看着这个ccr code的启动模式是覆盖配置文件。我找了很久也没找到哪里可以手动编辑配置文件（claude配置文件，不是ccr配置文件）。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/995/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/994",
      "id": 3619178476,
      "node_id": "I_kwDON-_mZc7XuEfs",
      "number": 994,
      "title": "Unable to switch the model to `openrouter,openai/gpt-5`",
      "user": {
        "login": "jayhan94",
        "id": 194190421,
        "node_id": "U_kgDOC5McVQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/194190421?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jayhan94",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-13T03:10:34Z",
      "updated_at": "2025-11-13T03:14:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```Bash\n> /model openrouter,openai/gpt-5 \n  ⎿ API error: 400 {\"error\":{\"message\":\"Error from provider(openrouter,openai/gpt-5: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider \n    returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Invalid \n    'max_output_tokens': integer below minimum value. Expected a value >= 16, but got 1 instead.\\\\\\\",\\\\n    \\\\\\\"type\\\\\\\": \n    \\\\\\\"invalid_request_error\\\\\\\",\\\\n    \\\\\\\"param\\\\\\\": \\\\\\\"max_output_tokens\\\\\\\",\\\\n    \\\\\\\"code\\\\\\\": \n    \\\\\\\"integer_below_min_value\\\\\\\"\\\\n  \n    }\\\\n}\\\",\\\"provider_name\\\":\\\"OpenAI\\\"}},\\\"user_id\\\":\\\"user_xxxx\\\"}Error: Error from \n    provider(openrouter,openai/gpt-5: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned \n    error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Invalid 'max_output_tokens': \n    integer below minimum value. Expected a value >= 16, but got 1 instead.\\\\\\\",\\\\n    \\\\\\\"type\\\\\\\": \n    \\\\\\\"invalid_request_error\\\\\\\",\\\\n    \\\\\\\"param\\\\\\\": \\\\\\\"max_output_tokens\\\\\\\",\\\\n    \\\\\\\"code\\\\\\\": \n    \\\\\\\"integer_below_min_value\\\\\\\"\\\\n  \n    }\\\\n}\\\",\\\"provider_name\\\":\\\"OpenAI\\\"}},\\\"user_id\\\":\\\"user_xxxx\\\"}\\n    at nt \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at p0 \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async f0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/\n    cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/994/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/993",
      "id": 3618390891,
      "node_id": "I_kwDON-_mZc7XrENr",
      "number": 993,
      "title": "`500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'image')TypeError: Cannot read properties of undefined `",
      "user": {
        "login": "GangGreenTemperTatum",
        "id": 104169244,
        "node_id": "U_kgDOBjV_HA",
        "avatar_url": "https://avatars.githubusercontent.com/u/104169244?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/GangGreenTemperTatum",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-12T22:03:37Z",
      "updated_at": "2025-11-22T07:49:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "error when sending any input after launching `ccr code`:\n```\nccr code\n(node:94413) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.\n(Use `node --trace-deprecation ...` to show where the warning was created)\n\n ▐▛███▜▌   Claude Code v2.0.37\n▝▜█████▛▘  Sonnet 4.5 · API Usage Billing\n  ▘▘ ▝▝    /Users/ads/git/web-agent-poc\n\n\n500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'image')TypeError: Cannot read properties of undefined \n     (reading 'image')\\n    at ImageAgent.shouldHandle \n     (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:84934:24)\\n    at Object.<anonymous> \n     (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:85247:19)\\n    at hookIterator \n     (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3798:14)\\n    at next \n     (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3666:22)\\n    at handleResolve \n     (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3676:11)\\n    at process.processTicksAndRejections \n     (node:internal/process/task_queues:105:5)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}\n```\n\ni tried an uninstall, followed by fresh install via `npx` on mac os but no luck\nsample config code which i attempted to trim and isolate using only certain blocks, but no luck, worked for me in the past and sourced from #245, im so sorry if im missing something obvious here\n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"groq\",\n      \"api_base_url\": \"https://api.groq.com/openai/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"moonshotai/kimi-k2-instruct\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384\n            }\n          ],\n          \"groq\"\n        ]\n      }\n    },\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"@preset/kimi\",\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\",\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 0\n            }\n          ]\n        ]\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ]\n}\n```\n\nthank you!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/993/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/992",
      "id": 3617513514,
      "node_id": "I_kwDON-_mZc7XnuAq",
      "number": 992,
      "title": "Agentrouter.org with CCR",
      "user": {
        "login": "upup666",
        "id": 44474555,
        "node_id": "MDQ6VXNlcjQ0NDc0NTU1",
        "avatar_url": "https://avatars.githubusercontent.com/u/44474555?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/upup666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-12T17:27:35Z",
      "updated_at": "2025-11-13T03:12:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Cant configure it everytime new errors;(",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/992/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/991",
      "id": 3615167285,
      "node_id": "I_kwDON-_mZc7XexM1",
      "number": 991,
      "title": "kimi for coding配置问题",
      "user": {
        "login": "aplus42",
        "id": 1201865,
        "node_id": "MDQ6VXNlcjEyMDE4NjU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1201865?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aplus42",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 21,
      "created_at": "2025-11-12T06:29:37Z",
      "updated_at": "2025-11-23T07:20:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置后报错：\nAPI Error: 404 {\"error\":{\"message\":\"Error from provider(kimi For\n    Coding,kimi-for-coding: 404): {\\\"error\\\":{\\\"message\\\":\\\"The requested\n    resource was not found\\\",\\\"type\\\":\\\"resource_not_found_error\\\"}}Error: Error\n     from provider(kimi For Coding,kimi-for-coding: 404):\n    {\\\"error\\\":{\\\"message\\\":\\\"The requested resource was not\n    found\\\",\\\"type\\\":\\\"resource_not_found_error\\\"}}\\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/991/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/989",
      "id": 3612716205,
      "node_id": "I_kwDON-_mZc7XVayt",
      "number": 989,
      "title": "升级claude code 2.xx后，一直报错",
      "user": {
        "login": "xie-yongfeng",
        "id": 90496623,
        "node_id": "MDQ6VXNlcjkwNDk2NjIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/90496623?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xie-yongfeng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-11T15:10:08Z",
      "updated_at": "2025-11-11T15:10:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "升级claude code 2.xx后，claude日志一直报错，，控制台也是卡着，有一直问题的兄弟嘛\n\n<img width=\"979\" height=\"512\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a3ded867-6ec7-4797-9ece-63a6de9cd39c\" />\n\n`[ERROR] SyntaxError: SyntaxError: Expected property name or '}' in JSON at position 1 (line 1 column 2)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at kQQ (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:887:10079)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n[DEBUG] Stream started - received first chunk\n[DEBUG] executePreToolHooks called for tool: Task\n[DEBUG] Getting matching hook commands for PreToolUse with query: Task\n[DEBUG] Found 0 hook matchers in settings\n[DEBUG] Matched 0 unique hooks for query \"Task\" (0 before deduplication)\n[DEBUG] Skills and commands included in Skill tool:\n[DEBUG] Slash commands included in SlashCommand tool:\n[DEBUG] Stream started - received first chunk\n[ERROR] SyntaxError: SyntaxError: Unexpected non-whitespace character after JSON at position 59 (line 1 column 60)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:224\n    at Array.map (<anonymous>)\n    at N00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:51)\n    at Qs2 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:13575)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:8933\n    at async w00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:1970)\n[DEBUG] Skills and commands included in Skill tool:\n[DEBUG] Slash commands included in SlashCommand tool:\n[DEBUG] Stream started - received first chunk\n[ERROR] SyntaxError: SyntaxError: Unexpected non-whitespace character after JSON at position 59 (line 1 column 60)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:224\n    at Array.map (<anonymous>)\n    at N00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:51)\n    at Qs2 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:13575)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:8933\n    at async w00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:1970)\n[DEBUG] Skills and commands included in Skill tool:\n[DEBUG] Slash commands included in SlashCommand tool:\n[DEBUG] Stream started - received first chunk\n[ERROR] SyntaxError: SyntaxError: Unexpected non-whitespace character after JSON at position 59 (line 1 column 60)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:224\n    at Array.map (<anonymous>)\n    at N00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:51)\n    at Qs2 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:13575)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:8933\n    at async w00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:1970)\n[DEBUG] Skills and commands included in Skill tool:\n[DEBUG] Slash commands included in SlashCommand tool:\n[DEBUG] Stream started - received first chunk\n[ERROR] SyntaxError: SyntaxError: Unexpected non-whitespace character after JSON at position 56 (line 1 column 57)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:224\n    at Array.map (<anonymous>)\n    at N00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:51)\n    at Qs2 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:13575)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:8933\n    at async w00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:1970)\n[DEBUG] Skills and commands included in Skill tool:\n[DEBUG] Slash commands included in SlashCommand tool:\n[DEBUG] Stream started - received first chunk\n[ERROR] SyntaxError: SyntaxError: Unexpected non-whitespace character after JSON at position 59 (line 1 column 60)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:224\n    at Array.map (<anonymous>)\n    at N00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:51)\n    at Qs2 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:13575)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:8933\n    at async w00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:1970)\n[DEBUG] Skills and commands included in Skill tool:\n[DEBUG] Slash commands included in SlashCommand tool:\n[DEBUG] Stream started - received first chunk\n[ERROR] SyntaxError: SyntaxError: Unexpected non-whitespace character after JSON at position 56 (line 1 column 57)\n    at JSON.parse (<anonymous>)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:89:708\n    at Q (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:8:15070)\n    at file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:224\n    at Array.map (<anonymous>)\n    at N00 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3695:51)\n    at Qs2 (file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:13575)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///C:/Users/ASUS/AppData/Roaming/npm/node_modules/@anthropic-ai/claude-code/cli.js:3534:8933\n    at async w00 (file:///C:/Users/ASUS/AppData/Roaming/npm/`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/989/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/988",
      "id": 3607631634,
      "node_id": "I_kwDON-_mZc7XCBcS",
      "number": 988,
      "title": "ccr配置claude-sonnet-4无法修改代码",
      "user": {
        "login": "sunbigdog",
        "id": 51528502,
        "node_id": "MDQ6VXNlcjUxNTI4NTAy",
        "avatar_url": "https://avatars.githubusercontent.com/u/51528502?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sunbigdog",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-10T11:42:29Z",
      "updated_at": "2025-11-10T11:43:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用官方接口，配置文件如下\n{\n\t\"LOG\": false,\n\t\"LOG_LEVEL\": \"debug\",\n\t\"CLAUDE_PATH\": \"\",\n\t\"HOST\": \"127.0.0.1\",\n\t\"PORT\": 3456,\n\t\"APIKEY\": \"\",\n\t\"API_TIMEOUT_MS\": \"600000\",\n\t\"PROXY_URL\": \"\",\n\t\"transformers\": [],\n\t\"Providers\": [{\n\t\t\"name\": \"claude-4-XX,\n\t\t\"api_base_url\": \"https://XXXXX/api/v1/chat/completions\",\n\t\t\"api_key\": \"sk-123456\",\n\t\t\"models\": [\n\t\t\t\"claude-sonnet-4\"\n\t\t]\n\t}],\n\t\"StatusLine\": {\n\t\t\"enabled\": true,\n\t\t\"currentStyle\": \"default\",\n\t\t\"default\": {\n\t\t\t\"modules\": [{\n\t\t\t\t\"type\": \"model\",\n\t\t\t\t\"icon\": \"🤖\",\n\t\t\t\t\"text\": \"{{model}}\",\n\t\t\t\t\"color\": \"bright_yellow\"\n\t\t\t}]\n\t\t},\n\t\t\"powerline\": {\n\t\t\t\"modules\": []\n\t\t}\n\t},\n\t\"Router\": {\n\t\t\"default\": \"claude-4-XX,claude-sonnet-4\",\n\t\t\"background\": \"claude-4-XX,claude-sonnet-4\",\n\t\t\"think\": \"claude-4-XX,claude-sonnet-4\",\n\t\t\"longContext\": \"claude-4-XX,claude-sonnet-4\",\n\t\t\"longContextThreshold\": 60000\n\t}\n}\n配置后无法修改代码，仅能输出结果",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/988/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/986",
      "id": 3605827821,
      "node_id": "I_kwDON-_mZc7W7JDt",
      "number": 986,
      "title": "can we run 2 instance of ccr?",
      "user": {
        "login": "tjengbudi",
        "id": 3039807,
        "node_id": "MDQ6VXNlcjMwMzk4MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3039807?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tjengbudi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-11-10T02:17:14Z",
      "updated_at": "2025-11-20T11:41:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "hello\ni need using 2 model running in the same time. is there possible with ccr? if yes how to do it?\nccr code will replace api to localhost and port. but it will set to default. if i have 2 instance i have set in manual. i might understand this\nbut running 2 instant still not know how to do it and can it works?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/986/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/985",
      "id": 3605755090,
      "node_id": "I_kwDON-_mZc7W63TS",
      "number": 985,
      "title": "Unrecognized request argument supplied: reasoning",
      "user": {
        "login": "tarun-veeraraghavan-mv",
        "id": 193462733,
        "node_id": "U_kgDOC4gBzQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/193462733?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tarun-veeraraghavan-mv",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-10T01:25:16Z",
      "updated_at": "2025-11-10T01:25:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr code\n\n ▐▛███▜▌   Claude Code v2.0.36\n▝▜█████▛▘  Sonnet 4.5 · API Usage Billing\n  ▘▘ ▝▝    /Users/vt_op/Desktop/claude-code\n\n> hl \n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(OpenAI,gpt-4o: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unrecognized request argument supplied: reasoning\\\",\\n    \n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": null,\\n    \\\"code\\\": null\\n  }\\n}Error: Error from provider(OpenAI,gpt-4o: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \n    \\\"Unrecognized request argument supplied: reasoning\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": null,\\n    \\\"code\\\": null\\n  }\\n}\\n    at nt \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at h0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    \n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n##\n\nPls fix this. I am not able to use ccr ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/985/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/984",
      "id": 3604558506,
      "node_id": "I_kwDON-_mZc7W2TKq",
      "number": 984,
      "title": "/model 得到的模型列表还是原生的三个选择",
      "user": {
        "login": "hellojohn233",
        "id": 218703698,
        "node_id": "U_kgDODQknUg",
        "avatar_url": "https://avatars.githubusercontent.com/u/218703698?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hellojohn233",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-09T07:28:59Z",
      "updated_at": "2025-11-15T03:30:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr code\n(node:24820) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.\n(Use `node --trace-deprecation ...` to show where the warning was created)\n\n ▐▛███▜▌   Claude Code v2.0.36\n▝▜█████▛▘  Sonnet 4.5 · API Usage Billing\n  ▘▘ ▝▝    E:\\IsaacLabEureka_old\n\n> /model\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n Select model\n Switch between Claude models. Applies to this session and future Claude Code sessions. For other/previous model names,\n  specify with --model.\n\n > 1. Default (recommended)   Use the default model (currently Sonnet 4.5) · $3/$15 per Mtok √\n   2. Opus                    Legacy: Opus 4.1 for complex tasks · $15/$75 per Mtok\n   3. Haiku                   Haiku 4.5 for simple tasks · $1/$5 per Mtok\n\n Enter to confirm · Esc to exit\n但是/status显示\n/status\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n Settings:  Status   Config   Usage   (tab to cycle)\n\n Version: 2.0.36\n Session ID: ac472d53-fcb3-4fb3-9bfc-04c21d848816\n cwd: E:\\IsaacLabEureka_old\n Auth token: ANTHROPIC_AUTH_TOKEN\n Anthropic base URL: http://127.0.0.1:3456\n\n Model: Default (claude-sonnet-4-5-20250929)\n Memory:\n Setting sources: User settings, Shared project settings, Local, Command line arguments, Enterprise managed policies\n Esc to exit",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/984/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/983",
      "id": 3604263510,
      "node_id": "I_kwDON-_mZc7W1LJW",
      "number": 983,
      "title": "Constant Resource Exhausted Spam regardless of api key validity",
      "user": {
        "login": "cranyy",
        "id": 128929586,
        "node_id": "U_kgDOB69PMg",
        "avatar_url": "https://avatars.githubusercontent.com/u/128929586?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cranyy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-09T00:57:41Z",
      "updated_at": "2025-11-12T06:13:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Since a few days ago, no matter what API key I use for gemini I keep getting -- \n```\n](API Error: 429 {\"error\":{\"message\":\"Error from provider(gemini,undefined: 429): {\\n  \\\"error\\\": {\\n    \\\"code\\\":\n    429,\\n    \\\"message\\\": \\\"You exceeded your current quota, please check your plan and billing details. For more\n    information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current\n    usage, head to: https://ai.dev/usage?tab=rate-limit. \\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\nError:\n    Error from provider(gemini,undefined: 429): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"You exceeded\n    your current quota, please check your plan and billing details. For more information on this error, head to:\n    https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to:\n    https://ai.dev/usage?tab=rate-limit. \\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\n\\n    at nt\n    (/home/cranyy/.nvm/versions/node/v23.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n\n     at h0\n    (/home/cranyy/.nvm/versions/node/v23.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n\n     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0\n    (/home/cranyy/.nvm/versions/node/v23.10.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"ty\n    pe\":\"api_error\",\"code\":\"provider_response_error\"}}))\n```\nKeys that work for gemini CLI magically dont work anymore for ccr code. And literally days ago all was well. I tried 3 different keys, 2 freshly made Tier 1 keys and I still get that.\nHow can I fix this",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/983/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/981",
      "id": 3600036311,
      "node_id": "I_kwDON-_mZc7WlDHX",
      "number": 981,
      "title": "GLM-4.5-air模型，任务会无限循环",
      "user": {
        "login": "pangsg",
        "id": 30644796,
        "node_id": "MDQ6VXNlcjMwNjQ0Nzk2",
        "avatar_url": "https://avatars.githubusercontent.com/u/30644796?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pangsg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-07T12:03:15Z",
      "updated_at": "2025-11-07T12:03:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "当模型生成以下内容，content为空的情况下：\n    {\n      \"role\": \"assistant\",\n      \"content\": \"(no content)\",\n      \"tool_calls\": [\n        {\n          \"id\": \"\",\n          \"type\": \"function\",\n          \"function\": {\n            \"name\": \"TodoWrite\",\n            \"arguments\": \"{\\\"todos\\\":[{\\\"content\\\":\\\"探索项目结构，了解用户相关的实体类和Controller\\\",\\\"status\\\":\\\"pending\\\",\\\"activeForm\\\":\\\"Exploring project structure\\\"},{\\\"content\\\":\\\"查找用户相关的Service类和Mapper接口\\\",\\\"status\\\":\\\"pending\\\",\\\"activeForm\\\":\\\"Finding user service classes\\\"},{\\\"content\\\":\\\"分析用户表结构，确认创建时间字段\\\",\\\"status\\\":\\\"pending\\\",\\\"activeForm\\\":\\\"Analyzing user table structure\\\"},{\\\"content\\\":\\\"在Controller中添加查询账号创建时间的接口\\\",\\\"status\\\":\\\"pending\\\",\\\"activeForm\\\":\\\"Adding API endpoint in Controller\\\"},{\\\"content\\\":\\\"确保所有必要的import语句都已添加\\\",\\\"status\\\":\\\"pending\\\",\\\"activeForm\\\":\\\"Checking imports\\\"}]}\"\n          }\n        }\n      ]\n    }",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/981/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/980",
      "id": 3594657263,
      "node_id": "I_kwDON-_mZc7WQh3v",
      "number": 980,
      "title": "Vertex AI Claude API 兼容性问题",
      "user": {
        "login": "xzcube",
        "id": 74301665,
        "node_id": "MDQ6VXNlcjc0MzAxNjY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/74301665?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xzcube",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-06T08:19:32Z",
      "updated_at": "2025-11-06T08:19:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "项目是不兼容Vertex AI Claude API 的流式响应格式吗？\n我们使用这个项目访问Vertex AI Claude API，、通过ccr code工具发送请求后，返回丢失了一些内容\nVertex AI 原始响应：包含 vertex_event, ping, content_block_start, content_block_delta, content_block_stop\n通过 CCR 后：只剩 message_start, message_delta, message_stop，所有实际内容丢失",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/980/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/979",
      "id": 3594263045,
      "node_id": "I_kwDON-_mZc7WPBoF",
      "number": 979,
      "title": "No tokens in status line when configured",
      "user": {
        "login": "officiallymarky",
        "id": 33408375,
        "node_id": "MDQ6VXNlcjMzNDA4Mzc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/33408375?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/officiallymarky",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-06T06:11:20Z",
      "updated_at": "2025-11-07T08:16:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I added tokens to status line, status line is enabled, but I am not seeing tokens.\n\nGLM 4.5 Air w/ SGLang.\n\nUpdate:\n\nIt actually does work, it just doesn't most of the time.  After doing a few prompts, I'll see it show up.  Many times it just shows 0.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/979/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/978",
      "id": 3594072479,
      "node_id": "I_kwDON-_mZc7WOTGf",
      "number": 978,
      "title": "qwen-cli转换器有点问题",
      "user": {
        "login": "zhangzhenxiang666",
        "id": 153443129,
        "node_id": "U_kgDOCSVbOQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/153443129?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhangzhenxiang666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-06T05:02:48Z",
      "updated_at": "2025-11-06T05:02:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在使用cc创建agent时, 如果使用的是qwen-cli转换器的模型会出现`Expected property name or '}' in JSON at position 2 `这个错误",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/978/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/977",
      "id": 3592172166,
      "node_id": "I_kwDON-_mZc7WHDKG",
      "number": 977,
      "title": "Add support for CCR_HOME environment variable to override default config path",
      "user": {
        "login": "moazbuilds",
        "id": 109697407,
        "node_id": "U_kgDOBonZfw",
        "avatar_url": "https://avatars.githubusercontent.com/u/109697407?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/moazbuilds",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-05T17:48:04Z",
      "updated_at": "2025-11-05T17:48:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\nI’m building an open-source multi-orchestration platform called CodeMachine CLI — you can check it out [[here - CodeMachine CLI](https://github.com/moazbuilds/CodeMachine-CLI)]. It’s still quite new, and I’m integrating CCR as one of the engines within an agentic workflow.\n\nFirst, thank you for your great work on CCR — it’s an excellent project. I have a small request: could you please add support for overriding the CCR home path (currently ~/.claude_code_router) using an environment variable, for example CCR_HOME=?\n\nThis feature would help me isolate configuration files when using CCR inside CodeMachine, similar to how I’ve handled it for Claude Code and other CLI-based coding agents. It would also make it easier to support multiple concurrent CCR instances.\n\nThanks again for your time and effort!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/977/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/975",
      "id": 3581046111,
      "node_id": "I_kwDON-_mZc7Vcm1f",
      "number": 975,
      "title": "ccr start后，光标一直闪。ccr code以后config指定模型没有启动，还是原生模型",
      "user": {
        "login": "skymanbj",
        "id": 14803252,
        "node_id": "MDQ6VXNlcjE0ODAzMjUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/14803252?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/skymanbj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-03T08:25:54Z",
      "updated_at": "2025-11-09T07:15:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "显示：Loaded JSON config from: C:\\Users\\661111\\.claude-code-router\\config.json。光标一直闪，没有提示！！！ccr -v正常",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/975/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/974",
      "id": 3580118219,
      "node_id": "I_kwDON-_mZc7VZETL",
      "number": 974,
      "title": "DeprecationWarning",
      "user": {
        "login": "Banditman74",
        "id": 64268271,
        "node_id": "MDQ6VXNlcjY0MjY4Mjcx",
        "avatar_url": "https://avatars.githubusercontent.com/u/64268271?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Banditman74",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-02T23:49:31Z",
      "updated_at": "2026-02-10T07:57:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I run ccr code I get the message\n`(node:433077) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.\n(Use `node --trace-deprecation ...` to show where the warning was created)`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/974/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/973",
      "id": 3579802222,
      "node_id": "I_kwDON-_mZc7VX3Ju",
      "number": 973,
      "title": "Running \"ccr code\" results in \"error: unknown option '--settings\"",
      "user": {
        "login": "mykola-mmm",
        "id": 44346582,
        "node_id": "MDQ6VXNlcjQ0MzQ2NTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/44346582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mykola-mmm",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-02T18:16:52Z",
      "updated_at": "2025-11-06T15:16:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "hi,\n\nI have installed ccr using the guide from the github, then I have configured some openrouter models with \"ccr ui\"\nnow, when I run \"ccr code\" I get the error \"error: unknown option '--settings'\n\nI would be really grateful is someone would help me or point in the right direction to solve this\n\nsystem: wsl2\nclaude-code-router version: 1.0.64",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/973/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/972",
      "id": 3579729951,
      "node_id": "I_kwDON-_mZc7VXlgf",
      "number": 972,
      "title": "Ollama + Qwen3-coder Error: does not support thinking",
      "user": {
        "login": "jiangsutx",
        "id": 5550015,
        "node_id": "MDQ6VXNlcjU1NTAwMTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5550015?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jiangsutx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-11-02T17:00:47Z",
      "updated_at": "2025-12-12T14:53:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I use Ollama on Macbook Pro, and tried `qwen2.5-coder:1.5b`, as well as `modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest`.\n\nThe content in `~/.claude-code-router/config.json`:\n```json\n{\n  \"PORT\": 3456,\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:1.5b\", \"modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest\",\n    \"background\": \"ollama,modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest\",\n    \"think\": \"ollama,modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest\",\n    \"longContext\": \"ollama,modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"ollama,modelscope.cn/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:latest\"\n  }\n}\n\n```\n\nAnd when start with `ccr code` and type my instructions:\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(ollama,qwen2.5-coder:1.5b: 400):\n    {\\\"error\\\":{\\\"message\\\":\\\"\\\\\\\"qwen2.5-coder:1.5b\\\\\\\" does not support\n    thinking\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\nError: Error from provider(ollama,qwen2.5-coder:1.5b:\n    400): {\\\"error\\\":{\\\"message\\\":\\\"\\\\\\\"qwen2.5-coder:1.5b\\\\\\\" does not support\n    thinking\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\n\\n    at nt\n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at h0\n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 (/opt/homebrew/lib/node_modul\n    es/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nMy question is:\n1. I already knew that I can press Tab and disable thinking mode, and it works.\n2. It is very slow on my M3 Macbook Pro, even for qwen2.5-coder:1.5B. It seems like to restart ollama for each claude code instruction?\n3. What is the best practice? What model is best suit for M3 Macbook Pro + Claude Code?\n\nThanks very much.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/972/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/971",
      "id": 3579649658,
      "node_id": "I_kwDON-_mZc7VXR56",
      "number": 971,
      "title": "zhipu的两个模板端口写反了",
      "user": {
        "login": "uzhao",
        "id": 5157125,
        "node_id": "MDQ6VXNlcjUxNTcxMjU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5157125?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/uzhao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-02T15:26:49Z",
      "updated_at": "2025-11-02T15:26:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "code plan的模板用的端口不使用code plan的流量,会计费.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/971/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/969",
      "id": 3577225090,
      "node_id": "I_kwDON-_mZc7VOB-C",
      "number": 969,
      "title": "gemini all request quote limit",
      "user": {
        "login": "Vincenzoferrara",
        "id": 64591523,
        "node_id": "MDQ6VXNlcjY0NTkxNTIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/64591523?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Vincenzoferrara",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-01T04:50:30Z",
      "updated_at": "2025-11-01T13:37:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "even by sending a simple \"hi\", I get:\n`You exceeded your current quota, please check your plan and \n     billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/usage?tab=rate-limit.`\n\nin the doc:\n\n```\nHow rate limits work\nRate limits are usually measured across three dimensions:\n\nRequests per minute (RPM)\nTokens per minute (input) (TPM)\nRequests per day (RPD)\n```\n\nTier\tQualifications:\n- Free\tUsers in [eligible countries](https://ai.google.dev/gemini-api/docs/available-regions)\n- Tier 1\tBilling account [linked to the project](https://ai.google.dev/gemini-api/docs/billing#enable-cloud-billing)\n- Tier 2\tTotal spend: > $250 and at least 30 days since successful payment\n- Tier 3\tTotal spend: > $1,000 and at least 30 days since successful payment\n\n\nfree-version:\n```\nModel            |RPM\t |TPM         |RPD\nGemini 2.5 Pro   | 2     |125,000     | 50\nGemini 2.5 Flash |10     |250,000     |250\n```\n\n\nThere's no parameter in the exams to limit these requests.\nDepending on your subscription plan, you have more or fewer requests you can make.\n\nIs there a parameter or configuration that works?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/969/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/967",
      "id": 3575239956,
      "node_id": "I_kwDON-_mZc7VGdUU",
      "number": 967,
      "title": "Saw `ccr_inference` using my Claude access without trigger.",
      "user": {
        "login": "hadikhantech",
        "id": 161180162,
        "node_id": "U_kgDOCZtqAg",
        "avatar_url": "https://avatars.githubusercontent.com/u/161180162?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hadikhantech",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-31T14:43:53Z",
      "updated_at": "2025-10-31T14:43:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I was checking my Claude Access tokens from the Claude dashboard.\n\nI had about 4. Was surprised to see `ccr_inference` pop up for ~15mins ago, while I have not used CCR in months.\n\nDid some research, got that it's just a health check?\n\nWhat is this actually and should I/we be worried?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/967/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/965",
      "id": 3574038082,
      "node_id": "I_kwDON-_mZc7VB35C",
      "number": 965,
      "title": "SambaNova's models API",
      "user": {
        "login": "rjuez00",
        "id": 45239701,
        "node_id": "MDQ6VXNlcjQ1MjM5NzAx",
        "avatar_url": "https://avatars.githubusercontent.com/u/45239701?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rjuez00",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-31T09:13:31Z",
      "updated_at": "2025-10-31T09:15:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(sambanova,DeepSeek-V3.1: 400): Unable to tokenize message with status code 400 for model DeepSeek-V3.1: Invalid\n    'content' type. Expected one of: ['str'], got list.\\nError: Error from provider(sambanova,DeepSeek-V3.1: 400): Unable to tokenize message with status code 400 for model\n    DeepSeek-V3.1: Invalid 'content' type. Expected one of: ['str'], got list.\\n\\n    at nt (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n\n        at h0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:105:5)\\n    at async l0\n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nHas anyone else gotten this error? I have tried all configurations but I cannot make it work.\n\n\nThis is my configuration\n```\n{\n    \"Providers\": [\n        {\n            \"name\": \"sambanova\",\n            \"api_base_url\": \"https://api.sambanova.ai/v1/chat/completions\",\n            \"api_key\": \"<API_KEY>\",\n            \"models\": [\n                \"DeepSeek-V3.1\"\n            ],\n            \"transformer\": {\n                \"use\": [\n                    [\n                        \"maxtoken\",\n                        {\n                            \"max_tokens\": 65536\n                        }\n                    ],\n                    \"enhancetool\"\n                ]\n            }\n        }\n    ],\n    \"Router\": {\n        \"default\": \"sambanova,DeepSeek-V3.1\"\n    }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/965/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/964",
      "id": 3573392761,
      "node_id": "I_kwDON-_mZc7U_aV5",
      "number": 964,
      "title": "Unable to configure Minimax M2 in router but works perfect direct in Claude code!",
      "user": {
        "login": "jmd1010",
        "id": 25511513,
        "node_id": "MDQ6VXNlcjI1NTExNTEz",
        "avatar_url": "https://avatars.githubusercontent.com/u/25511513?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jmd1010",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-10-31T04:50:01Z",
      "updated_at": "2026-01-08T02:03:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Minimax  works perfect In claude code when modifying the claude code json. I wanted to try router because this solution does not work for Claude Github actions. \n\nCan someone clarify the config for claude router **and also github action** setup with this Mimnimax M2 model?\n\nIn claude code json this works! (but not githhub actions)\n \n\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"https://api.minimax.io/anthropic\",\n    \"ANTHROPIC_AUTH_TOKEN\": \"<MINIMAX_API_KEY>\",\n    \"API_TIMEOUT_MS\": \"3000000\",\n    \"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC\": 1,\n    \"ANTHROPIC_MODEL\": \"MiniMax-M2\",\n    \"ANTHROPIC_SMALL_FAST_MODEL\": \"MiniMax-M2\",\n    \"ANTHROPIC_DEFAULT_SONNET_MODEL\": \"MiniMax-M2\",\n    \"ANTHROPIC_DEFAULT_OPUS_MODEL\": \"MiniMax-M2\",\n    \"ANTHROPIC_DEFAULT_HAIKU_MODEL\": \"MiniMax-M2\"\n  }\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/964/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/963",
      "id": 3570879899,
      "node_id": "I_kwDON-_mZc7U102b",
      "number": 963,
      "title": "Enter your API key to access the configuration panel",
      "user": {
        "login": "petrovichest",
        "id": 50870093,
        "node_id": "MDQ6VXNlcjUwODcwMDkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/50870093?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/petrovichest",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-10-30T13:45:21Z",
      "updated_at": "2026-01-18T12:18:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I periodically get this message: 401 Invalid API key\nAnd in the UI, I see this message. What does it want from me? It appears either randomly or after a configuration change.\n\n<img width=\"595\" height=\"329\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/91ead061-ca7a-4ccf-87bf-e4e26617a1bb\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/963/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/961",
      "id": 3565955107,
      "node_id": "I_kwDON-_mZc7UjCgj",
      "number": 961,
      "title": "Feature Request: Concurrent instances, different configs",
      "user": {
        "login": "dabstractor",
        "id": 19753625,
        "node_id": "MDQ6VXNlcjE5NzUzNjI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/19753625?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dabstractor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-29T13:20:56Z",
      "updated_at": "2025-10-29T13:22:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I would like to be able to run simultaneous instances of CCR, each with different configs. As far as I can tell this is not currently possible. I can implement this feature but I wanted to start a discussion around it first.\n\nIdeally, it would be as simple as \"ccr start --config=/my/alt/config.json\" which then starts the server running on the next available port.\nSimilarly, running `ccr code -c /my/alt/config.json` would launch into a claude code session with env vars pointing to the new server port.\n\nThis allows users to resume previous configurations and run simultaneous instances with different configuration.\n\nPlease let me know if this overlaps with any other features before I begin.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/961/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/958",
      "id": 3560517771,
      "node_id": "I_kwDON-_mZc7UOTCL",
      "number": 958,
      "title": "openrouter + claude sonet wrong image base64 URL",
      "user": {
        "login": "AIEPhoenix",
        "id": 13294700,
        "node_id": "MDQ6VXNlcjEzMjk0NzAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/13294700?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AIEPhoenix",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-28T09:09:41Z",
      "updated_at": "2026-02-08T17:12:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "According to the execution log, it can be seen that two base64 URL headers were added during the actual sending process.\n\n<img width=\"714\" height=\"169\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/24851628-47af-4fac-a404-dfbd834bef3e\" />\n\nThis led to \n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(openrouter,anthropic/claude-opus-4.1: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned \n    error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"error\\\\\\\",\\\\\\\"error\\\\\\\":{\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request_error\\\\\\\",\\\\\\\"message\\\\\\\":\\\\\\\"messages.0.content.2.image.source.base64: invalid base64 ...\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/958/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/957",
      "id": 3560323348,
      "node_id": "I_kwDON-_mZc7UNjkU",
      "number": 957,
      "title": "图像处理报错",
      "user": {
        "login": "rennzhang",
        "id": 50518861,
        "node_id": "MDQ6VXNlcjUwNTE4ODYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/50518861?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rennzhang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-28T08:13:44Z",
      "updated_at": "2025-10-28T08:13:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "[ccr-20251028160931.log](https://github.com/user-attachments/files/23182111/ccr-20251028160931.log)\n完整日志，帮忙看看是什么问题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/957/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/955",
      "id": 3559622669,
      "node_id": "I_kwDON-_mZc7UK4gN",
      "number": 955,
      "title": "ccr+deepseek报错：500 {\"error\":\"Internal server error\"}",
      "user": {
        "login": "winddriver",
        "id": 3221597,
        "node_id": "MDQ6VXNlcjMyMjE1OTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3221597?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/winddriver",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-10-28T03:32:46Z",
      "updated_at": "2026-02-08T17:39:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "之前用得好好的，从昨天开始一直报错：500 {\"error\":\"Internal server error\"}\n检查了deepseek的相关配置，以及账号余额，都没有问题\n\n会不会是Claude Code官方封堵了ccr的调用？\n对了，昨天更新过Claude Code和ccr，然后就出现这个问题了。\n\n<img width=\"1902\" height=\"618\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d9b91399-605b-4a99-be18-607a3409c0f5\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/955/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/953",
      "id": 3556633235,
      "node_id": "I_kwDON-_mZc7T_eqT",
      "number": 953,
      "title": "调用模型有图片时，base64转化有问题，多了一个data:image/png;base64",
      "user": {
        "login": "yuexingliang",
        "id": 32833700,
        "node_id": "MDQ6VXNlcjMyODMzNzAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/32833700?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yuexingliang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-27T12:50:36Z",
      "updated_at": "2025-10-28T03:08:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1534\" height=\"942\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4e9cc9af-f803-4de7-bf97-4b4d80d00147\" />\n\n<img width=\"1944\" height=\"352\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/96728a43-f41a-44be-b7a9-311b211949ab\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/953/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/950",
      "id": 3546906036,
      "node_id": "I_kwDON-_mZc7TaX20",
      "number": 950,
      "title": "OIDC support or possible with custom transformer?",
      "user": {
        "login": "padexde",
        "id": 39307599,
        "node_id": "MDQ6VXNlcjM5MzA3NTk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/39307599?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/padexde",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-23T23:05:02Z",
      "updated_at": "2025-10-27T17:38:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, I am trying to connect with an API with OIDC. Unfortunately, the token lifetime is very low, so manually updating the config file is not an option. I was thinking about whether this is a good feature, but maybe it's possible with a custom transformer or provider?\nI was already trying to obtain a token with client ID and secret and change the config or the header of a request, but with the transformer I could only change the prompt. With the provider I was able to get the config but could not change it.\n\nDoes someone know if this is possible with the plugins or is a new feature in the authenticator code necessary?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/950/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/949",
      "id": 3544916966,
      "node_id": "I_kwDON-_mZc7TSyPm",
      "number": 949,
      "title": "[Bug] Can't set Claude Code CLI settings",
      "user": {
        "login": "NWYLZW",
        "id": 51358815,
        "node_id": "MDQ6VXNlcjUxMzU4ODE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/51358815?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NWYLZW",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-23T14:19:21Z",
      "updated_at": "2025-10-24T07:40:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Can't set Claude Code CLI settings\n无法通过 CLI 的 --settings 设置参数，会导致路径解析失败\n\n```text\nnode_modules/.bin/ccr code --settings ./.ai/settings.json --verbose\nError: Settings file not found: [./.ai/settings.json,{\"env\":{\"ANTHROPIC_AUTH_TOKEN\":\"test\",\"ANTHROPIC_API_KEY\":\"\",\"ANTHROPIC_BASE_URL\":\"http://127.0.0.1:3456\",\"NO_PROXY\":\"127.0.0.1\",\"DISABLE_TELEMETRY\":\"true\",\"DISABLE_COST_WARNINGS\":\"true\",\"API_TIMEOUT_MS\":\"600000\"}}]\n```\n\n估计是设置了冲突的配置，可以不用 settings 吗？或者提供新的传入或者禁止默认传入行为的方式？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/949/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/948",
      "id": 3544911197,
      "node_id": "I_kwDON-_mZc7TSw1d",
      "number": 948,
      "title": "modelscope  Qwen/Qwen3-235B-A22B-Thinking-2507 enable thinking can not be support when `stream=False`",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-23T14:18:06Z",
      "updated_at": "2025-10-27T02:23:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "> ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-235B-A22B-Thinking-2507: 400): \n>     {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"message\\\":\\\"enable thinking can not be support when `stream=F\n>     alse`.\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"214720c8-be84-4841-bcd4-5ccbb30921e0\\\"}Error: \n>     Error from provider(modelscope,Qwen/Qwen3-235B-A22B-Thinking-2507: 400): \n>     {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"message\\\":\\\"enable thinking can not be support when \n>     `stream=False`.\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"214720c8-be84-4841-bcd4-5ccbb30921e0\\\"}\\n\n>         at nt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n    at h0 \n>     (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    at \n>     process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 \n>     (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"pr\n>     ovider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/948/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/947",
      "id": 3544840905,
      "node_id": "I_kwDON-_mZc7TSfrJ",
      "number": 947,
      "title": "iflow 511 Network Authentication Required",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-23T14:01:19Z",
      "updated_at": "2025-10-27T01:45:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "> API Error: 511 {\"error\":{\"message\":\"Error from provider(iflow,qwen3-235b-a22b-thinking-2507: 511): \n>     {\\\"timestamp\\\":\\\"2025-10-23T13:57:01.242+00:00\\\",\\\"status\\\":511,\\\"error\\\":\\\"Network Authentication \n>     Required\\\",\\\"path\\\":\\\"/v1/chat/completions\\\"}Error: Error from provider(iflow,qwen3-235b-a22b-thinking-2507: \n>     511): {\\\"timestamp\\\":\\\"2025-10-23T13:57:01.242+00:00\\\",\\\"status\\\":511,\\\"error\\\":\\\"Network Authentication \n>     Required\\\",\\\"path\\\":\\\"/v1/chat/completions\\\"}\\n    at nt \n>     (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 \n>     (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at \n>     process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 \n>     (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"pr\n>     ovider_response_error\"}}\n> \n\n\n即便 使用 iflow-cli  使用 key 授权，还是 通过 秘密 授权， 都无法使用",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/947/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/946",
      "id": 3539311285,
      "node_id": "I_kwDON-_mZc7S9Zq1",
      "number": 946,
      "title": "使用dify映射出来的OpenAI兼容模型无法被调用。",
      "user": {
        "login": "suntao2015005848",
        "id": 49387197,
        "node_id": "MDQ6VXNlcjQ5Mzg3MTk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/49387197?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/suntao2015005848",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-22T06:31:15Z",
      "updated_at": "2025-11-11T08:34:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用Dify的OpenAI Compatible Dify Models插件将dify的模型映射出来后，配置到ccr报错,参数传入错误：\n\n使用日志：\n```\n▗ ▗   ▖ ▖  Claude Code v2.0.25\n           Sonnet 4.5 · API Usage Billing\n  ▘▘ ▝▝    /Users/suntao/PycharmProjects/my_script\n\n> 你好 \n  ⎿ API Error: 404 {\"error\":{\"message\":\"Error from provider(es_dify,Qwen3-Coder-30B-A3B-Instruct: 404): 1 validation error for \n    SystemPromptMessage\\ncontent.data\\n  Field required [type=missing, input_value={'type': 'text', 'text': ...: {'type': 'ephemeral'}}, \n    input_type=dict]\\n    For further information visit https://errors.pydantic.dev/2.8/v/missingError: Error from \n    provider(es_dify,Qwen3-Coder-30B-A3B-Instruct: 404): 1 validation error for SystemPromptMessage\\ncontent.data\\n  Field required \n    [type=missing, input_value={'type': 'text', 'text': ...: {'type': 'ephemeral'}}, input_type=dict]\\n    For further information visit \n    https://errors.pydantic.dev/2.8/v/missing\\n    at nt (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79940:11)\\n \n       at h0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79998:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async l0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79965:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n```\nconfig配置:\n\n```\n {\n      \"name\": \"es_dify\",\n      \"api_base_url\": \"https://dify.xxxxx.com.cn/e/rys1wd9pxxxx/v1/chat/completions\",\n      \"api_key\": \"xxxxx\",\n      \"models\": [\n        \"Qwen3-Coder-30B-A3B-Instruct\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"OpenAI\"\n        ],\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\": {\n          \"use\": [\n            \"enhancetool\"\n          ]\n        },\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\n            \"reasoning\"\n          ]\n        }\n      }\n    }\n```\n使用openai的API调用简答测试正常：\n```\nimport openai\n\nclient = openai.Client(api_key=\"xxxx\", base_url=\"https://dify.xxxxx.com.cn/e/rys1wd9b9i7p80e8/v1\")\ns = client.chat.completions.create(\n    model=\"Qwen3-Coder-30B-A3B-Instruct\",\n    messages=[\n        {\"role\": \"user\", \"content\": \"你好，我是张三，很高兴认识你。\"}\n    ],\n    temperature=0.5,\n    max_tokens=300,\n    top_p=0.9,\n    stream=False\n)\n\nprint(s)\n\nout:\nChatCompletion(id='chatcmpl-d96603d1-f1b8-4fed-b9bd-8bab056d2de9', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='你好张三！很高兴认识你！不过我需要澄清一下，我是通义千问，是阿里巴巴集团开发的AI助手。虽然我们可以通过对话交流，但我并不是真正的人类。如果你有任何问题或需要帮助，我会尽力为你提供支持。有什么我可以帮你的吗？', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None))], created=1761114843, model='Qwen3-Coder-30B-A3B-Instruct', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=60, prompt_tokens=18, total_tokens=78, completion_tokens_details=None, prompt_tokens_details=None))\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/946/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/941",
      "id": 3534745726,
      "node_id": "I_kwDON-_mZc7Sr_B-",
      "number": 941,
      "title": "happy-coder不能和ccr一起工作吗？",
      "user": {
        "login": "cccczl",
        "id": 1024947,
        "node_id": "MDQ6VXNlcjEwMjQ5NDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1024947?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cccczl",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-21T03:39:45Z",
      "updated_at": "2025-10-22T15:03:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "happy-coder不能和ccr一起工作吗？\n\nhttps://github.com/slopus/happy.git",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/941/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/940",
      "id": 3534744930,
      "node_id": "I_kwDON-_mZc7Sr-1i",
      "number": 940,
      "title": "toolcall异常？",
      "user": {
        "login": "orientlu",
        "id": 6871867,
        "node_id": "MDQ6VXNlcjY4NzE4Njc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6871867?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/orientlu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-21T03:39:17Z",
      "updated_at": "2025-10-21T03:39:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"3371\" height=\"660\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/edd1d3a4-9332-4371-8605-eae04f7cea9c\" />\n\n2.0.19 (Claude Code)\n\nccr version \nclaude-code-router version: 1.0.63",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/940/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/939",
      "id": 3531751517,
      "node_id": "I_kwDON-_mZc7SgkBd",
      "number": 939,
      "title": "API Error：500",
      "user": {
        "login": "148K",
        "id": 146621899,
        "node_id": "U_kgDOCL1Fyw",
        "avatar_url": "https://avatars.githubusercontent.com/u/146621899?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/148K",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-20T09:39:16Z",
      "updated_at": "2025-10-20T09:39:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "⎿ API Error: 500 {\"error\":{\"message\":\"Unexpected token '<', \\\"<!--\\nCopyr\\\"... is not valid JSONSyntaxError:\n    Unexpected token '<', \\\"<!--\\nCopyr\\\"... is not valid JSON\\n    at JSON.parse (<anonymous>)\\n    at\n    parseJSONFromBytes (node:internal/deps/undici/undici:5738:19)\\n    at successSteps\n    (node:internal/deps/undici/undici:5719:27)\\n    at fullyReadBody (node:internal/deps/undici/undici:4609:9)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async consumeBody\n    (node:internal/deps/undici/undici:5728:7)\\n    at async bs.transformResponseIn\n    (C:\\\\Users\\\\***\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80281:15)\\n\n      at async p0\n    (C:\\\\Users\\\\***\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:80005:46)\\n\n      at async l0 (C:\\\\Users\\\\***\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js\n    :79964:140)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/939/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/938",
      "id": 3531285424,
      "node_id": "I_kwDON-_mZc7SeyOw",
      "number": 938,
      "title": "接入中转codex，不会去使用claude code 调用工具",
      "user": {
        "login": "CaroLe-prw",
        "id": 42695882,
        "node_id": "MDQ6VXNlcjQyNjk1ODgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/42695882?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CaroLe-prw",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-20T06:57:00Z",
      "updated_at": "2026-01-29T09:25:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "接入中转codex，不会去使用claude code 调用工具\n\n第一个是调用数据库mcp，没有执行\n第二个是修改代码，没有执行\n\n<img width=\"995\" height=\"185\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ad174742-ef06-49d4-94ce-6507538d9d75\" />\n\n<img width=\"1130\" height=\"336\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/201d50cb-68dc-403b-b829-d7e8c6c88292\" />\n\n\n\n第三 执行的时候会出现乱码\n{\"level\":30,\"time\":1760943467990,\"pid\":26977,\"hostname\":\"CaroLe-PC\",\"reqId\":\"req-1\",\"data\":{\"model\":\"gpt-5-codex,gpt-5-codex-high\",\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"<system-reminder>\\nAs you answer the user's questions, you can use the following context:\\n# claudeMd\\nCodebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.\\n\\nContents of /home/CaroLe/.claude/CLAUDE.md (user's private global instructions for all projects):\\n\\n## è§è²å®ä¹\\r\\n\\r\\nä½ æ¯ Linus Torvaldsï¼Linux åæ ¸çåé èåé¦å¸­æ¶æå¸ãä½ å·²ç»ç»´æ¤ Linux åæ ¸è¶è¿30å¹´ï¼å®¡æ ¸è¿æ°ç¾ä¸è¡ä»£ç ï¼å»ºç«äºä¸çä¸ææåçå¼æºé¡¹ç®ãç°å¨æä»¬æ­£å¨å¼åä¸ä¸ªæ°é¡¹ç®ï¼ä½ å°ä»¥ä½ ç¬ç¹çè§è§æ¥åæä»£ç è´¨éçæ½å¨é£é©ï¼ç¡®ä¿é¡¹ç®ä»ä¸å¼å§å°±å»ºç«å¨åå®çææ¯åºç¡ä¸ã\\r\\n\\r\\n##  æçæ ¸å¿å²å­¦\\r\\n\\r\\n**1. \\\"å¥½åå³\\\"(Good Taste) - æçç¬¬ä¸åå**\\r\\n\\\"ææ¶ä½ å¯ä»¥ä»ä¸åè§åº¦çé®é¢ï¼éåå®è®©ç¹æ®æåµæ¶å¤±ï¼åææ­£å¸¸æåµã\\\"\\r\\n- ç»å¸æ¡ä¾ï¼é¾è¡¨å é¤æä½ï¼10è¡å¸¦ifå¤æ­ä¼åä¸º4è¡æ æ¡ä»¶åæ¯\\r\\n- å¥½åå³æ¯ä¸ç§ç´è§ï¼éè¦ç»éªç§¯ç´¯\\r\\n- æ¶é¤è¾¹çæåµæ°¸è¿ä¼äºå¢å æ¡ä»¶å¤æ­\\r\\n\\r\\n**2. \\\"Never break userspace\\\" - æçéå¾**\\r\\n\\\"æä»¬ä¸ç ´åç¨æ·ç©ºé´ï¼\\\"\\r\\n- ä»»ä½å¯¼è´ç°æç¨åºå´©æºçæ¹å¨é½æ¯bugï¼æ è®ºå¤ä¹\\\"çè®ºæ­£ç¡®\\\"\\r\\n- åæ ¸çèè´£æ¯æå¡ç¨æ·ï¼èä¸æ¯æè²ç¨æ·\\r\\n- ååå¼å®¹æ§æ¯ç¥å£ä¸å¯ä¾µç¯ç\\r\\n\\r\\n**3. å®ç¨ä¸»ä¹ - æçä¿¡ä»°**\\r\\n\\\"ææ¯ä¸ªè¯¥æ­»çå®ç¨ä¸»ä¹èã\\\"\\r\\n- è§£å³å®éé®é¢ï¼èä¸æ¯åæ³çå¨è\\r\\n- æç»å¾®åæ ¸ç­\\\"çè®ºå®ç¾\\\"ä½å®éå¤æçæ¹æ¡\\r\\n- ä»£ç è¦ä¸ºç°å®æå¡ï¼ä¸æ¯ä¸ºè®ºææå¡\\r\\n\\r\\n**4. ç®æ´æ§å¿µ - æçæ å**\\r\\n\\\"å¦æä½ éè¦è¶è¿3å±ç¼©è¿ï¼ä½ å°±å·²ç»å®èäºï¼åºè¯¥ä¿®å¤ä½ çç¨åºã\\\"\\r\\n- å½æ°å¿é¡»ç­å°ç²¾æï¼åªåä¸ä»¶äºå¹¶åå¥½\\r\\n- Cæ¯æ¯å·´è¾¾å¼è¯­è¨ï¼å½åä¹åºå¦æ­¤\\r\\n- å¤ææ§æ¯ä¸æ¶ä¹æº\\r\\n\\r\\n\\r\\n##  æ²éåå\\r\\n\\r\\n### åºç¡äº¤æµè§è\\r\\n\\r\\n- **è¯­è¨è¦æ±**ï¼ä½¿ç¨è±è¯­æèï¼ä½æ¯å§ç»æç»ç¨ä¸­æè¡¨è¾¾ã\\r\\n- **è¡¨è¾¾é£æ ¼**ï¼ç´æ¥ãçå©ãé¶åºè¯ãå¦æä»£ç åå¾ï¼ä½ ä¼åè¯ç¨æ·ä¸ºä»ä¹å®æ¯åå¾ã\\r\\n- **ææ¯ä¼å**ï¼æ¹è¯æ°¸è¿éå¯¹ææ¯é®é¢ï¼ä¸éå¯¹ä¸ªäººãä½ä½ ä¸ä¼ä¸ºäº\\\"åå\\\"èæ¨¡ç³ææ¯å¤æ­ã\\r\\n\\r\\n\\r\\n### éæ±ç¡®è®¤æµç¨\\r\\n\\r\\næ¯å½ç¨æ·è¡¨è¾¾è¯æ±ï¼å¿é¡»æä»¥ä¸æ­¥éª¤è¿è¡ï¼\\r\\n\\r\\n#### 0. **æèåæ - Linusçä¸ä¸ªé®é¢**\\r\\nå¨å¼å§ä»»ä½åæåï¼åé®èªå·±ï¼\\r\\nâ```text\\r\\n1. \\\"è¿æ¯ä¸ªçé®é¢è¿æ¯èæ³åºæ¥çï¼\\\" - æç»è¿åº¦è®¾è®¡\\r\\n2. \\\"ææ´ç®åçæ¹æ³åï¼\\\" - æ°¸è¿å¯»æ¾æç®æ¹æ¡  \\r\\n3. \\\"ä¼ç ´åä»ä¹åï¼\\\" - ååå¼å®¹æ¯éå¾\\r\\nâ```\\r\\n\\r\\n1. **éæ±çè§£ç¡®è®¤**\\r\\n   â```text\\r\\n   åºäºç°æä¿¡æ¯ï¼æçè§£æ¨çéæ±æ¯ï¼[ä½¿ç¨ Linus çæèæ²éæ¹å¼éè¿°éæ±]\\r\\n   è¯·ç¡®è®¤æççè§£æ¯å¦åç¡®ï¼\\r\\n   â```\\r\\n\\r\\n2. **Linuså¼é®é¢åè§£æè**\\r\\n   \\r\\n   **ç¬¬ä¸å±ï¼æ°æ®ç»æåæ**\\r\\n   â```text\\r\\n   \\\"Bad programmers worry about the code. Good programmers worry about data structures.\\\"\\r\\n   \\r\\n   - æ ¸å¿æ°æ®æ¯ä»ä¹ï¼å®ä»¬çå³ç³»å¦ä½ï¼\\r\\n   - æ°æ®æµååªéï¼è°æ¥æå®ï¼è°ä¿®æ¹å®ï¼\\r\\n   - ææ²¡æä¸å¿è¦çæ°æ®å¤å¶æè½¬æ¢ï¼\\r\\n   â```\\r\\n   \\r\\n   **ç¬¬äºå±ï¼ç¹æ®æåµè¯å«**\\r\\n   â```text\\r\\n   \\\"å¥½ä»£ç æ²¡æç¹æ®æåµ\\\"\\r\\n   \\r\\n   - æ¾åºææ if/else åæ¯\\r\\n   - åªäºæ¯çæ­£çä¸å¡é»è¾ï¼åªäºæ¯ç³ç³è®¾è®¡çè¡¥ä¸ï¼\\r\\n   - è½å¦éæ°è®¾è®¡æ°æ®ç»ææ¥æ¶é¤è¿äºåæ¯ï¼\\r\\n   â```\\r\\n   \\r\\n   **ç¬¬ä¸å±ï¼å¤æåº¦å®¡æ¥**\\r\\n   â```text\\r\\n   \\\"å¦æå®ç°éè¦è¶è¿3å±ç¼©è¿ï¼éæ°è®¾è®¡å®\\\"\\r\\n   \\r\\n   - è¿ä¸ªåè½çæ¬è´¨æ¯ä»ä¹ï¼ï¼ä¸å¥è¯è¯´æ¸ï¼\\r\\n   - å½åæ¹æ¡ç¨äºå¤å°æ¦å¿µæ¥è§£å³ï¼\\r\\n   - è½å¦åå°å°ä¸åï¼åä¸åï¼\\r\\n   â```\\r\\n   \\r\\n   **ç¬¬åå±ï¼ç ´åæ§åæ**\\r\\n   â```text\\r\\n   \\\"Never break userspace\\\" - ååå¼å®¹æ¯éå¾\\r\\n   \\r\\n   - ååºææå¯è½åå½±åçç°æåè½\\r\\n   - åªäºä¾èµä¼è¢«ç ´åï¼\\r\\n   - å¦ä½å¨ä¸ç ´åä»»ä½ä¸è¥¿çåæä¸æ¹è¿ï¼\\r\\n   â```\\r\\n   \\r\\n   **ç¬¬äºå±ï¼å®ç¨æ§éªè¯**\\r\\n   â```text\\r\\n   \\\"Theory and practice sometimes clash. Theory loses. Every single time.\\\"\\r\\n   \\r\\n   - è¿ä¸ªé®é¢å¨çäº§ç¯å¢çå®å­å¨åï¼\\r\\n   - æå¤å°ç¨æ·çæ­£éå°è¿ä¸ªé®é¢ï¼\\r\\n   - è§£å³æ¹æ¡çå¤æåº¦æ¯å¦ä¸é®é¢çä¸¥éæ§å¹éï¼\\r\\n   â```\\r\\n\\r\\n3. **å³ç­è¾åºæ¨¡å¼**\\r\\n   \\r\\n   ç»è¿ä¸è¿°5å±æèåï¼è¾åºå¿é¡»åå«ï¼\\r\\n   \\r\\n   â```text\\r\\n   ãæ ¸å¿å¤æ­ã\\r\\n    å¼å¾åï¼[åå ] /  ä¸å¼å¾åï¼[åå ]\\r\\n   \\r\\n   ãå³é®æ´å¯ã\\r\\n   - æ°æ®ç»æï¼[æå³é®çæ°æ®å³ç³»]\\r\\n   - å¤æåº¦ï¼[å¯ä»¥æ¶é¤çå¤ææ§]\\r\\n   - é£é©ç¹ï¼[æå¤§çç ´åæ§é£é©]\\r\\n   \\r\\n   ãLinuså¼æ¹æ¡ã\\r\\n   å¦æå¼å¾åï¼\\r\\n   1. ç¬¬ä¸æ­¥æ°¸è¿æ¯ç®åæ°æ®ç»æ\\r\\n   2. æ¶é¤ææç¹æ®æåµ\\r\\n   3. ç¨æç¬¨ä½ææ¸æ°çæ¹å¼å®ç°\\r\\n   4. ç¡®ä¿é¶ç ´åæ§\\r\\n   \\r\\n   å¦æä¸å¼å¾åï¼\\r\\n   \\\"è¿æ¯å¨è§£å³ä¸å­å¨çé®é¢ãçæ­£çé®é¢æ¯[XXX]ã\\\"\\r\\n   â```\\r\\n\\r\\n4. **ä»£ç å®¡æ¥è¾åº**\\r\\n   \\r\\n   çå°ä»£ç æ¶ï¼ç«å³è¿è¡ä¸å±å¤æ­ï¼\\r\\n   \\r\\n   â```text\\r\\n   ãåå³è¯åã\\r\\n    å¥½åå³ /  åå /  åå¾\\r\\n   \\r\\n   ãè´å½é®é¢ã\\r\\n   - [å¦ææï¼ç´æ¥æåºæç³ç³çé¨å]\\r\\n   \\r\\n   ãæ¹è¿æ¹åã\\r\\n   \\\"æè¿ä¸ªç¹æ®æåµæ¶é¤æ\\\"\\r\\n   \\\"è¿10è¡å¯ä»¥åæ3è¡\\\"\\r\\n   \\\"æ°æ®ç»æéäºï¼åºè¯¥æ¯...\\\"\\r\\n   â```\\r\\n\\r\\n## å·¥å·ä½¿ç¨\\r\\n\\r\\n### ææ¡£å·¥å·\\r\\n   **æ¥çå®æ¹ææ¡£**\\r\\n   - `resolve-library-id` - è§£æåºåå° Context7 ID\\r\\n   - `get-library-docs` - è·åææ°å®æ¹ææ¡£\\n\\nContents of /home/CaroLe/project/doorslink/CLAUDE.md (project instructions, checked into the codebase):\\n\\n# CLAUDE.md\\n\\n## ð¨ MANDATORY RULES ð¨\\n\\n### Core Rules (violation = termination)\\n- **Code Quality** â Use Codex CLI only\\n- **Database** â Use `mcp__database-mcp-server__*` only  \\n- **Tech Docs** â Use Context7 MCP only\\n- **Memory** â Use Graphiti Memory MCP only\\n\\n## MCP Servers\\n\\n### Codex CLI (Code Quality)\\n**Use for:** Quality analysis, standards, performance, security, architecture\\n\\n**Command:**\\n```bash\\ncodex exec --skip-git-repo-check --full-auto \\\"[analysis_prompt]\\\"\\n```\\n\\n**Templates:**\\n```bash\\n# Quality Analysis (file path only):\\ncodex exec --skip-git-repo-check --full-auto \\\"Analyze Java code quality in file: C:/java/doorslink/src/main/java/com/example/controller/ExampleController.java\\n\\nTarget file analysis: ExampleController.java\\nPackage path: com.example.controller\\nFramework: Spring Boot application\\n\\nScoring criteria: Code standards 30pts, Business logic 30pts, Risk control 25pts, Performance 15pts, Total 100pts\\\"\\n\\n# Security Review (file path only):\\ncodex exec --skip-git-repo-check --full-auto \\\"Security vulnerability assessment for file: C:/java/doorslink/src/main/java/com/example/service/ExampleService.java\\n\\nTarget file: ExampleService.java\\nPackage: com.example.service\\nFocus: input validation, authentication, authorization, sensitive data handling\\n\\nProvide detailed security assessment report and fix suggestions\\\"\\n\\n# Architecture Review (file path only):\\ncodex exec --skip-git-repo-check --full-auto \\\"Architecture design review for file: C:/java/doorslink/src/main/java/com/example/config/DatabaseConfig.java\\n\\nTarget file: DatabaseConfig.java\\nPackage: com.example.config\\nAnalysis scope: modularity, maintainability, scalability, design patterns compliance\\nFramework: Spring Boot microservice structure\\\"\\n\\n# P3C Compliance Check (file path only):\\ncodex exec --skip-git-repo-check --full-auto \\\"P3C compliance check for file: C:/java/doorslink/src/main/java/com/example/entity/ExampleEntity.java\\n\\nTarget file: ExampleEntity.java\\nPackage: com.example.entity\\nStandards: Alibaba Java P3C coding standards\\nFocus: naming conventions, code format, comments, exception handling, performance optimization\\n\\nProvide detailed 100-point scoring report\\\"\\n\\n# Method Analysis (file path and method names only):\\ncodex exec --skip-git-repo-check --full-auto \\\"Method analysis for file: C:/java/doorslink/src/main/java/com/example/service/impl/WorkerServiceImpl.java\\n\\nMethods to analyze in WorkerServiceImpl.java:\\n- getHelperWorkerSignedSummary(Long orderId, Long responWorkerId, String date, Integer pageNo, Integer pageSize)\\n- buildWorkerSignSummary(Long orderId, Long workerId, Date startTime, Date endTime, Order order)\\n\\nTarget file: WorkerServiceImpl.java\\nPackage: com.example.service.impl\\nAnalysis focus: Pagination logic 30pts, Business accuracy 25pts, SQL performance 20pts, Maintainability 15pts, Error handling 10pts\\\"\\n\\n# Batch File Analysis (file paths only):\\ncodex exec --skip-git-repo-check --full-auto \\\"Batch analysis for DoorsLink wallet recharge approval feature:\\n\\nFiles to analyze:\\n1. C:/java/doorslink/src/main/java/com/doorslink/vo/CorpRechargeApprovalVo.java\\n2. C:/java/doorslink/src/main/java/com/doorslink/mapper/ExtCorpRechargeMapper.java\\n3. C:/java/doorslink/src/main/resources/mapper/ExtCorpRechargeMapper.xml\\n4. C:/java/doorslink/src/main/java/com/doorslink/service/BusinessCorpAddressService.java\\n5. C:/java/doorslink/src/main/java/com/doorslink/service/impl/BusinessCorpAddressServiceImpl.java\\n6. C:/java/doorslink/src/main/java/com/doorslink/controller/BusinessCorpAddressController.java\\n\\nFeature: Corporate wallet recharge approval query\\nEvaluation criteria: Code standards 20pts, Architecture design 20pts, SQL optimization 20pts, API design 15pts, Security 15pts, Maintainability 10pts\\n\\nProvide 100-point scoring and detailed improvement suggestions\\\"\\n```\\n\\n### Quality Score (100 pts, min 90)\\n- **Standards (30):** Naming(10), Format(10), Comments(10)\\n- **Performance (25):** Algorithm(10), Resources(8), Concurrency(7)\\n- **Security (25):** Validation(10), Errors(8), Auth(7)\\n- **Architecture (20):** Modularity(8), Maintenance(7), Patterns(5)\\n\\n### Codex Best Practices\\n- **File Path Specification**: Always include full file paths (C:/java/doorslink/src/main/java/...) to avoid security restrictions\\n- **Target Files**: Replace [target_package]/[target_files] with actual package and file names\\n- **Non-interactive Mode**: Always use `--full-auto` for CI/automation\\n- **Git Repo Safety**: Use `--skip-git-repo-check` in untrusted directories\\n- **Timeout**: Set appropriate timeout for complex analysis (default 120s)\\n- **Language Context**: Include programming language and framework context in prompts\\n- **Scoring Criteria**: Always specify evaluation criteria and scoring system\\n- **Specific Analysis**: Be specific about which files/modules to analyze for better security compliance\\n\\n### Database MCP\\n**Required for:** Table queries, **MUST query structure before SQL**, validation, debugging\\n\\n**Tools:**\\n```bash\\nmcp__database-mcp-server__list_dataSources\\nmcp__database-mcp-server__describe_table: \\\"table_name\\\"\\nmcp__database-mcp-server__execute_sql: \\\"SELECT * FROM table LIMIT 10\\\"\\n```\\n\\n### Context7 MCP\\n**Use for:** Spring Boot/Cloud compatibility, Java 17 features, microservices\\n\\n### PromptX MCP\\n**Roles:** `carole` (Java/P3C expert), `nuwa` (AI creator), `luban` (MCP dev)\\n\\n### Graphiti Memory MCP\\n**Core:** Semantic search, topic tags\\n\\n**Tags:** `[topic] description`\\nExamples: `[wallet-phase3-done]`, `[tool-config]`, `[arch-decision]`\\n\\n**Workflow:**\\n1. `mcp__graphiti-memory__search_memory_nodes(query=\\\"keyword\\\")`\\n2. `mcp__graphiti-memory__search_memory_facts(query=\\\"concept\\\")`  \\n3. Cross-validate completeness\\n\\n**Required:** Start tasks, save new info, record results\\n\\n## Project Structure\\n```\\ncontroller/  - REST endpoints\\nservice/     - Business logic\\nmapper/      - Database access\\ndto/, vo/    - Data objects\\nconfig/      - Spring config\\n```\\n\\n**Database:** MyBatis Plus 3.5.1, XML in `src/main/resources/mapper/`\\n\\n## Code Standards\\n```java\\n/**\\n * @author CaroLe\\n * @Date 2025/8/28 [current_time]\\n * @Description [function_description]\\n */\\n```\\n\\n## Forbidden Actions\\n- Manual code review/architecture assessment (use Codex CLI instead)\\n- Guessing Entity fields/types\\n- Using outdated tech knowledge\\n- Using Codex without --skip-git-repo-check flag in this project\\n\\n## Checklist\\n```\\nâï¸ Start: mcp__graphiti-memory__search_memory_nodes + search_memory_facts\\nâï¸ Code review: Codex CLI\\nâï¸ Database: mcp__database-mcp-server__*\\nâï¸ Before SQL: describe_table\\nâï¸ Tech docs: Context7 MCP\\nâï¸ End: mcp__graphiti-memory__add_memory\\n```\\n\\n## Service Config\\n- Registry: Nacos\\n- Config: `bootstrap.yml`\\n- Deploy: Distributed cross-env\\n\\n      IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task.\\n</system-reminder>\\n\"},{\"type\":\"text\",\"text\":\"Warmup\",\"cache_control\":{\"type\":\"ephemeral\"}}]}],\"system\":[{\"type\":\"text\",\"text\":\"You are Claude Code, Anthropic's official CLI for Claude.\",\"cache_control\":{\"type\":\"ephemeral\"}},{\"type\":\"text\",\"text\":\"You are a file search specialist for Claude Code, Anthropic's official CLI for Claude. You excel at thoroughly navigating and exploring codebases.\\n\\nYour strengths:\\n- Rapidly finding files using glob patterns\\n- Searching code and text with powerful regex patterns\\n- Reading and analyzing file contents\\n\\nGuidelines:\\n- Use Glob for broad file pattern matching\\n- Use Grep for searching file contents with regex\\n- Use Read when you know the specific file path you need to read\\n- Use Bash for file operations like copying, moving, or listing directory contents\\n- Adapt your search approach based on the thoroughness level specified by the caller\\n- Return file paths as absolute paths in your final response\\n- For clear communication, avoid using emojis\\n- Do not create any files, or run bash commands that modify the user's system state in any way\\n\\nComplete the user's search request efficiently and report your findings clearly.\\n\\n\\nNotes:\\n- Agent threads always have their cwd reset between bash calls, as a result please only use absolute file paths.\\n- In your final response always share relevant file names and code snippets. Any file paths you return in your response MUST be absolute. Do NOT use relative paths.\\n- For clear communication with the user the assistant MUST avoid using emojis.\\n\\nHere is useful information about the environment you are running in:\\n<env>\\nWorking directory: /home/CaroLe/project/doorslink\\nIs directory a git repo: Yes\\nPlatform: linux\\nOS Version: Linux 6.6.101-amd64-desktop-hwe\\nToday's date: 2025-10-20\\n</env>\\nYou are powered by the model named Haiku 4.5. The exact model ID is claude-haiku-4-5-20251001.\\n\\ngitStatus: This is the git status at the start of the conversation. Note that this status is a snapshot in time, and will not update during the conversation.\\nCurrent branch: main\\n\\nMain branch (you will usually use this for PRs): main\\n\\nStatus:\\nM .codex/auth.json\\n M .codex/config.toml\\n M .codex/history.jsonl\\n M .codex/log/codex-tui.log\\n M .codex/sessions/2025/10/18/rollout-2025-10-18T14-43-19-0199f60e-f4b6-77e2-bb5d-4a1c000e8d9a.jsonl\\n M .codex/version.json\\n D README.md\\n?? .codex/sessions/2025/10/20/\\n?? .idea/\\n?? doorslink-admin/\\n?? doorslink-db/\\n?? doorslink-es/\\n?? doorslink-helper/\\n?? doorslink-job/\\n?? doorslink-login/\\n?? doorslink-mall/\\n?? doorslink-mq/\\n?? doorslink-order/\\n?? doorslink-pay/\\n?? doorslink-url/\\n?? doorslink-user/\\n?? doorslink-wework/\\n?? doorslink-ws/\\n?? jaboot-common/\\n?? jaboot-framework/\\n?? jaboot-parent/\\n?? jaboot-poi/\\n?? jaboot-sign/\\n?? jaboot-withdraw/\\n\\nRecent commits:\\nb7a9ecd feat(insurance): å®ç°ä¼ä¸è®¢åä¿é©é±åæ£æ¬¾åè½- æ°å¢é±åäº¤æç±»å_INSURANCEå¸¸é TRANSACTION_TYPE_PAYMENT = 13- ä¸º WalletTransaction è¡¨æ·»å å¤åå¯ä¸ç´¢å¼ä¿è¯å¹ç­æ§- åå»º InsuranceBuySuccessConsumer æ¶è´¹ä¿é©æ¯ä»MQæ¶æ¯- æ°å¢ InsuranceBuySuccessHelper å¤çé±åæµæ°´åå»ºåå¬ä¼å·éç¥ - ä¿®æ¹ InsuranceHelper å¨æ£è´¹æåååéMQæ¶æ¯ - å¤ç¨ existing relatedOrderNo å­æ®µå­å¨é¢çº¦IDå®ç°æ°æ®è¿½æº¯ - éè¿åå¸å¼éåDBæ¥è¯¢åéä¿éå¹ç­æ§å¤ç -ä»éå¯¹ isBusiness=1 çè®¢åè§¦åé±åæ¯ä»æµç¨- ä¿çåæéé±åæ¯ä»è®¢åçå¬ä¼å·éç¥é»è¾\\n9cd3237 feat(specify): åå§åSpec-Drivenå¼åæ¡æ¶éç½®ä¸æ¨¡æ¿\\nb855032 Initial commit\",\"cache_control\":{\"type\":\"ephemeral\"}}],\"tools\":[],\"metadata\":{\"user_id\":\"user_8f5c368048f8ca28631de518f6d14e36fd1ae6aa7546a59ea949f16ef7a580ae_account__session_fc43bf28-1dfd-429a-b6a9-9d537438f494\"},\"max_tokens\":8192,\"stream\":true},\"type\":\"request body\"}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/938/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/937",
      "id": 3530271432,
      "node_id": "I_kwDON-_mZc7Sa6rI",
      "number": 937,
      "title": "Qwen code to cc",
      "user": {
        "login": "tilak28",
        "id": 188172815,
        "node_id": "U_kgDOCzdKDw",
        "avatar_url": "https://avatars.githubusercontent.com/u/188172815?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tilak28",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-19T17:27:55Z",
      "updated_at": "2025-10-29T03:53:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is their any option or way to use qwen code in claude code like other models, as they provide 2000 req per day for free ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/937/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/936",
      "id": 3530084208,
      "node_id": "I_kwDON-_mZc7SaM9w",
      "number": 936,
      "title": "API ERROR 400: when we get no content from the tool call",
      "user": {
        "login": "OGUN01",
        "id": 47548607,
        "node_id": "MDQ6VXNlcjQ3NTQ4NjA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/47548607?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/OGUN01",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-19T13:40:45Z",
      "updated_at": "2025-10-19T13:40:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1173\" height=\"260\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0ba54996-392d-4b1d-9cbc-579adc4ddd00\" />\n\ni am getting this error every time when the tool call has no content can you give me any workaround for this.\n\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"vercel\",\n      \"api_base_url\": \"https://ai-gateway.vercel.sh/v1/chat/completions\",\n      \"api_key\": \"vck_\",\n      \"models\": [\n        \"anthropic/claude-sonnet-4.5\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"vercel\",\n            {\n              \"reasoning.enabled\": \"true\",\n              \"reasoning.max_tokens\": \"2000\"\n            }\n          ]\n        ],\n        \"anthropic/claude-sonnet-4.5\": {\n          \"use\": [\n            [\n              \"vercel\",\n              {\n                \"tools.enabled\": \"true\",\n                \"tool_choice\": \"auto\"\n              }\n            ]\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"background\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"think\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"longContext\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\",\n    \"image\": \"gemini,gemini-2.5-flash\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/936/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/935",
      "id": 3529579718,
      "node_id": "I_kwDON-_mZc7SYRzG",
      "number": 935,
      "title": "glm-4.6 webfetch \"No response from model\"",
      "user": {
        "login": "Liyw979",
        "id": 16919236,
        "node_id": "MDQ6VXNlcjE2OTE5MjM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/16919236?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Liyw979",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-10-19T06:49:49Z",
      "updated_at": "2025-12-06T17:36:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "websearch不能用，webfetch应该可以用是吧？但是claude code显示`No response from model`\n\n<img width=\"1432\" height=\"882\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/56d04711-9e6e-40ce-abba-f081e288aa88\" />\n\n```\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"ZhiPu\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"glm-4.6\",\n        \"glm-4.5-air\"\n      ],\n      \"transformer\": {\n        \"glm-4.6\": {\n          \"use\": [\n            \"reasoning\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": [\n        {\n          \"type\": \"workDir\",\n          \"icon\": \"󰉋\",\n          \"text\": \"{{workDirName}}\",\n          \"color\": \"bright_blue\"\n        },\n        {\n          \"type\": \"model\",\n          \"icon\": \"🤖\",\n          \"text\": \"{{model}}\",\n          \"color\": \"bright_yellow\"\n        },\n        {\n          \"type\": \"usage\",\n          \"icon\": \"📊\",\n          \"text\": \"{{inputTokens}} → {{outputTokens}}\",\n          \"color\": \"bright_magenta\"\n        }\n      ]\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"ZhiPu,glm-4.6\",\n    \"background\": \"ZhiPu,glm-4.5-air\",\n    \"think\": \"ZhiPu,glm-4.6\",\n    \"longContext\": \"ZhiPu,glm-4.6\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"ZhiPu,glm-4.6\",\n    \"image\": \"\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/935/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/934",
      "id": 3529423985,
      "node_id": "I_kwDON-_mZc7SXrxx",
      "number": 934,
      "title": "经常不显示加载状态",
      "user": {
        "login": "licoded",
        "id": 42663693,
        "node_id": "MDQ6VXNlcjQyNjYzNjkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/42663693?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/licoded",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-10-19T02:07:46Z",
      "updated_at": "2025-10-20T19:28:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1464\" height=\"668\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7383fca5-859a-44f1-9a56-6fb1fd2a440b\" />\n\n如图，经常会不显示“当前运行的任务”，体验比较差",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/934/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/932",
      "id": 3528708307,
      "node_id": "I_kwDON-_mZc7SU9DT",
      "number": 932,
      "title": "ccr 使用codex 模型问题",
      "user": {
        "login": "gogoyan",
        "id": 54283901,
        "node_id": "MDQ6VXNlcjU0MjgzOTAx",
        "avatar_url": "https://avatars.githubusercontent.com/u/54283901?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gogoyan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-18T11:45:39Z",
      "updated_at": "2025-12-17T04:09:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "目前ccr的openai-responses转换器测试使用模型：gpt-5，测试正常，但是使用gpt-5-codex 出错提示：Error: Error\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(codex,gpt-5-codex: 400): {\\\"detail\\\":\\\"Stream\n    must be set to true\\\"}Error: Error from provider(codex,gpt-5-codex: 400): {\\\"detail\\\":\\\"Stream must be\n    set to true\\\"}\\n    at nt\n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79939:11)\\n    at h0\n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79997:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0\n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79964:96)\",\"type\":\"api_error\n    \",\"code\":\"provider_response_error\"}}\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/932/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/931",
      "id": 3527725791,
      "node_id": "I_kwDON-_mZc7SRNLf",
      "number": 931,
      "title": "worked perfectly in android using termux",
      "user": {
        "login": "Netsnake-TN",
        "id": 236276175,
        "node_id": "U_kgDODhVJzw",
        "avatar_url": "https://avatars.githubusercontent.com/u/236276175?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Netsnake-TN",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-17T22:23:36Z",
      "updated_at": "2025-10-17T22:23:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i am using gemini 2.5 flash and seems to work very nicely\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/931/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/929",
      "id": 3521215373,
      "node_id": "I_kwDON-_mZc7R4XuN",
      "number": 929,
      "title": "error with aws/claude-4-5-sonnet",
      "user": {
        "login": "wm19999",
        "id": 86055438,
        "node_id": "MDQ6VXNlcjg2MDU1NDM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/86055438?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wm19999",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-10-16T10:14:14Z",
      "updated_at": "2025-10-29T02:16:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n ⎿ API Error: 504 {\"error\":{\"message\":\"Error from provider(aiproxy,aws/claude-4-5-sonnet: 504): <html>\\r\\n<head><title>504 Gateway \n    Time-out</title></head>\\r\\n<body>\\r\\n<center><h1>504 Gateway Time-out</h1></center>\\r\\n<hr><center>nginx/1.29.1</center>\\r\\n</body>\\r\\n</html>\\r\\nError: Error from \n    provider(aiproxy,aws/claude-4-5-sonnet: 504): <html>\\r\\n<head><title>504 Gateway Time-out</title></head>\\r\\n<body>\\r\\n<center><h1>504 Gateway \n    Time-out</h1></center>\\r\\n<hr><center>nginx/1.29.1</center>\\r\\n</body>\\r\\n</html>\\r\\n\\n    at nt \n    (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79939:11)\\n    at h0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79997:11)\\n    \n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 \n    (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:79964:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/929/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 1,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/927",
      "id": 3520307677,
      "node_id": "I_kwDON-_mZc7R06Hd",
      "number": 927,
      "title": "claude code router 能支持中转gpt-5-codex吗？",
      "user": {
        "login": "xxll88",
        "id": 54157661,
        "node_id": "MDQ6VXNlcjU0MTU3NjYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/54157661?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xxll88",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-16T04:49:08Z",
      "updated_at": "2025-10-21T15:32:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claude code router 能支持openai兼容格式，中转gpt-5-codex也是openai格式，为什么试了半天都不行，是中转限制吗\n {\n      \"name\": \"中转\",\n      \"api_base_url\": \"https://中转.com/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"gpt-5-codex\"\n      ]\n    }\n\n\n API error: 400 {\"error\":{\"message\":\"Error from \n    provider(codex,gpt-5-codex: 400): \n    {\\\"error\\\":{\\\"code\\\":400,\\\"type\\\":\\\"Bad \n    Request\\\",\\\"message\\\":\\\"Cannot invoke \n    \\\\\\\"com.lingyi.admin.module.business.chat.provider.openai.dom\n    ain.event.ErrorEvent.getType()\\\\\\\" because \\\\\\\"error\\\\\\\" is \n    null For more details, please visit https://www.88code.org \n    \\\"},\\\"type\\\":\\\"error\\\"}Error: Error from \n    provider(codex,gpt-5-codex: 400): \n    {\\\"error\\\":{\\\"code\\\":400,\\\"type\\\":\\\"Bad \n    Request\\\",\\\"message\\\":\\\"Cannot invoke \n    \\\\\\\"com.lingyi.admin.module.business.chat.provider.openai.dom\n    ain.event.ErrorEvent.getType()\\\\\\\" because \\\\\\\"error\\\\\\\" is \n    null For more details, please visit https://www.88code.org \n    \\\"},\\\"type\\\":\\\"error\\\"}\\n    at nt \n    (/home/ubuntu/.nvm/versions/node/v22.20.0/lib/node_modules/@m\n    usistudio/claude-code-router/dist/cli.js:79939:11)\\n    at h0\n     (/home/ubuntu/.nvm/versions/node/v22.20.0/lib/node_modules/@\n    musistudio/claude-code-router/dist/cli.js:79997:11)\\n    at \n    process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async l0 \n    (/home/ubuntu/.nvm/versions/node/v22.20.0/lib/node_modules/@m\n    usistudio/claude-code-router/dist/cli.js:79964:96)\",\"type\":\"a\n    pi_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/927/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/925",
      "id": 3518685359,
      "node_id": "I_kwDON-_mZc7RuuCv",
      "number": 925,
      "title": "是否支持同一平台多API key的负载均衡调用",
      "user": {
        "login": "Aetherionax",
        "id": 170787829,
        "node_id": "U_kgDOCi4D9Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/170787829?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Aetherionax",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-15T16:04:14Z",
      "updated_at": "2025-10-15T16:04:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "比如：我在咸鱼买了100个某厂商的API key，现在只能手动配置多条Providers，能否配置一个数组或者外置文件导入API key实现负载均衡调用。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/925/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/924",
      "id": 3517590197,
      "node_id": "I_kwDON-_mZc7Rqiq1",
      "number": 924,
      "title": "Can't able to upload the image on the ccr",
      "user": {
        "login": "OGUN01",
        "id": 47548607,
        "node_id": "MDQ6VXNlcjQ3NTQ4NjA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/47548607?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/OGUN01",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-10-15T11:26:15Z",
      "updated_at": "2025-10-24T02:01:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"vercel\",\n      \"api_base_url\": \"https://ai-gateway.vercel.sh/v1/chat/completions\",\n      \"api_key\": \"vck_7adpnZ72Rtm3qPjl0OZu7RZUDBkCa3gZSdYYk4fVsLqORa1pcf45iALA\",\n      \"models\": [\n        \"anthropic/claude-sonnet-4.5\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"vercel\",\n            {\n              \"reasoning.enabled\": \"true\",\n              \"reasoning.max_tokens\": \"2000\"\n            }\n          ]\n        ],\n        \"anthropic/claude-sonnet-4.5\": {\n          \"use\": [\n            [\n              \"vercel\",\n              {\n                \"tools.enabled\": \"true\",\n                \"tool_choice\": \"auto\"\n              }\n            ]\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"background\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"think\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"longContext\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"vercel,anthropic/claude-sonnet-4.5\",\n    \"image\": \"vercel,anthropic/claude-sonnet-4.5\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n<img width=\"961\" height=\"679\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/819e91ad-d093-4c12-99f1-86d6f3c1ea92\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/924/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/923",
      "id": 3516879485,
      "node_id": "I_kwDON-_mZc7Rn1J9",
      "number": 923,
      "title": "Can't able to use tools, and when the response from the tool is empty it's failing ( please help !!!)",
      "user": {
        "login": "OGUN01",
        "id": 47548607,
        "node_id": "MDQ6VXNlcjQ3NTQ4NjA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/47548607?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/OGUN01",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-15T08:08:04Z",
      "updated_at": "2025-10-15T08:08:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"936\" height=\"520\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/758cb099-86d4-4d09-9393-dd1202ef36f8\" />\n\nI am using vercel-gateway models where all the models are available with original provider but with open ai compatibility api format.\n\n<img width=\"819\" height=\"563\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c8921fcb-cf21-40d1-b679-7a6099a4059a\" />\n\nplease help me what should i do and use \n\n[ccr-20251015110845.log](https://github.com/user-attachments/files/22921710/ccr-20251015110845.log)\n[ccr-20251015111746.log](https://github.com/user-attachments/files/22921707/ccr-20251015111746.log)\n[ccr-20251015114722.log](https://github.com/user-attachments/files/22921709/ccr-20251015114722.log)\n[ccr-20251015115229.log](https://github.com/user-attachments/files/22921708/ccr-20251015115229.log)\n[ccr-20251015133153.log](https://github.com/user-attachments/files/22921711/ccr-20251015133153.log)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/923/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 1,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/921",
      "id": 3516442843,
      "node_id": "I_kwDON-_mZc7RmKjb",
      "number": 921,
      "title": "添加对Claude Pro的透传",
      "user": {
        "login": "uzhao",
        "id": 5157125,
        "node_id": "MDQ6VXNlcjUxNTcxMjU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5157125?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/uzhao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-15T05:56:16Z",
      "updated_at": "2025-10-15T05:56:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我订阅了Claude Pro,偶尔会需要使用到Opus所以需要切换账号登录.这个token需要刷新所以把token复制到设定里似乎不太好用.GLM的订阅可能也会有类似的问题?当前的transformer好像会替换key,不知道是不是我用错了.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/921/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/919",
      "id": 3514477969,
      "node_id": "I_kwDON-_mZc7Req2R",
      "number": 919,
      "title": "fetch图片 error 500",
      "user": {
        "login": "sidongfeng",
        "id": 37397706,
        "node_id": "MDQ6VXNlcjM3Mzk3NzA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/37397706?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sidongfeng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-10-14T15:39:03Z",
      "updated_at": "2025-10-16T13:28:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "可以使用文字描述，但多模态的交互报错 error 500。\n\n<img width=\"1556\" height=\"498\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/9ed579ba-a8f3-4934-9141-21e2c9ddbc4c\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/919/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/917",
      "id": 3513203558,
      "node_id": "I_kwDON-_mZc7RZztm",
      "number": 917,
      "title": "魔搭社区模型调用异常",
      "user": {
        "login": "space-77",
        "id": 44919719,
        "node_id": "MDQ6VXNlcjQ0OTE5NzE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/44919719?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/space-77",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-10-14T09:55:00Z",
      "updated_at": "2025-10-25T14:04:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "魔搭社区模型调用异常，删掉请求体中的 metadata 信息后正常。\n<img width=\"1837\" height=\"829\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6e6fa155-c77a-499b-a516-d3c2df5f48e7\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/917/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/916",
      "id": 3512608920,
      "node_id": "I_kwDON-_mZc7RXiiY",
      "number": 916,
      "title": "API Error: Cannot read properties of undefined (reading 'map')",
      "user": {
        "login": "zhangzhibo921",
        "id": 33216397,
        "node_id": "MDQ6VXNlcjMzMjE2Mzk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/33216397?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhangzhibo921",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-10-14T06:54:45Z",
      "updated_at": "2025-10-16T18:40:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "the config.json:\n{\n  \"Providers\": [\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"ms-xxx\",\n      \"models\": [\"Qwen/Qwen3-Coder-480B-A35B-Instruct\", \"Qwen/Qwen3-235B-A22B-Thinking-2507\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536000\n            }\n          ],\n          \"enhancetool\"\n        ],\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\"reasoning\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n  },\n  \"PORT\": 23456\n}\n\n\nthe error:\n\n╭─── Claude Code v2.0.14 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                    │ Tips for getting started                                                                                                 │\n│            Welcome back!           │ Run /init to create a CLAUDE.md file with instructions for Claude                                                        │\n│                                    │ Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instea… │\n│               ▐▛███▜▌              │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │\n│              ▝▜█████▛▘             │ Recent activity                                                                                                          │\n│                ▘▘ ▝▝               │ No recent activity                                                                                                       │\n│                                    │                                                                                                                          │\n│   Sonnet 4.5 · API Usage Billing   │                                                                                                                          │\n│           /home/startpro           │                                                                                                                          │\n╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n\n> hello \n  ⎿  API Error: Cannot read properties of undefined (reading 'map')\n\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n>  \n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n  ? for shortcuts\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/916/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/915",
      "id": 3512562722,
      "node_id": "I_kwDON-_mZc7RXXQi",
      "number": 915,
      "title": "1.0.60 API Error: 500 - Cannot read properties of undefined (reading 'name')",
      "user": {
        "login": "Flamme13",
        "id": 8742198,
        "node_id": "MDQ6VXNlcjg3NDIxOTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8742198?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Flamme13",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-10-14T06:36:19Z",
      "updated_at": "2025-10-16T14:44:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "After updating from v1.0.59 to v1.0.60, I am encountering the following error with any request, regardless of the provider used:\n\n```\n500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'name')TypeError: Cannot read \n     properties of undefined (reading 'name')\\n    at /home/flamme/.nvm/versions/node/v22.17.0/lib/node_modules\n     /@musistudio/claude-code-router/dist/cli.js:80604:53\\n    at Array.filter (<anonymous>)\\n    at Es (/home/\n     flamme/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80604:28)\\n\n         at Ds.transformRequestIn (/home/flamme/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude\n     -code-router/dist/cli.js:80691:20)\\n    at f0 (/home/flamme/.nvm/versions/node/v22.17.0/lib/node_modules/@\n     musistudio/claude-code-router/dist/cli.js:79975:21)\\n    at l0 (/home/flamme/.nvm/versions/node/v22.17.0/l\n     ib/node_modules/@musistudio/claude-code-router/dist/cli.js:79964:56)\\n    at Object.<anonymous> (/home/fla\n     mme/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:80013:86)\\n   \n      at preHandlerCallbackInner (/home/flamme/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-\n     code-router/dist/cli.js:4570:28)\\n    at preHandlerCallback (/home/flamme/.nvm/versions/node/v22.17.0/lib/\n     node_modules/@musistudio/claude-code-router/dist/cli.js:4542:9)\\n    at next \n     (/home/flamme/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3661\n     :13)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}\n```\n\nThank you.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/915/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/914",
      "id": 3512527037,
      "node_id": "I_kwDON-_mZc7RXOi9",
      "number": 914,
      "title": "1.0.60 API Error: 400",
      "user": {
        "login": "SuperDuckGOGOGO",
        "id": 165230683,
        "node_id": "U_kgDOCdk4Ww",
        "avatar_url": "https://avatars.githubusercontent.com/u/165230683?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SuperDuckGOGOGO",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-14T06:21:25Z",
      "updated_at": "2025-10-15T06:05:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error: 400 {\"error\":{\"message\":\"Error from provider(bigmodel,glm-4.6: 400): {\\\"error\\\":{\\\"code\\\":\\\"1214\\\",\\\"message\\\":\\\"tools[0].type:type cannot be empty.\\\"}}Error: Error from provider(bigmodel,glm-4.6: 400): \n     {\\\"error\\\":{\\\"code\\\":\\\"1214\\\",\\\"message\\\":\\\"tools[0].type:type cannot be empty.\\\"}}\\n    at nt (C:\\\\Users\\\\max\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79939:11)\\n    at h0 \n     (C:\\\\Users\\\\max\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79997:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 \n     (C:\\\\Users\\\\max\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:79964:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/914/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/911",
      "id": 3510398117,
      "node_id": "I_kwDON-_mZc7RPGyl",
      "number": 911,
      "title": "1.0.60版本出错，正常配置无法使用",
      "user": {
        "login": "dahehua",
        "id": 24541149,
        "node_id": "MDQ6VXNlcjI0NTQxMTQ5",
        "avatar_url": "https://avatars.githubusercontent.com/u/24541149?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dahehua",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-13T14:58:51Z",
      "updated_at": "2025-10-15T00:41:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"843\" height=\"272\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8f3d8b4c-5278-4c5d-9d75-c1a145b3b965\" />\nz",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/911/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/910",
      "id": 3508400186,
      "node_id": "I_kwDON-_mZc7RHfA6",
      "number": 910,
      "title": "增加一个尝试连接的功能",
      "user": {
        "login": "wqh17101",
        "id": 26429138,
        "node_id": "MDQ6VXNlcjI2NDI5MTM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/26429138?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wqh17101",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-13T04:17:55Z",
      "updated_at": "2025-10-13T04:17:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "注册完之后可以加一个尝试连接的功能",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/910/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/909",
      "id": 3508293316,
      "node_id": "I_kwDON-_mZc7RHE7E",
      "number": 909,
      "title": "对于新版本 claude code 插件功能的支持问题",
      "user": {
        "login": "xxt466522585",
        "id": 46956725,
        "node_id": "MDQ6VXNlcjQ2OTU2NzI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/46956725?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xxt466522585",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-13T03:03:20Z",
      "updated_at": "2025-12-29T13:22:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "目前发现ccr最新更新到 1.0.50.\n但是无法使用 claude code 新版本的/plugin插件指令：“提示Unknown slash command: plugin”",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/909/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/908",
      "id": 3508153886,
      "node_id": "I_kwDON-_mZc7RGi4e",
      "number": 908,
      "title": "🚨 Security: DEP0190 DeprecationWarning - Child Process Shell Vulnerability",
      "user": {
        "login": "DonMecca",
        "id": 2199157,
        "node_id": "MDQ6VXNlcjIxOTkxNTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2199157?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DonMecca",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-13T01:14:00Z",
      "updated_at": "2025-10-13T01:19:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## 🚨 Security Issue: DEP0190 DeprecationWarning\n\n  ### Description\n  When using CCR  (with commands like `ccr code`), Node.js throws a  DEP0190 deprecation warning indicating a security vulnerability in child process argument handling.\n\n  ### Warning Message\n  (node:67236) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security\n  vulnerabilities, as the arguments are not escaped, only concatenated.\n\n  ### Stack Trace\n  at normalizeSpawnArguments (node:child_process:644:15)\n  at spawn (node:child_process:788:13)\n  at executeCodeCommand\n  (/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:85548:57)\n\n  ### Security Impact\n  - **Vulnerability:** Command injection if arguments contain shell metacharacters (`;`, `&`, `|`, `$(...)`, etc.)\n  - **Location:** `executeCodeCommand` function in `dist/cli.js:85548:57`\n  - **Risk Level:** Medium - Requires specific malicious input to exploit\n\n  ### Reproduction Steps\n  1. Install latest claude-code-router (v1.0.59)\n  2. Run: `ccr code --help`\n  3. Observe DEP0190 warning in output\n\n  ### Environment\n  - Node.js: v24.6.0\n  - Package: @musistudio/claude-code-router@1.0.59\n  - OS: macOS\n\n  ### Recommended Fix\n  Replace unsafe `spawn()` calls with `shell: false` or properly escape arguments using a library like `shell-escape`.\n\n  ### Priority\n  High - Security vulnerability that should be addressed in a patch release.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/908/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/899",
      "id": 3505757851,
      "node_id": "I_kwDON-_mZc7Q9Z6b",
      "number": 899,
      "title": "华为服务器的能不能适配一下？出现todos 无法正常使用",
      "user": {
        "login": "Leslack-hub",
        "id": 42340479,
        "node_id": "MDQ6VXNlcjQyMzQwNDc5",
        "avatar_url": "https://avatars.githubusercontent.com/u/42340479?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Leslack-hub",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-11T12:46:05Z",
      "updated_at": "2025-10-17T15:22:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "> /init is analyzing your codebase…\n\n● I'll analyze this containerd codebase and create a comprehensive CLAUDE.md file to help future instances of Claude\n   Code work effectively with this repository.\n\n  {\"todos\": [{\"content\": \"Analyze the codebase structure and main components\", \"status\": \"in_progress\",\n  \"activeForm\": \"Analyzing codebase structure and main components\"}, {\"content\": \"Examine build system and\n  development tools\", \"status\": \"pending\", \"activeForm\": \"Examining build system and development tools\"},\n  {\"content\": \"Review existing documentation and configuration\", \"status\": \"pending\", \"activeForm\": \"Reviewing\n  existing documentation and configuration\"}, {\"content\": \"Identify testing patterns and common development\n  workflows\", \"status\": \"pending\", \"activeForm\": \"Identifying testing patterns and common development workflows\"},\n  {\"content\": \"Create comprehensive CLAUDE.md file\", \"status\": \"pending\", \"activeForm\": \"Creating comprehensive\n  CLAUDE.md file\"}]}\n  {\"pattern\": \"**/*.md\"}]}\n\nconfig.json\n    {\n      \"name\": \"huawei\",\n      \"api_base_url\": \"https://api.modelarts-maas.com/v1/chat/completions\",\n      \"api_key\": \"xxxxxx\",\n      \"models\": [\n        \"deepseek-v3.2-exp\"\n      ]\n    },",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/899/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/898",
      "id": 3505635952,
      "node_id": "I_kwDON-_mZc7Q88Jw",
      "number": 898,
      "title": "Z.ai usage is not documented in README.md",
      "user": {
        "login": "burbilog",
        "id": 8136403,
        "node_id": "MDQ6VXNlcjgxMzY0MDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8136403?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/burbilog",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-10-11T10:54:44Z",
      "updated_at": "2025-12-05T14:26:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I've found the solution how to connect Z.ai properly here: https://github.com/musistudio/claude-code-router/issues/760#issuecomment-3266069700\n\nPlease, add this to the README.md, it works (I've checked with my z.ai subscription api key):\n\n~~~\n    {\n      \"name\": \"zai\",\n      \"api_base_url\": \"https://api.z.ai/api/anthropic/v1/messages\",\n      \"api_key\": \"${ZAI_API_KEY}\",\n      \"models\": [\n        \"glm-4.6\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"Anthropic\"\n        ]\n      }\n    },\n~~~",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/898/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/897",
      "id": 3503727762,
      "node_id": "I_kwDON-_mZc7Q1qSS",
      "number": 897,
      "title": "Qwen and Gemini CLI transformers need schema normalization",
      "user": {
        "login": "dabstractor",
        "id": 19753625,
        "node_id": "MDQ6VXNlcjE5NzUzNjI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/19753625?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dabstractor",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-10T16:49:08Z",
      "updated_at": "2025-10-10T16:49:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Both gists linked from the router have schema issues that cause hard 400 errors with current provider APIs.  I don't usually see this problem but I managed to produce it consistently with a large compaction prompt that Claude couldn't handle either.\n\n**Qwen (https://gist.github.com/musistudio/f5a67841ced39912fd99e42200d5ca8b)**  \nError:  \n```\nInvalid type for 'messages.[n].content': expected string or array of objects, but got object instead.\n```  \nProblem: The gist sometimes sends `{ text: \"...\" }` as `content`.  \nFix: Normalize `content` to either a plain string or an array like:  \n```js\n{ role: \"user\", content: [{ type: \"text\", text: \"...\" }] }\n```  \n\n**Gemini (https://gist.github.com/musistudio/1c13a65f35916a7ab690649d3df8d1cd)**  \nError:  \n```\nUnable to submit request because it must include at least one parts field\n```  \nProblem: Transformer can emit `parts: []` when `message.content` is an object or empty. Gemini rejects empty `parts`.  \nFix: Ensure every message has at least one `part`. Fallback:  \n```js\nif (parts.length === 0) parts.push({ text: \"\" });\n```  \n\nqwen-cli.js:\n```\n// qwen-cli.js\nconst os = require(\"os\");\nconst path = require(\"path\");\nconst fs = require(\"fs/promises\");\n\nconst OAUTH_FILE = path.join(os.homedir(), \".qwen\", \"oauth_creds.json\");\n\nclass QwenCLITransformer {\n  name = \"qwen-cli\";\n\n  // Normalize messages so `messages[n].content` is either a string or\n  // an array of { type: \"text\", text: \"...\" } blocks (we choose array form).\n  normalizeMessages(messages) {\n    if (!Array.isArray(messages)) return messages;\n    return messages.map((m) => {\n      const content = m.content;\n      let normalized;\n\n      if (typeof content === \"string\") {\n        normalized = [{ type: \"text\", text: content }];\n      } else if (Array.isArray(content)) {\n        normalized = content.map((item) => {\n          if (typeof item === \"string\") return { type: \"text\", text: item };\n          if (item && typeof item === \"object\") {\n            // already block-like?\n            if (item.type === \"text\" && typeof item.text === \"string\")\n              return { type: \"text\", text: item.text };\n            if (typeof item.text === \"string\") return { type: \"text\", text: item.text };\n            // fallback: stringify object\n            return { type: \"text\", text: JSON.stringify(item) };\n          }\n          return { type: \"text\", text: String(item) };\n        });\n      } else if (content && typeof content === \"object\") {\n        if (typeof content.text === \"string\") {\n          normalized = [{ type: \"text\", text: content.text }];\n        } else {\n          normalized = [{ type: \"text\", text: JSON.stringify(content) }];\n        }\n      } else {\n        // ensure at least one text block\n        normalized = [{ type: \"text\", text: \"\" }];\n      }\n\n      return {\n        ...m,\n        content: normalized,\n      };\n    });\n  }\n\n  async transformRequestIn(request, provider) {\n    if (!this.oauth_creds) {\n      await this.getOauthCreds();\n    }\n    if (this.oauth_creds && this.oauth_creds.expiry_date < +new Date()) {\n      await this.refreshToken(this.oauth_creds.refresh_token);\n    }\n    if (request.stream) {\n      request.stream_options = {\n        include_usage: true,\n      };\n    }\n\n    // Normalize request.messages for Qwen's expected schema\n    if (Array.isArray(request.messages)) {\n      request.messages = this.normalizeMessages(request.messages);\n    }\n\n    return {\n      body: request,\n      config: {\n        headers: {\n          Authorization: `Bearer ${this.oauth_creds.access_token}`,\n          \"User-Agent\": \"QwenCode/v22.12.0 (darwin; arm64)\",\n        },\n      },\n    };\n  }\n\n  refreshToken(refresh_token) {\n    const urlencoded = new URLSearchParams();\n    urlencoded.append(\"client_id\", \"f0304373b74a44d2b584a3fb70ca9e56\");\n    urlencoded.append(\"refresh_token\", refresh_token);\n    urlencoded.append(\"grant_type\", \"refresh_token\");\n    return fetch(\"https://chat.qwen.ai/api/v1/oauth2/token\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: urlencoded,\n    })\n      .then((response) => response.json())\n      .then(async (data) => {\n        data.expiry_date =\n          new Date().getTime() + data.expires_in * 1000 - 1000 * 60;\n        data.refresh_token = refresh_token;\n        delete data.expires_in;\n        this.oauth_creds = data;\n        await fs.writeFile(OAUTH_FILE, JSON.stringify(data, null, 2));\n      });\n  }\n\n  async getOauthCreds() {\n    try {\n      const data = await fs.readFile(OAUTH_FILE);\n      this.oauth_creds = JSON.parse(data);\n    } catch (e) {}\n  }\n}\n\nmodule.exports = QwenCLITransformer;\n```\n\ngemini-cli.js:\n```\nconst os = require(\"os\");\nconst path = require(\"path\");\nconst fs = require(\"fs/promises\");\n\nconst OAUTH_FILE = path.join(os.homedir(), \".gemini\", \"oauth_creds.json\");\n\n// Type enum equivalent in JavaScript\nconst Type = {\n  TYPE_UNSPECIFIED: \"TYPE_UNSPECIFIED\",\n  STRING: \"STRING\",\n  NUMBER: \"NUMBER\",\n  INTEGER: \"INTEGER\",\n  BOOLEAN: \"BOOLEAN\",\n  ARRAY: \"ARRAY\",\n  OBJECT: \"OBJECT\",\n  NULL: \"NULL\",\n};\n\n/**\n * Transform the type field from an array of types to an array of anyOf fields.\n * @param {string[]} typeList - List of types\n * @param {Object} resultingSchema - The schema object to modify\n */\nfunction flattenTypeArrayToAnyOf(typeList, resultingSchema) {\n  if (typeList.includes(\"null\")) {\n    resultingSchema[\"nullable\"] = true;\n  }\n  const listWithoutNull = typeList.filter((type) => type !== \"null\");\n\n  if (listWithoutNull.length === 1) {\n    const upperCaseType = listWithoutNull[0].toUpperCase();\n    resultingSchema[\"type\"] = Object.values(Type).includes(upperCaseType)\n      ? upperCaseType\n      : Type.TYPE_UNSPECIFIED;\n  } else {\n    resultingSchema[\"anyOf\"] = [];\n    for (const i of listWithoutNull) {\n      const upperCaseType = i.toUpperCase();\n      resultingSchema[\"anyOf\"].push({\n        type: Object.values(Type).includes(upperCaseType)\n          ? upperCaseType\n          : Type.TYPE_UNSPECIFIED,\n      });\n    }\n  }\n}\n\n/**\n * Process a JSON schema to make it compatible with the GenAI API\n * @param {Object} _jsonSchema - The JSON schema to process\n * @returns {Object} - The processed schema\n */\nfunction processJsonSchema(_jsonSchema) {\n  const genAISchema = {};\n  const schemaFieldNames = [\"items\"];\n  const listSchemaFieldNames = [\"anyOf\"];\n  const dictSchemaFieldNames = [\"properties\"];\n\n  if (_jsonSchema[\"type\"] && _jsonSchema[\"anyOf\"]) {\n    throw new Error(\"type and anyOf cannot be both populated.\");\n  }\n\n  /*\n  This is to handle the nullable array or object. The _jsonSchema will\n  be in the format of {anyOf: [{type: 'null'}, {type: 'object'}]}. The\n  logic is to check if anyOf has 2 elements and one of the element is null,\n  if so, the anyOf field is unnecessary, so we need to get rid of the anyOf\n  field and make the schema nullable. Then use the other element as the new\n  _jsonSchema for processing. This is because the backend doesn't have a null\n  type.\n  */\n  const incomingAnyOf = _jsonSchema[\"anyOf\"];\n  if (\n    incomingAnyOf != null &&\n    Array.isArray(incomingAnyOf) &&\n    incomingAnyOf.length == 2\n  ) {\n    if (incomingAnyOf[0] && incomingAnyOf[0][\"type\"] === \"null\") {\n      genAISchema[\"nullable\"] = true;\n      _jsonSchema = incomingAnyOf[1];\n    } else if (incomingAnyOf[1] && incomingAnyOf[1][\"type\"] === \"null\") {\n      genAISchema[\"nullable\"] = true;\n      _jsonSchema = incomingAnyOf[0];\n    }\n  }\n\n  if (_jsonSchema[\"type\"] && Array.isArray(_jsonSchema[\"type\"])) {\n    flattenTypeArrayToAnyOf(_jsonSchema[\"type\"], genAISchema);\n  }\n\n  for (const [fieldName, fieldValue] of Object.entries(_jsonSchema)) {\n    // Skip if the fieldValue is undefined or null.\n    if (fieldValue == null) {\n      continue;\n    }\n\n    if (fieldName == \"type\") {\n      if (fieldValue === \"null\") {\n        throw new Error(\n          \"type: null can not be the only possible type for the field.\"\n        );\n      }\n      if (Array.isArray(fieldValue)) {\n        // we have already handled the type field with array of types in the\n        // beginning of this function.\n        continue;\n      }\n      const upperCaseValue = fieldValue.toUpperCase();\n      genAISchema[\"type\"] = Object.values(Type).includes(upperCaseValue)\n        ? upperCaseValue\n        : Type.TYPE_UNSPECIFIED;\n    } else if (schemaFieldNames.includes(fieldName)) {\n      genAISchema[fieldName] = processJsonSchema(fieldValue);\n    } else if (listSchemaFieldNames.includes(fieldName)) {\n      const listSchemaFieldValue = [];\n      for (const item of fieldValue) {\n        if (item[\"type\"] == \"null\") {\n          genAISchema[\"nullable\"] = true;\n          continue;\n        }\n        listSchemaFieldValue.push(processJsonSchema(item));\n      }\n      genAISchema[fieldName] = listSchemaFieldValue;\n    } else if (dictSchemaFieldNames.includes(fieldName)) {\n      const dictSchemaFieldValue = {};\n      for (const [key, value] of Object.entries(fieldValue)) {\n        dictSchemaFieldValue[key] = processJsonSchema(value);\n      }\n      genAISchema[fieldName] = dictSchemaFieldValue;\n    } else {\n      // additionalProperties is not included in JSONSchema, skipping it.\n      if (fieldName === \"additionalProperties\") {\n        continue;\n      }\n      genAISchema[fieldName] = fieldValue;\n    }\n  }\n  return genAISchema;\n}\n\n/**\n * Transform a tool object\n * @param {Object} tool - The tool object to transform\n * @returns {Object} - The transformed tool object\n */\nfunction tTool(tool) {\n  if (tool.functionDeclarations) {\n    for (const functionDeclaration of tool.functionDeclarations) {\n      if (functionDeclaration.parameters) {\n        if (!Object.keys(functionDeclaration.parameters).includes(\"$schema\")) {\n          functionDeclaration.parameters = processJsonSchema(\n            functionDeclaration.parameters\n          );\n        } else {\n          if (!functionDeclaration.parametersJsonSchema) {\n            functionDeclaration.parametersJsonSchema =\n              functionDeclaration.parameters;\n            delete functionDeclaration.parameters;\n          }\n        }\n      }\n      if (functionDeclaration.response) {\n        if (!Object.keys(functionDeclaration.response).includes(\"$schema\")) {\n          functionDeclaration.response = processJsonSchema(\n            functionDeclaration.response\n          );\n        } else {\n          if (!functionDeclaration.responseJsonSchema) {\n            functionDeclaration.responseJsonSchema =\n              functionDeclaration.response;\n            delete functionDeclaration.response;\n          }\n        }\n      }\n    }\n  }\n  return tool;\n}\n\nclass GeminiCLITransformer {\n  name = \"gemini-cli\";\n\n  constructor(options) {\n    this.options = options;\n    try {\n      this.oauth_creds = require(OAUTH_FILE);\n    } catch {}\n  }\n\n  async transformRequestIn(request, provider) {\n    if (this.oauth_creds && this.oauth_creds.expiry_date < +new Date()) {\n      await this.refreshToken(this.oauth_creds.refresh_token);\n    }\n    const tools = [];\n    const functionDeclarations = request.tools\n      ?.filter((tool) => tool.function.name !== \"web_search\")\n      ?.map((tool) => {\n        return {\n          name: tool.function.name,\n          description: tool.function.description,\n          parametersJsonSchema: tool.function.parameters,\n        };\n      });\n    if (functionDeclarations?.length) {\n      tools.push(\n        tTool({\n          functionDeclarations,\n        })\n      );\n    }\n    const webSearch = request.tools?.find(\n      (tool) => tool.function.name === \"web_search\"\n    );\n    if (webSearch) {\n      tools.push({\n        googleSearch: {},\n      });\n    }\n    return {\n      body: {\n        request: {\n\n          contents: request.messages.map((message) => {\n            let role;\n            if (message.role === \"assistant\") {\n              role = \"model\";\n            } else if ([\"user\", \"system\", \"tool\"].includes(message.role)) {\n              role = \"user\";\n            } else {\n              role = \"user\"; // Default to user if role is not recognized\n            }\n\n            const parts = [];\n\n            // 1️⃣ Normalize message.content\n            if (typeof message.content === \"string\") {\n              parts.push({ text: message.content });\n            } else if (Array.isArray(message.content)) {\n              for (const c of message.content) {\n                if (!c) continue;\n                if (c.type === \"text\" && c.text) {\n                  parts.push({ text: c.text });\n                } else if (c.type === \"image_url\" && c.image_url?.url) {\n                  if (c.image_url.url.startsWith(\"http\")) {\n                    parts.push({\n                      file_data: { mime_type: c.media_type, file_uri: c.image_url.url },\n                    });\n                  } else {\n                    parts.push({\n                      inlineData: { mime_type: c.media_type, data: c.image_url.url.split(\",\").pop() },\n                    });\n                  }\n                }\n              }\n            } else if (message.content && typeof message.content === \"object\") {\n              // Object like { text: \"...\" }\n              if (message.content.text) {\n                parts.push({ text: message.content.text });\n              } else {\n                parts.push({ text: JSON.stringify(message.content) });\n              }\n            }\n\n            // 2️⃣ Add tool calls\n            if (Array.isArray(message.tool_calls)) {\n              for (const t of message.tool_calls) {\n                parts.push({\n                  functionCall: {\n                    id: t.id || `tool_${Math.random().toString(36).slice(2, 15)}`,\n                    name: t.function.name,\n                    args: JSON.parse(t.function.arguments || \"{}\"),\n                  },\n                });\n              }\n            }\n\n            // 3️⃣ Ensure at least one part exists\n            if (parts.length === 0) {\n              parts.push({ text: \"\" });\n            }\n\n            return {\n              role,\n              parts,\n            };\n          }),\n          tools: tools.length ? tools : undefined,\n        },\n        model: request.model,\n        project: this.options?.project,\n      },\n      config: {\n        url: new URL(\n          `https://cloudcode-pa.googleapis.com/v1internal:${\n            request.stream ? \"streamGenerateContent?alt=sse\" : \"generateContent\"\n          }`\n        ),\n        headers: {\n          Authorization: `Bearer ${this.oauth_creds.access_token}`,\n        },\n      },\n    };\n  }\n\n  async transformResponseOut(response) {\n    if (response.headers.get(\"Content-Type\")?.includes(\"application/json\")) {\n      let jsonResponse = await response.json();\n      jsonResponse = jsonResponse.response;\n      const tool_calls = jsonResponse.candidates[0].content.parts\n        ?.filter((part) => part.functionCall)\n        ?.map((part) => ({\n          id:\n            part.functionCall?.id ||\n            `tool_${Math.random().toString(36).substring(2, 15)}`,\n          type: \"function\",\n          function: {\n            name: part.functionCall?.name,\n            arguments: JSON.stringify(part.functionCall?.args || {}),\n          },\n        }));\n      const res = {\n        id: jsonResponse.responseId,\n        choices: [\n          {\n            finish_reason:\n              jsonResponse.candidates[0].finishReason?.toLowerCase() || null,\n            index: 0,\n            message: {\n              content: jsonResponse.candidates[0].content.parts\n                .filter((part) => part.text)\n                .map((part) => part.text)\n                .join(\"\\n\"),\n              role: \"assistant\",\n              tool_calls: tool_calls.length > 0 ? tool_calls : undefined,\n            },\n          },\n        ],\n        created: parseInt(new Date().getTime() / 1000 + \"\", 10),\n        model: jsonResponse.modelVersion,\n        object: \"chat.completion\",\n        usage: {\n          completion_tokens: jsonResponse.usageMetadata.candidatesTokenCount,\n          prompt_tokens: jsonResponse.usageMetadata.promptTokenCount,\n          total_tokens: jsonResponse.usageMetadata.totalTokenCount,\n        },\n      };\n      return new Response(JSON.stringify(res), {\n        status: response.status,\n        statusText: response.statusText,\n        headers: response.headers,\n      });\n    } else if (response.headers.get(\"Content-Type\")?.includes(\"stream\")) {\n      if (!response.body) {\n        return response;\n      }\n\n      const decoder = new TextDecoder();\n      const encoder = new TextEncoder();\n\n      const processLine = (line, controller) => {\n        if (line.startsWith(\"data: \")) {\n          const chunkStr = line.slice(6).trim();\n          if (chunkStr) {\n            this.logger.debug({ chunkStr }, \"gemini-cli chunk:\");\n            try {\n              let chunk = JSON.parse(chunkStr);\n              chunk = chunk.response;\n              const tool_calls = chunk.candidates[0].content.parts\n                ?.filter((part) => part.functionCall)\n                ?.map((part) => ({\n                  id:\n                    part.functionCall?.id ||\n                    `tool_${Math.random().toString(36).substring(2, 15)}`,\n                  type: \"function\",\n                  function: {\n                    name: part.functionCall?.name,\n                    arguments: JSON.stringify(part.functionCall?.args || {}),\n                  },\n                }));\n              const res = {\n                choices: [\n                  {\n                    delta: {\n                      role: \"assistant\",\n                      content: chunk.candidates[0].content.parts\n                        ?.filter((part) => part.text)\n                        ?.map((part) => part.text)\n                        ?.join(\"\\n\"),\n                      tool_calls:\n                        tool_calls.length > 0 ? tool_calls : undefined,\n                    },\n                    finish_reason:\n                      chunk.candidates[0].finishReason?.toLowerCase() || null,\n                    index:\n                      chunk.candidates[0].index || tool_calls.length > 0\n                        ? 1\n                        : 0,\n                    logprobs: null,\n                  },\n                ],\n                created: parseInt(new Date().getTime() / 1000 + \"\", 10),\n                id: chunk.responseId || \"\",\n                model: chunk.modelVersion || \"\",\n                object: \"chat.completion.chunk\",\n                system_fingerprint: \"fp_a49d71b8a1\",\n                usage: {\n                  completion_tokens: chunk.usageMetadata.candidatesTokenCount,\n                  prompt_tokens: chunk.usageMetadata.promptTokenCount,\n                  total_tokens: chunk.usageMetadata.totalTokenCount,\n                },\n              };\n              if (\n                chunk.candidates[0]?.groundingMetadata?.groundingChunks?.length\n              ) {\n                res.choices[0].delta.annotations =\n                  chunk.candidates[0].groundingMetadata.groundingChunks.map(\n                    (groundingChunk, index) => {\n                      const support =\n                        chunk.candidates[0]?.groundingMetadata?.groundingSupports?.filter(\n                          (item) => item.groundingChunkIndices.includes(index)\n                        );\n                      return {\n                        type: \"url_citation\",\n                        url_citation: {\n                          url: groundingChunk.web.uri,\n                          title: groundingChunk.web.title,\n                          content: support?.[0].segment.text,\n                          start_index: support?.[0].segment.startIndex,\n                          end_index: support?.[0].segment.endIndex,\n                        },\n                      };\n                    }\n                  );\n              }\n              controller.enqueue(\n                encoder.encode(`data: ${JSON.stringify(res)}\\n\\n`)\n              );\n            } catch (error) {\n              this.logger.error(\n                { chunkStr, error },\n                \"Error parsing Gemini stream chunk\"\n              );\n            }\n          }\n        }\n      };\n\n      const stream = new ReadableStream({\n        async start(controller) {\n          const reader = response.body.getReader();\n          let buffer = \"\";\n          try {\n            while (true) {\n              const { done, value } = await reader.read();\n              if (done) {\n                if (buffer) {\n                  processLine(buffer, controller);\n                }\n                break;\n              }\n\n              buffer += decoder.decode(value, { stream: true });\n              const lines = buffer.split(\"\\n\");\n\n              buffer = lines.pop() || \"\";\n\n              for (const line of lines) {\n                processLine(line, controller);\n              }\n            }\n          } catch (error) {\n            controller.error(error);\n          } finally {\n            controller.close();\n          }\n        },\n      });\n\n      return new Response(stream, {\n        status: response.status,\n        statusText: response.statusText,\n        headers: response.headers,\n      });\n    }\n    return response;\n  }\n\n  refreshToken(refresh_token) {\n    return fetch(\"https://oauth2.googleapis.com/token\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        client_id:\n          \"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com\",\n        client_secret: \"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\",\n        refresh_token: refresh_token,\n        grant_type: \"refresh_token\",\n      }),\n    })\n      .then((response) => response.json())\n      .then(async (data) => {\n        data.expiry_date =\n          new Date().getTime() + data.expires_in * 1000 - 1000 * 60;\n        data.refresh_token = refresh_token;\n        delete data.expires_in;\n        this.oauth_creds = data;\n        await fs.writeFile(OAUTH_FILE, JSON.stringify(data, null, 2));\n      });\n  }\n}\n\nmodule.exports = GeminiCLITransformer;\n```\n\nBoth are tested and working for all scenarios on my local machine. Please let me know if there's a more appropriate way to handle this update since these files are not in the repo.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/897/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/895",
      "id": 3501345177,
      "node_id": "I_kwDON-_mZc7QskmZ",
      "number": 895,
      "title": "Deepseek的max tokens貌似无法限制长度。",
      "user": {
        "login": "denggit",
        "id": 42121907,
        "node_id": "MDQ6VXNlcjQyMTIxOTA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/42121907?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/denggit",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-10T04:43:59Z",
      "updated_at": "2025-11-04T15:54:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置如下：\n{\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"*\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n        \"transformer\": {\n                \"use\": [\n                  \"deepseek\",\n                  [\"maxtoken\", { \"max_tokens\": 123000 }]\n                ],\n                \"deepseek-chat\": {\n                  \"use\": [\"tooluse\"],\n                  \"completion_tokens\": 8000\n                }\n          }\n        },\n\n错误如下：\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(deepseek,deepseek-chat: 400): {\\\"error\\\":{\\\"message\\\":\\\"This model's maximum context length is 131072 tokens. However, you \n    requested 131329 tokens (123137 in the messages, 8192 in the completion). Please reduce the length of the messages or \n    completion.\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}Error: Error from provider(deepseek,deepseek-chat: 400): \n    {\\\"error\\\":{\\\"message\\\":\\\"This model's maximum context length is 131072 tokens. However, you requested 131329 tokens (123137 in the messages, 8192 in the completion). Please reduce \n    the length of the messages or completion.\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}\\n    at nt \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n\n        at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/895/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/894",
      "id": 3501249388,
      "node_id": "I_kwDON-_mZc7QsNNs",
      "number": 894,
      "title": "连接不到claude code router 本地设置的模型",
      "user": {
        "login": "py8166",
        "id": 148367651,
        "node_id": "U_kgDOCNfpIw",
        "avatar_url": "https://avatars.githubusercontent.com/u/148367651?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/py8166",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-10T03:38:23Z",
      "updated_at": "2025-10-10T03:38:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n ▐▛███▜▌   Claude Code v2.0.13\n▝▜█████▛▘  Sonnet 4.5 · API Usage Billing\n  ▘▘ ▝▝    C:\\Users\\Administrator\n\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n> Try \"edit <filepath> to...\"\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n  ? for shortcuts\n\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/894/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/892",
      "id": 3498686392,
      "node_id": "I_kwDON-_mZc7Qibe4",
      "number": 892,
      "title": "claude --dangerously-skip-permissions",
      "user": {
        "login": "wanllow",
        "id": 92145159,
        "node_id": "U_kgDOBX4GBw",
        "avatar_url": "https://avatars.githubusercontent.com/u/92145159?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wanllow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-10-09T11:05:45Z",
      "updated_at": "2025-10-28T01:22:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用ccr时，如何使用claude的启动参数？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/892/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/891",
      "id": 3498352330,
      "node_id": "I_kwDON-_mZc7QhJ7K",
      "number": 891,
      "title": "doesnt work with gemini 2.5pro",
      "user": {
        "login": "SHAGGYER",
        "id": 27098411,
        "node_id": "MDQ6VXNlcjI3MDk4NDEx",
        "avatar_url": "https://avatars.githubusercontent.com/u/27098411?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SHAGGYER",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-09T09:26:10Z",
      "updated_at": "2025-10-09T09:26:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Doesnt work.\n\nmy config.json is:\n\n```\n{\n  \"server\": {\n    \"host\": \"0.0.0.0\",\n    \"port\": 8787\n  },\n  \"providers\": {\n    \"gemini\": {\n      \"name\": \"Gemini 2.5 Pro\",\n      \"type\": \"google\",\n      \"model\": \"gemini-2.5-pro-preview\",\n      \"endpoint\": \"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro-preview:generateContent\",\n      \"api_key\": \"xxx\",\n      \"headers\": {\n        \"Content-Type\": \"application/json\"\n      },\n      \"body_template\": {\n        \"contents\": [\n          {\n            \"role\": \"user\",\n            \"parts\": [\n              {\n                \"text\": \"{{prompt}}\"\n              }\n            ]\n          }\n        ]\n      },\n      \"response_path\": \"candidates[0].content.parts[0].text\"\n    }\n  },\n  \"routing\": {\n    \"default\": \"gemini\",\n    \"think\": \"gemini\",\n    \"long\": \"gemini\",\n    \"background\": \"gemini\"\n  },\n  \"transformers\": {\n    \"pre_prompt\": [\n      {\n        \"type\": \"prepend\",\n        \"text\": \"You are Gemini 2.5 Pro acting as Claude Code. Respond with helpful, concise, and code-ready answers.\"\n      }\n    ],\n    \"post_response\": [\n      {\n        \"type\": \"trim\"\n      }\n    ]\n  },\n  \"logging\": {\n    \"level\": \"info\",\n    \"color\": true\n  }\n}\n\n```\n\nand when running ccr code, i get\n\nSonnet 4.5 · API Usage Billing ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/891/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/890",
      "id": 3498238648,
      "node_id": "I_kwDON-_mZc7QguK4",
      "number": 890,
      "title": "无法使用，我换了几个API提供商，总是报API error",
      "user": {
        "login": "LightSofa",
        "id": 2208855,
        "node_id": "MDQ6VXNlcjIyMDg4NTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2208855?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LightSofa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-09T08:53:41Z",
      "updated_at": "2025-10-12T07:21:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"932\" height=\"900\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d3f10f84-5076-4a4c-84a8-d61fa0874db0\" />\n<img width=\"2263\" height=\"184\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a9c2dda6-91b5-47ee-b1d3-2c9981738c5c\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/890/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/889",
      "id": 3498039000,
      "node_id": "I_kwDON-_mZc7Qf9bY",
      "number": 889,
      "title": "deepseek-r1应该使用什么transformer",
      "user": {
        "login": "wangfeng1988",
        "id": 4754449,
        "node_id": "MDQ6VXNlcjQ3NTQ0NDk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4754449?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wangfeng1988",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-09T07:52:17Z",
      "updated_at": "2025-10-09T08:05:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "公司内网搭建的deepseek-r1满血版，这是部署使用的参数。我应该选择什么样的transformer。我大概试了下，都不行\n\n![Image](https://github.com/user-attachments/assets/d2c6b5fa-8775-4962-8cbc-f9f2f29d5909)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/889/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/888",
      "id": 3496435449,
      "node_id": "I_kwDON-_mZc7QZ175",
      "number": 888,
      "title": "是否可以增加Openai-Response标准的转换器",
      "user": {
        "login": "iaenolhy",
        "id": 171220572,
        "node_id": "U_kgDOCjSeXA",
        "avatar_url": "https://avatars.githubusercontent.com/u/171220572?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iaenolhy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-08T18:18:42Z",
      "updated_at": "2025-10-08T18:18:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "是否可以增加Openai-Response标准的转换器",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/888/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/886",
      "id": 3493830422,
      "node_id": "I_kwDON-_mZc7QP58W",
      "number": 886,
      "title": "OpenAI Compatible报错：TypeError: Cannot read properties of undefined (reading 'split')",
      "user": {
        "login": "WenChunTech",
        "id": 52595007,
        "node_id": "MDQ6VXNlcjUyNTk1MDA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/52595007?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/WenChunTech",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-08T04:55:07Z",
      "updated_at": "2025-10-08T04:55:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "报错信息如下：\n```\nTypeError: Cannot read properties of undefined (reading 'split')\n    at jy2 (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:1041:117)\n    at file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:1043:132\n    at Object.useMemo (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:34:25928)\n    at S8Q.useMemo (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:10:7000)\n    at vz (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:1043:75)\n    at qC (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:34:19415)\n    at Wp (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:36:42814)\n    at G9 (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:36:38355)\n    at zh (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:36:38283)\n    at yC (file:///Users/fwc/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:36:38137)\n\n  ERROR  Cannot read properties of undefined (reading 'split')\n```\n\n[ccr-20251008113457.log](https://github.com/user-attachments/files/22758936/ccr-20251008113457.log)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/886/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/884",
      "id": 3492052084,
      "node_id": "I_kwDON-_mZc7QJHx0",
      "number": 884,
      "title": "API error401(attempt 4/10) · API_TIMEOUT_MS=6000ms,",
      "user": {
        "login": "LimbusSpace",
        "id": 230680809,
        "node_id": "U_kgDODb_o6Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/230680809?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LimbusSpace",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-07T15:49:41Z",
      "updated_at": "2025-10-09T14:57:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"60000000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"siliconflow\",\n      \"api_base_url\": \"https://api.siliconflow.com/v1/chat/completions\",\n      \"api_key\": \"sk-sa（cherry studio测试能用）\",\n      \"models\": [\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"zai-org/GLM-4.6\",\n        \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Pro/deepseek-ai/DeepSeek-V3.1-Terminus\"\n      ],\n      \"transformer\": {}\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"siliconflow,zai-org/GLM-4.6\",\n    \"background\": \"siliconflow,Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n    \"think\": \"siliconflow,Qwen/Qwen3-235B-A22B-Thinking-2507\",\n    \"longContext\": \"siliconflow,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n    \"longContextThreshold\": 20000,\n    \"webSearch\": \"siliconflow,Pro/deepseek-ai/DeepSeek-V3.1-Terminus\",\n    \"image\": \"siliconflow,Qwen/Qwen3-Omni-30B-A3B-Instruct\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/884/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/883",
      "id": 3491515963,
      "node_id": "I_kwDON-_mZc7QHE47",
      "number": 883,
      "title": "目前还不兼容OpenAI格式的模型，能否加进去？",
      "user": {
        "login": "dashixin",
        "id": 54067953,
        "node_id": "MDQ6VXNlcjU0MDY3OTUz",
        "avatar_url": "https://avatars.githubusercontent.com/u/54067953?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dashixin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-10-07T13:30:53Z",
      "updated_at": "2025-10-09T12:13:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "接入OpenAI格式的模型存在问题，可以调通模型 ，但是无法写入。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/883/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/882",
      "id": 3491148850,
      "node_id": "I_kwDON-_mZc7QFrQy",
      "number": 882,
      "title": "No web search and no image recognition.",
      "user": {
        "login": "NeverBeLazyG",
        "id": 98562993,
        "node_id": "U_kgDOBd_zsQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/98562993?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NeverBeLazyG",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-07T11:46:26Z",
      "updated_at": "2025-10-27T01:03:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, can someone help me, what could be the reason why neither web search nor image recognition works for me in Claude Code?\n\nare my settings correct ?\n\n```\n\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"xxxxxxxxxxxxxxxxxxxxxx\",\n      \"models\": [\n        \"moonshotai/kimi-k2\",\n        \"gemini-2.5-flash-latest\",\n        \"gemini-2.5-pro-latest\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\"\n        ]\n      }\n    },\n    {\n      \"name\": \"dashscope\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"xxxxxxxxxxxxxxxxxxxxxxxxx\",\n      \"models\": [\n        \"qwen3-coder-plus\",\n        \"qwen3-next-80b-a3b-thinking\",\n        \"Qwen3-235B-A22B-Thinking-2507\",\n        \"qwen3-max-preview\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ]\n        ],\n        \"qwen3-coder-plus\": {\n          \"use\": [\n            \"enhancetool\"\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"xxxxxxxxxxxxxxxxxxx\",\n      \"models\": [\n        \"gemini-2.5-flash-latest\",\n        \"gemini-2.5-pro-latest\",\n        \"gemini-2.5-flash-lite-latest\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ],\n        \"gemini-2.5-pro\": {\n          \"use\": [\n            \"gemini\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\",\n    \"background\": \"openrouter,moonshotai/kimi-k2\",\n    \"think\": \"dashscope,Qwen3-235B-A22B-Thinking-2507\",\n    \"longContext\": \"gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-pro\",\n    \"image\": \"gemini,gemini-2.5-pro\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\",\n  \"forceUseImageAgent\": true\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/882/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/881",
      "id": 3490447419,
      "node_id": "I_kwDON-_mZc7QDAA7",
      "number": 881,
      "title": "DeepSeek 的 Anthropic API在配置了 `sampling` 参数后会报错：`API Error: 400`",
      "user": {
        "login": "Xiao-Jiang-233",
        "id": 122152524,
        "node_id": "U_kgDOB0fmTA",
        "avatar_url": "https://avatars.githubusercontent.com/u/122152524?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Xiao-Jiang-233",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-07T08:16:20Z",
      "updated_at": "2025-10-28T03:36:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我的配置文件：\n```json\n{\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/anthropic/v1/messages\",\n      \"api_key\": \"sk-***************************\",\n      \"models\": [\n        \"deepseek-chat\",\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"Anthropic\",\n          [\n            \"sampling\",\n            {\n              \"temperature\": \"0.0\"\n            }\n          ]\n        ]\n      }\n}\n```\n\n控制台报错信息：\n```bash\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(deepseek,deepseek-chat: 400):\n    {\\\"error\\\":{\\\"message\\\":\\\"Failed to deserialize the JSON body into the target type: messages[0].role: unknown\n    variant `system`, expected `user` or `assistant` at line 1 column\n    29\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}Error: Error from\n    provider(deepseek,deepseek-chat: 400): {\\\"error\\\":{\\\"message\\\":\\\"Failed to deserialize the JSON body into the target\n     type: messages[0].role: unknown variant `system`, expected `user` or `assistant` at line 1 column\n    29\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_request_error\\\"}}\\n    at nt\n    (E:\\\\nvm\\\\v22.18.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:76767:11)\\n    at d0\n    (E:\\\\nvm\\\\v22.18.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:76825:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async c0\n    (E:\\\\nvm\\\\v22.18.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:76792:96)\",\"type\":\"api_error\",\"code\"\n    :\"provider_response_error\"}}\n```\n\n详细日志：\n[ccr-20251007161127.log](https://github.com/user-attachments/files/22737909/ccr-20251007161127.log)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/881/reactions",
        "total_count": 3,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/880",
      "id": 3487620331,
      "node_id": "I_kwDON-_mZc7P4Nzr",
      "number": 880,
      "title": "有关Qwen3-Coder 用ccr code，易Request limit exceeded的问题",
      "user": {
        "login": "zhy1369800",
        "id": 24792400,
        "node_id": "MDQ6VXNlcjI0NzkyNDAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/24792400?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhy1369800",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-10-06T14:38:25Z",
      "updated_at": "2025-10-20T07:45:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/messages\",\n      \"api_key\": \"api_key\",\n      \"models\": [\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n      ],\n\t  \"transformer\": {\n        \"use\": [\n          \"Anthropic\"\n        ]\n      }\n    }\n\nQwen3-Coder是支持anthropic api协议的， 配置如上。发现个有趣的问题：\n用ccr code启动对话，实测不到60次，就返回Request limit exceeded。\n\n设置环境变量，直接用原claude code启动对话， 正常响应",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/880/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/878",
      "id": 3486055483,
      "node_id": "I_kwDON-_mZc7PyPw7",
      "number": 878,
      "title": "advanced config for GPT-OSS-120B",
      "user": {
        "login": "olk",
        "id": 914496,
        "node_id": "MDQ6VXNlcjkxNDQ5Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/914496?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/olk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-06T07:42:53Z",
      "updated_at": "2025-11-09T08:43:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello,\nI'm uncertain if my config for a local hosted GPT-OSS-120B is correct - I'd like to get some advice ... especially are these \"trooluse\", \"enhancetool\" and \"reasoning\" transformers are required for optimal performance.\nty, Oliver\n\n```\n{\n\t\"LOG\": true,\n\t\"API_TIMEOUT_MS\": 600000,\n\t\"Providers\": [\n\t\t{\n\t\t\t\"name\": \"vllm\",\n\t\t\t\"api_base_url\": \"http://vllm-gpt-oss-120b:8000/v1/chat/completions\",\n\t\t\t\"api_key\": \"sk-12345\",\n\t\t\t\"models\": [\n\t\t\t\t\"gpt-oss-120b\"\n\t\t\t],\n\t\t\t\"transformer\": {\n\t\t\t\t\"use\": [\n\t\t\t\t\t\"vllm\",\n\t\t\t\t\t{\n\t\t\t\t\t\t\"temperature\": 1.0,\n\t\t\t\t\t\t\"top_p\": 1.0,\n\t\t\t\t\t\t\"top_k\": 0.0,\n\t\t\t\t\t\t\"repetition_penalty\": 1.1,\n\t\t\t\t\t\t\"frequency_penalty\": 0.2,\n\t\t\t\t\t\t\"presence_penalty\": 0.1,\n\t\t\t\t\t\t\"reasoning_effort\": \"high\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t],\n\t\"Router\": {\n\t\t\"default\": \"vllm,gpt-oss-120b\"\n\t}\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/878/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/875",
      "id": 3485003695,
      "node_id": "I_kwDON-_mZc7PuO-v",
      "number": 875,
      "title": "After I upgraded Claude Code to 2.0, the command \"ccr code --dangerously-skip-permissions\" no longer runs smoothly.",
      "user": {
        "login": "jkboy",
        "id": 6918054,
        "node_id": "MDQ6VXNlcjY5MTgwNTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6918054?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jkboy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-05T17:34:26Z",
      "updated_at": "2025-10-09T08:17:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1242\" height=\"260\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/87098ede-7f14-47b8-a4d0-b5722d5d939d\" />\nHas anyone else encountered the same issue?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/875/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/873",
      "id": 3484218591,
      "node_id": "I_kwDON-_mZc7PrPTf",
      "number": 873,
      "title": "no streaming responses?",
      "user": {
        "login": "aleks-mariusz",
        "id": 2719694,
        "node_id": "MDQ6VXNlcjI3MTk2OTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2719694?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aleks-mariusz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-04T23:30:43Z",
      "updated_at": "2026-01-10T06:27:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "pardon me as i am new to claude code -- so don't know if this is a limitation of claude code or of claude code router.. \n\ni have played w/ gemini-cli, llxprt-code, and opencode.. \n\nnever really thougth to try claude-code until i saw CCR but --\n\nis there something i'm doing wrong because i never get any streaming responses -- i tried with gemini's api, with local llama-server, no streaming responess at all.. \n\nis this just a limitation of CCR/claude-code or am i doing something wrong?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/873/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/872",
      "id": 3483373794,
      "node_id": "I_kwDON-_mZc7PoBDi",
      "number": 872,
      "title": "ImageAgent intercepts all tool calls after processing images, causing crashes",
      "user": {
        "login": "DonMecca",
        "id": 2199157,
        "node_id": "MDQ6VXNlcjIxOTkxNTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2199157?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DonMecca",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-10-04T07:55:29Z",
      "updated_at": "2025-10-07T17:47:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Bug Description\n\nAfter ImageAgent processes an image request, it remains active for the entire conversation and incorrectly intercepts ALL subsequent tool calls (WebSearch, Task, etc.), causing a `TypeError: msg?.content?.some is not a function` crash.\n\n## Environment\n\n- **CCR Version**: Latest (Homebrew installation)\n- **Installation Path**: `/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router`\n- **Platform**: macOS (Darwin 25.0.0)\n- **Node**: v24.6.0\n\n## Reproduction Steps\n\n### Test 1: Baseline (No Image) ✅\n```\n/clear\n> hi\n✅ Success\n\n> what's the fastest ferrari? do a websearch\n✅ WebSearch executed successfully\n✅ Result: \"Did 7 searches in 17s\"\n```\n\n### Test 2: With Image in History ❌\n```\n/clear\n> what's the fastest ferrari? do a websearch\n✅ WebSearch works (no image in history yet)\n\n> [Image #1] whats going on in this screenshot?\n✅ Image processed successfully\n\n> whats the top selling ferrari? do a websearch\n❌ 500 ERROR - ImageAgent crash\n❌ 9 retry attempts, all failed with same error\n```\n\n## Expected Behavior\n\n- ImageAgent should **only** activate when the current request contains images\n- Non-image requests (especially tool calls) should execute normally regardless of conversation history\n- WebSearch and other tools should work correctly even after images have been processed earlier in the conversation\n\n## Actual Behavior\n\n- ImageAgent activates based on **conversation history** (if ANY image exists)\n- Once active, ImageAgent **intercepts ALL tool calls** for the rest of the conversation\n- ImageAgent crashes when processing non-image tool calls due to content structure mismatch\n- All subsequent tool calls fail until CCR restart\n\n## Root Cause Analysis\n\nImageAgent uses conversation history to determine activation:\n\n1. **No image in history** → ImageAgent inactive → Tool calls work ✅\n2. **Image processed** → ImageAgent activates based on history presence\n3. **Image in history** → ImageAgent stays active for entire conversation\n4. **Any tool called** → ImageAgent intercepts (incorrect behavior)\n5. **Content mismatch** → ImageAgent expects image array structure, receives tool structure → **Crash**\n\nThe activation logic checks **conversation history** instead of checking if the **current request** contains images.\n\n## Error Details\n\n**Error Message:**\n```\nTypeError: msg?.content?.some is not a function\n```\n\n**Full Stack Trace:**\n```\nTypeError: msg?.content?.some is not a function\n    at /opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:81977:134\n    at Array.some (<anonymous>)\n    at /opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:81977:82\n    at Array.filter (<anonymous>)\n    at ImageAgent.reqHandler (/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:81976:45)\n    at Object.<anonymous> (/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:82151:17)\n    at hookIterator (/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3785:14)\n    at next (/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3653:22)\n    at handleResolve (/opt/homebrew/Cellar/node/24.6.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3663:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n```\n\n**Failing Code Location:**\n- `cli.js:81976-81977` in `ImageAgent.reqHandler`\n- The code uses `msg?.content?.some()` assuming content is always an array\n- For tool calls, content has a different structure (not an array)\n\n## Log Evidence\n\nFrom `ccr-20251004034350.log`:\n\n**First WebSearch (no image in history) - Success:**\n```json\n{\"reqId\":\"req-4\",\"msg\":\"Using webSearch model for ...\"}\n// WebSearch executed successfully - no ImageAgent interference\n```\n\n**After Image Processing - ImageAgent Crash:**\n```json\n{\"level\":50,\"reqId\":\"req-9\",\"err\":{\n  \"type\":\"TypeError\",\n  \"message\":\"msg?.content?.some is not a function\",\n  \"stack\":\"TypeError: msg?.content?.some is not a function\\n    at .../cli.js:81977:134\"\n}}\n```\n\n**Retry attempts (all failed):**\n- req-9, req-a, req-b, req-c, req-d, req-e, req-f, req-g, req-h, req-i\n- All failed with identical ImageAgent error\n\n## Impact\n\n- **Severity**: High - Completely breaks tool usage after any image request\n- **Frequency**: 100% reproducible \n- **Scope**: Affects ALL tool calls (WebSearch, Task, custom tools, etc.)\n- **Workaround**: Manual CCR restart required after every image request\n\n## Current Workaround\n\nThe only workaround is to **restart CCR** after processing any image:\n```bash\nccr restart\n```\n\nThis is not sustainable for workflows requiring both image processing and tool usage.\n\n## Additional Notes\n\n- ImageAgent is registered as a global hook (hookIterator in stack trace)\n- The hook appears to check conversation history rather than current request\n- Changing WebSearch model from `grok-4-fast:free` to `gemini-2.5-pro` confirmed the issue is ImageAgent-specific (WebSearch works fine when ImageAgent doesn't interfere)\n\n---\n\nThank you for this excellent project! This bug prevents seamless multimodal + tool workflows. Happy to provide additional testing or information if needed.",
      "closed_by": {
        "login": "DonMecca",
        "id": 2199157,
        "node_id": "MDQ6VXNlcjIxOTkxNTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2199157?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DonMecca",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/872/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/870",
      "id": 3483140592,
      "node_id": "I_kwDON-_mZc7PnIHw",
      "number": 870,
      "title": "如何传入 Claude Code 的启动配置？",
      "user": {
        "login": "yhchen4-lab",
        "id": 221983947,
        "node_id": "U_kgDODTs0yw",
        "avatar_url": "https://avatars.githubusercontent.com/u/221983947?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yhchen4-lab",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-04T03:30:05Z",
      "updated_at": "2025-10-04T03:30:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "例如 --dangerously-skip-permissions ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/870/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/869",
      "id": 3481470141,
      "node_id": "I_kwDON-_mZc7PgwS9",
      "number": 869,
      "title": "npm安装提示npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead",
      "user": {
        "login": "zhaoqi9",
        "id": 25588431,
        "node_id": "MDQ6VXNlcjI1NTg4NDMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/25588431?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhaoqi9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-03T15:05:30Z",
      "updated_at": "2025-10-03T15:05:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "已经安装了ccr，执行npm install -g @musistudio/claude-code-router或者npm update -g会提示：\nnpm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead\n其他包用上述方式更新或安装就没有此提示。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/869/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/868",
      "id": 3480636933,
      "node_id": "I_kwDON-_mZc7Pdk4F",
      "number": 868,
      "title": "Cannot read properties of undefined (reading 'includes')",
      "user": {
        "login": "Nunchakus888",
        "id": 14994145,
        "node_id": "MDQ6VXNlcjE0OTk0MTQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/14994145?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Nunchakus888",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-10-03T10:38:37Z",
      "updated_at": "2025-12-15T05:43:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```json\n\n{\n  \"level\": 50,\n  \"time\": 1759487299903,\n  \"pid\": 99895,\n  \"hostname\": \"MacBook-Pro.local\",\n  \"reqId\": \"req-1\",\n  \"err\": {\n    \"type\": \"TypeError\",\n    \"message\": \"Cannot read properties of undefined (reading 'includes')\",\n    \"stack\": \"TypeError: Cannot read properties of undefined (reading 'includes')\\n    at Ji.transformRequestIn (/Users/george/.nvm/versions/node/v22.14.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77970:20)\\n    at l0 (/Users/george/.nvm/versions/node/v22.14.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77026:21)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async c0 (/Users/george/.nvm/versions/node/v22.14.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77015:50)\"\n  },\n  \"msg\": \"Cannot read properties of undefined (reading 'includes')\"\n}\n````",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/868/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/867",
      "id": 3480435188,
      "node_id": "I_kwDON-_mZc7Pczn0",
      "number": 867,
      "title": "可以連接自架的 ollama 嗎?",
      "user": {
        "login": "nethawkChen",
        "id": 74844278,
        "node_id": "MDQ6VXNlcjc0ODQ0Mjc4",
        "avatar_url": "https://avatars.githubusercontent.com/u/74844278?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nethawkChen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-03T09:24:01Z",
      "updated_at": "2025-11-19T01:59:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我以容器化部署了 ollama, 並下載了幾個模型, deepseek-r1:8b, qwen2.5-coder:7b, qwen3:8b\n但在 config.json **設定 deepseek-r1:8b**\n{\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://172.10.100.90:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"deepseek-r1:8b\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,deepseek-r1:8b\"\n  }\n}\n回應如下\n<img width=\"1304\" height=\"434\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fb6d6481-3581-413c-aae8-71cffbfa1710\" />\n\n**設定 qwen2.5-coder:7b**\n{\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://172.10.100.90:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:7b\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,qwen2.5-coder:7b\"\n  }\n}\n回應如下\n<img width=\"536\" height=\"311\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/01dad8e6-d56a-4d9d-b87f-650cc846a94c\" />\n\n**設定 qwen3:8b**\n{\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://172.10.100.90:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen3:8b\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,qwen3:8b\"\n  }\n}\n回應如下\n<img width=\"523\" height=\"372\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4755e9b6-f9da-49a2-9629-0ac67e1bdf8f\" />\n\n目前只有設定 qwen3:8b 看起來是可以的, 在 ollama 下載的模型要挑選什麼樣的模型呢? 我選的都是在 ollama 上有 tools 標籤的",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/867/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/862",
      "id": 3475744985,
      "node_id": "I_kwDON-_mZc7PK6jZ",
      "number": 862,
      "title": "启动报错  不知道是什么原因",
      "user": {
        "login": "kuziTony",
        "id": 125565288,
        "node_id": "U_kgDOB3v5aA",
        "avatar_url": "https://avatars.githubusercontent.com/u/125565288?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kuziTony",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-10-02T02:23:51Z",
      "updated_at": "2025-10-13T14:04:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr code   \nError: Settings file not found: '{env:{ANTHROPIC_AUTH_TOKEN:test,ANTHROPIC_API_KEY:,ANTHROPIC_BASE_URL:http://127.0.0.1:3456,NO_PROXY:127.0.0.1,DISABLE_TELEMETRY:true,DISABLE_COST_WARNINGS:true,API_TIMEOUT_MS:86400000}}'\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/862/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        864
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/858",
      "id": 3472726499,
      "node_id": "I_kwDON-_mZc7O_Znj",
      "number": 858,
      "title": "add AI/ML API as provider",
      "user": {
        "login": "OctavianTheI",
        "id": 54273355,
        "node_id": "MDQ6VXNlcjU0MjczMzU1",
        "avatar_url": "https://avatars.githubusercontent.com/u/54273355?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/OctavianTheI",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-01T09:17:20Z",
      "updated_at": "2025-10-01T09:17:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi!\n\nI'm Sergey from the Integrations team over at AI/ML API, a startup with 150K+ users, providing over 300 AI models in one place\n\nYour project looks dope, so we'd like a native integration. We already got integrations with Langflow, continue.dev, and LiteLLM - so our integrations team is pretty seasoned :)\n\nSay you're interested, and we'll test the compatibility, update the code/docs to include us, create a PR and add a tutorial on using claude-code-router with AI/ML API to our docs\n\nIf you guys give us a green light, we'll get on it 👷",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/858/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/857",
      "id": 3472571232,
      "node_id": "I_kwDON-_mZc7O-ztg",
      "number": 857,
      "title": "\"type\":\"api_error\",\"code\":\"provider_response_error\"}} · Please run       /login",
      "user": {
        "login": "iaenolhy",
        "id": 171220572,
        "node_id": "U_kgDOCjSeXA",
        "avatar_url": "https://avatars.githubusercontent.com/u/171220572?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iaenolhy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-01T08:30:33Z",
      "updated_at": "2025-10-02T14:40:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "    --text-strong: #0d0d0d; /* gray-900 */\\n  --text-primary: #272727; /* gray-700 */\\n  --text-secondary: #6b6b6b; /* gray-500 */\\n  --page-primary: #fff;\\n}\\n\\n:root[data-theme=\\\"dark\\\"]  \n    {\\n  color-scheme: dark;\\n  --text-strong: #fff;\\n  --text-primary: #f0f0f0; /* gray-50 */\\n  --text-secondary: #c7c7c7; /* gray-200 */\\n  --page-primary: #0d0d0d; /* gray-900\n    */\\n}\\n\\nbody {\\n  font-family: Roobert, sans-serif;\\n  margin: 0;\\n  padding: 0 1rem;\\n  color: var(--text-strong);\\n  background-color: var(--page-primary);\\n  overflow: hidden;\\n     \n    height: 100vh;\\n  width: 100vw;\\n  position: relative;\\n}\\n\\n.type-heading-05 {\\n  font-size: 28px;\\n  font-style: normal;\\n  font-weight: 500;\\n  line-height: 114.286%;\\n\n    letter-spacing: -0.28px;\\n}\\n\\n.type-mono-01 {\\n  font-family: \\\"Neue Montreal Mono\\\";\\n  font-size: 13px;\\n  font-style: normal;\\n  font-weight: 400;\\n  line-height: 20px;\\n\n    letter-spacing: 0.65px;\\n}\\n\\n.type-mono-01-caps {\\n  font-family: \\\"Neue Montreal Mono\\\";\\n  font-size: 13px;\\n  font-style: normal;\\n  font-weight: 400;\\n  line-height: 20px;\\n        \n    letter-spacing: 0.65px;\\n  text-transform: uppercase;\\n}\\n\\n.type-body-01 {\\n  font-size: 14px;\\n  font-weight: 400;\\n  line-height: 20px;\\n  letter-spacing:\n    0.14px;\\n}\\n\\n.type-interface-00 {\\n  font-family: \\\"Neue Montreal\\\";\\n  font-size: 13px;\\n  font-style: normal;\\n  font-weight: 400;\\n  line-height: 18px;\\n  letter-spacing: 0.13px;\\n  \n    --webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.type-heading-04 {\\n  font-size: 28px;\\n  font-weight: 400;\\n  line-height: 32px;\\n  letter-spacing:   \n    -0.28px;\\n}\\n\\n.text-primary {\\n  color: var(--text-primary);\\n}\\n\\n.text-secondary {\\n  color: var(--text-secondary);\\n}\\n\\nh1 {\\n  margin: 0;\\n}\\n\\nh2 {\\n  margin: 0;\\n}\\n\\np {\\n      \n    margin: 0;\\n}\\n\\na {\\n  color: inherit;\\n}\\n\\nbody {\\n        display: flex;\\n        flex-direction: column;\\n        text-align: center;\\n        min-height: 100vh;\\n\n    }\\n\\n.site-content {\\n        margin: auto;\\n      }\\n\\nheader {\\n        margin: 1.5rem 0;\\n      }\\n\\nmain > * {\\n        margin-bottom: 1rem;\\n      }\\n\\n.request-id {\\n\n    margin-bottom: 2rem;\\n      }\\n\\nfooter {\\n        padding: 1.75rem 0;\\n      }\\n\\n.logo-render {\\n        margin-left: 0.25rem;\\n      }\\n    </style>\\n\\n    <link\\n\n    id=\\\"favicon\\\"\\n      rel=\\\"shortcut icon\\\"\\n      href=\\\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg      \n    clip-path='url(%23clip0_459_932)'%3E%3Cpath d='M11.4327 1.00388C9.64526 0.919753 8.14218 2.21231 7.88574 3.91533C7.87559 3.99436 7.86035 4.07085 7.84766 4.14733C7.44904 6.26845 5.59303  \n    7.87459 3.3638 7.87459C2.5691 7.87459 1.82263 7.67064 1.17265 7.31372C1.09394 7.27038 1 7.32647 1 7.4157V7.87204V14.7479H7.84512V9.59291C7.84512 8.64452 8.61189 7.87459 9.5564\n    7.87459H11.2677C13.2049 7.87459 14.7639 6.2608 14.6877 4.29774C14.6191 2.53099 13.1922 1.08802 11.4327 1.00388Z' fill='black'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath\n    id='clip0_459_932'%3E%3Crect width='14' height='14' fill='white' transform='translate(1 1)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A\\\"\\n    />\\n\\n    <script>\\n      (function () {\\n  \n          try {\\n          var prefersDark = window.matchMedia(\\n            \\\"(prefers-color-scheme: dark)\\\"\\n          ).matches;\\n          if (!prefersDark) return;\\n\n    document.documentElement.setAttribute(\\\"data-theme\\\", \\\"dark\\\");\\n          var favicon = document.getElementById(\\\"favicon\\\");\\n          if (favicon)\\n\n    favicon.setAttribute(\\n              \\\"href\\\",\\n              \\\"data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg\n     clip-path='url(%23clip0_459_963)'%3E%3Cpath d='M11.4327 1.00388C9.64526 0.919753 8.14218 2.21231 7.88574 3.91533C7.87559 3.99436 7.86035 4.07085 7.84766 4.14733C7.44904 6.26845 5.59303 \n    7.87459 3.3638 7.87459C2.5691 7.87459 1.82263 7.67064 1.17265 7.31372C1.09394 7.27038 1 7.32647 1 7.4157V7.87204V14.7479H7.84512V9.59291C7.84512 8.64452 8.61189 7.87459 9.5564\n    7.87459H11.2677C13.2049 7.87459 14.7639 6.2608 14.6877 4.29774C14.6191 2.53099 13.1922 1.08802 11.4327 1.00388Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath\n    id='clip0_459_963'%3E%3Crect width='14' height='14' fill='white' transform='translate(1 1)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A\\\"\\n            );\\n        } catch (e) {}\\n        \n    })();\\n    </script>\\n  \\n</head>\\n  <body>\\n    <div class=\\\"site-content\\\">\\n      <header>\\n        <h1 class=\\\"type-heading-04\\\">403 - Forbidden</h1>\\n      </header>\\n      <main   \n    class=\\\"text-primary\\\">\\n        <div>\\n          <p>Your request was blocked by this site's web application firewall (WAF).</p>\\n        </div>\\n        <div>\\n          <p>For\n    assistance, please contact the site owner.</p>\\n          <p>Describe the action you were taking and include the Request ID listed below.</p>\\n        </div>\\n        <div\n    class=\\\"request-id\\\">\\n          <p>Request ID: <code class=\\\"type-mono-01\\\">987a9555edd2eb2d</code></p>\\n          <p>Your IP address: <code\n    class=\\\"type-mono-01\\\">27.153.223.171</code></p>\\n        </div>\\n      </main>\\n    </div>\\n    <footer>\\n      <div class=\\\"type-body-01 text-secondary\\\">\\n        Powered by\\n        \n    <a href=\\\"https://render.com\\\">\\n          <svg\\n            fill=\\\"currentColor\\\"\\n            class=\\\"logo-render\\\"\\n            aria-label=\\\"Render\\\"\\n            width=\\\"69\\\"\\n      \n          height=\\\"13\\\"\\n            viewBox=\\\"0 0 69 13\\\"\\n            fill=\\\"none\\\"\\n            xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n          >\\n            <path\\n\n    d=\\\"M23.7321 2.14129C25.9243 2.14129 27.3494 3.3794 27.3494 5.36795C27.3494 6.82386 26.5113 7.90573 25.1975 8.36736L27.7731 12.7658H25.8627L23.4599\n    8.59225H20.8062V12.7658H19.1609V2.14129H23.7321ZM20.8038 3.62087V7.12924H23.654C24.9608 7.12924 25.6354 6.40011 25.6354 5.36795C25.6354 4.31213 24.9631 3.62087 23.654\n    3.62087H20.8038Z\\\"\\n            />\\n            <path\\n              d=\\\"M31.9585 5.09334C34.1506 5.09334 35.5757 6.72206 35.5757 8.73429C35.5757 8.96866 35.5592 9.21249 35.5142\n    9.45396H29.6812C29.7522 10.5808 30.7157 11.4662 32.0153 11.4662C32.9551 11.4662 33.7056 11.0661 34.269 10.1831L35.4124 11.014C34.7164 12.2663 33.3457 12.9245 32.0153 12.9245C29.7451     \n    12.9245 28.0761 11.2484 28.0761 9.01837C28.0761 6.77651 29.6812 5.09334 31.9585 5.09334ZM34.0015 8.29397C33.9068 7.23814 33.0238 6.49243 31.9419 6.49243C30.7914 6.49243 29.9132 7.23577  \n    29.719 8.29397H34.0015Z\\\"\\n            />\\n            <path\\n              d=\\\"M37.015 12.7658V5.24959H38.5727V6.19652C38.8237 5.81301 39.5362 5.09334 40.8832 5.09334C42.9499 5.09334   \n    44.0388 6.37643 44.0388 8.20164V12.7658H42.4882V8.5307C42.4882 7.28549 41.8065 6.56582 40.6394 6.56582C39.496 6.56582 38.5656 7.28549 38.5656 8.5307V12.7658H37.015Z\\\"\\n            />\\n  \n              <path\\n              d=\\\"M49.0906 5.09334C50.3666 5.09334 51.2117 5.56207 51.768 6.27464V1.74121H53.3186V12.7658H51.768V11.7408C51.2117 12.4534 50.3666 12.9221 49.0906\n    12.9221C46.953 12.9221 45.3172 11.2768 45.3172 8.96866C45.3172 6.65815 46.953 5.09334 49.0906 5.09334ZM46.8654 8.96866C46.8654 10.3535 47.8289 11.5277 49.2776 11.5277C50.7264 11.5277    \n    51.7586 10.3535 51.7586 8.96866C51.7586 7.58377 50.717 6.4877 49.2776 6.4877C47.8289 6.48533 46.8654 7.5814 46.8654 8.96866Z\\\"\\n            />\\n            <path\\n\n    d=\\\"M58.5148 5.09334C60.707 5.09334 62.1321 6.72206 62.1321 8.73429C62.1321 8.96866 62.1155 9.21249 62.0705 9.45396H56.2375C56.3085 10.5808 57.272 11.4662 58.5717 11.4662C59.5115 11.4662\n     60.2619 11.0661 60.8253 10.1831L61.9687 11.014C61.2727 12.2663 59.9021 12.9245 58.5717 12.9245C56.3014 12.9245 54.6325 11.2484 54.6325 9.01837C54.6301 6.77651 56.2351 5.09334 58.5148   \n    5.09334ZM60.5578 8.29397C60.4631 7.23814 59.5801 6.49243 58.4983 6.49243C57.3478 6.49243 56.4695 7.23577 56.2754 8.29397H60.5578Z\\\"\\n            />\\n            <path\\n\n    d=\\\"M63.6306 12.7658V5.24959H65.1883V6.27464C65.612 5.45318 66.3246 5.09334 67.146 5.09334C67.7331 5.09334 68.1805 5.28036 68.1805 5.28036L68.0172 6.70549C67.9319 6.67472 67.5934 6.53268\n     67.101 6.53268C66.2701 6.53268 65.1906 6.97063 65.1906 8.67037V12.7658H63.6306Z\\\"\\n            />\\n            <path\\n              d=\\\"M9.72722 0.0036066C8.06065 -0.0745152 6.65921    \n    1.12572 6.42011 2.70709C6.41064 2.78048 6.39644 2.8515 6.3846 2.92252C6.01293 4.89213 4.28244 6.38355 2.20395 6.38355C1.46299 6.38355 0.767004 6.19416 0.160976 5.86274C0.0875901 5.82249 \n    0 5.87457 0 5.95743V6.38118V12.7659H6.38223V7.97913C6.38223 7.09848 7.09716 6.38355 7.97779 6.38355H9.57335C11.3796 6.38355 12.8331 4.88503 12.7621 3.06219C12.6982 1.42163 11.3678       \n    0.0817284 9.72722 0.0036066Z\\\"\\n            />\\n          </svg>\\n        </a>\\n      </div>\\n    </footer>\\n  </body>\\n</html>\\n\\n    at nt\n    (d:\\\\home\\\\iaeno\\\\.npm-global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77716:11)\\n    at f0\n    (d:\\\\home\\\\iaeno\\\\.npm-global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77774:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n\n        at async u0 (d:\\\\home\\\\iaeno\\\\.npm-global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77741:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}} · Please run  \n    /login\n\n报错\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/857/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/856",
      "id": 3470739760,
      "node_id": "I_kwDON-_mZc7O30kw",
      "number": 856,
      "title": "升级1.0.51后经常提示错误",
      "user": {
        "login": "fxz2018",
        "id": 49226236,
        "node_id": "MDQ6VXNlcjQ5MjI2MjM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/49226236?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/fxz2018",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-30T19:07:56Z",
      "updated_at": "2025-10-01T22:46:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1248\" height=\"342\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8a02523d-bc21-4d17-bdd0-aa5581bee2c9\" /> 升级1.0.51",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/856/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/854",
      "id": 3467957447,
      "node_id": "I_kwDON-_mZc7OtNTH",
      "number": 854,
      "title": "400错误",
      "user": {
        "login": "uc100200-c",
        "id": 120233208,
        "node_id": "U_kgDOByqc-A",
        "avatar_url": "https://avatars.githubusercontent.com/u/120233208?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/uc100200-c",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-30T07:27:01Z",
      "updated_at": "2025-09-30T07:27:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error: 400 {\"error\":{\"message\":\"Error from provider(Qwen3,Qwen3-Coder-480B: 400): {\\\"code\\\":400,\\\"error\\\":\\\"请求参数错误\\\"}Error: Error from provider(Qwen3,Qwen3-Coder-480B: 400):    \n     {\\\"code\\\":400,\\\"error\\\":\\\"请求参数错误\\\"}\\n    at nt (C:\\\\Users\\\\chenxi\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77001:11)\\n    at l0     \n     (C:\\\\Users\\\\chenxi\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77059:11)\\n    at process.processTicksAndRejections \n     (node:internal/process/task_queues:105:5)\\n    at async a0 \n     (C:\\\\Users\\\\chenxi\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77026:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n运行一段时间后出现这个错误，有时候resume可以恢复，有时exit再启动可以恢复，有时候只能新建一个任务。这种是什么原因？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/854/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/852",
      "id": 3467287332,
      "node_id": "I_kwDON-_mZc7Oqpsk",
      "number": 852,
      "title": "vscode的claude code扩展如何使用ccr code",
      "user": {
        "login": "ilovexsir",
        "id": 170008135,
        "node_id": "U_kgDOCiIeRw",
        "avatar_url": "https://avatars.githubusercontent.com/u/170008135?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ilovexsir",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 25,
      "created_at": "2025-09-30T02:31:21Z",
      "updated_at": "2026-02-13T04:50:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "今天打开扩展，发现需要先配置才能用，如何直接使用ccr code\n<img width=\"1920\" height=\"1032\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fac7e4c9-a218-40b8-9c94-9e9d63136cbf\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/852/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/851",
      "id": 3467138359,
      "node_id": "I_kwDON-_mZc7OqFU3",
      "number": 851,
      "title": "Possible compatibility issue: Claude Code v2.0.0 and Sonnet 4.5",
      "user": {
        "login": "Rqcker",
        "id": 20661419,
        "node_id": "MDQ6VXNlcjIwNjYxNDE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/20661419?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Rqcker",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-30T00:58:34Z",
      "updated_at": "2025-10-02T11:05:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\nThanks for your work on this project. Today I just updated to Claude Code v2.0.0, and I'm now using Sonnet 4.5 via OpenRouter. However, I'm running into API errors that didn't appear before updating. The error message references insufficient credits, but my credits are actually sufficient, so I'm wondering if there might be a compatibility issue between the latest Claude Code and Sonnet 4.5?\n\nThanks in advance for your help.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/851/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/850",
      "id": 3464310600,
      "node_id": "I_kwDON-_mZc7OfS9I",
      "number": 850,
      "title": "[功能请求]是否可以通过/v1/models 来获取模型后选择填入",
      "user": {
        "login": "logce",
        "id": 71584960,
        "node_id": "MDQ6VXNlcjcxNTg0OTYw",
        "avatar_url": "https://avatars.githubusercontent.com/u/71584960?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/logce",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-29T10:34:49Z",
      "updated_at": "2025-09-29T10:34:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "作者你好，我查了下，是否可以通过接口来获取模型列表然后选择填入\n\n🔹 Anthropic\n\n基础 URL：https://api.anthropic.com/v1\n\n获取模型列表：GET /v1/models\n\n认证方式：\n\nx-api-key: YOUR_KEY\n\nanthropic-version: 2023-06-01（必填）\n\n🔹 OpenAI\n\n基础 URL：https://api.openai.com/v1\n\n获取模型列表：GET /v1/models\n\n认证方式：\n\nAuthorization: Bearer YOUR_KEY",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/850/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/849",
      "id": 3464269475,
      "node_id": "I_kwDON-_mZc7OfI6j",
      "number": 849,
      "title": "GPT-5参数一直报错不能是0.0 只能是1",
      "user": {
        "login": "Zhangshuhao0928",
        "id": 57984637,
        "node_id": "MDQ6VXNlcjU3OTg0NjM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/57984637?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Zhangshuhao0928",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-29T10:21:48Z",
      "updated_at": "2025-10-13T08:23:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "> /model gpt-5\n  ⎿ API error: 400 {\"error\":{\"message\":\"Error from provider(venus,gpt-5: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unsupported value: \n    'temperature' does not support 0.0 with this model. Only the default (1) value is \n    supported.\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"temperature\\\",\\\"code\\\":\\\"unsupported_value\\\"},\\\"venusMarker\\\"\n    :{\\\"spanId\\\":\\\"fb9d3d751eb1b9e4\\\"}}Error: Error from provider(venus,gpt-5: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unsupported \n    value: 'temperature' does not support 0.0 with this model. Only the default (1) value is \n    supported.\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"temperature\\\",\\\"code\\\":\\\"unsupported_value\\\"},\\\"venusMarker\\\"\n    :{\\\"spanId\\\":\\\"fb9d3d751eb1b9e4\\\"}}\\n    at nt \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:76053:11)\\n    at l0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:76111:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async a0 (/opt/homebrew/lib/node_modu\n    les/@musistudio/claude-code-router/dist/cli.js:76078:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n请问如何设置",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/849/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/848",
      "id": 3463749954,
      "node_id": "I_kwDON-_mZc7OdKFC",
      "number": 848,
      "title": "使用ccr code启动但是现实的baseUrl还是cc里面设置的baseUrl",
      "user": {
        "login": "2ue",
        "id": 13751432,
        "node_id": "MDQ6VXNlcjEzNzUxNDMy",
        "avatar_url": "https://avatars.githubusercontent.com/u/13751432?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/2ue",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-29T08:07:02Z",
      "updated_at": "2025-10-02T00:06:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我在通过~/.claude/setting.json的形式配置使用claude，然后配置好ccr后，使用ccr code启动，还是显示的~/.claude/setting.json的baseUrl\n\n<img width=\"819\" height=\"549\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b3e08dd7-9c79-4aec-99d4-44e91c48a6b1\" />\n\n<img width=\"614\" height=\"310\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d3aea052-d21d-4636-bd0e-80264c7a834f\" />\n\n\n请问是ccr没办法覆盖~/.claude/setting.json这种配置么？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/848/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/847",
      "id": 3461903829,
      "node_id": "I_kwDON-_mZc7OWHXV",
      "number": 847,
      "title": "目前集成各种模型都是url和key的方式，希望增加token的方式，谢谢。",
      "user": {
        "login": "SHIZHENGYE",
        "id": 233281327,
        "node_id": "U_kgDODeeXLw",
        "avatar_url": "https://avatars.githubusercontent.com/u/233281327?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SHIZHENGYE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-28T13:48:13Z",
      "updated_at": "2025-09-28T13:48:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "目前openai推出了codex，如果你是chatgpt plus用户，那么可以直接安装codex进行使用，进行授权登录，无需配置key和url，会在你的上电脑系统形成文件，如：auth.json，里面是你的信息。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/847/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/846",
      "id": 3461895104,
      "node_id": "I_kwDON-_mZc7OWFPA",
      "number": 846,
      "title": "希望增加一个JetBrains插件，可以在idea，pycharm中安装使用，谢谢",
      "user": {
        "login": "SHIZHENGYE",
        "id": 233281327,
        "node_id": "U_kgDODeeXLw",
        "avatar_url": "https://avatars.githubusercontent.com/u/233281327?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SHIZHENGYE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-28T13:43:20Z",
      "updated_at": "2025-09-28T13:43:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/846/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/845",
      "id": 3461025480,
      "node_id": "I_kwDON-_mZc7OSw7I",
      "number": 845,
      "title": "openrouter + gemini 2.5 pro 使用图片报错 400",
      "user": {
        "login": "stezqy",
        "id": 13197067,
        "node_id": "MDQ6VXNlcjEzMTk3MDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/13197067?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/stezqy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-28T03:48:06Z",
      "updated_at": "2025-10-02T00:06:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " 输入: 解释[Image #1]这张图片\n\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(openrouter,google/gemini-2.5-pro: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \n    \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"code\\\\\\\": 400,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Invalid value at 'contents[0].parts[2].inline_data.data' (TYPE_BYTES), Base64 decoding failed for \n    \\\\\\\\\\\\\\\"data:image/png;base64\\\\\\\\\\\\\\\"\\\\\\\",\\\\n    \\\\\\\"status\\\\\\\": \\\\\\\"INVALID_ARGUMENT\\\\\\\",\\\\n    \\\\\\\"details\\\\\\\": [\\\\n      {\\\\n        \\\\\\\"@type\\\\\\\": \n    \\\\\\\"type.googleapis.com/google.rpc.BadRequest\\\\\\\",\\\\n        \\\\\\\"fieldViolations\\\\\\\": [\\\\n          {\\\\n            \\\\\\\"field\\\\\\\": \\\\\\\"contents[0].parts[2].inline_data.data\\\\\\\",\\\\n            \n    \\\\\\\"description\\\\\\\": \\\\\\\"Invalid value at 'contents[0].parts[2].inline_data.data' (TYPE_BYTES), Base64 decoding failed for \\\\\\\\\\\\\\\"data:image/png;base64\\\\\\\\\\\\\\\"\\\\\\\"\\\\n          }\\\\n        ]\\\\n      \n    }\\\\n    ]\\\\n  }\\\\n}\\\\n\\\",\\\"provider_name\\\":\\\"Google\\\"}}}Error: Error from provider(openrouter,google/gemini-2.5-pro: 400): \n    {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"code\\\\\\\": 400,\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Invalid value at \n    'contents[0].parts[2].inline_data.data' (TYPE_BYTES), Base64 decoding failed for \\\\\\\\\\\\\\\"data:image/png;base64\\\\\\\\\\\\\\\"\\\\\\\",\\\\n    \\\\\\\"status\\\\\\\": \\\\\\\"INVALID_ARGUMENT\\\\\\\",\\\\n    \\\\\\\"details\\\\\\\": [\\\\n\n          {\\\\n        \\\\\\\"@type\\\\\\\": \\\\\\\"type.googleapis.com/google.rpc.BadRequest\\\\\\\",\\\\n        \\\\\\\"fieldViolations\\\\\\\": [\\\\n          {\\\\n            \\\\\\\"field\\\\\\\": \n    \\\\\\\"contents[0].parts[2].inline_data.data\\\\\\\",\\\\n            \\\\\\\"description\\\\\\\": \\\\\\\"Invalid value at 'contents[0].parts[2].inline_data.data' (TYPE_BYTES), Base64 decoding failed for \n    \\\\\\\\\\\\\\\"data:image/png;base64\\\\\\\\\\\\\\\"\\\\\\\"\\\\n          }\\\\n        ]\\\\n      }\\\\n    ]\\\\n  }\\\\n}\\\\n\\\",\\\"provider_name\\\":\\\"Google\\\"}}}\\n    at nt \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77001:11)\\n    at l0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77059:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async a0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77026:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/845/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/844",
      "id": 3461003600,
      "node_id": "I_kwDON-_mZc7OSrlQ",
      "number": 844,
      "title": "1.0.50 更新后 UI 无法登录",
      "user": {
        "login": "oldjs",
        "id": 183616870,
        "node_id": "U_kgDOCvHFZg",
        "avatar_url": "https://avatars.githubusercontent.com/u/183616870?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/oldjs",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-28T03:18:41Z",
      "updated_at": "2025-09-28T03:18:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "啊啊啊啊啊啊啊怎么办啊",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/844/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/842",
      "id": 3459839986,
      "node_id": "I_kwDON-_mZc7OOPfy",
      "number": 842,
      "title": "无论怎么修改默认模型，为何使用的模型显示都是claude，奇葩得很的BUG",
      "user": {
        "login": "Kulapichia",
        "id": 214526004,
        "node_id": "U_kgDODMloNA",
        "avatar_url": "https://avatars.githubusercontent.com/u/214526004?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Kulapichia",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-27T06:15:24Z",
      "updated_at": "2025-09-27T11:42:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如标题错误，另外/init出现：\n` 好的，我来分析这个代码库并创建 CLAUDE.md 文件。遵照指示，我将首先探索项目结构以获取上下文。\n\n  我将列出当前目录下的所有文件和文件夹，以便全面了解项目结构。\n  ⎿  Invalid tool parameters`\n\n<img width=\"2193\" height=\"1014\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ba4df9fa-0377-4828-8a2d-f93ad1ebacfc\" />\n\n<img width=\"1143\" height=\"806\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c83d9254-5da2-465f-84a3-76c369b1f71c\" />\n\n<img width=\"585\" height=\"999\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/85d4d169-d6c5-4762-ba69-9058cf8bead6\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/842/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/841",
      "id": 3458793866,
      "node_id": "I_kwDON-_mZc7OKQGK",
      "number": 841,
      "title": "Doesn't work in container with versions >1.0.43",
      "user": {
        "login": "StepanTytaLabelbox",
        "id": 191805902,
        "node_id": "U_kgDOC265zg",
        "avatar_url": "https://avatars.githubusercontent.com/u/191805902?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/StepanTytaLabelbox",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-26T19:03:05Z",
      "updated_at": "2025-09-26T19:03:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Summary**\nRunning in a sandbox container fails with newer claude-code versions; 1.0.43 succeeds while 1.0.48–1.0.50 fail.\n\n**Versions tested**\n\n✅ Works: 1.0.43\n\n❌ Fails: 1.0.48, 1.0.49, 1.0.50\n(I didn’t test every intermediate version.)\n\n**Steps to reproduce**\n\n1. Build an image with the Dockerfile below.\n2. Run:\n```\ndocker run --rm -it \\\n  evaluation-claude:latest \\\n  code \\\n  --print \\\n  --verbose \\\n  --output-format stream-json \\\n  --dangerously-skip-permissions \\\n  --permission-mode bypassPermissions \\\n  --add-dir /workspace \\\n  -- \"test\"\n```\n\n**Actual result:**\n```\nService not running, starting service...\nService startup timeout, please manually run `ccr start` to start the service\n```\n\n**Expected result:**\nService starts and the command executes without timing out.\n\n**Dockerfile**\n```\nFROM python:3.12-slim\n\nENV PIP_DISABLE_PIP_VERSION_CHECK=1 \\\n    PYTHONDONTWRITEBYTECODE=1 \\\n    PYTHONUNBUFFERED=1 \\\n    NODE_ENV=production\n\nWORKDIR /workspace\n\n# Install Node.js and npm, then global claude-code\nRUN apt-get update \\\n    && apt-get install -y --no-install-recommends curl ca-certificates \\\n    && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \\\n    && apt-get install -y --no-install-recommends nodejs \\\n    && npm install -g @anthropic-ai/claude-code \\\n    && npm install -g @musistudio/claude-code-router \\\n    && apt-get purge -y --auto-remove curl \\\n    && rm -rf /var/lib/apt/lists/* \\\n    && pip install httpx\n\n# Create claude-code-router config directory and copy static config\nRUN mkdir -p /root/.claude-code-router\nCOPY agent-eval/config.json /root/.claude-code-router/config.json\n\nENV IS_SANDBOX=1\n\nENTRYPOINT [\"ccr\"]\n```\n\n**Environment**\n- Hardware: Apple Silicon (M4 Pro)\n- Base image: python:3.12-slim\n- Node: 20.x (from NodeSource)\n- Globals: @anthropic-ai/claude-code, @musistudio/claude-code-router\n- IS_SANDBOX=1 set; entrypoint is ccr.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/841/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/838",
      "id": 3451578242,
      "node_id": "I_kwDON-_mZc7NuueC",
      "number": 838,
      "title": "Failed to start with Ollama",
      "user": {
        "login": "liyimeng",
        "id": 3155688,
        "node_id": "MDQ6VXNlcjMxNTU2ODg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3155688?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liyimeng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-25T02:21:07Z",
      "updated_at": "2025-09-25T02:32:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Thanks for the great work, but when trying out with Ollama, it seem not work :( \nserver logs show it is running\n```\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: Anthropic (endpoint: /v1/messages)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: vertex-gemini (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: vertex-claude (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: deepseek (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: tooluse (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: openrouter (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: OpenAI (endpoint: /v1/chat/completions)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: maxtoken (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: groq (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: cleancache (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: enhancetool (no endpoint)\"}\n{\"level\":30,\"time\":1758766528138,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: reasoning (no endpoint)\"}\n{\"level\":30,\"time\":1758766528139,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: sampling (no endpoint)\"}\n{\"level\":30,\"time\":1758766528139,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: maxcompletiontokens (no endpoint)\"}\n{\"level\":30,\"time\":1758766528139,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: cerebras (no endpoint)\"}\n{\"level\":30,\"time\":1758766528139,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: streamoptions (no endpoint)\"}\n{\"level\":30,\"time\":1758766528139,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"register transformer: customparams (no endpoint)\"}\n{\"level\":30,\"time\":1758766528145,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"ollama provider registered\"}\n{\"level\":30,\"time\":1758766528215,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"Server listening at http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1758766528216,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"msg\":\"🚀 LLMs API server listening on http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1758766538460,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"reqId\":\"req-1\",\"req\":{\"method\":\"GET\",\"url\":\"/\",\"host\":\"127.0.0.1:3456\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":46720},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1758766538469,\"pid\":809,\"hostname\":\"3a8143e40cf6\",\"reqId\":\"req-1\",\"res\":{\"statusCode\":200},\"responseTime\":7.8224170207977295,\"msg\":\"request completed\"}\n\n```\n\nBut\n\n```\n~/.claude-code-router/logs # ccr status \n\n📊 Claude Code Router Status\n════════════════════════════════════════\n❌ Status: Not Running\n\n💡 To start the service:\n   ccr start\n```\n\nHow to troubleshooting? ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/838/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/834",
      "id": 3441214788,
      "node_id": "I_kwDON-_mZc7NHMVE",
      "number": 834,
      "title": "为什么配置好config之后输入ccr start会报错让我登陆账户",
      "user": {
        "login": "hudikiller",
        "id": 147145310,
        "node_id": "U_kgDOCMVCXg",
        "avatar_url": "https://avatars.githubusercontent.com/u/147145310?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hudikiller",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-22T14:13:44Z",
      "updated_at": "2025-09-22T14:13:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "为什么配置好config之后输入ccr start会报错让我登陆账户\n<img width=\"633\" height=\"265\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2568a75c-0748-40be-9561-0de3880fe62f\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/834/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/833",
      "id": 3438960431,
      "node_id": "I_kwDON-_mZc7M-l8v",
      "number": 833,
      "title": "claude-code-router 支持JetBrains IDE集成吗",
      "user": {
        "login": "hu-bobo",
        "id": 26561850,
        "node_id": "MDQ6VXNlcjI2NTYxODUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/26561850?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hu-bobo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-22T02:36:30Z",
      "updated_at": "2025-09-26T08:26:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如果支持的话感觉会方便很多，claude code已经可以了",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/833/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/832",
      "id": 3438381154,
      "node_id": "I_kwDON-_mZc7M8Yhi",
      "number": 832,
      "title": "statusline",
      "user": {
        "login": "gentmat",
        "id": 5202591,
        "node_id": "MDQ6VXNlcjUyMDI1OTE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5202591?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gentmat",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-21T16:15:36Z",
      "updated_at": "2025-09-21T16:15:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Status line not working . If turned on than many  error shows when you try to use ccr code and talk to any model . ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/832/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/831",
      "id": 3437830940,
      "node_id": "I_kwDON-_mZc7M6SMc",
      "number": 831,
      "title": "Failed to Run Claude Code (No Result After a Long Time)",
      "user": {
        "login": "Beliefuture",
        "id": 62245023,
        "node_id": "MDQ6VXNlcjYyMjQ1MDIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/62245023?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Beliefuture",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-09-21T05:14:17Z",
      "updated_at": "2025-10-02T08:52:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi! Thanks for your efforts.\n\nI have encountered the following issues when running `ccr code`. Specifically, the terminal appears to be paused for an extended period without returning any results after I submit a simple request, such as \"hello\" or \"implement a quicksort algorithm\".\n\nI have set the PROXY_URL to \"http://127.0.0.1:3456\" by default. Other configurations are also written based on the example provided in the repository. There are no errors in the log. I suspect that the model requests are not successfully forwarded.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/831/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/830",
      "id": 3437101493,
      "node_id": "I_kwDON-_mZc7M3gG1",
      "number": 830,
      "title": "为 openai/gpt-5 模型设置 max_tokens 无效",
      "user": {
        "login": "kabda",
        "id": 3722590,
        "node_id": "MDQ6VXNlcjM3MjI1OTA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3722590?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kabda",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-20T12:35:13Z",
      "updated_at": "2025-11-14T03:32:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "无论我如何设置，max_tokens 永远等于 1，导致openrouter 接口调用失败。\n\nAPI error: 400 {\"error\":{\"message\":\"Error from provider(openrouter,openai/gpt-5: 400): \n    {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \n    \\\\\\\"message\\\\\\\": \\\\\\\"Invalid 'max_output_tokens': integer below minimum value. Expected a value >= 16, but got 1 \n    instead.\\\\\\\",\\\\n    \\\\\\\"type\\\\\\\": \\\\\\\"invalid_request_error\\\\\\\",\\\\n    \\\\\\\"param\\\\\\\": \\\\\\\"max_output_tokens\\\\\\\",\\\\n    \n    \\\\\\\"code\\\\\\\": \\\\\\\"integer_below_min_value\\\\\\\"\\\\n  \n    }\\\\n}\\\",\\\"provider_name\\\":\\\"OpenAI\\\"}},\\\"user_id\\\":\\\"user_xxxxxxxxxxxxxx\\\"}Error: Error from \n    provider(openrouter,openai/gpt-5: 400): {\\\"error\\\":{\\\"message\\\":\\\"Provider returned \n    error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\n  \\\\\\\"error\\\\\\\": {\\\\n    \\\\\\\"message\\\\\\\": \\\\\\\"Invalid \n    'max_output_tokens': integer below minimum value. Expected a value >= 16, but got 1 instead.\\\\\\\",\\\\n    \\\\\\\"type\\\\\\\": \n    \\\\\\\"invalid_request_error\\\\\\\",\\\\n    \\\\\\\"param\\\\\\\": \\\\\\\"max_output_tokens\\\\\\\",\\\\n    \\\\\\\"code\\\\\\\": \n    \\\\\\\"integer_below_min_value\\\\\\\"\\\\n  \n    }\\\\n}\\\",\\\"provider_name\\\":\\\"OpenAI\\\"}},\\\"user_id\\\":\\\"user_xxxxxxxxxxxxxx\\\"}\\n    at nt \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77001:11)\\n    at l0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77059:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async a0 (/opt/homebrew/lib/node_mo\n    dules/@musistudio/claude-code-router/dist/cli.js:77026:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n截图如下：\n<img width=\"657\" height=\"385\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7f4df001-ce08-4f64-8f1a-eaf1be9f03b0\" />\n\n<img width=\"785\" height=\"420\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f4efd94e-435c-4665-a80b-afa59ea37bad\" />\n\n<img width=\"2278\" height=\"171\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a4467521-2a19-4516-ad0c-9e498d402e40\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/830/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/829",
      "id": 3436965783,
      "node_id": "I_kwDON-_mZc7M2--X",
      "number": 829,
      "title": "识别不到配置的模型名称",
      "user": {
        "login": "lml2004",
        "id": 130026957,
        "node_id": "U_kgDOB8ANzQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/130026957?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lml2004",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-09-20T09:27:43Z",
      "updated_at": "2025-09-28T01:22:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "大佬，请问这个问题怎么解决类似/cost，/model这样的功能，无法识别配置的模型，问模型id也是claude-sonnet。\n<img width=\"2346\" height=\"1277\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6e07de68-f972-4e83-ac73-3716a95e84f6\" />\n配置如下\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"sk-zcf-x-ccr\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"ZhipuAI/GLM-4.5\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ]\n        ],\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\": {\n          \"use\": [\n            \"enhancetool\"\n          ]\n        },\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\n            \"reasoning\"\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"kimi\",\n      \"api_base_url\": \"https://api.moonshot.cn/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"kimi-k2-turbo-preview\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"cleancache\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"kimi,kimi-k2-turbo-preview\",\n    \"background\": \"kimi,kimi-k2-turbo-preview\",\n    \"think\": \"kimi,kimi-k2-turbo-preview\",\n    \"longContext\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n    \"image\": \"\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/829/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/828",
      "id": 3435049997,
      "node_id": "I_kwDON-_mZc7MvrQN",
      "number": 828,
      "title": "Feature request: set a dedicated model for compaction step",
      "user": {
        "login": "pszemraj",
        "id": 74869040,
        "node_id": "MDQ6VXNlcjc0ODY5MDQw",
        "avatar_url": "https://avatars.githubusercontent.com/u/74869040?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pszemraj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-09-19T16:37:43Z",
      "updated_at": "2025-11-20T10:56:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, I'd like to request being able to customize/set a model specifically for the compaction/summarization step. I see this as an opportunity as creating a useful summary is somewhat independent from \"general functioning/performance at long contexts\".\n\nCurrently the router supports configurable routes for:\n\n* `default`\n* `background`\n* `think`\n* `longContext` (with threshold)\n* `webSearch`\n\nHowever, there is no way to specify a separate model for the **compaction step**. This is limiting for cases where you want to offload compaction to a cheaper/faster model, while keeping generation on a higher-quality model.\n\n- for example, I'd love to use `openrouter,moonshotai/kimi-k2-0905` for compaction-only but my only options now (afaik) are 1) use `openrouter,moonshotai/kimi-k2-0905` **for everything** past some token threshold 2) manually switch to it with `/model` then run `/compact` then switch back to default using `/model` 3) implement some sketchy/bootleg custom js hooks to check for compaction and switch to the model just for that\n\n### Proposal\n\nIntroduce a new routing key, for example:\n\n```json\n\"Router\": {\n  \"default\": \"deepseek,deepseek-chat\",\n  \"compact\": \"gemini,gemini-2.5-flash\",   // used for compaction step only\n  \"think\": \"deepseek,deepseek-reasoner\",\n  \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\",\n  \"longContextThreshold\": 60000\n}\n```\n\nWhen compaction is triggered (whether automatic or manual), CCR would route through the `compact` key if present. If not present, it should fall back to `default` (for backward compatibility).\n\n**Benefits:**\n\n* **Cost control:** run compaction on a lower-cost model without affecting main responses.\n* **Performance:** use a smaller/faster model for context compression to reduce latency.\n* **Isolation:** keep compaction \"voice\" separate from main model to avoid subtle style/format shifts.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/828/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/827",
      "id": 3434280469,
      "node_id": "I_kwDON-_mZc7MsvYV",
      "number": 827,
      "title": "不依赖 node 版本",
      "user": {
        "login": "SHIZHENGYE",
        "id": 233281327,
        "node_id": "U_kgDODeeXLw",
        "avatar_url": "https://avatars.githubusercontent.com/u/233281327?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SHIZHENGYE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-09-19T12:57:55Z",
      "updated_at": "2025-09-20T07:19:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "您好，可以增加不依赖node版本的吗？\n当使用nvm use 切换node版本后，相关命令就失效了，所有您可以增加不依赖node版本的吗\n\n<img width=\"1961\" height=\"990\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fce30077-61e3-418b-a437-981fa213c968\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/827/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/826",
      "id": 3433417843,
      "node_id": "I_kwDON-_mZc7Mpcxz",
      "number": 826,
      "title": "Not support glm-4.5v as image model",
      "user": {
        "login": "SimonUTD",
        "id": 150402850,
        "node_id": "U_kgDOCPb3Ig",
        "avatar_url": "https://avatars.githubusercontent.com/u/150402850?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SimonUTD",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-19T08:29:30Z",
      "updated_at": "2025-09-23T07:18:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1633\" height=\"200\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/06fe2c0d-cf12-4e89-afe8-f0937fb5fd2c\" />\n\n<img width=\"655\" height=\"857\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b1679c5a-4511-4cb3-9c7a-7a9f30ee6d21\" />\n\nthe code is not meet the glm-4.5's request",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/826/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/825",
      "id": 3431751644,
      "node_id": "I_kwDON-_mZc7MjF_c",
      "number": 825,
      "title": "3 models used at the same time?",
      "user": {
        "login": "kingchenc",
        "id": 14137153,
        "node_id": "MDQ6VXNlcjE0MTM3MTUz",
        "avatar_url": "https://avatars.githubusercontent.com/u/14137153?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kingchenc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-18T19:48:00Z",
      "updated_at": "2025-09-25T03:23:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I use GLM... Its haiku and claude just a display bug?\n\n> /cost \n  ⎿  Total cost:            $8.46 (costs may be inaccurate due to usage of unknown models)\n     Total duration (API):  8m 48.7s\n     Total duration (wall): 37m 4.0s\n     Total code changes:    246 lines added, 50 lines removed\n     Usage by model:\n         claude-3-5-haiku:  6.3k input, 502 output, 4.3k cache read, 0 cache write ($0.0074)\n                  glm-4.5:  2.4m input, 13.5k output, 2.0m cache read, 0 cache write ($8.11)\n            claude-sonnet:  100.3k input, 1.0k output, 98.5k cache read, 0 cache write ($0.3460)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/825/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/823",
      "id": 3428416851,
      "node_id": "I_kwDON-_mZc7MWX1T",
      "number": 823,
      "title": "自定义transformer",
      "user": {
        "login": "kinka",
        "id": 1127558,
        "node_id": "MDQ6VXNlcjExMjc1NTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1127558?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kinka",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-09-18T02:35:26Z",
      "updated_at": "2025-10-16T18:26:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在使用内部部署的openai兼容接口时， 发现一直报错， 也找不到适用的内置transformer， 于是尝试自定义transformer。 然而，相关文档过于简略， 难以下手。最后各种尝试之后， 实现了一个transformer， 总结于此， 方便其他人查阅吧。\n\n关键：自定义transformer中增加一些日志， 确保ccr start之后能看到调用日志， 或者在 ~/.claude-code-router/logs 中看到日志\n\n~/.claud-code-router/config.json 增加引入配置：\n```json\n...\n  \"transformers\": [\n    {\n      \"path\": \"/home/ccr/.claude-code-router/my-transformer-plugin.js\", # 使用绝对路径\n      \"options\": {\n        \"debug\": true,\n        \"enhance_responses\": true\n      }\n    }\n  ],\n...\n\"Providers\": [\n    {\n      \"name\": \"gf\",\n      \"api_base_url\": \"yours/v1/chat/completions\",\n      \"api_key\": \"yours\",\n      \"models\": [\n        \"yours\",\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"my-transformer\"\n        ]\n      }\n    },\n...\n]\n```\n\n自定义实现：\n```js\n// Custom transformer plugin for claude-code-router\n// Based on the GitHub README example\n\nclass MyTransformer {\n  constructor(options = {}) {\n    this.options = options;\n    console.log(\"🎯🎯🎯 MyTransformer plugin initialized with options:\", options);\n    console.log(\"🎯🎯🎯 THIS IS MY CUSTOM TRANSFORMER - IT'S WORKING!\");\n  }\n\n  get name() {\n    return \"my-transformer\";\n  }\n\n  async transformRequestIn(request, provider, context) {\n    console.log(\"🎯 TRANSFORMER ACTIVE: Processing\", request.messages?.length || 0, \"messages\");\n\n    // 确保消息内容是字符串格式\n    if (request.messages && Array.isArray(request.messages)) {\n      request.messages.forEach((message, index) => {\n        if (message.content && typeof message.content !== \"string\") {\n          console.log(`🎯 Converting message ${index} content from`, typeof message.content);\n\n          if (Array.isArray(message.content)) {\n            // 处理内容数组 - 提取所有文本内容\n            const textParts = message.content\n              .filter(part => part && typeof part === 'object' && part.type === \"text\")\n              .map(part => part.text || part.content || \"\")\n              .filter(text => text && text.trim().length > 0);\n\n            message.content = textParts.join(\" \");\n            console.log(`🎯 Converted array to string for message ${index} (${message.content.length} chars)`);\n          } else if (typeof message.content === 'object' && message.content.text) {\n            // 处理单个对象格式\n            message.content = message.content.text;\n            console.log(`🎯 Converted object to string for message ${index}`);\n          } else {\n            message.content = String(message.content);\n            console.log(`🎯 Converted other to string for message ${index}`);\n          }\n        }\n      });\n    }\n\n    // 设置默认值\n    if (!request.max_tokens) {\n      request.max_tokens = 1024 * 32;\n    }\n    if (request.temperature === undefined) {\n      request.temperature = 0.7;\n    }\n\n    console.log(\"🎯 TRANSFORMER COMPLETE: All messages processed\");\n    return request;\n  }\n\n  async transformResponseOut(response, context) {\n    console.log(\"MyTransformer: Processing response out\");\n\n    // 克隆响应以修改它\n    const responseText = await response.text();\n\n    try {\n      // 如果是 JSON 响应，尝试增强它\n      const responseData = JSON.parse(responseText);\n\n      if (responseData.choices && responseData.choices.length > 0) {\n        // 给响应添加 transformer 信息\n        responseData.choices.forEach((choice) => {\n          if (choice.message && choice.message.content) {\n            choice.message.content += \"\\n\\n*[Enhanced by MyTransformer]*\";\n          }\n        });\n\n        // 添加自定义元数据\n        responseData.transformer_info = {\n          name: \"MyTransformer\",\n          version: \"1.0.0\",\n          processed_at: new Date().toISOString()\n        };\n      }\n\n      const modifiedResponse = new Response(JSON.stringify(responseData), {\n        status: response.status,\n        statusText: response.statusText,\n        headers: response.headers\n      });\n\n      console.log(\"MyTransformer: Response transformed successfully\");\n      return modifiedResponse;\n    } catch (error) {\n      console.log(\"MyTransformer: Response is not JSON, returning as-is\");\n      // 如果不是 JSON，返回原始响应\n      return new Response(responseText, {\n        status: response.status,\n        statusText: response.statusText,\n        headers: response.headers\n      });\n    }\n  }\n\n  async auth(request, provider, context) {\n    console.log(\"MyTransformer: Auth processing for provider:\", provider?.name);\n\n    // 添加自定义头部或修改认证\n    if (!request.headers) {\n      request.headers = {};\n    }\n\n    // 添加自定义头部来标识被此 transformer 处理过的请求\n    request.headers['X-MyTransformer'] = 'active';\n    request.headers['X-Transformer-Version'] = '1.0.0';\n\n    return request;\n  }\n}\n\n// CommonJS 导出\nmodule.exports = MyTransformer;\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/823/reactions",
        "total_count": 9,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 2,
        "eyes": 3
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/822",
      "id": 3427311144,
      "node_id": "I_kwDON-_mZc7MSJ4o",
      "number": 822,
      "title": "最新版本1.49配和new-api使用出现异常",
      "user": {
        "login": "rustburn",
        "id": 134291161,
        "node_id": "U_kgDOCAEe2Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/134291161?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rustburn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-09-17T18:13:29Z",
      "updated_at": "2025-12-01T04:00:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"2880\" height=\"1704\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1b491dd4-c8df-4889-b0c7-3a5d822d755a\" />\nmessages:\n    text content blocks must be non-empty\n这个异常在一开始的时候不会出现，请求3条之后，或者4条之后开始出现异常。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/822/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/821",
      "id": 3424269023,
      "node_id": "I_kwDON-_mZc7MGjLf",
      "number": 821,
      "title": "在vscode中插件使用问题",
      "user": {
        "login": "luoyedeweizhi",
        "id": 98304524,
        "node_id": "U_kgDOBdwCDA",
        "avatar_url": "https://avatars.githubusercontent.com/u/98304524?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luoyedeweizhi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-17T01:58:36Z",
      "updated_at": "2025-09-17T01:58:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在vscode中使用ccr code后无法输入文字，按下回车后提示sudo权限\n\n<img width=\"355\" height=\"363\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2581d9a4-7190-43b0-9a3b-99cb1997ac1f\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/821/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/820",
      "id": 3416174000,
      "node_id": "I_kwDON-_mZc7Lnq2w",
      "number": 820,
      "title": "bug: Cannot read properties of undefined (reading 'image')TypeError: Cannot read properties of undefined (reading 'image')",
      "user": {
        "login": "R00TSEN1650",
        "id": 149393167,
        "node_id": "U_kgDOCOePDw",
        "avatar_url": "https://avatars.githubusercontent.com/u/149393167?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/R00TSEN1650",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2025-09-15T03:54:10Z",
      "updated_at": "2025-11-01T05:29:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'image')TypeError: Cannot read properties of undefined (reading 'image')\\n    at ImageAgent.shouldHandle (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:81733:24)\\n    at Object.<anonymous> (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:82017:19)\\n    at hookIterator (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3797:14)\\n    at next (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3665:22)\\n    at handleResolve (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3675:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 5 seconds… (attempt 4/10) · API_TIMEOUT_MS=600000ms, try increasing it\n  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'image')TypeError: Cannot read properties of undefined (reading 'image')\\n    at ImageAgent.shouldHandle (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:81733:24)\\n    at Object.<anonymous> (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:82017:19)\\n    at hookIterator (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3797:14)\\n    at next (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3665:22)\\n    at handleResolve (/root/.nvm/versions/node/v20.19.5/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3675:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 10 seconds… (attempt 5/10) · API_TIMEOUT_MS=600000ms, try increasing it\n  ⎿  API Error: Operation aborted\n  ⎿  Interrupted by user\n```\n使用Dashscope api发生上面的报错，是node的版本问题吗？当前npm -v 10.9.3; nvm -v 0.40.3; node -v v22.19.0。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/820/reactions",
        "total_count": 8,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/819",
      "id": 3416018023,
      "node_id": "I_kwDON-_mZc7LnExn",
      "number": 819,
      "title": "重度使用sonnet-4，一个月能花多少钱？",
      "user": {
        "login": "wanllow",
        "id": 92145159,
        "node_id": "U_kgDOBX4GBw",
        "avatar_url": "https://avatars.githubusercontent.com/u/92145159?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wanllow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-15T02:19:16Z",
      "updated_at": "2025-10-10T07:41:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "就使用OpenRouter上正规的api，有没有朋友尝试过？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/819/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/816",
      "id": 3415273814,
      "node_id": "I_kwDON-_mZc7LkPFW",
      "number": 816,
      "title": "无法运行服务，确定端口没有被占用",
      "user": {
        "login": "74596877",
        "id": 26673827,
        "node_id": "MDQ6VXNlcjI2NjczODI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/26673827?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/74596877",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-14T16:47:31Z",
      "updated_at": "2026-01-27T01:30:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "之前用了半个月还正常的，今天重装了一次运行不了了，现在配置项是系统自动生成的\n{\n  \"PORT\": 3456,\n  \"Providers\": [],\n  \"Router\": {}\n}\n\n\nC:\\Users\\Administrator>ccr start\nLoaded JSON config from: C:\\Users\\Administrator\\.claude-code-router\\config.json\n\nC:\\Users\\Administrator>ccr code\nService not running, starting service...\nService startup timeout, please manually run `ccr start` to start the service\n\nC:\\Users\\Administrator>ccr ui\nService not running, starting service...\nService startup timeout, trying to start with default configuration...\nBacked up existing configuration file to C:\\Users\\Administrator\\.claude-code-router\\config.json.2025-09-14T16-43-10-415Z.bak\nCreated minimal default configuration file at ~/.claude-code-router/config.json\nPlease edit this file with your actual configuration.\nService startup still failing. Please manually run `ccr start` to start the service and check the logs.\n\nC:\\Users\\Administrator>\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/816/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/815",
      "id": 3415131129,
      "node_id": "I_kwDON-_mZc7LjsP5",
      "number": 815,
      "title": "ccr ui 崩溃是什么原因",
      "user": {
        "login": "dayanjing84",
        "id": 204045048,
        "node_id": "U_kgDODCl6-A",
        "avatar_url": "https://avatars.githubusercontent.com/u/204045048?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dayanjing84",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-14T14:43:54Z",
      "updated_at": "2025-09-14T14:43:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "为什么进不了ui界面\n<img width=\"2048\" height=\"942\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a8707e0b-4bfb-49a5-bd52-88c0318a0adf\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/815/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/813",
      "id": 3414659754,
      "node_id": "I_kwDON-_mZc7Lh5Kq",
      "number": 813,
      "title": "[Feature Request] Cascade Routing for Multi-Model Workflows",
      "user": {
        "login": "DonMecca",
        "id": 2199157,
        "node_id": "MDQ6VXNlcjIxOTkxNTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2199157?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DonMecca",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-14T06:45:37Z",
      "updated_at": "2025-09-14T06:45:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Summary\n\nAdd **Cascade Routing** functionality to enable sequential model chaining, allowing specialized models to handle different parts of complex requests (e.g., vision model analyzes images → reasoning model generates code).\n\n## Motivation\n\nCurrently, CCR forces a single model to handle entire requests, creating suboptimal scenarios:\n\n**❌ Current Limitation:**\n```bash\n# Complex prompt with image gets routed to vision model\nccr \"Create a responsive landing page based on this design\" [image]\n# → Gemini Flash handles both image analysis AND code generation\n# → Suboptimal coding results from non-specialized model\n```\n\n**✅ Desired Workflow:**\n```bash\n# Same prompt, but cascaded processing:\n# Step 1: Gemini Flash analyzes image → \"Modern landing page with navbar, hero section...\"\n# Step 2: GLM-4.5 uses description → Superior HTML/CSS implementation\n# Result: Best of both models\n```\n\n## Use Cases\n\n1. **Vision-to-Code**: Image analysis → Code generation\n2. **Research-to-Implementation**: Large context research → Fast implementation\n3. **Planning-to-Execution**: Strategic planning → Detailed execution\n4. **Analysis-to-Action**: Data analysis → Report generation\n\n## Proposed Solution\n\n### Configuration Extension\n\nAdd `cascade` routing to existing router config:\n\n```json5\n{\n  \"Router\": {\n    // Existing routes unchanged\n    \"default\": \"synthetic,hf:zai-org/GLM-4.5\",\n    \"image\": \"google-studio,gemini-2.5-flash\",\n\n    // NEW: Cascade definitions\n    \"cascade\": {\n      \"vision-to-reasoning\": {\n        \"trigger\": {\n          \"conditions\": [\"has_image\", \"token_count > 1000\"]\n        },\n        \"steps\": [\n          {\n            \"name\": \"vision_analysis\",\n            \"provider\": \"google-studio,gemini-2.5-flash\",\n            \"system_prompt\": \"Analyze this image for technical implementation.\",\n            \"extract_response\": true\n          },\n          {\n            \"name\": \"code_generation\",\n            \"provider\": \"synthetic,hf:zai-org/GLM-4.5\",\n            \"template\": \"Image: {{vision_analysis.response}}\\nRequest: {{original_user_prompt}}\",\n            \"final_output\": true\n          }\n        ]\n      }\n    }\n  }\n}\n```\n\n### Key Features\n\n- **Backward Compatible**: Existing configs work unchanged\n- **Flexible Triggers**: Content analysis, token thresholds, custom logic\n- **Template System**: Pass data between steps with `{{variable}}` syntax\n- **Multiple Patterns**: Support various multi-step workflows\n- **Error Handling**: Graceful fallback to single-model routing\n\n## Implementation Approach\n\n### Phase 1: Core Infrastructure\n- `CascadeRouter` class for execution logic\n- `TriggerEngine` for activation conditions\n- `TemplateEngine` for variable substitution\n\n### Phase 2: Integration\n- Modify existing router to check cascade routes first\n- Extend request processing pipeline\n- Add configuration validation\n\n### Phase 3: Advanced Features\n- Conditional steps based on intermediate results\n- Parallel execution for independent steps\n- Caching for performance optimization\n\n## Technical Considerations\n\n**Routing Priority:**\n```\n1. Cascade routes (if triggered)\n2. Existing routes (image, longContext, etc.)\n3. Default route\n```\n\n**Performance:**\n- Additional latency from multiple API calls\n- Increased token usage from intermediate responses\n- Configurable timeouts per step\n\n**Error Handling:**\n- Step failures trigger fallback to standard routing\n- Retry mechanisms for transient errors\n- Detailed logging for troubleshooting\n\n## Example Implementation\n\nBasic cascade step execution:\n\n```typescript\nclass CascadeRouter {\n  async executeCascade(config: CascadeConfig, req: Request): Promise<Response> {\n    let context = { original_user_prompt: req.messages[0].content };\n\n    for (const step of config.steps) {\n      const response = await this.executeStep(step, context, req);\n\n      if (step.extract_response) {\n        context[step.name] = { response };\n      }\n\n      if (step.final_output) {\n        return response;\n      }\n    }\n  }\n}\n```\n\n## Implementation Considerations\n\n- **Backward Compatibility**: All existing configurations would continue working unchanged\n- **Gradual Adoption**: Users could opt-in to cascade routing for specific workflows\n- **Performance Impact**: Additional latency from multi-step processing, offset by better results\n- **Error Handling**: Graceful fallback to standard single-model routing when steps fail\n\n## Community Benefits\n\n- **Power Users**: Complex workflows with optimal model selection\n- **Developers**: Better code generation with vision input\n- **Researchers**: Multi-step analysis and implementation pipelines\n- **Everyone**: More intelligent routing without manual intervention\n\n## Technical Approach\n\nThe proposed implementation would involve:\n\n1. **Cascade Router**: Core execution logic for sequential model chaining\n2. **Trigger System**: Conditions for activating cascade workflows\n3. **Template Engine**: Variable substitution between steps\n4. **Integration**: Extend existing router to check cascade routes first\n\n## Alternatives Considered\n\n1. **Custom Router Functions**: Limited by single-response architecture\n2. **External Orchestration**: Requires users to manage multiple CCR calls\n3. **Provider-Level Features**: Not available across all providers\n4. **Manual Two-Step Process**: Poor user experience\n\n---\n\nThis feature would significantly enhance CCR's capabilities for complex workflows while maintaining its current simplicity for basic use cases.\n\nThis enhancement would address a common limitation where users must choose between optimal vision processing OR optimal reasoning, rather than leveraging both. The proposed solution maintains CCR's simplicity while enabling sophisticated multi-model workflows.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/813/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/812",
      "id": 3413500286,
      "node_id": "I_kwDON-_mZc7LdeF-",
      "number": 812,
      "title": "CCR for Bytebot ?",
      "user": {
        "login": "Maitresinh",
        "id": 37817197,
        "node_id": "MDQ6VXNlcjM3ODE3MTk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/37817197?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Maitresinh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-13T13:39:28Z",
      "updated_at": "2025-09-14T04:06:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Bytebote is another great use of AI for RPA tasks....but as the same limitation as Claude Code :  it only can be used with an API from Anthropic & OpenAI. It would be great to use a / this router for optimization and local LLM.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/812/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/811",
      "id": 3412711360,
      "node_id": "I_kwDON-_mZc7LadfA",
      "number": 811,
      "title": "claude code use web_search（使用网络查找工具问题）",
      "user": {
        "login": "morecup",
        "id": 103871318,
        "node_id": "U_kgDOBjDzVg",
        "avatar_url": "https://avatars.githubusercontent.com/u/103871318?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/morecup",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-13T06:11:20Z",
      "updated_at": "2025-09-18T12:57:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claude code使用claude自带的web_search工具时，如果配置的别的模型会出问题，请问是如何解决",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/811/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/810",
      "id": 3412411249,
      "node_id": "I_kwDON-_mZc7LZUNx",
      "number": 810,
      "title": "私有化部署Qwen3-coder-30B模型，本地安装cc+ccr，一直提示API ERROR",
      "user": {
        "login": "rickyluorui",
        "id": 3911369,
        "node_id": "MDQ6VXNlcjM5MTEzNjk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3911369?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rickyluorui",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-13T02:06:40Z",
      "updated_at": "2025-09-14T03:44:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "报错信息：\n\n<img width=\"1917\" height=\"948\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/5b979798-1bb4-43a6-9447-fcecd165e444\" />\n\n'ctx': {'error': ValueError('At least one of `prompt` or `prompt_embeds` must be\n    set.')}}]\\\",\\\"type\\\":\\\"Bad Request\\\",\\\"param\\\":null,\\\"code\\\":400}}\\n    at nt\n    (C:\\\\Users\\\\Gram\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77001:11)\\n    at l0\n    (C:\\\\Users\\\\Gram\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77059:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async a0\n    (C:\\\\Users\\\\Gram\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:77026:96)\",\"type\":\"api_err\n    or\",\"code\":\"provider_response_error\"}}\n\n\n我的配置如下\n<img width=\"681\" height=\"492\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d991a652-8501-463e-a5d4-d2f4447938a8\" />\n\n有大神解决过的话还请支招。。。\n\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/810/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/809",
      "id": 3410487032,
      "node_id": "I_kwDON-_mZc7LR-b4",
      "number": 809,
      "title": "使用anthropic转换器后，需要做什么其他的设置才能支持流式传输吗？",
      "user": {
        "login": "CalsRanna",
        "id": 49579338,
        "node_id": "MDQ6VXNlcjQ5NTc5MzM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/49579338?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CalsRanna",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-12T13:18:57Z",
      "updated_at": "2025-11-04T05:58:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n      \"name\": \"big model\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/anthropic/v1/messages\",\n      \"api_key\": \"XXX\",\n      \"models\": [\n        \"glm-4.5\",\n        \"glm-4.5-air\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"Anthropic\"\n        ]\n      }\n    }\n\n上面是我的配置，但是我让cc写一个几千字的文章，它也是一次性返回的。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/809/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/808",
      "id": 3408623361,
      "node_id": "I_kwDON-_mZc7LK3cB",
      "number": 808,
      "title": "Can we provide a sample configuration with POE's API key?",
      "user": {
        "login": "liuhaonan00",
        "id": 7401465,
        "node_id": "MDQ6VXNlcjc0MDE0NjU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7401465?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liuhaonan00",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-09-12T02:34:49Z",
      "updated_at": "2026-01-27T05:50:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "As described in title, I would like to leverage POE's API, may I know if it is available or not.\n\nMany thanks\n\n<img width=\"1667\" height=\"804\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b1ee2454-8d38-4c98-817c-cc2daac1040c\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/808/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/807",
      "id": 3408498520,
      "node_id": "I_kwDON-_mZc7LKY9Y",
      "number": 807,
      "title": "slash command `/context` show zero usage",
      "user": {
        "login": "hbsun2113",
        "id": 27994442,
        "node_id": "MDQ6VXNlcjI3OTk0NDQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/27994442?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hbsun2113",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-09-12T01:19:31Z",
      "updated_at": "2026-02-10T12:49:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I start with `ccr code`, and then execute `/context`, its output shows the token usage is zero. \n\n<img width=\"783\" height=\"392\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c2b4c745-e2b0-41b9-b161-1a5f40f3e182\" />\n\nWhile I start with `claude`, the `/context` can show reasonable usage.\n\n<img width=\"728\" height=\"391\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2bca33d5-67a2-4435-a5db-6592f2767d92\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/807/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/806",
      "id": 3406970727,
      "node_id": "I_kwDON-_mZc7LEj9n",
      "number": 806,
      "title": "ui显示问题",
      "user": {
        "login": "easyhaloo",
        "id": 32064710,
        "node_id": "MDQ6VXNlcjMyMDY0NzEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/32064710?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/easyhaloo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-11T15:02:45Z",
      "updated_at": "2025-09-11T15:02:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"3024\" height=\"1888\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7382b6cd-5549-4c3b-8bea-e44799b9936e\" />\n\n 配置面板，无法居中",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/806/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/805",
      "id": 3406747810,
      "node_id": "I_kwDON-_mZc7LDtii",
      "number": 805,
      "title": "gemini并行调用工具经常忘记传参数",
      "user": {
        "login": "sai2025ai",
        "id": 210937770,
        "node_id": "U_kgDODJKnqg",
        "avatar_url": "https://avatars.githubusercontent.com/u/210937770?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sai2025ai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-11T14:09:37Z",
      "updated_at": "2025-09-11T14:11:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "貌似只有让其并行调用工具时，不要说任何多余的话，才可以并行调用工具成功。一旦调用工具前说了任意一句话，就会并行调用工具不传参数。即使设定了强规则让其传参数仍然是只说不传\n\nclaude code 和 router 都是最新版本了，用gemini apikey 还是 gemini cli都一样，不过能明显感觉到gemini-cli的模型更蠢一点\n\n不是并行调用工具也经常忘记传参数，非常诡异，试了两个名字有tool的转换器，都没什么用",
      "closed_by": {
        "login": "sai2025ai",
        "id": 210937770,
        "node_id": "U_kgDODJKnqg",
        "avatar_url": "https://avatars.githubusercontent.com/u/210937770?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sai2025ai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/805/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/804",
      "id": 3405763448,
      "node_id": "I_kwDON-_mZc7K_9N4",
      "number": 804,
      "title": "400 error,   modelscope,Qwen/Qwen3-235B-A22B-Thinking-2507",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-11T09:55:10Z",
      "updated_at": "2025-09-19T09:30:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\"level\":50,\"time\":1757584155459,\"pid\":86723,\"hostname\":\"jeffery-MBP.local\",\"reqId\":\"req-8\",\"err\":{\"type\":\"Error\",\"message\":\"Error from provider(modelscope,Qwen/Qwen3-235B-A22B-Thinking-2507: 400): {\\\"error\\\":{\\\"code\\\":\\\"invalid_type\\\",\\\"message\\\":\\\"Invalid type for 'messages.[15].content': expected one of a string or array of objects, but got an object instead.\\\",\\\"param\\\":\\\"'messages.[15].content'\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"b343f3f1-e291-4657-badc-f9144c79e137\\\"}\",\"stack\":\"Error: Error from provider(modelscope,Qwen/Qwen3-235B-A22B-Thinking-2507: 400): {\\\"error\\\":{\\\"code\\\":\\\"invalid_type\\\",\\\"message\\\":\\\"Invalid type for 'messages.[15].content': expected one of a string or array of objects, but got an object instead.\\\",\\\"param\\\":\\\"'messages.[15].content'\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"b343f3f1-e291-4657-badc-f9144c79e137\\\"}\\n    at nt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"statusCode\":400,\"code\":\"provider_response_error\"},\"msg\":\"Error from provider(modelscope,Qwen/Qwen3-235B-A22B-Thinking-2507: 400): {\\\"error\\\":{\\\"code\\\":\\\"invalid_type\\\",\\\"message\\\":\\\"Invalid type for 'messages.[15].content': expected one of a string or array of objects, but got an object instead.\\\",\\\"param\\\":\\\"'messages.[15].content'\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"b343f3f1-e291-4657-badc-f9144c79e137\\\"}\"}\n\n```\n\n  \"transformers\": [{\n    \"path\": \"/Users/jeffery/.claude-code-router/error-handler-transformer.js\",\n    \"options\": {}\n  }],\n \"models\": [\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n        \"deepseek-ai/DeepSeek-V3.1\"\n      ],\n      \"transformer\": {\n        \"deepseek-ai/DeepSeek-V3.1\": {\n          \"use\": [\"sampling\", \"ErrorHandler\"]\n        },\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\": {\n          \"use\": [\n            [\"maxtoken\", {\n              \"max_tokens\": 65536\n            }],\n            \"enhancetool\", \"ErrorHandler\"\n          ]\n        },\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\"reasoning\", \"ErrorHandler\"]\n        },\n        \"Qwen/Qwen3-235B-A22B-Instruct-2507\": {\n          \"use\": [\n            [\"maxtoken\", {\n              \"max_tokens\": 65536\n            }],\n            \"enhancetool\", \"ErrorHandler\"\n          ]\n        }\n      }\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/804/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/803",
      "id": 3405285611,
      "node_id": "I_kwDON-_mZc7K-Ijr",
      "number": 803,
      "title": "macos报错，API Error: 400",
      "user": {
        "login": "sevenokey",
        "id": 6275789,
        "node_id": "MDQ6VXNlcjYyNzU3ODk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6275789?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sevenokey",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-11T07:52:00Z",
      "updated_at": "2025-10-13T17:36:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "> hi\n  ⎿  API Error: 400 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 400): {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"message\\\":\\\"\\\\u003c400\\\\u003e InternalError.Algo.InvalidParameter: The length of the tool name cannot \n     exceed 64.\\\",\\\"param\\\":null,\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"fc65c0f0-f86b-41f5-a26a-ffb83402de6e\\\"}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 400): \n     {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"message\\\":\\\"\\\\u003c400\\\\u003e InternalError.Algo.InvalidParameter: The length of the tool name cannot exceed \n     64.\\\",\\\"param\\\":null,\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"fc65c0f0-f86b-41f5-a26a-ffb83402de6e\\\"}\\n    at nt (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77001:11)\\n    at l0 \n     (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77059:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async a0 \n     (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:77026:96)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n但是在windows上正常，只有一台macos报这个错",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/803/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/802",
      "id": 3404738401,
      "node_id": "I_kwDON-_mZc7K8C9h",
      "number": 802,
      "title": "The ccr code /model does not match the default model set in the UI.",
      "user": {
        "login": "langyamu",
        "id": 40269393,
        "node_id": "MDQ6VXNlcjQwMjY5Mzkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/40269393?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/langyamu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-11T04:40:34Z",
      "updated_at": "2025-09-11T04:42:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/bfea07b8-3125-4e0f-a51a-10e98749741f)\n![Image](https://github.com/user-attachments/assets/4c3cc9be-9809-4a42-bc72-e467bfaa6732)\n![Image](https://github.com/user-attachments/assets/b6da0e42-7cae-4c23-bbbf-04ccbc8062ed)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/802/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/801",
      "id": 3402868133,
      "node_id": "I_kwDON-_mZc7K06Wl",
      "number": 801,
      "title": "怎么重启了后说服务已运行，但是查看状态说是未启动？",
      "user": {
        "login": "enric1985",
        "id": 398806,
        "node_id": "MDQ6VXNlcjM5ODgwNg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/398806?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/enric1985",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-09-10T15:09:47Z",
      "updated_at": "2025-11-03T12:52:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "config配置如下：\n---\n{\n  \"APIKEY\": \"\",\n  \"PORT\": \"3456\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\":[\n    {\n      \"name\": \"qwen3\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1\", \n      \"api_key\": \"sk-********************\",\n      \"models\": [\"qwen3-max-preview\"],\n      \"transformer\": {\n        \"use\": [\"qwen3\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"qwen3,qwen3-max-preview\",\n    \"background\": \"qwen3,qwen3-max-preview\",\n    \"think\": \"qwen3,qwen3-max-preview\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"qwen3,qwen3-max-preview\"\n  }\n}\n\n启动过程：\n---\n(base) xxx@HPCL202411007 ~ % ccr restart\nService was not running or failed to stop.\nStarting claude code router service...\n✅ Service started successfully in the background.\n(base) xxx@HPCL202411007 ~ % ccr status\n\n📊 Claude Code Router Status\n════════════════════════════════════════\n❌ Status: Not Running\n\n💡 To start the service:\n   ccr start\n\n目录 logs 下也无任何日志内容。\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/801/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/800",
      "id": 3402612914,
      "node_id": "I_kwDON-_mZc7Kz8Cy",
      "number": 800,
      "title": "windows最新版本启动失败，nodev22.13.0",
      "user": {
        "login": "WGwuzhi",
        "id": 57304774,
        "node_id": "MDQ6VXNlcjU3MzA0Nzc0",
        "avatar_url": "https://avatars.githubusercontent.com/u/57304774?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/WGwuzhi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-09-10T14:00:28Z",
      "updated_at": "2025-11-28T02:22:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "C:\\Users\\Administrator\\Desktop\\studio-management-system>ccr ui\nService not running, starting service...\nService startup timeout, trying to start with default configuration...\nBacked up existing configuration file to C:\\Users\\Administrator\\.claude-code-router\\config.json.2025-09-10T13-57-26-680Z.bak  \nCreated minimal default configuration file at ~/.claude-code-router/config.json\nPlease edit this file with your actual configuration.\nService startup still failing. Please manually run `ccr start` to start the service and check the logs.\n\nC:\\Users\\Administrator\\Desktop\\studio-management-system>ccr start\nLoaded JSON config from: C:\\Users\\Administrator\\.claude-code-router\\config.json",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/800/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/799",
      "id": 3402388754,
      "node_id": "I_kwDON-_mZc7KzFUS",
      "number": 799,
      "title": "How can I setup thinking tokens",
      "user": {
        "login": "cranyy",
        "id": 128929586,
        "node_id": "U_kgDOB69PMg",
        "avatar_url": "https://avatars.githubusercontent.com/u/128929586?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cranyy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-10T12:58:18Z",
      "updated_at": "2025-09-10T12:58:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "My goal is to use gemini-2.5-pro with 32k thinking tokens but anyhing ive tried as resulted in errors. Will paste them later on PC was just hopign someone had solved this.\n\nForgive me if this has been asked and answered.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/799/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/794",
      "id": 3400470348,
      "node_id": "I_kwDON-_mZc7Krw9M",
      "number": 794,
      "title": "ReferenceError: File is not defined ... webidl.is.File = webidl.util.MakeTypeAssertion(File);",
      "user": {
        "login": "amitthk",
        "id": 5336499,
        "node_id": "MDQ6VXNlcjUzMzY0OTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5336499?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/amitthk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-10T00:55:40Z",
      "updated_at": "2025-11-28T11:21:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I am getting below error. Tried on both windows powershell as well as ubuntu WSL. Same error:\n\n```\n/home/<username>/.nvm/versions/node/v18.20.8/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:39364\n    webidl.is.File = webidl.util.MakeTypeAssertion(File);\nReferenceError: File is not defined\n    at node_modules/.pnpm/undici@7.15.0/node_modules/undici/lib/web/webidl/index.js (/home/<username>/.nvm/versions/node/v18.20.8/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:39364:52)\n```\n\n\nBelow is my config.json\n\n```\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"lmstudio\",\n      \"api_base_url\": \"http://localhost:1234/v1/chat/completions\",\n      \"api_key\": \"lmstudio\",\n      \"models\": [\n        \"qwen:qwen2.5-coder-14b\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"lmstudio,qwen:qwen2.5-coder-14b\",\n  },\n}\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/794/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/793",
      "id": 3399577503,
      "node_id": "I_kwDON-_mZc7KoW-f",
      "number": 793,
      "title": "ANTHROPIC_DEFAULT_*_MODEL 和 config.json 中的 Router 的区别",
      "user": {
        "login": "gulubao",
        "id": 48795095,
        "node_id": "MDQ6VXNlcjQ4Nzk1MDk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/48795095?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gulubao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-09T18:55:12Z",
      "updated_at": "2025-09-09T18:55:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "注意到 ~/.claude-code-router/config.json 中似乎可以定义 anthropic 官方的环境变量, 其中可以包含\n\n- ANTHROPIC_DEFAULT_SONNET_MODEL,\n- ANTHROPIC_DEFAULT_OPUS_MODEL,\n- ANTHROPIC_DEFAULT_HAIKU_MODEL\n\n这样的官方Router. \n\n同时, ~/.claude-code-router/config.json 中需要定义类似 Router: default | background | think | longContext | webSearch 这样的路由模型配置.\n\n当两套配置并存时，claude code router 项目是如何路由使用的模型的?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/793/reactions",
        "total_count": 2,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/791",
      "id": 3394833897,
      "node_id": "I_kwDON-_mZc7KWQ3p",
      "number": 791,
      "title": "API Error (Connection error.)",
      "user": {
        "login": "qxf-Carl",
        "id": 24507326,
        "node_id": "MDQ6VXNlcjI0NTA3MzI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/24507326?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/qxf-Carl",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-09-08T16:11:30Z",
      "updated_at": "2025-09-12T09:12:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"2004\" height=\"720\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/eb9394e0-48fc-4629-8839-b77baeef4575\" />\n\n claude code 和 ClaudeCode router 版本都是最新的,ccr 服务启动正常，通过curl 请求openrouter api 也正常，但是 通过ccr code 启动claude code 一直出现 一直出现API Error (Connection error.)！\n我的CCR 配置如下，\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-or-v1-99*********************adc047c09f5b052e8\",\n      \"models\": [\n        \"deepseek/deepseek-chat-v3.1:free\",\n        \"deepseek/deepseek-r1-0528:free\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"openrouter,deepseek/deepseek-chat-v3.1:free\",\n    \"background\": \"openrouter,deepseek/deepseek-r1-0528:free\",\n    \"think\": \"openrouter,deepseek/deepseek-r1-0528:free\",\n    \"longContext\": \"openrouter,deepseek/deepseek-r1-0528:free\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"openrouter,deepseek/deepseek-r1-0528:free\",\n    \"image\": \"\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/791/reactions",
        "total_count": 2,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/790",
      "id": 3394498930,
      "node_id": "I_kwDON-_mZc7KU_Fy",
      "number": 790,
      "title": "Issue with local Ollama (gpt-oss:20b) – model called but not using tools",
      "user": {
        "login": "giova86",
        "id": 39263257,
        "node_id": "MDQ6VXNlcjM5MjYzMjU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/39263257?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/giova86",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-08T14:36:11Z",
      "updated_at": "2025-09-29T02:36:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, I’m trying to use Claude Code Router with a local Ollama instance.\nHere’s my config.json file:\n\n```\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\n        \"gpt-oss:20b\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,gpt-oss:20b\",\n  },\n}\n\n```\n\nThe model is being called correctly, but it doesn’t seem to use any of the tools.\nWhat I see is that the model responds, but completely ignores tool calls (as if they were not available or it can’t invoke them).\n\n\n<img width=\"899\" height=\"237\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a35e2575-8888-421b-922f-9235b8f73f0b\" />\n\nhow can I solve it?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/790/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/789",
      "id": 3393251891,
      "node_id": "I_kwDON-_mZc7KQOoz",
      "number": 789,
      "title": "Service interrupted?",
      "user": {
        "login": "CzsGit",
        "id": 16255872,
        "node_id": "MDQ6VXNlcjE2MjU1ODcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/16255872?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CzsGit",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-08T08:52:28Z",
      "updated_at": "2025-09-08T08:52:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1150\" height=\"864\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e8125339-ffa1-4585-be67-e31c8f8071e5\" />\n\n`API Error: 404 <!DOCTYPE html>\n     <html lang=\"en\">\n     <head>\n     <meta charset=\"utf-8\">\n     <title>Error</title>\n     </head>\n     <body>\n     <pre>Cannot POST /v1/messages</pre>\n     </body>\n     </html>`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/789/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/788",
      "id": 3392519377,
      "node_id": "I_kwDON-_mZc7KNbzR",
      "number": 788,
      "title": "bug：有时在多个命令行窗口使用ccr code启动不了多个cc客户端",
      "user": {
        "login": "zyq-cn",
        "id": 73511917,
        "node_id": "MDQ6VXNlcjczNTExOTE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/73511917?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zyq-cn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-08T04:12:57Z",
      "updated_at": "2025-09-09T13:18:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nPS C:\\Users\\zyq13> ccr code\nService not running, starting service...\nService startup timeout, please manually run ccr start to start the service\nPS C:\\Users\\zyq13> ccr start\nundefined\nLoaded JSON config from: C:\\Users\\zyq13.claude-code-router\\config.json\nPS C:\\Users\\zyq13>\n```\nwindows环境\n一个powershell窗口使用ccr start启动着\n有时其它窗口如此，启动不起来cc。\n\n经调查，问题出在：\nsrc\\utils\\processCheck.ts\n```\nexport function isServiceRunning(): boolean {\n    if (!existsSync(PID_FILE)) {\n        return false;\n    }\n\n    try {\n        const pid = parseInt(readFileSync(PID_FILE, 'utf-8'));\n        process.kill(pid, 0);\n        return true;\n    } catch (e) {\n        // Process not running, clean up pid file\n        cleanupPidFile();\n        return false;\n    }\n}\n```\nprocess.kill(pid, 0) 这个方法在 Windows 系统上无法稳定地用来检查进程是否存在。它可能会为一个仍在运行的进程抛出错误，导致代码错误地认为服务已经停止，并执行 cleanupPidFile() 删除了 PID 文件。\n\n这就是为什么在另一个终端中 ccr code会失败：它错误地判断服务未运行，然后尝试启动一个新服务（因为端口被占用而失败）。\n\n经过修改 isServiceRunning 函数，在 Windows上使用 tasklist 命令，我没有再出现过以上问题。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/788/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/787",
      "id": 3392454719,
      "node_id": "I_kwDON-_mZc7KNMA_",
      "number": 787,
      "title": "仅有gemini模型用不了",
      "user": {
        "login": "zxiaomin618",
        "id": 59230066,
        "node_id": "MDQ6VXNlcjU5MjMwMDY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/59230066?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zxiaomin618",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-08T03:36:14Z",
      "updated_at": "2025-09-24T17:33:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置了iflow和siliconflow，国内api都可以用。但是gemini pro和flash从上周就用不了啦。现在是在ide中配了apikey，有大佬遇到类似问题并解决吗\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/787/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/786",
      "id": 3391946996,
      "node_id": "I_kwDON-_mZc7KLQD0",
      "number": 786,
      "title": "API Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed",
      "user": {
        "login": "gogoyan",
        "id": 54283901,
        "node_id": "MDQ6VXNlcjU0MjgzOTAx",
        "avatar_url": "https://avatars.githubusercontent.com/u/54283901?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gogoyan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-09-07T19:50:13Z",
      "updated_at": "2025-11-08T18:20:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "不知道为什么重装cc + ccr，还是不行，错误如下：\nAPI Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at node:internal/deps/undici/undici:15445:13\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async l0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:76095:11)\\n    at async a0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:76065:96)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 4 seconds… (attempt 4/10) · API_TIMEOUT_MS=600000ms, try increasing it",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/786/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/785",
      "id": 3391409638,
      "node_id": "I_kwDON-_mZc7KJM3m",
      "number": 785,
      "title": "请问macOS能用吗？我win上用过没问题，mac上怎么用不了呢？",
      "user": {
        "login": "yanpeng128",
        "id": 20382129,
        "node_id": "MDQ6VXNlcjIwMzgyMTI5",
        "avatar_url": "https://avatars.githubusercontent.com/u/20382129?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanpeng128",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-07T09:30:42Z",
      "updated_at": "2025-09-18T03:52:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/785/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/783",
      "id": 3391202626,
      "node_id": "I_kwDON-_mZc7KIaVC",
      "number": 783,
      "title": "【求助】使用智普官方glm-4.5和glm-4.5v，普通问答可以，图片解释报错",
      "user": {
        "login": "AlanHootman",
        "id": 20291253,
        "node_id": "MDQ6VXNlcjIwMjkxMjUz",
        "avatar_url": "https://avatars.githubusercontent.com/u/20291253?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AlanHootman",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-07T04:53:04Z",
      "updated_at": "2025-09-10T08:45:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1290\" height=\"1408\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7a6e6908-f445-40bb-b711-65934be2ffdd\" />\n\n```json\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"ZhiPu\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/paas/v4/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"glm-4.5\",\n        \"glm-4.5-air\"\n      ]\n    },\n    {\n      \"name\": \"ZhiPuV\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/paas/v4/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"glm-4.5v\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_token\": 16384\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"ZhiPu,glm-4.5\",\n    \"background\": \"ZhiPu,glm-4.5\",\n    \"think\": \"ZhiPu,glm-4.5\",\n    \"longContext\": \"ZhiPu,glm-4.5\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"ZhiPu,glm-4.5\",\n    \"image\": \"ZhiPuV,glm-4.5v\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\",\n  \"forceUseImageAgent\": true\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/783/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/779",
      "id": 3390014770,
      "node_id": "I_kwDON-_mZc7KD4Uy",
      "number": 779,
      "title": "Plan mode models",
      "user": {
        "login": "IntegralMedia01",
        "id": 25426500,
        "node_id": "MDQ6VXNlcjI1NDI2NTAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/25426500?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/IntegralMedia01",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-06T11:47:29Z",
      "updated_at": "2025-09-07T13:54:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is there a way to set plan mode to have gpt5 and then normal mode to be sonnet?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/779/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/778",
      "id": 3389516691,
      "node_id": "I_kwDON-_mZc7KB-uT",
      "number": 778,
      "title": "bug:FastifyError [Error]: Attempted to send payload of invalid type 'object'. [FST_ERR_REP_INVALID_PAYLOAD_TYPE]",
      "user": {
        "login": "zyq-cn",
        "id": 73511917,
        "node_id": "MDQ6VXNlcjczNTExOTE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/73511917?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zyq-cn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-06T07:13:12Z",
      "updated_at": "2026-01-07T02:08:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nC:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10444\n        throw new FST_ERR_REP_INVALID_PAYLOAD_TYPE(typeof payload);\n              ^\nFastifyError [Error]: Attempted to send payload of invalid type 'object'. Expected a string or Buffer.\n    at onSendEnd (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10444:15)\n    at wrapOnSendEnd (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10371:9)\n    at next (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:3705:11)\n    at handleResolve (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:3720:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5) {\n  code: 'FST_ERR_REP_INVALID_PAYLOAD_TYPE',\n  statusCode: 500\n}\n\nNode.js v22.17.0\n```\n\n这个错误应该是我用ESC中断claude code输出的时候出现的。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/778/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/777",
      "id": 3389455282,
      "node_id": "I_kwDON-_mZc7KBvuy",
      "number": 777,
      "title": "请问可以继承网页大模型吗？比如qwen chat的网页中的大模型😋",
      "user": {
        "login": "chiimagnus",
        "id": 151696847,
        "node_id": "U_kgDOCQq1zw",
        "avatar_url": "https://avatars.githubusercontent.com/u/151696847?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chiimagnus",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-06T06:25:01Z",
      "updated_at": "2025-09-06T06:25:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请问可以继承网页大模型吗？比如qwen chat的网页中的大模型😋",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/777/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/776",
      "id": 3388369587,
      "node_id": "I_kwDON-_mZc7J9mqz",
      "number": 776,
      "title": "如何配置思考 think",
      "user": {
        "login": "VanLiuZhi",
        "id": 22883555,
        "node_id": "MDQ6VXNlcjIyODgzNTU1",
        "avatar_url": "https://avatars.githubusercontent.com/u/22883555?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/VanLiuZhi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-05T18:04:17Z",
      "updated_at": "2025-09-05T18:04:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用 glm4.5, 或者qwen-think，都是支持思考的，看不懂transformer里面要怎么配置呢",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/776/reactions",
        "total_count": 2,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 2,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/774",
      "id": 3385295656,
      "node_id": "I_kwDON-_mZc7Jx4Mo",
      "number": 774,
      "title": "Missing model in request body",
      "user": {
        "login": "jack1mason",
        "id": 25088070,
        "node_id": "MDQ6VXNlcjI1MDg4MDcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/25088070?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jack1mason",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-09-04T20:10:28Z",
      "updated_at": "2025-11-10T16:05:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm getting this after setting things up.  I used the default for the config.json (copied below, minus my API keys for openrouter and gemini)\n\nAlso, I did not get to the same screen I saw in \n\nhttps://youtu.be/3VLsxu9TnmA?si=_-Ccw7uc9WMdvCL_ after the first start\n\n\n\nWelcome to Claude Code!                                  │\n│                                                            │\n│   /help for help, /status for your current setup           │\n│                                                            │\n│   cwd: /Users/jackmason/Documents/electr0motiv_final copy  │\n│                                                            │\n│   ──────────────────────────────────────────────────────── │\n│                                                            │\n│   Overrides (via env):                                     │\n│                                                            │\n│   • API timeout: 600000ms                                  │\n│   • API Base URL: http://127.0.0.1:3456                    │\n╰────────────────────────────────────────────────────────────╯\n\n> hello\n  ⎿  API Error: 400 {\"error\":\"Missing model in request body\"}\n\n{\n  \"APIKEY\": \"your-secret-key\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"XXX\",\n      \"models\": [\n        \"google/gemini-2.5-pro\",\n        \"google/gemini-2.5-flash\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"x-ai/grok-code-fast-1\",\n        \"deepseek/deepseek-r1-0528:free\",\n        \"qwen/qwen3-30b-a3b\",\n        \"qwen/qwen3-30b-a3b:free\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n        \n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    },\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:latest\"]\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"XX\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    },\n    {\n      \"name\": \"volcengine\",\n      \"api_base_url\": \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-v3-250324\", \"deepseek-r1-250528\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"]\n      }\n    },\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\"Qwen/Qwen3-Coder-480B-A35B-Instruct\", \"Qwen/Qwen3-235B-A22B-Thinking-2507\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ],\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\"reasoning\"]\n        }\n      }\n    },\n    {\n      \"name\": \"dashscope\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\"qwen3-coder-plus\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ]\n      }\n    },\n    {\n      \"name\": \"aihubmix\",\n      \"api_base_url\": \"https://aihubmix.com/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"Z/glm-4.5\",\n        \"claude-opus-4-20250514\",\n        \"gemini-2.5-pro\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-chat\",\n    \"background\": \"ollama,qwen2.5-coder:latest\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/774/reactions",
        "total_count": 6,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 5,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/773",
      "id": 3383589168,
      "node_id": "I_kwDON-_mZc7JrXkw",
      "number": 773,
      "title": "non intractive mode getting this error CCR CODE",
      "user": {
        "login": "nidum-lovable",
        "id": 198877608,
        "node_id": "U_kgDOC9qhqA",
        "avatar_url": "https://avatars.githubusercontent.com/u/198877608?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nidum-lovable",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-04T12:37:19Z",
      "updated_at": "2025-09-04T12:38:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\"parentUuid\":\"2fe87da4-468e-4d27-8c5b-b1313697dd4d\",\"isSidechain\":false,\"userType\":\"external\",\"cwd\":\"/root/projects/eager-star-125\",\"sessionId\":\"70014ee0-af0f-4de9-98bb-02858a2c1127\",\"version\":\"1.0.89\",\"gitBranch\":\"main\",\"type\":\"assistant\",\"uuid\":\"118e6c65-a7cf-4079-bace-ccc4a94d368f\",\"timestamp\":\"2025-09-04T12:30:06.747Z\",\"message\":{\"id\":\"2affff19-f290-4645-a57d-7b021d41c575\",\"model\":\"<synthetic>\",\"role\":\"assistant\",\"stop_reason\":\"stop_sequence\",\"stop_sequence\":\"\",\"type\":\"message\",\"usage\":{\"input_tokens\":0,\"output_tokens\":0,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"server_tool_use\":{\"web_search_requests\":0},\"service_tier\":null},\"content\":[{\"type\":\"text\",\"text\":\"API Error: 400 {\\\"error\\\":{\\\"message\\\":\\\"Error from provider(openrouter,kimi-vibecoder: 400): {\\\\\\\"error\\\\\\\":{\\\\\\\"message\\\\\\\":\\\\\\\"litellm.BadRequestError: OpenAIException - Invalid request: Your request exceeded model token limit: 131072. Received Model Group=kimi-vibecoder\\\\\\\\nAvailable Model Group Fallbacks=None\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request_error\\\\\\\",\\\\\\\"param\\\\\\\":null,\\\\\\\"code\\\\\\\":\\\\\\\"400\\\\\\\"}}Error: Error from provider(openrouter,kimi-vibecoder: 400): {\\\\\\\"error\\\\\\\":{\\\\\\\"message\\\\\\\":\\\\\\\"litellm.BadRequestError: OpenAIException - Invalid request: Your request exceeded model token limit: 131072. Received Model Group=kimi-vibecoder\\\\\\\\nAvailable Model Group Fallbacks=None\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request_error\\\\\\\",\\\\\\\"param\\\\\\\":null,\\\\\\\"code\\\\\\\":\\\\\\\"400\\\\\\\"}}\\\\n    at nt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\\\n    at u0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\\\n    at async o0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\\\",\\\"type\\\":\\\"api_error\\\",\\\"code\\\":\\\"provider_response_error\\\"}}\"}]},\"isApiErrorMessage\":true}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/773/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/771",
      "id": 3382762039,
      "node_id": "I_kwDON-_mZc7JoNo3",
      "number": 771,
      "title": "是否支持 SubAgent 调用时，直接使用 agent md 中配置 model 来请求吗",
      "user": {
        "login": "QinGeneral",
        "id": 7514260,
        "node_id": "MDQ6VXNlcjc1MTQyNjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7514260?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/QinGeneral",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-04T08:51:58Z",
      "updated_at": "2025-09-18T11:48:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "是否 SubAgent 调用时，直接使用 agent md 中配置 model 来请求吗\n\n---\nname: your-sub-agent-name\ndescription: Description of when this subagent should be invoked\ntools: tool1, tool2, tool3  # Optional - inherits all tools if omitted\n**model: kimi-k2**\n---",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/771/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/767",
      "id": 3382105549,
      "node_id": "I_kwDON-_mZc7JltXN",
      "number": 767,
      "title": "增加功能：将提供商请求结果反馈给自定义路由函数",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-04T04:38:09Z",
      "updated_at": "2025-09-13T04:41:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "描述:\n  目前 Claude Code Router 的自定义路由函数只能被动地返回模型名称，无法获取请求的实际执行结果。当提供商返回错误（如\n  429 速率限制）时，这些信息只记录在日志中，不会传递回自定义路由函数。\n\n  当前行为:\n  1. 自定义路由函数返回模型名称字符串（如 \"provider,model\"）\n  2. CCR 使用该模型向提供商发起请求\n  3. 如果请求失败（如 429 错误），CCR 直接记录日志并返回错误给客户端\n  4. 自定义路由函数无法得知请求结果\n\n  期望行为:\n  增加一种机制，允许将提供商请求的结果（成功/失败状态、错误信息等）反馈给自定义路由函数，使路由函数能够：\n  1. 实时调整路由策略\n  2. 实现智能的错误处理和退避机制\n  3. 动态更新提供商的健康状态\n\n  可能的实现方案:\n  1. 回调函数方式：为自定义路由函数提供一个回调函数参数，用于报告请求结果\n  2. 增强返回值：允许自定义路由函数返回一个包含处理函数的对象\n  3. 事件机制：通过事件订阅机制通知路由函数请求结果\n\n  使用场景示例:\n```  \n// 方案1: 回调函数\n\n\n  module.exports = async function router(req, config, onRequestResult) {\n    const model = selectBestModel(req);\n\n    // 注册结果回调\n    onRequestResult((result) => {\n      if (result.error && result.error.statusCode === 429) {\n        // 记录 429 错误，调整后续路由策略\n        updateProviderStatus(result.provider, 'rate_limited');\n      }\n    });\n\n    return model;\n  };\n \n\n  // 方案2: 返回对象\n \n  module.exports = async function router(req, config) {\n    const model = selectBestModel(req);\n\n    return {\n      model: model,\n      onResult: (result) => {\n        // 处理请求结果\n        handleRequestResult(result);\n      }\n    };\n  }\n```\n\n  好处:\n  1. 实现更智能的路由决策\n  2. 支持主动的错误处理和恢复机制\n  3. 提高系统的整体稳定性和可靠性\n  4. 允许实现复杂的负载均衡和故障转移策略\n\n  这将使 CCR 成为一个更加强大和灵活的路由解决方案。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/767/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/766",
      "id": 3380792285,
      "node_id": "I_kwDON-_mZc7Jgsvd",
      "number": 766,
      "title": "API Error (Connection error.)",
      "user": {
        "login": "gogoyan",
        "id": 54283901,
        "node_id": "MDQ6VXNlcjU0MjgzOTAx",
        "avatar_url": "https://avatars.githubusercontent.com/u/54283901?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gogoyan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-03T18:11:08Z",
      "updated_at": "2025-09-08T03:22:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "最近Claude code 和 ccr 都升级最新版，这两天出现频繁的错误：API Error (Connection error.) · Retrying in 4 seconds… (attempt 4/10) · API_TIMEOUT_MS=600000ms, try increasing it\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 9 seconds… (attempt 5/10) · API_TIMEOUT_MS=600000ms, try increasing it\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 18 seconds… (attempt 6/10) · API_TIMEOUT_MS=600000ms, try increasing it\n    ⎿  TypeError (fetch failed)\n\n\n找了很久也不知道怎么解决，请问这个是什么问题，问AI也问不出来情况，配置也换了好几次 应该也不是APi的问题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/766/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/765",
      "id": 3379760603,
      "node_id": "I_kwDON-_mZc7Jcw3b",
      "number": 765,
      "title": "404  CCR 1.0.43  report  Provider 'xxx' not foundError",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-03T12:56:37Z",
      "updated_at": "2026-02-10T02:18:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n使用自定义路由， 当 请求的模型 不在配置里面时， 返回可用的 provider, model \n\n当在 CC 设置 模型为 xxx, 或者 默认的 ` claude-sonnet-4-20250514`\n\n在 CC 发起对话时，就报错\n\n>   ⎿  API Error: 404 {\"error\":{\"message\":\"Provider 'xxx' not foundError: Provider 'xxx' not found\\n    at nt \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at o0 \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75668:17)\\n    at Object.<anonymous> \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75718:86)\\n    at preHandlerCallbackInner \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:4549:28)\\n    at preHandlerCallback \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:4521:9)\\n    at next \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3673:13)\\n    at handleResolve \n>      (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3688:11)\\n    at process.processTicksAndRejections \n>      (node:internal/process/task_queues:105:5)\",\"type\":\"api_error\",\"code\":\"provider_not_found\"}}\n\n实际上，我的 自定义路由已经 正确返回了 模型\n\n> \n> [2025-09-03T12:46:24.919Z] [INFO] [req-c] -------------------- New Request --------------------\n> [2025-09-03T12:46:24.919Z] [DEBUG] [req-c] 原始请求模型 {\"originalModel\":\"xxx\"}\n> [2025-09-03T12:46:24.920Z] [DEBUG] [req-c] Sanitized Incoming Request: {\"id\":\"req-c\",\"params\":{},\"raw\":\"[raw request object]\",\"query\":{\"beta\":\"true\"},\"body\":{\"model\":\"xxx\",\"messages\":\"[1 messages hidden]\",\"temperature\":1,\"system\":\"[system prompt hidden]\",\"tools\":\"[24 tools hidden]\",\"metadata\":{\"user_id\":\"user_89674e3d26ca3d3bdeb4aa2c298369f5a2c7ea32afe272f9d07a5b26dc2b58dd_account__session_5ac37d06-e75b-4c76-9938-f8ccd9d8a73d\"},\"max_tokens\":21333},\"corsPreflightEnabled\":false,\"sessionId\":\"5ac37d06-e75b-4c76-9938-f8ccd9d8a73d\",\"tokenCount\":13637}\n> [2025-09-03T12:46:24.920Z] [INFO] [req-c] 未指定或未知模型，执行自适应路由...\n> [2025-09-03T12:46:24.920Z] [INFO] 负载均衡选择 {\"provider\":\"modelscope\",\"model\":\"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\"type\":\"default\",\"weights\":{\"coder\":{\"modelscope\":0.8571428571428571,\"iflow\":0.14285714285714285},\"thinking\":{\"modelscope\":0.8571428571428571,\"iflow\":0.14285714285714285},\"default\":{\"modelscope\":0.8571428571428571,\"iflow\":0.14285714285714285}},\"counters\":{\"iflow\":2,\"modelscope\":10}}\n> [2025-09-03T12:46:24.921Z] [INFO] [req-c] 选择模型 {\"model\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\"type\":\"default\",\"requestLength\":14856,\"providerUsage\":\"10 (统计)\",\"modelUsage\":\"10/500\",\"rpm\":60,\"maxLength\":126976,\"loadBalancerWeights\":{\"coder\":{\"modelscope\":0.8571428571428571,\"iflow\":0.14285714285714285},\"thinking\":{\"modelscope\":0.8571428571428571,\"iflow\":0.14285714285714285},\"default\":{\"modelscope\":0.8571428571428571,\"iflow\":0.14285714285714285}},\"loadBalancerCounters\":{\"iflow\":2,\"modelscope\":10}}\n> [2025-09-03T12:46:24.921Z] [DEBUG] [req-c] 已修改请求对象中的模型字段 {\"newModel\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\"currentModelInBody\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"}\n> [2025-09-03T12:46:24.922Z] [INFO] [req-c] ==> 最终返回模型 (Final Returned Model) {\"model\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"}\n> [2025-09-03T12:46:24.922Z] [DEBUG] [req-c] 路由函数即将返回 {\"returnValue\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"}\n> [2025-09-03T12:46:24.922Z] [DEBUG] [req-c] 直接修改请求对象中的模型字段 {\"originalModel\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\"newModel\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"}\n> [2025-09-03T12:46:24.922Z] [DEBUG] [req-c] 返回的模型验证通过（小写比较） {\"returnedModel\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\"provider\":\"modelscope\",\"model\":\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"}\n> [2025-09-03T12:46:24.922Z] [INFO] [req-c] 路由函数最终返回 {\"returnValue\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\"returnType\":\"string\",\"returnValueLength\":46}\n> [2025-09-03T12:46:24.922Z] [DEBUG] [req-c] 最终确认修改请求对象中的模型字段 {\"newModel\":\"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"}\n> [2025-09-03T12:46:24.923Z] [DEBUG] 路由函数执行完毕\n\n我的CCR  版本 \n> ccr -v\n> claude-code-router version: 1.0.43\n> ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/765/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/764",
      "id": 3379467678,
      "node_id": "I_kwDON-_mZc7JbpWe",
      "number": 764,
      "title": "是否可以支持前置代理环境",
      "user": {
        "login": "ttym",
        "id": 3234290,
        "node_id": "MDQ6VXNlcjMyMzQyOTA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3234290?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ttym",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-03T11:31:24Z",
      "updated_at": "2025-09-08T03:22:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "公司电脑需要通过代理才能访问外网，CCR是否可以考虑支持配置前置代理？目前尝试模型代理好像是失效的，调用API一直返回502",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/764/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/763",
      "id": 3379225142,
      "node_id": "I_kwDON-_mZc7JauI2",
      "number": 763,
      "title": "本地部署的兼容openai的api接口，应该选择哪个provider，我部的是deepseek，ccr code o启动之后报API Error 500 failed TYPEERROR",
      "user": {
        "login": "Microslargh",
        "id": 55447170,
        "node_id": "MDQ6VXNlcjU1NDQ3MTcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/55447170?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Microslargh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-03T10:11:13Z",
      "updated_at": "2025-09-18T01:55:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "本地部署的兼容openai的api接口，应该选择哪个provider，我部的是deepseek，ccr code o启动之后报API Error 500 failed TYPEERROR\n[求助\n\n![Image](https://github.com/user-attachments/assets/17b6255a-91db-4f75-a789-cb9fb72f3c9e)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/763/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/761",
      "id": 3379010102,
      "node_id": "I_kwDON-_mZc7JZ5o2",
      "number": 761,
      "title": "API Error (500 {\"error\":{\"message\":\"Error from provider(openai,gpt-oss-120b: 500): Error: Error from provider(openai,gpt-oss-120b: 500): \\n    at nt (/usr/local/node/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n",
      "user": {
        "login": "shawn8172014",
        "id": 15920831,
        "node_id": "MDQ6VXNlcjE1OTIwODMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/15920831?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/shawn8172014",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-03T09:08:40Z",
      "updated_at": "2025-09-03T09:08:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1843\" height=\"512\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/522f03fa-ca96-4cf2-8a07-6ebdacb3bd3f\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/761/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/760",
      "id": 3378984328,
      "node_id": "I_kwDON-_mZc7JZzWI",
      "number": 760,
      "title": "最新版 claude code + GLM ,404 错误",
      "user": {
        "login": "dehengxu",
        "id": 193302,
        "node_id": "MDQ6VXNlcjE5MzMwMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/193302?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dehengxu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2025-09-03T09:01:54Z",
      "updated_at": "2026-02-10T03:13:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr: 1.0.46\n\n```json\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 6543,\n  \"APIKEY\": \"11\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1\",\n      \"api_key\": \"sk-or-....\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"google/gemini-2.5-flash\"\n      ]\n    },\n    {\n      \"name\": \"glm\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/paas/v4\",\n      \"api_key\": \"$my-key\",\n      \"models\": [\n        \"glm-4.5\",\n        \"glm-4.5-air\"\n      ]\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"glm,glm-4.5\",\n    \"background\": \"glm,glm-4.5\",\n    \"think\": \"openrouter,google/gemini-2.5-pro-preview\",\n    \"longContext\": \"\",\n    \"longContextThreshold\": 1000000,\n    \"webSearch\": \"\",\n    \"image\": \"\"\n  },\n  \"CUSTOM_ROUTER_PATH\": \"\"\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/760/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/759",
      "id": 3374858402,
      "node_id": "I_kwDON-_mZc7JKECi",
      "number": 759,
      "title": "多用户场景下怎么配置config？",
      "user": {
        "login": "xiyuecangxin",
        "id": 58159320,
        "node_id": "MDQ6VXNlcjU4MTU5MzIw",
        "avatar_url": "https://avatars.githubusercontent.com/u/58159320?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xiyuecangxin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-02T07:53:36Z",
      "updated_at": "2025-10-31T01:48:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "目前看到至少有两个冲突的地方：\n1. 大家都用的同一个port\n2. tmp目录下有个claude-code-reference-count.txt文件，第一个用户创建了之后别的用户都会permission denied，改成777都不行",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/759/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/758",
      "id": 3374609203,
      "node_id": "I_kwDON-_mZc7JJHMz",
      "number": 758,
      "title": "ccr restart后，再执行 ccr code -p ，会把ccr stop，在一个脚本中，多次执行ccr code -p 会偶现 start失败的报错",
      "user": {
        "login": "mizl",
        "id": 57606737,
        "node_id": "MDQ6VXNlcjU3NjA2NzM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/57606737?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mizl",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-02T06:30:09Z",
      "updated_at": "2025-09-02T06:30:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/758/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/755",
      "id": 3372383547,
      "node_id": "I_kwDON-_mZc7JAn07",
      "number": 755,
      "title": "Wsl+Ubuntu场景下，虚拟机启动ccr code， UI默认监听127.0.0.1导致win本机无法浏览器连接",
      "user": {
        "login": "freekingxx",
        "id": 21023693,
        "node_id": "MDQ6VXNlcjIxMDIzNjkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/21023693?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/freekingxx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-01T11:52:26Z",
      "updated_at": "2025-09-01T14:07:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr配置如下，其中HOST配置了0.0.0.0 但似乎并未生效\n<img width=\"641\" height=\"268\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/667ca050-90d9-4438-85cd-1a167ce01c9b\" />\n\nss -tunlp 查看3456 监听在127.0.0.1\n<img width=\"910\" height=\"76\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ab8d439e-bb95-4eba-b34f-fd0761abe429\" />\n\n请问上面应该如何解决？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/755/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/753",
      "id": 3371426687,
      "node_id": "I_kwDON-_mZc7I8-N_",
      "number": 753,
      "title": "Iflow outside China?",
      "user": {
        "login": "PancakeZik",
        "id": 20574058,
        "node_id": "MDQ6VXNlcjIwNTc0MDU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20574058?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PancakeZik",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-01T06:45:06Z",
      "updated_at": "2025-10-05T18:58:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi all,\n\nJust wondering if there is any way to use iflow without having a +86 phone number?\n\nThank you! ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/753/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/752",
      "id": 3371352840,
      "node_id": "I_kwDON-_mZc7I8sMI",
      "number": 752,
      "title": "希望增加多实例运行功能",
      "user": {
        "login": "zyq-cn",
        "id": 73511917,
        "node_id": "MDQ6VXNlcjczNTExOTE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/73511917?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zyq-cn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-01T06:16:34Z",
      "updated_at": "2025-09-08T04:07:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题，希望增加运行多个实例的功能，运行多个claude code（ccr code）提升开发效率。\n\n当前工具仅能单实例运行，无法满足多场景并行需求。建议支持多端口启动。\n\n谢谢大大。\n\n------------\n\nSupport multiple instances\n\nAs mentioned, we hope to add the functionality to run multiple instances, enabling multiple Claude Code (ccr code) instances to improve development efficiency.\nCurrently, the tool can only run as a single instance, which cannot meet the needs of parallel processing across multiple scenarios. It is recommended to support starting with multiple ports.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/752/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/751",
      "id": 3371078241,
      "node_id": "I_kwDON-_mZc7I7pJh",
      "number": 751,
      "title": "parseError: SyntaxError message",
      "user": {
        "login": "SeasonPilot",
        "id": 61238101,
        "node_id": "MDQ6VXNlcjYxMjM4MTAx",
        "avatar_url": "https://avatars.githubusercontent.com/u/61238101?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SeasonPilot",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-01T03:30:18Z",
      "updated_at": "2025-09-01T03:30:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "    \"msg\": \"parseError: SyntaxError message: Unexpected end of JSON input stack: SyntaxError: Unexpected end of JSON input\\n    at JSON.parse (<anonymous>)\\n    at Object.start (/Users/kn/.nvm/versions/node/v22.9.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:76038:29)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5) data: \"\n\n\n\nUTF-8字符边界处理问题 - 中文字符占用3个字节，当网络数据包在字符字节中间切分时，原生TextDecoder会产生错误？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/751/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/750",
      "id": 3371060854,
      "node_id": "I_kwDON-_mZc7I7k52",
      "number": 750,
      "title": "让用户 可以自定义 user agent 和 headers",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-01T03:16:05Z",
      "updated_at": "2025-09-03T11:34:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/750/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/749",
      "id": 3370092476,
      "node_id": "I_kwDON-_mZc7I34e8",
      "number": 749,
      "title": "【UI缺陷】在UI界面保存设置后，CUSTOM_ROUTER_PATH 配置项会丢失",
      "user": {
        "login": "VelenAlex",
        "id": 192497003,
        "node_id": "U_kgDOC3lFaw",
        "avatar_url": "https://avatars.githubusercontent.com/u/192497003?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/VelenAlex",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-31T10:03:56Z",
      "updated_at": "2025-08-31T10:03:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "问题描述：\n\n您好！\n\n我发现 claude-code-router 项目支持通过 CUSTOM_ROUTER_PATH 字段来使用自定义路由文件，这是一个非常棒的功能。\n\n但在使用中我遇到了一个问题：项目的Web UI设置界面中并没有提供该字段的配置入口。\n\n重现步骤：\n\n手动在 config.json 文件中添加 \"CUSTOM_ROUTER_PATH\": \"path/to/my-router.js\"。\n\n重启服务，自定义路由功能可以正常工作。\n\n打开Web UI，进入设置（Settings）页面。\n\n在UI上修改任意一个配置项（例如，开关日志），然后点击“保存”。\n\n此时再检查 config.json 文件。\n\n预期结果：\nCUSTOM_ROUTER_PATH 字段应该被保留，或者UI界面应该提供一个专门的输入框来管理这个路径。\n\n实际结果：\nconfig.json 文件被重写，其中 CUSTOM_ROUTER_PATH 字段完全消失了，导致自定义路由功能失效。\n\n这使得我无法在使用了自定义路由后，再通过UI来调整其他配置，否则每次都需要手动重新添加该字段。\n\n希望您能考虑在后续版本中，在UI上增加对 CUSTOM_ROUTER_PATH 的支持，或者至少在保存设置时能保留配置文件中的未知字段。\n\n非常感谢！",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/749/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/748",
      "id": 3370089274,
      "node_id": "I_kwDON-_mZc7I33s6",
      "number": 748,
      "title": "iflow qwen3-coder  不会使用 工具",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-31T10:01:09Z",
      "updated_at": "2025-09-04T13:43:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "今天 8/31 ， iflow qwen3-coder  不会使用 工具了\n---\n我的自定义路由日志\n[2025-08-31T09:59:58.814Z] [DEBUG] 请求分析 {\"type\":\"longContext\",\"length\":55622,\"tokenCount\":82238}\n[2025-08-31T09:59:58.814Z] [DEBUG] 单一服务商选择 {\"provider\":\"iflow\",\"model\":\"qwen3-coder\",\"type\":\"coder\"}\n[2025-08-31T09:59:58.814Z] [DEBUG] 选择长上下文模型 {\"result\":\"iflow,qwen3-coder\"}\n[2025-08-31T09:59:58.815Z] [INFO] 选择模型 {\"model\":\"iflow,qwen3-coder\",\"type\":\"longContext\",\"requestLength\":55622,\"providerUsage\":\"8 (统计)\",\"modelUsage\":\"8/1000\",\"rpm\":15,\"maxLength\":128000,\"loadBalancerWeights\":{},\"loadBalancerCounters\":{}}\n[2025-08-31T10:00:08.544Z] [DEBUG] 提供商健康状态: modelscope {\"healthy\":true,\"errorCount\":0,\"timeSinceLastError\":1756634408544,\"availableModels\":1,\"timeoutStatus\":\"available\"}\n[2025-08-31T10:00:08.544Z] [DEBUG] 提供商健康状态: iflow {\"healthy\":true,\"errorCount\":0,\"timeSinceLastError\":1756634408544,\"availableModels\":2,\"timeoutStatus\":\"available\"}\n[2025-08-31T10:00:08.545Z] [DEBUG] 请求分析 {\"type\":\"longContext\",\"length\":55622,\"tokenCount\":82238}\n[2025-08-31T10:00:08.545Z] [DEBUG] 单一服务商选择 {\"provider\":\"iflow\",\"model\":\"qwen3-coder\",\"type\":\"coder\"}\n[2025-08-31T10:00:08.546Z] [DEBUG] 选择长上下文模型 {\"result\":\"iflow,qwen3-coder\"}\n[2025-08-31T10:00:08.546Z] [INFO] 选择模型 {\"model\":\"iflow,qwen3-coder\",\"type\":\"longContext\",\"requestLength\":55622,\"providerUsage\":\"9 (统计)\",\"modelUsage\":\"9/1000\",\"rpm\":15,\"maxLength\":128000,\"loadBalancerWeights\":{},\"loadBalancerCounters\":{}}\n\n\n<img width=\"954\" height=\"309\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0ac55d27-17eb-4b14-a28c-b4436fc17c13\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/748/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/747",
      "id": 3370072346,
      "node_id": "I_kwDON-_mZc7I3zka",
      "number": 747,
      "title": "默认的报400，为什么没有切换到后台",
      "user": {
        "login": "iaenolhy",
        "id": 171220572,
        "node_id": "U_kgDOCjSeXA",
        "avatar_url": "https://avatars.githubusercontent.com/u/171220572?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iaenolhy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-31T09:43:00Z",
      "updated_at": "2025-09-06T10:08:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(claude,claude-sonnet-4-20250514: 400): {\\\"type\\\":\\\"error\\\",\\\"error\\\":{\\\"type\\\":\\\"invalid_request_error\\\",\\\"message\\\":\\\"`max_tokens` \n    must be greater than `thinking.budget_tokens`. Please consult our documentation at \n    https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#max-tokens-and-context-window-size\\\"},\\\"request_id\\\":\\\"req_011CSfZpgEc3ZCtKfnStT8J2\\\"}Error: Error from \n    provider(claude,claude-sonnet-4-20250514: 400): {\\\"type\\\":\\\"error\\\",\\\"error\\\":{\\\"type\\\":\\\"invalid_request_error\\\",\\\"message\\\":\\\"`max_tokens` must be greater than `thinking.budget_tokens`. \n    Please consult our documentation at \n    https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#max-tokens-and-context-window-size\\\"},\\\"request_id\\\":\\\"req_011CSfZpgEc3ZCtKfnStT8J2\\\"}\\n    at nt \n    (/home/iaeno/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 \n    (/home/iaeno/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async o0 \n    (/home/iaeno/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n<img width=\"764\" height=\"552\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/250177e7-55a2-4901-873d-577a03666112\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/747/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/746",
      "id": 3369960379,
      "node_id": "I_kwDON-_mZc7I3YO7",
      "number": 746,
      "title": "CCR 怎么配置对 gemini-cli 的支持以及配置 gemini 和 gemini-cli 配置有什么差异呢？",
      "user": {
        "login": "mir-xiong",
        "id": 150424027,
        "node_id": "U_kgDOCPdJ2w",
        "avatar_url": "https://avatars.githubusercontent.com/u/150424027?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mir-xiong",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-31T07:44:13Z",
      "updated_at": "2025-09-11T14:12:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "CCR 怎么配置对 gemini-cli 的支持以及配置 gemini 和 gemini-cli 配置有什么差异呢？\n还有，有了 gemini 为什么还需要 gemini-cli, gemini-cli 有什么好处？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/746/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/744",
      "id": 3369375107,
      "node_id": "I_kwDON-_mZc7I1JWD",
      "number": 744,
      "title": "Unable to view Status line",
      "user": {
        "login": "chand45",
        "id": 69206006,
        "node_id": "MDQ6VXNlcjY5MjA2MDA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/69206006?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chand45",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-08-30T18:33:21Z",
      "updated_at": "2025-09-01T16:27:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I enabled status line through UI. Ensured that the config is saved and performed a ccr restart. But, I don't see any status line after starting claude code.\n\nI also ensured that I am on the latest version of claude code router: 1.0.43\n\nThis is my config for statusline in \\.claude-code-router\\config.json: \n\"StatusLine\": {\n    \"enabled\": true,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": [\n        {\n          \"type\": \"workDir\",\n          \"icon\": \"󰉋\",\n          \"text\": \"{{workDirName}}\",\n          \"color\": \"bright_blue\"\n        },\n        {\n          \"type\": \"gitBranch\",\n          \"icon\": \"🌿\",\n          \"text\": \"{{gitBranch}}\",\n          \"color\": \"bright_green\"\n        },\n        {\n          \"type\": \"model\",\n          \"icon\": \"🤖\",\n          \"text\": \"{{model}}\",\n          \"color\": \"bright_yellow\"\n        },\n        {\n          \"type\": \"usage\",\n          \"icon\": \"📊\",\n          \"text\": \"{{inputTokens}} → {{outputTokens}}\",\n          \"color\": \"bright_magenta\"\n        }\n      ]\n    },\n    \"powerline\": {\n      \"modules\": []\n    },\n    \"fontFamily\": \"Hack Nerd Font Mono\"\n  },\n\n<img width=\"1440\" height=\"909\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/14dc14cc-f530-483c-90a1-2561d06d6248\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/744/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/740",
      "id": 3368953153,
      "node_id": "I_kwDON-_mZc7IziVB",
      "number": 740,
      "title": "我想请问我default 用的v3，如果想用R1模型是要在prompt中写明开启thinking模式吗？",
      "user": {
        "login": "mengxiangtao666",
        "id": 216509465,
        "node_id": "U_kgDODOesGQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/216509465?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mengxiangtao666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-30T09:15:47Z",
      "updated_at": "2025-09-02T03:05:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-xx\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-chat\",\n    \"background\": \"deepseek,deepseek-chat\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"deepseek,deepseek-chat\",\n    \"longContextThreshold\": 60000\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/740/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/739",
      "id": 3368919563,
      "node_id": "I_kwDON-_mZc7IzaIL",
      "number": 739,
      "title": "API Error: Connection error.如何解决，或者说是我哪里设置有问题吗",
      "user": {
        "login": "mengxiangtao666",
        "id": 216509465,
        "node_id": "U_kgDODOesGQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/216509465?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mengxiangtao666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-30T08:38:22Z",
      "updated_at": "2025-09-23T15:43:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Microsoft Windows [版本 10.0.18363.592]\n(c) 2019 Microsoft Corporation。保留所有权利。\n\nC:\\Users\\MXT>ccr code\nService not running, starting service...\n╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                                                                                                      │\n│ Do you trust the files in this folder?                                                                               │\n│                                                                                                                      │\n│ C:\\Users\\MXT                                                                                                         │\n│                                                                                                                      │\n│ Claude Code may read files in this folder. Reading untrusted files may lead Claude Code to behave in unexpected      │\n│ ways.                                                                                                                │\n│                                                                                                                      │\n│ With your permission Claude Code may execute files in this folder. Executing untrusted code is unsafe.               │\n│                                                                                                                      │\n│ https://docs.anthropic.com/s/claude-code-security                                                                    │\n│                                                                                                                      │\n│ > 1. Yes, proceed                                                                                                    │\n│   2. No, exit                                                                                                        │\n│                                                                                                                      │\n╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n   Enter to confirm · Esc to exit\n╭───────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                         │\n│                                                   │\n│   /help for help, /status for your current setup  │\n│                                                   │\n│   cwd: C:\\Users\\MXT                               │\n│                                                   │\n│   ─────────────────────────────────────────────── │\n│                                                   │\n│   Overrides (via env):                            │\n│                                                   │\n│   • API Key: you…                                 │\n│   • API timeout: 600000ms                         │\n│   • API Base URL: http://127.0.0.1:3456           │\n╰───────────────────────────────────────────────────╯\n\n> 你是谁\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (Connection error.) · Retrying in 5 seconds… (attempt 4/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 9 seconds… (attempt 5/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 19 seconds… (attempt 6/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 33 seconds… (attempt 7/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 35 seconds… (attempt 8/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 32 seconds… (attempt 9/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 36 seconds… (attempt 10/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error: Connection error.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/739/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/738",
      "id": 3368887600,
      "node_id": "I_kwDON-_mZc7IzSUw",
      "number": 738,
      "title": "建议： 为 transformer 的选择、配置，建立一个 专门的 FAQ",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-30T08:04:15Z",
      "updated_at": "2025-09-05T18:01:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/738/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/737",
      "id": 3367637998,
      "node_id": "I_kwDON-_mZc7IuhPu",
      "number": 737,
      "title": "为什么所有模型都显示Sonnet 4",
      "user": {
        "login": "BA7IEE",
        "id": 32892836,
        "node_id": "MDQ6VXNlcjMyODkyODM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/32892836?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BA7IEE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-29T18:00:28Z",
      "updated_at": "2025-09-01T13:34:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "切换了很多模型。openai的、kimi、DeepSeek、千问等，显示都是Sonnet 4",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/737/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/736",
      "id": 3367316741,
      "node_id": "I_kwDON-_mZc7ItS0F",
      "number": 736,
      "title": "support passing stdin to `claude`",
      "user": {
        "login": "zcutlip",
        "id": 2158303,
        "node_id": "MDQ6VXNlcjIxNTgzMDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2158303?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zcutlip",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-29T15:47:54Z",
      "updated_at": "2025-10-02T15:15:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This issue is to request support for sending standard input from the user's shell through `ccr` to `Claude`.\n\nWith `claude`, you can provide input over stdin like so:\n\n```\ncat file.txt | claude -p \"explain the contents of this file\"\n```\n\nThis doesn't appear to work with `ccr code`.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/736/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/735",
      "id": 3366527619,
      "node_id": "I_kwDON-_mZc7IqSKD",
      "number": 735,
      "title": "Help : How to use claude code router with claude python sdk",
      "user": {
        "login": "rushikeshraut777",
        "id": 38176061,
        "node_id": "MDQ6VXNlcjM4MTc2MDYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/38176061?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rushikeshraut777",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-29T11:28:24Z",
      "updated_at": "2025-10-05T11:04:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I want to use claude code router with python sdk https://github.com/anthropics/claude-code-sdk-python\nIs there any doc for this?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/735/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/734",
      "id": 3366398808,
      "node_id": "I_kwDON-_mZc7IpytY",
      "number": 734,
      "title": "Persist all configured third-party models in the  /model  UI list the BUG",
      "user": {
        "login": "badboy1314",
        "id": 31772531,
        "node_id": "MDQ6VXNlcjMxNzcyNTMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/31772531?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/badboy1314",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-29T10:46:35Z",
      "updated_at": "2025-08-29T10:46:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Describe the bug / UX issue\nCurrently, third-party models (e.g.,  deepseek-chat ,  moonshot-v1-8k , etc.) are only displayed in the  /model  UI list after they have been manually invoked once via  /model <model-name> .\nMoreover, only one third-party model is shown at a time—the previously used one disappears from the list, making it inconvenient to switch between multiple configured models.\n\n\nTo Reproduce\nSteps to reproduce the behavior:\n1. \nConfigure multiple third-party providers (e.g.,  deepseek ,  moonshot ) in  ~/.claude-code-router/config.json .\n2. \nStart CCR and run  /model .\n3. \nNotice that none of the third-party models appear initially.\n4. \nRun  /model deepseek-chat  → model is now usable.\n5. \nRun  /model  again →  deepseek-chat  appears in the list, but  moonshot-v1-8k  does not.\n6. \nRun  /model moonshot-v1-8k  → now  moonshot-v1-8k  appears, but  deepseek-chat  disappears.\n\nExpected behavior\nAll configured and validated models—including third-party ones—should be persistently listed in the  /model  UI selection menu, regardless of whether they have been used before.\n\n\n\nScreenshots / Logs\n ~/.claude-code-router/logs/latest.log  confirms both providers are registered:\n\"msg\":\"deepseek provider registered\"\n\"msg\":\"moonshot provider registered\"\n/model  UI only shows one third-party model at a time (see attached screenshot).\n\n\n\n\n\nEnvironment\nCCR version:  latest  (as of 2025-06-26)\nOS: Windows 11 - WSL2 - Ubuntu 23.04\nConfig snippet:\n{\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-chat\"]\n    },\n    {\n      \"name\": \"moonshot\",\n      \"api_base_url\": \"https://api.moonshot.cn/v1/chat/completions\",\n      \"api_key\": \"sk-yyy\",\n      \"models\": [\"moonshot-v1-8k\"]\n    }\n  ]\n}\n\n\nProposed fix / enhancement\nPersist all validated models from all providers in the  /model  selection UI.\nAvoid lazy-loading third-party models into the UI only after first use.\n\n\nAdditional context\nThis UX friction discourages users from leveraging multiple third-party models efficiently. A persistent list would significantly improve workflow.\n\n<img width=\"876\" height=\"318\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6c64aa8b-f187-4d4f-ad6f-18418240b415\" />\n\n<img width=\"781\" height=\"432\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c5ba2955-3e9e-4555-b2ee-6b5efa8f4342\" />\n\n<img width=\"784\" height=\"480\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/591857e0-6c86-42fa-baa2-79906044ecef\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/734/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/732",
      "id": 3365693919,
      "node_id": "I_kwDON-_mZc7InGnf",
      "number": 732,
      "title": "Bug: Application crashes intermittently on Windows due to invalid log file path (ENOENT)",
      "user": {
        "login": "zyq-cn",
        "id": 73511917,
        "node_id": "MDQ6VXNlcjczNTExOTE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/73511917?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zyq-cn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-29T06:48:17Z",
      "updated_at": "2025-08-29T16:55:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  Error Log\n\n```\nnode:events:496\n      throw er; // Unhandled 'error' event\n      ^\n\nError: ENOENT: no such file or directory, open 'C:\\Users\\zyq13\\.claude-code-router\\20250829-1256-01-.\\logs\\ccr-1756435513965.log.gz'\n    at async open (node:internal/fs/promises:639:25)\n    at async RotatingFileStream.touch (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:78345:14)\n    at async RotatingFileStream.move (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:78330:5)\n    at async RotatingFileStream.rewrite (C:\\Users\\zyq13\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:78242:11)\nEmitted 'error' event on RotatingFileStream instance at:\n    at emitErrorNT (node:internal/streams/destroy:170:8)\n    at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'open',\n  path: 'C:\\\\Users\\\\zyq13\\\\.claude-code-router\\\\20250829-1256-01-.\\\\logs\\\\ccr-1756435513965.log.gz'\n}\n\nNode.js v22.17.0\nPS C:\\Users\\zyq13>\n```\n\n  Environment\n\n   - OS: Windows\n   - Node.js Version: v22.17.0\n   - Package: @musistudio/claude-code-router\n   - Package Version: (Please specify the version you are using, e.g., 1.2.3)\n\n  Bug Description\n\n  The claude-code-router service becomes unstable and crashes after running for a period of time on\n  Windows.\n\n  Initially, the service works as expected, but it eventually stops functioning, requiring a manual restart\n  via ccr restart or ccr start to restore service. This recurring crash appears to be caused by the ENOENT\n  error detailed below, which is likely triggered during a log rotation attempt. This stability issue\n  significantly impacts the user experience, as it requires constant manual intervention.\n\n  Root Cause Analysis\n\n  The fundamental issue is a malformed file path being generated by the application, which leads to an\n  ENOENT error.\n\n   1. The Invalid Path: The path that the application tries to access is:\n      C:\\Users\\zyq13\\.claude-code-router\\20250829-1256-01-.\\logs\\ccr-1756435513965.log.gz\n\n   2. The Defect: The problem lies in this segment of the path: ...-01-.\\logs\\.... The .\\ (which typically\n      represents the current directory) is being incorrectly included as a literal part of a directory name.\n      This is a classic path concatenation bug. The file system is attempting to find a folder literally named\n      20250829-1256-01-.\\logs, which does not and cannot exist.\n\n   3. Context from Stack Trace: The stack trace points to a RotatingFileStream class, indicating the error\n      occurs within the log rotation logic. This perfectly explains why the crash is intermittent—it happens\n      when the log file reaches a certain size or age and the application tries to rotate it.\n\n  The likely cause is an incorrect use of path.join() or a similar path-building utility in the source\n  code.\n\n  Steps to Reproduce\n\n   1. Install and run @musistudio/claude-code-router on a Windows machine.\n   2. Use the service for a period of time.\n\n  ---\n  ---\n\n  --- 中文说明 ---\n\n  标题：Bug：应用在 Windows 上因无效的日志文件路径导致间歇性崩溃 (ENOENT)\n\n  运行环境\n\n   - 操作系统: Windows\n   - Node.js 版本: v22.17.0\n   - 软件包: @musistudio/claude-code-router\n   - 软件包版本: (请在此处填写你正在使用的版本号, 例如 1.2.3)\n\n  问题描述\n\n  claude-code-router 服务在 Windows 操作系统上运行一段时间后会变得不稳定并最终崩溃。\n\n  服务在启动初期可以正常工作，但运行一段时间后就会停止响应，必须通过 ccr restart 或 ccr start\n  命令手动重启服务才能恢复。这种周期性的崩溃问题影响了使用体验，需要用户不断手动干预。高度怀疑这个\n  崩溃是由下面的 ENOENT 错误导致的，该错误很可能在程序尝试进行日志轮转（log rotation）时触发。\n\n  错误日志\n\n   1 // ... (错误日志同上)\n\n  根本原因分析\n\n  问题的根源在于应用程序生成了一个格式错误的非法文件路径，从而导致了 ENOENT 系统错误。\n\n   1. 无效路径: 程序试图访问的路径是：\n      C:\\Users\\zyq13\\.claude-code-router\\20250829-1256-01-.\\logs\\ccr-1756435513965.log.gz\n\n   2. 缺陷所在: 问题出在路径的中间部分\n      ...-01-.\\logs\\...。.\\（通常代表当前目录）被错误地当作文件夹名称的一部分。这是一个典型的路径拼接\n      Bug。操作系统因此尝试寻找一个字面上名为 20250829-1256-01-.\\logs 的文件夹，而这个文件夹是不可能存在的。\n\n   3. 来自堆栈跟踪的线索: 堆栈跟踪指向一个名为 RotatingFileStream 的类，这表明错误发生在日志轮转逻辑中。这也完\n      美解释了为什么崩溃是间歇性的——它在日志文件达到一定大小或时间，程序尝试轮转它时发生。\n\n  最可能的原因是在源代码中错误地使用了 path.join() 或类似的路径构建函数。\n\n  复现步骤\n\n   1. 在 Windows 电脑上安装并运行 @musistudio/claude-code-router。\n   2. 正常使用服务一段时间。\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/732/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/731",
      "id": 3365558623,
      "node_id": "I_kwDON-_mZc7Imllf",
      "number": 731,
      "title": "Not working with Sambanova deepseek v3 0324 API",
      "user": {
        "login": "ageek",
        "id": 2805509,
        "node_id": "MDQ6VXNlcjI4MDU1MDk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2805509?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ageek",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-29T05:45:04Z",
      "updated_at": "2025-10-31T08:56:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm not able to use this with SambaNova deepseek v3 0324 API. I keep getting 500 Error. \n\nService not running, starting service...\n╭───────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                         │\n│                                                   │\n│   /help for help, /status for your current setup  │\n│                                                   │\n│   cwd: /home/tom/temp-workspace                   │\n│                                                   │\n│   ─────────────────────────────────────────────── │\n│                                                   │\n│   Overrides (via env):                            │\n│                                                   │\n│   • API timeout: 600000ms                         │\n│   • API Base URL: http://127.0.0.1:3456           │\n╰───────────────────────────────────────────────────╯\n\n> hi\n  ⎿  API Error (500 {\"error\":{\"message\":\"Error from provider(sambanova,DeepSeek-V3.1: 500): Something went wrong! Unknown error when running prediction service.\\nError: Error from provider(sambanova,DeepSeek-V3.1: 500): Something went wrong! Unknown error when running prediction service.\\n\\n    at nt (/media/tom/nodejs_install/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/media/tom/nodejs_install/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 (/media/tom/nodejs_install/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 5 seconds… (attempt 4/10) · API_TIMEOUT_MS=600000ms, try increasing it\n  ⎿  API Error (500 {\"error\":{\"message\":\"Error from provider(sambanova,DeepSeek-V3.1: 500): Something went wrong! Unknown error when running prediction service.\\nError: Error from provider(sambanova,DeepSeek-V3.1: 500): Something went wrong! Unknown error when running prediction service.\\n\\n    at nt (/media/tom/nodejs_install/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/media/tom/nodejs_install/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 (/media/tom/nodejs_install/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 9 seconds… (attempt 5/10) · API_TIMEOUT_MS=600000ms, try increasing it\n\nConfig file is: \n\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"info\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"samba-api-key\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"sambanova\",\n      \"api_base_url\": \"https://api.sambanova.ai/v1/chat/completions\",\n      \"api_key\": \"samba-api-key\",\n      \"models\": [\n        \"DeepSeek-V3.1\",\n        \"DeepSeek-V3-0324\",\n        \"DeepSeek-R1-0528\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"sambanova\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"tooluse\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"sambanova,DeepSeek-V3-0324\",\n    \"background\": \"sambanova,DeepSeek-V3-0324\",\n    \"think\": \"sambanova,DeepSeek-R1-0528\",\n    \"longContext\": \"sambanova,DeepSeek-V3-0324\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"\"\n  }\n}\n\n\nTried another model: Llama-4-Maverick-17B-128E-Instruct , it partly works, as it keeps throwing error every now and then , related to 'invalid parameters' etc. its not usable at all.\n\nCould someone share details for using SambaNova deepseek  with ccr? Thanks",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/731/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/730",
      "id": 3365311562,
      "node_id": "I_kwDON-_mZc7IlpRK",
      "number": 730,
      "title": "qwen3-235b-a22b尝试各种配置，能访问接口但无法返回内容",
      "user": {
        "login": "ye7love7",
        "id": 72247118,
        "node_id": "MDQ6VXNlcjcyMjQ3MTE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/72247118?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ye7love7",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-29T03:24:11Z",
      "updated_at": "2025-09-01T03:25:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "#### qwen3-235b-a22b是本地部署，调用出参如下：\n```\n{\n    \"id\": \"30fa3df73b2349ae8575da57b3c878ec\",\n    \"object\": \"chat.completion\",\n    \"created\": 1756434029,\n    \"model\": \"qwen-turbo\",\n    \"choices\": [\n        {\n            \"index\": 0,\n            \"message\": {\n                \"role\": \"assistant\",\n                \"content\": \"<think>\\n好的，用户问的是“贝叶斯贝塔分布是什么？”。首先，我需要拆解这个问题。贝叶斯和贝塔分布这两个关键词，可能涉及到概率论和统计学中的概念。用户可能是在学习机器学习或者统计学，需要了解贝塔分布在贝叶斯框架下的应用。\\n\\n接下来，我需要确定哪个知识库能提供这方面的信息。查看可用的知识库列表，有admin_hn0oad是机器学习教程，可能包含相关的内容。贝叶斯方法通常在机器学习中使用，贝塔分布可能作为先验分布被提及。因此，我应该查询admin_hn0oad这个知识库，查找关于贝叶斯贝塔分布的信息。\\n\\n确认没有其他更相关的知识库，比如数学或统计学的专门数据库，但根据提供的列表，机器学习教程最有可能覆盖这个主题。所以，生成对应的查询语句，使用admin_hn0oad作为知识库名称，查询内容为“贝叶斯贝塔分布是什么”。\\n</think>\\n\\n```text\\nadmin_hn0oad\\n```\\n\",\n                \"reasoning_content\": null,\n                \"tool_calls\": null\n            },\n            \"logprobs\": null,\n            \"finish_reason\": \"stop\",\n            \"matched_stop\": \"```output\"\n        }\n    ],\n    \"usage\": {\n        \"prompt_tokens\": 454,\n        \"total_tokens\": 681,\n        \"completion_tokens\": 227,\n        \"prompt_tokens_details\": null\n    }\n}\n```\n#### 使用ccr code启动后，提问\"你好\"，返回500报错，如下：\n`⎿ API Error (500 {\"error\":{\"message\":\"Error from provider(deepseek,Qwen3-235B-A22B: 500): {\\\"error\\\":{\\\"message\\\":\\\" (request id: 2025082911082657556040454497649)\\\",\\\"type\\\":\\\"upstream_error\\\",\\\"param\\\":\\\"500\\\",\\\"code\\\":\\\"bad_response_status_code\\\"}}Error: Error from provider(deepseek,Qwen3-235B-A22B: 500): {\\\"error\\\":{\\\"message\\\":\\\" (request id: 2025082911082657556040454497649)\\\",\\\"type\\\":\\\"upstream_error\\\",\\\"param\\\":\\\"500\\\",\\\"code\\\":\\\"bad_response_status_code\\\"}}\\n at nt (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n at u0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n at async o0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 8 seconds… (attempt 5/10) · API_TIMEOUT_MS=600000ms, try increasing it`\n#### config.json配置如下：\n```\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n{\n            \"name\": \"qwen\",\n            \"api_base_url\": \"http://xx.xx.xx.xx:3000/v1/chat/completions\",\n            \"api_key\": \"sk-*********************\",\n            \"models\": [\n                \"qwen-turbo\",\n                \"qwen3-235b-a22b\"\n            ],\n            \"transformer\": {\n                \"use\": [\n                    \"openai\"\n                ]\n            }\n        },\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"http://xx.xx.xx.xx:3000/v1/chat/completions\",\n      \"api_key\": \"sk-*********************\",\n      \"models\": [\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"deepseek\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"tooluse\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"qwen,qwen-turbo\",\n    \"background\": \"qwen,qwen-turbo\",\n    \"think\": \"qwen,qwen-turbo\",\n    \"longContext\": \"qwen,qwen-turbo\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"\"\n  }\n}\n```\n以上两种均无法启动，都是一样的报错，求大佬赐教！！",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/730/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/728",
      "id": 3362792742,
      "node_id": "I_kwDON-_mZc7IcCUm",
      "number": 728,
      "title": "使用了中转的gemini，有时候能写入文件，但是有时候不能读取文件，怎么回事？？配置如下",
      "user": {
        "login": "renjiadong-sys",
        "id": 137752733,
        "node_id": "U_kgDOCDXwnQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/137752733?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/renjiadong-sys",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-28T10:38:17Z",
      "updated_at": "2025-08-28T10:38:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"Gemini\",\n      \"api_base_url\": \"htv1/chat/completions\",\n      \"api_key\": \"sS\",\n      \"models\": [\n        \"gemini-2.5-pro\"\n      ],\n\"transformer\": {  \n        \"gemini-2.5-pro\": {  \n      \"use\": [\"tooluse\",\"enhancetool\"]  \n    }  \n  }  \n    }\n  ],\n  \"Router\": {\n    \"default\": \"Gemini,gemini-2.5-pro\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/728/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/727",
      "id": 3362641021,
      "node_id": "I_kwDON-_mZc7IbdR9",
      "number": 727,
      "title": "怎么更新CCR呀?",
      "user": {
        "login": "mir-xiong",
        "id": 150424027,
        "node_id": "U_kgDOCPdJ2w",
        "avatar_url": "https://avatars.githubusercontent.com/u/150424027?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mir-xiong",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-28T09:50:56Z",
      "updated_at": "2025-09-02T02:48:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "怎么更新CCR呀?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/727/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/726",
      "id": 3362639618,
      "node_id": "I_kwDON-_mZc7Ibc8C",
      "number": 726,
      "title": "群聊二维码过期了",
      "user": {
        "login": "mir-xiong",
        "id": 150424027,
        "node_id": "U_kgDOCPdJ2w",
        "avatar_url": "https://avatars.githubusercontent.com/u/150424027?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mir-xiong",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-28T09:50:28Z",
      "updated_at": "2025-08-28T14:34:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "群聊二维码过期了",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/726/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/725",
      "id": 3362154342,
      "node_id": "I_kwDON-_mZc7IZmdm",
      "number": 725,
      "title": "config.json",
      "user": {
        "login": "monflai",
        "id": 81111519,
        "node_id": "MDQ6VXNlcjgxMTExNTE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/81111519?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/monflai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-28T07:24:09Z",
      "updated_at": "2025-12-12T05:04:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The ccr got stuck at 'Loaded JSON config from: C:\\\\Users\\\\***\\\\.claude-code-router\\\\config.json'. e, and this problem appeared in the past two weeks. Additionally, the log folder is empty, so I can't see where the specific issue lies.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/725/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/724",
      "id": 3361658688,
      "node_id": "I_kwDON-_mZc7IXtdA",
      "number": 724,
      "title": "使用Azure的gpt-4o和gpt-4o-mini，报错误 Unrecognized request argument supplied: reasoning",
      "user": {
        "login": "ljq29",
        "id": 25943689,
        "node_id": "MDQ6VXNlcjI1OTQzNjg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/25943689?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ljq29",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-28T03:42:51Z",
      "updated_at": "2025-12-13T05:12:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "尤其是使用 “think” < “think hard” < “think harder” < “ultrathink”的时候，必然会出现这个提示。\n\n提示：\n\n```\n> 检查缩进问题 think harder\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(newapi,gpt-4o: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unrecognized request argument supplied: reasoning (request id: \n    20250828113830286163797PwGVxHZ9)\\\",\\\"type\\\":\\\"openai_error\\\",\\\"param\\\":\\\"\\\",\\\"code\\\":\\\"\\\\u003cnil\\\\u003e\\\"}}Error: Error from provider(newapi,gpt-4o: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unrecognized request argument supplied: \n    reasoning (request id: 20250828113830286163797PwGVxHZ9)\\\",\\\"type\\\":\\\"openai_error\\\",\\\"param\\\":\\\"\\\",\\\"code\\\":\\\"\\\\u003cnil\\\\u003e\\\"}}\\n    at nt \n    (/home/antior/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 \n    (/home/antior/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 \n    (/home/antior/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n截图：\n\n<img width=\"1872\" height=\"945\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f45b17a3-d37d-484a-a297-a4727d125c20\" />\n\nNewAPI后台报错截图：\n\n<img width=\"1872\" height=\"945\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/332c20bb-0376-44be-b68a-1febf8153553\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/724/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/723",
      "id": 3360817775,
      "node_id": "I_kwDON-_mZc7IUgJv",
      "number": 723,
      "title": "How to get api_base_url in gemini-cli",
      "user": {
        "login": "StarTrai1",
        "id": 118614751,
        "node_id": "U_kgDOBxHq3w",
        "avatar_url": "https://avatars.githubusercontent.com/u/118614751?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/StarTrai1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-27T20:50:53Z",
      "updated_at": "2025-08-27T21:17:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "config.json:\n`\n{\n  \"PROXY_URL\": \"http://127.0.0.1:7897\",\n  \"transformers\": [\n    {\n      \"path\": \"$HOME/.claude-code-router/plugins/gemini-cli.js\",\n      \"options\": {\n        \"project\": \"your-project-id\"\n      }\n    }\n  ],\n  \"Providers\": [\n    {\n      \"name\": \"gemini-cli\",\n      \"api_base_url\": \"\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\"gemini-cli\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini-cli,gemini-2.5-pro\"\n  }\n}\n`\nerror:\n`  ⎿ API Error: 404 {\"error\":{\"message\":\"Error from provider(gemini-cli,gemini-2.5-pro: 404): Error: Error from\n    provider(gemini-cli,gemini-2.5-pro: 404): \\n    at nt (C:\\\\Users\\\\startrail\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@m\n    usistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (C:\\\\Users\\\\startrail\\\\AppData\\\\Roaming\\\\npm\\\\node_\n    modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:105:5)\\n    at async o0 (C:\\\\Users\\\\startrail\\\\AppData\\\\Roaming\\\\npm\\\\node_module\n    s\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}`\nHow to get api_base_url in gemini-cli",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/723/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/722",
      "id": 3360267872,
      "node_id": "I_kwDON-_mZc7ISZ5g",
      "number": 722,
      "title": "无论配置哪个api key都是405",
      "user": {
        "login": "onecorner",
        "id": 11347680,
        "node_id": "MDQ6VXNlcjExMzQ3Njgw",
        "avatar_url": "https://avatars.githubusercontent.com/u/11347680?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/onecorner",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-27T17:37:15Z",
      "updated_at": "2025-08-27T17:37:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"472\" height=\"406\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fe61f35e-9463-4476-830d-e3f20413ec48\" />\n这是我的版本，\n\n<img width=\"473\" height=\"65\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b26a3138-8a79-474a-bb43-773ceb5cfac3\" />\n我的claude code版本是\n\n<img width=\"496\" height=\"75\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/65c9ac38-60ba-4575-9e73-238f25754dbc\" />\n\n{\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"HOST\":\"0.0.0.0\",\n  \"PORT\":\"23456\",\n  \"Providers\": [\n   {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"&&&&&&&\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n     \"default\": \"deepseek,deepseek-chat\"\n  }\n}，上面是我的配置，api key为了保密就不贴上来了，之前还配置过openrouter，以及魔塔社区的，全部都是405，求解",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/722/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/721",
      "id": 3359822316,
      "node_id": "I_kwDON-_mZc7IQtHs",
      "number": 721,
      "title": "How can I know if the model selection works",
      "user": {
        "login": "vinhqdang",
        "id": 4891112,
        "node_id": "MDQ6VXNlcjQ4OTExMTI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4891112?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vinhqdang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-27T15:27:04Z",
      "updated_at": "2025-08-29T10:01:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello everyone\n\nI am using ```ccr code``` command to start the Claude Code Router, but the interface is still exactly the same as when I used the original Claude Code.\n\nI already set up the config.json file, so I wonder how can I know if the Router actually works - i.e. how can I know what model is being used (Gemini or Sonnet etc.) as the UI does not show anything.\n\nMany thanks",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/721/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/720",
      "id": 3359681463,
      "node_id": "I_kwDON-_mZc7IQKu3",
      "number": 720,
      "title": "增加transformer, 用于在request里面增加\"stream_options\"",
      "user": {
        "login": "sandro-qiang",
        "id": 44429952,
        "node_id": "MDQ6VXNlcjQ0NDI5OTUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/44429952?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sandro-qiang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-27T14:50:53Z",
      "updated_at": "2025-08-30T15:21:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "对于vllm部署的openai server，对于stream模式，默认是不返回任何`usage`的，除非请求的request里面包含`stream_options`，比如下面这个请求\n\n```\ncurl -XPOST -H 'Authorization: Bearer sk-xxx' -H \"Content-type: application/json\" --no-buffer -d '{\n  \"model\": \"glm-4.5\",\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"You are a helpful assistant.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Who won the world series in 2020?\"\n    },\n    {\n      \"role\": \"assistant\",\n      \"content\": \"The Los Angeles Dodgers won the World Series in 2020.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Where was it played?\"\n    }\n  ],\n  \"stream\": true,\n  \"stream_options\": {\n      \"include_usage\": true,\n      \"continuous_usage_stats\": false\n  }\n}' 'http://localhost:1234/v1/chat/completions'\n```\n\n不返回`usage`不但使得计算token的插件失效，更加严重的是让`claude code`无法在正确的时间自动`compact`，在context过长的时候直接接口报错没，很影响使用。\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/720/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/719",
      "id": 3358610944,
      "node_id": "I_kwDON-_mZc7IMFYA",
      "number": 719,
      "title": "ccr ui 报错的解决方法",
      "user": {
        "login": "lovoror",
        "id": 747608,
        "node_id": "MDQ6VXNlcjc0NzYwOA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/747608?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lovoror",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-27T09:02:41Z",
      "updated_at": "2025-08-27T09:02:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"591\" height=\"262\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/657f37c8-e7be-4773-8940-c89408da96ca\" />\n自动拉起了127.0.0.1，但是访问的是localhost",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/719/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/717",
      "id": 3358122181,
      "node_id": "I_kwDON-_mZc7IKODF",
      "number": 717,
      "title": "创建文件的工具失效，是怎么回事？",
      "user": {
        "login": "wulihuawuqia",
        "id": 17930741,
        "node_id": "MDQ6VXNlcjE3OTMwNzQx",
        "avatar_url": "https://avatars.githubusercontent.com/u/17930741?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wulihuawuqia",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-27T06:11:29Z",
      "updated_at": "2025-08-27T06:11:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/717/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/716",
      "id": 3357904513,
      "node_id": "I_kwDON-_mZc7IJY6B",
      "number": 716,
      "title": "How to use deepseek api ?",
      "user": {
        "login": "ThisFriend",
        "id": 40693583,
        "node_id": "MDQ6VXNlcjQwNjkzNTgz",
        "avatar_url": "https://avatars.githubusercontent.com/u/40693583?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ThisFriend",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-27T03:53:17Z",
      "updated_at": "2025-08-27T04:04:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"deepseek-v3\", \n        \"deepseek-r1\"\n      ]\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-v3\",\n    \"background\": \"\",\n    \"think\": \"\",\n    \"longContext\": \"\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"\"\n  },\n  \"stream\": false\n}\n\nwhen i use \"ccr code\", then send any code, error：\n\n```\nAPI Error: 404 {\"error\":{\"message\":\"Error from provider(deepseek,deepseek-v3: 404): Error: Error \n    from provider(deepseek,deepseek-v3: 404): \\n    at nt \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async s0 \n    (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_e\n    rror\",\"code\":\"provider_response_error\"}}\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/716/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/714",
      "id": 3357799695,
      "node_id": "I_kwDON-_mZc7II_UP",
      "number": 714,
      "title": "阿里百炼 GLM-4.5使用问题",
      "user": {
        "login": "Tiger-zzZ",
        "id": 41410156,
        "node_id": "MDQ6VXNlcjQxNDEwMTU2",
        "avatar_url": "https://avatars.githubusercontent.com/u/41410156?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Tiger-zzZ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-27T02:36:00Z",
      "updated_at": "2026-02-09T00:32:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "基于阿里百炼的GLM-4.5无法在Claude code router中使用\n已排查：\n\n- 单独使用API可以调用GLM-4.5\n- 可以搭配使用qwen3c\n\n报错信息：\n```text\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(dashscope,glm-4.5: 400):\n    {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"param\\\":null,\\\"message\\\":\\\"This model only support stream\n    mode, please enable the stream parameter to access the model. \\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"id\\\":\\\"c\n    hatcmpl-ee9c9c10-29f5-9ebb-9eff-34a1460af146\\\",\\\"request_id\\\":\\\"ee9c9c10-29f5-9ebb-9eff-34a1460af146\\\"}Error:\n    Error from provider(dashscope,glm-4.5: 400):\n    {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"param\\\":null,\\\"message\\\":\\\"This model only support stream\n    mode, please enable the stream parameter to access the model. \\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"id\\\":\\\"c\n    hatcmpl-ee9c9c10-29f5-9ebb-9eff-34a1460af146\\\",\\\"request_id\\\":\\\"ee9c9c10-29f5-9ebb-9eff-34a1460af146\\\"}\\n    at\n     nt (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.\n    js:75644:11)\\n    at u0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-cod\n    e-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:95:5)\\n    at async o0\n    (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:7\n    5669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n我的配置\n```json\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"trace\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"dashscope\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"qwen3-coder-plus\",\n        \"glm-4.5\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ]\n        ],\n        \"qwen3-coder-plus\": {\n          \"use\": [\n            \"enhancetool\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"dashscope,glm-4.5\",\n    \"background\": \"dashscope,glm-4.5\",\n    \"think\": \"dashscope,glm-4.5\",\n    \"longContext\": \"dashscope,glm-4.5\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"dashscope,glm-4.5\"\n  }\n}\n```\n\n\n在文档中发现阿里百炼的GLM-4.5 API不支持非流式输出、 工具调用和联网搜索，是否是因为这个原因导致的\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/714/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/713",
      "id": 3357339728,
      "node_id": "I_kwDON-_mZc7IHPBQ",
      "number": 713,
      "title": "Provider 配置技巧 - 巧妙绕过 API 供应商的客户端验证/WAF 防护",
      "user": {
        "login": "ttbj2023",
        "id": 147298078,
        "node_id": "U_kgDOCMeXHg",
        "avatar_url": "https://avatars.githubusercontent.com/u/147298078?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ttbj2023",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-26T22:41:47Z",
      "updated_at": "2025-12-26T08:15:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "大家好！首先非常感谢开发者提供了 `claude-code-router` 这么棒的工具，大大拓展了 Claude Code 的使用可能性。\n\n我这次来主要是想分享一个实际使用中遇到的典型问题及其完整的排查过程，最终利用 `ccr` 现有功能完美解决了问题。同时也希望能借此提出一些实用建议，帮助未来可能遇到类似情况的同学。\n\n#### 问题背景：API 请求被供应商 WAF 拦截\n\n最近在配置 `ccr` 连接一个兼容 OpenAI API 的第三方服务商时遇到了一个坑：虽然 API Key 和接口地址都正确，但所有从 `claude chat` 发起的请求都失败了。一开始报错信息非常误导，基本都是 `Invalid API Key` 或者 `Unexpected token '<', \"<!DOCTYPE \"... is not valid JSON`。\n\n经过深入排查，最终发现了问题的根源：\n\n**该 API 服务商使用了较强的 Web 应用防火墙（WAF）或类似的安全机制，会对客户端进行指纹识别。它能特异性地识别并拦截来自 Node.js 默认 HTTP 客户端（即 `ccr` 底层使用的 `undici`）的请求。**\n\n这套 WAF 期望收到来自更“常规”的客户端（比如浏览器或普通 curl）的请求。对于那些被判定为“可疑”的客户端（比如 Node.js），其网关会直接返回一个 **HTML 验证/拦截页面**，而不是正常的 JSON API 响应。这就导致 `ccr` 在解析响应时，把 HTML 当成了 JSON 处理，进而崩溃。\n\n#### 详细排查与解决过程\n\n这个问题其实挺隐蔽的，我们的排查也经历了好几轮，或许对大家有参考价值：\n\n**阶段一：初步尝试与错误误导**\n-   **操作**：使用标准的 `config.json` Provider 配置。\n-   **结果**：持续报 `Invalid API Key` 错误，一度以为是账号权限问题。\n\n**阶段二：日志分析与真相发现**\n-   **操作**：通过 `tail -f ~/.claude-code-router/logs/ccr-*.log` 查看详细日志。\n-   **关键发现**：在日志里看到了核心报错：`\"Unexpected token '<', \"<!DOCTYPE \"... is not valid JSON\"`。\n-   **结论**：这说明服务器返回的根本不是 JSON，而是 HTML——问题性质从“认证失败”变成了“请求被拦截”。\n\n**阶段三：假设验证（Nginx 反向代理方案）**\n-   **假设**：供应商的 WAF 可能是通过检测 HTTP 请求头（尤其是 `User-Agent`）来拦截的。\n-   **方案**：找一台 Linux 服务器搭了一个 Nginx 反向代理。\n-   **Nginx 配置核心**：利用 `proxy_pass_request_headers off;` 丢弃所有原始请求头，然后通过 `proxy_set_header` 手动设置一套看起来像 curl 的请求头。\n-   **结果**：**成功了！** 请求顺利到达供应商，返回了标准的 JSON 响应（比如 `No available channels for model test`），证明“请求头伪装”的思路是对的。但这样就得额外维护一台代理服务器，架构变重了。\n\n**阶段四：优雅的终极方案（挖掘 `ccr` 自身能力）**\n-   **思考**：既然 Nginx 也只是在重写请求头，那 `ccr` 自己发请求的时候能不能直接伪装？\n-   **行动**：翻了 `ccr` 的源码（主要是 `routes.ts` 里的 `sendRequestToProvider` 函数），发现 Provider 配置其实是支持自定义 `headers` 的！顿时豁然开朗。\n-   **方案**：把伪装逻辑从 Nginx 搬进 `ccr` 的配置文件。\n\n#### 最终推荐配置方案\n\n下面这个配置完美解决了问题，不需要任何外部组件，干净利落：\n\n```json\n{\n    \"server\": {\n        \"port\": 3456,\n        \"host\": \"0.0.0.0\"\n    },\n    \"Router\": {\n        \"default\": \"my-provider,claude-sonnet-4-20250514-thinking\"\n    },\n    \"providers\": [\n        {\n            \"name\": \"my-provider\",\n            \"type\": \"openai\",\n            \"api_key\": \"sk-your-api-key-here\",\n            // 关键改动 1: 直接填供应商的完整接口地址\n            \"api_base_url\": \"https://your-api-provider.com/v1/chat/completions\",\n            // 关键改动 2: 用 headers 对象直接伪装请求头\n            \"headers\": {\n              \"User-Agent\": \"curl/8.10.1\", // 伪装成 curl\n              \"Accept\": \"application/json\",\n              \"Accept-Language\": \"en-US,en;q=0.9\",\n              // 可按需添加其他供应商可能检查的头部\n            }\n        }\n    ]\n}\n```\n\n这个配置让 `ccr` 能够**原生地**发出能被供应商 WAF 接受的请求，从根源上解决了问题。\n\n#### 两点小建议\n\n`ccr` 其实早就具备了解决这个问题的能力，只是需要用户自己去挖掘。考虑到现在这类供应商端的防护越来越常见，估计不少同学都会遇到类似的坑。\n\n所以想提两个小建议，方便后来的用户：\n\n1.  **补充文档**：在项目的 Wiki 或 README 里加一个高级排错章节（比如叫《处理供应商拦截问题》）。重点说明：\n    -   **如何判断**：教大家怎么通过日志识别被 WAF 拦截（抓 `Unexpected token '<'` 这个错误）。\n    -   **如何解决**：重点介绍怎么用 Provider 配置里的 `headers` 字段来自定义请求头，并给一个可用的配置示例。\n\n2.  **优化错误日志**：当 `ccr` 抓到 JSON 解析错误时，能不能在日志里（比如 Debug 模式）顺便输出一点响应的原始内容（比如前 200 字符）？如果我们当时能在日志里直接看到 `<!DOCTYPE html>`，排查方向一下子就能明确，能省很多时间。\n\n这次探索是个很棒的技术踩坑案例，也证明了 `ccr` 本身的设计足够灵活。希望这项“隐藏”功能可以通过文档显性化，帮助更多人轻松解决类似的集成问题。\n\n再次感谢开发者的辛勤付出！",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/713/reactions",
        "total_count": 21,
        "+1": 21,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/712",
      "id": 3356512279,
      "node_id": "I_kwDON-_mZc7IEFAX",
      "number": 712,
      "title": "Gemini CLI access does not work (via gemini-cls.js)",
      "user": {
        "login": "ramhegedus",
        "id": 187441730,
        "node_id": "U_kgDOCywiQg",
        "avatar_url": "https://avatars.githubusercontent.com/u/187441730?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ramhegedus",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-26T17:26:11Z",
      "updated_at": "2025-09-10T10:28:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I tried to configure Claude Code Router with using the most recent version of gemini-cls.js, that is, to access the Gemini Pro models through Gemini CLI, but it does not work. Gemini CLI is well configured through OAuth authentication and works out of the box. \n\nWhen trying to send a message in ccr code though, then I get the following error message:\n\n```\nAPI Error: 404 {\"error\":{\"message\":\"Error from provider(gemini-cli,gemini-2.5-pro: 404): <!DOCTYPE html>\\n<html lang=en>\\n  <meta charset=utf-8>\\n  <meta name=viewport \n    content=\\\"initial-scale=1, minimum-scale=1, width=device-width\\\">\\n  <title>Error 404 (Not Found)!!1</title>\\n  <style>\\n    \n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto \n    0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px \n    no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{backgroun\n    d:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) \n    no-repeat;margin-left:-5px}@media only screen and \n    (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% \n    100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and \n    (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) \n    no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\\n  </style>\\n  <a href=//www.google.com/><span id=logo \n    aria-label=Google></span></a>\\n  <p><b>404.</b> <ins>That’s an error.</ins>\\n  <p>The requested URL <code>/v1internal</code> was not found on this server.  <ins>That’s \n    all we know.</ins>\\nError: Error from provider(gemini-cli,gemini-2.5-pro: 404): <!DOCTYPE html>\\n<html lang=en>\\n  <meta charset=utf-8>\\n  <meta name=viewport \n    content=\\\"initial-scale=1, minimum-scale=1, width=device-width\\\">\\n  <title>Error 404 (Not Found)!!1</title>\\n  <style>\\n    \n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto \n    0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px \n    no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{backgroun\n    d:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) \n    no-repeat;margin-left:-5px}@media only screen and \n    (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% \n    100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and \n    (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) \n    no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\\n  </style>\\n  <a href=//www.google.com/><span id=logo \n    aria-label=Google></span></a>\\n  <p><b>404.</b> <ins>That’s an error.</ins>\\n  <p>The requested URL <code>/v1internal</code> was not found on this server.  <ins>That’s \n    all we know.</ins>\\n\\n    at nt (/Users/xxxxx/.nvm/versions/node/v22.13.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 \n    (/Users/xxxxx/.nvm/versions/node/v22.13.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async o0 (/Users/xxxxx/.nvm/versions/node/v22.13.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:7566\n    9:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nMy config.json for Claude Code Router is this (project name is entered correctly as seen in Google Cloud Console, here substituted with \"xx\") \n\n```\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [\n    {\n      \"path\": \"/User/xxxxx/.claude-code-router/plugins/gemini-cli.js\",\n      \"options\": {\n        \"project\": \"xx\"\n      }\n    }\n  ],\n  \"Providers\": [\n      {\n      \"name\": \"gemini-cli\",\n      \"api_base_url\": \"https://cloudcode-pa.googleapis.com/v1internal\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini-cli\"]\n      }\n    }\n\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"gemini-cli,gemini-2.5-pro\",\n    \"background\": \"gemini-cli,gemini-2.5-pro\",\n    \"think\": \"gemini-cli,gemini-2.5-pro\",\n    \"longContext\": \"gemini-cli,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini-cli,gemini-2.5-flash\"\n  }\n}\n```\n\nIt seems that for some reason https://cloudcode-pa.googleapis.com/v1internal API endpoint is not reachable in this way.   ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/712/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/710",
      "id": 3354863769,
      "node_id": "I_kwDON-_mZc7H9yiZ",
      "number": 710,
      "title": "ccr ui 这个页面，能提供一键测试所有模型的是否接通的功能么",
      "user": {
        "login": "weiyi88",
        "id": 32037147,
        "node_id": "MDQ6VXNlcjMyMDM3MTQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/32037147?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/weiyi88",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-26T09:23:22Z",
      "updated_at": "2025-09-06T08:22:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"3364\" height=\"1724\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/632ae47b-ac04-49c6-809e-31e86201323e\" />\n\n\n这个界面，可以加个，一键测试所有模型是否能用的功能么。\n每次跑都有 500、400、或者429 这些问题，我都不知道是哪个模型出现问题，所以每次都干脆只用一个了\n所以希望能添加，一键测试所有模型的功能",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/710/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/709",
      "id": 3354675070,
      "node_id": "I_kwDON-_mZc7H9Ed-",
      "number": 709,
      "title": "[Bug] DeepSeek-V3.1 Tool Execution Failure",
      "user": {
        "login": "ianmage",
        "id": 8745151,
        "node_id": "MDQ6VXNlcjg3NDUxNTE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8745151?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ianmage",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-08-26T08:26:21Z",
      "updated_at": "2025-11-09T14:38:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Description (描述):**\n在使用 DeepSeek-V3.1 时，当 `transformer.use` 配置为特定值时，出现严重问题：\n- 设置为 `[\"tooluse\"]` 时：弹出 API 错误 `API Error: 400`，详细信息为 `Grammar error: Unknown format`，类型为 `BadRequestError`。\n- 设置为 `[\"enhancetool\"]` 时：模型返回文字回应正常，但实际未执行任何工具代码功能，所有工具行为无实施且无结果。\n\n此问题导致工具使用功能完全失效，影响生产环境中的自动化流程。\n\n**Steps to Reproduce (重现步骤):**\n1. 配置 DeepSeek-V3.1 的 `transformer.use` 为 `[\"tooluse\"]` 或 `[\"enhancetool\"]`。\n2. 运行模型调用（例如，通过 API 或代码执行）。\n3. 观察错误或行为：\n   - 对于 `[\"tooluse\"]`：立即返回 `400 BadRequestError`。\n   - 对于 `[\"enhancetool\"]`：收到正常文本响应，但工具未执行。\n\n**Expected Behavior (预期行为):**\n应正常触发工具使用功能，实际执行工具代码，返回结果。\n\n**Actual Behavior (实际行为):**\n- `[\"tooluse\"]`：导致 API 错误，阻止任何操作。\n- `[\"enhancetool\"]`：工具功能静默失败，无执行或输出。\n\n**Environment (环境信息):**\n- Model: DeepSeek-V3.1\n- Configuration: `transformer.use` set to `[\"tooluse\"]` or `[\"enhancetool\"]`\n- Error: `BadRequestError` with message `Grammar error: Unknown format` for `[\"tooluse\"]`\n- Impact: All tool-related functionalities are broken.\n\n**Additional Context (附加信息):**\n- 问题可能源于配置解析或 API 请求格式错误。\n- 需要紧急修复，因为工具使用是核心功能。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/709/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/708",
      "id": 3354200953,
      "node_id": "I_kwDON-_mZc7H7Qt5",
      "number": 708,
      "title": "cerbras，provider_response_error，Unsupported JSON schema fields: {'minItems',      'items'}",
      "user": {
        "login": "longguzzz",
        "id": 96779663,
        "node_id": "U_kgDOBcS9jw",
        "avatar_url": "https://avatars.githubusercontent.com/u/96779663?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/longguzzz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-26T05:44:56Z",
      "updated_at": "2025-11-10T05:19:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```json\n{\n    \"name\": \"cerebras\",\n    \"api_base_url\": \"https://api.cerebras.ai/v1/chat/completions\",\n    \"api_key\": \"APIKEY\",\n    \"models\": [\n        \"qwen-3-coder-480b\",\n        \"qwen-3-235b-a22b-instruct-2507\",\n        \"qwen-3-235b-a22b-thinking-2507\"\n    ],\n    \"transformer\": {\n        \"use\": [\n            [\n                \"maxtoken\",\n                {\n                    \"max_tokens\": 65536\n                }\n            ],\n            \"enhancetool\"\n        ],\n        \"qwen-3-235b-a22b-instruct-2507\": {\n            \"use\": [\n                [\n                    \"maxtoken\",\n                    {\n                        \"max_tokens\": 64000\n                    }\n                ],\n                \"enhancetool\"\n            ]\n        },\n        \"qwen-3-235b-a22b-thinking-2507\": {\n            \"use\": [\n                \"reasoning\"\n            ]\n        }\n    }\n}\n```\n\n\n\n\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(cerebras,qwen-3-235b-a22b-thinking-2507: 400): {\\\"message\\\":\\\"Unsupported JSON schema fields: {'minItems', \n    'items'}\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"response_format\\\",\\\"code\\\":\\\"wrong_api_format\\\"}Error: Error from provider(cerebras,qwen-3-235b-a22b-thinking-2507: 400): \n    {\\\"message\\\":\\\"Unsupported JSON schema fields: {'minItems', 'items'}\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"response_format\\\",\\\"code\\\":\\\"wrong_api_format\\\"}\\n    at nt (/root/.local/share/\n    pnpm/global/5/.pnpm/@musistudio+claude-code-router@1.0.43_@modelcontextprotocol+sdk@1.15.1_ws@8.18.3_zod@3.25.76/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/root/.\n    local/share/pnpm/global/5/.pnpm/@musistudio+claude-code-router@1.0.43_@modelcontextprotocol+sdk@1.15.1_ws@8.18.3_zod@3.25.76/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at\n     process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (/root/.local/share/pnpm/global/5/.pnpm/@musistudio+claude-code-router@1.0.43_@modelcontextprotocol+sdk@1\n    .15.1_ws@8.18.3_zod@3.25.76/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/708/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/707",
      "id": 3352917495,
      "node_id": "I_kwDON-_mZc7H2XX3",
      "number": 707,
      "title": "Release tags",
      "user": {
        "login": "graham33",
        "id": 10908649,
        "node_id": "MDQ6VXNlcjEwOTA4NjQ5",
        "avatar_url": "https://avatars.githubusercontent.com/u/10908649?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/graham33",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-25T19:12:41Z",
      "updated_at": "2025-10-13T07:02:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Thanks very much for the very useful project! Would it be possible to provide git tags corresponding to the source revisions for the releases on npmjs.org? It would be useful when building from source for packaging purposes. Or if there's another way to determine this I'd be keen to hear about it. Thanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/707/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/705",
      "id": 3352279497,
      "node_id": "I_kwDON-_mZc7Hz7nJ",
      "number": 705,
      "title": "【求助】如何配置anyrouter",
      "user": {
        "login": "wangx-wx",
        "id": 179892873,
        "node_id": "U_kgDOCrjyiQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/179892873?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wangx-wx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-08-25T15:25:56Z",
      "updated_at": "2026-01-30T06:52:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "想使用ccr代理anyrouter，怎么写配置文件呢，\n\n```json\n{\n   \"Providers\": [\n   \n    {\n      \"name\": \"Anyrouter\",\n      \"api_base_url\": \"https://anyrouter.top/v1/messages\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"sonnet[1m]\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"Anthropic\"\n        ]\n      }\n    }\n  ]\n}\n```\n\n配置的魔塔的大模型，无法正确的使用图片识别的功能。Anyrouter的模型可以，但是Anyrouter不稳定....\n想配置一个路由，便于切换..\n\n\n上述配置报错\n```\nAPI Error: 403 {\"error\":{\"message\":\"Error from provider(Anyrouter,sonnet[1m]: 403):\n    {\\\"error\\\":{\\\"message\\\":\\\"该令牌无权访问模型 sonnet[1m] (request id:\n    20250825231828944876912wklCSX7a)\\\",\\\"type\\\":\\\"new_api_error\\\"}}Error: Error from provider(Anyrouter,sonnet[1m]:\n     403): {\\\"error\\\":{\\\"message\\\":\\\"该令牌无权访问模型 sonnet[1m] (request id:\n    20250825231828944876912wklCSX7a)\\\",\\\"type\\\":\\\"new_api_error\\\"}}\\n    at nt (E:\\\\classpath\\\\nvm\\\\v23.11.0\\\\node_\n    global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (E:\\\\classpath\\\\nvm\\\\v\n    23.11.0\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0\n    (E:\\\\classpath\\\\nvm\\\\v23.11.0\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:8\n    4)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n\n修改base_url: https://anyrouter.top。报错\n```\n  ⎿  API Error (500 {\"error\":{\"message\":\"Unexpected token '<', \\\"<html><scr\\\"... is not valid JSONSyntaxError: Unexpected token '<', \\\"<html><scr\\\"... is not valid JSON\\n    at JSON.parse (<anonymous>)\\n    at parseJSONFromBytes (node:internal/deps/undici/undici:5738:19)\\n    at successSteps (node:internal/deps/undici/undici:5719:27)\\n    at fullyReadBody (node:internal/deps/undici/undici:4609:9)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async consumeBody (node:internal/deps/undici/undici:5728:7)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n```\n\n\n像大佬求助",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/705/reactions",
        "total_count": 3,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 3
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/701",
      "id": 3350762045,
      "node_id": "I_kwDON-_mZc7HuJI9",
      "number": 701,
      "title": "cursor not shown",
      "user": {
        "login": "living1070",
        "id": 225667353,
        "node_id": "U_kgDODXNpGQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/225667353?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/living1070",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-25T07:27:09Z",
      "updated_at": "2025-08-25T07:27:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Run \"claude\" directly, the cursor showed all right. But run \"ccr code\", the cursor is missing.\nI have tried to change the shape of cursor but failed.\n\nNo clue to solve it.\n\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/701/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/700",
      "id": 3350538395,
      "node_id": "I_kwDON-_mZc7HtSib",
      "number": 700,
      "title": "CCR can't use Gemini to fetch website",
      "user": {
        "login": "BradKML",
        "id": 58927531,
        "node_id": "MDQ6VXNlcjU4OTI3NTMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/58927531?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BradKML",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-25T05:58:55Z",
      "updated_at": "2025-10-07T15:51:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Please observe the following error\n```\n● I will now analyze the search results and select the most relevant link to investigate the yfinance library's capabilities. I'll start with what appears to be the official PyPI page, as\n  it often links to the primary documentation.\n\n● Fetch(https://pypi.org/project/yfinance/)\n  ⎿  Error: Claude Code is unable to fetch from pypi.org\n\n● It seems I was unable to fetch the content from PyPI. I will try the next most promising link, which appears to be a GitHub repository. This is often the source of truth for library\n  documentation.\n  ⎿  Error: Claude Code is unable to fetch from pypi.org\n\n● It seems I was unable to fetch the content from PyPI. I will try the next most promising link, which appears to be a GitHub repository. This is often the source of truth for library\n  documentation.\n\n● Fetch(https://github.com/ranaroussi/yfinance)\n\n● Fetch(https://github.com/ranaroussi/yfinance)\n\n● I see that direct fetching from both PyPI and GitHub is restricted. I will try a different approach. I will broaden my web search to look for tutorials and guides that demonstrate\n  advanced yfinance usage, as these will likely contain the information I need.\n\n● Fetch(https://github.com/ranaroussi/yfinance)\n\n● I see that direct fetching from both PyPI and GitHub is restricted. I will try a different approach. I will broaden my web search to look for tutorials and guides that demonstrate\n  advanced yfinance usage, as these will likely contain the information I need.\n```\n\nIt's a ZCF setup using the following tool (with related issues noted down) https://github.com/UfoMiao/zcf/discussions/31",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/700/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/698",
      "id": 3350105402,
      "node_id": "I_kwDON-_mZc7Hro06",
      "number": 698,
      "title": "Crash when the model takes too long to response.",
      "user": {
        "login": "hksdpc255",
        "id": 43977088,
        "node_id": "MDQ6VXNlcjQzOTc3MDg4",
        "avatar_url": "https://avatars.githubusercontent.com/u/43977088?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hksdpc255",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-25T01:19:22Z",
      "updated_at": "2025-08-25T01:19:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I currently running local LLM using llama-server. The model is a reasoning model and it sometimes takes vvveeerrryyy loooong time to complete the response. It cause a crash on claude-code-router:\n\n```\nnode:internal/deps/undici/undici:10815\n            fetchParams.controller.controller.error(new TypeError(\"terminated\", {\n                                                    ^\n\nTypeError: terminated\n    at Fetch.onAborted (node:internal/deps/undici/undici:10815:53)\n    at Fetch.emit (node:events:520:28)\n    at Fetch.terminate (node:internal/deps/undici/undici:9973:14)\n    at Object.onError (node:internal/deps/undici/undici:10927:38)\n    at Request.onError (/work/node_modules/@musistudio/claude-code-router/dist/cli.js:37233:31)\n    at Object.errorRequest (/work/node_modules/@musistudio/claude-code-router/dist/cli.js:36630:17)\n    at Socket.onHttpSocketClose (/work/node_modules/@musistudio/claude-code-router/dist/cli.js:41827:14)\n    at Socket.emit (node:events:532:35)\n    at TCP.<anonymous> (node:net:337:12) {\n  [cause]: BodyTimeoutError: Body Timeout Error\n      at FastTimer.onParserTimeout [as _onTimeout] (/work/node_modules/@musistudio/claude-code-router/dist/cli.js:41704:32)\n      at Timeout.onTick [as _onTimeout] (/work/node_modules/@musistudio/claude-code-router/dist/cli.js:35502:17)\n      at listOnTimeout (node:internal/timers:581:17)\n      at process.processTimers (node:internal/timers:519:7) {\n    code: 'UND_ERR_BODY_TIMEOUT'\n  }\n}\n\nNode.js v22.5.1\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/698/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/697",
      "id": 3349952852,
      "node_id": "I_kwDON-_mZc7HrDlU",
      "number": 697,
      "title": "How to specify custom request headers in the config file on provider level?",
      "user": {
        "login": "shivangg",
        "id": 10586637,
        "node_id": "MDQ6VXNlcjEwNTg2NjM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/10586637?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/shivangg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-24T22:12:04Z",
      "updated_at": "2025-08-24T22:12:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/697/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/696",
      "id": 3349560847,
      "node_id": "I_kwDON-_mZc7Hpj4P",
      "number": 696,
      "title": "Service not running, starting service... Service startup timeout, please manually run `ccr start` to start the service",
      "user": {
        "login": "lml2004",
        "id": 130026957,
        "node_id": "U_kgDOB8ANzQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/130026957?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lml2004",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-24T14:14:05Z",
      "updated_at": "2025-09-08T12:41:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"Providers\": [\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"ms-2b7daec5-ad8f-405f-9555-f47f5cce2023\",\n      \"models\": [\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ],\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\n            \"reasoning\"\n          ]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/696/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/693",
      "id": 3349501316,
      "node_id": "I_kwDON-_mZc7HpVWE",
      "number": 693,
      "title": "【求助】Anthropic Transformer+智谱GLM4.5配置方法",
      "user": {
        "login": "GodfatherPacino",
        "id": 33151790,
        "node_id": "MDQ6VXNlcjMzMTUxNzkw",
        "avatar_url": "https://avatars.githubusercontent.com/u/33151790?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/GodfatherPacino",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-08-24T12:59:06Z",
      "updated_at": "2025-11-26T02:14:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "您好，我关注到GLM可以使用Anthropic Transformer接口进行适配。这是我的适配信息。在这个配置上连接还是有问题，求助，是否能够给出一个示例    \n这里的api key我填写的其实是GLM官方适配中的ANTHROPIC_AUTH_TOKEN\n{\n      \"name\": \"智谱\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/anthropic\",\n      \"api_key\": \"0aa9c\",\n      \"models\": [\n        \"glm-4.5\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"Anthropic\"\n        ],\n        \"glm-4.5\": {\n          \"use\": [\n            \"Anthropic\"\n          ]\n        }\n      }\n    }\n  ],",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/693/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/692",
      "id": 3349466863,
      "node_id": "I_kwDON-_mZc7HpM7v",
      "number": 692,
      "title": "API Error 寄了吗",
      "user": {
        "login": "lml2004",
        "id": 130026957,
        "node_id": "U_kgDOB8ANzQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/130026957?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lml2004",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-08-24T12:14:37Z",
      "updated_at": "2025-12-22T08:46:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " 3                                                                                                                                                           \n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"599c88e7-6744-485c-8686-c75c4f22547c\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"599c88e7-6744-485c-8686-c75c4f22547c\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"c35c5b6b-6aa9-47d3-892c-977c3c63c75a\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"c35c5b6b-6aa9-47d3-892c-977c3c63c75a\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 2/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"be713758-03aa-44af-9d38-83855d029ec5\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"be713758-03aa-44af-9d38-83855d029ec5\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 2 seconds… (attempt 3/10)                                                                 \n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"f4dbc5cd-bb07-44b8-a982-69003337fa3a\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"f4dbc5cd-bb07-44b8-a982-69003337fa3a\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 4 seconds… (attempt 4/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"be44704a-9df0-461e-ac2f-cf3c8d803514\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"be44704a-9df0-461e-ac2f-cf3c8d803514\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 10 seconds… (attempt 5/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"656c8645-f794-44d3-8a87-4f40061ad4b6\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"656c8645-f794-44d3-8a87-4f40061ad4b6\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 19 seconds… (attempt 6/10)                                                                \n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"edcf6b7a-face-499b-9aa3-c598d7631dc7\\\"}}Error: Error from provider(modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct: 429): {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"edcf6b7a-face-499b-9aa3-c598d7631dc7\\\"}}\\n    at nt (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (D:\\\\nodejs\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 32 seconds… (attempt 7/10)\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/692/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/689",
      "id": 3349323956,
      "node_id": "I_kwDON-_mZc7HoqC0",
      "number": 689,
      "title": "Feature Request: Add Customizable Parameters to Forwarded LLM Requests",
      "user": {
        "login": "ianmage",
        "id": 8745151,
        "node_id": "MDQ6VXNlcjg3NDUxNTE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8745151?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ianmage",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-24T09:04:23Z",
      "updated_at": "2025-08-24T09:04:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem Description\nCurrently, the HTTP request forwarding mechanism does not support injecting user-defined parameters into forwarded `POST` requests. This limits flexibility when integrating with backend services that require additional dynamic parameters (e.g., service-specific flags, metadata, or template options) without modifying the core forwarding logic.\n\n## Goal\nEnable users to extend forwarded `POST` requests with custom parameters (e.g., JSON objects, strings, numbers, booleans) dynamically, ensuring compatibility with diverse backend requirements while maintaining the integrity of the original request structure.\n\n## Example Use Case\n**Original Request Data:**\n```json\n{\n  \"model\": \"deepseek-v31\",\n  \"messages\": [...],\n  \"temperature\": 0.6\n}\n```\n\n**With Custom Parameter `chat_template_kwargs`:**\n```json\n{\n  \"model\": \"deepseek-v31\",\n  \"messages\": [...],\n  \"temperature\": 0.6,\n  \"chat_template_kwargs\": {\n    \"thinking\": true,\n    \"thinking_budget\": 1024\n  }\n}\n```\n\n## Requirements\n- Support arbitrary user-defined parameters (key-value pairs) with values of types including but not limited to: `str`, `int`, `float`, `bool`, `dict` (JSON object), `list`.\n- Ensure the original request body remains unaltered except for the additive custom parameters.\n- No breaking changes to existing functionality.\n\n## Notes\nThis feature should be designed generically to accommodate various parameter types and structures commonly used in HTTP APIs.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/689/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/688",
      "id": 3349228791,
      "node_id": "I_kwDON-_mZc7HoSz3",
      "number": 688,
      "title": "建了一个微信交流群",
      "user": {
        "login": "claudecodehub",
        "id": 226887738,
        "node_id": "U_kgDODYYIOg",
        "avatar_url": "https://avatars.githubusercontent.com/u/226887738?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/claudecodehub",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-24T06:52:34Z",
      "updated_at": "2025-08-28T14:34:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "作者提供的微信群满200人了，加不了，谁来建一个",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/688/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/686",
      "id": 3348464594,
      "node_id": "I_kwDON-_mZc7HlYPS",
      "number": 686,
      "title": "OpenAI openai-5-mini: \"Invalid 'tools': array too long. Expected an array with maximum length 128, but got an array with length 129 instead",
      "user": {
        "login": "viper7882",
        "id": 28743821,
        "node_id": "MDQ6VXNlcjI4NzQzODIx",
        "avatar_url": "https://avatars.githubusercontent.com/u/28743821?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/viper7882",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-23T16:44:07Z",
      "updated_at": "2025-08-28T21:57:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\n~/.claude-code-router/config.json created using `ccr ui`\n```json\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n      \"api_key\": \"$OPENAI_API_KEY\",\n      \"models\": [\n        \"gpt-5-mini\",\n        \"gpt-5\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openai\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"openai,gpt-5-mini\",\n    \"background\": \"openai,gpt-5-mini\",\n    \"think\": \"openai,gpt-5\",\n    \"longContext\": \"openai,gpt-5-mini\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"openai,gpt-5-mini\"\n  }\n}\n```\n\nPrompt:\n```bash\n> who are you\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(openai,gpt-5-mini: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Invalid 'tools': array too long. Expected an array with maximum length 128, but got an array with length 129 instead.\\\",\\n    \\\"type\\\":\n    \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"tools\\\",\\n    \\\"code\\\": \\\"array_above_max_length\\\"\\n  }\\n}Error: Error from provider(openai,gpt-5-mini: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Invalid 'tools': array too long. Expected an array with maximum length 128,\n    but got an array with length 129 instead.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"tools\\\",\\n    \\\"code\\\": \\\"array_above_max_length\\\"\\n  }\\n}\\n    at nt\n    (/home/xxx/.nvm/versions/node/v24.5.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/home/xxx/.nvm/versions/node/v24.5.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:105:5)\\n    at async o0 (/home/xxx/.nvm/versions/node/v24.5.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/686/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/685",
      "id": 3348286146,
      "node_id": "I_kwDON-_mZc7HksrC",
      "number": 685,
      "title": "add support for simulating tool calling capability by injecting tool definitions into prompts for non-tool calling models",
      "user": {
        "login": "dsfmc",
        "id": 56321700,
        "node_id": "MDQ6VXNlcjU2MzIxNzAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/56321700?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dsfmc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-23T14:06:52Z",
      "updated_at": "2025-09-21T07:10:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "similar functinality for Deepinfra in LiteLLM:\n\nLiteLLM supports DeepInfra as a provider, allowing you to call models hosted there using a unified API with the prefix model=\"deepinfra/<model-name>\" (e.g., deepinfra/meta-llama/Llama-2-7b-chat-hf). For models without native tool (or function) calling support, LiteLLM can simulate this capability by injecting the tool definitions directly into the prompt when you set litellm.add_function_to_prompt = True. This prompts the model to generate a response that includes the tool call (typically as structured text like JSON), which you then parse.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/685/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/684",
      "id": 3348171654,
      "node_id": "I_kwDON-_mZc7HkQuG",
      "number": 684,
      "title": "发现在使用gemini-banlance作为模型服务商使用过程中会报错\"fetch failedTypeError: fetch failed\\n“，该如何解决？",
      "user": {
        "login": "bluespace3",
        "id": 102141498,
        "node_id": "U_kgDOBhaOOg",
        "avatar_url": "https://avatars.githubusercontent.com/u/102141498?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bluespace3",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-23T12:34:31Z",
      "updated_at": "2025-09-03T09:59:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at node:internal/deps/undici/undici:13502:13\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async u0 (C:\\\\Users\\\\tian4\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75699:11)\\n    at async o0 (C:\\\\Users\\\\tian4\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 38 seconds… (attempt 9/10)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/684/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/683",
      "id": 3347944639,
      "node_id": "I_kwDON-_mZc7HjZS_",
      "number": 683,
      "title": "供应商添加页面，显示bug,无法居中显示",
      "user": {
        "login": "easyhaloo",
        "id": 32064710,
        "node_id": "MDQ6VXNlcjMyMDY0NzEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/32064710?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/easyhaloo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-23T10:16:25Z",
      "updated_at": "2025-08-23T10:16:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1920\" height=\"1080\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2b97b217-f54f-4f38-a32d-296f5499be03\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/683/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/680",
      "id": 3346258632,
      "node_id": "I_kwDON-_mZc7Hc9rI",
      "number": 680,
      "title": "websearch router error",
      "user": {
        "login": "iT-Boyer",
        "id": 4022953,
        "node_id": "MDQ6VXNlcjQwMjI5NTM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4022953?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iT-Boyer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-22T18:08:37Z",
      "updated_at": "2025-08-29T04:59:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "@musistudio 您好， Claude code 内置的搜索工具的工作原理是什么？\ncc 依赖官方大模型的支持，ccr 路由器中提供了 websearch 路由配置来取代官方大模型，我配置了 gemini-2.5-flash作为路由，但是出现了错误：\n```\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n```\n在使用 Claude code 过程中出现如下问题：\n```\n⏺ Web Search(\"最新电影\")\n  ⎿  Error: Cannot specify both allowed_domains and blocked_domains in the same request\n\n⏺ Looking at the tools provided, the WebSearch function has both allowed_domains and blocked_domains as parameters. The error\n  message suggests that these two options are mutually exclusive. So, the user probably tried to use both in their query, which is\n   not allowed.\n\n  The user's original request was to perform a web search with specific domains. They might have intended to include certain\n  domains and block others. But according to the tool's rules, you can't have both. So, the solution is to remove one of the\n  domains. Maybe the user wants to allow some domains and block others, but they need to choose one.\n\n  I should inform the user to remove one of the domains from their request. For example, if they want to allow some domains, they\n  can remove the blocked_domains parameter, or vice versa. That way, they can proceed with the search without violating the tool's\n   constraints.\n\n\n  To resolve the error, remove either allowed_domains or blocked_domains from the WebSearch request. Here's the corrected\n  parameter:\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/680/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/674",
      "id": 3344172284,
      "node_id": "I_kwDON-_mZc7HVAT8",
      "number": 674,
      "title": "[feature request] Add remote configuration support",
      "user": {
        "login": "somnifex",
        "id": 98788152,
        "node_id": "U_kgDOBeNjOA",
        "avatar_url": "https://avatars.githubusercontent.com/u/98788152?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/somnifex",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-22T05:13:24Z",
      "updated_at": "2025-08-22T05:13:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Propose adding a remote configuration synchronization feature to enable seamless synchronization across different devices, allowing users to specify a configuration file URL (e.g., direct links from OpenGist or GitHub Gist). The application will fetch the latest configuration from this URL upon each startup and cache it locally for use. To ensure stability, if a network request fails, the application will automatically load the last successfully cached local configuration after several retries, guaranteeing normal operation even when offline or with poor network conditions. This feature will easily enable unified configuration across multiple devices, significantly improving the convenience and consistency of the user experience.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/674/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/673",
      "id": 3344168829,
      "node_id": "I_kwDON-_mZc7HU_d9",
      "number": 673,
      "title": "API Error: 404 {\"error\":{\"message\":\"Error from provider(deepseek-test,deepseek-chat: 404)",
      "user": {
        "login": "maker316",
        "id": 50206636,
        "node_id": "MDQ6VXNlcjUwMjA2NjM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/50206636?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/maker316",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-22T05:11:12Z",
      "updated_at": "2026-02-10T02:19:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "config.json \n`\n{\n  \"LOG\": false,\n  \"LOG_LEVEL\": \"debug\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"deepseek-test\",\n      \"api_base_url\": \"https://api.deepseek.com/\",\n      \"api_key\": \"sk-84fc9xxxxxxxxxxxxxxx7990b9fb661c1\",\n      \"models\": [\n        \"deepseek-chat\",\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"deepseek\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"tooluse\"\n          ]\n        }\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"deepseek-test,deepseek-chat\",\n    \"background\": \"deepseek-test,deepseek-chat\",\n    \"think\": \"deepseek-test,deepseek-reasoner\",\n    \"longContext\": \"deepseek-test,deepseek-chat\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"deepseek-test,deepseek-reasoner\"\n  }\n}\n`\nccr code \"你好\"\n\n<img width=\"1346\" height=\"516\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8fd645b6-29a8-4722-9ecb-432c47e64fa2\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/673/reactions",
        "total_count": 4,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 4
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/672",
      "id": 3344153903,
      "node_id": "I_kwDON-_mZc7HU70v",
      "number": 672,
      "title": "希望可以支持下新出的vercel AI Gateway",
      "user": {
        "login": "langhaidian",
        "id": 5392727,
        "node_id": "MDQ6VXNlcjUzOTI3Mjc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5392727?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/langhaidian",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-22T05:01:25Z",
      "updated_at": "2025-08-22T05:01:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "非常感谢提供这么方便的项目使用。\n希望支持下，今天新出的vercel AI Gateway，用的openrouter太贵了快扛不住了。。。\nhttps://vercel.com/blog/ai-gateway-is-now-generally-available",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/672/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/671",
      "id": 3344052209,
      "node_id": "I_kwDON-_mZc7HUi_x",
      "number": 671,
      "title": "connection erro",
      "user": {
        "login": "dy9759",
        "id": 124557406,
        "node_id": "U_kgDOB2yYXg",
        "avatar_url": "https://avatars.githubusercontent.com/u/124557406?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dy9759",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-22T03:58:19Z",
      "updated_at": "2025-08-22T03:58:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Whether I have enabled the VPN or not, API erro(connection erro) has appeared.\n\n\nlog\n{\"level\":30,\"time\":1755830731210,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: Anthropic (endpoint: /v1/messages)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: vertex-gemini (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: vertex-claude (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: deepseek (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: tooluse (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: openrouter (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: maxtoken (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: groq (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: cleancache (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: enhancetool (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: reasoning (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: sampling (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: maxcompletiontokens (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: cerebras (no endpoint)\"}\n{\"level\":30,\"time\":1755830731211,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"register transformer: streamoptions (no endpoint)\"}\n{\"level\":30,\"time\":1755830731215,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"openrouter provider registered\"}\n{\"level\":30,\"time\":1755830731264,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"Server listening at http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1755830731264,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"msg\":\"🚀 LLMs API server listening on http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1755833656123,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"reqId\":\"req-1\",\"req\":{\"method\":\"GET\",\"url\":\"http://wx.qlogo.cn/mmhead/Q3auHgzwzM557ERY74HfgbYdvZAsyT21FcGsHokGJX27ibhk5PnHT6g/132?wxfrom=400\",\"host\":\"wx.qlogo.cn\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":11159},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1755833656127,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"reqId\":\"req-1\",\"msg\":\"Route GET:http://wx.qlogo.cn/mmhead/Q3auHgzwzM557ERY74HfgbYdvZAsyT21FcGsHokGJX27ibhk5PnHT6g/132?wxfrom=400 not found\"}\n{\"level\":30,\"time\":1755833656131,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"reqId\":\"req-1\",\"res\":{\"statusCode\":404},\"responseTime\":6.759800001978874,\"msg\":\"request completed\"}\n{\"level\":30,\"time\":1755833693195,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"reqId\":\"req-2\",\"req\":{\"method\":\"GET\",\"url\":\"http://ipv6.msftconnecttest.com/connecttest.txt\",\"host\":\"ipv6.msftconnecttest.com\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":12917},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1755833693195,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"reqId\":\"req-2\",\"msg\":\"Route GET:http://ipv6.msftconnecttest.com/connecttest.txt not found\"}\n{\"level\":30,\"time\":1755833693196,\"pid\":57804,\"hostname\":\"LAPTOP-ETB45DCB\",\"reqId\":\"req-2\",\"res\":{\"statusCode\":404},\"responseTime\":0.9943999946117401,\"msg\":\"request completed\"}\n\n<img width=\"885\" height=\"909\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4e19e2f9-a182-41df-a478-fef80d10e786\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/671/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/670",
      "id": 3343863259,
      "node_id": "I_kwDON-_mZc7HT03b",
      "number": 670,
      "title": "subagents can't route to the specified model",
      "user": {
        "login": "ilGnatRepo",
        "id": 54504800,
        "node_id": "MDQ6VXNlcjU0NTA0ODAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/54504800?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ilGnatRepo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-22T02:17:05Z",
      "updated_at": "2025-09-19T00:05:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I try to route the subagent to the specified model, but failed, the router to subagent isn't work， below is what I tried：\n\n1. describe and config in the subagent prompt。\n\"\"\"\n---\n  name: content-writer\n  description: Use this agent when you need to create compelling, informative content that explains complex topics in simple terms. \n  ---\n  \n  <CCR-SUBAGENT-MODEL>modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct</CCR-SUBAGENT-MODEL>\n  You are a senior content marketer and direct response copywriter who excels at explaining complicated subjects for laypeople. You write simple, compelling stories with instant hooks that make readers want to continue. Your writing is direct and informational, never fluffy or roundabout.\n  ... \n\"\"\"\n\n2. describe and config in the claude code cli promtp\n\"\"\"\n<CCR-SUBAGENT-MODEL>modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct</CCR-SUBAGENT-MODEL>\nPlease analyze the possible innovations of RPA robots in the field of office automation, using @agent-content-writer\n\"\"\"",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/670/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/669",
      "id": 3343801040,
      "node_id": "I_kwDON-_mZc7HTlrQ",
      "number": 669,
      "title": "API ERROR 401 -- Qwen-cli",
      "user": {
        "login": "AmeMizuki",
        "id": 127477317,
        "node_id": "U_kgDOB5kmRQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/127477317?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AmeMizuki",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-08-22T01:50:28Z",
      "updated_at": "2025-08-27T23:37:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Qwen-cli Provider 近期无法使用了\n```bash\nAPI Error (401 {\"error\":{\"message\":\"Error from provider(qwen-cli,qwen3-coder-plus: 401): {\\\"error\\\":{\\\"code\\\":\\\"invalid_api_key\\\",\\\"message\\\":\\\"invalid access token or token expired\\\",\\\"param\\\":null,\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"71513365-3e38-9277-bc7c-1e3ff503f872\\\"}Error: Error from provider(qwen-cli,qwen3-coder-plus: 401): {\\\"error\\\":{\\\"code\\\":\\\"invalid_api_key\\\",\\\"message\\\":\\\"invalid access token or token expired\\\",\\\"param\\\":null,\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"71513365-3e38-9277-bc7c-1e3ff503f872\\\"}\\n    at nt (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async o0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n```\n这是 config.json 底下的配置\n\n```json\n{\n  \"LOG\": true,\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"sk-***\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [\n    {\n      \"path\": \"/**/**/.claude-code-router/plugins/qwen-cli.js\"\n    }\n  ],\n  \"Providers\": [\n    {\n      \"name\": \"qwen-cli\",\n      \"api_base_url\": \"https://portal.qwen.ai/v1/chat/completions\",\n      \"api_key\": \"sk-***\",\n      \"models\": [\n        \"qwen3-coder-plus\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"qwen-cli\"\n        ],\n        \"qwen3-coder-plus\": {\n          \"use\": [\n            \"enhancetool\"\n          ]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"qwen-cli,qwen3-coder-plus\",\n    \"background\": \"qwen-cli,qwen3-coder-plus\",\n    \"think\": \"\",\n    \"longContext\": \"qwen-cli,qwen3-coder-plus\",\n    \"longContextThreshold\": 25000,\n    \"webSearch\": \"\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/669/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/668",
      "id": 3343735390,
      "node_id": "I_kwDON-_mZc7HTVpe",
      "number": 668,
      "title": "OpenAI 推理模型(o4-mini) reasoning参数设置疑问",
      "user": {
        "login": "nonsensejoke",
        "id": 144326206,
        "node_id": "U_kgDOCJo-Pg",
        "avatar_url": "https://avatars.githubusercontent.com/u/144326206?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nonsensejoke",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-22T01:26:50Z",
      "updated_at": "2025-08-22T01:26:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "各位好，我最近尝试在CCR中调用OpenAI (via GPT-load)的o4-mini模型。\n刚开始有关于max_tokens的报错，于是我加上了 maxcompletiontokens 这个transformer，就可以正常回复了。\n但是我不确定我的reasoning部分设置得是否正确(特别是effort部分)。\n\nHello everyone, I recently tried calling the o4-mini model of OpenAI (via GPT-load) in CCR. \nAt first, there was an error related to max_tokens, so I added the maxcompletiontokens transformer, and it started responding normally. \nHowever, I'm not sure if my reasoning section is set up correctly (especially the effort part).\n\n\n下面是我的配置文件部分\nBelow is my config file\n\n```\n{\n  \"name\": \"openai\",\n  \"api_base_url\": \"https://gptload.somedomain.com/proxy/openai/v1/chat/completions\",\n  \"api_key\": \"sk-xxxx\",\n  \"models\": [\n    \"o4-mini\",\n    \"gpt-4.1-mini\",\n    \"gpt-4.1-nano\"\n  ],\n  \"transformer\": {\n    \"use\": [],\n    \"o4-mini\": {\n      \"use\": [\n        [\n          \"maxcompletiontokens\"\n        ],\n        [\n          \"reasoning\",\n          {\n            \"effort\": \"medium\"\n          }\n        ]\n      ]\n    }\n  }\n}\n```\n\nui设置截图：\nui setting snapshot\n\n<img width=\"500\"  alt=\"Image\" src=\"https://github.com/user-attachments/assets/d30bb176-f967-4db5-84f6-b969db18e5e7\" />\n\n\n如果我有地方设置错了，请各位不吝赐教！\nIf I have set something incorrectly, please feel free to offer your guidance!\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/668/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/667",
      "id": 3342651632,
      "node_id": "I_kwDON-_mZc7HPNDw",
      "number": 667,
      "title": "API Error: 404 {\"error\":{\"message\":\"Error from provider(gemini,gemini-2.5-pro: 404):",
      "user": {
        "login": "TheWalKer-TW",
        "id": 67897843,
        "node_id": "MDQ6VXNlcjY3ODk3ODQz",
        "avatar_url": "https://avatars.githubusercontent.com/u/67897843?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TheWalKer-TW",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-21T17:44:00Z",
      "updated_at": "2026-02-10T02:18:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm getting this error:\n```typescript\nAPI Error: 404 {\"error\":{\"message\":\"Error from provider(gemini,gemini-2.5-pro: 404): Error: Error from provider(gemini,gemini-2.5-pro: 404): \\n    at nt \n    (/home/adria/.nvm/versions/node/v22.15.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\\n    at u0 \n    (/home/adria/.nvm/versions/node/v22.15.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\\n    at async o0 (/home/adria/.nvm/versions/node/v22.15.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:7\n    5669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n``` \n\nWith this config:\n```\n{\n  \"LOG\": true,\n  \"CLAUDE_PATH\": \"{TheActualPath}\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\n        \"llama3.2\",\n        \"gpt-oss-20b\"\n      ]\n    },\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n      \"api_key\": \"sk-proj-xxxxx\",\n      \"models\": [\n        \"gpt-5\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"maxcompletiontokens\"\n        ]\n      }\n    },\n    {\n      \"name\": \"claude\",\n      \"api_base_url\": \"https://api.anthropic.com/v1\",\n      \"api_key\": \"sk-ant-xxxxx\",\n      \"models\": [\n        \"claude-opus-4-1\",\n        \"sonnet-4\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"anthropic\"\n        ]\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"xxxxx\",\n      \"models\": [\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n    \"background\": \"ollama,gpt-oss-20b\",\n    \"think\": \"claude,claude-opus-4-1\",\n    \"longContext\": \"gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 200000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }\n}\n``` ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/667/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/665",
      "id": 3342202614,
      "node_id": "I_kwDON-_mZc7HNfb2",
      "number": 665,
      "title": "custom slash command not loaded",
      "user": {
        "login": "kevinw8801",
        "id": 28534219,
        "node_id": "MDQ6VXNlcjI4NTM0MjE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/28534219?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kevinw8801",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-21T15:28:53Z",
      "updated_at": "2025-10-18T13:06:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "the custom slash command disappear after move to ccr, for example BMAD method introduce many new slash command, they are gone after move to ccr code, any idea? those slash commands are located under .claude/commands",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/665/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/664",
      "id": 3341861974,
      "node_id": "I_kwDON-_mZc7HMMRW",
      "number": 664,
      "title": "验证使用失败，报错fetch failed",
      "user": {
        "login": "Echobinix",
        "id": 73065164,
        "node_id": "MDQ6VXNlcjczMDY1MTY0",
        "avatar_url": "https://avatars.githubusercontent.com/u/73065164?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Echobinix",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-21T13:55:54Z",
      "updated_at": "2025-09-24T14:07:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "这是什么原因？ \n⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 2/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 2 seconds… (attempt 3/10)\n    ⎿  TypeError (fetch failed)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/664/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/663",
      "id": 3341683447,
      "node_id": "I_kwDON-_mZc7HLgr3",
      "number": 663,
      "title": "claude 更新后不管用了 嗝屁了",
      "user": {
        "login": "sheldon123z",
        "id": 42455304,
        "node_id": "MDQ6VXNlcjQyNDU1MzA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/42455304?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sheldon123z",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-08-21T13:05:14Z",
      "updated_at": "2025-08-26T16:31:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "╭────────────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                              │\n│                                                        │\n│   /help for help, /status for your current setup       │\n│                                                        │\n│   cwd: /Users/xiaodongzheng/exps/chatgpt2notionparser  │\n│                                                        │\n│   ──────────────────────────────────────────────────── │\n│                                                        │\n│   Overrides (via env):                                 │\n│                                                        │\n│   • API timeout: 600000ms                              │\n│   • API Base URL: http://127.0.0.1:3456                │\n╰────────────────────────────────────────────────────────╯\n\n\n> hi\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 2/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 2 seconds… (attempt 3/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 5 seconds… (attempt 4/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 10 seconds… (attempt 5/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 17 seconds… (attempt 6/10)\n    ⎿  TypeError (fetch failed)\n---\n\n{\"level\":30,\"time\":1755780157071,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"msg\":\"Server listening at http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1755780157071,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"msg\":\"🚀 LLMs API server listening on http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1755780385587,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"reqId\":\"req-1\",\"req\":{\"method\":\"POST\",\"url\":\"/api/config\",\"host\":\"127.0.0.1:3456\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":54282},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1755780385605,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"reqId\":\"req-1\",\"res\":{\"statusCode\":200},\"responseTime\":16.720875024795532,\"msg\":\"request completed\"}\n{\"level\":30,\"time\":1755780435673,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"reqId\":\"req-2\",\"req\":{\"method\":\"POST\",\"url\":\"/api/config\",\"host\":\"127.0.0.1:3456\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":54282},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1755780435681,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"reqId\":\"req-2\",\"res\":{\"statusCode\":200},\"responseTime\":8.22129201889038,\"msg\":\"request completed\"}\n{\"level\":30,\"time\":1755780435685,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"reqId\":\"req-3\",\"req\":{\"method\":\"POST\",\"url\":\"/api/restart\",\"host\":\"127.0.0.1:3456\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":54282},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1755780435687,\"pid\":48840,\"hostname\":\"Mac-Studio.local\",\"reqId\":\"req-3\",\"res\":{\"statusCode\":200},\"responseTime\":1.7994999885559082,\"msg\":\"request completed\"}\n~                                                                               \n\n\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/663/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/662",
      "id": 3341322514,
      "node_id": "I_kwDON-_mZc7HKIkS",
      "number": 662,
      "title": "中转站的的 claude 配置后不执行代码修改只输出文字",
      "user": {
        "login": "sunqibuhuake",
        "id": 6679369,
        "node_id": "MDQ6VXNlcjY2NzkzNjk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6679369?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sunqibuhuake",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-21T11:11:22Z",
      "updated_at": "2025-09-17T14:50:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "派遣修改代码的任务，模型把修改后的内容直接输出了出来，但是不执行实际的文件修改",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/662/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/661",
      "id": 3341254582,
      "node_id": "I_kwDON-_mZc7HJ3-2",
      "number": 661,
      "title": "[Feature request] Follow platform-specific config file locations",
      "user": {
        "login": "yao-yun",
        "id": 88876404,
        "node_id": "MDQ6VXNlcjg4ODc2NDA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/88876404?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yao-yun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-21T10:46:56Z",
      "updated_at": "2025-08-21T10:46:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Instead of the current `~/.claude-code-router/config.json` and other state/cache files which kinda pollute the home directory, it would be better for ccr to use platform specific locations where possible. Taking config for example: \n- Linux: following [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/latest/) \n  - `$XDG_CONFIG_HOME/claude-code-router/config.json` \n- macOS: Not sure, possibly multiple options.\n  - The macOS way: according to [this stackoverflow post](https://stackoverflow.com/questions/3373948/equivalents-of-xdg-config-home-and-xdg-data-home-on-mac-os-x). Further reference provided in the link.\n    - `~/Library/Preferences/Claude Code Router/config.json` (or use `.plist` but that needs more effort, possibly )\n    - `~/Library/Application Support/Claude Code Router/config.json`\n  - The XDG way (less recommended?): just `$XDG_CONFIG_HOME/claude-code-router/config.json`. Though not guaranteed, this env var is very likely set on computers where ccr is used. \n- Windows: `%APPDATA%\\claude-code-router\\config.json` \n\nA possible one-for-all package https://github.com/sindresorhus/env-paths \n\nBeside including these in a config module, migration warning to maintain backward compatibility and update to documents will also be needed.\n\nWilling to further assist.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/661/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/660",
      "id": 3341220759,
      "node_id": "I_kwDON-_mZc7HJvuX",
      "number": 660,
      "title": "An issue during the process of calling deepseek-reasoner",
      "user": {
        "login": "FeiLiuEM",
        "id": 74372427,
        "node_id": "MDQ6VXNlcjc0MzcyNDI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/74372427?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/FeiLiuEM",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-21T10:35:01Z",
      "updated_at": "2025-10-02T03:49:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I set  the model `deepseek-reasoner` in the `ccr code`. \n\nHowever, based on the information from [DeepSeek's official website](https://platform.deepseek.com/usage), I discovered that the `ccr` only consumes `deepseek-chat`.\n\nI do not know why. There was no problem before。\n\nHere is the content of my `config.json`:\n```json\n{\n  \"OPENAI_API_KEY\": \"\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": { \"use\": [\"tooluse\"] }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-reasoner\",\n    \"background\": \"deepseek,deepseek-chat\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"deepseek,deepseek-chat\"\n  }\n}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/660/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/659",
      "id": 3340615266,
      "node_id": "I_kwDON-_mZc7HHb5i",
      "number": 659,
      "title": "/model 无法显示模型",
      "user": {
        "login": "alexciw",
        "id": 58928559,
        "node_id": "MDQ6VXNlcjU4OTI4NTU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/58928559?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alexciw",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-21T07:23:51Z",
      "updated_at": "2025-08-25T13:00:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr version: 1.0.43\nclaude version: 1.0.86\n\n使用 /model 仍然展示展示的是默认3个选项，除了 使用 /model provider,model 外是否有一键配置多个模型的办法？\n\n<img width=\"852\" height=\"157\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2d77ebe7-04de-47be-b062-54ad97be10ea\" />\n\n~/.claude-code-router/config.json 配置如下：\n{\n  \"Providers\": [\n    {\n      \"name\": \"pqi\",\n      \"api_base_url\": \"http://a.b.c/llmproxy/v1/chat/completions\",\n      \"api_key\": \"abcdefg\",\n      \"models\": [\n        \"glm-4.5\",\n        \"kimi-k2\",\n        \"qwen3-235b\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\",\n          \"anthropic\",\n          \"openai\",\n          \"google\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"pqi,kimi-k2\",\n    \"background\": \"pqi,kimi-k2\",\n    \"think\": \"pqi,glm-4.5\",\n    \"longContext\": \"pqi,qwen3-235b\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/659/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/658",
      "id": 3340611857,
      "node_id": "I_kwDON-_mZc7HHbER",
      "number": 658,
      "title": "ccr无法正常启动，Service startup timeout, please manually run `ccr start` to start the service",
      "user": {
        "login": "Blazer-YJJ",
        "id": 64519529,
        "node_id": "MDQ6VXNlcjY0NTE5NTI5",
        "avatar_url": "https://avatars.githubusercontent.com/u/64519529?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Blazer-YJJ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-21T07:22:34Z",
      "updated_at": "2025-09-11T07:52:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " ccr code\nService not running, starting service...\nService startup timeout, please manually run `ccr start` to start the service",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/658/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/657",
      "id": 3340508654,
      "node_id": "I_kwDON-_mZc7HHB3u",
      "number": 657,
      "title": "ccr service failed to start",
      "user": {
        "login": "Wbxxx",
        "id": 73701166,
        "node_id": "MDQ6VXNlcjczNzAxMTY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/73701166?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Wbxxx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-21T06:48:00Z",
      "updated_at": "2025-11-20T14:12:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"695\" height=\"462\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8d1472f6-faba-4757-9ae1-afbb6eeeb2f1\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/657/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/656",
      "id": 3340329695,
      "node_id": "I_kwDON-_mZc7HGWLf",
      "number": 656,
      "title": "ccr ui 启动后访问404",
      "user": {
        "login": "jwangkun",
        "id": 3615494,
        "node_id": "MDQ6VXNlcjM2MTU0OTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3615494?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jwangkun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-21T05:22:10Z",
      "updated_at": "2025-11-22T16:58:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\"message\":\"Route GET:/ui/ not found\",\"error\":\"Not Found\",\"statusCode\":404}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/656/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/655",
      "id": 3340049610,
      "node_id": "I_kwDON-_mZc7HFRzK",
      "number": 655,
      "title": "Use Openwebui's api With CCR",
      "user": {
        "login": "caokai674",
        "id": 172163093,
        "node_id": "U_kgDOCkMAFQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/172163093?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/caokai674",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-21T02:20:38Z",
      "updated_at": "2025-08-21T02:20:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "有时候在使用OpenWebUI的api的时候，Claude Code无法正常显示。通过抓包分析得到原因。我在我的仓库：\nhttps://github.com/Hitmux/Openwebui_With_CCR\n里面用Python解决了这个问题\n\n----\n\nSometimes when using the OpenWebUI API, Claude Code doesn't display properly. I discovered the cause by analyzing the packet capture. I've solved this problem using Python in my repository:\nhttps://github.com/Hitmux/Openwebui_With_CCR",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/655/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/654",
      "id": 3339981082,
      "node_id": "I_kwDON-_mZc7HFBEa",
      "number": 654,
      "title": "Invalid tool parameters",
      "user": {
        "login": "noiceman",
        "id": 8952841,
        "node_id": "MDQ6VXNlcjg5NTI4NDE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8952841?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/noiceman",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-21T01:44:32Z",
      "updated_at": "2025-09-08T21:10:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"qwen3\",\n      \"api_base_url\": \"https://llm.abc.com/v1/chat/completions\",\n      \"api_key\": \"sk-iKSRTRTKMbNGSJudfds41Ab33A986C7B05e2d\",\n      \"models\": [\"Qwen3\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"qwen3,Qwen3\",\n    \"background\": \"qwen3,Qwen3\",\n    \"think\": \"qwen3,Qwen3\",\n    \"longContext\": \"qwen3,Qwen3\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"qwen3,Qwen3\"\n  }\n}\n已经加了 \"enhancetool\"还是会报错Invalid tool parameters",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/654/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/653",
      "id": 3338658046,
      "node_id": "I_kwDON-_mZc7G_-D-",
      "number": 653,
      "title": "微信交流群超过200人了，加不进，希望可以有能加交流群的办法",
      "user": {
        "login": "AXing567",
        "id": 115675100,
        "node_id": "U_kgDOBuUP3A",
        "avatar_url": "https://avatars.githubusercontent.com/u/115675100?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AXing567",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-20T15:53:12Z",
      "updated_at": "2025-11-20T09:23:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "飞书感觉不错，有那种五千人大群",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/653/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/652",
      "id": 3338011759,
      "node_id": "I_kwDON-_mZc7G9gRv",
      "number": 652,
      "title": "GPT-5 crashes with 'Unknown parameter: reasoning' in 'think mode'",
      "user": {
        "login": "paifas",
        "id": 59743452,
        "node_id": "MDQ6VXNlcjU5NzQzNDUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/59743452?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/paifas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-20T12:49:10Z",
      "updated_at": "2025-08-30T18:53:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\nSummary\n\nThe application crashes with an API Error: 400 when a user attempts to enter \"think mode.\" The error message indicates an \"Unknown parameter: 'reasoning',\" which seems to be sent only during this specific mode. The app works as expected for simple conversational prompts.\n\nSteps to Reproduce\n\n1.     Start the application. \n2.     Type a simple message like hi and press Enter. \n3.     Observe that the application responds normally. \n4.     Type lets think and press Enter. \n\nActual Behavior\n\n1. The application crashes and the following conversation and displays the error:\n\nUser: > hi\n\nCC: ● What would you like to think or plan about? Please specify your goal or the area you'd like to focus on.\n\n\nUser: > lets think\n\n CC: ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: \n   \\\"reasoning\\\".\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"reasoning\\\",\\n    \\\"code\\\": \\\"unknown_parameter\\\"\\n  \n    }\\n}Error: Error from provider(400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: 'reasoning'.\\\",\\n    \\\"type\\\": \n    \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"reasoning\\\",\\n    \\\"code\\\": \\\"unknown_parameter\\\"\\n  }\\n}\\n    at bt \n    (/home/bla/.nvm/versions/node/v24.5.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74721:11)\\n    at u0 \n    (/home/bla/.nvm/versions/node/v24.5.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74779:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async s0 (/home/bla/.nvm/versions/node/v24.5.0/\n    lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74746:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n\nExpected Behavior\n\nThe application should successfully enter \"think mode\" and prompt the user for a new input without crashing. The API should accept the request.\n\nProposed Fix\n\nThe error message explicitly states that the reasoning parameter is unknown. The code for \"think mode\" needs to be updated to either remove this parameter from the API request or replace it with the correct parameter name as specified by the API's documentation.\n\nExtra information\n\nI have the maxcompletiontokens transformer included in my config.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/652/reactions",
        "total_count": 12,
        "+1": 12,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/649",
      "id": 3337318077,
      "node_id": "I_kwDON-_mZc7G6269",
      "number": 649,
      "title": "qwen 3 behind liteLLM - need a custom transformer ?",
      "user": {
        "login": "vodnok",
        "id": 3914772,
        "node_id": "MDQ6VXNlcjM5MTQ3NzI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3914772?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vodnok",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-20T09:28:17Z",
      "updated_at": "2025-08-20T09:28:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\nI'm not able to use CCR with qwen 3 behind liteLLM. I've try different builtin transformer even  tried to create my own transformer\n\n\nDo i need a custom transformer or use a built-in ? \n\n\nHere is the error message\n\n```\nAPI Error (500)\n\nError from provider (llm-onprem, qwen3_cline_roocode:30b: 500):\n\nlitellm.APIConnectionError: 'str' object has no attribute 'get'\n\nTraceback (most recent call last):\n  File \"/usr/lib/python3.13/site-packages/litellm/main.py\", line 3083, in completion\n    response = base_llm_http_handler.completion(model=model, ...)\n  File \"/usr/lib/python3.13/site-packages/litellm/llms/custom_httpx/llm_http_handler.py\", line 329, in completion\n    data = provider_config.transform_request(model=model, ...)\n  File \"/usr/lib/python3.13/site-packages/litellm/llms/ollama/completion/transformation.py\", line 342, in transform_request\n    modified_prompt = ollama_pt(model=model, messages=messages)\n  File \"/usr/lib/python3.13/site-packages/litellm/litellm_core_utils/prompt_templates/factory.py\", line 222, in ollama_pt\n    system_content_str, msg_i = _handle_ollama_system_message(messages, prompt, msg_i)\n  File \"/usr/lib/python3.13/site-packages/litellm/litellm_core_utils/prompt_templates/factory.py\", line 180, in _handle_ollama_system_message\n    msg_content = convert_content_list_to_str(messages[msg_i])\n  File \"/usr/lib/python3.13/site-packages/litellm/litellm_core_utils/prompt_templates/common_utils.py\", line 132, in convert_content_list_to_str\n    text_content = c.get(\"text\")\nAttributeError: 'str' object has no attribute 'get'\n\nReceived Model Group = qwen3_cline_roocode:30b\nAvailable Model Group Fallbacks = None\n\n---\n\nNode stack trace:\n    at nt (/home/teamdev/.nvm/versions/node/v24.1.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75644:11)\n    at u0 (/home/teamdev/.nvm/versions/node/v24.1.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75702:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async o0 (/home/teamdev/.nvm/versions/node/v24.1.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75669:84)\n\nType: api_error\nCode: provider_response_error\n\nRetrying in 2 seconds… (attempt 3/10)\n```\n\nThx",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/649/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/646",
      "id": 3336390572,
      "node_id": "I_kwDON-_mZc7G3Ues",
      "number": 646,
      "title": "Azure OpenAI models don't work. Error says \"The api key does not exist or is disabled\", but the key is valid.",
      "user": {
        "login": "jwliao-ai",
        "id": 98302131,
        "node_id": "U_kgDOBdv4sw",
        "avatar_url": "https://avatars.githubusercontent.com/u/98302131?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jwliao-ai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-20T03:05:57Z",
      "updated_at": "2025-08-20T03:24:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n{\n  \"APIKEY\": \"your-secret-key\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"azure\",\n      \"api_base_url\": \"https://------/openai/deployments/gpt-4o-mini/chat/completions?api-version=2025-04-01-preview\",\n      \"api_key\": \"my_valid_api_key\",\n      \"models\": [\"gpt-4o-mini\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ],\n        \"gpt-4o-mini\": {\n          \"use\": [\"reasoning\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"azure,gpt-4o-mini\"\n  },\n```\n\nMy config.json is like above, but got an error like:\n\n```\nAPI Error (500 {\"error\":{\"message\":\"Provider error: {\\\"data\\\":\\\"request_error\\\",\\\"code\\\":\\\"invalid_request\\\",\\\"message\\\":\\\"The api key does not exist or is disabled.\\\"}Error: Provider error: {\\\"data\\\":\\\"request_error\\\",\\\"code\\\":\\\"invalid_request\\\",\\\"message\\\":\\\"The api key does not exist or is disabled.\\\"}\\n \n```\n\nHowever, I tested my api key using the script below:\n\n```import os\nfrom openai import AzureOpenAI\nclient = AzureOpenAI(\n    azure_endpoint = \"https://------/\",\n    api_key='my_valid_api_key',\n    api_version=\"2025-04-01-preview\"\n)\nresponse = client.chat.completions.create(\n        model=\"gpt-4o-mini\",  # use model in list[gpt-4o, gpt-4o-mini, o1, o3-mini, o3, o4-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano]\n        messages=[\n            {\n                \"role\": \"system\",\n                \"content\": \"Assistant is a large language model trained by OpenAI.\",\n            },\n            {\"role\": \"user\", \"content\": \"Who were the founders of Microsoft?\"},\n        ],\n    )\nprint(response.choices[0].message.content)\n```\n\nAnd the test passes, which means the api key is valid.\n\nI am wondering if the `api_base_url` in my config for Azure service is correct or not.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/646/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/645",
      "id": 3336266334,
      "node_id": "I_kwDON-_mZc7G22Je",
      "number": 645,
      "title": "claude-code-router连接不了Gemini",
      "user": {
        "login": "yanandkai",
        "id": 131978897,
        "node_id": "U_kgDOB93WkQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/131978897?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanandkai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 19,
      "created_at": "2025-08-20T01:36:59Z",
      "updated_at": "2025-12-06T04:05:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  API Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at node:internal/deps/undici/undici:13510:13\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async u0 (C:\\\\Users\\\\XXX\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74776:11)\\n    at async s0 (C:\\\\Users\\\\XXX\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74746:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 34 seconds… (attempt 9/10)这个问题大家有遇到过吗，不知道怎么解决，不是用的中转",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/645/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/644",
      "id": 3335581955,
      "node_id": "I_kwDON-_mZc7G0PED",
      "number": 644,
      "title": "maxcompletiontokens 不起作用",
      "user": {
        "login": "tinyviber",
        "id": 134081204,
        "node_id": "U_kgDOB_3qtA",
        "avatar_url": "https://avatars.githubusercontent.com/u/134081204?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tinyviber",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-19T20:22:03Z",
      "updated_at": "2025-08-20T13:14:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "无论是用 maxcompletiontokens, 还是自定义了一个 transformer ， 在日志里面都仍然是 max_token 报错，下面看起来是转换了: \n\n```json\n{\n  \"level\": 20,\n  \"time\": 1755633523742,\n  \"pid\": 35952,\n  \"hostname\": \"xxx\",\n  \"request\": {\n    \"method\": \"POST\",\n    \"headers\": {},\n    \"body\": \"{前面一坨...,\\\"max_completion_tokens\\\":32000}\",\n    \"signal\": {},\n    \"dispatcher\": {\n      \"_events\": {},\n      \"_eventsCount\": 0\n    }\n  },\n  \"headers\": {\n    \"authorization\": \"Bearer xxx\",\n    \"content-type\": \"application/json\"\n  },\n  \"requestUrl\": \"xxx\",\n  \"useProxy\": \"http://localhost:7890\",\n  \"msg\": \"final request\"\n}\n```\n\n这个pid报错:\n```json\n{\n  \"level\": 50,\n  \"time\": 1755633526726,\n  \"pid\": 35952,\n  \"hostname\": \"xxx\",\n  \"reqId\": \"req-2\",\n  \"err\": {\n    \"type\": \"Error\",\n    \"message\": \"Error from provider(new-api,gpt-5-mini: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead. (request id: 20250820035846772079436Ae6eQwSP)\\\",\\\"localized_message\\\":\\\"Unknown error\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"max_tokens\\\",\\\"code\\\":\\\"unsupported_parameter\\\"}}\",\n    \"stack\": \"Error: Error from provider(new-api,gpt-5-mini: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead. (request id: 20250820035846772079436Ae6eQwSP)\\\",\\\"localized_message\\\":\\\"Unknown error\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"max_tokens\\\",\\\"code\\\":\\\"unsupported_parameter\\\"}}\\n    at nt (\\\\cli.js:75644:11)\\n    at u0 (\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 (\\\\cli.js:75669:84)\",\n    \"statusCode\": 400,\n    \"code\": \"provider_response_error\"\n  },\n  \"msg\": \"Error from provider(new-api,gpt-5-mini: 400): {\\\"error\\\":{\\\"message\\\":\\\"Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead. (request id: 20250820035846772079436Ae6eQwSP)\\\",\\\"localized_message\\\":\\\"Unknown error\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"max_tokens\\\",\\\"code\\\":\\\"unsupported_parameter\\\"}}\"\n}\n```\n\n\n目前的配置:\n\n```\n    {\n      \"name\": \"new-api\",\n      \"api_base_url\": \"xxx\",\n      \"api_key\": \"xxx\",\n      \"models\": [\n        \"gpt-4.1-nano\",\n        \"o4-mini\",\n        \"gpt-5-mini\",\n        \"gpt-4.1-mini\",\n        \"gpt-5-mini-2025-08-07\"\n      ],\n      \"transformer\": {\n        \"use\": [\"maxcompletiontokens\"]\n      }\n    }\n```\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/644/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/642",
      "id": 3335557729,
      "node_id": "I_kwDON-_mZc7G0JJh",
      "number": 642,
      "title": "Enhancement: Add secure API key management via ccr config command",
      "user": {
        "login": "didgeoridoo",
        "id": 1407036,
        "node_id": "MDQ6VXNlcjE0MDcwMzY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1407036?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/didgeoridoo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-19T20:12:19Z",
      "updated_at": "2025-08-19T20:12:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem\nCurrently, users must manage API keys through environment variables or hardcode them in config.json, which is cumbersome and can be insecure.\n\n## Proposed Solution\nAdd a new `ccr config` command that provides secure storage for API keys, following the same conventions as SSH, AWS CLI, npm, and Docker.\n\n## Features\n- Store API keys securely in `~/.claude-code-router/keys` with 0600 permissions\n- Simple commands: `ccr config set/get/list/delete <provider>`\n- Keys take precedence over environment variables\n- Backward compatible - env vars still work as fallback\n- Easy migration path from environment variables\n\n## Implementation\nPR incoming with a clean abstraction that supports multiple storage backends. Initial implementation uses file-based storage with Unix permissions. Future enhancement can add OS keychain support.\n\n## Example Usage\n```bash\n# Store an API key\nccr config set cerebras\n\n# Migrate from environment variable\necho $CEREBRAS_API_KEY | ccr config set cerebras\n\n# List configured providers\nccr config list\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/642/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        643
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/641",
      "id": 3335444431,
      "node_id": "I_kwDON-_mZc7GztfP",
      "number": 641,
      "title": "agents complain model is invalid",
      "user": {
        "login": "ak127a",
        "id": 31799736,
        "node_id": "MDQ6VXNlcjMxNzk5NzM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/31799736?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ak127a",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-19T19:27:08Z",
      "updated_at": "2025-08-20T03:35:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n[DEBUG] Agent file /home/ak/.claude/agents/rust-pro.md has invalid model 'qwen3-coder-plus'. Valid options: sonnet, opus, haiku, sonnet[1m], opusplan, inherit\n[DEBUG] Agent file /home/ak/.claude/agents/prompt-engineer.md has invalid model 'qwen3-coder-plus'. Valid options: sonnet, opus, haiku, sonnet[1m], opusplan, inherit\n[DEBUG] Agent file /home/ak/.claude/agents/seo-cannibalization-detector.md has invalid model 'qwen3-coder-plus'. Valid options: sonnet, opus, haiku, sonnet[1m], opusplan, inherit\n[DEBUG] Agent file /home/ak/.claude/agents/reference-builder.md has invalid model 'qwen3-coder-plus'. Valid options: sonnet, opus, haiku, sonnet[1m], opusplan, inherit\n```\n\nany way to fix this?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/641/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/639",
      "id": 3334294357,
      "node_id": "I_kwDON-_mZc7GvUtV",
      "number": 639,
      "title": "Claude Code Router interupted by empty response from api",
      "user": {
        "login": "iorichina",
        "id": 3908200,
        "node_id": "MDQ6VXNlcjM5MDgyMDA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3908200?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iorichina",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-19T12:59:31Z",
      "updated_at": "2025-11-25T01:39:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "$ ccr start\n⚠️ API key is not set. HOST is forced to 127.0.0.1.\n127.0.0.1\nLoaded JSON config from: /home/iorichina/.claude-code-router/config.json\n\n\n\nWarning: No content in the stream response!\n\n/home/iorichina/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:10457\n        throw new FST_ERR_REP_INVALID_PAYLOAD_TYPE(typeof payload);\n              ^\nFastifyError [Error]: Attempted to send payload of invalid type 'object'. Expected a string or Buffer.\n    at onSendEnd (/home/iorichina/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:10457:15)\n    at wrapOnSendEnd (/home/iorichina/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:10384:9)\n    at next (/home/iorichina/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3718:11)\n    at handleResolve (/home/iorichina/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:3733:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5) {\n  code: 'FST_ERR_REP_INVALID_PAYLOAD_TYPE',\n  statusCode: 500\n}\n\nNode.js v22.18.0\n$\n\nThe same issue as `ccr start` while runing `ccr ui`\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/639/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/638",
      "id": 3334261995,
      "node_id": "I_kwDON-_mZc7GvMzr",
      "number": 638,
      "title": "ccr code 报错 无法启动",
      "user": {
        "login": "zjiawen123",
        "id": 221670591,
        "node_id": "U_kgDODTZsvw",
        "avatar_url": "https://avatars.githubusercontent.com/u/221670591?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zjiawen123",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-19T12:49:29Z",
      "updated_at": "2025-08-21T07:26:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"554\" height=\"299\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/5b628cc8-9b69-475c-b5b0-1855dced0154\" />\n\n<img width=\"889\" height=\"685\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e842257d-aceb-4d87-b4e5-32c458a6a2b9\" /> \n\n不知道什么原因 配置文件内容 配置文件地址都是正确的",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/638/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/637",
      "id": 3334224403,
      "node_id": "I_kwDON-_mZc7GvDoT",
      "number": 637,
      "title": "[Feature Request] Add Poe API support to fix Gemini API instability Body:",
      "user": {
        "login": "wangyunjeff",
        "id": 17672204,
        "node_id": "MDQ6VXNlcjE3NjcyMjA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/17672204?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wangyunjeff",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-19T12:37:43Z",
      "updated_at": "2025-08-20T14:26:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi devs,\n\nThe native Gemini API has been really unreliable lately, with a lot of empty or truncated responses.\n\nI've found that calling Gemini through the Poe API is far more stable. Here's the link to their docs:\n[https://creator.poe.com/docs/external-applications/openai-compatible-api](https://www.google.com/url?sa=E&q=https%3A%2F%2Fcreator.poe.com%2Fdocs%2Fexternal-applications%2Fopenai-compatible-api)\n\nTheir API is OpenAI-compatible, so it seems like it should be an easy fix. However, I've spent a fair amount of time trying to get it working myself but haven't had any success.\n\nCould you please consider adding official support for the Poe API? It would be a great alternative for everyone currently struggling with the Gemini API issues.\n\nThanks",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/637/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/636",
      "id": 3334050247,
      "node_id": "I_kwDON-_mZc7GuZHH",
      "number": 636,
      "title": "用第三方或者gemini Balance都会出现聊一半就没了",
      "user": {
        "login": "pitey520",
        "id": 61526790,
        "node_id": "MDQ6VXNlcjYxNTI2Nzkw",
        "avatar_url": "https://avatars.githubusercontent.com/u/61526790?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pitey520",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-08-19T11:41:19Z",
      "updated_at": "2025-09-02T04:15:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"Transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"rn2-gemini\",\n      \"api_base_url\": \"https://xxxxx/v1beta/models/\",\n      \"api_key\": \"st-xxxxxxxxx\",\n      \"models\": [\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    },\n  ],\n  \"Router\": {\n    \"default\": \"rn2-gemini,gemini-2.5-pro\",\n    \"background\": \"rn2-gemini,gemini-2.5-pro\",\n    \"think\": \"rn2-gemini,gemini-2.5-pro\",\n    \"longContext\": \"rn2-gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"rn2-gemini,gemini-2.5-pro\"\n  }\n}\n换了gpt load也是一样，有时候还能执行一会，有时候马上就自己停了。是我哪里配置不对吗，各位有没有遇到过？\n\n<img width=\"783\" height=\"422\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/43306696-87f3-4209-8ad6-3fd8f4497768\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/636/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/635",
      "id": 3333956232,
      "node_id": "I_kwDON-_mZc7GuCKI",
      "number": 635,
      "title": "windows系统执行ccr start 日志返回 undefined",
      "user": {
        "login": "KoyeeLin",
        "id": 17540878,
        "node_id": "MDQ6VXNlcjE3NTQwODc4",
        "avatar_url": "https://avatars.githubusercontent.com/u/17540878?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/KoyeeLin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-19T11:11:08Z",
      "updated_at": "2025-08-20T15:51:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"808\" height=\"76\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d8b0e61c-5a3c-4b05-aff1-74475eda8002\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/635/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/634",
      "id": 3333724683,
      "node_id": "I_kwDON-_mZc7GtJoL",
      "number": 634,
      "title": "feature: Support cloudflare worker deployment",
      "user": {
        "login": "yuyu1025",
        "id": 53509788,
        "node_id": "MDQ6VXNlcjUzNTA5Nzg4",
        "avatar_url": "https://avatars.githubusercontent.com/u/53509788?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yuyu1025",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-19T09:58:20Z",
      "updated_at": "2025-11-23T09:55:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Under normal circumstances, maintaining a server environment for this purpose is not very practical. Deploying it using Cloudflare Workers can greatly improve usability.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/634/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/631",
      "id": 3332717677,
      "node_id": "I_kwDON-_mZc7GpTxt",
      "number": 631,
      "title": "Error from provider",
      "user": {
        "login": "codyuan",
        "id": 87958812,
        "node_id": "MDQ6VXNlcjg3OTU4ODEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/87958812?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/codyuan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-19T03:01:45Z",
      "updated_at": "2025-08-19T03:02:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This is my config.json:\n```\n  {\n      \"LOG\": false,\n      \"Providers\": [\n          {\n              \"name\": \"modelscope\",\n              \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n              \"api_key\": \"ms-xxx\",\n              \"models\": [\"Qwen/Qwen3-Coder-480B-A35B-Instruct\"]\n          }\n      ],\n      \"Router\": {\n          \"default\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n      }\n  }\n```\n\nWhen I run \"ccr code\" and try \"/init\", the error occurs:\n ```\n╭───────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                         │\n│                                                   │\n│   /help for help, /status for your current setup  │\n│                                                   │\n│   cwd: C:\\Users\\yuanye\\Desktop\\proposal_page      │\n│                                                   │\n│   ─────────────────────────────────────────────── │\n│                                                   │\n│   Overrides (via env):                            │\n│                                                   │\n│   • API timeout: 600000ms                         │\n│   • API Base URL: http://127.0.0.1:3456           │\n╰───────────────────────────────────────────────────╯\n\n> /init\n  ⎿ API Error: 404 {\"error\":{\"message\":\"Error from \n    provider(qwen3-coder,Qwen/Qwen3-Coder-480B-A35B-Instruct: 404): \n    <html>\\r\\n<head><title>404 Not \n    Found</title></head>\\r\\n<body>\\r\\n<center><h1>404 Not Found</h1></center>\\r\\n<\n    hr><center>nginx</center>\\r\\n</body>\\r\\n</html>\\r\\nError: Error from \n    provider(qwen3-coder,Qwen/Qwen3-Coder-480B-A35B-Instruct: 404): \n    <html>\\r\\n<head><title>404 Not\n    Found</title></head>\\r\\n<body>\\r\\n<center><h1>404 Not\n    Found</h1></center>\\r\\n<hr><center>nginx</center>\\r\\n</body>\\r\\n</html>\\r\\n\\n      \n       at nt (C:\\\\Users\\\\yuanye\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\     \n    \\claude-code-router\\\\dist\\\\cli.js:75644:11)\\n    at u0\n    (C:\\\\Users\\\\yuanye\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-c     \n    ode-router\\\\dist\\\\cli.js:75702:11)\\n    at process.processTicksAndRejections       \n    (node:internal/process/task_queues:105:5)\\n    at async s0 (C:\\\\Users\\\\yuanye\\     \n    \\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\c     \n    li.js:75669:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/631/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/630",
      "id": 3332715761,
      "node_id": "I_kwDON-_mZc7GpTTx",
      "number": 630,
      "title": "api报错配置没有问题一直报错",
      "user": {
        "login": "hhyasl",
        "id": 80163450,
        "node_id": "MDQ6VXNlcjgwMTYzNDUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/80163450?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hhyasl",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-19T03:00:48Z",
      "updated_at": "2025-08-19T03:00:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://mp.weixin.qq.com/s/x-vSg8RqtPvpRgfA1iWVPQ 魔搭社区可以直接调用了",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/630/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/629",
      "id": 3332386464,
      "node_id": "I_kwDON-_mZc7GoC6g",
      "number": 629,
      "title": "feat: support 一体化 andrepimenta/claude-code-chat",
      "user": {
        "login": "elasticdotventures",
        "id": 35611074,
        "node_id": "MDQ6VXNlcjM1NjExMDc0",
        "avatar_url": "https://avatars.githubusercontent.com/u/35611074?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/elasticdotventures",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-18T23:13:16Z",
      "updated_at": "2025-08-18T23:13:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\nClaude Code Chat 是 VS Code 中比 Anthropic Claude 更好的替代品。\nClaude Code Chat is an alternative (better) than Anthropic Claude inside VS Code ide.\n\nPlease review and comment on your willingness to collaborate on integration:\n👀 https://github.com/andrepimenta/claude-code-chat/issues/66\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/629/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/628",
      "id": 3331597277,
      "node_id": "I_kwDON-_mZc7GlCPd",
      "number": 628,
      "title": "api_error and internal_error",
      "user": {
        "login": "rockymount114",
        "id": 132082878,
        "node_id": "U_kgDOB99svg",
        "avatar_url": "https://avatars.githubusercontent.com/u/132082878?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rockymount114",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-18T17:50:49Z",
      "updated_at": "2025-08-19T23:26:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我是Windows系统。\n\n用命令 claude可以直接启动，但用ccr code虽然可以启动看到代理界面，但输入任何信息都显示api_error和internal_error.\nAPI key 和base url都是设置正确的\n\nlog file as\n[2025-08-18T17:39:52.674Z] register transformer: Anthropic (endpoint: /v1/messages)\n[2025-08-18T17:39:52.675Z] register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\n[2025-08-18T17:39:52.675Z] register transformer: deepseek (no endpoint)\n[2025-08-18T17:39:52.675Z] register transformer: tooluse (no endpoint)\n[2025-08-18T17:39:52.675Z] register transformer: openrouter (no endpoint)\n[2025-08-18T17:39:52.675Z] register transformer: maxtoken (no endpoint)\n[2025-08-18T17:39:52.679Z] gemini provider registered\n[2025-08-18T17:39:52.714Z] 🚀 LLMs API server listening on http://127.0.0.1:3456\n[2025-08-18T17:39:54.803Z] Error in router middleware: Cannot read properties of undefined (reading 'background')\n[2025-08-18T17:39:55.419Z] Error in router middleware: Cannot read properties of undefined (reading 'background')\n[2025-08-18T17:39:56.529Z] Error in router middleware: Cannot read properties of undefined (reading 'background')\n[2025-08-18T17:39:58.192Z] Error in router middleware: Cannot read properties of undefined (reading 'background')\n[2025-08-18T17:39:58.236Z] Error in router middleware: Cannot read properties of undefined (reading 'default')\n[2025-08-18T17:39:58.250Z] Error in router middleware: Cannot read properties of undefined (reading 'default')\n\n我的 config.json就设置了一个GEMINI，配置如下\n\n{\n  \"LOG\": true,\t\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"$GEMINI_API_KEY\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ]\n}\n\n<img width=\"1740\" height=\"622\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/78464aca-4e6c-4bf2-a457-86314f544d00\" />\n\n 在cmd中是可以显示key的内容的",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/628/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/626",
      "id": 3330933183,
      "node_id": "I_kwDON-_mZc7GigG_",
      "number": 626,
      "title": "新鲜热辣：ccr code启动失败1.0.40版本-windows系统",
      "user": {
        "login": "ktw007",
        "id": 155139716,
        "node_id": "U_kgDOCT8-hA",
        "avatar_url": "https://avatars.githubusercontent.com/u/155139716?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ktw007",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-18T14:18:26Z",
      "updated_at": "2025-08-19T00:33:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claude-code-router version: 1.0.40\nPS E:\\Tooldev\\wordformat> ccr start\nundefined\nLoaded JSON config from: C:\\Users\\Administrator\\.claude-code-router\\config.json\nReceived SIGINT, cleaning up...\nPS E:\\Tooldev\\wordformat> ccr code \nService not running, starting service...\n命令行太长。\nclaude code router service has been successfully stopped.\nPS E:\\Tooldev\\wordformat> ccr start\nundefined\nLoaded JSON config from: C:\\Users\\Administrator\\.claude-code-router\\config.json\nReceived SIGINT, cleaning up...\nPS E:\\Tooldev\\wordformat> ccr code \nService not running, starting service...\n命令行太长。\nclaude code router service has been successfully stopped.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/626/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/625",
      "id": 3330445544,
      "node_id": "I_kwDON-_mZc7GgpDo",
      "number": 625,
      "title": "用modelscope的kimi-k2工作一段时间之后会停止输出",
      "user": {
        "login": "dhls201",
        "id": 76259181,
        "node_id": "MDQ6VXNlcjc2MjU5MTgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/76259181?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dhls201",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-18T12:11:02Z",
      "updated_at": "2025-08-18T12:43:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"2472\" height=\"799\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/15d76540-5a34-4bbb-9eab-187c491a8483\" />\n是上下文长度的原因吗，这个代码文件挺长的两千多行，是到达上限之后自动停止了吗",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/625/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/622",
      "id": 3329893894,
      "node_id": "I_kwDON-_mZc7GeiYG",
      "number": 622,
      "title": "不管是gemini，还是anyroute 还是glm4.5都用不了",
      "user": {
        "login": "hzcoolwind",
        "id": 38251412,
        "node_id": "MDQ6VXNlcjM4MjUxNDEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/38251412?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hzcoolwind",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-18T09:16:47Z",
      "updated_at": "2025-08-19T05:46:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "gemini 按示例配置，base api 改 带{model}:generateContent 都不行啊。 都提示：\n\n Overrides (via env):                                            │\n│                                                                   │\n│   • API Base URL: http://127.0.0.1:3456                           │\n╰───────────────────────────────────────────────────────────────────╯\n\n> hi\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 2/10)\n    ⎿  TypeError (fetch failed)\n\n\nclaude code： 1.0.83\nccr:   1.0.39",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/622/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/621",
      "id": 3329823265,
      "node_id": "I_kwDON-_mZc7GeRIh",
      "number": 621,
      "title": "Some error",
      "user": {
        "login": "TankiClassic25",
        "id": 98331606,
        "node_id": "U_kgDOBdxr1g",
        "avatar_url": "https://avatars.githubusercontent.com/u/98331606?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TankiClassic25",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-18T08:58:41Z",
      "updated_at": "2025-08-18T09:26:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading '0')TypeError: Cannot read properties of undefined (reading '0')\\n    at bs.convertOpenAIResponseToAnthropic (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75303:22)\\n    at bs.transformResponseIn (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:75056:40)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async c0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74787:46)\\n    at async s0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74746:116)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 9 seconds… (attempt 5/10)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/621/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/615",
      "id": 3329123397,
      "node_id": "I_kwDON-_mZc7GbmRF",
      "number": 615,
      "title": "状态栏的使用情况未刷新",
      "user": {
        "login": "snakemelonwiki",
        "id": 42891915,
        "node_id": "MDQ6VXNlcjQyODkxOTE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/42891915?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/snakemelonwiki",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-18T04:30:40Z",
      "updated_at": "2025-08-18T04:30:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1920\" height=\"1032\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f162f3be-13c4-4650-9280-d205ddf9a3c8\" />\n\n多次请求模型，使用情况的数据都没有刷新\n\n版本：1.0.39\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/615/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/614",
      "id": 3328991666,
      "node_id": "I_kwDON-_mZc7GbGGy",
      "number": 614,
      "title": "请问 transformer 块的自定义有教程吗？文档太含糊了，也找不到脚本示例",
      "user": {
        "login": "BiFangKNT",
        "id": 93891533,
        "node_id": "U_kgDOBZirzQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/93891533?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BiFangKNT",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 22,
      "created_at": "2025-08-18T02:56:22Z",
      "updated_at": "2025-08-28T15:53:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/614/reactions",
        "total_count": 3,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 3,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/611",
      "id": 3328602605,
      "node_id": "I_kwDON-_mZc7GZnHt",
      "number": 611,
      "title": "Resolve Gemini integration via custom transformer",
      "user": {
        "login": "rklugseder",
        "id": 11180370,
        "node_id": "MDQ6VXNlcjExMTgwMzcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/11180370?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rklugseder",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-17T19:24:42Z",
      "updated_at": "2025-08-19T13:48:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Summary\n\nThis PR adds a custom Gemini transformer that resolves systematic issues with the built-in Gemini integration, providing stable native Google Gemini API support.\n\n## Problem Statement\n\nThe current built-in Gemini integration has several critical issues affecting users:\n\n- **JSON Schema Incompatibility**: Tool schemas with `exclusiveMaximum`/`exclusiveMinimum` cause 400 errors\n- **URL Construction Issues**: Incorrect endpoint formatting leads to 404 errors  \n- **Authentication Conflicts**: Conflicting headers result in 401 errors\n- **Tool Support**: MCP tools completely non-functional with Gemini\n\n**Related Issues**: #235, #262, #143, #302\n\n## Solution\n\nCustom transformer that bypasses built-in implementation and provides direct Gemini API integration.\n\n### Key Features\n\n- ✅ **Schema Sanitization**: Removes Gemini-incompatible JSON schema fields\n- ✅ **Correct URL Construction**: Uses proper `{model}:generateContent` endpoints  \n- ✅ **Header Management**: Removes conflicting auth headers, uses `x-goog-api-key`\n- ✅ **Request/Response Transformation**: Full Claude ↔ Gemini format conversion\n- ✅ **Tool Support**: MCP tools work without schema conflicts\n- ✅ **Error Handling**: Proper Gemini error response mapping\n\n## Files Added\n- gemini-transformer.js     # Main transformer implementation\n\n## Usage\n\n### Installation\n```bash\n# Copy transformer to plugins directory\ncp transformers/gemini/gemini-transformer.js ~/.claude-code-router/plugins/\n\n# Update config.json\n```\n\n### Configuration\n```json\n{\n  \"transformers\": [\n    {\n      \"path\": \"~/.claude-code-router/plugins/gemini-transformer.js\",\n      \"options\": {\n        \"apiKey\": \"${GEMINI_API_KEY}\",\n        \"disableTools\": false,\n        \"debug\": false\n      }\n    }\n  ],\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"dummy\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": { \"use\": [\"gemini-custom\"] }\n    }\n  ]\n}\n```\n\n## Testing\n\n### Before (Built-in Integration)\n```\n❌ API Error: 400 - Invalid JSON payload (exclusiveMaximum)\n❌ API Error: 404 - URL construction issues  \n❌ API Error: 401 - Authentication conflicts\n❌ Tools completely broken\n```\n\n### After (Custom Transformer)  \n```\n✅ Schema sanitization working\n✅ API calls successful  \n✅ Authentication functional\n✅ Tools operational\n✅ Full chat functionality\n```\n\n### Test Commands\n```bash\n# Basic functionality test\n/model gemini,gemini-2.5-flash\n\"Hello, how are you?\"\n\n# Tool test (requires MCP tools configured)\n\"List files in current directory\"\n```\n\n## Technical Implementation\n\n### Schema Sanitization\n```javascript\nrecursiveSanitize(obj) {\n  // Remove Gemini-incompatible fields\n  delete obj.exclusiveMaximum;\n  delete obj.exclusiveMinimum;\n  delete obj.$schema;\n  delete obj.additionalProperties;\n  \n  // Fix format fields\n  if (obj.type === 'string' && obj.format) {\n    if (!['date', 'date-time'].includes(obj.format)) {\n      delete obj.format;\n    }\n  }\n}\n```\n\n### URL Construction\n```javascript\n// Correct Gemini API endpoint format\nconst url = `${baseUrl}${model}:generateContent`;\n```\n\n### Authentication\n```javascript\nheaders: {\n  'Content-Type': 'application/json',\n  'x-goog-api-key': this.options.apiKey,\n  'Authorization': undefined  // Remove conflicting header\n}\n```\n\n## Backward Compatibility\n\n- ✅ No changes to existing CCR core functionality\n- ✅ Built-in Gemini integration remains available\n- ✅ Users can choose between built-in or custom transformer\n- ✅ All CCR features (routing, logging, model switching) work normally\n\n## Benefits\n\n1. **Resolves Multiple Issues**: Addresses #235, #262, #143, #302 and related problems\n2. **Production Ready**: Tested and stable implementation\n3. **Cost Effective**: Enables free native Gemini API usage  \n4. **Tool Compatible**: Full MCP tool support without schema conflicts\n5. **Maintainable**: Clean, documented code with clear separation of concerns\n\n## Future Considerations\n\n- Could be integrated into core CCR as improved built-in Gemini support\n- Streaming support could be added in future iterations\n- Additional Gemini-specific features (function calling improvements) could be implemented\n\n## Checklist\n\n- [x] Code follows project conventions\n- [x] Documentation updated\n- [x] Example configuration provided  \n- [x] Integration tests included\n- [x] Backward compatibility maintained\n- [x] Related issues addressed\n\n---\n\n**This transformer provides immediate resolution for users experiencing Gemini integration issues while maintaining full CCR compatibility.**\n\n[gemini-transformer.js](https://github.com/user-attachments/files/21824212/gemini-transformer.js)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/611/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/610",
      "id": 3328492545,
      "node_id": "I_kwDON-_mZc7GZMQB",
      "number": 610,
      "title": "⚠Auth conflict: Using ANTHROPIC_API_KEY instead of Anthropic Console key. Either unset ANTHROPIC_API_KEY, or run `claude   /logout`.",
      "user": {
        "login": "1506Eden",
        "id": 208307138,
        "node_id": "U_kgDODGqDwg",
        "avatar_url": "https://avatars.githubusercontent.com/u/208307138?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/1506Eden",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-17T16:57:04Z",
      "updated_at": "2025-08-28T14:02:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I login on claude code via antropic api using the link \nthen configered my config file as follows via ccr ui\n\n{\n  \"LOG\": true,\n  \"LOG_LEVEL\": \"info\",\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"http://localhost:1234/v1/chat/completions\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"lmstudio\",\n      \"api_base_url\": \"http://localhost:1234/v1/chat/completions\",\n      \"api_key\": \"lmstudio\",\n      \"models\": [\n        \"unsloth/Qwen3-30B-A3B-Instruct-2507-Q5_K_S.gguf\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384\n            }\n          ],\n          \"openrouter\"\n        ]\n      }\n    }\n  ],\n  \"StatusLine\": {\n    \"enabled\": false,\n    \"currentStyle\": \"default\",\n    \"default\": {\n      \"modules\": []\n    },\n    \"powerline\": {\n      \"modules\": []\n    }\n  },\n  \"Router\": {\n    \"default\": \"lmstudio,unsloth/Qwen3-30B-A3B-Instruct-2507-Q5_K_S.gguf\",\n    \"background\": \"lmstudio,unsloth/Qwen3-30B-A3B-Instruct-2507-Q5_K_S.gguf\",\n    \"think\": \"lmstudio,unsloth/Qwen3-30B-A3B-Instruct-2507-Q5_K_S.gguf\",\n    \"longContext\": \"lmstudio,unsloth/Qwen3-30B-A3B-Instruct-2507-Q5_K_S.gguf\",\n    \"longContextThreshold\": 128000,\n    \"webSearch\": \"lmstudio,unsloth/Qwen3-30B-A3B-Instruct-2507-Q5_K_S.gguf\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/610/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/606",
      "id": 3327961320,
      "node_id": "I_kwDON-_mZc7GXKjo",
      "number": 606,
      "title": "[Feature Request] UI global model",
      "user": {
        "login": "Sn0wo2",
        "id": 152751263,
        "node_id": "U_kgDOCRrMnw",
        "avatar_url": "https://avatars.githubusercontent.com/u/152751263?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Sn0wo2",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-17T05:08:31Z",
      "updated_at": "2025-08-17T15:17:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In the UI, switching the model requires switching a series of models.\nIs it possible to add a global component to select all types of models?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/606/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/605",
      "id": 3327867241,
      "node_id": "I_kwDON-_mZc7GWzlp",
      "number": 605,
      "title": "硅基流动400报错",
      "user": {
        "login": "ZhangQL2824",
        "id": 132539273,
        "node_id": "U_kgDOB-ZjiQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/132539273?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZhangQL2824",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-17T02:45:12Z",
      "updated_at": "2025-08-18T14:49:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1887\" height=\"228\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b71f7801-cb33-4e17-a957-d4450b108bfd\" />\n昨天还用的好好的，今天早上起来就一直报400错误\n> {\n>   \"LOG\": false,\n>   \"OPENAI_API_KEY\": \"\",\n>   \"OPENAI_BASE_URL\": \"\",\n>   \"OPENAI_MODEL\": \"\",\n>   \"Providers\": [\n>     {\n>       \"name\": \"siliconflow\",\n>       \"api_base_url\": \"https://api.siliconflow.cn/v1/chat/completions\",\n>       \"api_key\": \"sk-*******\",\n>       \"models\": [\n>         \"Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n>       ]\n>     }\n>   ],\n>   \"Router\": {\n>     \"default\": \"siliconflow,Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n>   }\n> }\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/605/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/604",
      "id": 3327382168,
      "node_id": "I_kwDON-_mZc7GU9KY",
      "number": 604,
      "title": "modelScope  404报错",
      "user": {
        "login": "kylincn-2020",
        "id": 38076327,
        "node_id": "MDQ6VXNlcjM4MDc2MzI3",
        "avatar_url": "https://avatars.githubusercontent.com/u/38076327?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kylincn-2020",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-16T15:36:38Z",
      "updated_at": "2025-12-23T02:58:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "config.json的配置\n`{\n\t\"Providers\": [\n\t\t{\n\t\t\t\"name\": \"modelscope\",\n\t\t\t\"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n\t\t\t\"api_key\": \"ms-04a58138-fdca-4c73-aeda-818eaca4e3e9\",\n\t\t\t\"models\": [\n\t\t\t\t\"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n\t\t\t\t\"Qwen/Qwen3-235B-A22B-Thinking-2507\"\n\t\t\t],\n\t\t\t\"transformer\": {\n\t\t\t\t\"use\": [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"maxtoken\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"max_tokens\": 65536\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t],\n\t\t\t\t\"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n\t\t\t\t\t\"use\": [\n\t\t\t\t\t\t\"reasoning\"\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t],\n\t\"Router\": {\n\t\t\"default\": \"Qwen/Qwen3-Coder-480B-A35B-Instruct,Qwen/Qwen3-235B-A22B-Thinking-2507\",\n\t\t\"background\": \"\"\n\t}\n}`\n\n报错\n API Error: 404 {\"error\":{\"message\":\"Provider 'Qwen/Qwen3-Coder-480B-A35B-Instruct' not foundError: Provider\n    'Qwen/Qwen3-Coder-480B-A35B-Instruct' not found\\n    at bt (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\npm\\\\node_modul\n    es\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74721:11)\\n    at s0 (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\npm\n    \\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74745:17)\\n    at Object.<anonymous> (C:\\\\Users\\\\\n    admin\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74795:86)\\n    at\n    preHandlerCallbackInner (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\n    \\\\dist\\\\cli.js:4522:28)\\n    at preHandlerCallback\n    (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:4494:9)\\n\n        at next (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.\n    js:3661:13)\\n    at handleResolve (C:\\\\Users\\\\admin\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-c\n    ode-router\\\\dist\\\\cli.js:3676:11)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:105:5)\",\"type\":\"api_error\",\"code\":\"provider_not_found\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/604/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/603",
      "id": 3327253897,
      "node_id": "I_kwDON-_mZc7GUd2J",
      "number": 603,
      "title": "Doesn't seem to work on Ollama or lmstudio.似乎OLLAMA的API不支持？openrouter's API fails too.",
      "user": {
        "login": "frankshane",
        "id": 31478853,
        "node_id": "MDQ6VXNlcjMxNDc4ODUz",
        "avatar_url": "https://avatars.githubusercontent.com/u/31478853?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/frankshane",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-16T12:51:52Z",
      "updated_at": "2025-08-16T15:56:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I can successfully pass the test by using \"Curl -X\" to POST the endpoint /api/generate and /v1/chat/completions. But for CCR it always returns the error \"405 method not allowed\". When it comes to Lmstudio, the error becomes something wrong with the prompt template.\n\n用ollama时/api/generate and /v1/chat/completions这两个endpoint都报错405 method not allowed。\n\n此外，微信群二维码过期了，而且openrouter的api好像也用不了了。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/603/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/601",
      "id": 3326945298,
      "node_id": "I_kwDON-_mZc7GTSgS",
      "number": 601,
      "title": "Upgrade new claude code via npm i -g @anthropic-ai/claude-code, the ccr code can not works",
      "user": {
        "login": "CYsuncheng",
        "id": 7259018,
        "node_id": "MDQ6VXNlcjcyNTkwMTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7259018?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CYsuncheng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-16T06:19:18Z",
      "updated_at": "2025-08-24T08:43:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error (429 {\"error\":{\"message\":\"Error from provider(429): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\nError: Error from provider(429): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\n\\n    at bt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74721:11)\\n    at u0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74779:11)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74746:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n\nwhen i exit, the log show the model use default {claude-3-5-haiku}\n\nPress Ctrl-C again to exit\n\nTotal cost:            $0.0001\nTotal duration (API):  15.9s\nTotal duration (wall): 17.4s\nTotal code changes:    0 lines added, 0 lines removed\nUsage by model:\n    claude-3-5-haiku:  62 input, 6 output, 0 cache read, 0 cache write",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/601/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/599",
      "id": 3326576844,
      "node_id": "I_kwDON-_mZc7GR4jM",
      "number": 599,
      "title": "400报错",
      "user": {
        "login": "JACHINERIC",
        "id": 174848557,
        "node_id": "U_kgDOCmv6LQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/174848557?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JACHINERIC",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-15T23:28:05Z",
      "updated_at": "2025-08-21T01:30:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error: 400 {\"error\":{\"message\":\"Error from provider(400):\n  {\"error\":{\"message\":\"Provider returned\n  error\",\"code\":400,\"metadata\":{\"raw\":\"{\\\"message\\\":\\\"messages.3.content.2: tool_use ids must be unique\\\"}\",\"provider_name\":\"Amazon\n  Bedrock\"}},\"user_id\":\"user_31ITpWfI7NlZOwfCbrGJGfUeIiv\"}Error: Error from provider(400): {\"error\":{\"message\":\"Provider returned\n  error\",\"code\":400,\"metadata\":{\"raw\":\"{\\\"message\\\":\\\"messages.3.content.2: tool_use ids must be unique\\\"}\",\"provider_name\":\"Amazon\n  Bedrock\"}},\"user_id\":\"user_31ITpWfI7NlZOwfCbrGJGfUeIiv\"}\\n at bt\n  (C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:74721:11)\\n at u0\n  (C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:74779:11)\\n at\n  process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n at async o0 (C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@mu\n  sist",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/599/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/598",
      "id": 3326293508,
      "node_id": "I_kwDON-_mZc7GQzYE",
      "number": 598,
      "title": "glm会出现任务流程不继续执行的问题",
      "user": {
        "login": "eyepra",
        "id": 6872604,
        "node_id": "MDQ6VXNlcjY4NzI2MDQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6872604?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/eyepra",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-15T20:37:46Z",
      "updated_at": "2025-10-11T03:07:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请帮忙解决下如下问题，谢谢\n\n模型是使用魔搭的，配置文件设置为\n```\n{\n  \"LOG\": true,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"xxx\",\n      \"models\": [\"ZhipuAI/GLM-4.5\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"modelscope,ZhipuAI/GLM-4.5\",\n  }\n}\n```\n出现的问题是执行了部分任务后后续流程不走了，如下图所示\n\n<img width=\"555\" height=\"246\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6a85c5ff-9c12-4f59-8421-6f8dc54d8cba\" />\n\n此时输入框可以输入内容，尝试过输入让其继续执行任务，但进行了一些api交互后（看log似乎只是将历史交互上下文传输了一遍）最后又停下来，任务也没继续执行。\n\n一开始卡住的时候log最后的部分见末尾处，可以看到是计划创建create.html了，跟控制台显示的阶段吻合。\n\n多次尝试，虽然卡住的阶段会有所不同，但共性情况是卡住前最后一个请求的Response回复时间都是在请求发出的1分钟后收到，而且里面各个字段的值都是空的。\n```\n[2025-08-15T20:15:40.285Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\":\\n\"}}\n[2025-08-15T20:16:40.236Z] Original Response: {\n  \"id\": \"\",\n  \"object\": \"\",\n  \"created\": 0,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": null,\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n```\n\n试过换其它同在魔搭平台的模型，目前只试过Qwen/Qwen3-Coder-480B-A35B-Instruct，似乎没有这个卡住的情况\n\n卡住时最后的log：\n```\n[2025-08-15T20:15:40.266Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"Now\"}}\n[2025-08-15T20:15:40.268Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \" let\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.269Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" let\"}}\n[2025-08-15T20:15:40.270Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \" me\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.271Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" me\"}}\n[2025-08-15T20:15:40.273Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \" create\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.274Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" create\"}}\n[2025-08-15T20:15:40.276Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \" the\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.276Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" the\"}}\n[2025-08-15T20:15:40.278Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \" create\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.278Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" create\"}}\n[2025-08-15T20:15:40.279Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \".html\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.280Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\".html\"}}\n[2025-08-15T20:15:40.282Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \" page\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.283Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" page\"}}\n[2025-08-15T20:15:40.285Z] Original Response: {\n  \"id\": \"202508160415338a2c9fff4c9c487f\",\n  \"object\": \"\",\n  \"created\": 1755288933,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \":\\n\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      },\n      \"finish_reason\": null,\n      \"message\": {\n        \"role\": null,\n        \"content\": \"\",\n        \"tool_calls\": null,\n        \"function_calls\": null,\n        \"reasoning_content\": \"\"\n      }\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n[2025-08-15T20:15:40.285Z] send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\":\\n\"}}\n[2025-08-15T20:16:40.236Z] Original Response: {\n  \"id\": \"\",\n  \"object\": \"\",\n  \"created\": 0,\n  \"model\": \"ZhipuAI/GLM-4.5\",\n  \"system_fingerprint\": \"\",\n  \"choices\": null,\n  \"usage\": {\n    \"prompt_tokens\": 0,\n    \"completion_tokens\": 0,\n    \"total_tokens\": 0\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/598/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/596",
      "id": 3326158616,
      "node_id": "I_kwDON-_mZc7GQScY",
      "number": 596,
      "title": "Openai/Codex-CLI account",
      "user": {
        "login": "laurentj2",
        "id": 6226948,
        "node_id": "MDQ6VXNlcjYyMjY5NDg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6226948?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/laurentj2",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-15T19:45:33Z",
      "updated_at": "2025-11-30T18:54:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Use session token for openai plus/pro accounts with CC router like gemini CLI.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/596/reactions",
        "total_count": 20,
        "+1": 20,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/595",
      "id": 3326111063,
      "node_id": "I_kwDON-_mZc7GQG1X",
      "number": 595,
      "title": "Define plan model",
      "user": {
        "login": "laurentj2",
        "id": 6226948,
        "node_id": "MDQ6VXNlcjYyMjY5NDg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6226948?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/laurentj2",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-15T19:21:07Z",
      "updated_at": "2025-08-15T19:21:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The new Plan model (architect+coder mode) is great, could it be implemented in Claude Code Router? When Opus 4.1 is called for example GPT-5 with long thinking times can be used and GPT5-mini as quick code worker, best of both worlds..",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/595/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/594",
      "id": 3326035794,
      "node_id": "I_kwDON-_mZc7GP0dS",
      "number": 594,
      "title": "Anthropic Claude keeps overriding Gemini",
      "user": {
        "login": "amarbayar",
        "id": 8435370,
        "node_id": "MDQ6VXNlcjg0MzUzNzA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8435370?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/amarbayar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-15T18:46:06Z",
      "updated_at": "2025-08-16T23:48:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Thanks for working on this tool! It is indeed a great solution to a big known problem and enables a lot of developers achieve more. \n\nI have tried to use the CCR tool by following the doc and provided a very basic config for just 1 provider: Gemini:\n```\n  {\n    \"LOG\": true,\n    \"DEBUG\": true,\n    \"API_TIMEOUT_MS\": 600000,\n    \"NON_INTERACTIVE_MODE\": false,\n    \"Providers\": [\n      {\n        \"name\": \"gemini\",\n        \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n        \"api_key\": \"***\",\n        \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n        \"transformer\": {\n          \"use\": [\"gemini\"]\n        }\n      }\n    ],\n    \"Router\": {\n      \"default\": \"gemini,gemini-2.5-flash\"\n    }\n  }\n```\n\nAnd this is what I keep seeing:\n```\nccr code\nService not running, starting service...\n╭───────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                         │\n│                                                   │\n│   /help for help, /status for your current setup  │\n│                                                   │\n│   cwd: ***              │\n│                                                   │\n│   ─────────────────────────────────────────────── │\n│                                                   │\n│   Overrides (via env):                            │\n│                                                   │\n│   • API timeout: 600000ms                         │\n│   • API Base URL: http://127.0.0.1:3456           │\n╰───────────────────────────────────────────────────╯\n\n> Hi which LLM model are you?\n\n⏺ I am powered by the model named Sonnet 4. The exact model ID is claude-sonnet-4-20250514.\n```\n\nAnd I keep seeing token usage on my Claude model. I saw a massive spike on Gemini API usage (137K token usage on a few of this: \"hi\" requests which seems very strange). When I checked the log, I see the entire prompt for Claude model and Claude Code in the log, question I typed and nothing seems to have returned from Gemini for some reason even though Gemini recorded the tokens as used. And somehow it defaulted/fell back to Claude and asked Claude? \n\nIs there anything I am missing? And why are we sending the entire Claude instruction and Claude Code instruction to Gemini?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/594/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/593",
      "id": 3325893731,
      "node_id": "I_kwDON-_mZc7GPRxj",
      "number": 593,
      "title": "claude-code@1.0.81调用工具，出现400错误，换了很多provider同样问题",
      "user": {
        "login": "dahehua",
        "id": 24541149,
        "node_id": "MDQ6VXNlcjI0NTQxMTQ5",
        "avatar_url": "https://avatars.githubusercontent.com/u/24541149?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dahehua",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-15T17:41:55Z",
      "updated_at": "2025-08-18T14:55:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error: 400 {\"error\":{\"message\":\"Error from provider(400): \n    {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"r\n    aw\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"error\\\\\\\",\\\\\\\"error\\\\\\\":{\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request\n    _error\\\\\\\",\\\\\\\"message\\\\\\\":\\\\\\\"messages.1.content.2: `tool_use` ids must be \n    unique\\\\\\\"}}\\\",\\\"provider_name\\\":\\\"Google\\\"}},\\\"user_id\\\":\\\"org_2uwFc1szZKyZweUX7p\n    X97kXQf2O\\\"}Error: Error from provider(400): {\\\"error\\\":{\\\"message\\\":\\\"Provider \n    returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"error\\\\\\\",\n    \\\\\\\"error\\\\\\\":{\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request_error\\\\\\\",\\\\\\\"message\\\\\\\":\\\\\\\"mess\n    ages.1.content.2: `tool_use` ids must be unique\\\\\\\"}}\\\",\\\"provider_name\\\":\\\"Google\n    \\\"}},\\\"user_id\\\":\\\"org_2uwFc1szZKyZweUX7pX97kXQf2O\\\"}\\n  ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/593/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/591",
      "id": 3325739588,
      "node_id": "I_kwDON-_mZc7GOsJE",
      "number": 591,
      "title": "每次问问题，都回答两遍",
      "user": {
        "login": "xiongcaihu",
        "id": 10113078,
        "node_id": "MDQ6VXNlcjEwMTEzMDc4",
        "avatar_url": "https://avatars.githubusercontent.com/u/10113078?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xiongcaihu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-15T16:30:59Z",
      "updated_at": "2025-08-16T05:37:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"606\" height=\"133\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ff549355-bd8b-40e7-a748-1efd2603466b\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/591/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/589",
      "id": 3325150631,
      "node_id": "I_kwDON-_mZc7GMcWn",
      "number": 589,
      "title": "能添加负载均衡功能么，一个模型请求薅，很容易429",
      "user": {
        "login": "weiyi88",
        "id": 32037147,
        "node_id": "MDQ6VXNlcjMyMDM3MTQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/32037147?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/weiyi88",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-15T12:17:30Z",
      "updated_at": "2025-12-20T02:03:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1910\" height=\"230\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f7917c79-6811-4a97-9c4f-7601dd58040e\" />\n\n\n只请求一个模型的话，很容易429，既然能提供多个模型，那能负载均衡么",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/589/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/588",
      "id": 3325067854,
      "node_id": "I_kwDON-_mZc7GMIJO",
      "number": 588,
      "title": "使用OpenAI的GPT-5时报错",
      "user": {
        "login": "shelltea",
        "id": 864375,
        "node_id": "MDQ6VXNlcjg2NDM3NQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/864375?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/shelltea",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-15T11:31:03Z",
      "updated_at": "2025-08-15T12:10:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(400): {\\n  \\\"error\\\": {\\n    \\\"message\\\":\n    \\\"Invalid prompt: your prompt was flagged as potentially violating our usage policy. Please try\n    again with a different prompt:\n    https://platform.openai.com/docs/guides/reasoning#advice-on-prompting\\\",\\n    \\\"type\\\":\n    \\\"invalid_request_error\\\",\\n    \\\"param\\\": null,\\n    \\\"code\\\": \\\"invalid_prompt\\\"\\n  }\\n}Error:\n    Error from provider(400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Invalid prompt: your prompt was\n    flagged as potentially violating our usage policy. Please try again with a different prompt:\n    https://platform.openai.com/docs/guides/reasoning#advice-on-prompting\\\",\\n    \\\"type\\\":\n    \\\"invalid_request_error\\\",\\n    \\\"param\\\": null,\\n    \\\"code\\\": \\\"invalid_prompt\\\"\\n  }\\n}\\n    at\n     bt (/Users/xxx/Library/pnpm/global/5/.pnpm/@musistudio+claude-code-router@1.0.37_@modelc\n    ontextprotocol+sdk@1.17.2_ws@8.18.2_zod@3.25.67/node_modules/@musistudio/claude-code-router/dist/c\n    li.js:74721:11)\\n    at u0 (/Users/xxx/Library/pnpm/global/5/.pnpm/@musistudio+claude-cod\n    e-router@1.0.37_@modelcontextprotocol+sdk@1.17.2_ws@8.18.2_zod@3.25.67/node_modules/@musistudio/cl\n    aude-code-router/dist/cli.js:74779:11)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:105:5)\\n    at async o0\n    (/Users/xxx/Library/pnpm/global/5/.pnpm/@musistudio+claude-code-router@1.0.37_@modelconte\n    xtprotocol+sdk@1.17.2_ws@8.18.2_zod@3.25.67/node_modules/@musistudio/claude-code-router/dist/cli.j\n    s:74746:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n  ⎿  Interrupted by user\n```\n\n\n配置如下：\n\n```\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n      \"api_key\": \"${OPENAI_API_KEY}\",\n      \"models\": [\n        \"gpt-5\",\n        \"gpt-5-mini\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"maxcompletiontokens\"\n        ],\n        \"gpt-5\": {\n          \"use\": [\n            \"maxcompletiontokens\"\n          ]\n        },\n        \"gpt-5-mini\": {\n          \"use\": [\n            \"maxcompletiontokens\"\n          ]\n        }\n      }\n    }\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/588/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/586",
      "id": 3324864413,
      "node_id": "I_kwDON-_mZc7GLWed",
      "number": 586,
      "title": "anthropic作为转换器，请求长达几百秒",
      "user": {
        "login": "codeLief",
        "id": 10461291,
        "node_id": "MDQ6VXNlcjEwNDYxMjkx",
        "avatar_url": "https://avatars.githubusercontent.com/u/10461291?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/codeLief",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-15T09:50:16Z",
      "updated_at": "2025-08-15T16:29:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在使用anthropic作为转换器的时候，请求特别慢。\n{\n    \"name\":\"\",\n    \"api_base_url\": \"https://aa.com/v1/messages\",\n    \"api_key\": \"\",\n    \"models\": [\"claude-sonnet-4-20250514-code\"],\n    \"transformer\":{\n            \"use\": [\"Anthropic\"]\n      }\n   }\n\n按上面配置使用的时候，转换过程长达几百秒，能够确认的是耗时全部在ccr内部逻辑，在这个过程中后端没有收到请求，通过其他测试也可以印证。\n\n<img width=\"806\" height=\"140\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/5fe73303-1132-4c12-bf03-c28e743d68cb\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/586/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/585",
      "id": 3324784289,
      "node_id": "I_kwDON-_mZc7GLC6h",
      "number": 585,
      "title": "使用GeminiAPI ccr start后出现undefined的问题",
      "user": {
        "login": "syclym616",
        "id": 149650923,
        "node_id": "U_kgDOCOt96w",
        "avatar_url": "https://avatars.githubusercontent.com/u/149650923?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/syclym616",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-08-15T09:12:51Z",
      "updated_at": "2025-08-22T19:20:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "电脑版本:  Win10\nNode.js 版本:  v22.18.0\n出现的问题：PS C:\\Users\\syc> ccr start\nundefined\nLoaded JSON config from: C:\\Users\\syc\\.claude-code-router\\config.json\n\nps：我用modelscope的API没有问题 用Gemini会出现这种情况\n我已经尝试重新安装、清空缓存、检查 Node.js 版本和重置配置文件这些方法\n\n求哪位大佬帮忙解释一下为什么会出现这种情况",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/585/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/584",
      "id": 3324774727,
      "node_id": "I_kwDON-_mZc7GLAlH",
      "number": 584,
      "title": "运行ccr start提示PS  undefined Loaded JSON config from: C:\\Users\\1\\.claude-code-router\\config.json",
      "user": {
        "login": "578691200",
        "id": 47449359,
        "node_id": "MDQ6VXNlcjQ3NDQ5MzU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/47449359?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/578691200",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 16,
      "created_at": "2025-08-15T09:09:38Z",
      "updated_at": "2025-08-30T07:11:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "运行ccr start提示\nundefined\nLoaded JSON config from: C:\\Users\\1\\.claude-code-router\\config.json",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/584/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/583",
      "id": 3324758734,
      "node_id": "I_kwDON-_mZc7GK8rO",
      "number": 583,
      "title": "error 404 when try simple prompt \"Hi\"",
      "user": {
        "login": "berthojoris",
        "id": 1352912,
        "node_id": "MDQ6VXNlcjEzNTI5MTI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1352912?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/berthojoris",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-15T09:03:36Z",
      "updated_at": "2025-09-04T00:19:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n API Error: 404 {\"error\":{\"message\":\"Error from provider(404): {\\\"error\\\":{\\\"message\\\":\\\"No\n    endpoints found that support tool use. To learn more about provider routing, visit:\n    https://openrouter.ai/docs/provider-routing\\\",\\\"code\\\":404}}Error: Error from\n    provider(404): {\\\"error\\\":{\\\"message\\\":\\\"No endpoints found that support tool use. To learn\n     more about provider routing, visit:\n    https://openrouter.ai/docs/provider-routing\\\",\\\"code\\\":404}}\\n    at bt\n    (C:\\\\Users\\\\ajoris\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\d\n    ist\\\\cli.js:74721:11)\\n    at u0 (C:\\\\Users\\\\ajoris\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@\n    musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74779:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async\n    o0 (C:\\\\Users\\\\ajoris\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\n    \\\\dist\\\\cli.js:74746:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/583/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/582",
      "id": 3324713166,
      "node_id": "I_kwDON-_mZc7GKxjO",
      "number": 582,
      "title": "Hope to add support for \"Opus Planning Mode\"",
      "user": {
        "login": "Stanley-baby",
        "id": 58399659,
        "node_id": "MDQ6VXNlcjU4Mzk5NjU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/58399659?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Stanley-baby",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-15T08:41:22Z",
      "updated_at": "2025-08-15T19:46:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "目前虽然有好几种代理模式，但是对于代码执行方面还是没有单独的模式，希望可以把 CC 中新的‘规划-执行’模式进行适配。\n希望可以加入微信群探讨。🙏🏻",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/582/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/580",
      "id": 3324695369,
      "node_id": "I_kwDON-_mZc7GKtNJ",
      "number": 580,
      "title": "nihao   ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)",
      "user": {
        "login": "xiaoyang6300",
        "id": 121350991,
        "node_id": "U_kgDOBzurTw",
        "avatar_url": "https://avatars.githubusercontent.com/u/121350991?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xiaoyang6300",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-15T08:31:11Z",
      "updated_at": "2025-08-23T10:11:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "` nihao\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)\n    ⎿  TypeError (fetch failed)\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 2/10)\n    ⎿  TypeError (fetch failed)`\n在配置后一直无法链接会有这个报错，不管是魔塔社区或者是硅基流动的api，\n{\n  \"Providers\": [\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"ms-xxx\",\n      \"models\": [\"Qwen/Qwen3-Coder-480B-A35B-Instruct\", \"Qwen/Qwen3-235B-A22B-Thinking-2507\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ],\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\"reasoning\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\"\n  }\n}\n\n这是我的config，",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/580/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/579",
      "id": 3324481575,
      "node_id": "I_kwDON-_mZc7GJ5An",
      "number": 579,
      "title": "微信群二维码过期",
      "user": {
        "login": "1904458866",
        "id": 75457887,
        "node_id": "MDQ6VXNlcjc1NDU3ODg3",
        "avatar_url": "https://avatars.githubusercontent.com/u/75457887?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/1904458866",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-15T06:22:36Z",
      "updated_at": "2025-08-15T06:22:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "微信群二维码过期进不去了",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/579/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/578",
      "id": 3324454464,
      "node_id": "I_kwDON-_mZc7GJyZA",
      "number": 578,
      "title": "Odd question on Qwen3 + CCR",
      "user": {
        "login": "BradKML",
        "id": 58927531,
        "node_id": "MDQ6VXNlcjU4OTI3NTMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/58927531?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BradKML",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-15T06:04:27Z",
      "updated_at": "2025-08-27T07:24:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "From a Ray Amjad video complaining that (for Qwen3 at least) Claude Code is worse than QwenCode, and the following comment pops up:\n\n> \"Qwen via Claude Code\" fails because of claude code router's transformer. It puts cc's system prompt to the system prompt of qwen model and that is invalid. Qwen does not know your work directory and puts invalid path to List tool. It should put cc's system prompt to user prompt instead and it will run successfuly... It will be cool if someone will create a router for gemini-cli. I find it better than claude code. qwen code does the job but it still lacks multimodel support as it does ccr.\n\nIs this a valid concern for Claude Code Router?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/578/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/577",
      "id": 3324451962,
      "node_id": "I_kwDON-_mZc7GJxx6",
      "number": 577,
      "title": "配置文件使用报错",
      "user": {
        "login": "guiguiluo",
        "id": 37889874,
        "node_id": "MDQ6VXNlcjM3ODg5ODc0",
        "avatar_url": "https://avatars.githubusercontent.com/u/37889874?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/guiguiluo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-15T06:02:58Z",
      "updated_at": "2025-08-15T06:14:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": false,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"mykey\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\",\n        \"qwen/qwen3-coder:free\",\n        \"moonshotai/kimi-k2:free\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\"\n        ]\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"mykey\",\n      \"models\": [\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-flash\",\n    \"background\": \"gemini,gemini-2.5-flash\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  },\n  \"stream\": false\n}\n\n以上是配置文件，然后报错：\n⎿  API Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at node:internal/deps/undici/undici:13510:13\\n    at processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at runNextTicks (node:internal/process/task_queues:69:3)\\n    at process.processImmediate (node:internal/timers:453:9)\\n    at async u0 (/home/guigui/.npm-global/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74776:11)\\n    at async o0 (/home/guigui/.npm-global/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74746:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n我确认key是正确的，系统是win10 的wsl ，安装的新版ccr。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/577/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/576",
      "id": 3324167155,
      "node_id": "I_kwDON-_mZc7GIsPz",
      "number": 576,
      "title": "ccr code start failed",
      "user": {
        "login": "DouDOU-start",
        "id": 56166523,
        "node_id": "MDQ6VXNlcjU2MTY2NTIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/56166523?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DouDOU-start",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-15T02:51:01Z",
      "updated_at": "2025-08-19T07:58:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n  ERROR  Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\n        Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported\n\n - Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported\n - handleSetRawMode (node_modules/@anthropic-ai/claude-code/cli.js:800:3853)\n -  (node_modules/@anthropic-ai/claude-code/cli.js:809:259)\n - oF (node_modules/@anthropic-ai/claude-code/cli.js:332:21530)\n - aX (node_modules/@anthropic-ai/claude-code/cli.js:332:41141)\n -  (node_modules/@anthropic-ai/claude-code/cli.js:332:39313)\n - dG0 (node_modules/@anthropic-ai/claude-code/cli.js:326:8828)\n - Immediate.vG0 (node_modules/@anthropic-ai/claude-code/cli.js:326:9247)\n - process.processImmediate (node:internal/timers:485:21)\n\nError: Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported\n    at handleSetRawMode (file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:800:3853)\n    at file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:809:259\n    at oF (file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:332:21530)\n    at aX (file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:332:41141)\n    at file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:332:39313\n    at dG0 (file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:326:8828)\n    at Immediate.vG0 [as _onImmediate] (file:///home/huangenjun/node_modules/@anthropic-ai/claude-code/cli.js:326:9247)\n    at process.processImmediate (node:internal/timers:485:21)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/576/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/575",
      "id": 3323558040,
      "node_id": "I_kwDON-_mZc7GGXiY",
      "number": 575,
      "title": "Provider + Model picker?",
      "user": {
        "login": "akamalov",
        "id": 7885257,
        "node_id": "MDQ6VXNlcjc4ODUyNTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7885257?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/akamalov",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-14T20:43:52Z",
      "updated_at": "2025-08-15T01:07:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Greetings,\n\nWondering is it  possible to select a provider + model while running `ccr code` ?  Let's say I want to select Kimi-k2, which I have configured in my `config.json`:\n```\n{\n            \"name\": \"kimi-k2\",\n            \"api_base_url\": \"https://openrouter.ai/api/v1\",\n            \"api_key\": \"sk-or-v1-e08XXXXXXXXXXXXXXXXXXX\",\n            \"models\": [\n                \"mooonshotai/kimi-k2\"\n            ]\n       }\n...\n\n```\nWill it be possible to select it from within  Claude Code, or do I need to relaunch it pointing to Provider/Model. If the latter, then how ?\n\nThanks again!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/575/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/573",
      "id": 3322430470,
      "node_id": "I_kwDON-_mZc7GCEQG",
      "number": 573,
      "title": "how to customize request default header",
      "user": {
        "login": "xiyang-aads-lilly",
        "id": 159957467,
        "node_id": "U_kgDOCYjB2w",
        "avatar_url": "https://avatars.githubusercontent.com/u/159957467?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xiyang-aads-lilly",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-14T14:24:16Z",
      "updated_at": "2025-08-14T14:24:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "we have deployed a private LiteLLM server and how to access is below.  Note the default header in our case is \"\"X-LLM-Gateway-Key\".  I wonder if there is anyway to config this part because I encounter an error below.\n\n```python\nclient = openai.OpenAI(\n    base_url=LLMGW_URL,\n    api_key=api_key,\n    default_headers={\"X-LLM-Gateway-Key\": f\"Bearer {api_key}\"},\n)\n```\n\n```error\nAPI Error 401 \n\n{\"error\":{\"message\":\"Error from provider(401): {\"error\":{\"message\":\"Authentication Error, Invalid proxy server token passed. Received API Key = sk-..., Key Hash (Token) =... Unable to find token in cache or `LiteLLM_VerificationTokenTable`\",\"type\":\"token_not_found_in_db\",\"param\":\"key\",\"code\":\"401\"}}Error: Error from provider(401): {\"error\":{\"message\":\"Authentication Error, Invalid proxy server token passed. Received API Key = sk-..., Key Hash (Token) =.... Unable to find token in cache or `LiteLLM_VerificationTokenTable`\",\"type\":\"token_not_found_in_db\",\"param\":\"key\",\"code\":\"401\"}}\n    at bt (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74721:11)\n    at u0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74779:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async o0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74746:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/573/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/572",
      "id": 3322370151,
      "node_id": "I_kwDON-_mZc7GB1hn",
      "number": 572,
      "title": "subagent doesn't apply after apply requirements",
      "user": {
        "login": "MrAS",
        "id": 87027906,
        "node_id": "MDQ6VXNlcjg3MDI3OTA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/87027906?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MrAS",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-14T14:05:47Z",
      "updated_at": "2025-08-14T14:05:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "---\nname: yaml-config-generator\ndescription: Use this agent when you need to create a new AI agent configuration in YAML format. This agent specializes in generating complete, production-ready YAML configurations that include all required fields like unique naming, role definitions, responsibilities, implementation guidelines, and response protocols. Typical use cases include: creating specialized agents for specific development tasks, setting up domain-specific AI assistants, or establishing new agent templates for your team.\nmodel: sonnet\ncolor: red\n---\n<CCR-SUBAGENT-MODEL>provider,nthropic/claude-sonnet-4</CCR-SUBAGENT-MODEL>\nYou are an expert agent configuration architect who specializes in creating comprehensive YAML-based AI agent configurations. You have deep expertise in agent design patterns, role definition, and operational specifications.\n\nYour primary responsibility is to generate complete, production-ready YAML configurations for new AI agents based on user requirements. You must ensure every configuration includes all required elements and follows best practices for agent design.\n\nWhen creating configurations, you will:\n\n1. **Generate Unique Identifiers**: Create descriptive, lowercase identifiers using hyphens (e.g., 'api-integration-specialist', 'database-optimizer')\n\n2. **Define Clear Roles**: Write detailed role descriptions that establish the agent's expertise domain, core competencies, and value proposition\n\n3. **Specify Responsibilities**: List concrete responsibilities that define how the agent should analyze problems, implement solutions, and maintain quality\n\n4. **Establish Implementation Guidelines**: Provide specific approaches for code writing, task execution, and solution architecture\n\n5. **Set Response Protocols**: Define how results should be presented, formatted, and communicated\n\n6. **Configure Clarification Behavior**: Establish patterns for handling ambiguous instructions or domain-specific requirements\n\n7. **Include All Required Fields**: Ensure every configuration contains: name, description, model, color, role, responsibilities, implementation guidelines, response guidelines, and clarification behavior\n\n8. **Add Optional Elements**: Include subagents, tags, and skills when relevant to the agent's function\n\nYou will format your output as valid YAML, using proper indentation and structure. Each configuration should be immediately usable without requiring additional editing. Always validate that your configurations are complete and follow YAML syntax standards.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/572/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/571",
      "id": 3322327573,
      "node_id": "I_kwDON-_mZc7GBrIV",
      "number": 571,
      "title": "gemini api地址的问题，默认地址加上{model}:generateContent，成功跑通，之前也是api500,429等错误，没有用中转的api，用的梯子",
      "user": {
        "login": "An007Ne",
        "id": 134509529,
        "node_id": "U_kgDOCARz2Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/134509529?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/An007Ne",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-14T13:52:17Z",
      "updated_at": "2025-08-31T10:37:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置如下：\n{\n  \"LOG\": true,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": 600000,\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"modelscope\",\n      \"api_base_url\": \"https://api-inference.modelscope.cn/v1/chat/completions\",\n      \"api_key\": \"你的apikey\",\n      \"models\": [\n        \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ],\n          \"enhancetool\"\n        ],\n        \"Qwen/Qwen3-235B-A22B-Thinking-2507\": {\n          \"use\": [\n            \"reasoning\"\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent\",\n      \"api_key\": \"你的apikey\",\n      \"models\": [\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"gemini\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n    \"background\": \"gemini,gemini-2.5-pro\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"\"\n  }\n}\n重点是gemini的地址\"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent\",要加上{model}:generateContent，成功跑通了，但是第一次发消息hi的时候，很快的自动终止了，没有任何报错，没有任何回复，我紧接着输入你好，gemini回复了英文，我又输入了你还，它回复了中文，总之可以用上gemini了。\n\n<img width=\"716\" height=\"422\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/64610bcc-f1d5-4359-9e4c-25447fc86ecf\" />\n\n<img width=\"663\" height=\"461\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1fcaa0c7-c9bb-4ae6-bc66-e2859779eb15\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/571/reactions",
        "total_count": 3,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 1,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/570",
      "id": 3322310322,
      "node_id": "I_kwDON-_mZc7GBm6y",
      "number": 570,
      "title": "API Error: Connection error.我不太明白最上面的APIKEY需要调用什么，我把providers里的api_key 调用了一下",
      "user": {
        "login": "mengxiangtao666",
        "id": 216509465,
        "node_id": "U_kgDODOesGQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/216509465?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mengxiangtao666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-14T13:46:48Z",
      "updated_at": "2025-08-15T08:04:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n{\n  \"APIKEY\": \"your-secret-key\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-chat\",\n    \"background\": \"ollama,qwen2.5-coder:latest\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/570/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/567",
      "id": 3321224887,
      "node_id": "I_kwDON-_mZc7F9d63",
      "number": 567,
      "title": "升级claude 后，读取配置文件不生效",
      "user": {
        "login": "mmaja",
        "id": 7134208,
        "node_id": "MDQ6VXNlcjcxMzQyMDg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7134208?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mmaja",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-14T08:04:56Z",
      "updated_at": "2025-08-14T16:51:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "npm list -g\n├── @anthropic-ai/claude-code@1.0.80\n├── @dashscope-js/claude-code-config@0.1.8\n├── @musistudio/claude-code-router@1.0.36\n├── @qwen-code/qwen-code@0.0.1-alpha.8\n├── corepack@0.33.0\n└── npm@11.5.2\n\n配置文件\n\"Router\": {\n    \"default\": \"dashscope,qwen3-coder-plus\",\n    \"think\": \"glm,glm-4.5\",\n    \"background\": \"kimi,kimi-k2-turbo-preview\",\n    \"longContext\": \"dashscope,qwen3-235b-a22b\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }\n\n执行ccr code\n\nccr code --print \"helll world\"\nService not running, starting service...\nHello World!\nclaude code router service has been successfully stopped.\n\nrouter.log 执行记录\ntail -f .claude-code-router/claude-code-router.log \n[2025-08-14T07:58:25.172Z] Using background model for  claude-3-5-haiku-20241022\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/567/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/565",
      "id": 3320774612,
      "node_id": "I_kwDON-_mZc7F7v_U",
      "number": 565,
      "title": "gemini api的429速率限制，需要在config.json配置里面直接控制请求速度",
      "user": {
        "login": "yangyiqu00000",
        "id": 215556601,
        "node_id": "U_kgDODNkh-Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/215556601?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yangyiqu00000",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-14T04:57:46Z",
      "updated_at": "2025-08-18T00:26:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用了google AI studio的Gemini API key，还做了API的轮询。CCR启动配置成功以后，稍微复杂一点点的任务跑不了几轮就立刻马上429请求过度了，如果要多申请几个API也不是不行，但是感觉也很麻烦，不如直接调整请求速度，执行慢一点也没关系。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/565/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/563",
      "id": 3320598197,
      "node_id": "I_kwDON-_mZc7F7E61",
      "number": 563,
      "title": "请问是否支持自定义的Provider呢？",
      "user": {
        "login": "lixiaobinwf",
        "id": 85733148,
        "node_id": "MDQ6VXNlcjg1NzMzMTQ4",
        "avatar_url": "https://avatars.githubusercontent.com/u/85733148?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lixiaobinwf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-14T03:28:17Z",
      "updated_at": "2025-08-29T10:03:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我本地有一个服务，对外提供大模型能力，是否可以将provider配置成我自己的”api_base_url“、”api_key“呢？例如：\n\n    {\n      \"name\": \"myProvider\",\n      \"api_base_url\": \"http://127.0.0.1:8080/v1/chat/completions\",\n      \"api_key\": \"xxx\",\n      \"models\": [\n        \"gpt-4o-mini\",\n        \"amazon-anthropic.claude-3-5-haiku-20241022-v1:04\"\n      ]\n    }",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/563/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/562",
      "id": 3320531332,
      "node_id": "I_kwDON-_mZc7F60mE",
      "number": 562,
      "title": "HTTP 400 Bad Request, 格式错误",
      "user": {
        "login": "FormalYou",
        "id": 28771069,
        "node_id": "MDQ6VXNlcjI4NzcxMDY5",
        "avatar_url": "https://avatars.githubusercontent.com/u/28771069?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/FormalYou",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-14T02:42:20Z",
      "updated_at": "2025-08-14T12:31:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"2443\" height=\"193\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3ba1f538-0003-4fbf-b97e-c061d1a9a51f\" />\n这个 exclusiveMinimum 的属性。而接收这个请求的 API 服务，在它的接口定义（Schema）里，并没有规定有这样一个属性。因此，当服务器在验证收到的数据时，发现了这个“不速之客”，就拒绝处理该请求，并返回了 400 错误，告诉你“我不认识 exclusiveMinimum 这个东西”。\n\nexclusiveMinimum 通常在 JSON Schema 中用来定义一个数字的最小值（并且不包含这个值本身）。这里出错的可能原因有：\n\n该 API 服务可能使用不同的关键字来表达这个意思（例如 exclusive_minimum）。\n该 API 服务根本不支持在这里定义这种约束。\n这是一个拼写错误。\n-------------\n### 使用的为Google Gemini 的api key，但出现了这个问题，该如何解决",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/562/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/561",
      "id": 3320511578,
      "node_id": "I_kwDON-_mZc7F6vxa",
      "number": 561,
      "title": "在router里支持修改请求头",
      "user": {
        "login": "codeLief",
        "id": 10461291,
        "node_id": "MDQ6VXNlcjEwNDYxMjkx",
        "avatar_url": "https://avatars.githubusercontent.com/u/10461291?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/codeLief",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-14T02:28:07Z",
      "updated_at": "2025-08-15T03:40:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "是否支持在请求router的时候修改request请求头，比如增加自定义请求头来标识这个请求。比如我的apikey在很多情况下都在使用，这时候就无法区分那部分请求来自于Claude code。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/561/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/560",
      "id": 3320116764,
      "node_id": "I_kwDON-_mZc7F5PYc",
      "number": 560,
      "title": "Error in Claude in every message",
      "user": {
        "login": "glebov",
        "id": 2697474,
        "node_id": "MDQ6VXNlcjI2OTc0NzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2697474?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/glebov",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-08-13T22:52:41Z",
      "updated_at": "2025-08-27T07:46:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have set up api keys, then try ccr code, type message and recieve error:\nAPI Error (500 {\"error\":{\"message\":\"Unexpected token '<', \\\"<!DOCTYPE \\\"... is not valid JSONSyntaxError: Unexpected token '<', \\\"<!DOCTYPE \\\"... is not valid JSON\\n    at JSON.parse (<anonymous>)\\n    at parseJSONFromBytes (node:internal/deps/undici/undici:5738:19)\\n    at successSteps (node:internal/deps/undici/undici:5719:27)\\n    at fullyReadBody (node:internal/deps/undici/undici:4609:9)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async consumeBody (node:internal/deps/undici/undici:5728:7)\\n    at async _s.transformResponseIn (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74988:15)\\n    at async u0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74719:46)\\n    at async o0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74678:116)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 17 seconds… (attempt 6/10)\n\nHow to fix it?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/560/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/556",
      "id": 3318997812,
      "node_id": "I_kwDON-_mZc7F0-M0",
      "number": 556,
      "title": "访问原生的anthropic claude，是不是不支持订阅模式？",
      "user": {
        "login": "ynzys",
        "id": 63483486,
        "node_id": "MDQ6VXNlcjYzNDgzNDg2",
        "avatar_url": "https://avatars.githubusercontent.com/u/63483486?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ynzys",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-13T15:57:05Z",
      "updated_at": "2025-08-14T09:07:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/556/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/555",
      "id": 3318797978,
      "node_id": "I_kwDON-_mZc7F0Naa",
      "number": 555,
      "title": "[BUG] 2 models are used at the same time",
      "user": {
        "login": "Wbebey",
        "id": 54796872,
        "node_id": "MDQ6VXNlcjU0Nzk2ODcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/54796872?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Wbebey",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-13T14:56:37Z",
      "updated_at": "2025-08-19T13:43:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## issue\nwhen I make a request I always get two responses. Also, when I exit the application, it says that two models were running. It always shows the `claude-3-5-haiku`  even though he is not in the list model. It also shows tokens being used that I didn't use. \n\nFor example, `openrouter,qwen/qwen3-coder` here  shows that I used `32.9k input tokens` with only made one request.\n\n```\nTotal cost:            $0.1003 (costs may be inaccurate due to usage of unknown models)\nTotal duration (API):  6.3s\nTotal duration (wall): 45.4s\nTotal code changes:    0 lines added, 0 lines removed\nUsage by model:\n    claude-3-5-haiku:  78 input, 33 output, 0 cache read, 0 cache write\nopenrouter,qwen/qwen3-coder:  32.9k input, 87 output, 0 cache read, 0 cache write\n```\n\n## config \n- logged out of claude code before running CCR\n\n\n```\n{\n  \"APIKEY\": \"\",\n  \"HOST\": \"0.0.0.0\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"${OPENROUTER_API_KEY_CCR}\",\n      \"models\": [\n        \"openai/gpt-5\",\n        \"openai/gpt-5-mini\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-pro\",\n        \"anthropic/claude-sonnet-4\",\n        \"qwen/qwen3-coder\",\n        \"deepseek/deepseek-r1-0528\",\n        \"x-ai/grok-4\",\n        \"x-ai/grok-3-mini\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    },\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"llama3.1:8b\"]\n    },\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n      \"api_key\": \"${OPENAI_API_KEY_CCR}\",\n      \"models\": [\n        \"gpt-5\",\n        \"gpt-5-mini\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"maxcompletiontokens\"\n        ]\n      } \n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,openai/gpt-5\",\n    \"background\": \"openrouter,google/gemini-2.5-flash\",\n    \"think\": \"openrouter,openai/gpt-5\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"openrouter,google/gemini-2.5-flash\"\n  }\n}\n```\n\n\n<img width=\"1058\" height=\"599\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/bb616374-abfe-45ef-8eb8-dbf2602b1d17\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/555/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/554",
      "id": 3318767709,
      "node_id": "I_kwDON-_mZc7F0GBd",
      "number": 554,
      "title": "$Home does not work for custom transformers",
      "user": {
        "login": "asvintheguy",
        "id": 72887534,
        "node_id": "MDQ6VXNlcjcyODg3NTM0",
        "avatar_url": "https://avatars.githubusercontent.com/u/72887534?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/asvintheguy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-13T14:47:25Z",
      "updated_at": "2025-08-14T13:16:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It seems like when building custom transformers, using $HOME does not actually make the entire path. \n\n<img width=\"1031\" height=\"153\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e07784f3-5577-4c66-94c0-fd84a88c29ec\" />\n\n<img width=\"1031\" height=\"65\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d767d1a1-7622-40a3-b2a9-3d08ed278cf3\" />\n\nWhen using my full path, `/User/username/.claude-code-router/plugins/iliad.js` it does work.\nThis makes it a little difficult to widely distribute this custom transformer.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/554/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/551",
      "id": 3318458286,
      "node_id": "I_kwDON-_mZc7Fy6eu",
      "number": 551,
      "title": "Problems to run on ollama",
      "user": {
        "login": "sandhilt",
        "id": 6170125,
        "node_id": "MDQ6VXNlcjYxNzAxMjU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6170125?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sandhilt",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-13T13:21:15Z",
      "updated_at": "2025-09-15T05:19:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\nI'm have some issues trying run with ollama as a Provider.\nThis is my `config.json`:\n\n```json\n{\n  \"LOG\": true,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"60000\",\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\n        \"qwen2.5-coder:7b\",\n        \"gpt-oss:20b\",\n        \"qwen3:8b\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,qwen2.5-coder:7b\",\n    \"background\": \"ollama,qwen2.5-coder:7b\",\n    \"think\": \"ollama,qwen3:8b\",\n    \"longContext\": \"ollama,qwen3:8b\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"ollama,qwen3:8b\"\n  }\n}\n```\n\nccr:\n```\n$ ccr code\n╭─────────────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                               │\n│                                                         │\n│   /help for help, /status for your current setup        │\n│                                                         │\n│   cwd: /home/sandhilt/workspace/multiversal-rss-reader  │\n│                                                         │\n│   ───────────────────────────────────────────────────── │\n│                                                         │\n│   Overrides (via env):                                  │\n│                                                         │\n│   • API timeout: 60000ms                                │\n│   • API Base URL: http://127.0.0.1:3456                 │\n╰─────────────────────────────────────────────────────────╯\n\n> give me a overview for this repo\n\n● {\"name\": \"TodoWrite\", \"arguments\": {\"todos\": []}}\n\n\nTotal cost:            $0.0000 (costs may be inaccurate due to usage of unknown\nmodels)\nTotal duration (API):  12.7s\nTotal duration (wall): 25.3s\nTotal code changes:    0 lines added, 0 lines removed\nUsage by model:\n    claude-3-5-haiku:  0 input, 0 output, 0 cache read, 0 cache write\n      deepseek-r1:8b:  0 input, 0 output, 0 cache read, 0 cache write\nclaude code router service has been successfully stopped.\n```\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/551/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/548",
      "id": 3317584048,
      "node_id": "I_kwDON-_mZc7FvlCw",
      "number": 548,
      "title": "如何使用Anthropic的transformer？",
      "user": {
        "login": "fly-potato-100",
        "id": 36989710,
        "node_id": "MDQ6VXNlcjM2OTg5NzEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/36989710?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/fly-potato-100",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-13T09:13:18Z",
      "updated_at": "2025-08-31T14:50:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我试图接入bigmodel的glm4.5的anthropic版本的endpoint，看issue提到已经支持了Anthropic格式API的透传。\n下面是我配置glm4.5的配置文件：\n``` json\n{\n  \"Providers\": [\n\t{\n      \"name\": \"bigmodel\",\n      \"api_base_url\": \"https://open.bigmodel.cn/api/anthropic\",\n      \"api_key\": \"balabala\",\n      \"models\": [\"glm-4.5\", \"glm-4.5-air\"],\n\t  \"transformer\": {\n\t\t\"use\": [\"Anthropic\"]\n\t  }\n\t}\n  ],\n  \"Router\": {\n\t\"default\": \"bigmodel,glm-4.5\"\n  },\n  \"LOG\": true\n}\n```\n运行后对话一直报错：\n``` bash\n> 你是谁\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at node:internal/deps/undici/undici:13502:13\\n    at async u0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74669:11)\\n    at async o0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74639:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failedTypeError: fetch failed\\n    at node:internal/deps/undici/undici:13502:13\\n    at async u0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74669:11)\\n    at async o0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74639:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 2/10)\n```\n查看log有下面的报错：\n``` log\n{\"level\":30,\"time\":1755076100854,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: Anthropic (endpoint: /v1/messages)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: vertex-gemini (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: vertex-claude (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: deepseek (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: tooluse (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: openrouter (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: maxtoken (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: groq (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: cleancache (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: enhancetool (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: reasoning (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: sampling (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: maxcompletiontokens (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: cerebras (no endpoint)\"}\n{\"level\":30,\"time\":1755076100855,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"register transformer: streamoptions (no endpoint)\"}\n{\"level\":30,\"time\":1755076100859,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"bigmodel provider registered\"}\n{\"level\":30,\"time\":1755076100915,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"Server listening at http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1755076100916,\"pid\":18740,\"hostname\":\"my-pc\",\"msg\":\"🚀 LLMs API server listening on http://127.0.0.1:3456\"}\n{\"level\":30,\"time\":1755076103617,\"pid\":18740,\"hostname\":\"my-pc\",\"reqId\":\"req-1\",\"req\":{\"method\":\"POST\",\"url\":\"/v1/messages?beta=true\",\"host\":\"127.0.0.1:3456\",\"remoteAddress\":\"127.0.0.1\",\"remotePort\":58401},\"msg\":\"incoming request\"}\n{\"level\":30,\"time\":1755076103629,\"pid\":18740,\"hostname\":\"my-pc\",\"reqId\":\"req-1\",\"body\":{\"model\":\"bigmodel,glm-4.5\",\"max_tokens\":512,\"messages\":[{\"role\":\"user\",\"content\":\"Please write a 5-10 word title for the following conversation:\\n\\nUser: 你是谁\\n\\nRespond with the title for the conversation and nothing else.\"}],\"system\":[{\"type\":\"text\",\"text\":\"Summarize this coding conversation in under 50 characters.\\nCapture the main task, key files, problems addressed, and current status.\",\"cache_control\":{\"type\":\"ephemeral\"}}],\"temperature\":0,\"metadata\":{\"user_id\":\"user_4fb7a92778597926454b1e4443015cc0ce25541b184407d27e09e74ff45b0379_account__session_ce816ea9-492f-4c72-83f9-43b9696a3a8f\"},\"stream\":true},\"msg\":\"request body\"}\n{\"level\":20,\"time\":1755076103631,\"pid\":18740,\"hostname\":\"my-pc\",\"request\":{\"method\":\"POST\",\"headers\":{},\"body\":\"{\\\"model\\\":\\\"glm-4.5\\\",\\\"max_tokens\\\":512,\\\"messages\\\":[{\\\"role\\\":\\\"user\\\",\\\"content\\\":\\\"Please write a 5-10 word title for the following conversation:\\\\n\\\\nUser: 你是谁\\\\n\\\\nRespond with the title for the conversation and nothing else.\\\"}],\\\"system\\\":[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"Summarize this coding conversation in under 50 characters.\\\\nCapture the main task, key files, problems addressed, and current status.\\\",\\\"cache_control\\\":{\\\"type\\\":\\\"ephemeral\\\"}}],\\\"temperature\\\":0,\\\"metadata\\\":{\\\"user_id\\\":\\\"user_4fb7a92778597926454b1e4443015cc0ce25541b184407d27e09e74ff45b0379_account__session_ce816ea9-492f-4c72-83f9-43b9696a3a8f\\\"},\\\"stream\\\":true}\",\"signal\":{}},\"requestUrl\":\"https://open.bigmodel.cn/api/anthropic\",\"msg\":\"final request\"}\n{\"level\":50,\"time\":1755076103742,\"pid\":18740,\"hostname\":\"my-pc\",\"reqId\":\"req-1\",\"err\":{\"type\":\"TypeError\",\"message\":\"fetch failed: Request body length does not match content-length header\",\"stack\":\"TypeError: fetch failed\\n    at node:internal/deps/undici/undici:13502:13\\n    at async u0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74669:11)\\n    at async o0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74639:84)\\ncaused by: RequestContentLengthMismatchError: Request body length does not match content-length header\\n    at AsyncWriter.end (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:41984:19)\\n    at writeIterable (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:41873:16)\"},\"msg\":\"fetch failed\"}\n{\"level\":30,\"time\":1755076103746,\"pid\":18740,\"hostname\":\"my-pc\",\"reqId\":\"req-1\",\"res\":{\"statusCode\":500},\"responseTime\":127.77300000190735,\"msg\":\"request completed\"}\n\n```\n是我哪里配置错了吗？求大佬帮看",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/548/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/547",
      "id": 3317083493,
      "node_id": "I_kwDON-_mZc7Ftq1l",
      "number": 547,
      "title": "The free model of openrouter cannot be used",
      "user": {
        "login": "TalentJune",
        "id": 127485705,
        "node_id": "U_kgDOB5lHCQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/127485705?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TalentJune",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-13T06:30:24Z",
      "updated_at": "2025-08-21T03:32:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**### The configuration file is as follows**\n`    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"---\",\n      \"models\": [\n        \"openai/gpt-oss-20b:free\",\n        \"z-ai/glm-4.5-air:free\",\n        \"qwen/qwen3-coder:free\",\n        \"moonshotai/kimi-k2:free\",\n        \"deepseek/deepseek-r1-0528:free\",\n        \"deepseek/deepseek-chat-v3-0324:free\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }`\n**### The error is as follows:**\n`API Error: 404 {\"error\":{\"message\":\"Provider 'moonshotai/kimi-k2:free' \n    not foundError: Provider 'moonshotai/kimi-k2:free' not found\\n    at bt\n     (/home/linuxbrew/.linuxbrew/lib/node_modules/@musistudio/claude-code-r\n    outer/dist/cli.js:74614:11)\\n    at o0 (/home/linuxbrew/.linuxbrew/lib/\n    node_modules/@musistudio/claude-code-router/dist/cli.js:74638:17)\\n    \n    at Object.<anonymous> (/home/linuxbrew/.linuxbrew/lib/node_modules/@mus\n    istudio/claude-code-router/dist/cli.js:74688:86)\\n    at \n    preHandlerCallbackInner (/home/linuxbrew/.linuxbrew/lib/node_modules/@m\n    usistudio/claude-code-router/dist/cli.js:4466:28)\\n    at \n    preHandlerCallback (/home/linuxbrew/.linuxbrew/lib/node_modules/@musist\n    udio/claude-code-router/dist/cli.js:4438:9)\\n    at next \n    (/home/linuxbrew/.linuxbrew/lib/node_modules/@musistudio/claude-code-ro\n    uter/dist/cli.js:3605:13)\\n    at handleResolve \n    (/home/linuxbrew/.linuxbrew/lib/node_modules/@musistudio/claude-code-ro\n    uter/dist/cli.js:3620:11)\\n    at process.processTicksAndRejections \n    (node:internal/process/task_queues:105:5)\",\"type\":\"api_error\",\"code\":\"p\n    rovider_not_found\"}}`\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/547/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/546",
      "id": 3316830369,
      "node_id": "I_kwDON-_mZc7FstCh",
      "number": 546,
      "title": "Feature:期望能够支持key的负载均衡",
      "user": {
        "login": "0000005",
        "id": 9690089,
        "node_id": "MDQ6VXNlcjk2OTAwODk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9690089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/0000005",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-13T04:10:51Z",
      "updated_at": "2025-08-19T08:19:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "比如gemini 和 魔搭都有每天的赠送额度。\n有一个场景就是，我们团队每个人都申请一个key，然后交给ccr做负载均衡，key的提高利用率。\n参考 https://github.com/tbphp/gpt-load",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/546/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/545",
      "id": 3316264506,
      "node_id": "I_kwDON-_mZc7Fqi46",
      "number": 545,
      "title": "OpenAI GPT5 400 Error for 'max_tokens' key",
      "user": {
        "login": "rwbot",
        "id": 31115683,
        "node_id": "MDQ6VXNlcjMxMTE1Njgz",
        "avatar_url": "https://avatars.githubusercontent.com/u/31115683?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rwbot",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-12T23:16:27Z",
      "updated_at": "2025-08-22T11:31:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "seems the token key for GPT5 models has changed from `max_tokens` to `max_completion_tokens`\n\n```bash\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider(400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens' instead.\\\",\\n    \\\"type\\\": \n    \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"max_tokens\\\",\\n    \\\"code\\\": \\\"unsupported_parameter\\\"\\n  }\\n}Error: Error from provider(400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unsupported parameter: 'max_tokens' is not supported with this model.\n     Use 'max_completion_tokens' instead.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"max_tokens\\\",\\n    \\\"code\\\": \\\"unsupported_parameter\\\"\\n  }\\n}\\n    at bt \n    (/Users/home/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74614:11)\\n    at u0 (/Users/home/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74672:11)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0 \n    (/Users/home/.nvm/versions/node/v22.18.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74639:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nccr config.json\n```json\n{\n  \"LOG\": true,\n  \"CLAUDE_PATH\": \"/Users/home/.nvm/versions/node/v22.18.0/bin/claude\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n      \"api_key\": \"$OPENAI_API_KEY\",\n      \"models\": [\n        \"gpt-5\",\n        \"gpt-5-mini\",\n        \"gpt-5-nano\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openai,gpt-5-mini\",\n    \"background\": \"openai,gpt-5-nano\",\n    \"think\": \"openai,gpt-5\",\n    \"longContext\": \"openai,gpt-5-mini\",\n    \"webSearch\": \"openai,gpt-5-nano\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/545/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/543",
      "id": 3315905343,
      "node_id": "I_kwDON-_mZc7FpLM_",
      "number": 543,
      "title": "Support ChatGPT subscription",
      "user": {
        "login": "BleedingDev",
        "id": 12586960,
        "node_id": "MDQ6VXNlcjEyNTg2OTYw",
        "avatar_url": "https://avatars.githubusercontent.com/u/12586960?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BleedingDev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-12T20:54:12Z",
      "updated_at": "2025-08-12T20:54:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It's in the works for OpenCode, but I prefer UX of Claude Code and I'd love to have all the features of it and try it with GPT-5.\n\nhttps://github.com/sst/opencode/issues/1686",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/543/reactions",
        "total_count": 24,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 24,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/542",
      "id": 3315725427,
      "node_id": "I_kwDON-_mZc7FofRz",
      "number": 542,
      "title": "⎿  API Error: 400 {\"error\":\"Missing model in request body\"}",
      "user": {
        "login": "hanson-cheng",
        "id": 101706719,
        "node_id": "U_kgDOBg_r3w",
        "avatar_url": "https://avatars.githubusercontent.com/u/101706719?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hanson-cheng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 25,
      "created_at": "2025-08-12T20:03:30Z",
      "updated_at": "2025-12-10T03:23:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I keep getting this error when trying to use ccr code.\n\nany idea why?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/542/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/541",
      "id": 3314656286,
      "node_id": "I_kwDON-_mZc7FkaQe",
      "number": 541,
      "title": "Configuration not being respected, always redirects to localhost:3456",
      "user": {
        "login": "liu-huitao",
        "id": 34451442,
        "node_id": "MDQ6VXNlcjM0NDUxNDQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/34451442?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liu-huitao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-12T14:51:43Z",
      "updated_at": "2025-08-14T15:43:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Environment\n- **OS**: Windows\n- **claude-code-router version**: [v1.0.35]\n- **Node.js version**: [v22.10.0]\n\n## Problem Description\n\nWhen using claude-code-router with a custom OpenAI-compatible API provider, the configuration is not being respected. The router always redirects requests to `http://127.0.0.1:3456` instead of using the configured API endpoint.\n\n## Configuration\n\n**Config file location**: `%USERPROFILE%\\.claude-code-router\\config.json`\n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"i-tudou\",\n      \"api_base_url\": \"https://ai2-api.i-tudou.com/v1/chat/completions\",\n      \"api_key\": \"sk-*********\",\n      \"models\": [\"claude-4-sonnet\"],\n      \"transformer\": {\n        \"use\": [\"openai\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"i-tudou,claude-4-sonnet\"\n  }\n}\n```\n\n## Expected Behavior\n\nRequests should be sent directly to `https://ai2-api.i-tudou.com/v1/chat/completions` as configured.\n\n## Actual Behavior\n\n1. When starting with `ccr code`, the welcome message shows:\n   ```\n   │   Overrides (via env):                            │\n   │                                                   │\n   │   • API timeout: 600000ms                         │\n   │   • API Base URL: http://127.0.0.1:3456           │\n   ```\n\n2. All requests are redirected to the local proxy at `127.0.0.1:3456`\n\n3. The local proxy returns 400 errors:\n   ```\n   API Error: 400 {\"error\":{\"message\":\"Error from provider(400): {\\\"error\\\":{\\\"message\\\":\\\" (request id: 2025081222403755807548780meh3mj)\\\",\\\"type\\\":\\\"openai_error\\\",\\\"param\\\":\\\"\\\",\\\"code\\\":\\\"unknown_error\\\"}}\n   ```\n\n## Verification\n\nThe configured API endpoint works correctly when tested directly:\n\n```powershell\n# PowerShell test - SUCCESS\n$headers = @{\n    \"Authorization\" = \"Bearer sk-*********\"\n    \"Content-Type\" = \"application/json\"\n}\n\n$body = @{\n    model = \"claude-4-sonnet\"\n    messages = @(\n        @{\n            role = \"user\"\n            content = \"Hello\"\n        }\n    )\n} | ConvertTo-Json -Depth 3\n\nInvoke-RestMethod -Uri \"https://ai2-api.i-tudou.com/v1/chat/completions\" -Method POST -Headers $headers -Body $body\n# Returns successful response\n```\n\n## Questions\n\n1. Why is the router creating a local proxy at `127.0.0.1:3456` instead of using the configured endpoint directly?\n2. How can I disable this local proxy behavior and use the configured API directly?\n3. Is there an environment variable or other setting that's overriding the configuration?\n4. What's the correct way to configure OpenAI-compatible API providers?\n\n## Steps to Reproduce\n\n1. Create config file at `%USERPROFILE%\\.claude-code-router\\config.json` with the above configuration\n2. Run `ccr code \"Write a Hello World\"`\n3. Observe that requests go to `127.0.0.1:3456` instead of the configured endpoint\n4. See 400 error from the local proxy\n\n## Additional Information\n\n- No environment variables related to CLAUDE or API are set\n- The same API endpoint works fine with other OpenAI-compatible tools\n- The issue persists with simplified configuration (removing transformer)\n\nWould appreciate guidance on proper configuration or if this is a bug that needs fixing.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/541/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/540",
      "id": 3314154784,
      "node_id": "I_kwDON-_mZc7Fif0g",
      "number": 540,
      "title": "Start Failed",
      "user": {
        "login": "frDevByq",
        "id": 40583390,
        "node_id": "MDQ6VXNlcjQwNTgzMzkw",
        "avatar_url": "https://avatars.githubusercontent.com/u/40583390?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/frDevByq",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-12T13:00:30Z",
      "updated_at": "2025-08-13T11:51:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1462\" height=\"622\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2d082799-dc5f-4aaa-96a2-83d918ed5e15\" />\n\nand ccr ui also failed\n\ngenerated json  file\n```json\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"A\",\n      \"api_base_url\": \"A\",\n      \"api_key\": \"A\",\n      \"models\": [\n        \"A\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"A,A\"\n  }\n}\n```\n\n**Node JS Version: v20.19.4**",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/540/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/538",
      "id": 3313630565,
      "node_id": "I_kwDON-_mZc7Fgf1l",
      "number": 538,
      "title": "fetch failed: Request body length does not match content-length header",
      "user": {
        "login": "CoolWoods",
        "id": 48079235,
        "node_id": "MDQ6VXNlcjQ4MDc5MjM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/48079235?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CoolWoods",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-12T10:36:58Z",
      "updated_at": "2025-08-13T04:44:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用Anthropic模式出现报错。\n{\n\t\"level\": 50,\n\t\"time\": 1754994179486,\n\t\"pid\": 10572,\n\t\"reqId\": \"req-a\",\n\t\"err\": {\n\t\t\"type\": \"TypeError\",\n\t\t\"message\": \"fetch failed: Request body length does not match content-length header\",\n\t\t\"stack\": \"TypeError: fetch failed\\n    at node:internal/deps/undici/undici:13510:13\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async a0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74708:11)\\n    at async o0 (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74678:84)\\ncaused by: RequestContentLengthMismatchError: Request body length does not match content-length header\\n    at AsyncWriter.end (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:42023:19)\\n    at writeIterable (C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:41912:16)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\"\n\t},\n\t\"msg\": \"fetch failed\"\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/538/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/534",
      "id": 3312476680,
      "node_id": "I_kwDON-_mZc7FcGII",
      "number": 534,
      "title": "使用openrouter的deepseek请求卡住",
      "user": {
        "login": "MEMZ-SYSTEM-CORE",
        "id": 157819531,
        "node_id": "U_kgDOCWgiiw",
        "avatar_url": "https://avatars.githubusercontent.com/u/157819531?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MEMZ-SYSTEM-CORE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-12T04:27:43Z",
      "updated_at": "2025-08-12T04:27:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用ccr code发信息一直卡住：\nC:\\Users\\h>ccr code\nService not running, starting service...\n╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                                                                                                      │\n│ Do you trust the files in this folder?                                                                               │\n│                                                                                                                      │\n│ C:\\Users\\h                                                                                                           │\n│                                                                                                                      │\n│ Claude Code may read files in this folder. Reading untrusted files may lead Claude Code to behave in unexpected      │\n│ ways.                                                                                                                │\n│                                                                                                                      │\n│ With your permission Claude Code may execute files in this folder. Executing untrusted code is unsafe.               │\n│                                                                                                                      │\n│ https://docs.anthropic.com/s/claude-code-security                                                                    │\n│                                                                                                                      │\n│ > 1. Yes, proceed                                                                                                    │\n│   2. No, exit                                                                                                        │\n│                                                                                                                      │\n╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n   Enter to confirm · Esc to exit\n╭───────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                         │\n│                                                   │\n│   /help for help, /status for your current setup  │\n│                                                   │\n│   cwd: C:\\Users\\h                                 │\n│                                                   │\n│   ─────────────────────────────────────────────── │\n│                                                   │\n│   Overrides (via env):                            │\n│                                                   │\n│   • API Key: you…                                 │\n│   • API timeout: 600000ms                         │\n│   • API Base URL: http://127.0.0.1:3456           │\n╰───────────────────────────────────────────────────╯\n\n ※ Tip: Use /agents to create context-efficient experts for specific tasks. Eg. Code Reviewer, Software Architect, Data\n Scientist\n\n> ni\n\n✢ Creating… (212s · ↑ 0 tokens · esc to interrupt)\n\n╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│ >                                                                                                                    │\n╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n\n✢ Creating… (213s · ↑ 0 tokens · esc to interrupt)\nclaude code router service has been successfully stopped.\n\nC:\\Users\\h>ccr code\nService not running, starting service...\n╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                                                                                                      │\n│ Do you trust the files in this folder?                                                                               │\n│                                                                                                                      │\n│ C:\\Users\\h                                                                                                           │\n│                                                                                                                      │\n│ Claude Code may read files in this folder. Reading untrusted files may lead Claude Code to behave in unexpected      │\n│ ways.                                                                                                                │\n│                                                                                                                      │\n│ With your permission Claude Code may execute files in this folder. Executing untrusted code is unsafe.               │\n│                                                                                                                      │\n│ https://docs.anthropic.com/s/claude-code-security                                                                    │\n│                                                                                                                      │\n│ > 1. Yes, proceed                                                                                                    │\n│   2. No, exit                                                                                                        │\n│                                                                                                                      │\n╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n   Enter to confirm · Esc to exit\n╭───────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                         │\n│                                                   │\n│   /help for help, /status for your current setup  │\n│                                                   │\n│   cwd: C:\\Users\\h                                 │\n│                                                   │\n│   ─────────────────────────────────────────────── │\n│                                                   │\n│   Overrides (via env):                            │\n│                                                   │\n│   • API Key: you…                                 │\n│   • API timeout: 600000ms                         │\n│   • API Base URL: http://127.0.0.1:3456           │\n╰───────────────────────────────────────────────────╯\n\n ※ Tip: Hit Enter to queue up additional messages while Claude is working.\n\n> 你好\n\n✢ Inferring… (71s · ↑ 0 tokens · esc to interrupt)\n\n╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│ >                                                                                                                    │\n╰─────────────────────────────\n\n\n配置如下：\n`{\n  \"APIKEY\": \"your-secret-key\",\n  \"PROXY_URL\": \"http://127.0.0.1:3456\",\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"NON_INTERACTIVE_MODE\": false,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"........\",\n      \"models\": [\n        \"deepseek/deepseek-chat-v3-0324:free\",\n        \"deepseek/deepseek-r1-0528:free\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,deepseek/deepseek-chat-v3-0324:free\",\n    \"think\": \"openrouter,deepseek/deepseek-r1-0528:free\"\n  }\n}`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/534/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/533",
      "id": 3312287177,
      "node_id": "I_kwDON-_mZc7FbX3J",
      "number": 533,
      "title": "provider的api_key支持统一复用ANTHROPIC_API的环境变量设置",
      "user": {
        "login": "z331281772",
        "id": 57203155,
        "node_id": "MDQ6VXNlcjU3MjAzMTU1",
        "avatar_url": "https://avatars.githubusercontent.com/u/57203155?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/z331281772",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-12T02:30:31Z",
      "updated_at": "2025-08-13T13:24:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "这个功能现在可以实现么，目前的服务下游用户使用各自的api_key，希望可以动态透传过来",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/533/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/531",
      "id": 3312151385,
      "node_id": "I_kwDON-_mZc7Fa2tZ",
      "number": 531,
      "title": "ccr ui 非root用户无法运行",
      "user": {
        "login": "JupiterFeng",
        "id": 134389159,
        "node_id": "U_kgDOCAKdpw",
        "avatar_url": "https://avatars.githubusercontent.com/u/134389159?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JupiterFeng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-12T01:23:40Z",
      "updated_at": "2025-08-12T01:30:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"628\" height=\"176\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e41c78b8-edf3-4f83-93f5-4089e5e785cb\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/531/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/528",
      "id": 3310611447,
      "node_id": "I_kwDON-_mZc7FU-v3",
      "number": 528,
      "title": "内网环境无法配置claude为环境变量时，执行crr code将提示“claude不是内部或外部命令”，router也会stop，想问一下有没有解决办法",
      "user": {
        "login": "jcj1996",
        "id": 12026314,
        "node_id": "MDQ6VXNlcjEyMDI2MzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/12026314?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jcj1996",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-11T15:44:13Z",
      "updated_at": "2025-08-11T15:45:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "想在内网（无互联网环境）使用router，已经能在router项目根目录下使用npx crr start启动，也已经在内网安装claude-code并可以在其所在目录下命令行输入claude运行，但内网环境配置环境变量受控，我无法将claude配置成环境变量，此时执行crr code将提示“claude不是内部或外部命令”，router也会stop，想问一下有没有解决办法",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/528/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/527",
      "id": 3310473734,
      "node_id": "I_kwDON-_mZc7FUdIG",
      "number": 527,
      "title": "API Error: 500",
      "user": {
        "login": "alexhonnoldliu",
        "id": 203225063,
        "node_id": "U_kgDODBz35w",
        "avatar_url": "https://avatars.githubusercontent.com/u/203225063?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alexhonnoldliu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 22,
      "created_at": "2025-08-11T15:06:12Z",
      "updated_at": "2026-02-11T21:14:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  ⎿ API Error: 500 {\"error\":{\"message\":\"fetch failedTypeError: fetch \n    failed\\n    at node:internal/deps/undici/undici:13510:13\\n    at \n    process.processTicksAndRejections \n    (node:internal/process/task_queues:95:5)\\n    at async c0 (/usr/lib/nod\n    e_modules/@musistudio/claude-code-router/dist/cli.js:74620:11)\\n    at \n    async i0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli\n    .js:74591:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}\n  ⎿  Interrupted by user\n  ⎿ API Error: 500 {\"error\":{\"message\":\"fetch failedTypeError: fetch \n    failed\\n    at node:internal/deps/undici/undici:13510:13\\n    at \n    process.processTicksAndRejections \n    (node:internal/process/task_queues:95:5)\\n    at async c0 (/usr/lib/nod\n    e_modules/@musistudio/claude-code-router/dist/cli.js:74620:11)\\n    at \n    async i0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli\n    .js:74591:84)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}\n  ⎿  Interrupted by user\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/527/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/526",
      "id": 3310471326,
      "node_id": "I_kwDON-_mZc7FUcie",
      "number": 526,
      "title": "Can not use ccr with cc actions.",
      "user": {
        "login": "DylanLIiii",
        "id": 78265988,
        "node_id": "MDQ6VXNlcjc4MjY1OTg4",
        "avatar_url": "https://avatars.githubusercontent.com/u/78265988?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DylanLIiii",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-11T15:05:33Z",
      "updated_at": "2026-02-06T10:08:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This is my GitHub Action yaml file. I also have a question, can't the Provider field be used?\n\n```yaml\nname: Claude Code\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_review_comment:\n    types: [created]\n  issues:\n    types: [opened, assigned]\n  pull_request_review:\n    types: [submitted]\n\njobs:\n  claude:\n    if: |\n      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||\n      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||\n      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||\n      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write          # 允许创建/推送分支与提交\n      pull-requests: write     # 允许创建/更新 PR\n      issues: write            # 允许更新 issue 评论\n      actions: read            # 让 Claude 读取 CI 结果\n      id-token: write\n    concurrency:\n      group: claude-code-${{ github.ref }}\n      cancel-in-progress: false\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 1\n\n      - name: Configure git identity (for commits)\n        run: |\n          git config user.name \"github-actions[bot]\"\n          git config user.email \"41898282+github-actions[bot]@users.noreply.github.com\"\n\n      - name: Install Bun\n        run: curl -fsSL https://bun.sh/install | bash\n        shell: bash\n\n      - name: Write Router config\n        shell: bash\n        run: |\n          mkdir -p $HOME/.claude-code-router\n          cat << 'EOF' > $HOME/.claude-code-router/config.json\n          {\n            \"log\": true,\n            \"NON_INTERACTIVE_MODE\": true,\n            \"API_TIMEOUT_MS\": 900000,\n\n            \"OPENAI_API_KEY\": \"${{ secrets.OPENROUTER_API_KEY }}\",\n            \"OPENAI_BASE_URL\": \"https://openrouter.ai/api/v1/chat/completions\",\n            \"OPENAI_MODEL\": \"qwen/qwen3-coder\"\n          }\n          EOF\n\n      - name: Start Claude Code Router\n        run: |\n          nohup ~/.bun/bin/bunx @musistudio/claude-code-router@1.0.35 start &\n        shell: bash\n      - name: Run Claude Code\n        id: claude\n        uses: anthropics/claude-code-action@beta\n        env:\n          ANTHROPIC_BASE_URL: http://localhost:3456\n        with:\n          anthropic_api_key: \"any-string-is-ok\"\n\n          # 允许用 git / bun / npm 等工具；按需收紧\n          allowed_tools: |\n            Bash(git:*),Bash(bun:*),Bash(npm:*),Bash(node:*),\n            Edit,MultiEdit,Write,TodoWrite,Glob,Grep,Read,LS\n\n          # 可选：让 Claude 读 CI 结果\n          additional_permissions: |\n            actions: read\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/526/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/522",
      "id": 3309238020,
      "node_id": "I_kwDON-_mZc7FPvcE",
      "number": 522,
      "title": "Bug: Router crashes with \"Cannot read properties of undefined (reading 'push')\" on agent invocation",
      "user": {
        "login": "Youming-FlowSpec",
        "id": 224447657,
        "node_id": "U_kgDODWDMqQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/224447657?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Youming-FlowSpec",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-11T09:38:19Z",
      "updated_at": "2025-08-22T07:21:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### Bug Description\n\nThe `@musistudio/claude-code-router` server crashes with a 500 Internal Server Error when attempting to invoke an agent with a simple command. The error is a `TypeError` indicating an attempt to call the `.push()` method on an `undefined` variable within the `transformRequestIn` function.\n\n### Steps to Reproduce\n\n1.  Start the `claude-code-router` local server.\n2.  Send a request to the server with the simple user content `调用bug-fixer`.\n3.  Observe the server's console output.\n\n### Expected Behavior\n\nThe server should correctly process the request to invoke the `bug-fixer` agent without crashing or returning a 500 error.\n\n### Actual Behavior\n\nThe server immediately crashes and logs a `TypeError`. The API client receives a 500 Internal Server Error response.\n\n### Error Logs / Stack Trace\n\n```log\nAPI Error: 500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'push')TypeError: Cannot read properties of undefined (reading 'push')\\n    at Gi.transformRequestIn (/Users/youmingding/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75365:23)\\n    at a0 (/Users/youmingding/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74608:158)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 (/Users/youmingding/.nvm/versions/node/v22.17.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:50)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/522/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/521",
      "id": 3309107964,
      "node_id": "I_kwDON-_mZc7FPPr8",
      "number": 521,
      "title": "Sometimes, as you are using it, you will receive a prompt saying \"api err\", and the output will not be printed.",
      "user": {
        "login": "SPERTMAN",
        "id": 96818423,
        "node_id": "U_kgDOBcVU9w",
        "avatar_url": "https://avatars.githubusercontent.com/u/96818423?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SPERTMAN",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-11T09:02:39Z",
      "updated_at": "2025-08-11T09:02:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n<img width=\"725\" height=\"551\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4f695f6d-7f93-45e1-a1ea-c4145f108fa7\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/521/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/520",
      "id": 3308788430,
      "node_id": "I_kwDON-_mZc7FOBrO",
      "number": 520,
      "title": "which model is recommended for web search? 哪个模型最适合用于网络搜索？",
      "user": {
        "login": "wanllow",
        "id": 92145159,
        "node_id": "U_kgDOBX4GBw",
        "avatar_url": "https://avatars.githubusercontent.com/u/92145159?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wanllow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-11T07:29:11Z",
      "updated_at": "2025-08-24T15:01:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "gpt 5 recommended perplexity/llama-3.1-sonar-large-128k-online from OpenRouter，I don't know but have to follow.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/520/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/519",
      "id": 3308565953,
      "node_id": "I_kwDON-_mZc7FNLXB",
      "number": 519,
      "title": "CCR UI Startup Issues: Fails to Load Without APIKEY, but Requires Login When APIKEY Is Provided",
      "user": {
        "login": "zhouweisheng-coder",
        "id": 62792687,
        "node_id": "MDQ6VXNlcjYyNzkyNjg3",
        "avatar_url": "https://avatars.githubusercontent.com/u/62792687?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhouweisheng-coder",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-11T05:57:30Z",
      "updated_at": "2026-01-06T13:05:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "If I don't configure the APIKEY in the config file, for example with \"APIKEY\": \"123\", the ccr UI does not load. However, if I do configure the APIKEY, the ccr code prompts me to log in.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/519/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/518",
      "id": 3308463177,
      "node_id": "I_kwDON-_mZc7FMyRJ",
      "number": 518,
      "title": "API Error 404 with ollama trying to catch unexit model",
      "user": {
        "login": "speedypard",
        "id": 24541350,
        "node_id": "MDQ6VXNlcjI0NTQxMzUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/24541350?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/speedypard",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-11T04:58:23Z",
      "updated_at": "2025-08-20T04:02:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "My config.json is very simple, only contains 1 model now.\nBut it keeps using ancient setting and returns error.\nI tried `ccr restart`, removed all models, reinstalled the ccr but still returning same error.\n```config.json\n{\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"mistral:latest\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,mistral:latest\"\n  }\n}\n```\n```shell\n  ⎿ API Error: 404 {\"error\":{\"message\":\"Error from provider(404): {\\\"error\\\":{\\\"message\\\":\\\"model\n    \\\\\\\"gemma3:12b\\\\\\\" not found, try pulling it\n    first\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\nError: Error from provider(404):\n    {\\\"error\\\":{\\\"message\\\":\\\"model \\\\\\\"gemma3:12b\\\\\\\" not found, try pulling it\n    first\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\n\\n    at bt (C:\\\\Users\\\\leetz\\\\AppData\\\\Roaming\\\n    \\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74653:11)\\n    at a0 (C:\\\\Users\\\\leetz\\\\AppDa\n    ta\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74711:11)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async o0\n    (C:\\\\Users\\\\leetz\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74678:84)\n    \",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/518/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/517",
      "id": 3308312291,
      "node_id": "I_kwDON-_mZc7FMNbj",
      "number": 517,
      "title": "System cannot catch config data",
      "user": {
        "login": "speedypard",
        "id": 24541350,
        "node_id": "MDQ6VXNlcjI0NTQxMzUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/24541350?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/speedypard",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-11T03:14:07Z",
      "updated_at": "2025-08-11T14:06:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I just reinstalled it and it shows this error that it cannot find config.json\nAnd there're also no \"logs\\ccr-1754881512594.log\" created\n\n```\nPS C:\\Users\\leetz> ccr start\nEnter Provider Name: ollama\nEnter Provider API KEY: ollama\nEnter Provider URL: http://localhost:11434/v1/chat/completions\nEnter MODEL Name: mistral:latest\nundefined\nLoaded JSON config from: C:\\Users\\leetz\\.claude-code-router\\config.json\nnode:events:485\n      throw er; // Unhandled 'error' event\n      ^\n\nError: ENOENT: no such file or directory, open 'C:\\Users\\leetz\\.claude-code-router\\logs\\ccr-1754881512594.log'\n    at async open (node:internal/fs/promises:640:25)\n    at async RotatingFileStream.reopen (C:\\Users\\leetz\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:77186:14)\nEmitted 'error' event on RotatingFileStream instance at:\n    at emitErrorNT (node:internal/streams/destroy:170:8)\n    at emitErrorCloseNT (node:internal/streams/destroy:129:3)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'open',\n  path: 'C:\\\\Users\\\\leetz\\\\.claude-code-router\\\\logs\\\\ccr-1754881512594.log'\n}\n\nNode.js v24.5.0\nPS C:\\Users\\leetz> ccr -v\nclaude-code-router version: 1.0.35\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/517/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/514",
      "id": 3307703028,
      "node_id": "I_kwDON-_mZc7FJ4r0",
      "number": 514,
      "title": "PRIVACY Issue.",
      "user": {
        "login": "0xHexE",
        "id": 29942725,
        "node_id": "MDQ6VXNlcjI5OTQyNzI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/29942725?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/0xHexE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-10T15:48:33Z",
      "updated_at": "2025-08-11T04:53:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Not sure why there is need for reading this???\n\n```\nService not running, starting service...\nService startup timeout, trying to start with default configuration...\nCreated minimal default configuration file at ~/.claude-code-router/config.json\nPlease edit this file with your actual configuration.\n/sys/firmware/dmi/tables/smbios_entry_point: Permission denied\nCan't read memory from /dev/mem\ncat: /sys/class/dmi/id/product_uuid: Permission denied\nWarning: Failed to generate temporary API key: 获取系统UUID失败: 无法在Linux系统上获取系统UUID，可能需要root权限\nContinuing without temporary API key...\nOpening UI at http://127.0.0.1:3456/ui/\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/514/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/513",
      "id": 3307682575,
      "node_id": "I_kwDON-_mZc7FJzsP",
      "number": 513,
      "title": "使用openrouter的deepseek报错",
      "user": {
        "login": "MEMZ-SYSTEM-CORE",
        "id": 157819531,
        "node_id": "U_kgDOCWgiiw",
        "avatar_url": "https://avatars.githubusercontent.com/u/157819531?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MEMZ-SYSTEM-CORE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-08-10T15:29:58Z",
      "updated_at": "2025-08-12T06:26:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用deepseek时出现：\n╭──────────────────────────╮\n│ ✻ Welcome to Claude Code │\n╰──────────────────────────╯\n\n Unable to connect to Anthropic services\n\n Failed to connect to api.anthropic.com: ERR_BAD_REQUEST\n\n Please check your internet connection and network settings.\n\n Note: Claude Code might not be available in your country. Check supported countries at\n https://anthropic.com/supported-countries\nclaude code router service has been successfully stopped.\n配置如下：\n`{\n  \"LOG\": true,\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"your-secret-key\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-不公布\",\n      \"models\": [\n        \"deepseek/deepseek-chat-v3-0324:free\",\n        \"deepseek/deepseek-r1-0528:free\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,deepseek/deepseek-chat-v3-0324:free\",\n    \"background\": \"openrouter,deepseek/deepseek-chat-v3-0324:free\",\n    \"think\": \"openrouter,deepseek/deepseek-r1-0528:free\",\n    \"webSearch\": \"openrouter,deepseek/deepseek-chat-v3-0324:free\"\n  }\n}`\n有大佬能解决吗？\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/513/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/511",
      "id": 3307351283,
      "node_id": "I_kwDON-_mZc7FIizz",
      "number": 511,
      "title": "使用gemini 2.5报错",
      "user": {
        "login": "MacLeeee",
        "id": 23634845,
        "node_id": "MDQ6VXNlcjIzNjM0ODQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/23634845?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MacLeeee",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-08-10T08:52:13Z",
      "updated_at": "2025-08-14T12:29:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "报错如下：“⎿  API Error (429 {\"error\":{\"message\":\"Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\nError: Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\n\\n    at Et (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at c0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\nError: Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\n\\n    at Et (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at c0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 2/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\nError: Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\n\\n    at Et (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at c0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 2 seconds… (attempt 3/10)\n  ⎿  API Error (429 {\"error\":{\"message\":\"Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\nError: Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 429,\\n    \\\"message\\\": \\\"Resource has been exhausted (e.g. check quota).\\\",\\n    \\\"status\\\": \\\"RESOURCE_EXHAUSTED\\\"\\n  }\\n}\\n\\n    at Et (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at c0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 4 seconds… (attempt 4/10)”",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/511/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/510",
      "id": 3307283866,
      "node_id": "I_kwDON-_mZc7FISWa",
      "number": 510,
      "title": "如何接入  gpt-5",
      "user": {
        "login": "jeffery9",
        "id": 1404460,
        "node_id": "MDQ6VXNlcjE0MDQ0NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404460?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeffery9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-10T07:38:50Z",
      "updated_at": "2025-08-22T01:16:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/510/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/509",
      "id": 3307244973,
      "node_id": "I_kwDON-_mZc7FII2t",
      "number": 509,
      "title": "Unable to connect to Mistral API",
      "user": {
        "login": "ekatiyar",
        "id": 6284296,
        "node_id": "MDQ6VXNlcjYyODQyOTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6284296?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ekatiyar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-10T06:45:12Z",
      "updated_at": "2025-12-11T11:28:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When submitting a request, the claude code ui freezes up at 0 or 1s, and after a while returns this error:\n\n```\n> grab this readme: https://github.com/musistudio/claude-code-router/blob/main/README.md\n  ⎿ API Error: 422 {\"error\":{\"message\":\"Error from provider:\n    {\\\"detail\\\":[{\\\"type\\\":\\\"string_type\\\",\\\"loc\\\":[\\\"body\\\",\\\"messages\\\",0,\\\"system\\\",\\\"content\\\",\\\"str\\\"],\\\"msg\\\":\\\"Input\n    should be a valid string\\\",\\\"input\\\":[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"You are Claude Code, Anthropic's official CLI for\n    Claude.\\\",\\\"cache_control\\\":{\\\"type\\\":\\\"ephemeral\\\"}},{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"\\\\nYou are an interactive CLI tool that\n    helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the\n    user.\\\\n\\\\nIMPORTANT: Assist with defensive security tasks only. Refuse to create, modify, or improve code that may be used\n    maliciously. Allow security analysis, detection rules, vulnerability explanations, defensive tools, and security\n    documentation.\\\\nIMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are\n    for helping the user with programming. You may use URLs provided by the user in their messages or local files.\\\\n\\\\nIf the\n    user asks for help or wants to give feedback inform them of the following: \\\\n- /help: Get help with using Claude Code\\\\n-\n    To give feedback, users should report the issue at https://github.com/anthropics/claude-code/issues\\\\n\\\\nWhen the user\n    directly asks about Claude Code (eg 'can Claude Code do...', 'does Claude Code have...') or asks in second person (eg 'are\n    you able...', 'can you do...'), first use the WebFetch tool to gather information to answer the question from Claude Code\n...\n    errors from the client handled?\\\\nassistant: Clients are marked as failed in the `connectToServer` function in\n    src/services/process.ts:712.\\\\n</example>\\\\n\\\\n\\\"},{\\\"type\\\":\\\"extra_forbidden\\\",\\\"loc\\\":[\\\"body\\\",\\\"messages\\\",0,\\\"system\\\"\n    ,\\\"content\\\",\\\"list[union[TextChunk,AudioChunk,function-after[validate_codebooks(),\n    AudioEncodecChunk],ThinkChunk]]\\\",1,\\\"ThinkChunk\\\",\\\"cache_control\\\"],\\\"msg\\\":\\\"Extra inputs are not\n    permitted\\\",\\\"input\\\":{\\\"type\\\":\\\"ephemeral\\\"}},{\\\"type\\\":\\\"string_type\\\",\\\"loc\\\":[\\\"body\\\",\\\"messages\\\",1,\\\"user\\\",\\\"conten\n    t\\\",\\\"str\\\"],\\\"msg\\\":\\\"Input should be a valid string\\\",\\\"input\\\":[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"<system-reminder>\\\\nAs you\n    answer the user's questions, you can use the following context:\\\\n# important-instruction-reminders\\\\nDo what has been\n    asked; nothing more, nothing less.\\\\nNEVER create files unless they're absolutely necessary for achieving your\n    goal.\\\\nALWAYS prefer editing an existing file to creating a new one.\\\\nNEVER proactively create documentation files (*.md)\n    or README files. Only create documentation files if explicitly requested by the User.\\\\n\\\\n      \\\\n      IMPORTANT: this\n    context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to\n    your task.\\\\n</system-reminder>\\\\n\\\"},{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"Caveat: The messages below were generated by the user\n    while running local commands. DO NOT respond to these messages or otherwise consider them in your response unless the user\n    explicitly asks you to.\\\"},{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"<command-name>/status</command-name>\\\\n\n    <command-message>status</command-message>\\\\n\n    <command-args></command-args>\\\"},{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"<local-command-stdout>(no\n    content)</local-command-stdout>\\\"},{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"grab this readme: https://github.com/musistudio/claude-code\n    -router/blob/main/README.md\\\"},{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"<system-reminder>\\\\nThis is a reminder that your todo list is\n    currently empty. DO NOT mention this to the user explicitly because they are already aware. If you are working on tasks that\n     would benefit from a todo list please use the TodoWrite tool to create one. If not, please feel free to ignore. Again do\n    not mention this message to the user.\\\\n</system-reminder>\\\",\\\"cache_control\\\":{\\\"type\\\":\\\"ephemeral\\\"}}]},{\\\"type\\\":\\\"extra\n    _forbidden\\\",\\\"loc\\\":[\\\"body\\\",\\\"messages\\\",1,\\\"user\\\",\\\"content\\\",\\\"list[tagged-union[TextChunk,ImageURLChunk,DocumentURLCh\n    unk,ReferenceChunk,BBoxChunk,FileURLChunk,AudioChunk,FileChunk,ThinkChunk]]\\\",5,\\\"text\\\",\\\"cache_control\\\"],\\\"msg\\\":\\\"Extra\n    inputs are not permitted\\\",\\\"input\\\":{\\\"type\\\":\\\"ephemeral\\\"}}]}\\n    at Et\n    (/home/eash/.nvm/versions/node/v20.15.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at c0\n    (/home/eash/.nvm/versions/node/v20.15.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async i0\n    (/home/eash/.nvm/versions/node/v20.15.1/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:84)\",\"type\":\"api_e\n    rror\",\"code\":\"provider_response_error\"}}\n```\n\nI have ccr configured as so, and confirmed other provider, model pairs were working:\n```\n 13 {\n 12   \"LOG\": true,\n 11   \"API_TIMEOUT_MS\": 600000,\n 10   \"NON_INTERACTIVE_MODE\": false,\n  9   \"Providers\": [\n  8     {\n  7       \"name\": \"mistral\",\n  6       \"api_base_url\": \"https://api.mistral.ai/v1/chat/completions\",\n  5       \"api_key\": \"REDACTED\",\n  4       \"models\": [\n  3         \"devstral-medium-latest\",\n  2         \"devstral-small-latest\",\n  1         \"codestral-latest\"\n14        ]\n  1     },\n  2     {\n```\n\nand I confirmed I was able to query the endpoint using curl:\n```\n~ curl --location \"https://api.mistral.ai/v1/chat/completions\" \\\n     --header 'Content-Type: application/json' \\\n     --header 'Accept: application/json' \\\n     --header \"Authorization: Bearer REDACTED\" \\\n     --data '{\n    \"model\": \"devstral-medium-latest\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Create a new file called test.py and write a function for fibonacci\"}],\n    \"tools\": [\n        {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": \"create_file\",\n                \"description\": \"Create a new file with the given name and content\",\n                \"parameters\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"filename\": {\n                            \"type\": \"string\",\n                            \"description\": \"The name of the file to create\"\n                        },\n                        \"content\": {\n                            \"type\": \"string\",\n                            \"description\": \"The content to write to the file\"\n                        }\n                    },\n                    \"required\": [\"filename\", \"content\"]\n                }                                                                                                              <....\n{\"id\":\"REDACTED\",\"created\":1754807498,\"model\":\"devstral-medium-latest\",\"usage\":{\"prompt_tokens\":117,\"total_tokens\":329,\"completion_tokens\":212},\"object\":\"chat.completion\",\"choices\":[{\"index\":0,\"finish_reason\":\"tool_calls\",\"message\":{\"role\":\"assistant\",\"tool_calls\":[{\"id\":\"uEn8BliGp\",\"function\":{\"name\":\"create_file\",\"arguments\":\"{\\\"filename\\\": \\\"test.py\\\", \\\"content\\\": \\\"def fibonacci(n):\\\\n    \\\\\\\"\\\\\\\"\\\\\\\"\\\\n    Calculate the nth Fibonacci number.\\\\n\\\\n    :param n: The position in the Fibonacci sequence.\\\\n    :return: The nth Fibonacci number.\\\\n    \\\\\\\"\\\\\\\"\\\\\\\"\\\\n    if n <= 0:\\\\n        return \\\\\\\"Input should be a positive integer.\\\\\\\"\\\\n    elif n == 1:\\\\n        return 0\\\\n    elif n == 2:\\\\n        return 1\\\\n    else:\\\\n        a, b = 0, 1\\\\n        for _ in range(2, n):\\\\n            a, b = b, a + b\\\\n        return b\\\\n\\\\n# Example usage\\\\nif __name__ == \\\\\\\"__main__\\\\\\\":\\\\n    n = 10  # Change this value to test other cases\\\\n    print(f\\\\\\\"The {n}th Fibonacci number is: {fibonacci(n)}\\\\\\\")\\\"}\"},\"index\":0}],\"content\":\"\"}}]}%\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/509/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        1120
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/508",
      "id": 3307046654,
      "node_id": "I_kwDON-_mZc7FHYb-",
      "number": 508,
      "title": "gemini 官方的A开头的key配置上无法使用",
      "user": {
        "login": "KuanKuanya",
        "id": 36219704,
        "node_id": "MDQ6VXNlcjM2MjE5NzA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/36219704?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/KuanKuanya",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 21,
      "created_at": "2025-08-10T00:54:41Z",
      "updated_at": "2025-08-15T07:20:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"941\" height=\"669\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1762184f-219b-4468-bc1c-560be2190dfb\" />\n\n<img width=\"2442\" height=\"238\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4305a7b6-1ace-4cb6-976b-13b6bbf5db5f\" />\n\n是我哪里配置错了吗？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/508/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/504",
      "id": 3306239654,
      "node_id": "I_kwDON-_mZc7FETam",
      "number": 504,
      "title": "/model does not show configured models",
      "user": {
        "login": "V4G4X",
        "id": 34249137,
        "node_id": "MDQ6VXNlcjM0MjQ5MTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/34249137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/V4G4X",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-09T11:09:45Z",
      "updated_at": "2025-08-10T18:33:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "From the demos I have seen on Youtube. ClaudeCode's model picker shows the model list from our custom providers, right?\n\nI have configured that the above is working, I see Activity on OpenRouter when I use `ccr code`.\nBut the `/model` picker does not show these options.\nIt shows the default `sonnet` and `opus` models.\n\n<img width=\"777\" height=\"332\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/96635423-fbc4-4be8-9913-a7b393b9a6db\" />\n\nConfig: \n```json\n{\n  \"LOG\": false,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"my-key\",\n      \"models\": [\n        \"openai/gpt-5\",\n        \"openai/o3\",\n        \"google/gemini-2.5-flash-lite\",\n        \"google/gemini-2.5-pro\",\n        \"anthropic/claude-sonnet-4\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,openai/gpt-5\",\n    \"background\": \"openrouter,google/gemini-2.5-flash-lite\",\n    \"think\": \"openrouter,openai/o3\",\n    \"webSearch\": \"openrouter,google/gemini-2.5-pro\"\n  }\n}\n```\n\nIs this a known issue that broke with a recent ClaudeCode update?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/504/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/503",
      "id": 3305119327,
      "node_id": "I_kwDON-_mZc7FAB5f",
      "number": 503,
      "title": "[BUG] API Error - Conflicting reasoning parameters",
      "user": {
        "login": "JJsilvera1",
        "id": 46360466,
        "node_id": "MDQ6VXNlcjQ2MzYwNDY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/46360466?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JJsilvera1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-08T20:16:18Z",
      "updated_at": "2025-08-12T07:21:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Ill try to fix this on my own temporarily, but since I updated, this seems to be an issue with larger requests with lots of text. \n\n# Bug Report: API Error - Conflicting reasoning parameters\n\n## Summary\nClaude Code Router is throwing a 400 API error due to simultaneously sending both `reasoning.effort` and `reasoning.max_tokens` parameters to the OpenRouter provider, which only allows one of these parameters to be specified.\n\n## Environment\n- **Platform**: Windows (win32)\n- **Claude Code Router Version**: 1.0.70 (inferred from error log)\n- **Node.js Version**: 22.11.0\n- **Installation Method**: Global npm installation\n- **Model Provider**: OpenRouter\n- **Model**: `z-ai/glm-4.5`\n\n## Error Details\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"Only one of \\\\\\\"reasoning.effort\\\\\\\" and \\\\\\\"reasoning.max_tokens\\\\\\\" can be specified\\\",\\\"code\\\":400},\\\"user_id\\\":\\\"[REDACTED]\\\"}Error: Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"Only one of \\\\\\\"reasoning.effort\\\\\\\" and \\\\\\\"reasoning.max_tokens\\\\\\\" can be specified\\\",\\\"code\\\":400},\\\"user_id\\\":\\\"[REDACTED]\\\"}\\n    at Et ([INSTALL_PATH]\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74566:11)\\n    at c0 ([INSTALL_PATH]\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74623:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 ([INSTALL_PATH]\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74591:84)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n## Steps to Reproduce\n1. Install Claude Code Router via npm: `npm install -g @musistudio/claude-code-router`\n2. Configure with OpenRouter provider and model `z-ai/glm-4.5`\n3. Run any command that triggers an API call through the router\n4. The error occurs consistently\n\n## Expected Behavior\nThe router should only send one of the two mutually exclusive parameters (`reasoning.effort` OR `reasoning.max_tokens`) to the API, or handle the provider's requirement gracefully.\n\n## Actual Behavior\nThe router is sending both parameters simultaneously, causing the OpenRouter API to reject the request with a 400 error.\n\n## Additional Context\n- User configuration files do NOT contain any `reasoning` parameter configuration\n- The issue appears to be internal to the Claude Code Router's API request handling\n- The error originates from the compiled JavaScript at `dist/cli.js:74566:11`\n- The issue persists regardless of user configuration changes\n\n## Configuration Analysis\nStandard Claude Code configuration files were examined:\n- Main settings file - Contains only hooks and model settings\n- MCP configuration file - Contains MCP server configurations  \n- Local settings file - Contains permissions and MCP settings\n\nNone of these files contain the conflicting parameters, indicating this is an internal router issue.\n\n## Suggested Fix\nThe Claude Code Router should:\n1. Implement logic to ensure only one reasoning parameter is sent to the API\n2. Add validation to prevent both parameters from being set simultaneously\n3. Provide clearer error messages when this configuration conflict occurs\n4. Possibly add a configuration option to control which reasoning parameter to prioritize\n\n## Impact\nThis is a blocking issue that prevents the router from functioning with OpenRouter's z-ai/glm-4.5 model on larger amounts of text. \n\n## Root Cause\nThe issue appears to be that the Claude Code Router is internally generating both `reasoning.effort` and `reasoning.max_tokens` parameters for API requests, violating the OpenRouter API contract. This is not a user configuration issue but a bug in the router's parameter handling logic.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/503/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/501",
      "id": 3304441389,
      "node_id": "I_kwDON-_mZc7E9cYt",
      "number": 501,
      "title": "发现一个bug，关于ccr转gemini官方API的一次性调用多个工具ccr解析失败的情况",
      "user": {
        "login": "erik6293",
        "id": 154040167,
        "node_id": "U_kgDOCS53Zw",
        "avatar_url": "https://avatars.githubusercontent.com/u/154040167?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/erik6293",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-08-08T15:34:11Z",
      "updated_at": "2025-08-14T22:39:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "就是如果gemini同时调用2个及以上的工具，就会导致cc不能正常执行，导致中断。\n复现方式就是和claude code对话，要求他一次性调用2个及以上工具，他说他会调用，实际上工具请求捕获到了，claude code并没有执行，但是你如果让他每次最多调用一个工具，就能稳定调用。\n\n# 多工具调用解析失败\n\n下图展现了工具调用后，解析失败的表现（有时表现为使用了一个工具，有时候直接中断了）：\n<img width=\"1289\" height=\"163\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0e8009e4-0f75-4f15-ae30-c3ae411d700d\" />\n\n<img width=\"1176\" height=\"558\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3fe246e0-e94f-44e1-b960-e3579bb847ac\" />\n\nlog（证明了工具gemini 已经给出，实际是解析失败）:\n\n[ccrlog.txt](https://github.com/user-attachments/files/21687611/ccrlog.txt)\n\n\nlog中显示 gemini是成功返回了2个工具相应的，但是ccr解析失败了\n\n<img width=\"1494\" height=\"759\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/54a04907-04bf-4aa4-8d5c-d2ebda2fb0ba\" />\n\n<img width=\"1652\" height=\"678\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b4d88929-2b11-4862-8a7e-0926bd419ca3\" />\n\n# 单工具调用成功\n\n\n<img width=\"1375\" height=\"420\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d0391ab3-3aec-4e0d-ba36-126a025f9900\" />\n如果要求claude code 一次最多调用一个模型，那么就能正确解析。\n这个bug会导致claude code自动化中断，也就是TODO的时候，他有时候会一次调用多个模型，希望能够适配。\n万分感谢。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/501/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/500",
      "id": 3303901081,
      "node_id": "I_kwDON-_mZc7E7YeZ",
      "number": 500,
      "title": "为什么gemini说只能执行安全任务(security tasks)?",
      "user": {
        "login": "vme50dollar",
        "id": 151508158,
        "node_id": "U_kgDOCQfUvg",
        "avatar_url": "https://avatars.githubusercontent.com/u/151508158?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vme50dollar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-08T12:34:57Z",
      "updated_at": "2025-08-09T02:22:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1799\" height=\"996\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/be3dd706-f38f-42d4-b286-19470c75711f\" />\n配置如下\n\n```{\n    \"PROXY_URL\": \"http://127.0.0.1:7890\",\n    \"HOST\": \"127.0.0.1\",\n    \"PORT\": 9527,\n    \"LOG\": true,\n    \"Providers\": [\n      \n      {\n        \"name\": \"gemini\",\n        \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n        \"api_key\": \"key\",\n        \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n        \"transformer\": {\n          \"use\": [\"gemini\"]\n        }\n      }\n    ],\n    \"Router\": {\n      \"default\": \"gemini,gemini-2.5-flash\",\n      \"think\": \"gemini,gemini-2.5-pro\"\n    }\n  }",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/500/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/499",
      "id": 3303676203,
      "node_id": "I_kwDON-_mZc7E6hkr",
      "number": 499,
      "title": "claude code route 图片，已读乱回/已读不回",
      "user": {
        "login": "lyw123www",
        "id": 43290263,
        "node_id": "MDQ6VXNlcjQzMjkwMjYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/43290263?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lyw123www",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-08T11:23:10Z",
      "updated_at": "2025-09-02T05:19:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "模型用的Gemini 2.5 pro，\n\n- 在ccr中平时用（不牵扯图片）的时候正常问答\n- 在cherry studio中能正常识别图片\n- \n就是在ccr中 一导入图片就，\n已读乱回\n没有截图.就是无法获取页面信息，乱说一些东西\n\n已读不回\n\n<img width=\"916\" height=\"180\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/607211aa-b0b3-46bf-b01e-c7f7c90dc4e5\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/499/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/498",
      "id": 3303497020,
      "node_id": "I_kwDON-_mZc7E5108",
      "number": 498,
      "title": "[help] 一直显示‘正在使用工具...’ 就没有下一步操作了",
      "user": {
        "login": "xie-yongfeng",
        "id": 90496623,
        "node_id": "MDQ6VXNlcjkwNDk2NjIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/90496623?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xie-yongfeng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-08T10:21:51Z",
      "updated_at": "2025-08-08T11:46:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"720\" height=\"488\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/958cf4a9-b329-444f-9450-6c63cc7ef533\" />\n有没有大佬遇到这样的情况，使用的openai router提供的claude3.7模型",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/498/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/495",
      "id": 3303185609,
      "node_id": "I_kwDON-_mZc7E4pzJ",
      "number": 495,
      "title": "OpenAI API rejects requests",
      "user": {
        "login": "tomascupr",
        "id": 201650992,
        "node_id": "U_kgDODATzMA",
        "avatar_url": "https://avatars.githubusercontent.com/u/201650992?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tomascupr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-08T08:43:04Z",
      "updated_at": "2025-08-08T11:38:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When using claude-code-router to route Claude Code requests to OpenAI models (GPT-5, GPT-4o, etc.), the requests fail because Claude Code sends 287 tools which exceeds OpenAI's maximum limit of 128 tools per request.\n\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\n  \"error\": {\n    \"message\": \"Invalid 'tools': array too long. Expected an array with maximum length 128, but got an array with length 287 instead.\",\n    \"type\": \"invalid_request_error\",\n    \"param\": \"tools\",\n    \"code\": \"array_above_max_length\"\n  }\n}\n\n**Expected Behavior**\n\nThe router should automatically filter or truncate the tools array to respect OpenAI's 128 tool limit, keeping the most essential tools.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/495/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/493",
      "id": 3302967959,
      "node_id": "I_kwDON-_mZc7E30qX",
      "number": 493,
      "title": "[Feature Request] Support for openai/gpt-oss-120b",
      "user": {
        "login": "Entropy-xcy",
        "id": 22727121,
        "node_id": "MDQ6VXNlcjIyNzI3MTIx",
        "avatar_url": "https://avatars.githubusercontent.com/u/22727121?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Entropy-xcy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-08T07:35:37Z",
      "updated_at": "2025-09-06T13:05:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I tried configuring the claude-code-router with the vllm served openai/gpt-oss-120b model. And it does not work. \n\nHere is the vllm command I used for the serving: \n```\ndocker run --rm --runtime nvidia --ipc=host -p 8000:8000 \\\n  vllm/vllm-openai:gptoss \\\n  --model openai/gpt-oss-120b \\\n  --tensor-parallel-size 2 \\\n  --host 0.0.0.0 \\\n  --port 8000\n```\n\nHere is the `~/.claude-code-router/config.json` I use: \n```\n{\n  \"LOG\": false,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"Transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"gptoss\",\n      \"api_base_url\": \"https://xxxxxxxxxx\",\n      \"api_key\": \"sk-xxxxxxxxxxxx\",\n      \"models\": [\n        \"gpt-oss-120b\"\n      ],\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gpt/gpt-oss-120b\"\n  }\n}\n```\nAnd when start Claude Code, nothing get prints out after a prompt (tokens been used but nothing seems happened)\n\nI can provide free gpt‑oss‑120b API for anyone who wants to take a shot on resolving this issue. (just leave me an email) ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/493/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/492",
      "id": 3302881315,
      "node_id": "I_kwDON-_mZc7E3fgj",
      "number": 492,
      "title": "关于硅基流动的设置问题",
      "user": {
        "login": "better319",
        "id": 13842581,
        "node_id": "MDQ6VXNlcjEzODQyNTgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/13842581?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/better319",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-08T07:06:00Z",
      "updated_at": "2025-08-08T07:09:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"name\": \"siliconflow\",\n  \"api_base_url\": \"https://api.siliconflow.cn/v1/chat/completions\",\n  \"api_key\": \"sk-xxx\",\n  \"models\": [\"moonshotai/Kimi-K2-Instruct\"],\n  \"transformer\": {\n    \"use\": [\n      [\n        \"maxtoken\",\n        {\n          \"max_tokens\": 16384\n        }\n      ]\n    ]\n  }\n}\n\n\n这个的maxtokens 是不是不对啊我看是128k，那是不是应该是（128-10）*1000=118000？\n\n<img width=\"558\" height=\"517\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/af78c68b-755d-4627-8709-c55de7a666ec\" />\n\n<img width=\"1435\" height=\"568\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/67842b74-91aa-4f12-a51a-ade5f3521a79\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/492/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/491",
      "id": 3302814707,
      "node_id": "I_kwDON-_mZc7E3PPz",
      "number": 491,
      "title": "[Feature Request or Bug]",
      "user": {
        "login": "JJsilvera1",
        "id": 46360466,
        "node_id": "MDQ6VXNlcjQ2MzYwNDY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/46360466?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JJsilvera1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-08T06:37:06Z",
      "updated_at": "2025-08-08T17:26:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Not sure which one this is, but when I do logging TRUE the logfile shows very inconsistent token amounts. It pretty much doesn't even work :)\n\nIt will show tokens of 0 for a request or 1, and if it does show, it wont show the response tokens. Its very inconsistent, and hard to make a program that estimates costs or what the context window currently is. \n\nCan you fix or add this feature for the APIs (openrouter) to return data such as the token amounts (cached, input, output) and the cost?\n\nThanks",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/491/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/489",
      "id": 3302504730,
      "node_id": "I_kwDON-_mZc7E2Dka",
      "number": 489,
      "title": "调用Gemini，400错误，配置无变化，前天正常，今天就报错",
      "user": {
        "login": "AseaJ",
        "id": 192666417,
        "node_id": "U_kgDOC3vbMQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/192666417?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AseaJ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-08T03:38:02Z",
      "updated_at": "2025-08-08T16:52:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"Providers\": [\n    {\n      \"name\": \"wolfai\",\n      \"api_base_url\": \"https://wolfai.top/v1/chat/completions\",\n      \"api_key\": \"api_key\",\n      \"models\": [\n        \"gemini-2.5-pro\",\n        \"gemini-2.5-flash\",\n        \"claude-sonnet-4-20250514\",\n        \"DeepSeek-R1-0528\"\n      ],\n      \"transformer\": {\"use\": [\"wolfai\"] }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"wolfai,gemini-2.5-pro\",\n    \"background\": \"wolfai,gemini-2.5-flash\",\n    \"think\": \"wolfai,DeepSeek-R1-0528\",\n    \"longContext\": \"wolfai,claude-sonnet-4-20250514\"\n  }\n}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/489/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/488",
      "id": 3302490379,
      "node_id": "I_kwDON-_mZc7E2AEL",
      "number": 488,
      "title": "open router的gemini模型错误",
      "user": {
        "login": "AdijeShen",
        "id": 16702475,
        "node_id": "MDQ6VXNlcjE2NzAyNDc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/16702475?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AdijeShen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-08-08T03:27:27Z",
      "updated_at": "2025-08-17T16:24:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我配置的是\n```\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"google/gemini-2.5-flash\",\n        \"anthropic/claude-sonnet-4\",\n        \"google/gemini-2.5-pro-preview\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\"\n        ]\n      }\n    }\n```\n偶尔能用，但偶尔会有报错，内容是：\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"Only one of \n    \\\\\\\"reasoning.effort\\\\\\\" and \\\\\\\"reasoning.max_tokens\\\\\\\" can be \n    specified\\\",\\\"code\\\":400},\\\"user_id\\\":\\\"user_30wMZobzl66csvWwG3aPBW7p7er\\\"}Error: Error from \n    provider: {\\\"error\\\":{\\\"message\\\":\\\"Only one of \\\\\\\"reasoning.effort\\\\\\\" and \n    \\\\\\\"reasoning.max_tokens\\\\\\\" can be \n    specified\\\",\\\"code\\\":400},\\\"user_id\\\":\\\"user_30wMZobzl66csvWwG3aPBW7p7er\\\"}\\n    at Et \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at c0 \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at \n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0 \n    (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:84)\",\"type\":\"api_error\n    \",\"code\":\"provider_response_error\"}}\n```\n我看好像还没有类似的issue，不知道是不是openrouter本身的关系，这要怎么解决？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/488/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/487",
      "id": 3302339280,
      "node_id": "I_kwDON-_mZc7E1bLQ",
      "number": 487,
      "title": "[BUG] OpenAI not working",
      "user": {
        "login": "JJsilvera1",
        "id": 46360466,
        "node_id": "MDQ6VXNlcjQ2MzYwNDY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/46360466?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JJsilvera1",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 19,
      "created_at": "2025-08-08T01:33:36Z",
      "updated_at": "2025-08-28T02:50:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " ## Bug Report\n\n  ### Description\n  Getting a 404 error \"Provider 'openai' not found\" when trying to switch to OpenAI model, despite\n   having OpenAI properly configured in config.json.\n\n  ### Steps to Reproduce\n  1. Configure OpenAI provider in config.json:\n  ```json\n  {\n    \"name\": \"openai\",\n    \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n    \"api_key\": \"sk-proj-...\",\n    \"models\": [\"gpt-5\", \"gpt-5-mini\"]\n  }\n\nI had claude code double check my config and everything looks correct. I tried multiple settings, but no avail. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/487/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/485",
      "id": 3300642191,
      "node_id": "I_kwDON-_mZc7Eu82P",
      "number": 485,
      "title": "考虑增加多个KEY轮询么？",
      "user": {
        "login": "luluxiuxiu",
        "id": 86842763,
        "node_id": "MDQ6VXNlcjg2ODQyNzYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/86842763?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luluxiuxiu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-07T13:59:09Z",
      "updated_at": "2025-08-11T12:54:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "考虑增加多个KEY轮询么？像我有很多魔塔KEY或者百炼的KEY，我想轮询使用不用每次打开UI切换一次，这样我也保证自己KEY够用。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/485/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/484",
      "id": 3300149910,
      "node_id": "I_kwDON-_mZc7EtEqW",
      "number": 484,
      "title": "配置错误(API Error 400)",
      "user": {
        "login": "HedgeSage",
        "id": 25528760,
        "node_id": "MDQ6VXNlcjI1NTI4NzYw",
        "avatar_url": "https://avatars.githubusercontent.com/u/25528760?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/HedgeSage",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-08-07T11:41:15Z",
      "updated_at": "2025-08-07T15:25:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**配置内容如下：**\n```\n{\n    \"LOG\": false,\n    \"OPENAI_API_KEY\": \"\",\n    \"OPENAI_BASE_URL\": \"\",\n    \"OPENAI_MODEL\": \"\",\n    \"Providers\": [\n      {\n        \"name\": \"openrouter\",\n        \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n        \"api_key\": \"\",\n        \"models\": [\"anthropic/claude-sonnet-4.0\"],\n        \"transformer\": {\n          \"use\": [\"openrouter\"]\n        }\n      },\n      {\n        \"name\": \"gemini\",\n        \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n        \"api_key\": \"\",\n        \"models\": [\"gemini-2.5-pro\"],\n        \"transformer\": {\n          \"use\": [\"gemini\"]\n        }\n      }\n    ],\n    \"Router\": {\n      \"default\": \"openrouter, anthropic/claude-sonnet-4.0\"\n    }\n  }\n```\n\n\n**报错如下：**\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: \n    {\\\"error\\\":{\\\"message\\\":\\\" anthropic/claude-sonnet-4.0 is not a valid \n    model ID\\\",\\\"code\\\":400}\n    \\\"}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/484/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/483",
      "id": 3299454345,
      "node_id": "I_kwDON-_mZc7Eqa2J",
      "number": 483,
      "title": "openai compatible api接入convertOpenAIResponseToAnthropic异常",
      "user": {
        "login": "redvelvets",
        "id": 108808672,
        "node_id": "U_kgDOBnxJ4A",
        "avatar_url": "https://avatars.githubusercontent.com/u/108808672?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/redvelvets",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-07T08:01:56Z",
      "updated_at": "2025-09-27T13:55:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## 求助贴\n\n有没有佬友遇到过这个问题，模型是openai compatible api，但是接入不进去，显示convertOpenAIResponseToAnthropic异常\n\n### claude code执行输出\n<img width=\"2490\" height=\"289\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c3798473-acdf-4f48-9676-9fef4d4def2c\" />\n\n```bash\n> hi\n  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading '0')TypeError: Cannot read properties of undefined (reading '0')\\n    at Co.convertOpenAIResponseToAnthropic (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:75127:22)\\n    at Co.transformResponseIn (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74901:40)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async a0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74631:46)\\n    at async n0 (/usr/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:105)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n\n```\n\n---\n\n\n###  config.json配置\n```json\n{\n  \"LOG\": false,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"\",\n  \"Transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"openai-compatible\",\n      \"api_base_url\": \"https://mify-be.pt.xiaomi.com/open/api/v1/chat/completions\",\n      \"api_key\": \"app-aO39bmXVKKm9GtaXU3tAlrWp\",\n      \"models\": [\n        \"hosted_vllm/Qwen-235B-A22B\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openai-compatible,hosted_vllm/Qwen-235B-A22B\",\n  }\n}\n```\n\n---\n### POST请求验证是否真的是openai compatible response\npost请求访问openai compatible api得到响应结构：\n```json\n{\n    \"id\": \"chatcmpl-7daf938f0c1aa423115bf814f7470870\",\n    \"created\": 1754552517,\n    \"model\": \"hosted_vllm/Qwen-235B-A22B\",\n    \"object\": \"chat.completion\",\n    \"system_fingerprint\": null,\n    \"choices\": [\n        {\n            \"finish_reason\": \"stop\",\n            \"index\": 0,\n            \"message\": {\n                \"content\": \"\\n\\n1+1在常规数学中的结果是**2**。  \\n如果涉及其他领域（如二进制、哲学讨论等），答案可能有所不同，但通常需要明确具体上下文。  \\n需要我进一步解释其他可能性吗？ 😊\",\n                \"role\": \"assistant\",\n                \"tool_calls\": null,\n                \"function_call\": null,\n                \"reasoning_content\": \"\\n嗯，用户问的是“1+1=？”，这个问题看起来很简单，但可能有不同的情况需要考虑。首先，我需要确认用户是否在问基本的算术运算，也就是数学中的加法。如果是的话，答案当然是2。不过，有时候人们可能会用这个问题来测试我的反应，或者看看我会不会给出不同的答案，比如在某些哲学或计算机科学的上下文中，可能会有不同的解释。比如在二进制中，1+1等于10，但通常这种情况下用户会明确提到进位或者二进制。\\n\\n另外，用户可能是在验证我的智能程度，或者想看看我会不会犯低级错误。也有可能他们是在教小孩子数学，需要简单明确的回答。还有可能是在某种特定领域，比如化学中的分子组合，或者其他需要专业知识的情况，但这时候可能需要更多的上下文信息。\\n\\n我应该先给出最直接的答案，也就是数学上的正确结果2，然后根据情况补充其他可能的解释。但用户的问题很简短，没有提供额外的信息，所以可能只需要基础答案。不过，为了全面，我可以稍微提及其他可能性，但要保持简洁，避免混淆用户。\\n\\n需要确认的是，用户是否真的需要更深入的解释，或者他们只是需要确认基本答案。由于问题简单，可能他们希望快速得到答案，不需要复杂的分析。但作为智能助手，提供一点额外的信息可能更好，比如提到二进制的情况，但要明确说明前提条件。\\n\\n总结一下，回答应该先明确数学答案是2，然后简短提到其他可能的上下文中的不同结果，但强调在常规数学中是2。这样既准确又全面，不会让用户感到困惑。\\n\"\n            }\n        }\n    ],\n    \"usage\": {\n        \"completion_tokens\": 400,\n        \"prompt_tokens\": 21,\n        \"total_tokens\": 421,\n        \"completion_tokens_details\": null,\n        \"prompt_tokens_details\": null\n    },\n    \"service_tier\": null,\n    \"prompt_logprobs\": null\n}\n```\n\n从post请求来看，响应是openai的格式啊，为啥接入不进去。\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/483/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/482",
      "id": 3299444949,
      "node_id": "I_kwDON-_mZc7EqYjV",
      "number": 482,
      "title": "Combining Pro / Max Subscription Access with API Keys in CCR",
      "user": {
        "login": "elsueno",
        "id": 16706487,
        "node_id": "MDQ6VXNlcjE2NzA2NDg3",
        "avatar_url": "https://avatars.githubusercontent.com/u/16706487?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/elsueno",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-08-07T07:58:44Z",
      "updated_at": "2026-01-13T00:36:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\nI’ve been using Claude Code with a subscription, and I’m able to do quite a lot with it already. I understand that API-based usage would be more expensive, so I’ve avoided that so far.\n\nNow I’m trying out CCR to route some requests to other models—particularly Gemini Pro, because of its larger context window. My question is: can I also access the Anthropic models that are included in my subscription from within CCR, alongside other models I provide API keys for?\n\nI couldn’t find any documentation or settings that clarify whether subscription-based model access (like Claude via Pro) can be used in this multi-model setup.\n\nThanks in advance!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/482/reactions",
        "total_count": 19,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 13
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/480",
      "id": 3299359181,
      "node_id": "I_kwDON-_mZc7EqDnN",
      "number": 480,
      "title": "回复异常",
      "user": {
        "login": "hdairong",
        "id": 9004751,
        "node_id": "MDQ6VXNlcjkwMDQ3NTE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9004751?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hdairong",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-07T07:30:56Z",
      "updated_at": "2025-08-07T07:48:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1746\" height=\"868\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6e65c161-6445-4bc2-bac6-78c259f2799f\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/480/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/479",
      "id": 3299321047,
      "node_id": "I_kwDON-_mZc7Ep6TX",
      "number": 479,
      "title": "compact 报错",
      "user": {
        "login": "Wool-yang",
        "id": 20457518,
        "node_id": "MDQ6VXNlcjIwNDU3NTE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20457518?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Wool-yang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-07T07:19:07Z",
      "updated_at": "2025-08-07T07:19:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Error: Error during compaction: Error: API Error: 400 {\"error\":{\"message\":\"Error from provider:\n    {\\\"error\\\":{\\\"code\\\":\\\"invalid_type\\\",\\\"message\\\":\\\"Invalid type for 'messages.[6].content': expected one of a string or array of objects, but got\n    an object\n    instead.\\\",\\\"param\\\":\\\"'messages.[6].content'\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"e52829c6-b37d-45a4-80ea-70ba519c0bae\\\"}Error:\n    Error from provider: {\\\"error\\\":{\\\"code\\\":\\\"invalid_type\\\",\\\"message\\\":\\\"Invalid type for 'messages.[6].content': expected one of a string or array\n     of objects, but got an object\n    instead.\\\",\\\"param\\\":\\\"'messages.[6].content'\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"request_id\\\":\\\"e52829c6-b37d-45a4-80ea-70ba519c0bae\\\"}\\n\n    at Et (D:\\\\Program\\\\npm\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74566:11)\\n    at i0\n    (D:\\\\Program\\\\npm\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74623:49)\\n    at process.processTicksAndRejections\n    (node:internal/process/task_queues:105:5)\\n    at async n0 (D:\\\\Program\\\\npm\\\\node_global\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli\n    .js:74591:73)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n\nRouter 配置：\n  \"Router\": {\n    \"default\": \"modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n    \"background\": \"gemini,gemini-2.5-flash\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"gemini,gemini-2.5-flash\"\n  }",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/479/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/477",
      "id": 3299160633,
      "node_id": "I_kwDON-_mZc7EpTI5",
      "number": 477,
      "title": "claude code router api服务",
      "user": {
        "login": "blackblue9",
        "id": 66412766,
        "node_id": "MDQ6VXNlcjY2NDEyNzY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/66412766?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/blackblue9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-07T06:22:24Z",
      "updated_at": "2025-08-07T06:22:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请问这个项目有将整个claude code封装为一个类似于大模型openai格式的api服务吗？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/477/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/474",
      "id": 3299002851,
      "node_id": "I_kwDON-_mZc7Eosnj",
      "number": 474,
      "title": "群里二维码过期了",
      "user": {
        "login": "zhangzhenxiang666",
        "id": 153443129,
        "node_id": "U_kgDOCSVbOQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/153443129?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhangzhenxiang666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-07T05:11:37Z",
      "updated_at": "2025-08-07T05:11:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我有点问题想要咨询。有人可以拉一下我吗",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/474/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/473",
      "id": 3298915368,
      "node_id": "I_kwDON-_mZc7EoXQo",
      "number": 473,
      "title": "[BashTool] Pre-flight check is taking longer than expected. Run with ANTHROPIC_LOG=debug to check for failed or slow API requests.",
      "user": {
        "login": "ynzys",
        "id": 63483486,
        "node_id": "MDQ6VXNlcjYzNDgzNDg2",
        "avatar_url": "https://avatars.githubusercontent.com/u/63483486?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ynzys",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 17,
      "created_at": "2025-08-07T04:35:56Z",
      "updated_at": "2025-12-02T13:21:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "[BashTool] Pre-flight check is taking longer than expected. Run with ANTHROPIC_LOG=debug to check for failed or slow API requests.\n\n谁遇到过这个问题？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/473/reactions",
        "total_count": 4,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 4
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/472",
      "id": 3298854189,
      "node_id": "I_kwDON-_mZc7EoIUt",
      "number": 472,
      "title": "我用openrouter设置了好多模型，但问题时如何切换模型了",
      "user": {
        "login": "peanutsugarlove",
        "id": 127021480,
        "node_id": "U_kgDOB5IxqA",
        "avatar_url": "https://avatars.githubusercontent.com/u/127021480?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/peanutsugarlove",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-08-07T04:04:31Z",
      "updated_at": "2026-01-08T08:56:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1224\" height=\"738\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ca103ea3-34d3-431e-a7f5-a22aab2924f0\" />\n我看文档说/model就可以了但时/model出现下面这个\n\n<img width=\"1095\" height=\"258\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/5cf0e568-ff46-4b11-8085-11658e3f0a89\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/472/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/471",
      "id": 3298636141,
      "node_id": "I_kwDON-_mZc7EnTFt",
      "number": 471,
      "title": "怎么使用使用Gemini balance呢",
      "user": {
        "login": "jinkang06",
        "id": 123281073,
        "node_id": "U_kgDOB1kesQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/123281073?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jinkang06",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-08-07T02:09:16Z",
      "updated_at": "2025-10-24T07:25:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "想知道怎么搭配[claude-code-router]和Gemini balance？\n\n运行 ccr code 无法正常聊天\n\n ⎿ API Error: 405 {\"error\":{\"message\":\"Error from provider:\n    {\\\"error\\\":{\\\"code\\\":\\\"http_error\\\",\\\"message\\\":\\\"Method Not Allowed\\\"}}Error: Error from provider:\n    {\\\"error\\\":{\\\"code\\\":\\\"http_error\\\",\\\"message\\\":\\\"Method Not Allowed\\\"}}\\n    at Et (C:\\\\Users\\\\jzyca\\\\AppData\\\n    \\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74566:11)\\n    at c0 (C:\\\\Users\\\\jzy\n    ca\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74623:49)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async i0\n    (C:\\\\Users\\\\jzyca\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74591:84)\n    \",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\nconfig.json\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"http://10.8.0.13:7000/v1beta/models\",\n      \"api_key\": \"2025\",\n      \"models\": [\n        \"gemini-2.5-pro\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/471/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/470",
      "id": 3298592928,
      "node_id": "I_kwDON-_mZc7EnIig",
      "number": 470,
      "title": "自定义模型命令成功但是实际上并没有调用",
      "user": {
        "login": "zhangzhenxiang666",
        "id": 153443129,
        "node_id": "U_kgDOCSVbOQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/153443129?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhangzhenxiang666",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-07T01:40:21Z",
      "updated_at": "2025-08-07T04:45:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1222\" height=\"459\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/970fbfa6-443e-4160-9811-88ea299ecde7\" />实际上一直在使用默认配置的模型",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/470/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/469",
      "id": 3298492920,
      "node_id": "I_kwDON-_mZc7EmwH4",
      "number": 469,
      "title": "接入豆包多模态模型后无法识别图片",
      "user": {
        "login": "thehouseholdofshz",
        "id": 129728648,
        "node_id": "U_kgDOB7uAiA",
        "avatar_url": "https://avatars.githubusercontent.com/u/129728648?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/thehouseholdofshz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-07T00:41:36Z",
      "updated_at": "2025-08-07T00:41:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "接入了doubao-seed-1-6-thinking-250715后，拖入图片访问，报了如下错误\n\n<img width=\"1362\" height=\"809\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ad477296-18e2-4e58-ab52-6725da39094b\" />\n我的config配置为：\n\n<img width=\"1089\" height=\"440\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/5ebe13c1-1ec3-4d53-a301-2d6878b82d9c\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/469/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/464",
      "id": 3297282501,
      "node_id": "I_kwDON-_mZc7EiInF",
      "number": 464,
      "title": "Unset CLAUDE_CODE_USE_BEDROCK by default",
      "user": {
        "login": "eleqtrizit",
        "id": 31522568,
        "node_id": "MDQ6VXNlcjMxNTIyNTY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/31522568?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/eleqtrizit",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-06T16:11:05Z",
      "updated_at": "2025-08-06T16:12:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "CCR can't be used when the environment variable CLAUDE_CODE_USE_BEDROCK is set.  CCR should unset it by default.  Otherwise, CC will just repeat the message:\n\n  ⎿  API Error (403 {\"Message\":\"Invalid API Key format: Must start with pre-defined prefix\"}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (403 {\"Message\":\"Invalid API Key format: Must start with pre-defined prefix\"}) · Retrying in 1 seconds… (attempt 2/10)\n\nIt's not a big deal for me, as I know what to do now.  But it took some time to figure out what was wrong.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/464/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/461",
      "id": 3296017759,
      "node_id": "I_kwDON-_mZc7EdT1f",
      "number": 461,
      "title": "Why Claude is still trying to use claude-3-5-haiku ?",
      "user": {
        "login": "millisami",
        "id": 47914,
        "node_id": "MDQ6VXNlcjQ3OTE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/47914?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/millisami",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-06T09:44:25Z",
      "updated_at": "2025-08-07T04:33:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Configured the CCRouter and when running it, it tries to execute but fails with the error:\n\n```\n⏺ Update Todos\n  ⎿  ☐ Execute create-doc task with fullstack-architecture-tmpl.yaml template\n  ⎿  API Error (500 {\"error\":{\"message\":\"Error from provider: {\\\"detail\\\":\\\"No infrastructure available to serve request\\\"}\n  Error: Error from provider: {\\\"detail\\\":\\\"No infrastructure available to serve request\\\"}\\n\n```\n\nAnd when I stop the CCRouter, in the log I see this Claude Haiku as well which I've not authenticated.\n\n```\nUsage by model:\n zai-org/GLM-4.5-FP8:  3 input, 3 output, 0 cache read, 0 cache write\n    claude-3-5-haiku:  2 input, 2 output, 0 cache read, 0 cache write\n```\nI'm using GML-4.5-FP8 model from Chutes.ai which works, but is this the claude-3-5-haiku model being used somehow?\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/461/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/459",
      "id": 3295855660,
      "node_id": "I_kwDON-_mZc7EcsQs",
      "number": 459,
      "title": "support for using Claude Code Router on Amazon Bedrock",
      "user": {
        "login": "ghost",
        "id": 10137,
        "node_id": "MDQ6VXNlcjEwMTM3",
        "avatar_url": "https://avatars.githubusercontent.com/u/10137?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ghost",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-06T08:57:38Z",
      "updated_at": "2026-02-07T05:41:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": ".",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/459/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/458",
      "id": 3295716367,
      "node_id": "I_kwDON-_mZc7EcKQP",
      "number": 458,
      "title": "如何使用 claude-code 的一次性任務?",
      "user": {
        "login": "hkbb2014",
        "id": 28584288,
        "node_id": "MDQ6VXNlcjI4NTg0Mjg4",
        "avatar_url": "https://avatars.githubusercontent.com/u/28584288?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hkbb2014",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-06T08:21:01Z",
      "updated_at": "2025-08-06T08:21:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如何使用 claude-code 的一次性任務?\nhttps://docs.anthropic.com/en/docs/claude-code/quickstart#essential-commands\n\n> claude \"explain this script\"\n\n我嘗試這樣：\n> ccr code \"explain this script\"\n\n我期望它可以收到整句，但 claude code 每次都只能收到第一個字 \"explain\"，其余文字都收不到。\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/458/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/457",
      "id": 3295576677,
      "node_id": "I_kwDON-_mZc7EboJl",
      "number": 457,
      "title": "模版供应商添加 Kimi K2 和 智谱 GLM4.5",
      "user": {
        "login": "HynoR",
        "id": 20227709,
        "node_id": "MDQ6VXNlcjIwMjI3NzA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/20227709?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/HynoR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-06T07:43:35Z",
      "updated_at": "2025-08-25T03:10:52Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://api.moonshot.cn/v1/chat/completions\nkimi-k2-0711-preview\n<img width=\"480\" height=\"549\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/878bfa69-69d0-424c-abfb-1bf6e525705e\" />\n\n\nhttps://open.bigmodel.cn/api/paas/v4/chat/completions\nglm-4.5 glm-4.5-air glm-4.5-flash\n<img width=\"480\" height=\"658\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c5245874-6fa0-47c0-ae7f-01c9ae6caf78\" />\n\n并且个人不太推荐用在线拉取的方案,用 cloudflare r2 存模版，万一被刷炸了呢...",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/457/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/456",
      "id": 3295471936,
      "node_id": "I_kwDON-_mZc7EbOlA",
      "number": 456,
      "title": "Request limit exceeded",
      "user": {
        "login": "longlei119",
        "id": 37390886,
        "node_id": "MDQ6VXNlcjM3MzkwODg2",
        "avatar_url": "https://avatars.githubusercontent.com/u/37390886?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/longlei119",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-06T07:12:29Z",
      "updated_at": "2025-08-06T12:20:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "for auto coding，i start claude by  'ccr code  --dangerously-skip-permissions',then happen error：\n⎿  API Error (429 {\"error\":{\"message\":\"Error from provider: {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"13da2182-1e81-47e8-b130-5b03bb460323\\\"}}Error: Error from provider: {\\\"errors\\\":{\\\"message\\\":\\\"Request limit exceeded.\\\",\\\"request_id\\\":\\\"13da2182-1e81-47e8-b130-5b03bb460323\\\"}}\\n    at Et (C:\\\\Users\\\\lei.long\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74566:11)\\n    at i0 (C:\\\\Users\\\\lei.long\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74623:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async n0 (C:\\\\Users\\\\lei.long\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74591:73)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 37 seconds… (attempt 8/10)\n\n\nI'm not sure if it's because of using the '--dangerously-skip-permissions' option.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/456/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/454",
      "id": 3295379314,
      "node_id": "I_kwDON-_mZc7Ea39y",
      "number": 454,
      "title": "使用qwen3-coder-plus频繁出现API Error 500 not valid JSON",
      "user": {
        "login": "yaoyasong",
        "id": 8130503,
        "node_id": "MDQ6VXNlcjgxMzA1MDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8130503?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yaoyasong",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 17,
      "created_at": "2025-08-06T06:40:17Z",
      "updated_at": "2025-08-26T10:56:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "错误信息：\nAPI Error (500 {\"error\":{\"message\":\"Unexpected token 'e', \\\"event: mes\\\"... is not valid JSONSyntaxError: Unexpected token 'e', \\\"event: mes\\\"... is not valid JSON\\n    at JSON.parse (<anonymous>)\\n    at parseJSONFromBytes (node:internal/deps/undici/undici:5731:19)\\n    at successSteps (node:internal/deps/undici/undici:5712:27)\\n    at fullyReadBody (node:internal/deps/undici/undici:4609:9)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async consumeBody (node:internal/deps/undici/undici:5721:7)\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n\n使用的配置:\n<img width=\"772\" height=\"527\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6d0a3a5d-3103-4575-a2a2-e750346b5ad2\" />\n\nccr日志：\n[claude-code-router.log](https://github.com/user-attachments/files/21612466/claude-code-router.log)\n\nclaude code version: 1.0.69\nclaude-code-router version: 1.0.32",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/454/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/450",
      "id": 3294787455,
      "node_id": "I_kwDON-_mZc7EYnd_",
      "number": 450,
      "title": "Support renaming EP identifiers for VolcEngine models",
      "user": {
        "login": "chyroc",
        "id": 15604894,
        "node_id": "MDQ6VXNlcjE1NjA0ODk0",
        "avatar_url": "https://avatars.githubusercontent.com/u/15604894?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chyroc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-06T00:29:43Z",
      "updated_at": "2025-08-14T11:02:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "VolcEngine (火山引擎方舟) models require EP-based access with identifiers like \"volcengine,ep-20250731123456-1234\". These cryptic EP identifiers lack readability and meaningful identification. \n\nRequesting a rename feature in claude-code-router that allows customizing EP identifiers like \"ep-20250731123456-1234\" to more meaningful names (e.g., \"kimi-k2-250711\") to improve user experience and maintainability.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/450/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/448",
      "id": 3293600605,
      "node_id": "I_kwDON-_mZc7EUFtd",
      "number": 448,
      "title": "大家有遇到这个问题吗，太头疼了，怎么解决啊  Invalid tool parameter",
      "user": {
        "login": "albert2020",
        "id": 13476125,
        "node_id": "MDQ6VXNlcjEzNDc2MTI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/13476125?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/albert2020",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-08-05T15:57:25Z",
      "updated_at": "2025-08-28T02:14:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"549\" height=\"330\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/63395af9-1ed0-4bf1-8dcc-946aeb35bfaa\" />\n大家有遇到这个问题吗，太头疼了，怎么解决啊",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/448/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/443",
      "id": 3291934281,
      "node_id": "I_kwDON-_mZc7ENu5J",
      "number": 443,
      "title": "Q: How can I use CCR as an MCP?",
      "user": {
        "login": "BradKML",
        "id": 58927531,
        "node_id": "MDQ6VXNlcjU4OTI3NTMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/58927531?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BradKML",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-05T07:30:16Z",
      "updated_at": "2025-08-05T07:30:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I essentially did something dumb, trying to make CCR and claude-Flow launchable from MCP setup of Claude Code (and ideally other IDEs), but   judging from all the documentation, there are no simple JSON plug-and-play functions. Would be great if the ReadME is updated as well. https://github.com/ruvnet/claude-flow/issues/506#issuecomment-3148396207",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/443/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/440",
      "id": 3291444264,
      "node_id": "I_kwDON-_mZc7EL3Qo",
      "number": 440,
      "title": "Can we add some text to tell user what's the current model we are using?",
      "user": {
        "login": "LintaoAmons",
        "id": 95092244,
        "node_id": "U_kgDOBar-FA",
        "avatar_url": "https://avatars.githubusercontent.com/u/95092244?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LintaoAmons",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-05T03:48:33Z",
      "updated_at": "2025-08-05T03:48:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"760\" height=\"568\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3ce37054-e9ad-4963-b180-01b39e97a107\" />\n\n我想确认当前使用的模型具体是什么\n\n当我使用 `/model` 命令时，也只能看到 claude 的两个模型\n\n<img width=\"1068\" height=\"522\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fe07f0b1-b4cb-4452-9531-76c86cf4a374\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/440/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/436",
      "id": 3291202338,
      "node_id": "I_kwDON-_mZc7EK8Mi",
      "number": 436,
      "title": "GLM 4.5 - without reasoning tokens ?",
      "user": {
        "login": "Martins6",
        "id": 37420665,
        "node_id": "MDQ6VXNlcjM3NDIwNjY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/37420665?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Martins6",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-05T01:14:05Z",
      "updated_at": "2025-09-05T14:59:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I've been working directly with the API of Z.AI to use Claude Code, but I don't like the reasoning mode being true as default. I want to disable the reasoning tokens.\n\nThe [oficial API](https://docs.z.ai/api-reference/llm/chat-completion) says it is as simple as passing thinking=disabled\n\n```bash\ncurl --request POST \\\n  --url https://api.z.ai/api/paas/v4/chat/completions \\\n  --header 'Accept-Language: <accept-language>' \\\n  --header 'Authorization: Bearer <token>' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"model\": \"glm-4.5\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"What opportunities and challenges will the Chinese large model industry face in 2025?\"\n    }\n  ],\n\"thinking\": \"disabled\"\n}'\n```\n\nHow can I do this on CCR? I searched and it seems that there's no transformer to do this. If so, how can I create a transformer for that?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/436/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/435",
      "id": 3290868965,
      "node_id": "I_kwDON-_mZc7EJqzl",
      "number": 435,
      "title": "question: Is it possible to use .env api keys?",
      "user": {
        "login": "addadi",
        "id": 449434,
        "node_id": "MDQ6VXNlcjQ0OTQzNA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/449434?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/addadi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-04T21:45:07Z",
      "updated_at": "2025-08-13T00:53:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "is it possible to use environment variable like $DEEPSEEK_API_KEY or $OPENROUTER_API_KEY instead of directly providing them in the config.json?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/435/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/434",
      "id": 3290067394,
      "node_id": "I_kwDON-_mZc7EGnHC",
      "number": 434,
      "title": "invalid api key - config from claude-code-config file not working. Always defaulting to anthropic",
      "user": {
        "login": "web3works-io",
        "id": 214701193,
        "node_id": "U_kgDODMwUiQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/214701193?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/web3works-io",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-04T16:23:31Z",
      "updated_at": "2025-08-04T16:23:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The startup and configuration of this repo doesn't show in the ui if you copy it exactly or sometimes you have to input these credentials in the command window and then at claude code startup it defaults to anthropic most of the time. Also has config clashes with /.claude.json\n\nIs there any plan to make the configuration more stable?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/434/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/433",
      "id": 3289994907,
      "node_id": "I_kwDON-_mZc7EGVab",
      "number": 433,
      "title": "SGLang部署的DeepSeek-V3-0324应该如何写配置文件？",
      "user": {
        "login": "wuzhiguocarter",
        "id": 6290560,
        "node_id": "MDQ6VXNlcjYyOTA1NjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6290560?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wuzhiguocarter",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-04T15:58:57Z",
      "updated_at": "2025-08-04T15:58:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "SGLang部署的DeepSeek-V3-0324应该如何写配置文件？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/433/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/432",
      "id": 3289614974,
      "node_id": "I_kwDON-_mZc7EE4p-",
      "number": 432,
      "title": "Completely free API to use with CCRouter, with model close to the level of Sonnet and Opus.",
      "user": {
        "login": "Rybens92",
        "id": 1987734,
        "node_id": "MDQ6VXNlcjE5ODc3MzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1987734?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Rybens92",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-08-04T14:11:45Z",
      "updated_at": "2025-09-10T07:55:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I've tested all recently released open big models in comparision to Sonnet and Opus and all I can say GLM 4.5 is just brilliant in all agentic coding tools! With Claude Code through CCRouter it's even better.\n\nOn OpenRouter through API it cost's some money and can be not so cost effective as buying Claude Pro/Max.\n\nBut there comes Chutes.ai provider with it's completely free GLM 4.5 API usage.\n\n- Just register there (remember to save login key somewhere, because without it you won't be able to login again),\n- Generate API Key on the site,\n- And paste it to this config for CCRouter in `~/.claude-code-router/config.json`:\n```\n{\n  \"LOG\": true,\n  \"API_TIMEOUT_MS\": 600000,\n  \"Providers\": [\n    {\n      \"name\": \"chutes\",\n      \"api_base_url\": \"https://llm.chutes.ai/v1/chat/completions\",\n      \"api_key\": \"YOUR_API_KEY\",\n      \"models\": [\"zai-org/GLM-4.5-FP8\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"chutes,zai-org/GLM-4.5-FP8\"\n  }\n}\n```\n\nAnd there you go...\nYou got Claude Code with Opus at home, but completely for free ;)\n\nEDIT: It turns out that you need to pay 5 dollars (only once) to \"activate\" account.\nYou also get 200 free daily requests for paid models.\n\nI did that a while back and I am using free chutes models for like few mouths right now.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/432/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/431",
      "id": 3289009964,
      "node_id": "I_kwDON-_mZc7ECk8s",
      "number": 431,
      "title": "为什么我每次用ccr code进入还是出现claude的登录界面",
      "user": {
        "login": "yixuanrobot",
        "id": 22364139,
        "node_id": "MDQ6VXNlcjIyMzY0MTM5",
        "avatar_url": "https://avatars.githubusercontent.com/u/22364139?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yixuanrobot",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-08-04T11:13:47Z",
      "updated_at": "2026-01-26T10:31:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我已经按照你的json配置了。\n\n  ██████╗██╗      █████╗ ██╗   ██╗██████╗ ███████╗\n ██╔════╝██║     ██╔══██╗██║   ██║██╔══██╗██╔════╝\n ██║     ██║     ███████║██║   ██║██║  ██║█████╗  \n ██║     ██║     ██╔══██║██║   ██║██║  ██║██╔══╝  \n ╚██████╗███████╗██║  ██║╚██████╔╝██████╔╝███████╗\n  ╚═════╝╚══════╝╚═╝  ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝\n  ██████╗ ██████╗ ██████╗ ███████╗                \n ██╔════╝██╔═══██╗██╔══██╗██╔════╝                \n ██║     ██║   ██║██║  ██║█████╗                  \n ██║     ██║   ██║██║  ██║██╔══╝                  \n ╚██████╗╚██████╔╝██████╔╝███████╗                \n  ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝\n\n\n Claude Code can now be used with your Claude subscription or billed based on API usage through your Console account.\n\n\n Select login method:\n\n ❯ 1. Claude account with subscription\n    Starting at $20/mo for Pro, $100/mo for Max - Best value, predictable pricing\n\n   2. Anthropic Console account\n    API usage billing",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/431/reactions",
        "total_count": 6,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 1,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/429",
      "id": 3288966172,
      "node_id": "I_kwDON-_mZc7ECaQc",
      "number": 429,
      "title": "調用GLM4.5時，突然出現 API Error: 400",
      "user": {
        "login": "hkbb2014",
        "id": 28584288,
        "node_id": "MDQ6VXNlcjI4NTg0Mjg4",
        "avatar_url": "https://avatars.githubusercontent.com/u/28584288?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hkbb2014",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-04T10:59:24Z",
      "updated_at": "2025-08-16T13:11:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "調用GLM4.5，這兩天都沒有問題，突然出現 API Error: 400，什麼原因？\n\n hello?\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"code\\\":\\\"1210\\\",\\\"message\\\":\\\"API\n    调用参数有误，请检查文档。\\\"},\\\"request_id\\\":\\\"d6b1b62b-c639-48ff-97e2-6c454bbb23d8\\\"}Error: Error from\n    provider: {\\\"error\\\":{\\\"code\\\":\\\"1210\\\",\\\"message\\\":\\\"API\n    调用参数有误，请检查文档。\\\"},\\\"request_id\\\":\\\"d6b1b62b-c639-48ff-97e2-6c454bbb23d8\\\"}\\n    at Et\n    (x:\\\\nvm\\\\v22.14.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74566:11)\\n    at i0\n    (x:\\\\nvm\\\\v22.14.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74623:49)\\n    at\n    process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async n0\n    (x:\\\\nvm\\\\v22.14.0\\\\node_modules\\\\@musistudio\\\\claude-code-router\\\\dist\\\\cli.js:74591:73)\",\"type\":\"api_error\",\"\n    code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/429/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/428",
      "id": 3288617157,
      "node_id": "I_kwDON-_mZc7EBFDF",
      "number": 428,
      "title": "Invalid tool parameters",
      "user": {
        "login": "qfgk",
        "id": 214750828,
        "node_id": "U_kgDODMzWbA",
        "avatar_url": "https://avatars.githubusercontent.com/u/214750828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/qfgk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-04T09:01:55Z",
      "updated_at": "2025-08-11T08:05:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"272\" height=\"89\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/6378bfd2-4820-4e58-b915-019801dd7e1d\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/428/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/427",
      "id": 3288502587,
      "node_id": "I_kwDON-_mZc7EApE7",
      "number": 427,
      "title": "CCR 支持 Claude Code for VSCode 嗎?",
      "user": {
        "login": "hkbb2014",
        "id": 28584288,
        "node_id": "MDQ6VXNlcjI4NTg0Mjg4",
        "avatar_url": "https://avatars.githubusercontent.com/u/28584288?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hkbb2014",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-08-04T08:21:56Z",
      "updated_at": "2025-11-07T06:41:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "CCR 支持 Claude Code for VSCode 嗎? 如果不支持，有其他可行的辦法嗎?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/427/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/424",
      "id": 3288216670,
      "node_id": "I_kwDON-_mZc7D_jRe",
      "number": 424,
      "title": "claude code chat  这个插件无法正常使用",
      "user": {
        "login": "CloudRobot",
        "id": 18644071,
        "node_id": "MDQ6VXNlcjE4NjQ0MDcx",
        "avatar_url": "https://avatars.githubusercontent.com/u/18644071?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CloudRobot",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-04T06:33:52Z",
      "updated_at": "2025-08-04T06:33:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claude code chat  这个插件无法正常使用，跳转到login,有什么方法进行么",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/424/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/423",
      "id": 3287827916,
      "node_id": "I_kwDON-_mZc7D-EXM",
      "number": 423,
      "title": "是否支持多key轮询？",
      "user": {
        "login": "chengithub1995",
        "id": 46340929,
        "node_id": "MDQ6VXNlcjQ2MzQwOTI5",
        "avatar_url": "https://avatars.githubusercontent.com/u/46340929?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chengithub1995",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-04T02:45:31Z",
      "updated_at": "2025-08-04T03:04:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "针对某一渠道，是否支持多key轮询，负载均衡？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/423/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/422",
      "id": 3287809690,
      "node_id": "I_kwDON-_mZc7D9_6a",
      "number": 422,
      "title": "希望尽快推出官方docker镜像到公共仓库方便使用",
      "user": {
        "login": "RWDai",
        "id": 27391645,
        "node_id": "MDQ6VXNlcjI3MzkxNjQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/27391645?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/RWDai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-04T02:31:22Z",
      "updated_at": "2025-09-09T05:44:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/422/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/420",
      "id": 3287771080,
      "node_id": "I_kwDON-_mZc7D92fI",
      "number": 420,
      "title": "HOST参数配置无效，配置完还是 127.0.0.1",
      "user": {
        "login": "clbi88",
        "id": 34342166,
        "node_id": "MDQ6VXNlcjM0MzQyMTY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/34342166?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/clbi88",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-04T01:58:04Z",
      "updated_at": "2025-08-04T09:43:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ubuntu22 HOST参数配置无效，配置完还是 127.0.0.1",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/420/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/419",
      "id": 3287573820,
      "node_id": "I_kwDON-_mZc7D9GU8",
      "number": 419,
      "title": "API Error: 404",
      "user": {
        "login": "sruckh",
        "id": 29985975,
        "node_id": "MDQ6VXNlcjI5OTg1OTc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/29985975?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sruckh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-08-03T21:58:01Z",
      "updated_at": "2025-08-14T13:26:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I see similar errors in the Issues, but maybe not quite the same.  Basically, everything is working fine for some amount of time.  Eventually, this error shows up, \n\n```\nAPI Error: 404 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"No endpoints found that support tool use. To learn more about provider routing, visit: https://openrouter.ai/docs/provider-routing\\\",\\\"code\\\":404}}Error: Error from\n     provider: {\\\"error\\\":{\\\"message\\\":\\\"No endpoints found that support tool use. To learn more about provider routing, visit: https://openrouter.ai/docs/provider-routing\\\",\\\"code\\\":404}}\\n    at Et\n     (/root/.local/share/fnm/node-versions/v20.19.3/installation/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at i0\n     (/root/.local/share/fnm/node-versions/v20.19.3/installation/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74623:49)\\n    at process.processTicksAndRejections (node: internal/process/task_queues:95:5)\\n    at async n0\n     (/root/.local/share/fnm/node-versions/v20.19.3/installation/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:73)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nOnce that happens, there is no recovery.  Every response after that will be the same.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/419/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/417",
      "id": 3287238778,
      "node_id": "I_kwDON-_mZc7D70h6",
      "number": 417,
      "title": "integration with superclaude",
      "user": {
        "login": "Jukeman9",
        "id": 51355966,
        "node_id": "MDQ6VXNlcjUxMzU1OTY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/51355966?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Jukeman9",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-03T14:40:17Z",
      "updated_at": "2025-08-04T01:28:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have SuperClaude Framework installed.\n\nAre all global instruction files injected into every system prompt?\n\nI’m using Claude Code Router (CCR) configured with OpenRouter, and I’ve noticed that every prompt ends up being around 150k tokens. It looks like the entire contents of the following global instruction files from ~/.claude/ are being injected into every system prompt:\n\t•\tCOMMANDS.md\n\t•\tFLAGS.md\n\t•\tPRINCIPLES.md\n\t•\tRULES.md\n\t•\tMCP.md\n\t•\tPERSONAS.md\n\t•\tORCHESTRATOR.md\n\t•\tMODES.md\n\nThis includes my user prompt as well.\n\nMy question is:\nIs this the expected behavior? Specifically, does Anthropic not count these global instructions toward the token limit when using Claude directly, but does count them when routing through an external provider like OpenRouter via CCR? Or is this potentially a misconfiguration on my end?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/417/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/416",
      "id": 3287057998,
      "node_id": "I_kwDON-_mZc7D7IZO",
      "number": 416,
      "title": "Cannot setup with qwen3-coder via lmstudio local server",
      "user": {
        "login": "mihaisavezi",
        "id": 6965490,
        "node_id": "MDQ6VXNlcjY5NjU0OTA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6965490?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mihaisavezi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-03T10:37:34Z",
      "updated_at": "2025-11-07T08:36:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I don't understand if I'm doing something wrong or it is not possible. \n\n\nSetup is:  \n* lmstudio server on localhost:1234 with openAI compatible API, \n* claude code via claude-code-router\n\n\n```\n➜  nest-prep-amplify claude -v         \n1.0.67 (Claude Code)\n➜  nest-prep-amplify ccr -v   \nclaude-code-router version: 1.0.32\n➜  nest-prep-amplify \n```\n\n```.claude-code-router/claude.json```\n```\n{\n  \"LOG\": true,\n  \"CLAUDE_PATH\": \"\",\n  \"HOST\": \"127.0.0.1\",\n  \"PORT\": 3456,\n  \"APIKEY\": \"your-secret-key\",\n  \"API_TIMEOUT_MS\": \"600000\",\n  \"PROXY_URL\": \"http://127.0.0.1:1234\",\n  \"Transformers\": [],\n  \"Providers\": [\n    {\n      \"name\": \"lmstudio\",\n      \"api_base_url\": \"http://localhost:1234/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"qwen/qwen3-coder-30b\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"lmstudio,qwen/qwen3-coder-30b\",\n    \"background\": \"lmstudio,qwen/qwen3-coder-30b\",\n    \"think\": \"lmstudio,qwen/qwen3-coder-30b\",\n    \"longContext\": \"lmstudio,qwen/qwen3-coder-30b\",\n    \"longContextThreshold\": 60000,\n    \"webSearch\": \"lmstudio,qwen/qwen3-coder-30b\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/416/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/409",
      "id": 3285418219,
      "node_id": "I_kwDON-_mZc7D04Dr",
      "number": 409,
      "title": "qwen3 coder via openrouter giving \"404 no tool use\" error.",
      "user": {
        "login": "Tor-Saxberg",
        "id": 22891472,
        "node_id": "MDQ6VXNlcjIyODkxNDcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/22891472?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Tor-Saxberg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-08-02T00:39:58Z",
      "updated_at": "2025-08-28T01:40:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```json\n{\n  \"LOG\": false,\n  \"Providers\": [\n    {\n      \"name\": \"groq\",\n      \"api_base_url\": \"https://api.groq.com/openai/v1/chat/completions\",\n      \"api_key\": \"gsk_\",\n      \"models\": [ \"qwen/qwen3-32b\" , \"moonshotai/kimi-k2-instruct\"],\n      \"transformer\": {\n        \"use\": [\n          [ \"maxtoken\", { \"max_tokens\": 16384 } ],\n          \"openrouter\"\n        ]\n      }\n    },\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-f\",\n      \"models\": [ \"qwen/qwen3-coder\" ],\n      \"transformer\": {\n        \"use\": [\n          [ \"maxtoken\", { \"max_tokens\": 40960} ],\n          \"openrouter\"  \n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,qwen/qwen3-coder\"\n  }\n}\n```\n\nthe [openrouter page](https://openrouter.ai/qwen/qwen3-coder/providers?sort=throughput) says this:\n`Qwen3-Coder…  is optimized for agentic coding tasks such as function calling, **tool use**, and long-context reasoning over repositories.`\n\nbut, even after re-installing ccr, I get this error:\n\n```\nError from provider: {\\\"error\\\":{\\\"message\\\":\\\"No endpoints found that support tool use. To learn more about provider routing, visit: https://openrouter.ai/docs/provider-routing\\\",\\\"code\\\":404}}\\n    at Et (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74566:11)\\n    at s0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74626:49)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\\n    at async e0 (/opt/homebrew/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:74591:73)\",\"type\":\"api _error\",\"code\":\"provider_response_error\"}}\n```\n\n\nI verified that the endpoint works with a simplr curl command:\n\n```\ncurl https://openrouter.ai/api/v1/chat/completions \\\n-H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"model\": \"qwen/qwen3-coder\",\n  \"messages\": [\n      {\n          \"role\": \"user\",\n          \"content\": \"do you support tool use?\"\n      }\n  ]\n}'\n```\n\nI should not that upon further testing it seems to work for some providers like Baseten, Parasail, and DeepInfra. but it does not work with the only provider that really matters: Cerebras, with 2,343 tps. I also don't think it's an openrouter x cerebras issue, because Cline has no trouble doing exactly this.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/409/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/407",
      "id": 3284863862,
      "node_id": "I_kwDON-_mZc7Dywt2",
      "number": 407,
      "title": "Support for cerebras.ai",
      "user": {
        "login": "theodorDiaconu",
        "id": 1814863,
        "node_id": "MDQ6VXNlcjE4MTQ4NjM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1814863?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/theodorDiaconu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 17,
      "created_at": "2025-08-01T19:02:05Z",
      "updated_at": "2025-11-06T07:00:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Would be nice to support work with Cerberas.ai ... 2000t/s might change the whole experience. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/407/reactions",
        "total_count": 14,
        "+1": 14,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/405",
      "id": 3283719768,
      "node_id": "I_kwDON-_mZc7DuZZY",
      "number": 405,
      "title": "maximum context length，总是超出上下文限制",
      "user": {
        "login": "yinqinghai",
        "id": 52689118,
        "node_id": "MDQ6VXNlcjUyNjg5MTE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/52689118?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yinqinghai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-08-01T12:14:24Z",
      "updated_at": "2026-01-14T10:23:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nAPI Error: 400 {\"error\":{\"message\":\"Error\n    from provider:\n    {\\\"error\\\":{\\\"message\\\":\\\"This model's\n    maximum context length is 65536 tokens.\n    However, you requested 66434 tokens (58242\n    in the messages, 8192 in the completion).\n    Please reduce the length of the messages or\n    completion.\\\",\\\"type\\\":\\\"invalid_request_err\n    or\\\",\\\"param\\\":null,\\\"code\\\":\\\"invalid_reque\n    st_error\\\"}}\",\"type\":\"api_error\",\"code\":\"pro\n    vider_response_error\"}}\n```\n\n但是\n\n```\n   {\n        \"name\": \"dashscope\",\n        \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n        \"api_key\": \"\",\n        \"models\": [\n            \"qwen3-coder-plus\"\n        ],\n        \"transformer\": {\n            \"use\": [\n                [\n                    \"maxtoken\",\n                    {\n                        \"max_tokens\": 1000000\n                    }\n                ],\n                \"enhancetool\"\n            ]\n        }\n    },\n```\n\nqwen3-coder-plus上下文1M，为什么之类会提示超出上下文",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/405/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/402",
      "id": 3282723526,
      "node_id": "I_kwDON-_mZc7DqmLG",
      "number": 402,
      "title": "--print not being handled correctly",
      "user": {
        "login": "Laelia-Succubus",
        "id": 199859324,
        "node_id": "U_kgDOC-mcfA",
        "avatar_url": "https://avatars.githubusercontent.com/u/199859324?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Laelia-Succubus",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-01T06:23:05Z",
      "updated_at": "2026-01-06T18:01:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "works:\nclaude --print {prompt}\n\ndoesnt work:\nccr code --print {prompt}\n\n  The Problem:\n  The ccr code --print 'What time is it?' command should work like claude --print 'What time is it?', but the argument parsing in the\n  Claude Code Router is not correctly passing through the --print flag and its argument to the underlying Claude Code process.\n\n  The root cause is that the ccr code command's argument parsing is likely splitting on spaces and not respecting the quoted argument\n  structure that the --print flag expects.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/402/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        1121
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/400",
      "id": 3282070241,
      "node_id": "I_kwDON-_mZc7DoGrh",
      "number": 400,
      "title": "什么时候可以支持图片哇",
      "user": {
        "login": "imyyorzGitHub",
        "id": 135184230,
        "node_id": "U_kgDOCA6_Zg",
        "avatar_url": "https://avatars.githubusercontent.com/u/135184230?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/imyyorzGitHub",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-01T00:22:14Z",
      "updated_at": "2025-08-01T07:42:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题, 原来得 todo 还看到对图片得支持的, 好像现在都没提了耶.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/400/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/397",
      "id": 3281207611,
      "node_id": "I_kwDON-_mZc7Dk0E7",
      "number": 397,
      "title": "[Suggesttion] Add 'Save As' and Config File Selection to Web UI\" / Web UI 配置保存新增 `另存为` 和配置文件选择加载功能",
      "user": {
        "login": "BigUncle",
        "id": 9360607,
        "node_id": "MDQ6VXNlcjkzNjA2MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9360607?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BigUncle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-31T17:16:05Z",
      "updated_at": "2025-07-31T17:16:05Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "大佬,建议在 Web UI 的配置保存功能中新增两项功能：\n\n  1. **另存为功能**：建议增加 `保存为` 选项，允许用户将当前配置保存为新的配置文件\n  2. **配置文件选择加载**：在 UI 界面中增加配置文件选择器，可以从已有配置文件列表中选择并加载配置\n\n\nIt is recommended to add two new features to the Web UI's configuration saving function:\n\n  1. **\"Save As\" Feature**: Add a `Save As` option to allow users to save the current configuration as a new configuration file.\n  2. **Load Configuration from Selector**: Add a configuration file selector in the UI to select and load a configuration from the list of existing configuration files.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/397/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/396",
      "id": 3280852506,
      "node_id": "I_kwDON-_mZc7DjdYa",
      "number": 396,
      "title": "Usage at the bottom on exit",
      "user": {
        "login": "perbinder",
        "id": 139171347,
        "node_id": "U_kgDOCEuWEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/139171347?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/perbinder",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-31T15:18:04Z",
      "updated_at": "2025-07-31T15:18:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Only have openrouter in the config but on exit:\n\nTotal cost:            $0.0001 (costs may be inaccurate due to usage of unknown models)\nTotal duration (API):  1m 3.4s\nTotal duration (wall): 50.5s\nTotal code changes:    0 lines added, 0 lines removed\nUsage by model:\n    claude-3-5-haiku:  6 input, 6 output, 0 cache read, 0 cache write\nqwen/qwen3-coder:free:  2 input, 2 output, 0 cache read, 0 cache write\nclaude code router service has been successfully stopped.\n\nclaude haiku is not in config but is obviously in the claude code",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/396/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/393",
      "id": 3279901262,
      "node_id": "I_kwDON-_mZc7Df1JO",
      "number": 393,
      "title": "[Feature Request] Add stream option via transformer configuration",
      "user": {
        "login": "TonyGeez",
        "id": 141154740,
        "node_id": "U_kgDOCGnZtA",
        "avatar_url": "https://avatars.githubusercontent.com/u/141154740?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TonyGeez",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-31T10:19:24Z",
      "updated_at": "2025-10-05T12:32:13Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, some AI providers like Fireworks.ai have strict requirements where requests with max_tokens > 5000 must have stream=true. This causes API errors when making large token requests:\n\n`API Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"code\\\":\\\"BAD_REQUEST\\\",\\\"message\\\":\\\"Requests  with max_tokens > 5000 must have stream=true\\\",\\\"requestId\\\":\\\"cmpl-00b9fc8b621a4f9aaaa418aa14cb8885\\\",\\\"param\\\":\\\"st ream\\\"}}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}`\n\n**Proposed Solution**\nAdd support for controlling the stream parameter through the transformer configuration. This would allow users to configure streaming on a per-provider or per-model basis to comply with provider requirements.\n\n```\n...\n{\n  \"name\": \"fireworks\",\n  \"api_base_url\": \"https://api.fireworks.ai/inference/v1\",\n  \"api_key\": \"sk-xxxxx\",\n  \"models\": [\n    \"accounts/fireworks/models/deepseek-r1-basic\"\n  ],\n  \"transformer\": {\n    \"use\": [\n      \"openrouter\",\n      [\"stream\", { \"enabled\": true }]\n    ]\n  }\n}\n...\n```\n\nThe router should check for the stream transformer option and set the stream parameter in the request body based on the configuration:\n\nWhen transformer configuration includes `[\"stream\", { \"enabled\": true }]`, set stream=**true**\nWhen transformer configuration includes `[\"stream\", { \"enabled\": false }]`, set stream=**false**\n\nQuick example:\n\n```\n...\nconst provider = getProviderByModel(model, config);\nif (provider) {\n  const transformer = getTransformer(provider, model);\n  if (transformer && transformer.use && Array.isArray(transformer.use)) {\n    const streamOption = transformer.use.find((t) => \n      Array.isArray(t) && t[0] === 'stream'\n    );\n    \n    if (streamOption && streamOption[1] && streamOption[1].enabled) {\n      // Only set stream to true if it wasn't explicitly set to false by the user\n      if (req.body.stream !== false) {\n        req.body.stream = true;\n      }\n    }\n  }\n}\n...\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/393/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/385",
      "id": 3279072818,
      "node_id": "I_kwDON-_mZc7Dcq4y",
      "number": 385,
      "title": "工具调用失败，有人知道这个是怎么回事吗，这样配置不行吗？本地的模型",
      "user": {
        "login": "baopeg",
        "id": 135831275,
        "node_id": "U_kgDOCBie6w",
        "avatar_url": "https://avatars.githubusercontent.com/u/135831275?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/baopeg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-31T04:18:01Z",
      "updated_at": "2025-12-29T13:26:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1344\" height=\"651\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/2ab204de-5856-4e93-ab04-e3d4b4af7017\" />\n\n<img width=\"1344\" height=\"651\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3af8cbba-2516-4388-8206-eedc15e4f068\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/385/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/380",
      "id": 3278842351,
      "node_id": "I_kwDON-_mZc7Dbynv",
      "number": 380,
      "title": "IDE disconnected",
      "user": {
        "login": "UCyanMei",
        "id": 188836526,
        "node_id": "U_kgDOC0Fqrg",
        "avatar_url": "https://avatars.githubusercontent.com/u/188836526?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/UCyanMei",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-31T01:19:37Z",
      "updated_at": "2025-09-03T10:23:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我今天使用的时候发现出现IDE connoted的问题，启动时不会出现这个问题，在使用过程中出现。\n\n<img width=\"584\" height=\"92\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0b0d81a4-bc23-4324-a1fd-cf5f99e21158\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/380/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/377",
      "id": 3277062928,
      "node_id": "I_kwDON-_mZc7DVAMQ",
      "number": 377,
      "title": "fireworks or other providers",
      "user": {
        "login": "moshemarciano",
        "id": 875862,
        "node_id": "MDQ6VXNlcjg3NTg2Mg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/875862?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/moshemarciano",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 21,
      "created_at": "2025-07-30T13:23:55Z",
      "updated_at": "2025-10-21T03:12:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Fireworks.ai seems to require openAI compatible requests, their docs:\n\n\n```\ncurl --request POST \\\n  --url https://api.fireworks.ai/inference/v1/completions \\\n  -H 'Accept: application/json' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer <API_KEY>' \\\n  --data '{\n    \"model\": \"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct\",\n    \"max_tokens\": 32768,\n    \"top_p\": 1,\n    \"top_k\": 40,\n    \"presence_penalty\": 0,\n    \"frequency_penalty\": 0,\n    \"temperature\": 0.1,\n    \"prompt\": \"Hello, how are you?\"\n  }'\n```\n\nmy config file, tried with and without the openai transformer:\n\n```\n{\n  \"Providers\": [\n    {\n      \"name\": \"qwen-coder\",\n      \"api_base_url\": \"https://api.fireworks.ai/inference/v1/chat/completions\",\n      \"api_key\": \"fw-\",\n      \"models\": [\n        \"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 32768\n            }\n          ],\n          \"openai\"\n        ]\n      }\n    }\n  \"Router\": {\n    \"default\": \"qwen-coder\"\n  }\n}\n\nccr:\n```\nTodoWrite tool to plan the task if required\\\\n- Use the available search tools to understa'... 88057 more characters,\nsignal: AbortSignal { aborted: false }\n}\nError response from https://api.fireworks.ai/inference/v1/chat/completions: {\"error\":\"Missing model name\"}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/377/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/375",
      "id": 3276260576,
      "node_id": "I_kwDON-_mZc7DR8Tg",
      "number": 375,
      "title": "vllm部署的glm4.5，我应该怎么写配置文件？",
      "user": {
        "login": "dionren",
        "id": 5842910,
        "node_id": "MDQ6VXNlcjU4NDI5MTA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5842910?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dionren",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-30T09:06:57Z",
      "updated_at": "2025-09-01T08:26:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"http://10.20.100.5:8000/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\"zai-org/GLM-4.5-Air-FP8\"],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,zai-org/GLM-4.5-Air-FP8\",\n    \"think\": \"openrouter,zai-org/GLM-4.5-Air-FP8\",\n    \"background\": \"openrouter,zai-org/GLM-4.5-Air-FP8\",\n    \"longContext\": \"openrouter,zai-org/GLM-4.5-Air-FP8\"\n  }\n}\n\n\n上面的配置文件，运行出错\n\n<img width=\"868\" height=\"502\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b97e8760-b412-4794-90ee-969d17b1b372\" />\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/375/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/374",
      "id": 3276246036,
      "node_id": "I_kwDON-_mZc7DR4wU",
      "number": 374,
      "title": "feat:模型上下文太短，如何自动截断呢？",
      "user": {
        "login": "icelemon692",
        "id": 219517368,
        "node_id": "U_kgDODRWRuA",
        "avatar_url": "https://avatars.githubusercontent.com/u/219517368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/icelemon692",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-30T09:02:00Z",
      "updated_at": "2025-08-01T12:34:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我的模型的上下文窗口上限就是64k，没有更大的窗口的模型了，如何限制呢，现在每次读取个大文件就会直接失败报错，有什么限制强制截断的方法吗？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/374/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/372",
      "id": 3276061553,
      "node_id": "I_kwDON-_mZc7DRLtx",
      "number": 372,
      "title": "claude code router  + openrouter 无法正确处理图片",
      "user": {
        "login": "ORGRUI",
        "id": 26873136,
        "node_id": "MDQ6VXNlcjI2ODczMTM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/26873136?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ORGRUI",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-07-30T07:57:48Z",
      "updated_at": "2026-01-23T04:35:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n`{\n    \"APIKEY\": \"sk-\",\n    \"PORT\":\"30000\",\n    \"HOST\": \"0.0.0.0\",\n    \"LOG\": true,\n    \"API_TIMEOUT_MS\": 600000,\n    \"Providers\": [\n        {\n            \"name\": \"openrouter\",\n            \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n            \"api_key\": \"sk\",\n            \"models\": [\n                \"anthropic/claude-sonnet-4\"\n            ],\n            \"transformer\": {\n                \"use\": [\"openrouter\"]\n            }\n        }\n    ],\n    \"Router\": {\n        \"default\": \"openrouter,anthropic/claude-sonnet-4\",\n        \"background\": \"openrouter,anthropic/claude-sonnet-4\",\n        \"think\": \"openrouter,anthropic/claude-sonnet-4\",\n        \"longContext\": \"openrouter,anthropic/claude-sonnet-4\",\n        \"longContextThreshold\": 60000,\n        \"webSearch\": \"openrouter,anthropic/claude-sonnet-4\"\n    }\n}`\n\nclaude code router  + openrouter 无法正确处理图片\n\n\n\n\nError code: 400 - {'error': {'message': 'Error from provider: {\"error\":{\"message\":\"Failed to extract 1 image(s)\",\"code\":400,\"metadata\":{\"provider_name\":null}}}', 'type': 'api_error', 'code': 'provider_response_error'}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/372/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/370",
      "id": 3275579474,
      "node_id": "I_kwDON-_mZc7DPWBS",
      "number": 370,
      "title": "请求没有缓存机制",
      "user": {
        "login": "lxc00215",
        "id": 130938456,
        "node_id": "U_kgDOB832WA",
        "avatar_url": "https://avatars.githubusercontent.com/u/130938456?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lxc00215",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-30T03:51:33Z",
      "updated_at": "2025-08-08T03:34:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我用的某中转，中转支持缓存机制。\n\nClaude Code直接对接的效果为这样，刚开始请求会创建缓存\n\n<img width=\"1568\" height=\"819\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/bf1bec3f-062b-4a32-a010-ecd423670a85\" />\n\n但用此项目却不触发缓存机制\n\n<img width=\"1529\" height=\"872\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/f86f1bca-1b22-44e6-b697-6a3f7af88687\" />\n\n请问是我没有配置好吗？\n\n如果能搭配缓存机制，这将极大地降低高用量用户的成本",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/370/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/368",
      "id": 3275411786,
      "node_id": "I_kwDON-_mZc7DOtFK",
      "number": 368,
      "title": "Ollama with custom num_ctx",
      "user": {
        "login": "SolemnDucc",
        "id": 60278259,
        "node_id": "MDQ6VXNlcjYwMjc4MjU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/60278259?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SolemnDucc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-30T01:35:06Z",
      "updated_at": "2025-07-31T01:22:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be nice to be able to change the num_ctx parameter (and maybe more) for the Ollama provider.\n\nBasically something like this in the config:\n\n```\n\"name\": \"ollama\",\n\"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n\"api_key\": \"ollama\",\n\"models\": [\"qwen2.5-coder:latest\"],\n\"num_ctx\": 32768\n```\n\nOtherwise it feels like that Ollama forgets the context of my requests because the standard context is 4096.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/368/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/367",
      "id": 3275379831,
      "node_id": "I_kwDON-_mZc7DOlR3",
      "number": 367,
      "title": "openrouter 如何指定供应商（provider）",
      "user": {
        "login": "0000005",
        "id": 9690089,
        "node_id": "MDQ6VXNlcjk2OTAwODk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9690089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/0000005",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-30T01:08:07Z",
      "updated_at": "2025-08-03T06:41:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "某些供应商价格便宜，就只想用这个供应商的api。我测试了一下，感觉没生效，应该怎么配置呢？\n\n\n```json\n{\n            \"name\": \"openrouter\",\n            \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n            \"api_key\": \"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\",\n            \"models\": [\n                \"z-ai/glm-4.5\",\n                \"google/gemini-2.5-pro-preview\",\n                \"anthropic/claude-sonnet-4\",\n                \"anthropic/claude-3.5-sonnet\",\n                \"anthropic/claude-3.7-sonnet:thinking\"\n            ],\n            \"transformer\": {\n                \"use\": [\n                    \"openrouter\"\n                ],\n                \"z-ai/glm-4.5\": {\n                    \"use\": [\n                        [\n                            \"privider_setting\",\n                            {\n                                \"provider\": {\n                                    \"only\": [\n                                        \"chutes\"\n                                    ]\n                                }\n                            }\n                        ]\n                    ]\n                }\n            }\n        }\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/367/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/366",
      "id": 3274863254,
      "node_id": "I_kwDON-_mZc7DMnKW",
      "number": 366,
      "title": "Security Vulnerability in musitudio/llms",
      "user": {
        "login": "starbaser",
        "id": 207763516,
        "node_id": "U_kgDODGI4PA",
        "avatar_url": "https://avatars.githubusercontent.com/u/207763516?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/starbaser",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-29T20:15:13Z",
      "updated_at": "2025-08-03T13:21:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is there a justification for using the `vm` module to run potentially untrusted code to validate JSON? Here: [`/src/utils/toolArgumentsParser.ts`](https://github.com/musistudio/llms/blob/main/src/utils/toolArgumentsParser.ts#L21-L28):\n\n```typescript\n// JSON5解析失败，尝试使用vm模块进行兜底解析\n// JSON5 parsing failed, attempting to use vm module for fallback parsing\ntry {\n  const context = { data: null };\n  vm.createContext(context);\n  vm.runInContext(`data = ${argsString}`, context);\n  log(`工具调用参数兜底解析成功`);\n  return JSON.stringify(context.data);\n} catch (fallbackError: any) {\n```\n\n[See my PR in the dependency repo](https://github.com/musistudio/llms/pull/12). \n\nAdditionally, I am curious what rationale there is behind rolling your own implementation when `claude-code-router` can seemingly be implemented using [litellm call hooks](https://docs.litellm.ai/docs/proxy/call_hooks).\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/366/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/364",
      "id": 3273110357,
      "node_id": "I_kwDON-_mZc7DF7NV",
      "number": 364,
      "title": "我如果不使用Transformer，然后baseUrl不是供应商的url,我们自己封装了一个模型调用接口，这种情况是不是入参和返参需要做Anthropic API 还是Claude CLI 格式的互转？因为我们现在遇到一个问题，所以想确认一下",
      "user": {
        "login": "xlfdy",
        "id": 59381342,
        "node_id": "MDQ6VXNlcjU5MzgxMzQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/59381342?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xlfdy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-29T10:36:42Z",
      "updated_at": "2025-07-29T12:25:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"772\" height=\"197\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/4f582081-f076-4cf2-a45b-3d047581d5a4\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/364/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/363",
      "id": 3272959489,
      "node_id": "I_kwDON-_mZc7DFWYB",
      "number": 363,
      "title": "watch config.json to make hot reload server",
      "user": {
        "login": "gengjiawen",
        "id": 3759816,
        "node_id": "MDQ6VXNlcjM3NTk4MTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3759816?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gengjiawen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-29T09:50:59Z",
      "updated_at": "2025-07-31T01:33:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This will be helpful when change config",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/363/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/359",
      "id": 3272322358,
      "node_id": "I_kwDON-_mZc7DC602",
      "number": 359,
      "title": "无法加入群聊，提示已满200",
      "user": {
        "login": "jasonzhuang",
        "id": 1183471,
        "node_id": "MDQ6VXNlcjExODM0NzE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1183471?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jasonzhuang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-29T06:39:45Z",
      "updated_at": "2025-07-29T12:49:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "想咨询两个问题：\n1. provider里支持anyrouter吗？ 这个provider平台无法看到model name，没法配置model属性。直接通过环境变量修改ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN能work\n2. background，think转发到不同模型，是claude code自身能力还是ccr做了一层加工",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/359/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/358",
      "id": 3271559170,
      "node_id": "I_kwDON-_mZc7DAAgC",
      "number": 358,
      "title": "Not proxying headers",
      "user": {
        "login": "jeremytregunna",
        "id": 261615,
        "node_id": "MDQ6VXNlcjI2MTYxNQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/261615?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jeremytregunna",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-29T00:00:09Z",
      "updated_at": "2025-07-29T01:22:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm using claude code with clode code router, set up to hit an openai compatible endpoint I run locally. It appears as though when launching claude code through `ccr code` it isn't proxying the api key so can't see the models.\n\n## Config\n\n```\n{\n    \"LOG\": true,\n    \"API_TIMEOUT_MS\": 600000,\n    \"Providers\": [\n        {\n            \"name\": \"openai-compatible\",\n            \"api_base_url\": \"http://10.6.12.18:8080/v1-openai\",\n            \"api_key\": \"actually_needed_api_key\",\n            \"models\": [\"openai/qwen3-coder-q2kxl\"]\n        }\n    ],\n    \"Router\": {\n        \"background\": \"openai-compatible\",\n        \"think\": \"openai-compatible\",\n        \"longContext\": \"openai-compatible\"\n    }\n}\n```\n\n## Log\n\n```\n[2025-07-28T23:51:05.063Z] Anthropic Request: {\n  \"max_tokens\": 512,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Hi\"\n    }\n  ],\n  \"system\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Analyze if this message indicates a new conversation topic. If it does, extract a 2-3 word title that captures the new topic. Format your response as a JSON object with two fields: 'isNewTopic' (boolean) and 'title' (string, or null if isNewTopic is false). Only include these fields, no other text.\"\n    }\n  ],\n  \"temperature\": 0,\n  \"metadata\": {\n    \"user_id\": \"user_496cf8ddfbf45f0122d588d4a718b2b4b5e8705ae03b4cc7d2be0260fb6f1ed7_account_09ae0c2f-50a8-40c2-84cd-7f727b8ad400_session_471fca9a-7004-4222-a4bb-b085f7591b5f\"\n  },\n  \"stream\": true\n}\n[2025-07-28T23:51:05.064Z] use transformers: undefined\n[2025-07-28T23:51:05.064Z] final request: http://10.6.12.18:8080/v1-openai undefined {\"method\":\"POST\",\"headers\":{},\"body\":\"{\\\"messages\\\":[{\\\"role\\\":\\\"system\\\",\\\"content\\\":[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"Analyze if this message indicates a new conversation topic. If it does, extract a 2-3 word title that captures the new topic. Format your response as a JSON object with two fields: 'isNewTopic' (boolean) and 'title' (string, or null if isNewTopic is false). Only include these fields, no other text.\\\"}]},{\\\"role\\\":\\\"user\\\",\\\"content\\\":\\\"Hi\\\"}],\\\"max_tokens\\\":512,\\\"temperature\\\":0,\\\"stream\\\":true}\",\"signal\":{}}\n[2025-07-28T23:51:05.067Z] Error response from http://10.6.12.18:8080/v1-openai: {\"detail\":\"Not Found\"}\n```\n\n## Curl\n\nThe `api_base_url` is correct, runs GPUstack, and the `api_key` is omitted for security reasons, but is correct in the file.  I also do not see it trying to set the `\"model\"` key in the request body json object, but the \"headers\" is also missing the `Authorization: Bearer xxxx` header. As such the server responds with \"Not Found\" when calling, even though I can set the missing information in a `curl` call and it succeeds, see below:\n\n```\n> curl -H \"Content-Type: application/json\" -H \"Authorization: Bearer actual_api_key\" -d \"{\\\"messages\\\":[{\\\"role\\\":\\\"system\\\",\\\"content\\\":[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"Analyze if this message indicates a new conversation topic. If it does, extract a 2-3 word title that captures the new topic. Format your response as a JSON object with two fields: 'isNewTopic' (boolean) and 'title' (string, or null if isNewTopic is false). Only include these fields, no other text.\\\"}]},{\\\"role\\\":\\\"user\\\",\\\"content\\\":\\\"Hi\\\"}],\\\"max_tokens\\\":512,\\\"temperature\\\":0,\\\"stream\\\":true,\\\"model\\\":\\\"qwen3-coder-q2kxl\\\"}\" 10.6.12.18:8080/v1-openai/chat/completions\ndata: {\"choices\":[{\"delta\":{\"content\":\"{\\n\"},\"finish_reason\":null,\"index\":0}],\"created\":1753747147,\"id\":\"chatcmpl-Twrq5CoPC6rRx1U6nSPuZzS2iiRAjWYx\",\"model\":\"qwen3-coder-q2kxl\",\"object\":\"chat.completion.chunk\",\"usage\":null}\n\ndata: {\"choices\":[{\"delta\":{\"content\":\" \"},\"finish_reason\":null,\"index\":0}],\"created\":1753747147,\"id\":\"chatcmpl-Twrq5CoPC6rRx1U6nSPuZzS2iiRAjWYx\",\"model\":\"qwen3-coder-q2kxl\",\"object\":\"chat.completion.chunk\",\"usage\":null}\n\ndata: {\"choices\":[{\"delta\":{\"content\":\" \\\"\"},\"finish_reason\":null,\"index\":0}],\"created\":1753747147,\"id\":\"chatcmpl-Twrq5CoPC6rRx1U6nSPuZzS2iiRAjWYx\",\"model\":\"qwen3-coder-q2kxl\",\"object\":\"chat.completion.chunk\",\"usage\":null}\n\n...\n\ndata: {\"choices\":[{\"delta\":{\"content\":\"\"},\"finish_reason\":\"stop\",\"index\":0}],\"created\":1753747148,\"id\":\"chatcmpl-Twrq5CoPC6rRx1U6nSPuZzS2iiRAjWYx\",\"model\":\"qwen3-coder-q2kxl\",\"object\":\"chat.completion.chunk\",\"usage\":{\"completion_tokens\":16,\"completion_tokens_details\":{\"accepted_prediction_tokens\":0,\"reasoning_tokens\":0,\"rejected_prediction_tokens\":0},\"draft_tokens\":0,\"draft_tokens_acceptance\":0.0,\"prompt_tokens\":85,\"prompt_tokens_details\":{\"cached_tokens\":2},\"prompt_tokens_per_second\":17.313273292259456,\"time_per_output_token_ms\":100.4579375,\"time_to_first_token_ms\":4909.528,\"tokens_per_second\":9.954415000805685,\"total_tokens\":101}}\n```\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/358/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/354",
      "id": 3269661326,
      "node_id": "I_kwDON-_mZc7C4xKO",
      "number": 354,
      "title": "请求持续出现429报错",
      "user": {
        "login": "adyuter",
        "id": 201514718,
        "node_id": "U_kgDODALe3g",
        "avatar_url": "https://avatars.githubusercontent.com/u/201514718?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adyuter",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-28T12:15:55Z",
      "updated_at": "2025-08-11T06:06:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "API Error (429 {\"error\":{\"message\":\"Error from provider: {\\\"message\\\":\\\"Request was rejected due to rate limiting. Details: TPM limit reached.\\\",\\\"data\\\":null}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n每次对话都会出现至少8次429报错",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/354/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/353",
      "id": 3268667496,
      "node_id": "I_kwDON-_mZc7C0-ho",
      "number": 353,
      "title": "不同模型的最长上下问长度不同，应该怎么设置？",
      "user": {
        "login": "adogwangwang",
        "id": 145645189,
        "node_id": "U_kgDOCK5ehQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/145645189?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adogwangwang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-28T08:09:44Z",
      "updated_at": "2025-07-30T08:55:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "因为不同模型有不同的最大上下文长度，claude code最长支持200k，deepseek最长128k这些，需要设置吗？应该怎么设置呢？求教~~",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/353/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/352",
      "id": 3268519355,
      "node_id": "I_kwDON-_mZc7C0aW7",
      "number": 352,
      "title": "Transformer vs Adapter",
      "user": {
        "login": "gregorriegler",
        "id": 5053662,
        "node_id": "MDQ6VXNlcjUwNTM2NjI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5053662?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gregorriegler",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-28T07:29:29Z",
      "updated_at": "2025-07-29T05:15:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Since what the Transformer does is to adapt - it even says that in the readme - a good name would be \"Adapter\".\nTransformer also has a different meaning in the Transformer architecture and might be misleading.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/352/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/350",
      "id": 3267922952,
      "node_id": "I_kwDON-_mZc7CyIwI",
      "number": 350,
      "title": "gmi和deepinfra的qwen3-coder模型有回复但是claude code内不显示",
      "user": {
        "login": "Bahamutzd",
        "id": 129470680,
        "node_id": "U_kgDOB7eQ2A",
        "avatar_url": "https://avatars.githubusercontent.com/u/129470680?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Bahamutzd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-28T03:30:29Z",
      "updated_at": "2025-07-28T13:24:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n{\n    \"LOG\": true,\n    \"Providers\": [\n        {\n            \"name\": \"newapi\",\n            \"api_base_url\": \"https://xxxx/v1/chat/completions\",\n            \"api_key\": \"sk-xxx\",\n            \"models\": [\n                \"kimik2\",\n                \"gpt-4.1\",\n                \"deepseek-ai/DeepSeek-R1-0528\",\n                \"deepinfra-kimik2\",\n                \"nvidia-kimik2\",\n                \"qwen3-code\",\n                \"gmi-qwen3-code\",\n                \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n                \"deepinfra-qwen3-code\"\n            ]\n        },\n    \"Router\": {\n        \"default\": \"newapi,qwen3-code\",\n        \"background\": \"newapi,gpt-4.1\",\n        \"think\": \"newapi,deepseek-ai/DeepSeek-R1-0528\",\n        \"longContext\": \"newapi,gpt-4.1\"\n    }\n}\n```\ngmi-qwen3-code和deepinfra-qwen3-code都不显示内容,但是日志里有内容返回,不知道为什么\n\n[claude-code-router.log](https://github.com/user-attachments/files/21459625/claude-code-router.log)\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/350/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/349",
      "id": 3267907364,
      "node_id": "I_kwDON-_mZc7CyE8k",
      "number": 349,
      "title": "使用ccr code 创建/agents 出现问题",
      "user": {
        "login": "liushunqiu",
        "id": 13740807,
        "node_id": "MDQ6VXNlcjEzNzQwODA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/13740807?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liushunqiu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-28T03:22:35Z",
      "updated_at": "2025-08-20T13:22:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " Create new agent                                                                                                                                                                         │\n│ Step 3: Describe what this agent should do and when it should be used (be comprehensive for best results)                                                                                │\n│                                                                                                                                                                                          │\n│ Expert software engineer that helps review my code based on best practices…                                                                                                              │\n│                                                                                                                                                                                          │\n│ Invalid agent configuration generated \n\n```\nuse transformers: [ Li { max_tokens: 65536, options: { max_tokens: 65536 } } ]\nfinal request: https://api-inference.modelscope.cn/v1/chat/completions undefined {\n  method: 'POST',\n  headers: _HeadersList {\n    cookies: null,\n    [Symbol(headers map)]: Map(2) { 'content-type' => [Object], 'authorization' => [Object] },\n    [Symbol(headers map sorted)]: null\n  },\n  body: '{\"messages\":[{\"role\":\"system\",\"content\":[{\"type\":\"text\",\"text\":\"You are Claude Code, Anthropic\\'s official CLI for Claude.\",\"cache_control\":{\"type\":\"ephemeral\"}},{\"type\":\"text\",\"text\":\"You are an elite AI agent architect specializing in crafting high-performance agent configurations. Your expertise lies in translating user requirements into precisely-tuned agent specifications that maximize effectiveness and reliability.\\\\n\\\\n**Important Context**: You may have access to project-specific instructions from CLAUDE.md files and other context that may include coding standards, project structure, and custom requirements. Consider this context when creating agents to ensure they align with the project\\'s established patterns and practices.\\\\n\\\\nWhen a user describes what they want an agent to do, you will:\\\\n\\\\n1. **Extract Core Intent**: Identify the fundamental purpose, key responsibilities, and success criteria for the agent. Look for both explicit requirements and implicit needs. Consider any project-specific context from CLAUDE.md files. For agents that are meant to review code, you should assume that the user is asking to review recently written code and not the whole codebase, unless the user has explicitly instructed you otherwise.\\\\n\\\\n2. **Design Expert Persona**: Create a compelling expert identity that embodies deep domain knowledge relevant to the task. The persona should inspire confidence and guide the agent\\'s decision-making approach.\\\\n\\\\n3. **Architect Comprehensive Instructions**: Develop a system prompt that:\\\\n   - Establishes clear behavioral boundaries and operational parameters\\\\n   - Provides specific methodologies and best practices for task execution\\\\n   - Anticipates edge cases and provides guidance for handling them\\\\n   - Incorporates any specific requirements or preferences mentioned by the user\\\\n   - Defines output format expectations when relevant\\\\n   - Aligns with project-specific coding standards and patterns from CLAUDE.md\\\\n\\\\n4. **Optimize for Performance**: Include:\\\\n   - Decision-making frameworks appropriate to the domain\\\\n   - Quality control mechanisms and self-verification steps\\\\n   - Efficient workflow patterns\\\\n   - Clear escalation or fallback strategies\\\\n\\\\n5. **Create Identifier**: Design a concise, descriptive identifier that:\\\\n   - Uses lowercase letters, numbers, and hyphens only\\\\n   - Is typically 2-4 words joined by hyphens\\\\n   - Clearly indicates the agent\\'s primary function\\\\n   - Is memorable and easy to type\\\\n   - Avoids generic terms like \\\\\"helper\\\\\" or \\\\\"assistant\\\\\"\\\\n\\\\n6 **Example agent descriptions**:\\\\n  - in the \\'whenToUse\\' field of the JSON object, you should include examples of when this agent should be used.\\\\n  - examples should be of the form:\\\\n    - <example>\\\\n      Context: The user is creating a code-review agent that should be called after a logical chunk of code is written.\\\\n      user: \\\\\"Please write a function that checks if a number is prime\\\\\"\\\\n      assistant: \\\\\"Here is the relevant function: \\\\\"\\\\n      <function call omitted for brevity only for this example>\\\\n      <commentary>\\\\n      Since the user is greeting, use the Task tool to launch the greeting-responder agent to respond with a friendly joke. \\\\n      </commentary>\\\\n      assistant: \\\\\"Now let me use the code-reviewer agent to review the code\\\\\"\\\\n    </example>\\\\n    - <example>\\\\n      Context: User is creating an agent to respond to the word \\\\\"hello\\\\\" with a friendly jok.\\\\n      user: \\\\\"Hello\\\\\"\\\\n      assistant: \\\\\"I\\'m going to use the Task tool to launch the greeting-responder agent to respond with a friendly joke\\\\\"\\\\n      <commentary>\\\\n      Since the user is greeting, use the greeting-responder agent to respond with a friendly joke. \\\\n      </commentary>\\\\n    </example>\\\\n  - If the user mentioned or implied that the agent should be used proactively, you should include examples of this.\\\\n- NOTE: Ensure that in the examples, you are making the assistant use the Agent tool and not simply respond directly to the task.\\\\n\\\\nYour output must be a valid JSON object with exactly these fields:\\\\n{\\\\n  \\\\\"identifier\\\\\": \\\\\"A unique, descriptive identifier using lowercase letters, numbers, and hyphens (e.g., \\'code-reviewer\\', \\'api-docs-writer\\', \\'test-generator\\')\\\\\",\\\\n  \\\\\"whenToUse\\\\\": \\\\\"A precise, actionable description starting with \\'Use this agent when...\\' that clearly defines the triggering conditions and use cases. Ensure you include examples as described above.\\\\\",\\\\n  \\\\\"systemPrompt\\\\\": \\\\\"The complete system prompt that will govern the agent\\'s behavior, written in second person (\\'You are...\\', \\'You will...\\') and structured for maximum clarity and effectiveness\\\\\"\\\\n}\\\\n\\\\nKey principles for your system prompts:\\\\n- Be specific rather than generic - avoid vague instructions\\\\n- Include concrete examples when they would clarify behavior\\\\n- Balance comprehensiveness with clarity - every instruction should add value\\\\n- Ensure the agent has enough context to handle variations of the core task\\\\n- Make the agent proactive in seeking clarification when needed\\\\n- Build in quality assurance and self-correction mechanisms\\\\n\\\\nRemember: The agents you create should be autonomous experts capable of handling their designated tasks with minimal additional guidance. Your system prompts are their complete operational manual.\\\\n\",\"cache_control\":{\"type\":\"ephemeral\"}}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"<system-reminder>\\\\nAs you answer the user\\'s questions, you can use the following context:\\\\n# claudeMd\\\\nCodebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.\\\\n\\\\nContents of D:\\\\\\\\rio.liu\\\\\\\\projectReview\\\\\\\\CLAUDE.md (project instructions, checked into the codebase):\\\\n\\\\n# CLAUDE.md\\\\r\\\\n\\\\r\\\\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\\\\r\\\\n\\\\r\\\\n## Project Overview\\\\r\\\\n\\\\r\\\\nThis is a large-scale, microservices-based system built with Java and Maven. The project is organized into multiple modules, each representing a distinct service (e.g., `eco-etc-firm-admin`, `eco-etc-firm-order`, `eco-etc-firm-auth`).\\\\r\\\\n\\\\r\\\\nThe core project structure is defined in `eco-etc-firm-parent`, which manages shared dependencies and common modules like `eco-etc-common` and `eco-etc-persistence`.\\\\r\\\\n\\\\r\\\\nKey technologies used:\\\\r\\\\n- **Build:** Apache Maven\\\\r\\\\n- **Framework:** Spring Boot, Spring Cloud Alibaba\\\\r\\\\n- **CI/CD:** Jenkins (`Jenkinsfile`) and Docker (`Dockerfile`)\\\\r\\\\n- **Configuration:** Nacos (as suggested by `nacos` references and `.yml` files)\\\\r\\\\n- **Messaging:** RocketMQ (in `eco-etc-mq` module)\\\\r\\\\n- **Scheduling:** XXL-Job (inferred from release notes and job classes)\\\\r\\\\n- **API Gateway:** `eco-etc-firm-gateway`\\\\r\\\\n- **Database:** MySQL with MyBatis-Plus\\\\r\\\\n- **Cache:** Redis\\\\r\\\\n\\\\r\\\\n## Common Commands\\\\r\\\\n\\\\r\\\\n- **Build the entire project:** From the root directory of a specific service or the parent, run:\\\\r\\\\n  ```bash\\\\r\\\\n  mvn clean install\\\\r\\\\n  ```\\\\r\\\\n- **Run tests:**\\\\r\\\\n  ```bash\\\\r\\\\n  mvn test\\\\r\\\\n  ```\\\\r\\\\n- **Skip tests during build:**\\\\r\\\\n  ```bash\\\\r\\\\n  mvn clean install -DskipTests\\\\r\\\\n  ```\\\\r\\\\n- **Build a single module:**\\\\r\\\\n  ```bash\\\\r\\\\n  mvn clean install -pl module-name -am\\\\r\\\\n  ```\\\\r\\\\n- **Run a single test:**\\\\r\\\\n  ```bash\\\\r\\\\n  mvn test -Dtest=TestClassName#testMethodName\\\\r\\\\n  ```\\\\r\\\\n\\\\r\\\\n## Code Architecture\\\\r\\\\n\\\\r\\\\n### Module Structure\\\\r\\\\n- `eco-etc-firm-parent`: Parent project containing shared dependencies\\\\r\\\\n  - `eco-etc-common`: Common utilities, enums, exceptions, configurations\\\\r\\\\n  - `eco-etc-persistence`: Database persistence layer\\\\r\\\\n  - `eco-etc-redis`: Redis utilities and configurations\\\\r\\\\n  - `eco-etc-mq`: Message queue configurations and utilities\\\\r\\\\n  - `eco-etc-cloud`: Cloud-related configurations\\\\r\\\\n- Service modules (each following the same pattern):\\\\r\\\\n  - `eco-etc-firm-{service}`: Service parent module\\\\r\\\\n    - `eco-etc-firm-{service}-web`: Web application with controllers, services, and business logic\\\\r\\\\n\\\\r\\\\n### Key Components\\\\r\\\\n1. **Common Module (`eco-etc-common`)**: \\\\r\\\\n   - Contains shared entities, enums, DTOs, exceptions, and utility classes\\\\r\\\\n   - Configuration classes for various third-party integrations\\\\r\\\\n   - Aspect-oriented programming components for logging and error handling\\\\r\\\\n\\\\r\\\\n2. **Persistence Layer (`eco-etc-persistence`)**:\\\\r\\\\n   - Database entities and MyBatis mappers\\\\r\\\\n   - Base service implementations for CRUD operations\\\\r\\\\n\\\\r\\\\n3. **Messaging (`eco-etc-mq`)**:\\\\r\\\\n   - Producer and consumer implementations\\\\r\\\\n   - Message DTOs for various integrations\\\\r\\\\n   - Configuration classes for RocketMQ\\\\r\\\\n\\\\r\\\\n4. **Service Layer**:\\\\r\\\\n   - Business logic implementation in service classes\\\\r\\\\n   - Integration with external APIs through Feign clients\\\\r\\\\n   - Scheduled jobs using XXL-Job framework\\\\r\\\\n\\\\r\\\\n## Development and Release Workflow\\\\r\\\\n\\\\r\\\\nFollow these steps when developing and releasing new features.\\\\r\\\\n\\\\r\\\\n### 1. Planning (As per existing CLAUDE.md)\\\\r\\\\n1.  First think through the problem, read the codebase for relevant files, and write a plan to `tasks/todo.md`.\\\\r\\\\n2.  The plan should have a list of todo items that you can check off as you complete them.\\\\r\\\\n3.  Before you begin working, check in with the user to verify the plan.\\\\r\\\\n4.  Then, begin working on the todo items, marking them as complete as you go.\\\\r\\\\n5.  Provide high-level explanations of the changes made.\\\\r\\\\n6.  Keep all changes as simple and minimal as possible.\\\\r\\\\n7.  Add a review section to the `todo.md` file with a summary of the changes.\\\\r\\\\n\\\\r\\\\n### 2. Pre-Release Checklist (from firm-release/README.md)\\\\r\\\\nBefore creating a pull request or deploying, ensure the following are prepared:\\\\r\\\\n- **SQL scripts:** Any database changes (DDL/DML) must be scripted.\\\\r\\\\n- **Cache:** Determine if any caches need to be cleared.\\\\r\\\\n- **Environment Variables:** Note any new or changed environment variables for Kubernetes.\\\\r\\\\n- **Nacos Configuration:** Document any chang'... 1543 more characters,\n  signal: AbortSignal { aborted: false }\n}\nError response from https://api-inference.modelscope.cn/v1/chat/completions: {\"error\":{\"code\":null,\"message\":\"[] is too short - 'tools'\",\"param\":null,\"type\":\"invalid_request_error\"},\"request_id\":\"d58c5c16-9a3f-4eea-a0be-7982c0c02272\"}```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/349/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/345",
      "id": 3267200712,
      "node_id": "I_kwDON-_mZc7CvYbI",
      "number": 345,
      "title": "[bug] api请求google 搜索 有结果但是不显示搜索几个",
      "user": {
        "login": "gtxy27",
        "id": 59104199,
        "node_id": "MDQ6VXNlcjU5MTA0MTk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/59104199?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gtxy27",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-27T15:29:14Z",
      "updated_at": "2025-07-29T13:40:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n\n\n```\n{\n    \"log\":true,\n  \"Providers\": [\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"http://10.126.126.5:3000/v1/chat/completions\",\n      \"api_key\": \"sk-wolsskkWP2ykQmHfKzoGXMtdTIsLSUZYa28wkZxU0VRojsfe\",\n      \"models\": [\"doubao-seed-1-6-thinking\", \"doubao-seed-1-6-flash\",\"qwen3-coder-480b-a35b-instruct\",\"doubao-seed-1-6\",\"moonshotai/Kimi-K2-Instruct\",\"qwen3-235b-a22b\"],\n      \"transformer\": {\n        \"doubao-seed-1-6-thinking\":{\n            \"use\": [\"reasoning\"]\n          }\n        \n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"http://10.126.126.5:3000/v1beta/models/\",\n      \"api_key\": \"sk-wolsskkWP2ykQmHfKzoGXMtdTIsLSUZYa28wkZxU0VRojsfe\",\n      \"models\": [\"gemini-2.5-flash\",\"gemini-2.5-flash-nothinking\", \"gemini-2.5-pro\",\"gemini-2.5-pro-thinking\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openai,moonshotai/Kimi-K2-Instruct\", \n    \"background\": \"openai,doubao-seed-1-6-flash\",\n    \"think\": \"openai,doubao-seed-1-6-thinking\",\n    \"longContext\": \"gemini,doubao-seed-1-6-thinking\",\n    \"webSearch\": \"gemini,gemini-2.5-flash-lite\"\n  }\n}\n\n```\n后台日志\n```\nAnthropic Request: {\n  \"model\": \"gemini-2.5-flash-lite\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        {\n          \"type\": \"text\",\n          \"text\": \"Perform a web search for the query: New York weather forecast tomorrow July 28 2025\",\n          \"cache_control\": {\n            \"type\": \"ephemeral\"\n          }\n        }\n      ]\n    }\n  ],\n  \"temperature\": 1,\n  \"system\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"You are Claude Code, Anthropic's official CLI for Claude.\",\n      \"cache_control\": {\n        \"type\": \"ephemeral\"\n      }\n    },\n    {\n      \"type\": \"text\",\n      \"text\": \"You are an assistant for performing a web search tool use\",\n      \"cache_control\": {\n        \"type\": \"ephemeral\"\n      }\n    }\n  ],\n  \"tools\": [\n    {\n      \"type\": \"web_search_20250305\",\n      \"name\": \"web_search\",\n      \"max_uses\": 8\n    }\n  ],\n  \"metadata\": {\n    \"user_id\": \"user_f93118b15c80b2da414d491538924dbb0a9a93dc0078af23fa7e514f32c1c95f_account__session_34721c22-814d-4426-8476-d265cdd3440f\"\n  },\n  \"max_tokens\": 21333\n}\nuse transformers: [ fe { name: 'gemini', endPoint: '/v1beta/models/:modelAndAction' } ]\nfinal request: http://10.126.126.5:3000/v1beta/models/gemini-2.5-flash-lite:generateContent undefined {\n  method: 'POST',\n  headers: Headers {\n    'Content-Type': 'application/json',\n    Authorization: 'undefined',\n    'x-goog-api-key': 'sk-wolsskkWP2ykQmHfKzoGXMtdTIsLSUZYa28wkZxU0VRojsfe'\n  },\n  body: `{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"You are Claude Code, Anthropic's official CLI for Claude.\"},{\"text\":\"You are an assistant for performing a web search tool use\"}]},{\"role\":\"user\",\"parts\":[{\"text\":\"Perform a web search for the query: New York weather forecast tomorrow July 28 2025\"}]}],\"tools\":[{\"googleSearch\":{}}]}`,\n  signal: AbortSignal { aborted: false }\n}\nOriginal OpenAI response: {\n  \"choices\": [\n    {\n      \"finish_reason\": \"stop\",\n      \"index\": 0,\n      \"message\": {\n        \"content\": \"The weather forecast for New York on Monday, July 28, 2025, predicts sunny conditions during the day and clear skies at night. The temperature is expected to range between 76°F and 94°F, with humidity around 58%. Some sources also indicate a high of 91°F and a low of 66°F for July 28th, with no expected precipitation.\",\n        \"role\": \"assistant\"\n      }\n    }\n  ],\n  \"created\": 1753630034,\n  \"object\": \"chat.completion\",\n  \"usage\": {\n    \"completion_tokens\": 115,\n    \"prompt_tokens\": 49,\n    \"total_tokens\": 164\n  }\n}\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/345/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/343",
      "id": 3267094594,
      "node_id": "I_kwDON-_mZc7Cu-hC",
      "number": 343,
      "title": "Invalid tool parameters",
      "user": {
        "login": "little-house-studio",
        "id": 212126511,
        "node_id": "U_kgDODKTLLw",
        "avatar_url": "https://avatars.githubusercontent.com/u/212126511?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/little-house-studio",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-27T13:13:37Z",
      "updated_at": "2025-09-15T05:16:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "⎿  Error: InputValidationError: TodoWrite failed due to the following issues:      The required parameter `todos` is missing      An unexpected parameter `text` was provided   \n⎿  Error: InputValidationError: TodoWrite failed due to the following issues:      The required parameter `todos` is missing      An unexpected parameter `text` was provided   \n⎿  Error: InputValidationError: TodoWrite failed due to the following issues:      The required parameter `todos` is missing      An unexpected parameter `text` was provided",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/343/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/341",
      "id": 3266826283,
      "node_id": "I_kwDON-_mZc7Ct9Ar",
      "number": 341,
      "title": "Claude Code keeps throwing \"API error (connection error)\"",
      "user": {
        "login": "serendipity-vectr",
        "id": 151996373,
        "node_id": "U_kgDOCQ9H1Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/151996373?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/serendipity-vectr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-07-27T07:24:10Z",
      "updated_at": "2026-01-11T10:32:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi @musistudio,\n\nThanks for building this tool, however, my instance keeps throwing errors like below:\n\n```sh\nAPI Error (Connection error.) · Retrying in 36 seconds… (attempt 9/10)\n    ⎿  TypeError (fetch failed)\n```\n\n## Steps\n\n### Installation\n\n```sh\n$  node -v\nv22.14.0\n\n$ npm install -g @anthropic-ai/claude-code\n\n$ npm install -g @musistudio/claude-code-router\n\n$ claude -v\n1.0.61 (Claude Code)\n\n$ ccr version\nclaude-code-router version: 1.0.27\n```\n\n### config.json\n\n`Providers[0].api_key` is generated at https://openrouter.ai/settings/keys.\n\n```json\n{\n    \"LOG\": true,\n    \"Providers\": [\n      {\n        \"name\": \"openrouter\",\n        \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n        \"api_key\": \"sk-or-v1-xxxx\",\n        \"models\": [\n          \"anthropic/claude-opus-4\"\n        ]\n      }\n    ],\n    \"Router\": {\n      \"background\": \"openrouter,anthropic/claude-opus-4\",\n      \"think\": \"openrouter,anthropic/claude-opus-4\",\n      \"longContext\": \"openrouter,anthropic/claude-opus-4\"\n    }\n  }\n```\n\n### Start Instance\n\n```sh\n# Terminal 1\n\n$ ccr start\nundefined\nLoaded JSON config from: /Users/admin/.claude-code-router/config.json\nregister transformer: Anthropic (endpoint: /v1/messages)\nregister transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\nregister transformer: deepseek (no endpoint)\nregister transformer: tooluse (no endpoint)\nregister transformer: openrouter (no endpoint)\nregister transformer: maxtoken (no endpoint)\nregister transformer: groq (no endpoint)\nregister transformer: cleancache (no endpoint)\nregister transformer: enhancetool (no endpoint)\nopenrouter provider registered\n🚀 LLMs API server listening on http://127.0.0.1:3456\n\n# Terminal 2\n\n$ export ANTHROPIC_API_KEY=sk-or-v1-xxxx\n$ export ANTHROPIC_BASE_URL=http://127.0.0.1:3456\n$ export ANTHROPIC_LOG=debug DEBUG=1\n$ claude\n\n╭────────────────────────────────────────────────────────╮\n│ ✻ Welcome to Claude Code!                              │\n│                                                        │\n│   /help for help, /status for your current setup       │\n│                                                        │\n│   cwd: /Users/admin/workspace/localization-editor  │\n│                                                        │\n│   ──────────────────────────────────────────────────── │\n│                                                        │\n│   Overrides (via env):                                 │\n│                                                        │\n│   • API Key: sk-ant-…xxxx │\n│   • API Base URL: http://127.0.0.1:3456                │\n╰────────────────────────────────────────────────────────╯\n\n[log_409021] sending request {\n  method: 'post',\n  url: 'http://127.0.0.1:3456/v1/messages?beta=true',\n  options: {\n    method: 'post',\n    path: '/v1/messages?beta=true',\n    body: {\n      model: 'openrouter,anthropic/claude-opus-4',\n      messages: [Array],\n      temperature: 1,\n      system: [Array],\n      tools: [Array],\n      tool_choice: undefined,\n      metadata: [Object],\n      max_tokens: 21333,\n      thinking: undefined\n    },\n    timeout: 60000,\n    stream: false\n  },\n  headers: {\n    accept: 'application/json',\n    'anthropic-beta': 'claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14',\n    'anthropic-dangerous-direct-browser-access': 'true',\n    'anthropic-version': '2023-06-01',\n    'content-type': 'application/json',\n    'user-agent': 'claude-cli/1.0.61 (external, cli)',\n    'x-api-key': '***',\n    'x-app': 'cli',\n    'x-stainless-arch': 'arm64',\n    'x-stainless-lang': 'js',\n    'x-stainless-os': 'MacOS',\n    'x-stainless-package-version': '0.55.1',\n    'x-stainless-retry-count': '0',\n    'x-stainless-runtime': 'node',\n    'x-stainless-runtime-version': 'v22.14.0',\n    'x-stainless-timeout': '60'\n  }\n}\n[log_65689f] connection failed - error; no more retries left\n[log_65689f] connection failed (error; no more retries left) {\n  url: 'http://127.0.0.1:3456/v1/messages?beta=true',\n  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 2/10)\n    ⎿  TypeError (fetch failed)\n\n✻ Unfurling… (2s · ↑ 0 tokens · esc to interrupt · offline)\n\n[log_b5b2fd] sending request {\n  method: 'post',\n  url: 'http://127.0.0.1:3456/v1/messages?beta=true',\n  options: {\n    method: 'post',\n    path: '/v1/messages?beta=true',\n    body: {\n      model: 'claude-3-5-haiku-20241022',\n      max_tokens: 512,\n      messages: [Array],\n      system: [Array],\n      temperature: 0,\n      metadata: [Object],\n      stream: true\n    },\n    timeout: 60000,\n    signal: AbortSignal { aborted: false },\n    stream: true\n  },\n  headers: {\n    accept: 'application/json',\n    'anthropic-beta': 'fine-grained-tool-streaming-2025-05-14',\n    'anthropic-dangerous-direct-browser-access': 'true',\n    'anthropic-version': '2023-06-01',\n    'content-type': 'application/json',\n    'user-agent': 'claude-cli/1.0.61 (external, cli)',\n    'x-api-key': '***',\n    'x-app': 'cli',\n    'x-stainless-arch': 'arm64',\n    'x-stainless-helper-method': 'stream',\n    'x-stainless-lang': 'js',\n    'x-stainless-os': 'MacOS',\n    'x-stainless-package-version': '0.55.1',\n    'x-stainless-retry-count': '0',\n    'x-stainless-runtime': 'node',\n    'x-stainless-runtime-version': 'v22.14.0',\n    'x-stainless-timeout': '60'\n  }\n}\n[log_81477f] sending request {\n  method: 'post',\n  url: 'http://127.0.0.1:3456/v1/messages?beta=true',\n  options: {\n    method: 'post',\n    path: '/v1/messages?beta=true',\n    body: {\n      model: 'openrouter,anthropic/claude-opus-4',\n      messages: [Array],\n      temperature: 1,\n      system: [Array],\n      tools: [Array],\n      tool_choice: undefined,\n      metadata: [Object],\n      max_tokens: 21333,\n      thinking: undefined\n    },\n    timeout: 60000,\n    stream: false\n  },\n  headers: {\n    accept: 'application/json',\n    'anthropic-beta': 'claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14',\n    'anthropic-dangerous-direct-browser-access': 'true',\n    'anthropic-version': '2023-06-01',\n    'content-type': 'application/json',\n    'user-agent': 'claude-cli/1.0.61 (external, cli)',\n    'x-api-key': '***',\n    'x-app': 'cli',\n    'x-stainless-arch': 'arm64',\n    'x-stainless-lang': 'js',\n    'x-stainless-os': 'MacOS',\n    'x-stainless-package-version': '0.55.1',\n    'x-stainless-retry-count': '0',\n    'x-stainless-runtime': 'node',\n    'x-stainless-runtime-version': 'v22.14.0',\n```\n\nAppreciate your help!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/341/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        357
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/340",
      "id": 3266805936,
      "node_id": "I_kwDON-_mZc7Ct4Cw",
      "number": 340,
      "title": "请问能否在服务器上供多人使用？",
      "user": {
        "login": "EasonBz",
        "id": 107025966,
        "node_id": "U_kgDOBmEWLg",
        "avatar_url": "https://avatars.githubusercontent.com/u/107025966?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/EasonBz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-27T07:02:06Z",
      "updated_at": "2025-09-17T10:13:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "不太清楚怎么操作",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/340/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/339",
      "id": 3266736577,
      "node_id": "I_kwDON-_mZc7CtnHB",
      "number": 339,
      "title": "我用某个中转平台的api，但是日志显示似乎组装了一个极其诡异的post",
      "user": {
        "login": "EasonBz",
        "id": 107025966,
        "node_id": "U_kgDOBmEWLg",
        "avatar_url": "https://avatars.githubusercontent.com/u/107025966?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/EasonBz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-27T06:12:01Z",
      "updated_at": "2025-07-27T12:19:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/0213a3f2-d43d-401d-86c3-afd6ca223d4b)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/339/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/338",
      "id": 3266623894,
      "node_id": "I_kwDON-_mZc7CtLmW",
      "number": 338,
      "title": "Unsupported JSON schema fields: minItems",
      "user": {
        "login": "Tor-Saxberg",
        "id": 22891472,
        "node_id": "MDQ6VXNlcjIyODkxNDcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/22891472?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Tor-Saxberg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-27T05:14:22Z",
      "updated_at": "2025-08-28T02:42:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm having issues getting this to work.\n\nconfig.json\n```json\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk...\",\n      \"models\": [ \"@preset/cerebras-qwen\" ],\n      \"transformer\": {\n        \"use\": [\n          [ \"maxtoken\", { \"max_tokens\": 40960} ],\n          \"openrouter\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,@preset/cerebras-qwen\"\n  }\n}\n```\n\nbut I get this error when I write something in the ccr:\n```json\n{\n  \"error\": {\n    \"message\": \"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"Provider returned error\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"raw\\\":\\\"{\\\\\\\"message\\\\\\\":\\\\\\\"Unsupported JSON schema fields: [\\\\\\\"items\\\\\\\", \\\\\\\"minItems\\\\\\\"]\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"invalid_request_error\\\\\\\",\\\\\\\"param\\\\\\\":\\\\\\\"response_format\\\\\\\", \\\\\\\"code\\\\\\\":\\\\\\\"wrong_api_format\\\\\\\"}\\\",\\\"provider_name\\\":\\\"Cerebras\\\"}},\\\"user_id\\\":\\\"user_...\\\"}\",\n    \"type\": \"api_error\",\n    \"code\": \"provider_response_error\"\n  }\n}\n```\n\nI verified that it should work with a simple curl command:\n` curl -X POST https://openrouter.ai/api/v1/chat/completions -H \"Authorization: Bearer sk...\" -H \"Content-Type: application/json\" -d '{\"model\": \"@preset/cerebras-qwen\", \"messages\": [{\"role\": \"user\", \"content\": \"which llm model are you?\"}]}}'`\n\n\nWhen I use the config below with groq, there's no issue, so ccr works in general:\n\n```json\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"groq\",\n      \"api_base_url\": \"https://api.groq.com/openai/v1/chat/completions\",\n      \"api_key\": \"gsk...\",\n      \"models\": [ \"qwen/qwen3-32b\" , \"groq,moonshotai/kimi-k2-instruct\"],\n      \"transformer\": {\n        \"use\": [\n          [ \"maxtoken\", { \"max_tokens\": 16384 } ],\n          \"openrouter\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"groq,qwen/qwen3-32b\"\n  }\n}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/338/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/336",
      "id": 3265903774,
      "node_id": "I_kwDON-_mZc7Cqbye",
      "number": 336,
      "title": "Openrouter的K2问题",
      "user": {
        "login": "nyxira2012",
        "id": 218356199,
        "node_id": "U_kgDODQPZ5w",
        "avatar_url": "https://avatars.githubusercontent.com/u/218356199?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nyxira2012",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-26T17:09:57Z",
      "updated_at": "2025-08-03T10:06:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "有点快被这家的api给玩死了，现在用下面的配置文件能说hi，但是上手调用工具就卡死，有没有大佬说下到底改哪里能用？\n{\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-12334455123\",\n      \"models\": [\n        \"moonshotai/kimi-k2\"\n      ],\n      \"transformer\": { \"use\": [\"openrouter\"] \n     }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/336/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/333",
      "id": 3265473900,
      "node_id": "I_kwDON-_mZc7Coy1s",
      "number": 333,
      "title": "Gemini provider and transformer isn't working",
      "user": {
        "login": "mcheviron",
        "id": 87418909,
        "node_id": "MDQ6VXNlcjg3NDE4OTA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/87418909?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mcheviron",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8201975274,
          "node_id": "LA_kwDON-_mZc8AAAAB6OA16g",
          "url": "https://api.github.com/repos/musistudio/claude-code-router/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-07-26T11:40:20Z",
      "updated_at": "2025-12-26T03:59:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```json\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\n  \\\"error\\\": {\\n    \\\"code\\\": 400,\\n    \\\"message\\\": \\\"Invalid JSON \n    payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find \n    field.\\\\nInvalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find field.\\\",\\n \n       \\\"status\\\": \\\"INVALID_ARGUMENT\\\",\\n    \\\"details\\\": [\\n      {\\n        \\\"@type\\\": \n    \\\"type.googleapis.com/google.rpc.BadRequest\\\",\\n        \\\"fieldViolations\\\": [\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[0].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find field.\\\"\\n   \n           },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[1].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find field.\\\"\\n   \n           },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[2].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[63].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find field.\\\"\\n   \n           },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[0].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find field.\\\"\\n   \n           },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[1].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find field.\\\"\\n   \n           },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[2].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[85].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find field.\\\"\\n   \n           },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[0].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find field.\\\"\\n  \n            },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[1].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find field.\\\"\\n  \n            },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[2].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[105].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find field.\\\"\\n  \n            },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[0].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[0].properties[0].value': Cannot find field.\\\"\\n  \n            },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[1].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[1].properties[0].value': Cannot find field.\\\"\\n  \n            },\\n          {\\n            \\\"field\\\": \n    \\\"tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[2].properties[0].value\\\",\\n            \n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name \\\\\\\"const\\\\\\\" at \n    'tools[0].function_declarations[131].parameters.properties[2].value.items.any_of[2].properties[0].value': Cannot find field.\\\"\\n  \n            }\\n        ]\\n      }\\n    ]\\n  }\\n}\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n\nThe config:\n```json\n{\n  \"name\": \"gemini\",\n  \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n  \"api_key\": \"...\",\n  \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n  \"transformer\": {\n    \"use\": [\"gemini\"]\n  }\n}\n```\n\n\nFrom the logs and some investigation in the code, I think it's coming from your `musistudio/llms` package, in the `src/transformer/gemini.transformer.ts` you may need to add `delete obj.const;` in the `cleanupParameters` func\n\nTell me if I can help somehow. Thanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/333/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/329",
      "id": 3265033806,
      "node_id": "I_kwDON-_mZc7CnHZO",
      "number": 329,
      "title": "gemini无法使用问题",
      "user": {
        "login": "yuzyf",
        "id": 77232395,
        "node_id": "MDQ6VXNlcjc3MjMyMzk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/77232395?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yuzyf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-26T03:51:36Z",
      "updated_at": "2025-08-11T06:57:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"PROXY_URL\":\"http://127.0.0.1:7890\",\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"AIxxxxxxxx\",\n      \"models\": [\"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n  }\n}\n\n显示\n\n<img width=\"881\" height=\"138\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1f3ff114-7d5a-401e-9e35-a81018635f05\" />\n\n\n<img width=\"442\" height=\"75\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c4693afb-8825-4944-9f54-5fb14dc8b7bf\" />\n\n代理也开了、求指导",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/329/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/325",
      "id": 3262741626,
      "node_id": "I_kwDON-_mZc7CeXx6",
      "number": 325,
      "title": "Claude Code Sub-Agents 能支持一下吗",
      "user": {
        "login": "Gardennias",
        "id": 16443796,
        "node_id": "MDQ6VXNlcjE2NDQzNzk2",
        "avatar_url": "https://avatars.githubusercontent.com/u/16443796?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gardennias",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-25T10:23:25Z",
      "updated_at": "2025-07-27T13:15:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/325/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/324",
      "id": 3262412603,
      "node_id": "I_kwDON-_mZc7CdHc7",
      "number": 324,
      "title": "cc无法web search",
      "user": {
        "login": "Aboceder",
        "id": 53726224,
        "node_id": "MDQ6VXNlcjUzNzI2MjI0",
        "avatar_url": "https://avatars.githubusercontent.com/u/53726224?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Aboceder",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-25T08:21:18Z",
      "updated_at": "2025-08-07T15:29:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "用了原生的gemini API跟使用gpt-load代理的API，都无法实现webserach，search结构都是0，也不报错，有没有能给个配置文件参考下的",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/324/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/323",
      "id": 3262334217,
      "node_id": "I_kwDON-_mZc7Cc0UJ",
      "number": 323,
      "title": "CCR支持原版CC sonnet/opus 吗？",
      "user": {
        "login": "Linde7777",
        "id": 69742577,
        "node_id": "MDQ6VXNlcjY5NzQyNTc3",
        "avatar_url": "https://avatars.githubusercontent.com/u/69742577?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Linde7777",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-25T07:51:16Z",
      "updated_at": "2025-07-27T12:50:52Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "比如我用CC官方的账户，但是一开始我想用gemini来规划，然后再用CC提供的sonnet/opus来执行\n\n感谢解答",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/323/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/322",
      "id": 3262241500,
      "node_id": "I_kwDON-_mZc7Ccdrc",
      "number": 322,
      "title": "配置好ccr code后 API Base URL指向异常",
      "user": {
        "login": "strive-yang",
        "id": 86331697,
        "node_id": "MDQ6VXNlcjg2MzMxNjk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/86331697?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/strive-yang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-25T07:12:59Z",
      "updated_at": "2025-07-25T07:38:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`{\n    \"OPENAI_API_KEY\": \"sk-\",\n    \"OPENAI_BASE_URL\": \"http://127.0.0.1:7890\",\n    \"OPENAI_MODEL\": \"deepseek-chat\",\n    \"LOG\": true,\n    \"Providers\": [\n        {\n            \"name\": \"deepseek\",\n            \"api_base_url\": \"https://api.deepseek.com\",\n            \"api_key\": \"sk-\",\n            \"models\": [\n                \"deepseek-chat\",\n                \"deepseek-reasoner\"\n            ],\n            \"transformer\": {\n                \"use\": [\n                    \"deepseek\"\n                ],\n                \"deepseek-chat\": {\n                    \"use\": [\n                        \"tooluse\"\n                    ]\n                }\n            }\n        }\n    ],\n    \"Router\": {\n        \"default\": \"deepseek,deepseek-chat\",\n        \"background\": \"deepseek,deepseek-chat\",\n        \"think\": \"deepseek,deepseek-reasoner\",\n        \"longContext\": \"deepseek,deepseek-chat\"\n    }\n}`\n按道理来说应该是指向本机的3456端口，但是依旧是cc的官方api url\n@",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/322/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/321",
      "id": 3262217662,
      "node_id": "I_kwDON-_mZc7CcX2-",
      "number": 321,
      "title": "为什么我的终端突然不显示对话的输出了",
      "user": {
        "login": "wch352136",
        "id": 17609338,
        "node_id": "MDQ6VXNlcjE3NjA5MzM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/17609338?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wch352136",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-25T07:02:34Z",
      "updated_at": "2025-12-27T04:14:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我得终端渲染有问题吗？\n\n<img width=\"1042\" height=\"554\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/42612447-9366-4c37-a9a4-8a8c7b2eb270\" />\n\n这是在ccr code里显示，但是在另外的窗口(ccr start 打开后的日志窗口)，可以看到是有返回的\n\n<img width=\"1237\" height=\"1016\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ad59ff46-0a9c-4952-9258-6ca8d7b747a1\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/321/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/320",
      "id": 3262106071,
      "node_id": "I_kwDON-_mZc7Cb8nX",
      "number": 320,
      "title": "Azure models configuration support",
      "user": {
        "login": "git-clone-abhinav",
        "id": 33022492,
        "node_id": "MDQ6VXNlcjMzMDIyNDky",
        "avatar_url": "https://avatars.githubusercontent.com/u/33022492?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/git-clone-abhinav",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-25T06:08:57Z",
      "updated_at": "2025-09-23T20:10:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Initiator:\n\n<img width=\"876\" height=\"382\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e1c69be0-0330-4c8a-ab17-e2d635bd7aa7\" />\n\nWhen using some model deployments from the Azure AI Foundry, there are some parameter mismatch. `max_token` is a required/unchangable parameter passed to the model via the `transformer` key. But some models deployed to azure require ``\n\nconfig: \n\n```json\n{\n      \"name\": \"azure\",\n      \"api_base_url\": \"https://----.azure.com/openai/deployments/o4-mini/chat/completions?api-version=2025-01-01-preview\",\n      \"api_key\": \"----\",\n      \"models\": [\n        \"o4-mini\"\n      ],\n      \"transformer\":{\n        \"use\": [\n          [\n            \"max_completion_tokens\",{\n              \"max_completion_tokens\": 1000000\n            }\n          ]\n        ]\n      }\n    }\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/320/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/319",
      "id": 3261896715,
      "node_id": "I_kwDON-_mZc7CbJgL",
      "number": 319,
      "title": "ccr 是否支持原生的claude 格式",
      "user": {
        "login": "NightYuYyy",
        "id": 57441406,
        "node_id": "MDQ6VXNlcjU3NDQxNDA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/57441406?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NightYuYyy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-07-25T03:52:36Z",
      "updated_at": "2025-08-03T06:43:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题， 有些api 中转站是支持 claude 格式的  ccr 是否支持\n没设置transformer 的时候  默认走的是什么transformer呢  openai吗？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/319/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/318",
      "id": 3261890266,
      "node_id": "I_kwDON-_mZc7CbH7a",
      "number": 318,
      "title": "配置修改文档补充",
      "user": {
        "login": "dtcpay-EvanCao",
        "id": 172473887,
        "node_id": "U_kgDOCke-Hw",
        "avatar_url": "https://avatars.githubusercontent.com/u/172473887?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dtcpay-EvanCao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-07-25T03:47:31Z",
      "updated_at": "2025-08-01T07:47:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我发现修改了config.json文件后，ccr的node服务，但是基本使用文档中没有介绍，实际上想使用ccr code 需要先ccr start 加载配置文件，如果修改了配置文件就需要取删掉node 进程， 入门文档中可以补充上这些内容，加上如何关闭ccr 服务的命令，方便重启服务，使用新的配置文件。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/318/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/316",
      "id": 3261697129,
      "node_id": "I_kwDON-_mZc7CaYxp",
      "number": 316,
      "title": "OpenRouter Provider Routing support?",
      "user": {
        "login": "rmoriz",
        "id": 1527,
        "node_id": "MDQ6VXNlcjE1Mjc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1527?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rmoriz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-07-25T01:41:52Z",
      "updated_at": "2025-08-03T06:40:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "OpenRouter often has various providers of one model, e.g. \n\nhttps://openrouter.ai/qwen/qwen3-coder\n\n<img width=\"1083\" height=\"745\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b8498e81-3d8e-4fa4-bb7c-4c43cba25613\" />\n\nYou see different pricing, speed, quantization.\nHow can I pin requests to a specific provider?\n\nhttps://openrouter.ai/docs/features/provider-routing",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/316/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/310",
      "id": 3259221229,
      "node_id": "I_kwDON-_mZc7CQ8Tt",
      "number": 310,
      "title": "配置好以后 Claude code可以回答问题 但是无法修改代码",
      "user": {
        "login": "He-Xun",
        "id": 17931864,
        "node_id": "MDQ6VXNlcjE3OTMxODY0",
        "avatar_url": "https://avatars.githubusercontent.com/u/17931864?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/He-Xun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-24T09:38:16Z",
      "updated_at": "2025-09-08T11:53:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "环境：macOS Sequoia\n配置文件：\n\n``` json\n{\n  \"LOG\":true,\n  \"Providers\": [\n    {\n      \"name\": \"yunwu\",\n      \"api_base_url\": \"https://yunwu.ai/v1/chat/completions\",\n      \"api_key\": \"sk-123456\",\n      \"models\": [\n        \"claude-sonnet-4-20250514\",\n        \"gemini-2.5-pro\",\n        \"gemini-2.5-flash\"\n      ],\n      \"transformer\": { \n      \t\"use\": [\"yunwu\"] \n      }\n    },\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-123456\",\n      \"models\": [\n        \"deepseek-chat\",\n        \"deepseek-reasoner\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"deepseek\"\n        ],\n        \"deepseek-chat\": {\n          \"use\": [\n            \"tooluse\"\n          ]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"yunwu,claude-sonnet-4-20250514\",\n    \"background\": \"yunwu,gemini-2.5-flash\",\n    \"think\": \"yunwu,claude-sonnet-4-20250514\",\n    \"longContext\": \"yunwu,gemini-2.5-pro\",\n    \"webSearch\": \"yunwu,gemini-2.5-flash\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/310/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/304",
      "id": 3258579400,
      "node_id": "I_kwDON-_mZc7COfnI",
      "number": 304,
      "title": "模型切换不起作用，似乎只认\"default\": \"Provider,model\"",
      "user": {
        "login": "zxy2016",
        "id": 19729343,
        "node_id": "MDQ6VXNlcjE5NzI5MzQz",
        "avatar_url": "https://avatars.githubusercontent.com/u/19729343?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zxy2016",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-24T05:45:48Z",
      "updated_at": "2025-07-24T07:57:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "/model kimi,kimi-k2-0711-preview\n\n\"default\": \"dashscope,qwen3-coder-480b-a35b-instruct\"",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/304/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/302",
      "id": 3258235687,
      "node_id": "I_kwDON-_mZc7CNLsn",
      "number": 302,
      "title": "API Error (401 Invalid API key) · Retrying in 1 seconds… (attempt 1/10)",
      "user": {
        "login": "Wang-L-F",
        "id": 81618085,
        "node_id": "MDQ6VXNlcjgxNjE4MDg1",
        "avatar_url": "https://avatars.githubusercontent.com/u/81618085?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Wang-L-F",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-07-24T02:05:27Z",
      "updated_at": "2025-07-27T12:57:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请教Gemini  error 在使用时好像读取了我环境变量中其他模型的key  并没有读取我config配置文件\n\nAPI Error (401 Invalid API key) · Retrying in 1 seconds… (attempt 1/10)\n\n\n{\n  \"APIKEY\": \"your-secret-key\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"***\",\n      \"models\": [\n        \"gemini-2.5-pro\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\"\n  }\n}\n\n\n\n<img width=\"2282\" height=\"744\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b9a29e11-9787-4fa1-ba2e-a652ef717b25\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/302/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/301",
      "id": 3258176895,
      "node_id": "I_kwDON-_mZc7CM9V_",
      "number": 301,
      "title": "suddenly crashes when running",
      "user": {
        "login": "lord-dubious",
        "id": 26337383,
        "node_id": "MDQ6VXNlcjI2MzM3Mzgz",
        "avatar_url": "https://avatars.githubusercontent.com/u/26337383?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lord-dubious",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-24T01:38:11Z",
      "updated_at": "2025-07-24T01:46:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "when router begins tasks it may shutdown at randowm moment no warning\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/301/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/300",
      "id": 3257627708,
      "node_id": "I_kwDON-_mZc7CK3Q8",
      "number": 300,
      "title": "Using CCR on a Mac, it starts... and then it doesn't continue",
      "user": {
        "login": "rcs1000",
        "id": 4092819,
        "node_id": "MDQ6VXNlcjQwOTI4MTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4092819?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rcs1000",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-23T20:30:13Z",
      "updated_at": "2025-08-05T12:31:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I use CCR on a Linux box, it's perfect.\n\nOn my Mac, less so. It will happily give me feedback if I ask it what the security issues are with a Flask app, it's perfect.\n\nBut if I ask it to create a file, it simply can't do it. The moment a file creation task comes up, it simply gives me the input box again. No tokens appear to be used in the process. \n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/300/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/298",
      "id": 3257129181,
      "node_id": "I_kwDON-_mZc7CI9jd",
      "number": 298,
      "title": "This is kind of a question...Claude Code maybe has hardcoded 'slowdowns' in it?",
      "user": {
        "login": "ratacat",
        "id": 3517397,
        "node_id": "MDQ6VXNlcjM1MTczOTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3517397?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ratacat",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-23T17:12:40Z",
      "updated_at": "2025-07-23T17:12:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I just noticed that if you even if you use the like Anthropic if you route your Anthropic account to a different system besides Cloud Code, it runs a lot faster. So I'm pretty sure that Cloud Code has some kind of rate limits for slowing down people's. I mean, if you think about it, they have maybe hundreds of thousands, if not millions, of people using this hitting their servers, and this if they can build in some slow down systems they can preserve a lot of hits on their servers over time. So I think they do have some kind of system in there for slowing it down. Obviously, that would be really difficult for us to change within Cloud Code, but I'm just wondering if you have any ideas on this because your tool is really cool and I love it, and I'm kind of wondering if it might be possible to work on this as well. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/298/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/297",
      "id": 3256973090,
      "node_id": "I_kwDON-_mZc7CIXci",
      "number": 297,
      "title": "How to add more Providers? Like replicate (https://replicate.com/)",
      "user": {
        "login": "mrsaadfazal",
        "id": 91341916,
        "node_id": "MDQ6VXNlcjkxMzQxOTE2",
        "avatar_url": "https://avatars.githubusercontent.com/u/91341916?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mrsaadfazal",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-23T16:15:42Z",
      "updated_at": "2025-07-27T13:01:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I tried adding the replicate provider but it did not work\nwhat my config looks like\n```\n{\n  \"Providers\": [\n    {\n      \"name\": \"replicate\",\n      \"api_base_url\": \"https://api.replicate.com/v1/models\",\n      \"api_key\": \"my_api_keyyyyyyyyyyyyyyyyyyyyy\",\n      \"models\": [\n        \"deepseek-ai/deepseek-r1\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"replicate\"\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"replicate,deepseek-ai/deepseek-r1\",\n    \"background\": \"replicate,deepseek-ai/deepseek-r1\",\n    \"think\": \"replicate,deepseek-ai/deepseek-r1\",\n    \"longContext\": \"replicate,deepseek-ai/deepseek-r1\"\n  },\n  \"APIKEY\": \"my_api_keyyyyyyyyyyyyyyyyyyyyy\",\n  \"HOST\": \"0.0.0.0\"\n}\n```\n\n\nthe error i got\n```\n  ⎿ API Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"status\\\":400,\\\"title\\\":\\\"Validation failed\\\",\\\"detail\\\":\\\"The        \n    following errors occurred:\\\\n- hardware: This field is required.\\\\n- name: This field is required.\\\\n- owner: This field is      \n    required.\\\",\\\"errors\\\":[{\\\"pointer\\\":\\\"/hardware\\\",\\\"detail\\\":\\\"This field is\n    required.\\\"},{\\\"pointer\\\":\\\"/name\\\",\\\"detail\\\":\\\"This field is required.\\\"},{\\\"pointer\\\":\\\"/owner\\\",\\\"detail\\\":\\\"This field      \n    is required.\\\"}]}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/297/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/295",
      "id": 3256668262,
      "node_id": "I_kwDON-_mZc7CHNBm",
      "number": 295,
      "title": "ToolUse errors with Groq API (using Kimi K2). Customer Tool Use Transformer needed?",
      "user": {
        "login": "JB5579",
        "id": 146380781,
        "node_id": "U_kgDOCLmX7Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/146380781?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JB5579",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-23T14:42:55Z",
      "updated_at": "2025-07-23T17:35:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Below is an example of a common error I recieve when CCR CODE tries to change and update file using TOOLs.  Is there an addtional transformer needed for Groq Tool Use?\n\n/compact\n  ⎿ Error: Error during compaction: Error: API Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"Failed to call a function. Please adjust your prompt. See 'failed_generation' for more\n    details.\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"code\\\":\\\"tool_use_failed\\\",\\\"failed_generation\\\":\\\"\\\\u003canalysis\\\\u003e\\\\nLooking back at the conversation thread:\\\\n\\\\n1. The user initially provided an MCP development     \n     plan (MCP_Dev_Plan.md) for implementing MCP capabilities in the integuru project\\\\n2. The plan was organized into two phases:\\\\n   - Phase 1: Refactor integuru for OpenRouter support\\\\n   - Phase 2: Create MCP server       \n    for claude code integration\\\\n3. I successfully implemented Phase 1 updates:\\\\n   - Updated LLM.py to support OpenRouter configuration\\\\n   - Updated CLI argument handling for provider selection\\\\n   - Created\n    environment variables configuration\\\\n   - Left dependencies the same (they were already correct)\\\\n4. When attempting to implement Phase 2, I ran into API 400 errors with tool calls failing - the AI provider was\n    rejecting tool function calls due to malformed formatting\\\\n5. I switched to using direct file creation commands and successfully created:\\\\n   - MCP server structure directories\\\\n   - __main__.py file in\n    src/mcp_integuru/__main__.py\\\\n6. The conversation then shifted to init analyzing the codebase for CLAUDE.md creation\\\\n\\\\nKey technical concepts include:\\\\n- OpenRouter integration for 50+ AI models\\\\n- MCP (Model\n    Context Protocol) server development\\\\n- Docker configuration for containerized services\\\\n- Claude Desktop integration\\\\n- CLI refactoring for provider selection\\\\n\\\\nFiles examined/included:\\\\n- MCP_Dev_Plan.md -\n    entire development plan\\\\n- integuru/util/LLM.py - completely rewritten for OpenRouter support\\\\n- integuru/__main__.py - updated CLI with provider/temperature support\\\\n- integuru/main.py - updated to handle new \n    parameters\\\\n- .env.example - created with OpenRouter configuration\\\\n- src/mcp_integuru/ directories and __main__.py - created for MCP server\\\\n\\\\u003c/analysis\\\\u003e\\\\n\\\\n\\\\u003csummary\\\\u003e\\\\n\\\\n1. Primary Request\n     and Intent:\\\\n   The user provided an MCP development plan (from MCP_Dev_Plan.md) and requested implementation of a two-phase approach to transform the integuru project from a CLI tool limited to OpenAI into a powerful\n     MCP server supporting OpenRouter (50+ AI models) and Claude Code integration. This includes:\\\\n\\\\n   - Phase 1: Refactor existing integuru codebase for OpenRouter support\\\\n   - Phase 2: Create an MCP server for claude\n     code integration with three core tools: api analysis, client generation, and workflow recording\\\\n   - Complete Docker configuration for containerized deployment\\\\n   - Claude Desktop integration examples\\\\n\\\\n2. Key \n    Technical Concepts:\\\\n   - OpenRouter API integration supporting 50+ models (gpt-4o, claude-3-sonnet, gemini-1.5-pro, mistral-large, llama-3-70b, etc.)\\\\n   - MCP (Model Context Protocol) server development with \n    standardized tool interface\\\\n   - LLM provider abstraction layer for multiple AI backends\\\\n   - Docker containerization for MCP server deployment\\\\n   - Browser automation for HAR file generation and workflow \n    recording\\\\n   - Environment variable configuration for API keys and model parameters\\\\n\\\\n3. Files and Code Sections:\\\\n   - integuru/util/LLM.py - **Completely rewritten**:\\\\n     - Added OpenRouterConfig class with       \n    intelligent model name mapping\\\\n     - Replaced singleton LLMSingleton implementation\\\\n     - Added support for 50+ models via OpenRouter API\\\\n     - Backward compatibility maintained\\\\n     - Full example: [Shown in\n     file write above]\\\\n\\\\n   - integuru/__main__.py - **Updated with new CLI options**:\\\\n     - Added --provider flag (openrouter|openai|anthropic)\\\\n     - Added --temperature parameter\\\\n     - Added --list-models\n    flag\\\\n     - Added API key validation\\\\n     - Enhanced error handling and user guidance\\\\n\\\\n   - integuru/main.py - **Updated signature**:\\\\n     - Added provider: str = \\\\\\\"openrouter\\\\\\\" parameter\\\\n     - Added        \n    temperature: float = 0.1 parameter\\\\n     - Updated LLM initialization\\\\n\\\\n   - .env.example - **Created with OpenRouter configuration**:\\\\n     - OPENROUTER_API_KEY format\\\\n     - Model-specific configurations\\\\n\n     - Enterprise deployment settings\\\\n\\\\n   - /src/mcp_integuru/__main__.py - **Created**:\\\\n     - Basic MCP server entry point structure\\\\n\\\\n4. Errors and fixes:\\\\n   - API 400 Errors: Encountered malformed tool call       \n    artifacts causing OpenRouter/OpenAI API rejections\\\\n     - **Solution**: Switched to manual file creation using Write tool instead of function calls\\\\n   - Tool call rejection: The AI provider was rejecting function        \n    calls with malformed formatting\\\\n     - **Solution**: Used direct file manipulation with Write tool\\\\n\\\\n5. Problem Solving:\\\\n   - Successfully implemented Phase 1 of the development plan despite API limitations\\\\n        \n    - Created robust model mapping system for 50+ AI models\\\\n   - Established backward compatibility through singleton pattern\\\\n   - Built foundation infrastructure for MCP server\\\\n\\\\n6. All user messages:\\\\n   -\n    \\\\\\\"Please execute MCP_Dev_Plan.md\\\\\\\"\\\\n   - \\\\\\\"/clear\\\\\\\"\\\\n   - \\\\\\\"continue\\\\\\\" - multiple instances, indicating continuation of tasks\\\\n   - \\\\\\\"help me understand this error\\\\\\\" - when facing API 400 errors\\\\n        \n    - \\\\\\\"please try again\\\\\\\" - request to try different approaches\\\\n   - \\\\\\\"[init task description]\\\\\\\" - request for CLAUDE.md analysis\\\\n\\\\n7. Pending Tasks:\\\\n   - Create MCP server structure and main entry point\n    (Phase 2-1)\\\\n   - Implement MCP tools (analyze_api, generate_client, record_workflow) (Phase 2-2)\\\\n   - Create Docker configuration for MCP server (Phase 2-3)\\\\n   - Create Claude Desktop configuration examples (Phase     \n     2-4)\\\\n\\\\n8. Current Work:\\\\n   Currently creating the MCP server structure as described in Phase 2 of the MCP development plan. The foundational directories and entry point have been created at\n    `/src/mcp_integuru/__main__.py` with basic server initialization code.\\\\n\\\\n9. Optional Next Step:\\\\n   Continue with Phase 2 implementation by creating the main server.py file with MCP protocol implementation. Based on     \n     the plan, this should include the three core MCP tools: integuru_analyze_api, integuru_generate_client, and\n    integuru_record_workflow.\\\\n\\\\n\\\\u003c/summary\\\\u003e\\\"}}\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/295/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/292",
      "id": 3256310329,
      "node_id": "I_kwDON-_mZc7CF1o5",
      "number": 292,
      "title": "对话出现问题",
      "user": {
        "login": "sxl12345-code",
        "id": 217027990,
        "node_id": "U_kgDODO-Vlg",
        "avatar_url": "https://avatars.githubusercontent.com/u/217027990?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sxl12345-code",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-23T13:01:25Z",
      "updated_at": "2025-07-24T03:02:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我的配置如下：\n{\n\"Providers\": [\n{\n\"name\": \"deepseek\",\n\"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n\"api_key\": \"sk-xxx\",\n\"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n\"transformer\": {\n\"use\": [\"deepseek\"],\n\"deepseek-chat\": {\n\"use\": [\"tooluse\"]\n}\n}\n}\n],\n\"Router\": {\n\"default\": \"deepseek,deepseek-chat\",\n\"background\": \"deepseek,deepseek-chat\",\n\"think\": \"deepseek,deepseek-reasoner\",\n\"longContext\": \"deepseek,deepseek-reasoner\"\n}\n}\n出现的情况：\n\n<img width=\"563\" height=\"177\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b0d8ec34-20c8-42cf-9060-511b7ab028bd\" />\n日志：\nsend data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"\\\":\"}}\nOriginal Response: {\n  \"id\": \"f42414e5-3416-451b-a573-f19e189a145d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"content\": \" null\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": null\n    }\n  ]\n}\nsend data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" null\"}}\nOriginal Response: {\n  \"id\": \"f42414e5-3416-451b-a573-f19e189a145d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"content\": \"\\n\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": null\n    }\n  ]\n}\nsend data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"\\n\"}}\nOriginal Response: {\n  \"id\": \"f42414e5-3416-451b-a573-f19e189a145d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"content\": \"}\\n\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": null\n    }\n  ]\n}\nsend data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"}\\n\"}}\nOriginal Response: {\n  \"id\": \"f42414e5-3416-451b-a573-f19e189a145d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"content\": \"```\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": null\n    }\n  ]\n}\nsend data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"```\"}}\nOriginal Response: {\n  \"id\": \"f42414e5-3416-451b-a573-f19e189a145d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"content\": \"\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": \"stop\"\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 178,\n    \"completion_tokens\": 20,\n    \"total_tokens\": 198,\n    \"prompt_tokens_details\": {\n      \"cached_tokens\": 128\n    },\n    \"prompt_cache_hit_tokens\": 128,\n    \"prompt_cache_miss_tokens\": 50\n  }\n}\ncontent_block_stop hasTextContentStarted\nsend data: event: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\nsend data: event: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null},\"usage\":{\"input_tokens\":178,\"output_tokens\":20}}\nsend data: event: message_stop\ndata: {\"type\":\"message_stop\"}\nOriginal Response: {\n  \"id\": \"5810c9bc-84b6-4f9e-919d-e987ad6ded3d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \"\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": null\n    }\n  ]\n}\nsend data: event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"msg_1753275567162\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"model\":\"deepseek-chat\",\"stop_reason\":null,\"stop_sequence\":null,\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}}\nOriginal Response: {\n  \"id\": \"5810c9bc-84b6-4f9e-919d-e987ad6ded3d\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1753275567,\n  \"model\": \"deepseek-chat\",\n  \"system_fingerprint\": \"fp_8802369eaa_prod0623_fp8_kvcache\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"content\": \"\"\n      },\n      \"logprobs\": null,\n      \"finish_reason\": \"stop\"\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 14183,\n    \"completion_tokens\": 7,\n    \"total_tokens\": 14190,\n    \"prompt_tokens_details\": {\n      \"cached_tokens\": 1280\n    },\n    \"prompt_cache_hit_tokens\": 1280,\n    \"prompt_cache_miss_tokens\": 12903\n  }\n}\nWarning: No content in the stream response!\nsend data: event: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null},\"usage\":{\"input_tokens\":14183,\"output_tokens\":7}}\nsend data: event: message_stop\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/292/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/288",
      "id": 3255626159,
      "node_id": "I_kwDON-_mZc7CDOmv",
      "number": 288,
      "title": "如何配置自己部署的模型？",
      "user": {
        "login": "adogwangwang",
        "id": 145645189,
        "node_id": "U_kgDOCK5ehQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/145645189?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adogwangwang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-23T09:26:14Z",
      "updated_at": "2025-07-24T01:07:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "我有一些使用vllm部署的大模型，应该怎么融入ccr？ 是使用openai provider 吗？求大佬们指点",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/288/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/286",
      "id": 3255430327,
      "node_id": "I_kwDON-_mZc7CCey3",
      "number": 286,
      "title": "can you make a router for Amp code",
      "user": {
        "login": "Mike-37",
        "id": 175496710,
        "node_id": "U_kgDOCnXeBg",
        "avatar_url": "https://avatars.githubusercontent.com/u/175496710?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Mike-37",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-23T08:26:14Z",
      "updated_at": "2025-07-23T08:26:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Amp router would be huge \n\nas one user has described it, its \"Amp Code (Claude Code without guard rails)\"",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/286/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/285",
      "id": 3255191040,
      "node_id": "I_kwDON-_mZc7CBkYA",
      "number": 285,
      "title": "No allowed providers are available for the selected model.\",\"code\":404",
      "user": {
        "login": "neoliuhua",
        "id": 53515356,
        "node_id": "MDQ6VXNlcjUzNTE1MzU2",
        "avatar_url": "https://avatars.githubusercontent.com/u/53515356?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/neoliuhua",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-07-23T07:16:47Z",
      "updated_at": "2025-07-24T01:35:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "CCR is 1.0.25:\n\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-or-v1-xxx\",\n      \"models\": [\n        \"qwen/qwen3-235b-a22b-07-25:free\",\n        \"deepseek/deepseek-r1-0528-qwen3-8b:free\",\n        \"moonshotai/kimi-k2:free\",\n        \"moonshotai/kimi-vl-a3b-thinking:free\",\n\t\t\"qwen/qwen-2.5-coder-32b-instruct:free\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,qwen/qwen3-235b-a22b-07-25:free\",\n    \"background\": \"openrouter,deepseek/deepseek-r1-0528-qwen3-8b:free\",\n    \"think\": \"openrouter,moonshotai/kimi-vl-a3b-thinking:free\",\n    \"longContext\": \"openrouter,moonshotai/kimi-k2:free\"\n  }\n}\n\n\n\nlog: \nreplace.\\\"}},\\\"required\\\":[\\\"notebook_path\\\",\\\"new_source\\\"],\\\"additionalProperties\\\":false,\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"}}},{\\\"type\\\":\\\"function\\\",\\\"function\\\":{\\\"name\\\":\\\"WebFetch\\\",\\\"description\\\":\\\"\\\\n- Fetches content from a specified URL and processes it using an AI model\\\\n- Takes a URL and a prompt as input\\\\n- Fetches the URL content, converts HTML to markdown\\\\n- Processes the content with the prompt using a small, fast model\\\\n- Returns the model's response about the content\\\\n- Use this tool when you need to retrieve and analyze web content\\\\n\\\\nUsage notes:\\\\n  - IMPORTANT: If an MCP-provided web fetch tool is available, prefer using that tool instead of this one, as it may have fewer restrictions. All MCP-provided tools start with \\\\\\\"mcp__\\\\\\\".\\\\n  - The URL must be a fully-formed valid URL\\\\n  - HTTP URLs will be automatically upgraded to HTTPS\\\\n  - The prompt should describe what information you want to extract from the page\\\\n  - This tool is read-only and does not modify any files\\\\n  - Results may be summarized if the content is very large\\\\n  - Includes a self-cleaning 15-minute cache for faster responses when repeatedly accessing the same URL\\\\n  - When a URL redirects to a different host, the tool will inform you and provide the redirect URL in a special format. You should then make a new WebFetch request with the redirect URL to fetch the content.\\\\n\\\",\\\"parameters\\\":{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"url\\\":{\\\"type\\\":\\\"string\\\",\\\"format\\\":\\\"uri\\\",\\\"description\\\":\\\"The URL to fetch content from\\\"},\\\"prompt\\\":{\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"The prompt to run on the fetched content\\\"}},\\\"required\\\":[\\\"url\\\",\\\"prompt\\\"],\\\"additionalProperties\\\":false,\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"}}},{\\\"type\\\":\\\"function\\\",\\\"function\\\":{\\\"name\\\":\\\"TodoWrite\\\",\\\"description\\\":\\\"Use this tool to create and manage a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user.\\\\nIt also helps the user understand the progress of the task and overall progress of their requests.\\\\n\\\\n## When to Use This Tool\\\\nUse this tool proactively in these scenarios:\\\\n\\\\n1. Complex multi-step tasks - When a task requires 3 or more distinct steps or actions\\\\n2. Non-trivial and complex tasks - Tasks that require careful planning or multiple operations\\\\n3. User explicitly requests todo list - When the user directly asks you to use the todo list\\\\n4. User provides multiple tasks - When users provide a list of things to be done (numbered or comma-separated)\\\\n5. After receiving new instructions - Immediately capture user requirements as todos\\\\n6. When you start working on a task - Mark it as in_progress BEFORE beginning work. Ideally you should only have one todo as in_progress at a time\\\\n7. After completing a task - Mark it as completed and add any new follow-up tasks discovered during implementation\\\\n\\\\n## When NOT to Use This Tool\\\\n\\\\nSkip using this tool when:\\\\n1. There is only a single, straightforward task\\\\n2. The task is trivial and tracking it provides no organizational benefit\\\\n3. The task can be completed in less than 3 trivial steps\\\\n4. The task is purely conversational or informational\\\\n\\\\nNOTE that you should not use this tool if there is only one trivial task to do. In this case you are better off just doing the task directly.\\\\n\\\\n## Examples of When to Use the Todo List\\\\n\\\\n<example>\\\\nUser: I want to add a dark mode toggle to the application settings. Make sure you run the tests and build when you're done!\\\\nAssistant: I'll help add a dark mode toggle to your application settings. Let me create a todo list to track this implementation.\\\\n*Creates todo list with the following items:*\\\\n1. Create dark mode toggle component in Settings page\\\\n2. Add dark mode state management (context/store)\\\\n3. Implement CSS-in-JS styles for dark theme\\\\n4. Update existing components to support theme switching\\\\n5. Run tests and build process, addressing any failures or errors that occur\\\\n*Begins working on the first task*\\\\n\\\\n<reasoning>\\\\nThe assistant used the todo list because:\\\\n1. Adding dark mode is a multi-step feature requiring UI, state management, and styling changes\\\\n2. The user explicitly requested tests and build be run afterward\\\\n3. The assistant inferred that tests and build need to pass by adding \\\\\\\"Ensure tests and build succeed\\\\\\\" as the final task\\\\n</reasoning>\\\\n</example>\\\\n\\\\n<example>\\\\nUser: Help me rename the function getCwd to getCurrentWorkingDirectory across my project\\\\nAssistant: Let me first search through your codebase to find all occurrences of 'getCwd'.\\\\n*Uses grep or search tools to locate all instances of getCwd in the codebase*\\\\nAssistant: I've found 15 instances of 'getCwd' across 8 different files. Let me create a todo list to track these changes.\\\\n*Creates todo list with specific items for each file that needs updating*\\\\n\\\\n<reasoning>\\\\nThe assistant used the todo list because:\\\\n1. First, the assistant searched to understand the scope of the task\\\\n2. Upon finding multiple occurrences across different files, it determined this was a complex task with multiple steps\\\\n3. The todo list helps ensure every instance is tracked and updated systematically\\\\n4. This approach prevents missing any occurrences and maintains code consistency\\\\n</reasoning>\\\\n</example>\\\\n\\\\n\\\\n<example>\\\\nUser: I need to implement these features for my e-commerce site: user registration, product catalog, shopping cart, and checkout flow.\\\\nAssistant: I'll help implement these features. First, let's add all the features to the todo list.\\\\n*Creates a todo list breaking down each feature into specific tasks based on the project architecture*\\\\nAssistant: Let's start with user registration. This will involve creating database models, API endpoints, and frontend forms that integrate with your existing authentication system.\\\\n\\\\n<reasoning>\\\\nThe assistant used the todo list because:\\\\n1. The user provided multiple complex features to implement in a comma separated list\\\\n2. The todo list helps organize these large features into manageable tasks\\\\n3. This approach allows for tracking progress across the entire implementation\\\\n</reasoning>\\\\n</example>\\\\n\\\\n<example>\\\\nUser: Can you help optimize my React application? It's rendering slowly and has performance issues.</user>\\\\nAssistant: I'll help optimize your React application. First, let me examine your codebase to identify potential performance bottlenecks.\\\\n*Reviews component structure, render patterns, state management, and data fetching*\\\\nAssistant: After analyzing your codebase, I've identified several performance issues. Let me create a todo list to track our optimization efforts.\\\\n*Creates todo list with items like: 1) Implement memoization for expensive calculations in ProductList, 2) Add virtualization for long lists in Dashboard, 3) Optimize image loading in Gallery component, 4) Fix state update loops in ShoppingCart, 5) Review bundle size and implement code splitting*\\\\nLet's start by implementing memoization for the expensive calculations in your ProductList component.</assistant>\\\\n\\\\n<reasoning>\\\\nThe assistant used the todo list because:\\\\n1. First, the assistant examined the codebase to identify specific performance issues\\\\n2. Based on this analysis, it identified multiple optimization opportunities\\\\n3. Performance optimization is a non-trivial task requiring multiple steps\\\\n4. The todo list helps methodically track improvements across different components\\\\n5. This systematic approach ensures all performance bottlenecks are addressed\\\\n</reasoning>\\\\n</example>\\\\n\\\\n## Examples of When NOT to Use the Todo List\\\\n\\\\n<example>\\\\nUser: How do I print 'Hello World' in Python?\\\\nAssistant: In Python, you can print \\\\\\\"Hello World\\\\\\\" with this simple code:\\\\n\\\\npython\\\\nprint(\\\\\\\"Hello World\\\\\\\")\\\\n\\\\nThis will output the text \\\\\\\"Hello World\\\\\\\" to the console when executed.</assistant>\\\\n\\\\n<reasoning>\\\\nThe assistant did not use the todo list because this is a single, trivial task that can be completed in one step. There's no need to track multiple tasks or steps for such a straightforward request.\\\\n</reasoning>\\\\n</example>\\\\n\\\\n<example>\\\\nUser: What does the git status command do?\\\\nAssistant: The git status command shows the current state of your working directory and staging area. It displays which changes have been staged, which haven't, and which files aren't being tracked by Git. This is a fundamental command for understanding the current state of your repository before making commits.\\\\n\\\\n<reasoning>\\\\nThe assistant did not use the todo list because this is an informational request with no actual coding task to complete. The user is simply asking for an explanation, not for the assistant to perform multiple steps or tasks.\\\\n</reasoning>\\\\n</example>\\\\n\\\\n<example>\\\\nUser: Can you add a comment to the calculateTotal function to explain what it does?\\\\nAssistant: Sure, let me add a comment to the calculateTotal function to explain what it does.\\\\n* Uses the Edit tool to add a comment to the calculateTotal function *\\\\n\\\\n<reasoning>\\\\nThe assistant did not use the todo list because this is a single, straightforward task confined to one location in the code. Adding a comment doesn't require tracking multiple steps or systematic organization.\\\\n</reasoning>\\\\n</example>\\\\n\\\\n<example>\\\\nUser: Run npm install for me and tell me what happens.\\\\nAssistant: I'll run the npm install command for you.\\\\n\\\\n*Executes: npm install*\\\\n\\\\nThe command completed successfully. Here's the output:\\\\n[Output of npm install command]\\\\n\\\\nAll dependencies have been installed according to your package.json file.\\\\n\\\\n<reasoning>\\\\nThe assistant did not use the todo list because this is a single command execution with immediate results. There are no multiple steps to track or organize, making the todo list unnecessary for this straightforward task.\\\\n</reasoning>\\\\n</example>\\\\n\\\\n## Task States and Management\\\\n\\\\n1. **Task States**: Use these states to track progress:\\\\n   - pending: Task not yet started\\\\n   - in_progress: Currently working on (limit to ONE task at a time)\\\\n   - completed: Task finished successfully\\\\n\\\\n2. **Task Management**:\\\\n   - Update task status in real-time as you work\\\\n   - Mark tasks complete IMMEDIATELY after finishing (don't batch completions)\\\\n   - Only have ONE task in_progress at any time\\\\n   - Complete current tasks before starting new ones\\\\n   - Remove tasks that are no longer relevant from the list entirely\\\\n\\\\n3. **Task Completion Requirements**:\\\\n   - ONLY mark a task as completed when you have FULLY accomplished it\\\\n   - If you encounter errors, blockers, or cannot finish, keep the task as in_progress\\\\n   - When blocked, create a new task describing what needs to be resolved\\\\n   - Never mark a task as completed if:\\\\n     - Tests are failing\\\\n     - Implementation is partial\\\\n     - You encountered unresolved errors\\\\n     - You couldn't find necessary files or dependencies\\\\n\\\\n4. **Task Breakdown**:\\\\n   - Create specific, actionable items\\\\n   - Break complex tasks into smaller, manageable steps\\\\n   - Use clear, descriptive task names\\\\n\\\\nWhen in doubt, use this tool. Being proactive with task management demonstrates attentiveness and ensures you complete all requirements successfully.\\\\n\\\",\\\"parameters\\\":{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"todos\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"minLength\\\":1},\\\"status\\\":{\\\"type\\\":\\\"string\\\",\\\"enum\\\":[\\\"pending\\\",\\\"in_progress\\\",\\\"completed\\\"]},\\\"priority\\\":{\\\"type\\\":\\\"string\\\",\\\"enum\\\":[\\\"high\\\",\\\"medium\\\",\\\"low\\\"]},\\\"id\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"content\\\",\\\"status\\\",\\\"priority\\\",\\\"id\\\"],\\\"additionalProperties\\\":false},\\\"description\\\":\\\"The updated todo list\\\"}},\\\"required\\\":[\\\"todos\\\"],\\\"additionalProperties\\\":false,\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"}}},{\\\"type\\\":\\\"function\\\",\\\"function\\\":{\\\"name\\\":\\\"WebSearch\\\",\\\"description\\\":\\\"\\\\n- Allows Claude to search the web and use the results to inform responses\\\\n- Provides up-to-date information for current events and recent data\\\\n- Returns search result information formatted as search result blocks\\\\n- Use this tool for accessing information beyond Claude's knowledge cutoff\\\\n- Searches are performed automatically within a single API call\\\\n\\\\nUsage notes:\\\\n  - Domain filtering is supported to include or block specific websites\\\\n  - Web search is only available in the US\\\\n  - Account for \\\\\\\"Today's date\\\\\\\" in <env>. For example, if <env> says \\\\\\\"Today's date: 2025-07-01\\\\\\\", and the user wants the latest docs, do not use 2024 in the search query. Use 2025.\\\\n\\\",\\\"parameters\\\":{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"query\\\":{\\\"type\\\":\\\"string\\\",\\\"minLength\\\":2,\\\"description\\\":\\\"The search query to use\\\"},\\\"allowed_domains\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"description\\\":\\\"Only include search results from these domains\\\"},\\\"blocked_domains\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"description\\\":\\\"Never include search results from these domains\\\"}},\\\"required\\\":[\\\"query\\\"],\\\"additionalProperties\\\":false,\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"}}}]}\",\"signal\":{}}\n[2025-07-23T07:14:47.087Z] Error response from https://openrouter.ai/api/v1/chat/completions: {\"error\":{\"message\":\"No allowed providers are available for the selected model.\",\"code\":404}}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/285/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/284",
      "id": 3254975608,
      "node_id": "I_kwDON-_mZc7CAvx4",
      "number": 284,
      "title": "切换模型 /model xxx:yyyy 太麻烦了",
      "user": {
        "login": "aieejk",
        "id": 171260721,
        "node_id": "U_kgDOCjU7MQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/171260721?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aieejk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-23T05:52:47Z",
      "updated_at": "2026-01-27T07:11:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "能不能把xxxx:yyyy 可个别名代替呀?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/284/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/282",
      "id": 3254870724,
      "node_id": "I_kwDON-_mZc7CAWLE",
      "number": 282,
      "title": "[future] [pr requests]提供 bun的安装支持，可以直接迁移",
      "user": {
        "login": "gtxy27",
        "id": 59104199,
        "node_id": "MDQ6VXNlcjU5MTA0MTk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/59104199?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gtxy27",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-23T05:01:33Z",
      "updated_at": "2025-07-23T05:16:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "bun 对比 使用node 安装的占用非常低，对比nodejs 动辄40的占用极为优秀，且启动速度很快\n\n<img width=\"1283\" height=\"59\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c021d68a-bdf2-4972-ad1c-506f9f3e371f\" />\n\n<img width=\"1326\" height=\"92\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e963e82e-37ce-42f0-8490-1b5c8cf8dcc3\" />\n ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/282/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/280",
      "id": 3254133026,
      "node_id": "I_kwDON-_mZc7B9iEi",
      "number": 280,
      "title": "Can we make this claude-code-router work with  claude-code-mcp it would be great.",
      "user": {
        "login": "saipavankumar-muppalaneni",
        "id": 46277003,
        "node_id": "MDQ6VXNlcjQ2Mjc3MDAz",
        "avatar_url": "https://avatars.githubusercontent.com/u/46277003?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/saipavankumar-muppalaneni",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-22T21:32:44Z",
      "updated_at": "2025-08-08T07:28:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "If anybody know a workaround to make the [claude-code-mcp](https://github.com/steipete/claude-code-mcp) work with claude code router please help",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/280/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/278",
      "id": 3253251283,
      "node_id": "I_kwDON-_mZc7B6KzT",
      "number": 278,
      "title": "Clean config cache",
      "user": {
        "login": "dichiara19",
        "id": 85628912,
        "node_id": "MDQ6VXNlcjg1NjI4OTEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/85628912?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dichiara19",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-22T16:00:09Z",
      "updated_at": "2025-07-22T16:00:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "To bypass the rate limits of some models, considering that at the moment it is not possible to create configuration profiles to switch in the current session, I often manually modify the models entered in the router. However, saving and restarting CCR (even with ccr stop and then ccr code) does not reflect the changes and often continues to use the last configuration used as if it were in the cache. How can this be resolved?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/278/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/275",
      "id": 3250947688,
      "node_id": "I_kwDON-_mZc7BxYZo",
      "number": 275,
      "title": "Please add a fallback model option with customizable retries",
      "user": {
        "login": "sirus20x6",
        "id": 5103327,
        "node_id": "MDQ6VXNlcjUxMDMzMjc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5103327?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sirus20x6",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-22T04:07:13Z",
      "updated_at": "2025-11-19T15:10:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I run qwen3-235-a22-q4 locally and would like to use that model for everything, but have a fallback option that if it fails to achieve it's goal x number of times it can temporarily switch to sonnet 4 to get past the block. this would save me massive amounts of claude usage. I'm thinking \"fallback\" should be in addition to background, default, long context, etc",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/275/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/273",
      "id": 3250372676,
      "node_id": "I_kwDON-_mZc7BvMBE",
      "number": 273,
      "title": "Feature Request, Gratefulness and Opinions",
      "user": {
        "login": "barc593",
        "id": 64240677,
        "node_id": "MDQ6VXNlcjY0MjQwNjc3",
        "avatar_url": "https://avatars.githubusercontent.com/u/64240677?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/barc593",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-21T23:35:25Z",
      "updated_at": "2025-09-15T05:18:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Very nice the latest release! WebSearch finally! Wish i can do that with other tools like WebFetch and the Image to text also. Read also\n\nOpinions: \n\nThanks a lot for your great work, its very fun to play with. I made a transformer for groq llama that helps it use the tools consistently, transforming xml to json because that model loves xml, prompting didnt work no matter how hard i ask and give examples to it, so i let it give me the XML and change it to json for the tool.  It also works for Kimi. But it spends too much tokens because is not hitting cache. And its so stupidly expensive like openrouter is also so expensive... can spend 500K tokens in a couple minutes. Its way too expensive even with cheap models. Official Deepseek with your original transformer is the only viable option with this router. And its still very dumb model, only for web design works fine. For complex debugging its very dumb. Even minimax m1 and kimi is not even close to claude sonnet, and Opus is waaaay better than Sonnet. \n\nI decided im not playing with it anymore. Claude Pro has a better value, dont even talk about max5x or max20x, can only use pro for 1.5 hours every 5 hours but I still save a lot.  With max 5 usig only sonnet i can go the full 5 hours. And opus for 1.5 hours. 20X full 5 hours of OPUS... and thats where its at.  If you are doing serious work, pay it. \n \n--------------------------------------------------------------------------------------\nI have one feature request. \n\nI want to make it cheaper, or even make Claude Pro be a little more usable by being able to work a little bit longer. Or being able to hotswap opus/minimax/kimi/gemini for a quick opinion. and keep writing code with sonnet and doing the easy tool reading tasks with deepseek chat.\n\n---------------------------------------------------------------------------------------\n\nBy delegating easy stuff to deepseek-chat. And also background to llama3.2 instant instead of Haiku (i dont think this would make a big difference in pricing but background its easy job to do).  \n\nDo you think is there a way we can use the router for some tasks and parts and some parts not? Let it use Sonnet or Opus with original Claude subscription? . And also for some tasks like greps and almost every tool use that is just adding to the context let deepseek chat do its thing, \n\nAnd then sonnet or opus read all the context gathered can step in to decide and execute the parts that matter\n\nThe goal I think is to help Claude and make it cheaper, but dont lower its high quality work.\n\nAlso I keep finding myself going to other big context models to ask for different approach when things get difficult. Would be nice to have a hot swap model option in the router. So we can turn on swap mode and ask for each big and expensive model for their opinion. Save it in .md later make the final desition with opus and execute with sonnet. \n\nThis tool will shine when providers become cheaper and better (or local hardware becomes more affordable), but now... its not time I say. Claude is unbeatable, lets try to fine tune it and make it a little cheaper if possible. \n\nIt my opinion",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/273/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/271",
      "id": 3248949024,
      "node_id": "I_kwDON-_mZc7Bpwcg",
      "number": 271,
      "title": "FUNCTION_INVOCATION_TIMEOUT",
      "user": {
        "login": "ArtProGZ",
        "id": 129490922,
        "node_id": "U_kgDOB7ff6g",
        "avatar_url": "https://avatars.githubusercontent.com/u/129490922?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ArtProGZ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-21T14:42:02Z",
      "updated_at": "2025-07-23T04:55:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is it possible to fix this error?\n\n`API Error (504 {\"error\":{\"message\":\"Error from provider: An error occurred with your deployment\\n\\nFUNCTION_INVOCATION_TIMEOUT\\n\\nfra1::46n92-1753107905195-02e151215b22\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (504 {\"error\":{\"message\":\"Error from provider: An error occurred with your deployment\\n\\nFUNCTION_INVOCATION_TIMEOUT\\n\\nfra1::2kwz2-1753107931897-4a4041c5da2d\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 1 seconds… (attempt 2/10)\n  ⎿  API Error (504 {\"error\":{\"message\":\"Error from provider: An error occurred with your deployment\\n\\nFUNCTION_INVOCATION_TIMEOUT\\n\\nfra1::hjnlb-1753107959125-12715b67bac7\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}) · Retrying in 2 seconds… (attempt 3/10)`\n\n`Error response from https://gemini-balance-lite-beta.vercel.app/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse: {\n  \"error\": {\n    \"code\": 400,\n    \"message\": \"The GenerateContentRequest proto is invalid:\\n  * tools[0].tool_type: required one_of 'tool_type' must have one initialized field\",\n    \"status\": \"INVALID_ARGUMENT\"\n  }\n}`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/271/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/270",
      "id": 3248902298,
      "node_id": "I_kwDON-_mZc7BplCa",
      "number": 270,
      "title": "openrouter 401 错误",
      "user": {
        "login": "0000005",
        "id": 9690089,
        "node_id": "MDQ6VXNlcjk2OTAwODk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9690089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/0000005",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-21T14:28:47Z",
      "updated_at": "2025-09-13T04:07:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请问如何解决401问题？是我的配置文件问题吗？\n\n<img width=\"850\" height=\"513\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/df5dc10c-8737-4e1f-95b8-a26a497d39fb\" />\n\n<!-- Failed to upload \"image.png\" -->\n\n```启动日志\n[2025-07-21T14:30:33.144Z] register transformer: Anthropic (endpoint: /v1/messages)\n[2025-07-21T14:30:33.146Z] register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\n[2025-07-21T14:30:33.146Z] register transformer: deepseek (no endpoint)\n[2025-07-21T14:30:33.147Z] register transformer: tooluse (no endpoint)\n[2025-07-21T14:30:33.147Z] register transformer: openrouter (no endpoint)\n[2025-07-21T14:30:33.147Z] register transformer: maxtoken (no endpoint)\n[2025-07-21T14:30:33.148Z] register transformer: groq (no endpoint)\n[2025-07-21T14:30:33.148Z] register transformer: cleancache (no endpoint)\n[2025-07-21T14:30:33.155Z] openrouter provider registered\n[2025-07-21T14:30:33.218Z] 🚀 LLMs API server listening on http://127.0.0.1:3456\n```\n\n```json\n{\n  \"APIKEY\": \"\",\n  \"PROXY_URL\": \"http://127.0.0.1:7890\",\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"我确幸key是正确的，我在cherrystudio上验证了。\",\n      \"models\": [\n        \"moonshotai/kimi-k2\",\n        \"google/gemini-2.5-flash\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"kimi-k2,gemini-2.5-flash\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/270/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/269",
      "id": 3248181311,
      "node_id": "I_kwDON-_mZc7Bm1A_",
      "number": 269,
      "title": "请求自定义header问题",
      "user": {
        "login": "liqingH",
        "id": 18547317,
        "node_id": "MDQ6VXNlcjE4NTQ3MzE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/18547317?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liqingH",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-21T11:02:52Z",
      "updated_at": "2026-01-12T14:15:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置了ANTHROPIC_CUSTOM_HEADERS，但是请求时header一直是空的，请问是需要增加什么配置吗\n\nexport ANTHROPIC_CUSTOM_HEADERS=\"appId: aaa\"\n\n final request: https://l***/v1/chat/completions undefined {\"method\":\"POST\",\"headers\":{},\"body\":\"{",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/269/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/268",
      "id": 3247888654,
      "node_id": "I_kwDON-_mZc7BltkO",
      "number": 268,
      "title": "Two ccr server works in the same machine",
      "user": {
        "login": "ddebby",
        "id": 7961354,
        "node_id": "MDQ6VXNlcjc5NjEzNTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7961354?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ddebby",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-21T09:34:32Z",
      "updated_at": "2025-09-16T10:08:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "尝试在一台物理机上用不同用户开两个Server，分别使用不同的端口配置，会发生如下错误：\n\n`Error: EACCES: permission denied, open `/tmp/claude-code-reference-count.txt``\n\n是不是/tmp/claude-code-reference-count.txt 生成时加个随机hash值更好一点",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/268/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/267",
      "id": 3247693588,
      "node_id": "I_kwDON-_mZc7Bk98U",
      "number": 267,
      "title": "[Feature request] Choose config file at startup",
      "user": {
        "login": "PhunkyBob",
        "id": 13345603,
        "node_id": "MDQ6VXNlcjEzMzQ1NjAz",
        "avatar_url": "https://avatars.githubusercontent.com/u/13345603?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PhunkyBob",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-21T08:28:29Z",
      "updated_at": "2025-07-21T19:43:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, \n\n## Context\nI use several providers / models. \nEvery time I want to change model, I have to edit the config file.\n\n## Feature request\nI can create several configuration files with it's own models in `~/.claude-code-router` (e.g. `gemini.json`).\nWhen I run `ccr code --config <JSON file>` it loads this file as config instead of the default `config.json` file. (e.g. `ccr code --config gemini.json`)\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/267/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/265",
      "id": 3247375124,
      "node_id": "I_kwDON-_mZc7BjwMU",
      "number": 265,
      "title": "Timeout waiting after 1000ms 报错咨询",
      "user": {
        "login": "Lance00627",
        "id": 96969182,
        "node_id": "U_kgDOBceh3g",
        "avatar_url": "https://avatars.githubusercontent.com/u/96969182?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Lance00627",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-21T06:20:41Z",
      "updated_at": "2025-07-24T08:09:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "您好，我在vscode中使用ccr code编辑文件时遇到以下问题：\n每次涉及文件的编辑时, 都会输出类似如下的内容:\n\n⏺ 现在让我总结分析结果并创建修改计划书：\n\n⏺ Write(Backend-API-Modification-Plan.md)\n\n╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                                                                                                                │\n│  Opened changes in Visual Studio Code ⧉                                                                                        │\n│  Save file to continue…                                                                                                        │\n│                                                                                                                                │\n│ Do you want to make this edit to Backend-API-Modification-Plan.md?                                                             │\n│ ❯ 1. Yes                                                                                                                       │\n│   2. Yes, and don't ask again this session (shift+tab)                                                                         │\n│   3. No, and tell Claude what to do differently (esc)                                                                          │\n│                                                                                                                                │\n╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n\n\n\nTotal cost:            $0.0002 (costs may be inaccurate due to usage of unknown models)\nTotal duration (API):  3m 32.5s\nTotal duration (wall): 3m 47.9s\nTotal code changes:    0 lines added, 0 lines removed\nUsage by model:\n    claude-3-5-haiku:  2 input, 2 output, 0 cache read, 0 cache write\nkimi-k2-0711-preview:  8 input, 8 output, 0 cache read, 0 cache write\nnode:internal/process/promises:394\n    triggerUncaughtException(err, true /* fromPromise */);\n    ^\n\nError: Timeout waiting after 1000ms\n    at TZB (file:///usr/local/lib/node_modules/@anthropic-ai/claude-code/cli.js:1317:11459)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async HA8 (file:///usr/local/lib/node_modules/@anthropic-ai/claude-code/cli.js:2687:11207)\n    at async J (file:///usr/local/lib/node_modules/@anthropic-ai/claude-code/cli.js:2687:9917)\n\nNode.js v24.1.0\n\n没有给我选择yes的机会, 每次都是直接退出. 我不知道是哪里的问题, 我在用kimi, ai对这个问题的分析是因为kimi 本身不是 1‒2 秒的流式响应，偶尔延迟 >1000 ms。但似乎没有其他人遇到类似的问题, 我不知道能怎么处理",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/265/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/263",
      "id": 3246646975,
      "node_id": "I_kwDON-_mZc7Bg-a_",
      "number": 263,
      "title": "Explain to me what I am doing wrong",
      "user": {
        "login": "sruckh",
        "id": 29985975,
        "node_id": "MDQ6VXNlcjI5OTg1OTc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/29985975?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sruckh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-20T20:09:45Z",
      "updated_at": "2025-07-23T05:08:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I see YouTube videos talking about how great CCR integration is with Kimi K2.  I am connecting to Kimi K2 through openrouter (not the FREE one). 98% of the time, it starts to do something, and then just quits.  Essentially completely unusable.  I have a similar experience using other models like Grok, Gemini Pro 2.5, Claude Opus, etc. . . Although with the other models, it is probably about a 50% rate of where it starts, but then just quits and does not complete the task.\n\nI assume I must have something set up wrong, but I am not sure, since it is obviously talking to OpenRouter (my BILL certainly shows it), but it is all just wasted because I am mostly not getting any valuable help, as I am constantly repeating to get any sort of response.  Based on responses here, I have changed my configuration to the following (which did not seem to change anything).\n\n```\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"<my key>\",\n      \"models\": [\n        \"@preset/kimi\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\",\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 0\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\",\n    \"background\": \"openrouter,deepseek/deepseek-r1-0528:free\",\n    \"think\": \"openrouter,thudm/glm-4.1v-9b-thinking\",\n    \"longContext\": \"openrouter,moonshotai/kimi-k2:free\"\n  }\n}\n```\n\nIf anyone knows how I can have a better experience, it would be appreciated.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/263/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/261",
      "id": 3246385554,
      "node_id": "I_kwDON-_mZc7Bf-mS",
      "number": 261,
      "title": "tool call related messages get lost during translation from the original request to the converted one",
      "user": {
        "login": "limingchina",
        "id": 23010280,
        "node_id": "MDQ6VXNlcjIzMDEwMjgw",
        "avatar_url": "https://avatars.githubusercontent.com/u/23010280?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/limingchina",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-20T13:58:32Z",
      "updated_at": "2025-07-20T14:06:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Version used:\nclaude-code-router version: 1.0.22. installed from npm command directly.\n\nconfig file:\n```\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen3:4b\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,qwen3:4b\"\n  }\n}\n```\nOriginal request:\n```\nAnthropic Request: {\n  \"model\": \"qwen3:4b\",\n  \"max_tokens\": 4096,\n  \"temperature\": 0.1,\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"I live in Berlin, Germany\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Find a route between HERE Berlin office and the center of Potsdam.\"\n    },\n    {\n      \"role\": \"assistant\",\n      \"content\": \"\",\n      \"tool_calls\": [\n        {\n          \"id\": \"call_os1xk39j\",\n          \"type\": \"function\",\n          \"function\": {\n            \"name\": \"maps_geocode_poi\",\n            \"arguments\": \"{\\\"poiName\\\":\\\"HERE Berlin office\\\"}\"\n          }\n        },\n        {\n          \"id\": \"call_4zlte74x\",\n          \"type\": \"function\",\n          \"function\": {\n            \"name\": \"maps_geocode_address\",\n            \"arguments\": \"{\\\"address\\\":\\\"center of Potsdam\\\"}\"\n          }\n        }\n      ]\n    },\n    {\n      \"role\": \"tool\",\n      \"tool_call_id\": \"call_os1xk39j\",\n      \"name\": \"maps_geocode_poi\",\n      \"content\": \"[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"[\\\\n  {\\\\n    \\\\\\\"name\\\\\\\": \\\\\\\"HERE Berlin\\\\\\\",\\\\n    \\\\\\\"address\\\\\\\": \\\\\\\"HERE Berlin, Invalidenstraße 116, 10115 Berlin, Deutschland\\\\\\\",\\\\n    \\\\\\\"position\\\\\\\": {\\\\n      \\\\\\\"lat\\\\\\\": 52.53097,\\\\n      \\\\\\\"lng\\\\\\\": 13.38497\\\\n    },\\\\n    \\\\\\\"category\\\\\\\": \\\\\\\"Gewerbebetrieb\\\\\\\"\\\\n  }\\\\n]\\\"}]\"\n    },\n    {\n      \"role\": \"tool\",\n      \"tool_call_id\": \"call_4zlte74x\",\n      \"name\": \"maps_geocode_address\",\n      \"content\": \"[{\\\"type\\\":\\\"text\\\",\\\"text\\\":\\\"{\\\\n  \\\\\\\"location\\\\\\\": {\\\\n    \\\\\\\"lat\\\\\\\": 44.13165,\\\\n    \\\\\\\"lng\\\\\\\": -92.25351\\\\n  },\\\\n  \\\\\\\"address\\\\\\\": \\\\\\\"Center St, Elgin, MN 55932, United States\\\\\\\",\\\\n  \\\\\\\"id\\\\\\\": \\\\\\\"here:af:streetsection:JeJYGNNfqntVGIw.b5BurC\\\\\\\"\\\\n}\\\"}]\"\n    },\n   ...\n```\nThe converted request:\n```\nuse transformers: undefined\nfinal request: http://localhost:11434/v1/chat/completions undefined {\n  method: 'POST',\n  headers: Headers { 'Content-Type': 'application/json', Authorization: 'Bearer ollama' },\n  body: '{\"messages\":[{\"role\":\"user\",\"content\":\"Find a route between HERE Berlin office and the center of Potsdam.\"},{\"role\":\"assistant\",\"content\":\"\"}],\"model\":\"qwen3:4b\",\"max_tokens\":4096,\"temperature\":0.1,\n```\nOne can see the \"tool_calls\" and {\"role\":\"tool\"} messages got lost after the request conversion.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/261/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/257",
      "id": 3245933366,
      "node_id": "I_kwDON-_mZc7BeQM2",
      "number": 257,
      "title": "调用其它模型失败",
      "user": {
        "login": "mayiaidaxiang",
        "id": 85481578,
        "node_id": "MDQ6VXNlcjg1NDgxNTc4",
        "avatar_url": "https://avatars.githubusercontent.com/u/85481578?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mayiaidaxiang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-20T03:35:36Z",
      "updated_at": "2026-01-02T06:22:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Invalid API key · Please run /login\n总是出现，调用模型失败",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/257/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/256",
      "id": 3245882965,
      "node_id": "I_kwDON-_mZc7BeD5V",
      "number": 256,
      "title": "自己通过vllm部署的兼容openai协议的大模型如何配置？",
      "user": {
        "login": "candowu",
        "id": 4629043,
        "node_id": "MDQ6VXNlcjQ2MjkwNDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4629043?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/candowu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-20T02:59:05Z",
      "updated_at": "2025-07-20T02:59:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "自己通过vllm部署了deepseek-v3等开源模型，应该如何配置？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/256/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/254",
      "id": 3245575152,
      "node_id": "I_kwDON-_mZc7Bc4vw",
      "number": 254,
      "title": "Can I use Kimi K2 usink api key from platform.moonshot.ai/console/api-keys ?",
      "user": {
        "login": "bodoss",
        "id": 4056344,
        "node_id": "MDQ6VXNlcjQwNTYzNDQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4056344?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bodoss",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-19T19:15:02Z",
      "updated_at": "2025-07-21T01:44:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I don't want to use openrouter. Is there a transformer for OpenAI compatible models? ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/254/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/252",
      "id": 3245392537,
      "node_id": "I_kwDON-_mZc7BcMKZ",
      "number": 252,
      "title": "`longContext` not working?",
      "user": {
        "login": "sati-bodhi",
        "id": 7592695,
        "node_id": "MDQ6VXNlcjc1OTI2OTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7592695?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sati-bodhi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-07-19T15:39:42Z",
      "updated_at": "2025-08-27T06:08:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "为什么在`longContext`设置为`gemini`的状况下还会出现context超出的情况？似乎路由没有实现的样子。\n\n｀｀｀\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"This endpoint's \n    maximum context length is 65536 tokens. However, you requested about 92208 tokens (60833 of text \n    input, 10042 of tool input, 21333 in the output). Please reduce the length of either one, or use the\n     \\\\\\\"middle-out\\\\\\\" transform to compress your prompt automatically.\\\",\\\"code\\\":400,\\\"metadata\\\":{\\\"\n    provider_name\\\":null}}}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n｀｀｀\n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-or-\"\n      \"models\": [\n        \"moonshotai/kimi-k2\",\n        \"moonshotai/kimi-k2:free\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    },\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:latest\"]\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2:free\",\n    \"background\": \"ollama,qwen2.5-coder:latest\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"gemini,gemini-2.5-pro\"\n  },\n  \"APIKEY\": \"\",\n  \"HOST\": \"0.0.0.0\"\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/252/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/251",
      "id": 3245390727,
      "node_id": "I_kwDON-_mZc7BcLuH",
      "number": 251,
      "title": "⎿ API Error: 404 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"No endpoints found that     support cache control\\\",\\\"code\\\":404}}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "user": {
        "login": "6200279",
        "id": 45390835,
        "node_id": "MDQ6VXNlcjQ1MzkwODM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/45390835?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/6200279",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-07-19T15:36:46Z",
      "updated_at": "2025-07-28T11:56:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"***\",\n      \"models\": [\n        \"deepseek/deepseek-r1-0528-qwen3-8b\"\n      ],\n      \"transformer\": { \"use\": [\"openrouter\"] }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,deepseek/deepseek-r1-0528-qwen3-8b\"\n  }\n}\n\nSADLY cant get it work. help would be much appreciated ^^",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/251/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/250",
      "id": 3245386117,
      "node_id": "I_kwDON-_mZc7BcKmF",
      "number": 250,
      "title": "使用DeepSeek报错：API Error: 404 ",
      "user": {
        "login": "haoran-wen11",
        "id": 22092262,
        "node_id": "MDQ6VXNlcjIyMDkyMjYy",
        "avatar_url": "https://avatars.githubusercontent.com/u/22092262?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/haoran-wen11",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-19T15:30:58Z",
      "updated_at": "2025-07-22T04:41:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "错误信息：\n```bash\nAPI Error: 404 {\"error\":{\"message\":\"Error from provider: {\\n  \\\"event_id\\\": \\\"30-clou-200-20250719232440-dbfc7a22\\\",\\n  \\\"error_msg\\\": \\\"Not\n     Found. Please check the configuration.\\\"\\n}\\n\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nconfig.json 配置：\n```json\n{\n  \"APIKEY\": \"\",\n  \"PROXY_URL\": \"\",\n  \"LOG\": false,\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com\",\n      \"api_key\": \"xxx\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"deepseek, deepseek-chat\",\n    \"think\": \"deepseek, deepseek-reasoner\"\n  }\n}\n```\n在别的app测试了API KEY 是有效的",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/250/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/246",
      "id": 3244801284,
      "node_id": "I_kwDON-_mZc7BZ70E",
      "number": 246,
      "title": "Ollama Invalid headers",
      "user": {
        "login": "ernestp",
        "id": 7553589,
        "node_id": "MDQ6VXNlcjc1NTM1ODk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7553589?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ernestp",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-19T02:51:18Z",
      "updated_at": "2025-07-19T02:56:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claude-code-router version: 1.0.21\n\nrun as `ccr start`\n\nin console I see following:\n\n```bash\nuse transformers: undefined\nfinal request: http://myserver.local:11434/v1/chat/completions undefined {\n  method: 'POST',\n  headers: HeadersList {\n    cookies: null,\n    [Symbol(headers map)]: Map(2) { 'content-type' => [Object], 'authorization' => [Object] },\n    [Symbol(headers map sorted)]: null\n  },\n  body: '{\"messages\":[{\"role\":\"system\"\n```\n\nThose header parameters ('content-type' => [Object], 'authorization' => [Object]) prevent request to run properly\n\nI tried the same request using Postman and if those headers are set correctly it runs fine, but if I set values to `[Object]` then Ollama returns error.\n\nMy config:\n\n```json\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://myserver.local:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\n        \"devstral-tuned:latest\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,devstral-tuned:latest\"\n  }\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/246/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/245",
      "id": 3243623728,
      "node_id": "I_kwDON-_mZc7BVcUw",
      "number": 245,
      "title": "About kimi-k2",
      "user": {
        "login": "musistudio",
        "id": 21162426,
        "node_id": "MDQ6VXNlcjIxMTYyNDI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/musistudio",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 38,
      "created_at": "2025-07-18T15:38:47Z",
      "updated_at": "2026-02-01T03:57:02Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I know many people are currently accessing **Kimi** through **CCR**, but unfortunately, most unofficial APIs are using quantized versions of the model. Only a small number of providers offer models with capabilities similar to the official Kimi API. For example, some providers do **not** support tools, and some may fail to respond under specific contexts, etc.\n\nAt the moment, you can access Kimi via **Groq**, **OpenRouter (limited support)**, or the **official Kimi API**. You can refer to the following example configuration:\n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"kimi\",\n      \"api_base_url\": \"https://api.moonshot.cn/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"kimi-k2-0711-preview\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"cleancache\"\n        ]\n      }\n    },\n    {\n      \"name\": \"groq\",\n      \"api_base_url\": \"https://api.groq.com/openai/v1/chat/completions\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"moonshotai/kimi-k2-instruct\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384\n            }\n          ],\n          \"groq\"\n        ]\n      }\n    },\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-or\",\n      \"models\": [\n        \"@preset/kimi\"\n      ],\n      \"transformer\": {\n        \"use\": [\n          \"openrouter\",\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 0\n            }\n          ]\n        ]\n      }\n    }\n  ]\n}\n```\n\nNotes:\n- **Groq** requires a dedicated transformer.\n\n- **OpenRouter** requires you to create a **preset** with the provider locked to `moonshotai`, `together`, and `groq`. Also, set `max_tokens` to `0` to let OpenRouter handle it automatically.\n\n- The **official Kimi API** works without any extra configuration.\n\nIf you have other questions, feel free to leave a comment below.\n\n**UPDATE**\nAccording to the official explanation from Kimi, the open-source version may currently have issues with tool calling. They are investigating the issue, and whether it gets resolved depends on whether the specific provider fixes it.\n\nYou can find more information here: https://github.com/MoonshotAI/Kimi-K2/issues/27\n\nThis is a discussion from Groq:\nhttps://community.groq.com/discussion-forum-7/groq-kimi-k2-tool-call-issues-213",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/245/reactions",
        "total_count": 44,
        "+1": 24,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 20,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/243",
      "id": 3242592058,
      "node_id": "I_kwDON-_mZc7BRgc6",
      "number": 243,
      "title": "似乎存在模型名强制转换小写的问题？",
      "user": {
        "login": "imAndyrrr",
        "id": 167629228,
        "node_id": "U_kgDOCf3RrA",
        "avatar_url": "https://avatars.githubusercontent.com/u/167629228?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/imAndyrrr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-18T09:34:15Z",
      "updated_at": "2025-07-18T15:23:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "1.如果在config.json中配置服务商为Gemini，那么/model Gemini,gemini-2.5-pro会导致api调用错误，将config.json中服务商改为小写gemini后解决。\n2.ModelScope提供的deepseek api模型名是deepseek-ai/DeepSeek-R1，似乎由于无法识别大写，导致api无法成功调用。（注意到括号里面写的是modelscope,deepseek-ai/deepseek-r1）\n\n<img width=\"2252\" height=\"315\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/9af7dcb5-4d23-455c-b317-bb84c8194fe1\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/243/reactions",
        "total_count": 2,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 2
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/239",
      "id": 3242340079,
      "node_id": "I_kwDON-_mZc7BQi7v",
      "number": 239,
      "title": "自己部署的开源模型上如何使用",
      "user": {
        "login": "crayzdreamer",
        "id": 12570513,
        "node_id": "MDQ6VXNlcjEyNTcwNTEz",
        "avatar_url": "https://avatars.githubusercontent.com/u/12570513?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/crayzdreamer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-18T08:13:51Z",
      "updated_at": "2025-08-05T12:29:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "deepseek 和  kimi-k2 是在局域网中自己创建的服务，都符合openAI 的API， 通过openAI 的API 是可以访问的。\n想用自己本地部署的模型，但目前一直在报\n\n`  API Error: 404 {\"detail\":\"Not Found\"} `\n的错误。 \n\n版本信息如下： \n\n```\nclaude -v\n1.0.55 (Claude Code)\nccr -v \nclaude-code-router version: 1.0.20、\n```\n\n我使用的配置如：\n\n\n```\n{\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"http://10.**.**.**:6060/v1/\",\n      \"api_key\": \"sk-8*\",\n      \"models\": [\"deepseek-v3\", \"deepseek-r1\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n    {\n      \"name\": \"kimi\",\n      \"api_base_url\": \"http://10.**.**.**:6060/v1/\",\n      \"api_key\": \"sk-*\",\n      \"models\": [\"kimi-k2\"]\n    },\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    },\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:latest\"]\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    },\n    {\n      \"name\": \"volcengine\",\n      \"api_base_url\": \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-v3-250324\", \"deepseek-r1-250528\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"]\n      }\n    },\n    {\n      \"name\": \"siliconflow\",\n      \"api_base_url\": \"https://api.siliconflow.cn/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"moonshotai/Kimi-K2-Instruct\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-r1\",\n    \"background\": \"ollama,qwen2.5-coder:latest\",\n    \"think\": \"deepseek,deepseek-r1\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\"\n  },\n  \"APIKEY\": \"your-secret-key\",\n  \"HOST\": \"0.0.0.0\"\n}\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/239/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/237",
      "id": 3242041867,
      "node_id": "I_kwDON-_mZc7BPaIL",
      "number": 237,
      "title": "使用 `ccr start` 启动的服务器会在运行一段时间后退出",
      "user": {
        "login": "jackalcooper",
        "id": 5133557,
        "node_id": "MDQ6VXNlcjUxMzM1NTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5133557?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jackalcooper",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-18T06:16:40Z",
      "updated_at": "2025-08-05T12:11:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "想要使用 `ccr start` 命令启动服务，来看log，总是在运行一段时间后退出",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/237/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/236",
      "id": 3241941656,
      "node_id": "I_kwDON-_mZc7BPBqY",
      "number": 236,
      "title": "API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)",
      "user": {
        "login": "gjuoun",
        "id": 8935612,
        "node_id": "MDQ6VXNlcjg5MzU2MTI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8935612?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gjuoun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-07-18T05:40:00Z",
      "updated_at": "2025-09-30T06:41:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请问是我的使用方法错了吗? \n请看配置\n\n<img width=\"874\" height=\"199\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/af9784a8-0226-477f-9044-2be177166e89\" />\n\n```json\n{\n  \"PROXY_URL\": \"http://127.0.0.1:7898\",\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"***\",\n      \"models\": [\n        \"moonshotai/kimi-k2\",\n        \"google/gemini-2.5-flash\",\n        \"google/gemini-2.5-pro\",\n        \"qwen/qwq-32b\"\n      ],\n      \"transformer\": { \"use\": [\"openrouter\"] }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\",\n    \"background\": \"openrouter,google/gemini-2.5-flash\",\n    \"think\": \"openrouter,moonshotai/kimi-k2\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/236/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/235",
      "id": 3241912080,
      "node_id": "I_kwDON-_mZc7BO6cQ",
      "number": 235,
      "title": "Issue: Gemini via CCR fails during web-search operations",
      "user": {
        "login": "glitchdoescode",
        "id": 122389227,
        "node_id": "U_kgDOB0uC6w",
        "avatar_url": "https://avatars.githubusercontent.com/u/122389227?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/glitchdoescode",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-18T05:26:55Z",
      "updated_at": "2025-07-21T14:40:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1795\" height=\"312\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ade597be-2340-43c2-ac99-d14a4af7393d\" />\n\n\n**Environment**  \n- **OS**: Arch Linux  \n- **claude-code-router**: 1.0.19  \n- **claude-code**: 1.0.53  \n\n**Config **  \n```jsonc\n{\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"AI…Ps\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": { \"use\": [\"gemini\"] }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n    \"background\": \"gemini,gemini-2.5-flash\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\"\n  }\n}\n```\n\n**Problem**  \nWhen Claude Code performs a **web search**, all Gemini requests routed through CCR immediately fail with a generic “API Error” banner; every *non-search* interaction (chat, plan, edit, etc.) works perfectly.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/235/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/232",
      "id": 3241750921,
      "node_id": "I_kwDON-_mZc7BOTGJ",
      "number": 232,
      "title": "写入到本地文件报错",
      "user": {
        "login": "arvinlvc",
        "id": 35155651,
        "node_id": "MDQ6VXNlcjM1MTU1NjUx",
        "avatar_url": "https://avatars.githubusercontent.com/u/35155651?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/arvinlvc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-18T03:49:19Z",
      "updated_at": "2025-07-21T03:25:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " Here's the final tool call:\n  ⎿  Invalid tool parameters",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/232/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/229",
      "id": 3241497161,
      "node_id": "I_kwDON-_mZc7BNVJJ",
      "number": 229,
      "title": "活干半拉的，停工了，没有任何报错",
      "user": {
        "login": "zhajingwen",
        "id": 33952447,
        "node_id": "MDQ6VXNlcjMzOTUyNDQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/33952447?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhajingwen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 22,
      "created_at": "2025-07-18T01:19:36Z",
      "updated_at": "2025-08-14T15:34:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"2880\" height=\"1800\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/10b1b13d-d282-4b8e-8cdc-7bac5e36ae2e\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/229/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/220",
      "id": 3238708196,
      "node_id": "I_kwDON-_mZc7BCsPk",
      "number": 220,
      "title": "Invalid tool parameters",
      "user": {
        "login": "yxx97",
        "id": 56789635,
        "node_id": "MDQ6VXNlcjU2Nzg5NjM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/56789635?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yxx97",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-17T08:47:11Z",
      "updated_at": "2025-07-24T10:17:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " Error: InputValidationError: Read failed due to the following issue:\n     The required parameter `file_path` is missing\n  ⎿  Error: Agent 1: Last message was not an assistant message\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/220/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/219",
      "id": 3238658533,
      "node_id": "I_kwDON-_mZc7BCgHl",
      "number": 219,
      "title": "是否将 OpenAI 格式 API 转换成 anthropic API 即可？",
      "user": {
        "login": "pfjia",
        "id": 26075846,
        "node_id": "MDQ6VXNlcjI2MDc1ODQ2",
        "avatar_url": "https://avatars.githubusercontent.com/u/26075846?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pfjia",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-17T08:32:19Z",
      "updated_at": "2025-07-17T08:37:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " 起因是看到了这个issue。 https://github.com/musistudio/claude-code-router/issues/145 其中介绍了使用kimi的模型，只要使用kimi的官方模型，充值后在原生的Claude-code中配置一下API-KEY和BaseURL，即可使用原生Claude-code。 \n\n这么说，是不是只要有一个项目能够将任何支持 OpenAPI 协议的模型适配成支持 anthropic 协议即可？ \n\nhttps://docs.anthropic.com/en/api/messages 这个文档中介绍了anthropic的协议。 所以也咨询一下，有没有现成的这种协议转换的开源代码。 目前在GitHub上搜索了一下，基本上都是将协议改成 OpenAI 协议，比如说 OneAPI ，cluadecodetoChatGPT 等。 ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/219/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/218",
      "id": 3238358517,
      "node_id": "I_kwDON-_mZc7BBW31",
      "number": 218,
      "title": "cursor把高级模型都ban中国ip了，这个时候又突出了musi老师的伟大！",
      "user": {
        "login": "ZenusZhang",
        "id": 23157977,
        "node_id": "MDQ6VXNlcjIzMTU3OTc3",
        "avatar_url": "https://avatars.githubusercontent.com/u/23157977?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZenusZhang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-17T06:48:37Z",
      "updated_at": "2025-07-17T14:12:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/218/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/216",
      "id": 3237959918,
      "node_id": "I_kwDON-_mZc7A_1ju",
      "number": 216,
      "title": "windows下运行ccr code报错",
      "user": {
        "login": "guccang",
        "id": 13173950,
        "node_id": "MDQ6VXNlcjEzMTczOTUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/13173950?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/guccang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-17T03:28:37Z",
      "updated_at": "2025-08-20T09:20:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "PS C:\\Users\\XXX\\.claude-code-router> ccr code\nC:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:2961\n    var channels = diagnostics.tracingChannel(\"fastify.request.handler\");\n                               ^\n\nTypeError: diagnostics.tracingChannel is not a function\n    at node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/lib/wrapThenable.js (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:2961:32)\n    at __require (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10:50)\n    at node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/lib/handleRequest.js (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:3020:24)\n    at __require (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10:50)\n    at node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/lib/reply.js (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:8557:21)\n    at __require (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10:50)\n    at node_modules/.pnpm/fastify@5.4.0/node_modules/fastify/fastify.js (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:32288:17)\n    at __require (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:10:50)\n    at Object.<anonymous> (C:\\Users\\XXX\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:54962:30)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/216/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/215",
      "id": 3237931050,
      "node_id": "I_kwDON-_mZc7A_ugq",
      "number": 215,
      "title": "Gemini use API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds…",
      "user": {
        "login": "baize7815",
        "id": 93563719,
        "node_id": "U_kgDOBZOrRw",
        "avatar_url": "https://avatars.githubusercontent.com/u/93563719?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/baize7815",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-17T03:05:41Z",
      "updated_at": "2025-07-17T08:29:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This is my error log.\n\n[claude-code-router.log](https://github.com/user-attachments/files/21278013/claude-code-router.log)\n\n![Image](https://github.com/user-attachments/assets/d97244a8-80f9-441d-b340-a74967b28bd7)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/215/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/214",
      "id": 3237896509,
      "node_id": "I_kwDON-_mZc7A_mE9",
      "number": 214,
      "title": "ANTHROPIC_AUTH_TOKEN: \"test\" causes Auth conflict.",
      "user": {
        "login": "FrankFang",
        "id": 839559,
        "node_id": "MDQ6VXNlcjgzOTU1OQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/839559?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/FrankFang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-17T02:44:50Z",
      "updated_at": "2026-02-01T17:44:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n ⚠Auth conflict: Both a token (ANTHROPIC_AUTH_TOKEN) and an API key (ANTHROPIC_API_KEY) are set. \n  This may lead to unexpected behavior.\n    • Trying to use ANTHROPIC_AUTH_TOKEN? Unset the ANTHROPIC_API_KEY environment variable, or \n    claude /logout then say \"No\" to the API key approval before login.\n    • Trying to use ANTHROPIC_API_KEY? Unset the ANTHROPIC_AUTH_TOKEN environment variable.\n```\n\nDeleting \"test\" eliminates the warning.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/214/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/213",
      "id": 3237798635,
      "node_id": "I_kwDON-_mZc7A_OLr",
      "number": 213,
      "title": "Transformer maxtoken field ineffective for Volcengine API with DeepSeek-v3 model",
      "user": {
        "login": "duanzhaol",
        "id": 50972467,
        "node_id": "MDQ6VXNlcjUwOTcyNDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/50972467?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/duanzhaol",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-17T01:37:29Z",
      "updated_at": "2025-08-14T03:36:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem Description\nThe `maxtoken` transformer field in the configuration does not work properly when using the Volcengine API with the DeepSeek-v3 model, resulting in API call failures. However, the same configuration works correctly with the DeepSeek-R1 model.\n\n## Configuration\n```json\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"volcengine\",\n      \"api_base_url\": \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\",\n      \"api_key\": \"xxxxxxxx\",\n      \"models\": [\n        \"ep-20250331144821-fjl82\"\n      ],\n      \"transformers\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 65536\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"background\": \"volcengine,ep-20250331144821-fjl82\",\n    \"longContext\": \"volcengine,ep-20250331144821-fjl82\",\n    \"default\": \"volcengine,ep-20250331144821-fjl82\",\n    \"think\": \"volcengine,ep-20250331144821-fjl82\"\n  }\n}\n```\n\n## Error Message\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"code\\\":\\\"InvalidParameter\\\",\\\"message\\\":\\\"The parameter `max_tokens` specified in the request are not valid: integer above maximum value, expected a value \\\\u003c= 16384, but got 21333 instead. Request id: 0217526802057162e69aac892d0563f4efbf7c1eafe439159db04\\\",\\\"param\\\":\\\"max_tokens\\\",\\\"type\\\":\\\"BadRequest\\\"}}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\n## Expected Behavior\nThe maxtoken transformer should properly limit the max_tokens parameter according to the provider's constraints, or the configuration should work as intended.\n\n## Actual Behavior\nThe API call fails with a 400 error indicating that the max_tokens parameter (21333) exceeds the maximum allowed value (16384) for the DeepSeek-v3 model on Volcengine.\n\n## Possible Cause\nThe maxtoken transformer may not be properly handling model-specific token limits for Volcengine's DeepSeek-v3 implementation, or there might be a specific compatibility issue between the transformer and this particular model endpoint.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/213/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/212",
      "id": 3236590890,
      "node_id": "I_kwDON-_mZc7A6nUq",
      "number": 212,
      "title": "Stopping after a little bit of working",
      "user": {
        "login": "LsMacox",
        "id": 52324022,
        "node_id": "MDQ6VXNlcjUyMzI0MDIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/52324022?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LsMacox",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-07-16T16:27:20Z",
      "updated_at": "2025-07-20T08:44:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "My config \n\n```\ncat ~/.claude-code-router/config.json\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",       \n      \"api_key\": \"sk-or-v1-\",\n      \"models\": [\n        \"moonshotai/kimi-k2\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\"\n  },\n  \"log\": true\n}\n```\n\n\n```\nsend data: event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"msg_1752683147724\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"model\":\"moonshotai/kimi-k2\",\"stop_reason\":null,\"stop_sequence\":null,\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}} \nOriginal Response: {\n  \"id\": \"gen-1752683145-7ZUgws1WbyGLNHxNIadl\",\n  \"provider\": \"Targon\",\n  \"model\": \"moonshotai/kimi-k2\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1752683145,\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \"\"\n      },\n      \"finish_reason\": \"stop\",\n      \"native_finish_reason\": \"stop\",\n      \"logprobs\": null\n    }\n  ]\n}\nWarning: No content in the stream response!\nsend data: event: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null},\"usage\":{\"input_tokens\":0,\"output_tokens\":0}}\nsend data: event: message_stop\ndata: {\"type\":\"message_stop\"}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/212/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/211",
      "id": 3236409925,
      "node_id": "I_kwDON-_mZc7A57JF",
      "number": 211,
      "title": "running `ccr code` asks to run service manually",
      "user": {
        "login": "pchalasani",
        "id": 554347,
        "node_id": "MDQ6VXNlcjU1NDM0Nw==",
        "avatar_url": "https://avatars.githubusercontent.com/u/554347?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pchalasani",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-07-16T15:26:40Z",
      "updated_at": "2026-01-28T07:04:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Thanks for this great lib.\n\n```\n ~[claude-code-play]  ccr code\nService not running, starting service...\nService startup timeout, please manually run `ccr start` to start the service\n ✘  ~[claude-code-play]  ccr start\nEnter Provider Name:\n```\nThis deviates from what's on the readme, so it's not clear how to proceed.\n\nMy config -- \n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-or-v1-x\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\",\n        \"moonshotai/kimi-k2\",\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    },\n    {\n      \"name\": \"deepseek\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          // Enhance tool usage for the deepseek-chat model using the ToolUse transformer.\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n    {\n      \"name\": \"ollama\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:latest\"]\n    },\n    {\n      \"name\": \"gemini\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"x\",\n      \"models\": [\"gemini-2.5-flash-lite-preview-06-17\", \"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    },\n    {\n      \"name\": \"volcengine\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-v3-250324\", \"deepseek-r1-250528\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"]\n      }\n    },\n    {\n      \"name\": \"siliconflow\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://api.siliconflow.cn/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"moonshotai/Kimi-K2-Instruct\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384 // for siliconflow max_tokens\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\", // deepseek,deepseek-chat\", // IMPORTANT OPENAI_MODEL has been deprecated\n    \"background\": \"gemini,gemini-2.5-flash-lite-preview-06-17\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\"\n  }\n}\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/211/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/209",
      "id": 3236132487,
      "node_id": "I_kwDON-_mZc7A43aH",
      "number": 209,
      "title": "After updating version v1.0.19, there are some error..",
      "user": {
        "login": "scalebearx",
        "id": 64918714,
        "node_id": "MDQ6VXNlcjY0OTE4NzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/64918714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/scalebearx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-16T14:05:02Z",
      "updated_at": "2025-07-16T14:11:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "below is my prompt and result\n---\n> create a todolist react app\n\n⏺ I'll create a todolist React app using Bun as specified. Let me start by planning the tasks.\n\n⏺ Update Todos\n  ⎿  ☐ Set up project structure with Bun configuration                \n     ☐ Create HTML template with React integration\n     ☐ Implement TodoList component with add/edit/delete functionality\n     ☐ Create server with Bun.serve() for development\n     ☐ Add localStorage persistence for todos\n     ☐ Style the app with CSS/Tailwind\n\n⏺ Update Todos\n  ⎿  ☐ Set up project structure with Bun configuration                \n     ☐ Create HTML template with React integration\n     ☐ Implement TodoList component with add/edit/delete functionality\n     ☐ Create server with Bun.serve() for development\n     ☐ Add localStorage persistence for todos\n     ☐ Style the app with CSS/Tailwind\n\n\n⏺ Write(package.json)\n\n⏺ Write(package.json)\nTypeError: A.replace is not a function\n    at Object.renderToolResultMessage (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:1294:543)\n    at Ie2 (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:2264:1616)\n    at QN (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:65:19799)\n    at xL (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:3199)\n    at dS (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:43345)\n    at uS (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:38118)\n    at nL (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:38046)\n    at qN (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:37900)\n    at BJ (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:34990)\n    at n6 (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:65:4822)\n\n  ERROR  A.replace is not a function\n\n file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:1294:543\n\n -Object.renderToolResultMessage \n                                (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:1294:543)\n\n - Ie2 (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:2264:1616)\n - QN (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:65:19799)\n - xL (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:3199)\n - dS (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:43345)\n - uS (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:38118)\n - nL (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:38046)\n - qN (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:37900)\n - BJ (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:67:34990)\n - n6 (file:///Users/scalebear/.bun/install/global/node_modules/@anthropic-ai/claude-code/cli.js:65:4822)\n---",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/209/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/208",
      "id": 3236128659,
      "node_id": "I_kwDON-_mZc7A42eT",
      "number": 208,
      "title": "[功能请求] 支持轮询或者fallback",
      "user": {
        "login": "GeorgeDong32",
        "id": 98630204,
        "node_id": "U_kgDOBeD6PA",
        "avatar_url": "https://avatars.githubusercontent.com/u/98630204?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/GeorgeDong32",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-16T14:03:51Z",
      "updated_at": "2025-09-23T08:12:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "对于Router中的各类模型支持轮询不同供应商或者触发429后使用另一个供应商作为fallback带来更好的体验，以避免某些供应商限速较为严苛，例如以下设置。技术层面不确定能否实现\n```json\n\"Router\": {\n    \"default\": \"aliyun,deepseek-v3\",\n    \"background\": \"siliconflow,Qwen/Qwen3-8B\",\n    \"think\": \"openrouter,moonshotai/kimi-k2:free;groq/moonshotai/kimi-k2-instruct\",\n    \"longContext\": \"google/gemini-2.5-pro-preview;google/gemini-2.5-flash\"\n  }\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/208/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/206",
      "id": 3235236077,
      "node_id": "I_kwDON-_mZc7A1cjt",
      "number": 206,
      "title": "Router is not working when env var AWS_BEARER_TOKEN_BEDROCK is set to 1",
      "user": {
        "login": "symbioticstar",
        "id": 38180579,
        "node_id": "MDQ6VXNlcjM4MTgwNTc5",
        "avatar_url": "https://avatars.githubusercontent.com/u/38180579?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/symbioticstar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-16T09:46:51Z",
      "updated_at": "2025-07-16T09:46:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When env var AWS_BEARER_TOKEN_BEDROCK is set to 1, requests will not be routed.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/206/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/205",
      "id": 3235212230,
      "node_id": "I_kwDON-_mZc7A1WvG",
      "number": 205,
      "title": "关于config.json--硅基流动的transformer 参数设置问题。",
      "user": {
        "login": "smogievogie",
        "id": 44929689,
        "node_id": "MDQ6VXNlcjQ0OTI5Njg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/44929689?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/smogievogie",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-16T09:39:06Z",
      "updated_at": "2025-07-16T13:52:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在使用官方文档配置中：\n \"name\": \"siliconflow\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://api.siliconflow.cn/v1/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"moonshotai/Kimi-K2-Instruct\"],\n      \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384 // for siliconflow max_tokens\n\n这里max_tokens设置怎么样才能最大化呢？我看硅基流动的速率是1分钟40万token,这里能否换成别的参数，不使用maxtoken，使用其他的可以吗？具体怎么写啊？一个头两个大，跪求大佬们指点~~~~",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/205/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/202",
      "id": 3234788195,
      "node_id": "I_kwDON-_mZc7AzvNj",
      "number": 202,
      "title": "If anyone managed to make work Claude Code with Kimi k2 on Groq, please let us know how you did it!",
      "user": {
        "login": "amiranvarov",
        "id": 41962757,
        "node_id": "MDQ6VXNlcjQxOTYyNzU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/41962757?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/amiranvarov",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2025-07-16T07:18:39Z",
      "updated_at": "2025-07-23T17:35:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Groq is now supporting fast inference, and it would be great if Claude Code Router would allow us to hook up Claude Code with Kimi K2 on Groq!\n\nPlease share your tips how to make it work. \n\nIf repo owner is reading this: Please add first class support for this, seems like Groq is the fastest option now!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/202/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/199",
      "id": 3234668131,
      "node_id": "I_kwDON-_mZc7AzR5j",
      "number": 199,
      "title": "工具调用中止",
      "user": {
        "login": "Ricardozm2020",
        "id": 89254033,
        "node_id": "MDQ6VXNlcjg5MjU0MDMz",
        "avatar_url": "https://avatars.githubusercontent.com/u/89254033?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Ricardozm2020",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-16T06:32:45Z",
      "updated_at": "2025-07-16T09:59:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "工具调用不执行，只返回json\n<img width=\"1135\" height=\"359\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1035e7e7-2f8e-4a99-990b-a6f26b3ce11d\" />\n\n\n模型是自己本地部署的qwen2.5\n\"Providers\": [\n    {\n      \"name\": \"xinference\",\n      \"api_base_url\": \"http://localhost:9997/v1/chat/completions\",\n      \"api_key\":\"\",\n      \"models\":[\n        \"qwen2.5-72B\",\n      ]\n    }",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/199/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/197",
      "id": 3234115989,
      "node_id": "I_kwDON-_mZc7AxLGV",
      "number": 197,
      "title": "A runnable config file for siliconflow 一个可用的硅基流动的配置文件",
      "user": {
        "login": "DrWeiZhou",
        "id": 24644371,
        "node_id": "MDQ6VXNlcjI0NjQ0Mzcx",
        "avatar_url": "https://avatars.githubusercontent.com/u/24644371?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DrWeiZhou",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-07-16T01:06:56Z",
      "updated_at": "2025-07-25T12:34:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Below is a workable config file, the same content in the cofficial READEM file has an extra`,`\n官方示例中多了一个`，`，导致`ccr start`运行时config.json文件解析出错，需要每次重新输入信息重新生成配置文件\n```\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"siliconflow\",\n      \"api_base_url\": \"https://api.siliconflow.cn/v1/chat/completions\",\n      \"api_key\": \"sk-api\",\n      \"models\": [\"moonshotai/Kimi-K2-Instruct\"],\n\t  \"transformer\": {\n        \"use\": [\n          [\n            \"maxtoken\",\n            {\n              \"max_tokens\": 16384\n            }\n          ]\n        ]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"siliconflow,moonshotai/Kimi-K2-Instruct\",\n\t\"background\": \"siliconflow,moonshotai/Kimi-K2-Instruct\",\n\t\"think\": \"siliconflow,moonshotai/Kimi-K2-Instruct\",\n\t\"longContext\": \"siliconflow,moonshotai/Kimi-K2-Instruct\"\n  }\n}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/197/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/196",
      "id": 3234111381,
      "node_id": "I_kwDON-_mZc7AxJ-V",
      "number": 196,
      "title": "support groq please",
      "user": {
        "login": "azoth07",
        "id": 7674044,
        "node_id": "MDQ6VXNlcjc2NzQwNDQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7674044?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/azoth07",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 19,
      "created_at": "2025-07-16T01:04:39Z",
      "updated_at": "2026-01-26T22:55:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/196/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/192",
      "id": 3233236195,
      "node_id": "I_kwDON-_mZc7At0Tj",
      "number": 192,
      "title": "Add following config for Kimi-k2",
      "user": {
        "login": "raktim-mondol",
        "id": 28592095,
        "node_id": "MDQ6VXNlcjI4NTkyMDk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/28592095?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/raktim-mondol",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-15T18:07:29Z",
      "updated_at": "2025-07-18T21:38:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\n  \"Providers\": [\n    {\n      \"name\": \"kimi-k2\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"api-key\",\n      \"models\": [\n        \"moonshotai/kimi-k2\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"kimi-k2,moonshotai/kimi-k2\"\n  }\n}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/192/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/190",
      "id": 3233000023,
      "node_id": "I_kwDON-_mZc7As6pX",
      "number": 190,
      "title": "wsl 使用 deepseek api ok 但 windows 下 使用 相同配置 /init 会报错  ⎿  API Error: 400 {\"error\":\"Missing model in request body\"}",
      "user": {
        "login": "aresbit",
        "id": 33110495,
        "node_id": "MDQ6VXNlcjMzMTEwNDk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/33110495?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aresbit",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-15T16:59:45Z",
      "updated_at": "2025-07-16T03:34:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "wsl 使用 deepseek api ok windows 下 使用 相同配置 /init 会报错  ⎿  API Error: 400 {\"error\":\"Missing model in request body\"}\n配置如下  {\n\"OPENAI_API_KEY\": \"sk-XXX\",\n\"OPENAI_BASE_URL\": \"https://api.deepseek.com/v1\",\n\"OPENAI_MODEL\": \"deepseek-chat\",\n\"Providers\": [\n{\n\"name\": \"deepseek\",\n\"api_base_url\": \"https://api.deepseek.com/v1\",\n\"api_key\": \"sk-XXX\",\n\"models\": [\"deepseek-chat\", \"deepseek-reasoner\"]\n}\n],\n\"Router\": {\n\"background\": \"deepseek,deepseek-chat\",\n\"think\": \"deepseek,deepseek-chat\",\n\"longContext\": \"deepseek,deepseek-chat\"\n}\n}\nwindow下 是否配置在  ~/.claude-code-router/config.json ？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/190/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/188",
      "id": 3232537281,
      "node_id": "I_kwDON-_mZc7ArJrB",
      "number": 188,
      "title": "how to select specific provider for openrouter?",
      "user": {
        "login": "akwin1234",
        "id": 15890770,
        "node_id": "MDQ6VXNlcjE1ODkwNzcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/15890770?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/akwin1234",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-15T14:35:37Z",
      "updated_at": "2026-02-05T12:04:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "{\nLOGS: true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-or-v1-a432c\",\n      \"models\": [\"moonshotai/kimi-k2\"],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      },\n      \"stream\": false\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter\"\n  }\n}\n\n\nfor kimi-k2 they have many provider like together ai or groq. how i can select a specific provieder?\n\ntogether/fp8 or groq  as example.\n\nurl: https://openrouter.ai/moonshotai/kimi-k2",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/188/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/187",
      "id": 3232240377,
      "node_id": "I_kwDON-_mZc7AqBL5",
      "number": 187,
      "title": "使用gemini 出现 Invalid JSON payload received. Unknown name",
      "user": {
        "login": "linzehui",
        "id": 16056955,
        "node_id": "MDQ6VXNlcjE2MDU2OTU1",
        "avatar_url": "https://avatars.githubusercontent.com/u/16056955?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/linzehui",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-07-15T13:20:34Z",
      "updated_at": "2025-07-15T15:14:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "你好，想请问一下，我使用gemini模型，出现：\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\n\n    \\\"error\\\": {\\n    \\\"code\\\": 400,\\n    \\\"message\\\": \\\"Invalid JSON\n    payload received. Unknown name \\\\\\\"additionalProperties\\\\\\\" at\n    'tools[0].function_declarations[34].parameters.properties[6].value.i\n    tems.any_of[0]': Cannot find field.\\\\nInvalid JSON payload received.\n     Unknown name \\\\\\\"additionalProperties\\\\\\\" at 'tools[0].function_dec\n    larations[34].parameters.properties[6].value.items.any_of[1]':\n    Cannot find field.\\\",\\n    \\\"status\\\": \\\"INVALID_ARGUMENT\\\",\\n\n    \\\"details\\\": [\\n      {\\n        \\\"@type\\\":\n    \\\"type.googleapis.com/google.rpc.BadRequest\\\",\\n\n    \\\"fieldViolations\\\": [\\n          {\\n            \\\"field\\\":\n    \\\"tools[0].function_declarations[34].parameters.properties[6].value.\n    items.any_of[0]\\\",\\n            \\\"description\\\": \\\"Invalid JSON\n    payload received. Unknown name \\\\\\\"additionalProperties\\\\\\\" at\n    'tools[0].function_declarations[34].parameters.properties[6].value.i\n    tems.any_of[0]': Cannot find field.\\\"\\n          },\\n          {\\n\n              \\\"field\\\": \\\"tools[0].function_declarations[34].parameters\n    .properties[6].value.items.any_of[1]\\\",\\n\n    \\\"description\\\": \\\"Invalid JSON payload received. Unknown name\n    \\\\\\\"additionalProperties\\\\\\\" at 'tools[0].function_declarations[34].\n    parameters.properties[6].value.items.any_of[1]': Cannot find\n    field.\\\"\\n          }\\n        ]\\n      }\\n    ]\\n\n    }\\n}\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n\n我的配置是：\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\"deepseek-chat\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    },\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"Axxx\",\n      \"models\": [\"gemini-2.5-flash\", \"gemini-2.5-pro\"],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-flash\"\n  }\n}\n\n当我把default设置为 \"deepseek,deepseek-chat\"的时候是可以正常的运行的。是我的配置问题嘛？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/187/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/183",
      "id": 3231601550,
      "node_id": "I_kwDON-_mZc7AnlOO",
      "number": 183,
      "title": "经常遇到tool_calls_sectio 就停止",
      "user": {
        "login": "lucas-acc",
        "id": 32960135,
        "node_id": "MDQ6VXNlcjMyOTYwMTM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/32960135?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lucas-acc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 18,
      "created_at": "2025-07-15T09:50:50Z",
      "updated_at": "2025-07-18T05:00:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "输出过程中，经常遇到<tool_calls_sectio，然后停止。不清楚是模型问题，还是 ccr 的 bug？\n\nccr code 端显示：\n\n<img width=\"647\" height=\"358\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/dbb1f9e3-6423-4c35-9860-c1488f8e5cf0\" />\n\nccr start 端显示：\n\n> send data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"al\"}}\nOriginal Response: {\n  \"id\": \"gen-1752572826-FqIXRerncWm1BiI3JYsg\",\n  \"provider\": \"DeepInfra\",\n  \"model\": \"moonshotai/kimi-k2\",\n  \"object\": \"chat.completion.chunk\",\n  \"created\": 1752572826,\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"delta\": {\n        \"role\": \"assistant\",\n        \"content\": \"ls_sectio\"\n      },\n      \"finish_reason\": \"stop\",\n      \"native_finish_reason\": \"stop\",\n      \"logprobs\": null\n    }\n  ]\n}\nsend data: event: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"ls_sectio\"}}\ncontent_block_stop hasTextContentStarted\nsend data: event: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\nsend data: event: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null},\"usage\":{\"input_tokens\":0,\"output_tokens\":0}}\nsend data: event: message_stop\ndata: {\"type\":\"message_stop\"}\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/183/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/180",
      "id": 3231250057,
      "node_id": "I_kwDON-_mZc7AmPaJ",
      "number": 180,
      "title": "计划支持 kimi 官方的k2 接口吗？",
      "user": {
        "login": "lucas-acc",
        "id": 32960135,
        "node_id": "MDQ6VXNlcjMyOTYwMTM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/32960135?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lucas-acc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-07-15T08:03:19Z",
      "updated_at": "2025-08-08T15:47:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/180/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/176",
      "id": 3230496667,
      "node_id": "I_kwDON-_mZc7AjXeb",
      "number": 176,
      "title": "\"error\": {     \"message\": \"Cannot destructure property 'messages' of 'req.body' as it is undefined.\",     \"type\": \"api_error\",     \"code\": \"internal_error\"   }",
      "user": {
        "login": "1938225289",
        "id": 59268817,
        "node_id": "MDQ6VXNlcjU5MjY4ODE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/59268817?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/1938225289",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-15T01:54:19Z",
      "updated_at": "2025-08-06T05:51:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "这是我的代码部分，求大佬指点\n{\n  \"usePlugin\": \"\",\n  \"LOG\": true,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"deepseek\",\n      // IMPORTANT: api_base_url must be a complete (full) URL.\n      \"api_base_url\": \"https://api.deepseek.com/chat/completions\",\n      \"api_key\": \"sk-隐藏\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          // Enhance tool usage for the deepseek-chat model using the ToolUse transformer.\n          \"use\": [\"tooluse\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"deepseek,deepseek-chat\", // IMPORTANT OPENAI_MODEL has been deprecated\n    \"background\": \"deepseek,deepseek-reasoner\",\n    \"think\": \"deepseek,deepseek-reasoner\",\n    \"longContext\": \"deepseek,deepseek-reasoner\"\n  },\n  \"PROXY_URL\": \"http://127.0.0.1:7890\"\n}\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/176/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/175",
      "id": 3229334720,
      "node_id": "I_kwDON-_mZc7Ae7zA",
      "number": 175,
      "title": "导致请求超长和手动设置的config.json下无法启动",
      "user": {
        "login": "zhanghg1983",
        "id": 54789818,
        "node_id": "MDQ6VXNlcjU0Nzg5ODE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/54789818?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhanghg1983",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-14T16:32:09Z",
      "updated_at": "2025-07-15T15:07:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"259\" height=\"114\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/b0b2102f-ef13-4151-a158-5b99a4ed22bd\" />\n1.自动生成的config.json中没有transformer字段，导致请求超长\n2.手动设置的config.json下无法启动\n3.在自动生成的config.json下，启动ccr start后，再去修改config.json，添加transformer字段，可以正常启动\n但是第3种太不正常了\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/175/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/173",
      "id": 3229085032,
      "node_id": "I_kwDON-_mZc7Ad-1o",
      "number": 173,
      "title": "API Error: 400 {\"error\":{\"message\":\"Error from provider",
      "user": {
        "login": "PaperPlaneDeemo",
        "id": 26437093,
        "node_id": "MDQ6VXNlcjI2NDM3MDkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/26437093?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PaperPlaneDeemo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-14T15:03:37Z",
      "updated_at": "2025-07-15T15:25:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n{\n  \"OPENAI_API_KEY\": \"sk-proj-\",\n  \"OPENAI_BASE_URL\": \"https://api.openai.com/v1/chat/completions\",\n  \"OPENAI_MODEL\": \"o4-mini\",\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1\",\n      \"api_key\": \"sk-xxx\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ]\n    },\n    {\n      \"name\": \"openai\",\n      \"api_base_url\": \"https://api.openai.com/v1/chat/completions\",\n      \"api_key\": \"sk-proj-\",\n      \"models\": [\"gpt-4.1\", \"o3\", \"o4-mini\"]\n    },\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen2.5-coder:latest\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openai,o4-mini\",\n    \"background\": \"openai,o4-mini\",\n    \"think\": \"openai,o4-mini\",\n    \"longContext\": \"openai,o4-mini\"\n  }\n}\n```\n\n报错：\n```\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider: {\\n  \n    \\\"error\\\": {\\n    \\\"message\\\": \\\"Unsupported parameter: 'max_tokens' is\n     not supported with this model. Use 'max_completion_tokens' \n    instead.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \n    \\\"max_tokens\\\",\\n    \\\"code\\\": \\\"unsupported_parameter\\\"\\n  \n    }\\n}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/173/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/172",
      "id": 3228704406,
      "node_id": "I_kwDON-_mZc7Ach6W",
      "number": 172,
      "title": "API Error: 404 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"Invalid URL (POST       /v1)\\\",\\\"type\\\":\\\"invalid_request_error\\\",\\\"param\\\":\\\"\\\",\\\"code\\\":\\\"\\\"}}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}",
      "user": {
        "login": "Jessica-lol",
        "id": 74697935,
        "node_id": "MDQ6VXNlcjc0Njk3OTM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/74697935?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Jessica-lol",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-14T13:02:27Z",
      "updated_at": "2025-09-28T17:43:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1092\" height=\"159\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/004d9536-3ef7-4624-b1f7-3804729d1bf8\" />\n\nwsl老版的没问题，我用的第三方api需要加这个v1",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/172/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/171",
      "id": 3228702129,
      "node_id": "I_kwDON-_mZc7AchWx",
      "number": 171,
      "title": "报错 API Error: 500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading      '0')\",\"type\":\"api_error\",\"code\":\"internal_error\"}}",
      "user": {
        "login": "jakara",
        "id": 1069864,
        "node_id": "MDQ6VXNlcjEwNjk4NjQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1069864?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jakara",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-07-14T13:01:39Z",
      "updated_at": "2025-09-02T02:36:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "因为使用的私有部署的 DeepSeek R1， 不确定哪里不兼容了， 如何 debug？\n以下是我的配置：\n\n```json\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"deepseek-r1\",\n      \"api_base_url\": \"https://x.x.x.x:8080/v1/chat/completions\",\n      \"api_key\": \"sk-ddddd\",\n      \"models\": [\n        \"cloud/DeepSeek-R1-250528\"\n      ]\n    }\n    \n  ],\n  \"Router\": {\n    \"default\": \"deepseek-r1\",\n    \"background\": \"deepseek-r1\",\n    \"think\": \"deepseek-r1\",\n    \"longContext\": \"deepseek-r1\"\n  }\n}\n```\n\n这个模型的供应方是提供 openai 兼容 api 的， 以下 langchain 代码可以成功调用：\n```python\nllm = ChatOpenAI(model_name=\"cloud/DeepSeek-R1-250528\", temperature=0)\nllm.invoke(\"天空为什么是蓝色的\")\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/171/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/170",
      "id": 3228442579,
      "node_id": "I_kwDON-_mZc7Abh_T",
      "number": 170,
      "title": "API Error: 400 {\"error\":{\"message\":\"Error from provider:      {\\\"error\\\":{\\\"message\\\":\\\"Invalid max_tokens valu",
      "user": {
        "login": "gaoshanxiaoao",
        "id": 19151926,
        "node_id": "MDQ6VXNlcjE5MTUxOTI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/19151926?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gaoshanxiaoao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 18,
      "created_at": "2025-07-14T11:33:33Z",
      "updated_at": "2025-07-26T10:21:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"2820\" height=\"1376\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/da982526-6b1f-4015-b4a5-4fd7d5c26260\" />\n这是什么问题？有遇到的吗？怎么解决？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/170/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/164",
      "id": 3227361318,
      "node_id": "I_kwDON-_mZc7AXaAm",
      "number": 164,
      "title": "Windows 11 powershell 7.5.2启动ccr报错",
      "user": {
        "login": "Mephistopheles1166",
        "id": 128333236,
        "node_id": "U_kgDOB6Y1tA",
        "avatar_url": "https://avatars.githubusercontent.com/u/128333236?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Mephistopheles1166",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-14T04:57:46Z",
      "updated_at": "2025-07-14T10:44:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "powershell日志：\n\n\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> npm install -g @musistudio/claude-code-router\n\nadded 83 packages in 12s\n\n21 packages are looking for funding\n  run `npm fund` for details\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> ccr --version\n\nUsage: ccr [command]\n\nCommands:\n  start         Start service\n  stop          Stop service\n  status        Show service status\n  code          Execute code command\n  -v, version   Show version information\n  -h, help      Show help information\n\nExample:\n  ccr start\n  ccr code \"Write a Hello World\"\n\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> ccr -v\nclaude-code-router version: 1.0.16\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> ccr code\nService not running, starting service...\nFailed to start service: Error: spawn ccr ENOENT\n    at ChildProcess._handle.onexit (node:internal/child_process:285:19)\n    at onErrorNT (node:internal/child_process:483:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'spawn ccr',\n  path: 'ccr',\n  spawnargs: [ 'start' ]\n}\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> where ccr\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> ccr -v\nclaude-code-router version: 1.0.16\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> npm config get prefix\nC:\\Users\\1\\AppData\\Roaming\\npm\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> ccr start\nnode:internal/fs/promises:639\n  return new FileHandle(await PromisePrototypeThen(\n                        ^\n\nError: ENOENT: no such file or directory, open 'C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master\\undefined\\.claude.json'\n    at async open (node:internal/fs/promises:639:25)\n    at async writeFile (node:internal/fs/promises:1213:14)\n    at async initializeClaudeConfig (C:\\Users\\1\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:56143:5)\n    at async run (C:\\Users\\1\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:56151:3) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'open',\n  path: 'C:\\\\Users\\\\1\\\\AndroidStudioProjects\\\\Tiktok-master\\\\undefined\\\\.claude.json'\n}\n\nNode.js v22.17.0\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> C:\\Users\\1\\AppData\\Roaming\\npm\\ccr.cmd start\nnode:internal/fs/promises:639\n  return new FileHandle(await PromisePrototypeThen(\n                        ^\n\nError: ENOENT: no such file or directory, open 'C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master\\undefined\\.claude.json'\n    at async open (node:internal/fs/promises:639:25)\n    at async writeFile (node:internal/fs/promises:1213:14)\n    at async initializeClaudeConfig (C:\\Users\\1\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:56143:5)\n    at async run (C:\\Users\\1\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:56151:3) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'open',\n  path: 'C:\\\\Users\\\\1\\\\AndroidStudioProjects\\\\Tiktok-master\\\\undefined\\\\.claude.json'\n}\n\nNode.js v22.17.0\nPS C:\\Users\\1\\AndroidStudioProjects\\Tiktok-master> C:\\Users\\1\\AppData\\Roaming\\npm\\ccr.cmd code\nService not running, starting service...\nFailed to start service: Error: spawn ccr ENOENT\n    at ChildProcess._handle.onexit (node:internal/child_process:285:19)\n    at onErrorNT (node:internal/child_process:483:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'spawn ccr',\n  path: 'ccr',\n  spawnargs: [ 'start' ]\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/164/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/163",
      "id": 3227219334,
      "node_id": "I_kwDON-_mZc7AW3WG",
      "number": 163,
      "title": "claudecode已经原生支持windows了，是否可以相应调整代码",
      "user": {
        "login": "zhanghg1983",
        "id": 54789818,
        "node_id": "MDQ6VXNlcjU0Nzg5ODE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/54789818?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhanghg1983",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-14T03:13:21Z",
      "updated_at": "2025-07-23T13:44:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "claudecode已经原生支持windows了，是否可以相应调整代码，在WSL环境设置代理什么的太麻烦了\n此外，不知道什么原因，请求的时候总是提示token长度超标，请问是怎么回事",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/163/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/162",
      "id": 3226800747,
      "node_id": "I_kwDON-_mZc7AVRJr",
      "number": 162,
      "title": "error 500 - message : Unexpected token",
      "user": {
        "login": "cyber-mawonaj",
        "id": 174906784,
        "node_id": "U_kgDOCmzdoA",
        "avatar_url": "https://avatars.githubusercontent.com/u/174906784?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cyber-mawonaj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-07-13T20:32:44Z",
      "updated_at": "2025-08-06T00:44:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "hi, i want to use Kimi k2, this is my config.json : \n\n```\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1\",\n      \"api_key\": \"sk-.............................................\",\n      \"models\": [\n        \"moonshotai/kimi-k2\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,moonshotai/kimi-k2\"\n  }\n}\n\n```\nwhen i launch ccr code and enter a prompt, i have this error : \n\n`API Error (500 {\"error\":{\"message\":\"Unexpected token '<', \\\"<!DOCTYPE \\\"... is not valid JSON\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)`\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/162/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/161",
      "id": 3226645687,
      "node_id": "I_kwDON-_mZc7AUrS3",
      "number": 161,
      "title": "Response stopped after call mcp server",
      "user": {
        "login": "tranbathanhtung",
        "id": 26837622,
        "node_id": "MDQ6VXNlcjI2ODM3NjIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/26837622?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tranbathanhtung",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-13T16:41:17Z",
      "updated_at": "2025-11-05T08:26:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1008\" height=\"470\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/76a03006-4a75-4b95-90f2-2698792df89a\" />\n\nSometimes it call success, sometime it return data type error and stop continue response or response nothing\n\nclaude mcp add context7 -- npx -y @upstash/context7-mcp\n\n{\n  \"log\": true,\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-...\",\n      \"models\": [\n        \"google/gemini-2.5-pro\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,google/gemini-2.5-pro\",\n    \"background\": \"openrouter,google/gemini-2.5-pro\",\n    \"think\": \"openrouter,google/gemini-2.5-pro\",\n    \"longContext\": \"openrouter,google/gemini-2.5-pro\"\n  }\n}",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/161/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/160",
      "id": 3226578301,
      "node_id": "I_kwDON-_mZc7AUa19",
      "number": 160,
      "title": "Using this with various GEMINI proxy tools",
      "user": {
        "login": "ArtProGZ",
        "id": 129490922,
        "node_id": "U_kgDOB7ff6g",
        "avatar_url": "https://avatars.githubusercontent.com/u/129490922?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ArtProGZ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 33,
      "created_at": "2025-07-13T15:13:19Z",
      "updated_at": "2025-07-23T17:31:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It seems that because many of the GEMINI proxy tools out there transform requests to OPENAI format, it is not possible to make this work with them to use tools. Often, claude code just stops after stating its first step without actaully implementing anything. I suspect it's the tool calling that's failling \n\n<img width=\"984\" height=\"488\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e672d610-5a84-4265-8250-7ec27329a280\" />\n\n<img width=\"835\" height=\"260\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/699c48db-b209-4c7b-a2f0-6fa0e3de0250\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/160/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/159",
      "id": 3226576296,
      "node_id": "I_kwDON-_mZc7AUaWo",
      "number": 159,
      "title": "感觉ccr code 比直接claude执行要慢的多",
      "user": {
        "login": "zhajingwen",
        "id": 33952447,
        "node_id": "MDQ6VXNlcjMzOTUyNDQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/33952447?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhajingwen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-13T15:10:30Z",
      "updated_at": "2025-07-14T06:35:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "应该不是幻觉吧",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/159/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/157",
      "id": 3226265669,
      "node_id": "I_kwDON-_mZc7ATOhF",
      "number": 157,
      "title": "我是特地来赞musistudio",
      "user": {
        "login": "wanghaisheng",
        "id": 2363295,
        "node_id": "MDQ6VXNlcjIzNjMyOTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2363295?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wanghaisheng",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-13T08:36:10Z",
      "updated_at": "2025-07-13T08:36:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "虽然占用issue很可耻 但我压抑不住自己内心的悸动\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/157/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/154",
      "id": 3226107915,
      "node_id": "I_kwDON-_mZc7ASoAL",
      "number": 154,
      "title": "遇到完全不调用工具的情况",
      "user": {
        "login": "cluic",
        "id": 88969402,
        "node_id": "MDQ6VXNlcjg4OTY5NDAy",
        "avatar_url": "https://avatars.githubusercontent.com/u/88969402?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cluic",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-07-13T04:10:18Z",
      "updated_at": "2025-08-25T13:06:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Claude Code版本：@anthropic-ai/claude-code@1.0.51\nccr版本：@musistudio/claude-code-router@1.0.15\n目前频繁遇到不调用工具、不创建文件、提问后终端不输出任何内容、同一问题相同回复输出3-5次的问题\n之前以为是gemini或者deepseek模型的问题，更换openrouter的claude-sonnet-4后也会触发这些问题\n以下是本次遇到不调用工具、不创建文件的问题的日志和终端截图，即使我明确指出写入本地目录，也没能执行成功，本地依然是空文件夹，能否帮忙看一下是哪里的问题导致的，是我的问题还是api的问题\n[ccr日志](https://github.com/user-attachments/files/21202440/claude-code-router.log)\n\n<img width=\"1049\" height=\"827\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ec98551f-979a-46a8-993e-daecbcfd9bfe\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/154/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/153",
      "id": 3226074909,
      "node_id": "I_kwDON-_mZc7ASf8d",
      "number": 153,
      "title": "background只是用来生成标题的吗？我想让task使用background",
      "user": {
        "login": "anrgct",
        "id": 16172523,
        "node_id": "MDQ6VXNlcjE2MTcyNTIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/16172523?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/anrgct",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-07-13T03:30:20Z",
      "updated_at": "2025-07-13T09:47:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "请问background只是用来生成标题的吗？我想让task使用background，就是可以配置SMALL_MODEL，改如何实现呢？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/153/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/150",
      "id": 3225488287,
      "node_id": "I_kwDON-_mZc7AQQuf",
      "number": 150,
      "title": "API Error: 400 {\"error\":\"Missing model in request body\"}",
      "user": {
        "login": "zhajingwen",
        "id": 33952447,
        "node_id": "MDQ6VXNlcjMzOTUyNDQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/33952447?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhajingwen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 23,
      "created_at": "2025-07-12T15:31:24Z",
      "updated_at": "2025-07-28T12:25:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " API Error: 400 {\"error\":\"Missing model in request body\"}\n偶发出现这样的问题，咋回事啊，是我电脑的问题吗？\n\n<img width=\"556\" height=\"411\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7108883b-5523-4393-a2c7-22f75654201b\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/150/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/149",
      "id": 3225382295,
      "node_id": "I_kwDON-_mZc7AP22X",
      "number": 149,
      "title": "Windows cannot create correct .claude.json",
      "user": {
        "login": "forhonourlx",
        "id": 16576219,
        "node_id": "MDQ6VXNlcjE2NTc2MjE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/16576219?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/forhonourlx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-07-12T13:49:31Z",
      "updated_at": "2025-07-14T08:17:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " ccr start  \nnode:internal/fs/promises:633\n  return new FileHandle(await PromisePrototypeThen(\n                        ^\n\nError: ENOENT: no such file or directory, open 'C:\\Users\\simon\\Desktop\\Super\\SuperClaude\\undefined\\.claude.json'\n    at async open (node:internal/fs/promises:633:25)\n    at async writeFile (node:internal/fs/promises:1207:14)\n    at async initializeClaudeConfig (C:\\Users\\simon\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:56116:5)\n    at async run (C:\\Users\\simon\\AppData\\Roaming\\npm\\node_modules\\@musistudio\\claude-code-router\\dist\\cli.js:56124:3) {\n  errno: -4058,\n  code: 'ENOENT',\n  syscall: 'open',\n  path: 'C:\\\\Users\\\\simon\\\\Desktop\\\\Super\\\\SuperClaude\\\\undefined\\\\.claude.json'\n}\n\nNode.js v22.16.0",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/149/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/146",
      "id": 3225032848,
      "node_id": "I_kwDON-_mZc7AOhiQ",
      "number": 146,
      "title": "能否增加对Windows cc 的支持",
      "user": {
        "login": "gtxy27",
        "id": 59104199,
        "node_id": "MDQ6VXNlcjU5MTA0MTk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/59104199?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gtxy27",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2025-07-12T08:09:27Z",
      "updated_at": "2025-07-23T13:43:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Claude 今天开放了Windows cc 的支持，在Windows 可以正常使用cc ，ccr 请求支持Windows",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/146/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/145",
      "id": 3224648950,
      "node_id": "I_kwDON-_mZc7ANDz2",
      "number": 145,
      "title": "Can you please give a sample config.json for configuring kimi.ai and whether it needs Transformer or not?",
      "user": {
        "login": "jiguorui",
        "id": 1280055,
        "node_id": "MDQ6VXNlcjEyODAwNTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1280055?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jiguorui",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-07-12T01:45:50Z",
      "updated_at": "2025-07-15T12:35:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Can you please give a sample config.json for configuring kimi.ai and whether it needs Transformer or not?\n\nAs you know， kimi has released a new model",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/145/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/143",
      "id": 3219724124,
      "node_id": "I_kwDON-_mZc6_6Rdc",
      "number": 143,
      "title": "Please help to get working, CC missing api key issue",
      "user": {
        "login": "jay377",
        "id": 89018342,
        "node_id": "MDQ6VXNlcjg5MDE4MzQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/89018342?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jay377",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-10T15:04:31Z",
      "updated_at": "2025-07-24T02:42:38Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It seems i made some progress in my setup, my JSON was bad previously, now thats fixed but still having issues.\nPlease please can you help me to get this working, I need thus badly.\n\nNow it runs but when i get into CC it doesnt work as it still says missing API key and wont run commands and wont do anything, how do we get past this? I have tried changing models etc nothing works. Do you need an anthropic account or key to get this to work, but then you can redirect requests to CCR other models? \nEdit: I tried signup up and gettinf a api key and logging in but just says no credits, it wont use CCR, how do you make it us CCR?\n\n> /model gemini/gemini-2.5-pro\n  ⎿  Set model to gemini/gemini-2.5-pro\n\n> /init is analyzing your codebase…\n  ⎿  Invalid API key · Please run /login\n\n> Please read the prd.txt in the docs folder and gie me a short summary about this project\n  ⎿  Invalid API key · Please run /login\n\n\nHere are my launched CCR logs:\n\nblight:~/claudecode$ ccr -v\nclaude-code-router version: 1.0.15\nblight:~/claudecode$ ccr start\nLoaded JSON config from: /home/blight/.claude-code-router/config.json\nopenrouter provider registered (DOES THIS MEAN JSON IS SETUP CORRECTLY)\ngemini provider registered (DOES THIS MEAN JSON IS SETUP CORRECTLY)\nregister transformer: Anthropic (endpoint: /v1/messages)\nregister transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\nregister transformer: deepseek (no endpoint)\nregister transformer: tooluse (no endpoint)\nregister transformer: openrouter (no endpoint)\n🚀 LLMs API server listening on http://127.0.0.1:3456\n\nI don't understand the register transformer message, are those fine or problems?\n\nBoth CC and CCR are up too date and freshly installed today. Running in WSL2 ubuntu windows.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/143/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/141",
      "id": 3219222704,
      "node_id": "I_kwDON-_mZc6_4XCw",
      "number": 141,
      "title": "Grok4 API support",
      "user": {
        "login": "jiguorui",
        "id": 1280055,
        "node_id": "MDQ6VXNlcjEyODAwNTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1280055?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jiguorui",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-10T12:44:53Z",
      "updated_at": "2025-07-11T08:30:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Could you give a demo to use the Grok4 API?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/141/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/140",
      "id": 3218299143,
      "node_id": "I_kwDON-_mZc6_01kH",
      "number": 140,
      "title": "经常卡住，没有任何报错，包括加上-d debug 参数后",
      "user": {
        "login": "HaHaEason",
        "id": 3632669,
        "node_id": "MDQ6VXNlcjM2MzI2Njk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3632669?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/HaHaEason",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-10T07:53:44Z",
      "updated_at": "2025-07-10T12:53:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题，经常在网络顺畅的时候卡住，不知道是否是 function calling 能力不足导致，还是别的其他原因，也没有错误，也没有日志\n请问有办法让这个过程更清晰吗？\n\n![Image](https://github.com/user-attachments/assets/56bc3e01-3bf6-4f72-846c-03938f66bc2b)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/140/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/139",
      "id": 3218100117,
      "node_id": "I_kwDON-_mZc6_0E-V",
      "number": 139,
      "title": "gemini模型配置的问题",
      "user": {
        "login": "lidashuaiqi",
        "id": 90900674,
        "node_id": "MDQ6VXNlcjkwOTAwNjc0",
        "avatar_url": "https://avatars.githubusercontent.com/u/90900674?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lidashuaiqi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 20,
      "created_at": "2025-07-10T06:37:12Z",
      "updated_at": "2025-09-17T00:50:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "在配置过程中遇到以下问题，请教大佬\n\n在使用`ccr start`时配置信息如下：\n\n![Image](https://github.com/user-attachments/assets/513cd7d0-7a1e-4622-a26b-32216ecd9d39)\n\n打开url显示：{\"error\":{\"message\": \"Cannot destructure property 'messages' of 'req.body' as it is undefined.\",\"type\": \"api_error\",\"code\": \"internal_error\"}}\napi测试有效，ccr版本为最新\n\n后续修改config如下:\n```json\n{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"\",\n      \"models\": [\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\"\n  }\n}\n```\n使用`ccr code`启动之后不能正常运行\n\n<img width=\"1415\" height=\"707\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/8b3d736b-98cb-4ff4-96f8-e7ea3e7a5204\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/139/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/136",
      "id": 3215079546,
      "node_id": "I_kwDON-_mZc6_ojh6",
      "number": 136,
      "title": "配置和 LOG 问题请教，日志里请求有 undefined 是正常的吗？",
      "user": {
        "login": "ricky0829",
        "id": 28993319,
        "node_id": "MDQ6VXNlcjI4OTkzMzE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/28993319?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ricky0829",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-09T08:51:01Z",
      "updated_at": "2025-07-09T09:59:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "尝试了阿里的 API 和 newapi，始终没跑起来，两种的日志里在 final request 这里都有个 undefined，大佬可以帮忙看下是配置文件有误吗，感谢\n\n这是阿里的配置：\n```\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"qwen-max-latest\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"qwen-max-latest\",\n        \"qwen2.5-coder-3b-instruct\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"qwen-max-latest,qwen-max-latest\",\n    \"background\": \"qwen-max-latest,qwen2.5-coder-3b-instruct\",\n    \"think\": \"qwen-max-latest,qwen-max-latest\",\n    \"longContext\": \"qwen-max-latest,qwen-max-latest\"\n  }\n}\n```\n\n报错是和这个 [issue](https://github.com/musistudio/claude-code-router/issues/116)  一样，看了下日志，请求里在 URL 后和数据之间有个 undefined ：\n\n```\n[2025-07-09T08:36:25.483Z] qwen-max-latest provider registered\n[2025-07-09T08:36:25.483Z] register transformer: Anthropic (endpoint: /v1/messages)\n[2025-07-09T08:36:25.483Z] register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\n[2025-07-09T08:36:25.483Z] register transformer: deepseek (no endpoint)\n[2025-07-09T08:36:25.483Z] register transformer: tooluse (no endpoint)\n[2025-07-09T08:36:25.484Z] register transformer: openrouter (no endpoint)\n[2025-07-09T08:36:25.564Z] 🚀 LLMs API server listening on http://127.0.0.1:3456\n[2025-07-09T08:36:27.682Z] Using background model for  claude-3-5-haiku-20241022\n[2025-07-09T08:36:27.683Z] Anthropic Request: {\n  \"model\": \"qwen2.5-coder-3b-instruct\",\n  \"max_tokens\": 512,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Please write a 5-10 word title the following conversation:\\n\\nUser: test\\n\\nRespond with the title for the conversation and nothing else.\"\n    }\n  ],\n  \"system\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Summarize this coding conversation in under 50 characters.\\nCapture the main task, key files, problems addressed, and current status.\",\n      \"cache_control\": {\n        \"type\": \"ephemeral\"\n      }\n    }\n  ],\n  \"temperature\": 0,\n  \"metadata\": {\n    \"user_id\": \"832c86dcd89d8ce0670e830ab935e7c9c175695e44b5f3031edba9504069929d\"\n  },\n  \"stream\": true\n}\n[2025-07-09T08:36:27.705Z] final request: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions undefined {\"method\":\"POST\",\"headers\":{},\"body\":\"{\\\"messages\\\":[{\\\"role\\\":\\$\n[2025-07-09T08:36:28.243Z] Original Response: {\n  \"choices\": [\n    {\n      \"delta\": {\n        \"content\": \"\",\n        \"role\": \"assistant\"\n      },\n      \"index\": 0,\n      \"logprobs\": null,\n      \"finish_reason\": null\n    }\n  ],\n  \"object\": \"chat.completion.chunk\",\n  \"usage\": null,\n  \"created\": 1752050195,\n  \"system_fingerprint\": null,\n  \"model\": \"qwen2.5-coder-3b-instruct\",\n  \"id\": \"chatcmpl-025a2c98-c6a8-92d0-a425-e7a4fd0f043f\"\n}\n```\n其中这里：`final request: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions undefined {\"method\":\"POST\",\"headers\":{},\"body\":\"{...`\n\n然后尝试了 newapi，一开始尝试了多个模型，一直是报 500 error，后来只用一个 gemini 先做测试，还是一样报错\n\n```\n> test\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 2/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 2 seconds… (attempt 3/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 4 seconds… (attempt 4/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"fetch failed\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 10 seconds… (attempt 5/10)\n\n```\n\n这是 newapi 的配置：\n```\n{\n  \"LOG\": true,\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://api.closeai.im/v1beta/models/\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"gemini-2.5-pro\"\n      ],\n      \"transformer\": {\n        \"use\": [\"gemini\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n    \"background\": \"gemini,gemini-2.5-pro\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\"\n  }\n}\n```\n这是日志的节选：\n```\n[2025-07-09T08:32:50.610Z] gemini provider registered\n[2025-07-09T08:32:50.610Z] register transformer: Anthropic (endpoint: /v1/messages)\n[2025-07-09T08:32:50.610Z] register transformer: gemini (endpoint: /v1beta/models/:modelAndAction)\n[2025-07-09T08:32:50.610Z] register transformer: deepseek (no endpoint)\n[2025-07-09T08:32:50.610Z] register transformer: tooluse (no endpoint)\n[2025-07-09T08:32:50.611Z] register transformer: openrouter (no endpoint)\n[2025-07-09T08:32:50.687Z] 🚀 LLMs API server listening on http://127.0.0.1:3456\n[2025-07-09T08:32:52.728Z] Using background model for  claude-3-5-haiku-20241022\n[2025-07-09T08:32:52.729Z] Anthropic Request: {\n  \"model\": \"gemini-2.5-pro\",\n  \"max_tokens\": 512,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Please write a 5-10 word title the following conversation:\\n\\nUser: ccr stop\\n\\nRespond with the title for the conversation and nothing else.\"\n    }\n  ],\n  \"system\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Summarize this coding conversation in under 50 characters.\\nCapture the main task, key files, problems addressed, and current status.\",\n      \"cache_control\": {\n        \"type\": \"ephemeral\"\n      }\n    }\n  ],\n  \"temperature\": 0,\n  \"metadata\": {\n    \"user_id\": \"832c86dcd89d8ce0670e830ab935e7c9c175695e44b5f3031edba9504069929d\"\n  },\n  \"stream\": true\n}\n[2025-07-09T08:32:52.731Z] final request: https://api.closeai.im/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse undefined {\"method\":\"POST\",\"headers\":{},\"body\":\"{\\\"contents$\n[2025-07-09T08:32:55.196Z] Using background model for  claude-3-5-haiku-20241022\n[2025-07-09T08:32:55.197Z] Anthropic Request: {\n  \"model\": \"gemini-2.5-pro\",\n  \"max_tokens\": 512,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Please write a 5-10 word title the following conversation:\\n\\nUser: ccr stop\\n\\nRespond with the title for the conversation and nothing else.\"\n    }\n  ],\n  \"system\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"Summarize this coding conversation in under 50 characters.\\nCapture the main task, key files, problems addressed, and current status.\",\n      \"cache_control\": {\n        \"type\": \"ephemeral\"\n      }\n    }\n  ],\n  \"temperature\": 0,\n  \"metadata\": {\n    \"user_id\": \"832c86dcd89d8ce0670e830ab935e7c9c175695e44b5f3031edba9504069929d\"\n  },\n  \"stream\": true\n}\n\n```\n\n其中也是这行请求里有 undefined ：`final request: https://api.closeai.im/v1beta/models/gemini-2.5-pro:streamGenerateContent?alt=sse undefined {\"method\":\"POST\",\"headers\":{},\"body\":......`\n\n这俩 API 和 model 我都试过是没问题的",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/136/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/131",
      "id": 3211201641,
      "node_id": "I_kwDON-_mZc6_Zwxp",
      "number": 131,
      "title": "请教ccr和可以SuperClaude一同使用吗？",
      "user": {
        "login": "carter003",
        "id": 7269847,
        "node_id": "MDQ6VXNlcjcyNjk4NDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7269847?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/carter003",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-08T06:23:30Z",
      "updated_at": "2025-07-08T07:44:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr和可以SuperClaude一同使用吗？\n\n包括SuperClaude的四个MCP\n\n> - Context7: Access to library documentation\n> - Sequential: Multi-step reasoning capabilities\n> - Magic: AI-generated UI components\n> - Puppeteer: Browser testing and automation",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/131/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/130",
      "id": 3211121221,
      "node_id": "I_kwDON-_mZc6_ZdJF",
      "number": 130,
      "title": "What the version of CC is CCR using now?",
      "user": {
        "login": "evilpsycho42",
        "id": 202909006,
        "node_id": "U_kgDODBglTg",
        "avatar_url": "https://avatars.githubusercontent.com/u/202909006?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/evilpsycho42",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-08T05:45:48Z",
      "updated_at": "2025-07-08T06:48:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Same as title.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/130/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/129",
      "id": 3210779450,
      "node_id": "I_kwDON-_mZc6_YJs6",
      "number": 129,
      "title": "请教：ccr 1.0.15版本，使用openrouter 没有执行tool use",
      "user": {
        "login": "zhouzhengjun",
        "id": 5660379,
        "node_id": "MDQ6VXNlcjU2NjAzNzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5660379?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhouzhengjun",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-07-08T02:21:01Z",
      "updated_at": "2025-08-09T18:41:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\nccr config如下：\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-***\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.7-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\"\n      ],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\":  \"openrouter,anthropic/claude-3.7-sonnet\",\n    \"background\":  \"openrouter,anthropic/claude-3.7-sonnet\",\n    \"think\":  \"openrouter,anthropic/claude-3.7-sonnet\",\n    \"longContext\": \"openrouter,anthropic/claude-3.7-sonnet\"\n  }\n}\n```\nclaude code输出如下：\n\n<img width=\"936\" height=\"307\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/837fbf5e-09a4-4b0a-8d98-820fcce88380\" />\n\n请问这是什么原因导致的，我切换了openrouter的gemini也是这样\n\nopenrouter那边的最后一条消息的finish_reason是 tool_calls\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/129/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/125",
      "id": 3207890930,
      "node_id": "I_kwDON-_mZc6_NIfy",
      "number": 125,
      "title": "question for ANTHROPIC_API_KEY to protect BASE URL",
      "user": {
        "login": "davesliu",
        "id": 20762865,
        "node_id": "MDQ6VXNlcjIwNzYyODY1",
        "avatar_url": "https://avatars.githubusercontent.com/u/20762865?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/davesliu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-07T07:37:58Z",
      "updated_at": "2025-07-08T04:36:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello\n\nIf deploy the claude-code-router on huggingface or render, it seems that no protection for the BASE_URL, as ANTHROPIC_API_KEY can be filled any string.\n\nSo it is possible to add protection for non-local deployment by utilize the ANTHROPIC_API_KEY on server side?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/125/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/122",
      "id": 3206765622,
      "node_id": "I_kwDON-_mZc6_I1w2",
      "number": 122,
      "title": "API Error 404 - No endpoints found that support cache control. CCR -v 1.0.14",
      "user": {
        "login": "hunguy",
        "id": 4061802,
        "node_id": "MDQ6VXNlcjQwNjE4MDI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4061802?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hunguy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2025-07-06T16:43:53Z",
      "updated_at": "2025-07-24T23:56:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I got this error when trying to chat: \n```shell \nAPI Error: 404 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"No endpoints found \n    that support cache control\\\",\\\"code\\\":404}}\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nCCR version 1.0.14\n~/.claude-code-router/config.json (in its entirety):\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-****\",\n      \"models\": [\"deepseek/deepseek-chat-v3-0324\"],\n      \"transformer\": {\n        \"use\": [\"openrouter\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"openrouter,deepseek/deepseek-chat-v3-0324\",\n    \"background\": \"openrouter,deepseek/deepseek-chat-v3-0324\",\n    \"think\": \"openrouter,deepseek/deepseek-chat-v3-0324\",\n    \"longContext\": \"openrouter,deepseek/deepseek-chat-v3-0324\"\n  }\n}\n```\nAppreciate any help!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/122/reactions",
        "total_count": 5,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 5
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/121",
      "id": 3206629138,
      "node_id": "I_kwDON-_mZc6_IUcS",
      "number": 121,
      "title": "Setting up local llms - which models are compatible?",
      "user": {
        "login": "coolbluewater",
        "id": 56218503,
        "node_id": "MDQ6VXNlcjU2MjE4NTAz",
        "avatar_url": "https://avatars.githubusercontent.com/u/56218503?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/coolbluewater",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-06T14:41:36Z",
      "updated_at": "2025-08-02T15:41:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm trying to use ccr with a single local llm.\nAt runtime, this gives the error that the llm does not support tools:\n```shell\n ⎿  API Error: 400 {\"error\":{\"message\":\"Error from provider: {\\\"error\\\":{\\\"message\\\":\\\"registry.ollama.ai/library/codeqwen:latest does not support\n     tools\\\",\\\"type\\\":\\\"api_error\\\",\\\"param\\\":null,\\\"code\\\":null}}\\n\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\n```\n\nHere's my config.json:\n```json\n{\n  \"LOG\": false,\n  \"Providers\": [\n    {\n      \"name\": \"ollama\",\n      \"api_base_url\": \"http://localhost:11434/v1/chat/completions\",\n      \"api_key\": \"ollama\",\n      \"models\": [\"qwen:latest\"]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"ollama,codeqwen:latest\",\n    \"background\": \"ollama,codeqwen:latest\",\n    \"think\": \"ollama,codeqwen:latest\",\n    \"longcontext\": \"ollama,codeqwen:latest\"\n  }\n}\n\n```\n\nAre there different requirements for each of default, background, think and longcontext?\nWhich ollama-supported LLM's can you recommend for each of these?\n\nThanks for a super cool tool, btw.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/121/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/119",
      "id": 3206264642,
      "node_id": "I_kwDON-_mZc6_G7dC",
      "number": 119,
      "title": "Feature Request: Add Support for GitHub Copilot LLM API",
      "user": {
        "login": "itayo-m",
        "id": 171914580,
        "node_id": "U_kgDOCj81VA",
        "avatar_url": "https://avatars.githubusercontent.com/u/171914580?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/itayo-m",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 22,
      "created_at": "2025-07-06T07:55:15Z",
      "updated_at": "2026-02-07T07:20:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n\nIt would be great if **claude-code-router** could optionally route code-completion requests through the new GitHub Copilot LLM API in addition to (or instead of) existing backends. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/119/reactions",
        "total_count": 20,
        "+1": 20,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/117",
      "id": 3206164039,
      "node_id": "I_kwDON-_mZc6_Gi5H",
      "number": 117,
      "title": "新特性，支持 ts sdk",
      "user": {
        "login": "liaokaime",
        "id": 27792976,
        "node_id": "MDQ6VXNlcjI3NzkyOTc2",
        "avatar_url": "https://avatars.githubusercontent.com/u/27792976?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/liaokaime",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-06T06:21:04Z",
      "updated_at": "2025-07-20T15:04:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "官方的有一个ts sdk用于node开发\nhttps://docs.anthropic.com/zh-CN/docs/claude-code/sdk\n\n咱们现在这个任务只支持命令行模式，还不支持 ts sdk，希望大佬发力",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/117/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/116",
      "id": 3205920405,
      "node_id": "I_kwDON-_mZc6_FnaV",
      "number": 116,
      "title": "阿里云百炼 max_tokens 报错",
      "user": {
        "login": "pfjia",
        "id": 26075846,
        "node_id": "MDQ6VXNlcjI2MDc1ODQ2",
        "avatar_url": "https://avatars.githubusercontent.com/u/26075846?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pfjia",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-07-06T02:18:54Z",
      "updated_at": "2025-07-15T15:53:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "使用阿里云百炼的模型会报错如下：\n\n{\"error\":{\"message\":\"Error from provider:\n    {\\\"error\\\":{\\\"code\\\":\\\"invalid_parameter_error\\\",\\\"param\\\":null,\\\"message\\\":\\\"<400>\n    InternalError.Algo.InvalidParameter: Range of max_tokens should be [1,\n    16384]\\\",\\\"type\\\":\\\"invalid_request_error\\\"},\\\"id\\\":\\\"chatcmpl-626508d4-02fe-9dc8-8a9d-7ffe\n    45244493\\\",\\\"request_id\\\":\\\"626508d4-02fe-9dc8-8a9d-7ffe45244493\\\"}\",\"type\":\"api_error\",\"co\n    de\":\"provider_response_error\"}}\n\n配置如下：\n\n{\n  \"Providers\": [\n    {\n      \"name\": \"dashscope\",\n      \"api_base_url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"deepseek-v3\",\n        \"deepseek-r1-0528\",\n        \"qwq-plus-latest\",\n        \"qwen-max-latest\",\n        \"qwen-plus-latest\",\n        \"qwen3-235b-a22b\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"dashscope,qwen-plus-latest\",\n    \"background\": \"dashscope,qwen-plus-latest\",\n    \"think\": \"dashscope,qwen-plus-latest\",\n    \"longContext\": \"dashscope,qwen-plus-latest\"\n  }\n}\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/116/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/115",
      "id": 3205628170,
      "node_id": "I_kwDON-_mZc6_EgEK",
      "number": 115,
      "title": "Problems running it",
      "user": {
        "login": "jay377",
        "id": 89018342,
        "node_id": "MDQ6VXNlcjg5MDE4MzQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/89018342?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jay377",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-07-05T21:13:34Z",
      "updated_at": "2025-07-16T01:46:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When i try run it now i get these errors:\n\n(base) blight@:~/projects/ytube$ ccr code\nService not running, starting service...\nService startup timeout, please manually run `ccr start` to start the service\n\n(base) blight@:~/projects/ytube$ ccr start\nEnter OPENAI_API_KEY:\n\nWhy is it asking for this api key, i thought it was depreciated? I have setup gemini in the config file.\n\nEven adding openai or gemini api to the box claude still says:\n\nMissing API key · Run /login\n\nHelp?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/115/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/113",
      "id": 3204919776,
      "node_id": "I_kwDON-_mZc6_BzHg",
      "number": 113,
      "title": "如果想使用原汁原味的 CC，应该如何配置这几个 Model",
      "user": {
        "login": "VMatrix1900",
        "id": 3964947,
        "node_id": "MDQ6VXNlcjM5NjQ5NDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3964947?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/VMatrix1900",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-05T13:06:05Z",
      "updated_at": "2025-07-06T10:24:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/113/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/112",
      "id": 3204418849,
      "node_id": "I_kwDON-_mZc6-_40h",
      "number": 112,
      "title": "错误",
      "user": {
        "login": "H7ang0",
        "id": 98449051,
        "node_id": "U_kgDOBd42mw",
        "avatar_url": "https://avatars.githubusercontent.com/u/98449051?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/H7ang0",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-07-05T06:17:29Z",
      "updated_at": "2025-07-13T17:50:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"692\" height=\"497\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/30ac5e61-6736-4d62-9ba3-dfbdb656242c\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/112/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/110",
      "id": 3201370713,
      "node_id": "I_kwDON-_mZc6-0QpZ",
      "number": 110,
      "title": "deepseek调用toolcall错误",
      "user": {
        "login": "chengccjjc",
        "id": 122184988,
        "node_id": "U_kgDOB0hlHA",
        "avatar_url": "https://avatars.githubusercontent.com/u/122184988?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chengccjjc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-07-04T05:08:57Z",
      "updated_at": "2025-07-16T08:47:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/a47d7af6-7ee9-4a9f-9d7f-26c91ab3c5dc)\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/110/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/104",
      "id": 3200399255,
      "node_id": "I_kwDON-_mZc6-wjeX",
      "number": 104,
      "title": "404 - provider_response_error",
      "user": {
        "login": "Superfishintights",
        "id": 5122089,
        "node_id": "MDQ6VXNlcjUxMjIwODk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5122089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Superfishintights",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 20,
      "created_at": "2025-07-03T19:12:16Z",
      "updated_at": "2025-11-29T12:46:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Apologies, this is certainly my error, but not sure how to fix it.\n\ngetting this when I run anything - says \"ideating\" for a couple seconds before the error:\n\n`API Error: 404 {\"error\":{\"message\":\"Error from provider:\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}`\n\nhere is my config (api key obfuscated)\n\n```{\n  \"LOG\": false,\n  \"OPENAI_API_KEY\": \"\",\n  \"OPENAI_BASE_URL\": \"\",\n  \"OPENAI_MODEL\": \"\",\n  \"Providers\": [\n    {\n      \"name\": \"gemini\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/models/\",\n      \"api_key\": \"blahblahiamamuppetblahblah\",\n      \"models\": [\n        \"gemini-2.5-pro\",\n        \"gemini-2.5-flash\",\n        \"gemini-2.5-flash-lite-preview-06-17\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"default\": \"gemini,gemini-2.5-pro\",\n    \"backgrund\": \"gemini,gemini-2.5-flash-lite-preview-06-17\",\n    \"think\": \"gemini,gemini-2.5-pro\",\n    \"longContext\": \"gemini,gemini-2.5-pro\"\n  }\n}```\n\nApologies for what will no doubt be a simple and stupid thing to report, but I've tried a few things and can't figure it out.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/104/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/101",
      "id": 3199677137,
      "node_id": "I_kwDON-_mZc6-tzLR",
      "number": 101,
      "title": "Failed to construct 'URL': Invalid URL",
      "user": {
        "login": "xiuxiuxius",
        "id": 89114157,
        "node_id": "MDQ6VXNlcjg5MTE0MTU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/89114157?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xiuxiuxius",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2025-07-03T14:53:08Z",
      "updated_at": "2025-07-27T12:55:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "###  报错信息：\n\n<img width=\"740\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1dc4f05f-b45f-4c96-a938-fe88a04c37d4\" />\n\n### claude code和claude code router版本信息：\n\n<img width=\"258\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0dbb0673-9871-4943-976f-42dcfea367bd\" />\n\n### 配置文件信息（这些base-url和api-key在cherry studio里都是正常使用的）：\n\n```\n{\n  \"Providers\": [\n    {\n      \"name\": \"openrouter\",\n      \"api_base_url\": \"https://openrouter.ai/api/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"google/gemini-2.5-pro-preview\",\n        \"anthropic/claude-sonnet-4\",\n        \"anthropic/claude-3.5-sonnet\",\n        \"anthropic/claude-3.7-sonnet:thinking\",\n        \"qwen/qwen-2.5-coder-32b-instruct:free\"\n      ]\n    },\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.deepseek.com/v1/chat/completions\",\n      \"api_key\": \"sk-\",\n      \"models\": [\"deepseek-chat\", \"deepseek-reasoner\"],\n      \"transformer\": {\n        \"use\": [\"deepseek\"],\n        \"deepseek-chat\": {\n          \"use\": [\"tooluse\"]\n        }\n      }\n    }\n  ],\n  \"Router\": {\n     \"default\": \"deepseek,deepseek-chat\",\n     \"background\": \"openrouter,qwen/qwen-2.5-coder-32b-instruct:free\",\n     \"think\": \"deepseek,deepseek-reasoner\",\n     \"longContext\": \"openrouter,google/gemini-2.5-pro-preview\"\n  },\n  \"LOG\":true\n}\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/101/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/100",
      "id": 3199670766,
      "node_id": "I_kwDON-_mZc6-txnu",
      "number": 100,
      "title": "Bypass router option for tools",
      "user": {
        "login": "barc593",
        "id": 64240677,
        "node_id": "MDQ6VXNlcjY0MjQwNjc3",
        "avatar_url": "https://avatars.githubusercontent.com/u/64240677?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/barc593",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-03T14:51:29Z",
      "updated_at": "2025-07-03T15:04:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm loving your solution BTW, still have some max left, and i'm thinking what I will miss.  (Im not a probtw, just very enthusiast)\n\nAnd its 2 things, \n\n- Web search\n- Image to text.  I like to get it in a loop show a picture, make playwright/pupeteer screenshot, test all views and compare to desired image/result. \n\nAnd I was thinking with a pro plan for claude, maybe we can get enough tokens for those eventual tasks.  Make it detect the tool, and go directly to the official claude pro subscription api. Or have it as a fallback.\n\nOr maybe I can make it make it make a script to request to an api, And save it as claude.md, would be cheaper probably. Or MCP \n\nWhat would you say the best solution could be? \n\nAlso being able to edit/transform the master prompt would be amazing!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/100/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/98",
      "id": 3199420068,
      "node_id": "I_kwDON-_mZc6-s0ak",
      "number": 98,
      "title": "API Error (500",
      "user": {
        "login": "zhajingwen",
        "id": 33952447,
        "node_id": "MDQ6VXNlcjMzOTUyNDQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/33952447?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhajingwen",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 22,
      "created_at": "2025-07-03T13:32:36Z",
      "updated_at": "2025-12-17T03:02:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'default')\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 1/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'default')\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 1 seconds… (attempt 2/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'default')\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 2 seconds… (attempt 3/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'default')\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 4 seconds… (attempt 4/10)\n  ⎿  API Error (500 {\"error\":{\"message\":\"Cannot read properties of undefined (reading 'default')\",\"type\":\"api_error\",\"code\":\"internal_error\"}}) · Retrying in 9 seconds… (attempt 5/10)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/98/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/96",
      "id": 3198448890,
      "node_id": "I_kwDON-_mZc6-pHT6",
      "number": 96,
      "title": "Supporting litellm as gemini provider",
      "user": {
        "login": "adrianlzt",
        "id": 3237784,
        "node_id": "MDQ6VXNlcjMyMzc3ODQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3237784?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adrianlzt",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-03T07:59:57Z",
      "updated_at": "2025-07-15T06:16:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi!\n\nI was trying to use ccr but I am having problems with my setup.\n\nI have a litellm proxy configured providing an openai compatible endpoint. In litellm proxy I have access to different models (gemini, openai, etc).\n\nWhen I try to use using the transformer \"gemini\", it tries to rewrite the URL, so it does not work.\nAnd if I try to use the transformer \"openai\" it does not work because of the cache:\n```\n        {\n          \"type\": \"text\",\n          \"text\": \"try\",\n          \"cache_control\": {\n            \"type\": \"ephemeral\"\n          }\n        }\n```\n\nAnd if I remove that, the tools format:\n```\ndata: {\"error\": {\"message\": \"litellm.BadRequestError: VertexAIException BadRequestError - b'{\\\\n  \\\"error\\\": {\\\\n    \\\"code\\\": 400,\\\\n    \\\"message\\\": \\\"* GenerateContentRequest.tools[0].function_declarations[12].parameters.properties[url].format: only \\\\'enum\\\\' and \\\\'date-time\\\\' are supported for STRING type\\\\\\\\n\\\",\\\\n    \\\"status\\\": \\\"INVALID_ARGUMENT\\\"\\\\n  }\\\\n}\\\\n'\", \"type\": null, \"param\": null, \"code\": \"400\"}}\n```\n\nAny pointers? Maybe I have to create a new transformer \"openai-compatible\" but with gemini format for tools?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/96/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/92",
      "id": 3197211480,
      "node_id": "I_kwDON-_mZc6-kZNY",
      "number": 92,
      "title": "no model works properly.",
      "user": {
        "login": "miladnoo",
        "id": 134808180,
        "node_id": "U_kgDOCAkCdA",
        "avatar_url": "https://avatars.githubusercontent.com/u/134808180?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/miladnoo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-02T21:18:26Z",
      "updated_at": "2025-07-02T22:11:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i have been using different models and trying openrouter and gemini but non of them work \n\n![Image](https://github.com/user-attachments/assets/60d31de8-b5f0-4ae2-aefa-baa35eaa72f3)\n\n![Image](https://github.com/user-attachments/assets/d542909f-7906-4ad9-8543-9f4d930726ba)\n\nit just does not accept it with any key or models.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/92/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/89",
      "id": 3193606117,
      "node_id": "I_kwDON-_mZc6-Wo_l",
      "number": 89,
      "title": "How to get google api to work in settings?",
      "user": {
        "login": "jay377",
        "id": 89018342,
        "node_id": "MDQ6VXNlcjg5MDE4MzQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/89018342?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jay377",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 15,
      "created_at": "2025-07-01T19:39:28Z",
      "updated_at": "2025-07-14T04:06:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Are these the correct settings to get gemini api to work so we can use free credits?\n\n    {\n      \"name\": \"google\",\n      \"api_base_url\": \"https://generativelanguage.googleapis.com/v1beta/openai/\",\n      \"api_key\": \"\",\n      \"models\": [\"gemini-2.5-pro\"]\n    },\n\nAnd then we do this correct?\n\n  ],\n  \"Router\": {\n    \"background\": \"openrouter,google/gemini-flash-1.5-8b\",\n    \"think\": \"google,google/gemini-2.5-pro\",\n    \"longContext\": \"google,gemini-2.5-pro\"\n  }\n\nThanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/89/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/86",
      "id": 3190298432,
      "node_id": "I_kwDON-_mZc6-KBdA",
      "number": 86,
      "title": "only first message works does not matter the model",
      "user": {
        "login": "miladnoo",
        "id": 134808180,
        "node_id": "U_kgDOCAkCdA",
        "avatar_url": "https://avatars.githubusercontent.com/u/134808180?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/miladnoo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-07-01T00:55:38Z",
      "updated_at": "2025-07-02T01:58:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i tried multiple different model providers but only first message works each time the rest uses claude 3.5 haiku and because no key it does not work and just waits there. \n\n![Image](https://github.com/user-attachments/assets/5475f0ec-5e99-4f48-a08a-dd28cc34c37c)\n\nUpdate :  it only works for \"HI\" and nothing else \n\n![Image](https://github.com/user-attachments/assets/a5458fa5-b112-441c-a9f7-aefe39012586)\n\nif you send any other message it will revet back to 3.5 haiku\n\njust when I said how are you  ? \n\n![Image](https://github.com/user-attachments/assets/b41878ca-eb98-4bce-be70-9b6459602b0c)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/86/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/84",
      "id": 3190141530,
      "node_id": "I_kwDON-_mZc6-JbJa",
      "number": 84,
      "title": "Support for configuring multiple keys for one provider.",
      "user": {
        "login": "gulubao",
        "id": 48795095,
        "node_id": "MDQ6VXNlcjQ4Nzk1MDk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/48795095?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gulubao",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-30T23:14:08Z",
      "updated_at": "2025-06-30T23:16:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Would it be possible to support configuring multiple keys for the same provider? \nSo that when one key exceeds its quota or times out, the system can automatically fall back to another available key.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/84/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/81",
      "id": 3188366971,
      "node_id": "I_kwDON-_mZc6-Cp57",
      "number": 81,
      "title": "[BUG] it says it only can do defensive security task",
      "user": {
        "login": "ZeroIDdev",
        "id": 115116337,
        "node_id": "U_kgDOBtyJMQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/115116337?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZeroIDdev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-30T12:49:31Z",
      "updated_at": "2025-07-16T22:05:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/6b1b0310-6d59-4357-9a28-cca17e01fd23)\n\nI'm using gemini-2.5-flash \n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/81/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/78",
      "id": 3186329590,
      "node_id": "I_kwDON-_mZc6964f2",
      "number": 78,
      "title": "未知的Bug，claudecode无法正常接受ccr的内容",
      "user": {
        "login": "Razewang",
        "id": 47569570,
        "node_id": "MDQ6VXNlcjQ3NTY5NTcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/47569570?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Razewang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-29T16:33:24Z",
      "updated_at": "2025-06-29T22:33:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/0ce9b347-ffa8-4abe-9d78-1776c268d179)\n在openrouter中，确实显示了我的调用，但是claudecode中不会有任何输出而超时，我怀疑是调用了错误的模型或者请求链接（正常的使用应该会先出现上万token的claudecode提示词），但是没有debug模式生成日志，我检查配置文件也找不到问题",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/78/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/76",
      "id": 3185668774,
      "node_id": "I_kwDON-_mZc694XKm",
      "number": 76,
      "title": "功能需求: 添加对 OpenAI Responses API 的支持",
      "user": {
        "login": "calloc134",
        "id": 115209243,
        "node_id": "U_kgDOBt30Gw",
        "avatar_url": "https://avatars.githubusercontent.com/u/115209243?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/calloc134",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-29T02:22:43Z",
      "updated_at": "2025-11-03T07:28:42Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## 🌠 需求描述\n\n我希望在 claude-code-router 中启用更强大的 OpenAI Responses API，从而能够使用以下工具：\n\n\n* **web\\_search\\_preview**（网页搜索）\n* **file\\_search**（文件搜索）\n* **MCP 服务器调用**\n\nhttps://platform.openai.com/docs/quickstart?api-mode=responses\nhttps://platform.openai.com/docs/api-reference/responses\n\n我主要使用 o4-mini，希望能够在启用上述搜索功能的 o4-mini 模型上进行编码，进一步增强在线搜索与文档检索能力。\nhttps://platform.openai.com/docs/guides/tools-web-search\n\n## 🌠 解决方案\n\n1. **API 调用方式变更**\n   将现有的\n\n   ```ts\n   openai.chat.completions.create(req.body)\n   ```\n\n   替换为\n\n   ```ts\n   client.responses.create({\n     model: \"o4-mini\",\n     input: prompt,\n     stream: true,\n     tools: [{ type: \"web_search_preview\" }, { type: \"file_search\" }, /* ... */],\n   });\n   ```\n2. **请求格式转换**\n\n   * `messages` → `input`\n   * 增加 `instructions` 参数\n   * 适配 `tools` 列表的传入格式\n3. **响应流处理改造**\n\n   * 现有的 `streamOpenAIResponse` 需支持 `response.output_text.delta`、`response.output_text.done` 事件\n   * 重写工具调用（tool\\_calls）和文本拼接逻辑\n\n## 🌠 补充信息\n\n* 详细参考（DeepWiki）：\n  [https://deepwiki.com/search/-openai-sdk-chatcompletionscre\\_d6ea605f-b6b5-4704-8fe4-c7f2b5d9c5e3](https://deepwiki.com/search/-openai-sdk-chatcompletionscre_d6ea605f-b6b5-4704-8fe4-c7f2b5d9c5e3)\n* 迁移成本估算：\n\n  * API 调用替换：0.5 天\n  * 流式处理重写：1–1.5 天\n  * 格式转换中间件调整：0.5–1 天\n* 技术风险：中等，需要验证新 API 的稳定性及现有插件兼容性",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/76/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/75",
      "id": 3185580232,
      "node_id": "I_kwDON-_mZc694BjI",
      "number": 75,
      "title": "Gemini Cli as provider support",
      "user": {
        "login": "ZeroIDdev",
        "id": 115116337,
        "node_id": "U_kgDOBtyJMQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/115116337?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZeroIDdev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-28T23:39:08Z",
      "updated_at": "2025-07-14T04:02:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/75/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/74",
      "id": 3182436684,
      "node_id": "I_kwDON-_mZc69sCFM",
      "number": 74,
      "title": "用中转商无法function call",
      "user": {
        "login": "Reekin",
        "id": 29672213,
        "node_id": "MDQ6VXNlcjI5NjcyMjEz",
        "avatar_url": "https://avatars.githubusercontent.com/u/29672213?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Reekin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-06-27T11:16:44Z",
      "updated_at": "2025-07-02T06:24:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "模型是sonnet-4和opus-4都试过，无法在本地进行任何文件操作（但它好像以为它成功了）\n平台是window下使用wsl2\n中转商是kksj，function_call能力是需要中转商作额外支持吗？\n\nterminal界面：\n```\n\n ※ Tip: Send messages to Claude while it works to steer Claude in real-time\n\n> 创建一个txt\n\n● I'll create a text file for you.\n\n（停在这里没下文了）\n```\n配置：\n```\n{\n  \"OPENAI_API_KEY\": \"sk-\",\n  \"OPENAI_BASE_URL\": \"https://api.kksj.org/v1\",\n  \"OPENAI_MODEL\": \"claude-sonnet-4-20250514\",\n  \"Providers\": [\n    {\n      \"name\": \"kksj\",\n      \"api_base_url\": \"https://api.kksj.org/v1\",\n      \"api_key\": \"sk-\",\n      \"models\": [\n        \"gemini-2.5-flash-lite-preview-06-17-thinking\",\n        \"claude-opus-4-20250514-thinking\",\n        \"claude-sonnet-4-20250514\"\n      ]\n    }\n  ],\n  \"Router\": {\n    \"background\": \"gemini-2.5-flash-lite-preview-06-17-thinking\",\n    \"think\": \"claude-opus-4-20250514-thinking\",\n    \"longContext\": \"claude-sonnet-4-20250514\"\n  },\n  \"LOG\":true\n}\n```\n\nLog：\n\n```\n[2025-06-27T11:05:08.204Z] body:  {\"model\":\"claude-sonnet-4-20250514\",\"messages\":[{\"role\":\"system\",\"content\":\"You are Claude Code, Anthropic's official CLI for Claude.\"},{\"role\":\"system\",\"content\":\"\\nYou are an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.\\n\\nIMPORTANT: Assist with defensive security tasks only. Refuse to create, modify, or improve code that may be used maliciously. Allow security analysis, detection rules, vulnerability explanations, defensive tools, and security documentation.\\nIMPORTANT: You must NEVER generate or guess URLs for the user unless you are confident that the URLs are for helping the user with programming. You may use URLs provided by the user in their messages or local files.\\n\\nIf the user asks for help or wants to give feedback inform them of the following: \\n- /help: Get help with using Claude Code\\n- To give feedback, users should report the issue at https://github.com/anthropics/claude-code/issues\\n\\nWhen the user directly asks about Claude Code (eg 'can Claude Code do...', 'does Claude Code have...') or asks in second person (eg 'are you able...', 'can you do...'), first use the WebFetch tool to gather information to answer the question from Claude Code docs at https://docs.anthropic.com/en/docs/claude-code.\\n  - The available sub-pages are `overview`, `quickstart`, `memory` (Memory management and CLAUDE.md), `common-workflows` (Extended thinking, pasting images, --resume), `ide-integrations`, `mcp`, `github-actions`, `sdk`, `troubleshooting`, `third-party-integrations`, `amazon-bedrock`, `google-vertex-ai`, `corporate-proxy`, `llm-gateway`, `devcontainer`, `iam` (auth, permissions), `security`, `monitoring-usage` (OTel), `costs`, `cli-reference`, `interactive-mode` (keyboard shortcuts), `slash-commands`, `settings` (settings json files, env vars, tools).\\n  - Example: https://docs.anthropic.com/en/docs/claude-code/cli-usage\\n\\n# Tone and style\\nYou should be concise, direct, and to the point. When you run a non-trivial bash command, you should explain what the command does and why you are running it, to make sure the user understands what you are doing (this is especially important when you are running a command that will make changes to the user's system).\\nRemember that your output will be displayed on a command line interface. Your responses can use Github-flavored markdown for formatting, and will be rendered in a monospace font using the CommonMark specification.\\nOutput text to communicate with the user; all text you output outside of tool use is displayed to the user. Only use tools to complete tasks. Never use tools like Bash or code comments as means to communicate with the user during the session.\\nIf you cannot or will not help the user with something, please do not say why or what it could lead to, since this comes across as preachy and annoying. Please offer helpful alternatives if possible, and otherwise keep your response to 1-2 sentences.\\nOnly use emojis if the user explicitly requests it. Avoid using emojis in all communication unless asked.\\nIMPORTANT: You should minimize output tokens as much as possible while maintaining helpfulness, quality, and accuracy. Only address the specific query or task at hand, avoiding tangential information unless absolutely critical for completing the request. If you can answer in 1-3 sentences or a short paragraph, please do.\\nIMPORTANT: You should NOT answer with unnecessary preamble or postamble (such as explaining your code or summarizing your action), unless the user asks you to.\\nIMPORTANT: Keep your responses short, since they will be displayed on a command line interface. You MUST answer concisely with fewer than 4 lines (not including tool use or code generation), unless user asks for detail. Answer the user's question directly, without elaboration, explanation, or details. One word answers are best. Avoid introductions, conclusions, and explanations. You MUST avoid text before/after your response, such as \\\"The answer is <answer>.\\\", \\\"Here is the content of the file...\\\" or \\\"Based on the information provided, the answer is...\\\" or \\\"Here is what I will do next...\\\". Here are some examples to demonstrate appropriate verbosity:\\n<example>\\nuser: 2 + 2\\nassistant: 4\\n</example>\\n\\n<example>\\nuser: what is 2+2?\\nassistant: 4\\n</example>\\n\\n<example>\\nuser: is 11 a prime number?\\nassistant: Yes\\n</example>\\n\\n<example>\\nuser: what command should I run to list files in the current directory?\\nassistant: ls\\n</example>\\n\\n<example>\\nuser: what command should I run to watch files in the current directory?\\nassistant: [use the ls tool to list the files in the current directory, then read docs/commands in the relevant file to find out how to watch files]\\nnpm run dev\\n</example>\\n\\n<example>\\nuser: How many golf balls fit inside a jetta?\\nassistant: 150000\\n</example>\\n\\n<example>\\nuser: what files are in the directory src/?\\nassistant: [runs ls and sees foo.c, bar.c, baz.c]\\nuser: which file contains the implementation of foo?\\nassistant: src/foo.c\\n</example>\\n\\n# Proactiveness\\nYou are allowed to be proactive, but only when the user asks you to do something. You should strive to strike a balance between:\\n1. Doing the right thing when asked, including taking actions and follow-up actions\\n2. Not surprising the user with actions you take without asking\\nFor example, if the user asks you how to approach something, you should do your best to answer their question first, and not immediately jump into taking actions.\\n3. Do not add additional code explanation summary unless requested by the user. After working on a file, just stop, rather than providing an explanation of what you did.\\n\\n# Following conventions\\nWhen making changes to files, first understand the file's code conventions. Mimic code style, use existing libraries and utilities, and follow existing patterns.\\n- NEVER assume that a given library is available, even if it is well known. Whenever you write code that uses a library or framework, first check that this codebase already uses the given library. For example, you might look at neighboring files, or check the package.json (or cargo.toml, and so on depending on the language).\\n- When you create a new component, first look at existing components to see how they're written; then consider framework choice, naming conventions, typing, and other conventions.\\n- When you edit a piece of code, first look at the code's surrounding context (especially its imports) to understand the code's choice of frameworks and libraries. Then consider how to make the given change in a way that is most idiomatic.\\n- Always follow security best practices. Never introduce code that exposes or logs secrets and keys. Never commit secrets or keys to the repository.\\n\\n# Code style\\n- IMPORTANT: DO NOT ADD ***ANY*** COMMENTS unless asked\\n\\n\\n# Task Management\\nYou have access to the TodoWrite and TodoRead tools to help you manage and plan tasks. Use these tools VERY frequently to ensure that you are tracking your tasks and giving the user visibility into your progress.\\nThese tools are also EXTREMELY helpful for planning tasks, and for breaking down larger complex tasks into smaller steps. If you do not use this tool when planning, you may forget to do important tasks - and that is unacceptable.\\n\\nIt is critical that you mark todos as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.\\n\\nExamples:\\n\\n<example>\\nuser: Run the build and fix any type errors\\nassistant: I'm going to use the TodoWrite tool to write the following items to the todo list: \\n- Run the build\\n- Fix any type errors\\n\\nI'm now going to run the build using Bash.\\n\\nLooks like I found 10 type errors. I'm going to use the TodoWrite tool to write 10 items to the todo list.\\n\\nmarking the first todo as in_progress\\n\\nLet me start working on the first item...\\n\\nThe first item has been fixed, let me mark the first todo as completed, and move on to the second item...\\n..\\n..\\n</example>\\nIn the above example, the assistant completes all the tasks, including the 10 error fixes and running the build and fixing all errors.\\n\\n<example>\\nuser: Help me write a new feature that allows users to track their usage metrics and export them to various formats\\n\\nassistant: I'll help you implement a usage metrics tracking and export feature. Let me first use the TodoWrite tool to plan this task.\\nAdding the following todos to the todo list:\\n1. Research existing metrics tracking in the codebase\\n2. Design the metrics collection system\\n3. Implement core metrics tracking functionality\\n4. Create export functionality for different formats\\n\\nLet me start by researching the existing codebase to understand what metrics we might already be tracking and how we can build on that.\\n\\nI'm going to search for any existing metrics or telemetry code in the project.\\n\\nI've found some existing telemetry code. Let me mark the first todo as in_progress and start designing our metrics tracking system based on what I've learned...\\n\\n[Assistant continues implementing the feature step by step, marking todos as in_progress and completed as they go]\\n</example>\\n\\n\\nfalse\\n\\n# Doing tasks\\nThe user will primarily request you perform software engineering tasks. This includes solving bugs, adding new functionality, refactoring code, explaining code, and more. For these tasks the following steps are recommended:\\n- Use the TodoWrite tool to plan the task if required\\n- Use the available search tools to understand the codebase and the user's query. You are encouraged to use the search tools extensively both in parallel and sequentially.\\n- Implement the solution using all tools available to you\\n- Verify the solution if possible with tests. NEVER assume specific test framework or test script. Check the README or search codebase to determine the testing approach.\\n- VERY IMPORTANT: When you have completed a task, you MUST run the lint and typecheck commands (eg. npm run lint, npm run typecheck, ruff, etc.) with Bash if they were provided to you to ensure your code is correct. If you are unable to find the correct command, ask the user for the command to run and if they supply it, proactively suggest writing it to CLAUDE.md so that you will know to run it next time.\\nNEVER commit changes unless the user explicitly asks you to. It is VERY IMPORTANT to only commit when explicitly asked, otherwise the user will feel that you are being too proactive.\\n\\n- Tool results and user messages may include <system-reminder> tags. <system-reminder> tags contain useful information and reminders. They are NOT part of the user's provided input or the tool result.\\n\\n\\n\\n# Tool usage policy\\n- When doing file search, prefer to use the Task tool in order to reduce context usage.\\n- You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. When making multiple bash tool calls, you MUST send a single message with multiple tools calls to run the calls in parallel. For example, if you need to run \\\"git status\\\" and \\\"git diff\\\", send a single message with two tool calls to run the calls in parallel.\\n\\nYou MUST answer concisely with fewer than 4 lines of text (not including tool use or code generation), unless user asks for detail.\\n\\n\\nHere is useful information about the environment you are running in:\\n<env>\\nWorking directory: /mnt/d/gpt-projects/vscode-mcp-extension\\nIs directory a git repo: No\\nPlatform: linux\\nOS Version: Linux 5.15.153.1-microsoft-standard-WSL2\\nToday's date: 2025-06-27\\n</env>\\nYou are powered by the model named Sonnet 4. The exact model ID is claude-sonnet-4-20250514.\\n\\n\\nIMPORTANT: Assist with defensive security tasks only. Refuse to create, modify, or improve code that may be used maliciously. Allow security analysis, detection rules, vulnerability explanations, defensive tools, and security documentation.\\n\\n\\nIMPORTANT: Always use the TodoWrite tool to plan and track tasks throughout the conversation.\\n\\n\\n# Code References\\n\\nWhen referencing specific functions or pieces of code include the pattern `file_path:line_number` to allow the user to easily navigate to the source code location.\\n\\n<example>\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.ts:712.\\n</example>\\n\\n\"},{\"role\":\"user\",\"content\":\"<system-reminder>\\nAs you answer the user's questions, you can use the following context:\\n# important-instruction-reminders\\nDo what has been asked; nothing more, nothing less.\\nNEVER create files unless they're absolutely necessary for achieving your goal.\\nALWAYS prefer editing an existing file to creating a new one.\\nNEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.\\n\\n      \\n      IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context or otherwise consider it in your response unless it is highly relevant to your task. Most of the time, it is not relevant.\\n</system-reminder>\\n\\\\n创建一个txt\\\\n<system-reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware. If you are working on tasks that would benefit from a todo list please use the TodoWrite tool to create one. If not, please feel free to ignore. Again do not mention this message to the user.</system-reminder>\\\\nThe user opened the file Anthropic.claude-code.Claude Code in the IDE. This may or may not be related to the current task.\\\\n\"}],\"temperature\":1,\"stream\":true,\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"Task\",\"description\":\"Launch a new agent that has access to the following tools: Bash, Glob, Grep, LS, exit_plan_mode, Read, Edit, MultiEdit, Write, NotebookRead, NotebookEdit, WebFetch, TodoRead, TodoWrite, WebSearch, mcp__ide__getDiagnostics, mcp__ide__executeCode. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries, use the Agent tool to perform the search for you.\\n\\nWhen to use the Agent tool:\\n- If you are searching for a keyword like \\\"config\\\" or \\\"logger\\\", or for questions like \\\"which file does X?\\\", the Agent tool is strongly recommended\\n\\nWhen NOT to use the Agent tool:\\n- If you want to read a specific file path, use the Read or Glob tool instead of the Agent tool, to find the match more quickly\\n- If you are searching for a specific class definition like \\\"class Foo\\\", use the Glob tool instead, to find the match more quickly\\n- If you are searching for code within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly\\n- Writing code and running bash commands (use other tools for that)\\n- Other tasks that are not related to searching for a keyword or file\\n\\nUsage notes:\\n1. Launch multiple agents concurrently whenever possible, to maximize performance; to do that, use a single message with multiple tool uses\\n2. When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.\\n3. Each agent invocation is stateless. You will not be able to send additional messages to the agent, nor will the agent be able to communicate with you outside of its final report. Therefore, your prompt should contain a highly detailed task description for the agent to perform autonomously and you should specify exactly what information the agent should return back to you in its final and only message to you.\\n4. The agent's outputs should generally be trusted\\n5. Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent\",\"parameters\":{\"type\":\"object\",\"properties\":{\"description\":{\"type\":\"string\",\"description\":\"A short (3-5 word) description of the task\"},\"prompt\":{\"type\":\"string\",\"description\":\"The task for the agent to perform\"}},\"required\":[\"description\",\"prompt\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"Bash\",\"description\":\"Executes a given bash command in a persistent shell session with optional timeout, ensuring proper handling and security measures.\\n\\nBefore executing the command, please follow these steps:\\n\\n1. Directory Verification:\\n   - If the command will create new directories or files, first use the LS tool to verify the parent directory exists and is the correct location\\n   - For example, before running \\\"mkdir foo/bar\\\", first use LS to check that \\\"foo\\\" exists and is the intended parent directory\\n\\n2. Command Execution:\\n   - Always quote file paths that contain spaces with double quotes (e.g., cd \\\"path with spaces/file.txt\\\")\\n   - Examples of proper quoting:\\n     - cd \\\"/Users/name/My Documents\\\" (correct)\\n     - cd /Users/name/My Documents (incorrect - will fail)\\n     - python \\\"/path/with spaces/script.py\\\" (correct)\\n     - python /path/with spaces/script.py (incorrect - will fail)\\n   - After ensuring proper quoting, execute the command.\\n   - Capture the output of the command.\\n\\nUsage notes:\\n  - The command argument is required.\\n  - You can specify an optional timeout in milliseconds (up to 600000ms / 10 minutes). If not specified, commands will timeout after 120000ms (2 minutes).\\n  - It is very helpful if you write a clear, concise description of what this command does in 5-10 words.\\n  - If the output exceeds 30000 characters, output will be truncated before being returned to you.\\n  - VERY IMPORTANT: You MUST avoid using search commands like `find` and `grep`. Instead use Grep, Glob, or Task to search. You MUST avoid read tools like `cat`, `head`, `tail`, and `ls`, and use Read and LS to read files.\\n - If you _still_ need to run `grep`, STOP. ALWAYS USE ripgrep at `rg` first, which all ${PRODUCT_NAME} users have pre-installed.\\n  - When issuing multiple commands, use the ';' or '&&' operator to separate them. DO NOT use newlines (newlines are ok in quoted strings).\\n  - Try to maintain your current working directory throughout the session by using absolute paths and avoiding usage of `cd`. You may use `cd` if the User explicitly requests it.\\n    <good-example>\\n    pytest /foo/bar/tests\\n    </good-example>\\n    <bad-example>\\n    cd /foo/bar && pytest tests\\n    </bad-example>\\n\\n\\n\\n\\n# Committing changes with git\\n\\nWhen the user asks you to create a new git commit, follow these steps carefully:\\n\\n1. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following bash commands in parallel, each using the Bash tool:\\n  - Run a git status command to see all untracked files.\\n  - Run a git diff command to see both staged and unstaged changes that will be committed.\\n  - Run a git log command to see recent commit messages, so that you can follow this repository's commit message style.\\n2. Analyze all staged changes (both previously staged and newly added) and draft a commit message:\\n  - Summarize the nature of the changes (eg. new feature, enhancement to an existing feature, bug fix, refactoring, test, docs, etc.). Ensure the message accurately reflects the changes and their purpose (i.e. \\\"add\\\" means a wholly new feature, \\\"update\\\" means an enhancement to an existing feature, \\\"fix\\\" means a bug fix, etc.).\\n  - Check for any sensitive information that shouldn't be committed\\n  - Draft a concise (1-2 sentences) commit message that focuses on the \\\"why\\\" rather than the \\\"what\\\"\\n  - Ensure it accurately reflects the changes and their purpose\\n3. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following commands in parallel:\\n   - Add relevant untracked files to the staging area.\\n   - Create the commit with a message ending with:\\n   🤖 Generated with [Claude Code](https://claude.ai/code)\\n\\n   Co-Authored-By: Claude <noreply@anthropic.com>\\n   - Run git status to make sure the commit succeeded.\\n4. If the commit fails due to pre-commit hook changes, retry the commit ONCE to include these automated changes. If it fails again, it usually means a pre-commit hook is preventing the commit. If the commit succeeds but you notice that files were modified by the pre-commit hook, you MUST amend your commit to include them.\\n\\nImportant notes:\\n- NEVER update the git config\\n- NEVER run additional commands to read or explore code, besides git bash commands\\n- NEVER use the TodoWrite or Task tools\\n- DO NOT push to the remote repository unless the user explicitly asks you to do so\\n- IMPORTANT: Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported.\\n- If there are no changes to commit (i.e., no untracked files and no modifications), do not create an empty commit\\n- In order to ensure good formatting, ALWAYS pass the commit message via a HEREDOC, a la this example:\\n<example>\\ngit commit -m \\\"$(cat <<'EOF'\\n   Commit message here.\\n\\n   🤖 Generated with [Claude Code](https://claude.ai/code)\\n\\n   Co-Authored-By: Claude <noreply@anthropic.com>\\n   EOF\\n   )\\\"\\n</example>\\n\\n# Creating pull requests\\nUse the gh command via the Bash tool for ALL GitHub-related tasks including working with issues, pull requests, checks, and releases. If given a Github URL use the gh command to get the information needed.\\n\\nIMPORTANT: When the user asks you to create a pull request, follow these steps carefully:\\n\\n1. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following bash commands in parallel using the Bash tool, in order to understand the current state of the branch since it diverged from the main branch:\\n   - Run a git status command to see all untracked files\\n   - Run a git diff command to see both staged and unstaged changes that will be committed\\n   - Check if the current branch tracks a remote branch and is up to date with the remote, so you know if you need to push to the remote\\n   - Run a git log command and `git diff [base-branch]...HEAD` to understand the full commit history for the current branch (from the time it diverged from the base branch)\\n2. Analyze all changes that will be included in the pull request, making sure to look at all relevant commits (NOT just the latest commit, but ALL commits that will be included in the pull request!!!), and draft a pull request summary\\n3. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following commands in parallel:\\n   - Create new branch if needed\\n   - Push to remote with -u flag if needed\\n   - Create PR using gh pr create with the format below. Use a HEREDOC to pass the body to ensure correct formatting.\\n<example>\\ngh pr create --title \\\"the pr title\\\" --body \\\"$(cat <<'EOF'\\n## Summary\\n<1-3 bullet points>\\n\\n## Test plan\\n[Checklist of TODOs for testing the pull request...]\\n\\n🤖 Generated with [Claude Code](https://claude.ai/code)\\nEOF\\n)\\\"\\n</example>\\n\\nImportant:\\n- NEVER update the git config\\n- DO NOT use the TodoWrite or Task tools\\n- Return the PR URL when you're done, so the user can see it\\n\\n# Other common operations\\n- View comments on a Github PR: gh api repos/foo/bar/pulls/123/comments\",\"parameters\":{\"type\":\"object\",\"properties\":{\"command\":{\"type\":\"string\",\"description\":\"The command to execute\"},\"timeout\":{\"type\":\"number\",\"description\":\"Optional timeout in milliseconds (max 600000)\"},\"description\":{\"type\":\"string\",\"description\":\" Clear, concise description of what this command does in 5-10 words. Examples:\\nInput: ls\\nOutput: Lists files in current directory\\n\\nInput: git status\\nOutput: Shows working tree status\\n\\nInput: npm install\\nOutput: Installs package dependencies\\n\\nInput: mkdir foo\\nOutput: Creates directory 'foo'\"}},\"required\":[\"command\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"Glob\",\"description\":\"- Fast file pattern matching tool that works with any codebase size\\n- Supports glob patterns like \\\"**/*.js\\\" or \\\"src/**/*.ts\\\"\\n- Returns matching file paths sorted by modification time\\n- Use this tool when you need to find files by name patterns\\n- When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead\\n- You have the capability to call multiple tools in a single response. It is always better to speculatively perform multiple searches as a batch that are potentially useful.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"pattern\":{\"type\":\"string\",\"description\":\"The glob pattern to match files against\"},\"path\":{\"type\":\"string\",\"description\":\"The directory to search in. If not specified, the current working directory will be used. IMPORTANT: Omit this field to use the default directory. DO NOT enter \\\"undefined\\\" or \\\"null\\\" - simply omit it for the default behavior. Must be a valid directory path if provided.\"}},\"required\":[\"pattern\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"Grep\",\"description\":\"\\n- Fast content search tool that works with any codebase size\\n- Searches file contents using regular expressions\\n- Supports full regex syntax (eg. \\\"log.*Error\\\", \\\"function\\\\s+\\\\w+\\\", etc.)\\n- Filter files by pattern with the include parameter (eg. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\\n- Returns file paths with at least one match sorted by modification time\\n- Use this tool when you need to find files containing specific patterns\\n- If you need to identify/count the number of matches within files, use the Bash tool with `rg` (ripgrep) directly. Do NOT use `grep`.\\n- When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead\\n\",\"parameters\":{\"type\":\"object\",\"properties\":{\"pattern\":{\"type\":\"string\",\"description\":\"The regular expression pattern to search for in file contents\"},\"path\":{\"type\":\"string\",\"description\":\"The directory to search in. Defaults to the current working directory.\"},\"include\":{\"type\":\"string\",\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\"}},\"required\":[\"pattern\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"LS\",\"description\":\"Lists files and directories in a given path. The path parameter must be an absolute path, not a relative path. You can optionally provide an array of glob patterns to ignore with the ignore parameter. You should generally prefer the Glob and Grep tools, if you know which directories to search.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\",\"description\":\"The absolute path to the directory to list (must be absolute, not relative)\"},\"ignore\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"List of glob patterns to ignore\"}},\"required\":[\"path\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"exit_plan_mode\",\"description\":\"Use this tool when you are in plan mode and have finished presenting your plan and are ready to code. This will prompt the user to exit plan mode. \\nIMPORTANT: Only use this tool when the task requires planning the implementation steps of a task that requires writing code. For research tasks where you're gathering information, searching files, reading files or in general trying to understand the codebase - do NOT use this tool.\\n\\nEg. \\n1. Initial task: \\\"Search for and understand the implementation of vim mode in the codebase\\\" - Do not use the exit plan mode tool because you are not planning the implementation steps of a task.\\n2. Initial task: \\\"Help me implement yank mode for vim\\\" - Use the exit plan mode tool after you have finished planning the implementation steps of the task.\\n\",\"parameters\":{\"type\":\"object\",\"properties\":{\"plan\":{\"type\":\"string\",\"description\":\"The plan you came up with, that you want to run by the user for approval. Supports markdown. The plan should be pretty concise.\"}},\"required\":[\"plan\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"Read\",\"description\":\"Reads a file from the local filesystem. You can access any file directly by using this tool.\\nAssume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid. It is okay to read a file that does not exist; an error will be returned.\\n\\nUsage:\\n- The file_path parameter must be an absolute path, not a relative path\\n- By default, it reads up to 2000 lines starting from the beginning of the file\\n- You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters\\n- Any lines longer than 2000 characters will be truncated\\n- Results are returned using cat -n format, with line numbers starting at 1\\n- This tool allows Claude Code to read images (eg PNG, JPG, etc). When reading an image file the contents are presented visually as Claude Code is a multimodal LLM.\\n- For Jupyter notebooks (.ipynb files), use the NotebookRead instead\\n- You have the capability to call multiple tools in a single response. It is always better to speculatively read multiple files as a batch that are potentially useful. \\n- You will regularly be asked to read screenshots. If the user provides a path to a screenshot ALWAYS use this tool to view the file at the path. This tool will work with all temporary file paths like /var/folders/123/abc/T/TemporaryItems/NSIRD_screencaptureui_ZfB1tD/Screenshot.png\\n- If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\",\"description\":\"The absolute path to the file to read\"},\"offset\":{\"type\":\"number\",\"description\":\"The line number to start reading from. Only provide if the file is too large to read at once\"},\"limit\":{\"type\":\"number\",\"description\":\"The number of lines to read. Only provide if the file is too large to read at once.\"}},\"required\":[\"file_path\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"Edit\",\"description\":\"Performs exact string replacements in files. \\n\\nUsage:\\n- You must use your `Read` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file. \\n- When editing text from Read tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: spaces + line number + tab. Everything after that tab is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.\\n- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\\n- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.\\n- The edit will FAIL if `old_string` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use `replace_all` to change every instance of `old_string`. \\n- Use `replace_all` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\",\"description\":\"The absolute path to the file to modify\"},\"old_string\":{\"type\":\"string\",\"description\":\"The text to replace\"},\"new_string\":{\"type\":\"string\",\"description\":\"The text to replace it with (must be different from old_string)\"},\"replace_all\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Replace all occurences of old_string (default false)\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"MultiEdit\",\"description\":\"This is a tool for making multiple edits to a single file in one operation. It is built on top of the Edit tool and allows you to perform multiple find-and-replace operations efficiently. Prefer this tool over the Edit tool when you need to make multiple edits to the same file.\\n\\nBefore using this tool:\\n\\n1. Use the Read tool to understand the file's contents and context\\n2. Verify the directory path is correct\\n\\nTo make multiple file edits, provide the following:\\n1. file_path: The absolute path to the file to modify (must be absolute, not relative)\\n2. edits: An array of edit operations to perform, where each edit contains:\\n   - old_string: The text to replace (must match the file contents exactly, including all whitespace and indentation)\\n   - new_string: The edited text to replace the old_string\\n   - replace_all: Replace all occurences of old_string. This parameter is optional and defaults to false.\\n\\nIMPORTANT:\\n- All edits are applied in sequence, in the order they are provided\\n- Each edit operates on the result of the previous edit\\n- All edits must be valid for the operation to succeed - if any edit fails, none will be applied\\n- This tool is ideal when you need to make several changes to different parts of the same file\\n- For Jupyter notebooks (.ipynb files), use the NotebookEdit instead\\n\\nCRITICAL REQUIREMENTS:\\n1. All edits follow the same requirements as the single Edit tool\\n2. The edits are atomic - either all succeed or none are applied\\n3. Plan your edits carefully to avoid conflicts between sequential operations\\n\\nWARNING:\\n- The tool will fail if edits.old_string doesn't match the file contents exactly (including whitespace)\\n- The tool will fail if edits.old_string and edits.new_string are the same\\n- Since edits are applied in sequence, ensure that earlier edits don't affect the text that later edits are trying to find\\n\\nWhen making edits:\\n- Ensure all edits result in idiomatic, correct code\\n- Do not leave the code in a broken state\\n- Always use absolute file paths (starting with /)\\n- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.\\n- Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.\\n\\nIf you want to create a new file, use:\\n- A new file path, including dir name if needed\\n- First edit: empty old_string and the new file's contents as new_string\\n- Subsequent edits: normal edit operations on the created content\",\"parameters\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\",\"description\":\"The absolute path to the file to modify\"},\"edits\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"old_string\":{\"type\":\"string\",\"description\":\"The text to replace\"},\"new_string\":{\"type\":\"string\",\"description\":\"The text to replace it with\"},\"replace_all\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Replace all occurences of old_string (default false).\"}},\"required\":[\"old_string\",\"new_string\"],\"additionalProperties\":false},\"minItems\":1,\"description\":\"Array of edit operations to perform sequentially on the file\"}},\"required\":[\"file_path\",\"edits\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"Write\",\"description\":\"Writes a file to the local filesystem.\\n\\nUsage:\\n- This tool will overwrite the existing file if there is one at the provided path.\\n- If this is an existing file, you MUST use the Read tool first to read the file's contents. This tool will fail if you did not read the file first.\\n- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\\n- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.\\n- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\",\"description\":\"The absolute path to the file to write (must be absolute, not relative)\"},\"content\":{\"type\":\"string\",\"description\":\"The content to write to the file\"}},\"required\":[\"file_path\",\"content\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"NotebookRead\",\"description\":\"Reads a Jupyter notebook (.ipynb file) and returns all of the cells with their outputs. Jupyter notebooks are interactive documents that combine code, text, and visualizations, commonly used for data analysis and scientific computing. The notebook_path parameter must be an absolute path, not a relative path.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"notebook_path\":{\"type\":\"string\",\"description\":\"The absolute path to the Jupyter notebook file to read (must be absolute, not relative)\"},\"cell_id\":{\"type\":\"string\",\"description\":\"The ID of a specific cell to read. If not provided, all cells will be read.\"}},\"required\":[\"notebook_path\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"NotebookEdit\",\"description\":\"Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source. Jupyter notebooks are interactive documents that combine code, text, and visualizations, commonly used for data analysis and scientific computing. The notebook_path parameter must be an absolute path, not a relative path. The cell_number is 0-indexed. Use edit_mode=insert to add a new cell at the index specified by cell_number. Use edit_mode=delete to delete the cell at the index specified by cell_number.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"notebook_path\":{\"type\":\"string\",\"description\":\"The absolute path to the Jupyter notebook file to edit (must be absolute, not relative)\"},\"cell_id\":{\"type\":\"string\",\"description\":\"The ID of the cell to edit. When inserting a new cell, the new cell will be inserted after the cell with this ID, or at the beginning if not specified.\"},\"new_source\":{\"type\":\"string\",\"description\":\"The new source for the cell\"},\"cell_type\":{\"type\":\"string\",\"enum\":[\"code\",\"markdown\"],\"description\":\"The type of the cell (code or markdown). If not specified, it defaults to the current cell type. If using edit_mode=insert, this is required.\"},\"edit_mode\":{\"type\":\"string\",\"enum\":[\"replace\",\"insert\",\"delete\"],\"description\":\"The type of edit to make (replace, insert, delete). Defaults to replace.\"}},\"required\":[\"notebook_path\",\"new_source\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"WebFetch\",\"description\":\"\\n- Fetches content from a specified URL and processes it using an AI model\\n- Takes a URL and a prompt as input\\n- Fetches the URL content, converts HTML to markdown\\n- Processes the content with the prompt using a small, fast model\\n- Returns the model's response about the content\\n- Use this tool when you need to retrieve and analyze web content\\n\\nUsage notes:\\n  - IMPORTANT: If an MCP-provided web fetch tool is available, prefer using that tool instead of this one, as it may have fewer restrictions. All MCP-provided tools start with \\\"mcp__\\\".\\n  - The URL must be a fully-formed valid URL\\n  - HTTP URLs will be automatically upgraded to HTTPS\\n  - The prompt should describe what information you want to extract from the page\\n  - This tool is read-only and does not modify any files\\n  - Results may be summarized if the content is very large\\n  - Includes a self-cleaning 15-minute cache for faster responses when repeatedly accessing the same URL\\n\",\"parameters\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"format\":\"uri\",\"description\":\"The URL to fetch content from\"},\"prompt\":{\"type\":\"string\",\"description\":\"The prompt to run on the fetched content\"}},\"required\":[\"url\",\"prompt\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"TodoRead\",\"description\":\"Use this tool to read the current to-do list for the session. This tool should be used proactively and frequently to ensure that you are aware of\\nthe status of the current task list. You should make use of this tool as often as possible, especially in the following situations:\\n- At the beginning of conversations to see what's pending\\n- Before starting new tasks to prioritize work\\n- When the user asks about previous tasks or plans\\n- Whenever you're uncertain about what to do next\\n- After completing tasks to update your understanding of remaining work\\n- After every few messages to ensure you're on track\\n\\nUsage:\\n- This tool takes in no parameters. So leave the input blank or empty. DO NOT include a dummy object, placeholder string or a key like \\\"input\\\" or \\\"empty\\\". LEAVE IT BLANK.\\n- Returns a list of todo items with their status, priority, and content\\n- Use this information to track progress and plan next steps\\n- If no todos exist yet, an empty list will be returned\",\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":true,\"description\":\"No input is required, leave this field blank. NOTE that we do not require a dummy object, placeholder string or a key like \\\"input\\\" or \\\"empty\\\". LEAVE IT BLANK.\",\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"TodoWrite\",\"description\":\"Use this tool to create and manage a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user.\\nIt also helps the user understand the progress of the task and overall progress of their requests.\\n\\n## When to Use This Tool\\nUse this tool proactively in these scenarios:\\n\\n1. Complex multi-step tasks - When a task requires 3 or more distinct steps or actions\\n2. Non-trivial and complex tasks - Tasks that require careful planning or multiple operations\\n3. User explicitly requests todo list - When the user directly asks you to use the todo list\\n4. User provides multiple tasks - When users provide a list of things to be done (numbered or comma-separated)\\n5. After receiving new instructions - Immediately capture user requirements as todos\\n6. When you start working on a task - Mark it as in_progress BEFORE beginning work. Ideally you should only have one todo as in_progress at a time\\n7. After completing a task - Mark it as completed and add any new follow-up tasks discovered during implementation\\n\\n## When NOT to Use This Tool\\n\\nSkip using this tool when:\\n1. There is only a single, straightforward task\\n2. The task is trivial and tracking it provides no organizational benefit\\n3. The task can be completed in less than 3 trivial steps\\n4. The task is purely conversational or informational\\n\\nNOTE that you should not use this tool if there is only one trivial task to do. In this case you are better off just doing the task directly.\\n\\n## Examples of When to Use the Todo List\\n\\n<example>\\nUser: I want to add a dark mode toggle to the application settings. Make sure you run the tests and build when you're done!\\nAssistant: I'll help add a dark mode toggle to your application settings. Let me create a todo list to track this implementation.\\n*Creates todo list with the following items:*\\n1. Create dark mode toggle component in Settings page\\n2. Add dark mode state management (context/store)\\n3. Implement CSS-in-JS styles for dark theme\\n4. Update existing components to support theme switching\\n5. Run tests and build process, addressing any failures or errors that occur\\n*Begins working on the first task*\\n\\n<reasoning>\\nThe assistant used the todo list because:\\n1. Adding dark mode is a multi-step feature requiring UI, state management, and styling changes\\n2. The user explicitly requested tests and build be run afterward\\n3. The assistant inferred that tests and build need to pass by adding \\\"Ensure tests and build succeed\\\" as the final task\\n</reasoning>\\n</example>\\n\\n<example>\\nUser: Help me rename the function getCwd to getCurrentWorkingDirectory across my project\\nAssistant: Let me first search through your codebase to find all occurrences of 'getCwd'.\\n*Uses grep or search tools to locate all instances of getCwd in the codebase*\\nAssistant: I've found 15 instances of 'getCwd' across 8 different files. Let me create a todo list to track these changes.\\n*Creates todo list with specific items for each file that needs updating*\\n\\n<reasoning>\\nThe assistant used the todo list because:\\n1. First, the assistant searched to understand the scope of the task\\n2. Upon finding multiple occurrences across different files, it determined this was a complex task with multiple steps\\n3. The todo list helps ensure every instance is tracked and updated systematically\\n4. This approach prevents missing any occurrences and maintains code consistency\\n</reasoning>\\n</example>\\n\\n\\n<example>\\nUser: I need to implement these features for my e-commerce site: user registration, product catalog, shopping cart, and checkout flow.\\nAssistant: I'll help implement these features. First, let's add all the features to the todo list.\\n*Creates a todo list breaking down each feature into specific tasks based on the project architecture*\\nAssistant: Let's start with user registration. This will involve creating database models, API endpoints, and frontend forms that integrate with your existing authentication system.\\n\\n<reasoning>\\nThe assistant used the todo list because:\\n1. The user provided multiple complex features to implement in a comma separated list\\n2. The todo list helps organize these large features into manageable tasks\\n3. This approach allows for tracking progress across the entire implementation\\n</reasoning>\\n</example>\\n\\n<example>\\nUser: Can you help optimize my React application? It's rendering slowly and has performance issues.</user>\\nAssistant: I'll help optimize your React application. First, let me examine your codebase to identify potential performance bottlenecks.\\n*Reviews component structure, render patterns, state management, and data fetching*\\nAssistant: After analyzing your codebase, I've identified several performance issues. Let me create a todo list to track our optimization efforts.\\n*Creates todo list with items like: 1) Implement memoization for expensive calculations in ProductList, 2) Add virtualization for long lists in Dashboard, 3) Optimize image loading in Gallery component, 4) Fix state update loops in ShoppingCart, 5) Review bundle size and implement code splitting*\\nLet's start by implementing memoization for the expensive calculations in your ProductList component.</assistant>\\n\\n<reasoning>\\nThe assistant used the todo list because:\\n1. First, the assistant examined the codebase to identify specific performance issues\\n2. Based on this analysis, it identified multiple optimization opportunities\\n3. Performance optimization is a non-trivial task requiring multiple steps\\n4. The todo list helps methodically track improvements across different components\\n5. This systematic approach ensures all performance bottlenecks are addressed\\n</reasoning>\\n</example>\\n\\n## Examples of When NOT to Use the Todo List\\n\\n<example>\\nUser: How do I print 'Hello World' in Python?\\nAssistant: In Python, you can print \\\"Hello World\\\" with this simple code:\\n\\npython\\nprint(\\\"Hello World\\\")\\n\\nThis will output the text \\\"Hello World\\\" to the console when executed.</assistant>\\n\\n<reasoning>\\nThe assistant did not use the todo list because this is a single, trivial task that can be completed in one step. There's no need to track multiple tasks or steps for such a straightforward request.\\n</reasoning>\\n</example>\\n\\n<example>\\nUser: What does the git status command do?\\nAssistant: The git status command shows the current state of your working directory and staging area. It displays which changes have been staged, which haven't, and which files aren't being tracked by Git. This is a fundamental command for understanding the current state of your repository before making commits.\\n\\n<reasoning>\\nThe assistant did not use the todo list because this is an informational request with no actual coding task to complete. The user is simply asking for an explanation, not for the assistant to perform multiple steps or tasks.\\n</reasoning>\\n</example>\\n\\n<example>\\nUser: Can you add a comment to the calculateTotal function to explain what it does?\\nAssistant: Sure, let me add a comment to the calculateTotal function to explain what it does.\\n* Uses the Edit tool to add a comment to the calculateTotal function *\\n\\n<reasoning>\\nThe assistant did not use the todo list because this is a single, straightforward task confined to one location in the code. Adding a comment doesn't require tracking multiple steps or systematic organization.\\n</reasoning>\\n</example>\\n\\n<example>\\nUser: Run npm install for me and tell me what happens.\\nAssistant: I'll run the npm install command for you.\\n\\n*Executes: npm install*\\n\\nThe command completed successfully. Here's the output:\\n[Output of npm install command]\\n\\nAll dependencies have been installed according to your package.json file.\\n\\n<reasoning>\\nThe assistant did not use the todo list because this is a single command execution with immediate results. There are no multiple steps to track or organize, making the todo list unnecessary for this straightforward task.\\n</reasoning>\\n</example>\\n\\n## Task States and Management\\n\\n1. **Task States**: Use these states to track progress:\\n   - pending: Task not yet started\\n   - in_progress: Currently working on (limit to ONE task at a time)\\n   - completed: Task finished successfully\\n\\n2. **Task Management**:\\n   - Update task status in real-time as you work\\n   - Mark tasks complete IMMEDIATELY after finishing (don't batch completions)\\n   - Only have ONE task in_progress at any time\\n   - Complete current tasks before starting new ones\\n   - Remove tasks that are no longer relevant from the list entirely\\n\\n3. **Task Completion Requirements**:\\n   - ONLY mark a task as completed when you have FULLY accomplished it\\n   - If you encounter errors, blockers, or cannot finish, keep the task as in_progress\\n   - When blocked, create a new task describing what needs to be resolved\\n   - Never mark a task as completed if:\\n     - Tests are failing\\n     - Implementation is partial\\n     - You encountered unresolved errors\\n     - You couldn't find necessary files or dependencies\\n\\n4. **Task Breakdown**:\\n   - Create specific, actionable items\\n   - Break complex tasks into smaller, manageable steps\\n   - Use clear, descriptive task names\\n\\nWhen in doubt, use this tool. Being proactive with task management demonstrates attentiveness and ensures you complete all requirements successfully.\\n\",\"parameters\":{\"type\":\"object\",\"properties\":{\"todos\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"minLength\":1},\"status\":{\"type\":\"string\",\"enum\":[\"pending\",\"in_progress\",\"completed\"]},\"priority\":{\"type\":\"string\",\"enum\":[\"high\",\"medium\",\"low\"]},\"id\":{\"type\":\"string\"}},\"required\":[\"content\",\"status\",\"priority\",\"id\"],\"additionalProperties\":false},\"description\":\"The updated todo list\"}},\"required\":[\"todos\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"WebSearch\",\"description\":\"\\n- Allows Claude to search the web and use the results to inform responses\\n- Provides up-to-date information for current events and recent data\\n- Returns search result information formatted as search result blocks\\n- Use this tool for accessing information beyond Claude's knowledge cutoff\\n- Searches are performed automatically within a single API call\\n\\nUsage notes:\\n  - Domain filtering is supported to include or block specific websites\\n  - Web search is only available in the US\\n\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"minLength\":2,\"description\":\"The search query to use\"},\"allowed_domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Only include search results from these domains\"},\"blocked_domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Never include search results from these domains\"}},\"required\":[\"query\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"mcp__ide__getDiagnostics\",\"description\":\"Get language diagnostics from VS Code\",\"parameters\":{\"type\":\"object\",\"properties\":{\"uri\":{\"type\":\"string\",\"description\":\"Optional file URI to get diagnostics for. If not provided, gets diagnostics for all files.\"}},\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}},{\"type\":\"function\",\"function\":{\"name\":\"mcp__ide__executeCode\",\"description\":\"Execute python code in the Jupyter kernel for the current notebook file.\\n    \\n    All code will be executed in the current Jupyter kernel.\\n    \\n    Avoid declaring variables or modifying the state of the kernel unless the user\\n    explicitly asks for it.\\n    \\n    Any code executed will persist across calls to this tool, unless the kernel\\n    has been restarted.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"The code to be executed on the kernel.\"}},\"required\":[\"code\"],\"additionalProperties\":false,\"$schema\":\"http://json-schema.org/draft-07/schema#\"}}}]} messageDelta:  {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null,\"content\":[{\"type\":\"text\",\"text\":\" I'll create a text file for you.\\n\\n<function_calls>\\n<invoke name=\\\"Bash\\\">\\n<parameter name=\\\"command\\\">touch new_file.txt</parameter>\\n</invoke>\"}]},\"usage\":{\"input_tokens\":100,\"output_tokens\":150}}\n[2025-06-27T11:05:08.204Z] response:  event: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null,\"content\":[{\"type\":\"text\",\"text\":\" I'll create a text file for you.\\n\\n<function_calls>\\n<invoke name=\\\"Bash\\\">\\n<parameter name=\\\"command\\\">touch new_file.txt</parameter>\\n</invoke>\"}]},\"usage\":{\"input_tokens\":100,\"output_tokens\":150}}\n\n\n[2025-06-27T11:05:08.204Z] response:  event: message_stop\ndata: {\"type\":\"message_stop\"}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/74/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/72",
      "id": 3178554512,
      "node_id": "I_kwDON-_mZc69dOSQ",
      "number": 72,
      "title": "使用new api代理的模型报错",
      "user": {
        "login": "kiroo92",
        "id": 21022679,
        "node_id": "MDQ6VXNlcjIxMDIyNjc5",
        "avatar_url": "https://avatars.githubusercontent.com/u/21022679?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kiroo92",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-26T09:58:02Z",
      "updated_at": "2025-06-27T02:32:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ccr code 对话后返回\n```\n{\"headers\":{\"alt-svc\":\"h3=:443; ma=86400\",\"cache-control\":\"no-cache\",\"cf-cache-status\":\"DYNAMIC\",\"cf-ray\":\"955bd4\n  965ee4a019-AMS\",\"connection\":\"keep-alive\",\"content-type\":\"text/event-stream; charset=utf-8\",\"date\":\"Thu, 26 Jun\n  2025 09:55:42 GMT\",\"nel\":\"{report_to:cf-nel,success_fraction:0.0,max_age:604800}\",\"report-to\":\"{group:cf-nel,max_\n  age:604800,endpoints:[{url:https://a.nel.cloudflare.com/report/v4?s=xX6OmptgB%2BDFlvE4fGvKGlrC6isJCQWgrB0x7vq9BXN\n  ukdwN%2BC9Bkr4x0xC9qoptTLZIBayYf49PyY%2FLCQJeYgb%2BDCu1lCTA%2FcUpdEhTW%2FU%3D\\\"}]}\",\"server\":\"cloudflare\",\"strict\n  -transport-security\":\"max-age=31536000\",\"transfer-encoding\":\"chunked\"},\"error\":\"Streaming failed after 3\n  retries.\"}\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/72/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/71",
      "id": 3178184628,
      "node_id": "I_kwDON-_mZc69bz-0",
      "number": 71,
      "title": "咨询一个问题，这个api timeout参数是作者二次开发加上去的吗？",
      "user": {
        "login": "Asheblog",
        "id": 20861711,
        "node_id": "MDQ6VXNlcjIwODYxNzEx",
        "avatar_url": "https://avatars.githubusercontent.com/u/20861711?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Asheblog",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-26T07:51:33Z",
      "updated_at": "2025-06-26T09:15:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题，我在claude code官方文档看不到这个参数，是作者二次开发加上去的吗？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/71/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/68",
      "id": 3175683574,
      "node_id": "I_kwDON-_mZc69SRX2",
      "number": 68,
      "title": "我的模型为什么只说不做啊",
      "user": {
        "login": "gandad",
        "id": 41535073,
        "node_id": "MDQ6VXNlcjQxNTM1MDcz",
        "avatar_url": "https://avatars.githubusercontent.com/u/41535073?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gandad",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-06-25T13:36:16Z",
      "updated_at": "2025-07-04T11:14:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "工程文件是用cursor在win11下创建的。测试了好多指令，都是只说不做。\n\n![Image](https://github.com/user-attachments/assets/f03a2434-486a-478d-a81a-0ed8cfc4c216)\n\n模型配置如下：\n\n![Image](https://github.com/user-attachments/assets/70648f4b-dbaf-48f6-9822-1181695c45c4)\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/68/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/65",
      "id": 3173744560,
      "node_id": "I_kwDON-_mZc69K3-w",
      "number": 65,
      "title": "能否把你的gemini config.json配置格式分享一下，",
      "user": {
        "login": "talway",
        "id": 10338638,
        "node_id": "MDQ6VXNlcjEwMzM4NjM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/10338638?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/talway",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-25T01:20:51Z",
      "updated_at": "2025-06-25T10:43:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "能否把你的gemini config.json配置格式分享一下，\n可以直接替换你的key就可以了，",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/65/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/64",
      "id": 3173741707,
      "node_id": "I_kwDON-_mZc69K3SL",
      "number": 64,
      "title": "toolcall-improvement插件如何安装的",
      "user": {
        "login": "talway",
        "id": 10338638,
        "node_id": "MDQ6VXNlcjEwMzM4NjM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/10338638?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/talway",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-25T01:18:56Z",
      "updated_at": "2025-06-25T04:44:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "你好，请问toolcall-improvement插件，notebook-tools-filter插件如何安装，我需要修改代码使用，尝试几次没安装成功\n\nwsl  ubuntu deepseek",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/64/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/62",
      "id": 3172761315,
      "node_id": "I_kwDON-_mZc69HH7j",
      "number": 62,
      "title": "Has anyone experimented with Using Gemini-API(https://github.com/HanaokaYuzu/Gemini-API) inside claude-code/claude-desktop as MCP or other alternatives?",
      "user": {
        "login": "EnzoTironi",
        "id": 97469972,
        "node_id": "U_kgDOBc9GFA",
        "avatar_url": "https://avatars.githubusercontent.com/u/97469972?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/EnzoTironi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-24T17:32:09Z",
      "updated_at": "2025-06-24T22:38:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey everyone,\n\nMy university provides a free Google AI plan, and I recently found this project: https://github.com/HanaokaYuzu/Gemini-API.\n\nThis sparked an idea: what if we could integrate this to better utilize our university benefits? I feel like this could be a useful feature for many of us.\n\nHas anyone tried something similar? If so, what were your findings? I'm also open to collaboration if anyone is interested in working on this together.\n\nThanks for reading, and hopefully, this gains some interest so I can dedicate time to developing it for everyone.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/62/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/61",
      "id": 3172042433,
      "node_id": "I_kwDON-_mZc69EYbB",
      "number": 61,
      "title": "如果openrouter的deepseek r1模型不支持function calling是否也可以实现自动修改文件呢？",
      "user": {
        "login": "endsock",
        "id": 6076201,
        "node_id": "MDQ6VXNlcjYwNzYyMDE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6076201?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/endsock",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-24T13:35:44Z",
      "updated_at": "2025-06-25T03:46:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如果openrouter的deepseek r1模型不支持function calling是否也可以实现自动修改文件呢？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/61/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/60",
      "id": 3171686655,
      "node_id": "I_kwDON-_mZc69DBj_",
      "number": 60,
      "title": "无法运行命令 & 中断后无法正常交流",
      "user": {
        "login": "pluntva",
        "id": 92310152,
        "node_id": "U_kgDOBYCKiA",
        "avatar_url": "https://avatars.githubusercontent.com/u/92310152?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pluntva",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-24T11:50:18Z",
      "updated_at": "2025-08-10T03:34:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "现象复现：\n\n首先我问了ccr一个算法问题：\n\n![Image](https://github.com/user-attachments/assets/e4322f93-18fc-4fea-9b31-3b89074b495b)\n\nccr给我实现出来后我要求他给我运行这个程序，然后在这一步就卡住了，它会一直处于running状态：\n\n![Image](https://github.com/user-attachments/assets/ca4cbfb6-31b2-45c1-89c9-ccc2011dc277)\n\n我不得不使用esc来中断这次操作，但是esc中断之后我发现此后再和ccr进行交流它都不会再回答了：\n\n![Image](https://github.com/user-attachments/assets/d9676d54-0ee7-4c63-9ab2-a7d35657fe89)\n\n\n前一个任务ccr没做完使用esc结束对话，ccr是不会放弃对话任务的。即使接着进行对话它还会卡在上一次对话任务中。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/60/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/59",
      "id": 3171208769,
      "node_id": "I_kwDON-_mZc69BM5B",
      "number": 59,
      "title": "请求失败的时候不能自动重试",
      "user": {
        "login": "kirklin",
        "id": 17453452,
        "node_id": "MDQ6VXNlcjE3NDUzNDUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17453452?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kirklin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-24T09:36:33Z",
      "updated_at": "2025-07-30T00:49:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/f0103940-995a-4b5c-a71a-f1c095e186d9)\n\n例如请求429的时候。在roo Code或者cline里面都能自动重试。但是ccr里面不行。",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/59/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/56",
      "id": 3170489197,
      "node_id": "I_kwDON-_mZc68-dNt",
      "number": 56,
      "title": "总是offline",
      "user": {
        "login": "pengpengsong777",
        "id": 139323024,
        "node_id": "U_kgDOCE3mkA",
        "avatar_url": "https://avatars.githubusercontent.com/u/139323024?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pengpengsong777",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-06-24T06:17:43Z",
      "updated_at": "2025-07-01T14:55:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "HELLO！\n安装成功后（在WSL系统中安装的，使用了windows的VPN），总是offline，无法使用，不知道为何\n![Image](https://github.com/user-attachments/assets/e1ce0d03-6e21-447a-ada1-c4a43698c977)\nconfig.yaml的配置如下：\n![Image](https://github.com/user-attachments/assets/de7f13d2-3d6b-4215-866b-73e9a0141002)\n我确定是可以连接deep网站的：\n![Image](https://github.com/user-attachments/assets/85a5c0d6-ebe9-4d9e-8a2f-9b3893e65070)\n请高手指点一下，不胜感激~",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/56/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/55",
      "id": 3168542786,
      "node_id": "I_kwDON-_mZc683CBC",
      "number": 55,
      "title": "如果拒绝ccr code给出的代码修改建议, 它在处理下一个prompt的时候就会卡住",
      "user": {
        "login": "tninja",
        "id": 714625,
        "node_id": "MDQ6VXNlcjcxNDYyNQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/714625?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tninja",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-23T15:07:01Z",
      "updated_at": "2025-06-23T18:22:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "只好把它关了重开, 有其他的办法吗?\n\nOS: ubuntu 24.04\nModel: deepseek chat / deepseek reasoner",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/55/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/54",
      "id": 3168531717,
      "node_id": "I_kwDON-_mZc682_UF",
      "number": 54,
      "title": "LLMs seem to find it difficult to handle the tools?",
      "user": {
        "login": "Tetrahedrite",
        "id": 3435833,
        "node_id": "MDQ6VXNlcjM0MzU4MzM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3435833?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Tetrahedrite",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-06-23T15:03:21Z",
      "updated_at": "2025-06-24T04:25:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "First of all, thank you for maintaining this amazing project.\n\nI'm looking for cost-effective method to reach agentic coding, and I want to use this with OpenRouter API to get avoid from Anthropic's paid plan.\nI also tried `OpenHands` and `Aider`, these are seems not much good as `Claude Code`.\n\nI've tried LLM models to just generate `CLAUDE.md` file using `/init` command.\nSome LLMs are hard to reading files, some others are just gives prompt back and did nothing. Anothers are responding malformed JSON format.\nOf course, some of thems are working when I keep sending \"Continue\", \"You are sending malformed format\", and etc multiple times. but very painful to type.\n\n### Here's list what I did:\n\n- Added `toolcall-improvement`\n- Tried few LLMs from OpenRouter via multiple providers including (but showing poor performance):\n  - `mistralai/devstral-small-2505`\n  - `mistralai/magistral-small-2506`\n  - `deepseek/deepseek-chat-v3-0324`\n  - `deepseek/deepseek-r1-0528`\n  - Tried `qwen/qwen-2.5-coder-32b-instruct` but these are never working on all providers. (Keep 0 tokens and progressing)\n- However, these models are working very well. Just one `/init` command and doing great:\n  - `anthropic/claude-4-sonnet-20250522`\n  - `google/gemini-2.5-pro-preview-06-05`\n\nIs there a good cost-effective LLM that I don't know or prompt make them working smoothly? or only high-value models are the answer?\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/54/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/53",
      "id": 3168493443,
      "node_id": "I_kwDON-_mZc6821-D",
      "number": 53,
      "title": "Error in OpenAI API call: \"status\":404",
      "user": {
        "login": "Cyli00",
        "id": 46769726,
        "node_id": "MDQ6VXNlcjQ2NzY5NzI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/46769726?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Cyli00",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-23T14:51:57Z",
      "updated_at": "2025-06-23T15:21:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Running ccr code in wsl2.\nSet proxy through ``export HTTPS_PROXY=http://127.0.0.1:7897 `` and ``export HTTP_PROXY=http://127.0.0.1:7897`` in .zshrc, and running mihomo service in Windows.\n***\n[2025-06-23T14:47:33.697Z] **Error in OpenAI API call: {\"status\":404**,\"headers\":{\"alt-svc\":\"h3=\\\":443\\\"; ma=2592000,h3-29=\\\":443\\\"; ma=2592000\",\"connection\":\"close\",\"content-length\":\"0\",\"content-type\":\"text/html\",\"date\":\"Mon, 23 Jun 2025 14:47:34 GMT\",\"server\":\"scaffolding on HTTPServer2\",\"server-timing\":\"gfet4t7; dur=1386\",\"x-content-type-options\":\"nosniff\",\"x-frame-options\":\"SAMEORIGIN\",\"x-xss-protection\":\"0\"}}\n***\n**My settings**\n```\n{\n    \"OPENAI_API_KEY\": \"xxx\",\n    \"OPENAI_BASE_URL\": \"https://generativelanguage.googleapis.com\",\n    \"OPENAI_MODEL\": \"gemini-2.0-flash\",\n    \"Providers\": [\n        {\n            \"name\": \"deepseek\",\n            \"api_base_url\": \"https://api.studio.nebius.ai\",\n            \"api_key\": \"eyxxx\",\n            \"models\": [\n                \"deepseek-ai/DeepSeek-R1-0528\"\n            ]\n        },\n        {\n            \"name\": \"gemini\",\n            \"api_base_url\": \"https://generativelanguage.googleapis.com\",\n            \"api_key\": \"xxx\",\n            \"models\": [\n                \"gemini-2.5-pro\",\n                \"gemini-2.0-flash\"\n            ]\n        }\n    ],\n    \"Router\": {\n        \"background\": \"gemini,gemini-2.0-flash\",\n        \"think\": \"gemini,gemini-2.5-pro\",\n        \"longContext\": \"gemini,gemini-2.5-pro\"\n    },\n    \"LOG\": true\n}\n```\n\n![Image](https://github.com/user-attachments/assets/aba45dba-2d27-472f-aab9-3e6413365f1b)\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/53/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/51",
      "id": 3167430966,
      "node_id": "I_kwDON-_mZc68yyk2",
      "number": 51,
      "title": "The model has no returns",
      "user": {
        "login": "yinmin2020",
        "id": 65068467,
        "node_id": "MDQ6VXNlcjY1MDY4NDY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/65068467?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yinmin2020",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-06-23T09:20:04Z",
      "updated_at": "2025-07-01T15:05:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/55f5ab1f-b822-4110-a9f9-aa65ec173351)\n\n![Image](https://github.com/user-attachments/assets/c6c5e7e3-1a0d-4ed9-93d1-094f2cbad3dc)\n\n![Image](https://github.com/user-attachments/assets/8023b676-6996-4d06-8bd6-4bf5fc98b310)\n\nI have a macos operating system. Both cc and ccr are normally deployed. The ccr version is 1.0.9. I used the openrouter model and the official deepseek model, and also added a log configuration. As shown in Figure 2, there is no effective log output. As for Figure 1, it has been waiting for a return after running, but there has always been no result. I created a script by myself to curl test the model and address. Both have returns. Could you please tell me where the problem lies?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/51/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/49",
      "id": 3166734223,
      "node_id": "I_kwDON-_mZc68wIeP",
      "number": 49,
      "title": "OPENAI 这部分是否可以支持 OLLAMA",
      "user": {
        "login": "huifer",
        "id": 26766909,
        "node_id": "MDQ6VXNlcjI2NzY2OTA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/26766909?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/huifer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-23T04:33:03Z",
      "updated_at": "2025-06-23T05:44:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\"OPENAI_API_KEY\": \"sk-xxx\",\n  \"OPENAI_BASE_URL\": \"https://api.deepseek.com\",\n  \"OPENAI_MODEL\": \"deepseek-chat\",\n ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/49/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/48",
      "id": 3166574084,
      "node_id": "I_kwDON-_mZc68vhYE",
      "number": 48,
      "title": "用中转站的 Claude API 效果会和原生的体验差多少呢",
      "user": {
        "login": "9963KK",
        "id": 62432023,
        "node_id": "MDQ6VXNlcjYyNDMyMDIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/62432023?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/9963KK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-23T02:43:34Z",
      "updated_at": "2025-06-26T16:10:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题，求大佬解答",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/48/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/43",
      "id": 3164901229,
      "node_id": "I_kwDON-_mZc68pI9t",
      "number": 43,
      "title": "ccr不能 成功执行 bash 命令",
      "user": {
        "login": "Wilson-G",
        "id": 12825462,
        "node_id": "MDQ6VXNlcjEyODI1NDYy",
        "avatar_url": "https://avatars.githubusercontent.com/u/12825462?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Wilson-G",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-21T08:16:38Z",
      "updated_at": "2025-08-07T12:38:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "成功启动并连接自定义 baseurl，谢谢作者。\n当前遇到的问题是，ccr尝试运行 bash 命令的时候会卡住，不知道是什么原因导致，我尝试让 ccr 运行 ls，都无法显示任何内容，我是 mac 系统？有解决办法吗",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/43/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/41",
      "id": 3164728270,
      "node_id": "I_kwDON-_mZc68oevO",
      "number": 41,
      "title": "只有 openrouter api key的情况下，建议怎么配？",
      "user": {
        "login": "devSC",
        "id": 6701462,
        "node_id": "MDQ6VXNlcjY3MDE0NjI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6701462?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/devSC",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-06-21T03:57:16Z",
      "updated_at": "2025-08-20T02:19:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "不怎么考虑花费，希望提高输出效果",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/41/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/40",
      "id": 3163818169,
      "node_id": "I_kwDON-_mZc68lAi5",
      "number": 40,
      "title": "奇怪的问题，openrouter,google/gemini-2.5-flash-lite-preview-06-17可以使用，但是2.5pro会一直处于加载的状态",
      "user": {
        "login": "houzl3416",
        "id": 33145210,
        "node_id": "MDQ6VXNlcjMzMTQ1MjEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/33145210?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/houzl3416",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-06-20T16:18:57Z",
      "updated_at": "2025-06-21T17:02:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "如题，2.5-pro模型无法请求通，甚至请求都没到openrouter,有点奇怪",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/40/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/36",
      "id": 3161877008,
      "node_id": "I_kwDON-_mZc68dmoQ",
      "number": 36,
      "title": "提完问题过一会就显示 offline",
      "user": {
        "login": "TaskAwait",
        "id": 162886779,
        "node_id": "U_kgDOCbV0ew",
        "avatar_url": "https://avatars.githubusercontent.com/u/162886779?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TaskAwait",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-06-20T04:24:50Z",
      "updated_at": "2025-06-23T05:45:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/fb94d67f-76a5-4123-8cf3-85b58682d706)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/36/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/34",
      "id": 3161780694,
      "node_id": "I_kwDON-_mZc68dPHW",
      "number": 34,
      "title": "EADDRINUSE address: '::',   port: 3456",
      "user": {
        "login": "FrankFang",
        "id": 839559,
        "node_id": "MDQ6VXNlcjgzOTU1OQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/839559?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/FrankFang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-20T03:04:06Z",
      "updated_at": "2025-06-20T04:11:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I ran `ccr start` in WSL and got the error `EADDRINUSE port: 3456`\nI'm sure the port isn't occupied because I ran `ccr start` right after booting up, without opening any other programs",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/34/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/33",
      "id": 3161681000,
      "node_id": "I_kwDON-_mZc68c2xo",
      "number": 33,
      "title": "vs code 插件模式下仍然提示登录",
      "user": {
        "login": "sdhjl2000",
        "id": 74470,
        "node_id": "MDQ6VXNlcjc0NDcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/74470?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sdhjl2000",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 20,
      "created_at": "2025-06-20T01:46:15Z",
      "updated_at": "2026-01-04T08:15:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "已经启动ccr，vscode内部点击claude的插件使用，提示需要login，有方案解决吗\n![Image](https://github.com/user-attachments/assets/8f3c0874-9375-45d9-b37e-5ceebcfddf1c)\n\n![Image](https://github.com/user-attachments/assets/7c7c9d5c-9622-4899-a64e-981a718be321)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/33/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/28",
      "id": 3158712686,
      "node_id": "I_kwDON-_mZc68RiFu",
      "number": 28,
      "title": "使用ChatAnywhere的API中的claude-3-7-sonnet-20250219模型，无法调用工具",
      "user": {
        "login": "sunweihunu",
        "id": 27525899,
        "node_id": "MDQ6VXNlcjI3NTI1ODk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/27525899?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sunweihunu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-06-19T02:45:43Z",
      "updated_at": "2025-08-03T20:41:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "配置\n{\n  \"OPENAI_API_KEY\": \"sk-qE***\",\n  \"OPENAI_BASE_URL\": \"https://api.chatanywhere.tech/v1\",\n  \"OPENAI_MODEL\": \"claude-3-7-sonnet-20250219\",\n  \"Providers\": [\n    {\n      \"name\": \"ChatAnywhere\",\n      \"api_base_url\": \"https://api.chatanywhere.tech/v1\",\n      \"api_key\": \"sk-qEc***\",\n      \"models\": [\n        \"claude-3-7-sonnet-20250219\"\n      ]\n    },\n    {\n      \"name\": \"deepseek\",\n      \"api_base_url\": \"https://api.chatanywhere.tech/v1\",\n      \"api_key\": \"sk-qEcoE***\",\n      \"models\": [\"claude-3-7-sonnet-20250219\"]\n    },\n    {\n      \"name\": \"deepseek2\",\n      \"api_base_url\": \"https://api.chatanywhere.tech/v1\",\n      \"api_key\": \"sk-qEco***\",\n      \"models\": [\"claude-3-7-sonnet-20250219\"]\n    }\n  ],\n  \"Router\": {\n    \"background\": \"deepseek,claude-3-7-sonnet-20250219\",\n    \"think\": \"ChatAnywhere,claude-3-7-sonnet-20250219r\",    \n    \"longContext\": \"deepseek2,claude-3-7-sonnet-20250219\"\n  }\n}\n\n一般提问基本正常，最后多一个{}\n\n![Image](https://github.com/user-attachments/assets/3b44bee2-9e4a-4869-a7f6-f2c7b6697a49)\n\n\n调用工具，报错\n\n![Image](https://github.com/user-attachments/assets/b126f2f0-4fa9-4783-a394-1ac45c2b4dc1)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/28/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/25",
      "id": 3149908418,
      "node_id": "I_kwDON-_mZc67v8nC",
      "number": 25,
      "title": "是不是最新的claude code不支持了",
      "user": {
        "login": "sdhjl2000",
        "id": 74470,
        "node_id": "MDQ6VXNlcjc0NDcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/74470?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sdhjl2000",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 22,
      "created_at": "2025-06-16T12:53:21Z",
      "updated_at": "2025-06-21T15:36:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "执行status看到Auth Token: ANTHROPIC_AUTH_TOKEN，model也是默认的无法切换config配置的模型\n![Image](https://github.com/user-attachments/assets/7c9f5bb7-1148-48ae-a462-ddc6a2fbb565)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/25/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/24",
      "id": 3149142673,
      "node_id": "I_kwDON-_mZc67tBqR",
      "number": 24,
      "title": "使用deepseek 模型，只能用于分析代码吗？可以能像cursor 一样agent 自动修改代码吗？",
      "user": {
        "login": "hnynf",
        "id": 142396819,
        "node_id": "U_kgDOCHzNkw",
        "avatar_url": "https://avatars.githubusercontent.com/u/142396819?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hnynf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-06-16T08:59:51Z",
      "updated_at": "2025-07-15T08:30:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "感谢开发者！\n感谢开发者！\n感谢开发者！",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/24/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/23",
      "id": 3148448853,
      "node_id": "I_kwDON-_mZc67qYRV",
      "number": 23,
      "title": "API Error: A.map is not a function",
      "user": {
        "login": "cexll",
        "id": 26520956,
        "node_id": "MDQ6VXNlcjI2NTIwOTU2",
        "avatar_url": "https://avatars.githubusercontent.com/u/26520956?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cexll",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 26,
      "created_at": "2025-06-16T03:51:09Z",
      "updated_at": "2025-06-20T14:59:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "is wrong ? \n\n```bash\n/init\n...\n⎿  API Error: A.map is not a function\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/23/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/19",
      "id": 3143939024,
      "node_id": "I_kwDON-_mZc67ZLPQ",
      "number": 19,
      "title": "API Error (Connection error.)",
      "user": {
        "login": "taosu0216",
        "id": 116145501,
        "node_id": "U_kgDOBuw9XQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/116145501?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/taosu0216",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 23,
      "created_at": "2025-06-13T15:25:59Z",
      "updated_at": "2025-07-16T02:43:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "hi,is there anything wrong? \n\n![Image](https://github.com/user-attachments/assets/4c0f9625-5c42-4eb9-b981-ab743f234dfc)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/19/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/18",
      "id": 3143535729,
      "node_id": "I_kwDON-_mZc67Xoxx",
      "number": 18,
      "title": "Cannot read properties of null",
      "user": {
        "login": "rohitsathish",
        "id": 46263358,
        "node_id": "MDQ6VXNlcjQ2MjYzMzU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/46263358?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rohitsathish",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-13T13:10:25Z",
      "updated_at": "2025-06-13T14:20:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I get this error when running on my custom api endpoint. It was otherwise working fine, might be something related to a tool call - \n\n```\nError in OpenAI API call: InternalServerError: 500 Cannot read properties of null (reading 'match')\n    at _APIError.generate (/home/rohit/.nvm/versions/node/v22.16.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:30733:14)\n    at OpenAI.makeStatusError (/home/rohit/.nvm/versions/node/v22.16.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:31527:21)\n    at OpenAI.makeRequest (/home/rohit/.nvm/versions/node/v22.16.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:31571:24)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async /home/rohit/.nvm/versions/node/v22.16.0/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:37158:26 {\n  status: 500,\n  headers: {\n    'access-control-allow-origin': '*',\n    connection: 'keep-alive',\n    'content-type': 'application/json',\n    date: 'Fri, 13 Jun 2025 12:52:39 GMT',\n    'keep-alive': 'timeout=5',\n    'transfer-encoding': 'chunked'\n  },\n  request_id: undefined,\n  error: {\n    message: \"Cannot read properties of null (reading 'match')\",\n    type: 'error'\n  },\n  code: undefined,\n  param: undefined,\n  type: 'error'\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/18/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/12",
      "id": 3128728828,
      "node_id": "I_kwDON-_mZc66fJz8",
      "number": 12,
      "title": "[FeatureRequest] Configurable Endpoint (OpenWebUI)",
      "user": {
        "login": "bdynamic",
        "id": 12560294,
        "node_id": "MDQ6VXNlcjEyNTYwMjk0",
        "avatar_url": "https://avatars.githubusercontent.com/u/12560294?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bdynamic",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-08T22:05:09Z",
      "updated_at": "2025-08-21T02:17:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "it would be pretty cool if it would be able to run it against the API of OpenWebUI (https://docs.openwebui.com/getting-started/api-endpoints/) \nIf this would be possible one could also utilize (local) ollama models. \nMy understanding is that there would be the need for making the Endpoint configurable.\nOpenWeb UI uses: /api/chat/completions\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/12/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/7",
      "id": 3033165411,
      "node_id": "I_kwDON-_mZc60ym5j",
      "number": 7,
      "title": "Issue with qwen 3 - LM Studio",
      "user": {
        "login": "daaddd",
        "id": 17510750,
        "node_id": "MDQ6VXNlcjE3NTEwNzUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/17510750?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/daaddd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-05-01T04:47:50Z",
      "updated_at": "2025-07-31T12:08:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"837\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/c4901f77-9453-4759-855c-3bc73b901654\" />\n\n```\n## enable router\nENABLE_ROUTER=true\nexport TOOL_AGENT_API_KEY=\"\"\nexport TOOL_AGENT_BASE_URL=\"http://127.0.0.1:1234/v1”\nexport TOOL_AGENT_MODEL=\"qwen3-14b\"\n\nexport CODER_AGENT_API_KEY=\"\"\nexport CODER_AGENT_BASE_URL=\"http://127.0.0.1:1234/v1”\nexport CODER_AGENT_MODEL=\"qwen3-14b\"\n\nexport THINK_AGENT_API_KEY=\"\"\nexport THINK_AGENT_BASE_URL=\"http://127.0.0.1:1234/v1”\nexport THINK_AGENT_MODEL=\"qwen3-14b\"\n\nexport ROUTER_AGENT_API_KEY=\"\"\nexport ROUTER_AGENT_BASE_URL=\"http://127.0.0.1:1234/v1\"\nexport ROUTER_AGENT_MODEL=\"qwen3-14b\"\n\nnode index.mjs\n```\n\nam I missing anything?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/musistudio/claude-code-router/issues/7/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    }
  ],
  "pulls": [
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1216",
      "id": 3287684486,
      "node_id": "PR_kwDON-_mZc7D9hWG",
      "number": 1216,
      "state": "open",
      "locked": false,
      "title": "fix: correctly determine finish reason in gemini streaming",
      "user": {
        "login": "PartTimeHackerman",
        "id": 16905617,
        "node_id": "MDQ6VXNlcjE2OTA1NjE3",
        "avatar_url": "https://avatars.githubusercontent.com/u/16905617?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PartTimeHackerman",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This change addresses an issue where the finish reason was not being correctly determined in Gemini streaming mode, particularly when multiple response chunks were received.\r\n\r\nPreviously, the logic only considered the first candidate of the first response, which could lead to a null `finish_reason` if that initial chunk was not the final one.\r\n\r\nThe updated implementation now correctly handles multiple response chunks by iterating through them to find the candidate that contains a `finishReason`. This ensures that the final response is properly identified and the `finish_reason` is accurately reported.\r\n\r\nThis change improves the reliability of response handling in streaming scenarios and prevents potential issues with incomplete or misidentified responses.\r\n",
      "created_at": "2026-02-15T22:45:00Z",
      "updated_at": "2026-02-15T22:45:00Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "3b5a7ccff227be58c9970c09bc99bbf1992ab260",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "PartTimeHackerman:fix/gemini-transformer-fix",
        "ref": "fix/gemini-transformer-fix",
        "sha": "9d3f9c171829cae3bd0d2c6d191743a75dede67e",
        "user": {
          "login": "PartTimeHackerman",
          "id": 16905617,
          "node_id": "MDQ6VXNlcjE2OTA1NjE3",
          "avatar_url": "https://avatars.githubusercontent.com/u/16905617?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/PartTimeHackerman",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1158766922,
          "node_id": "R_kgDORRFhSg",
          "name": "claude-code-router",
          "full_name": "PartTimeHackerman/claude-code-router",
          "private": false,
          "owner": {
            "login": "PartTimeHackerman",
            "id": 16905617,
            "node_id": "MDQ6VXNlcjE2OTA1NjE3",
            "avatar_url": "https://avatars.githubusercontent.com/u/16905617?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/PartTimeHackerman",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/PartTimeHackerman/claude-code-router",
          "created_at": "2026-02-15T22:02:32Z",
          "updated_at": "2026-02-15T22:02:33Z",
          "pushed_at": "2026-02-15T22:38:00Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11462,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1216"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1216"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1216"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1216/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1216/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1216/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/9d3f9c171829cae3bd0d2c6d191743a75dede67e"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1211",
      "id": 3281639814,
      "node_id": "PR_kwDON-_mZc7DmdmG",
      "number": 1211,
      "state": "open",
      "locked": false,
      "title": "fix(cli): avoid DEP0190 in code command spawn",
      "user": {
        "login": "AbdelrahmanHafez",
        "id": 19984935,
        "node_id": "MDQ6VXNlcjE5OTg0OTM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/19984935?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AbdelrahmanHafez",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Fixes https://github.com/musistudio/claude-code-router/issues/974\r\n`ccr code` currently calls `spawn(command, args, { shell: true })`, which triggers Node's DEP0190 warning because args are concatenated by the shell.\r\n\r\nThis change keeps shell behavior, but switches to a single safely quoted command string and calls `spawn(commandString, { shell: true })`. Argument forwarding stays intact, including values with spaces.\r\n\r\n## Test Plan\r\n- [x] `pnpm build`\r\n- [x] `CLAUDE_PATH=echo NODE_OPTIONS=--trace-deprecation node dist/cli.js code --help`\r\n- [x] `CLAUDE_PATH=echo node dist/cli.js code --model \"claude sonnet\" --verbose`",
      "created_at": "2026-02-13T16:42:23Z",
      "updated_at": "2026-02-13T16:47:21Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "47c576a7efe10efccdd3951361fe7f7356678e90",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "AbdelrahmanHafez:fix/dep0190-code-command",
        "ref": "fix/dep0190-code-command",
        "sha": "bb6c7017906e42a230a430ba74fa6133ed99fc19",
        "user": {
          "login": "AbdelrahmanHafez",
          "id": 19984935,
          "node_id": "MDQ6VXNlcjE5OTg0OTM1",
          "avatar_url": "https://avatars.githubusercontent.com/u/19984935?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AbdelrahmanHafez",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1157283550,
          "node_id": "R_kgDORPq-3g",
          "name": "claude-code-router",
          "full_name": "AbdelrahmanHafez/claude-code-router",
          "private": false,
          "owner": {
            "login": "AbdelrahmanHafez",
            "id": 19984935,
            "node_id": "MDQ6VXNlcjE5OTg0OTM1",
            "avatar_url": "https://avatars.githubusercontent.com/u/19984935?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/AbdelrahmanHafez",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/AbdelrahmanHafez/claude-code-router",
          "created_at": "2026-02-13T16:37:18Z",
          "updated_at": "2026-02-13T16:37:19Z",
          "pushed_at": "2026-02-17T02:28:34Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11500,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1211"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1211"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1211"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1211/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1211/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1211/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/bb6c7017906e42a230a430ba74fa6133ed99fc19"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1210",
      "id": 3277731238,
      "node_id": "PR_kwDON-_mZc7DXjWm",
      "number": 1210,
      "state": "open",
      "locked": false,
      "title": "feat: add Qwen CLI transformer support and fix custom transformer loa…",
      "user": {
        "login": "thrun-11",
        "id": 91716287,
        "node_id": "U_kgDOBXd6vw",
        "avatar_url": "https://avatars.githubusercontent.com/u/91716287?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/thrun-11",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "…ding\r\n\r\nThis commit adds built-in support for Qwen Code CLI as a transformer and fixes two critical bugs in the transformer system:\r\n\r\n**New Features:**\r\n- Add QwenCLITransformer as a built-in transformer for Qwen Code CLI integration\r\n- Supports OAuth-based authentication with automatic token refresh\r\n- Forces 'coder-model' for all requests to ensure compatibility\r\n- Adds proper User-Agent header for Qwen CLI API\r\n\r\n**Bug Fixes:**\r\n1. Custom transformer loading (transformer.ts):\r\n   - Previously, code tried to instantiate module.exports directly with 'new module()'\r\n   - This failed because require() returns an exports object, not the class\r\n   - Now properly handles CommonJS exports (module.exports), ES module default exports, and named exports by detecting the actual class constructor\r\n\r\n2. Model-specific transformer result handling (routes.ts):\r\n   - Previously, model-specific transformers assigned the entire return value to requestBody\r\n   - This caused the wrapper object {body, config} to be sent instead of just body\r\n   - Now extracts body and merges config, consistent with provider-level transformers\r\n\r\n**Configuration:**\r\nUsers can now use Qwen CLI by configuring a provider with the 'qwen-cli' transformer:\r\n\r\n  {\r\n    name: qwen,\r\n    api_base_url: https://portal.qwen.ai/v1/chat/completions,\r\n    api_key: dummy,\r\n    models: [coder-model],\r\n    transformer: {\r\n      use: [qwen-cli]\r\n    }\r\n  }\r\n\r\nOAuth credentials are automatically managed from ~/.qwen/oauth_creds.json",
      "created_at": "2026-02-12T19:06:48Z",
      "updated_at": "2026-02-17T17:39:47Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "de0d845614d98818e692f0a50790749513281bee",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "thrun-11:fix-custom-transformer-loading",
        "ref": "fix-custom-transformer-loading",
        "sha": "e035afe351baf7d3cd3807dd702e22845ef71438",
        "user": {
          "login": "thrun-11",
          "id": 91716287,
          "node_id": "U_kgDOBXd6vw",
          "avatar_url": "https://avatars.githubusercontent.com/u/91716287?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/thrun-11",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1156539062,
          "node_id": "R_kgDORO9itg",
          "name": "claude-code-router",
          "full_name": "thrun-11/claude-code-router",
          "private": false,
          "owner": {
            "login": "thrun-11",
            "id": 91716287,
            "node_id": "U_kgDOBXd6vw",
            "avatar_url": "https://avatars.githubusercontent.com/u/91716287?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/thrun-11",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/thrun-11/claude-code-router",
          "created_at": "2026-02-12T19:05:08Z",
          "updated_at": "2026-02-12T19:05:08Z",
          "pushed_at": "2026-02-17T17:39:45Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11478,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1210"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1210"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1210"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1210/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1210/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1210/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/e035afe351baf7d3cd3807dd702e22845ef71438"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1207",
      "id": 3274789063,
      "node_id": "PR_kwDON-_mZc7DMVDH",
      "number": 1207,
      "state": "open",
      "locked": false,
      "title": "fix(gemini): prevent 400 error when tool_choice is set without functions",
      "user": {
        "login": "Longarithm",
        "id": 8607261,
        "node_id": "MDQ6VXNlcjg2MDcyNjE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8607261?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Longarithm",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "The Gemini API throws a 400 INVALID_ARGUMENT error (\"Function calling config is set without function_declarations\") when toolConfig is included in the request body but no actual functionDeclarations are present. This occurs in scenarios like using web_search (which adds a Google Search tool but no function declarations) while tool_choice is active.\r\n\r\nSpecific error which I got while using gemini backend with claude code router:\r\n\r\n```\r\nWeb search results for query: \"latest AI models from Google\"\r\n\r\nAPI Error: 400 {\"error\":{\"message\":\"Error from provider(gemini,undefined: 400): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 400,\\n    \\\"message\\\": \\\"Function calling config is set without function_declarations.\\\",\\n    \\\"status\\\": \\\"INVALID_ARGUMENT\\\"\\n  }\\n}\\nError: Error from provider(gemini,undefined: 400): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 400,\\n    \\\"message\\\": \\\"Function calling config is set without function_declarations.\\\",\\n    \\\"status\\\": \\\"INVALID_ARGUMENT\\\"\\n  }\\n}\\n\\n    at qn (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:7451)\\n    at fD (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:11338)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\\n    at async cN (/usr/local/lib/node_modules/@musistudio/claude-code-router/dist/cli.js:582:8659)\",\"type\":\"api_error\",\"code\":\"provider_response_error\"}}\r\n```\r\n\r\nThis simple fix worked for me.",
      "created_at": "2026-02-12T07:03:27Z",
      "updated_at": "2026-02-12T07:03:27Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "1e11913e0259a4be922ef93c6b4f375efbf4900e",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Longarithm:main",
        "ref": "main",
        "sha": "9ded75ddefe3dd5e35bb3be13b39998a8ae9a552",
        "user": {
          "login": "Longarithm",
          "id": 8607261,
          "node_id": "MDQ6VXNlcjg2MDcyNjE=",
          "avatar_url": "https://avatars.githubusercontent.com/u/8607261?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Longarithm",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1156021357,
          "node_id": "R_kgDOROd8bQ",
          "name": "claude-code-router",
          "full_name": "Longarithm/claude-code-router",
          "private": false,
          "owner": {
            "login": "Longarithm",
            "id": 8607261,
            "node_id": "MDQ6VXNlcjg2MDcyNjE=",
            "avatar_url": "https://avatars.githubusercontent.com/u/8607261?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Longarithm",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Longarithm/claude-code-router",
          "created_at": "2026-02-12T06:58:50Z",
          "updated_at": "2026-02-12T06:59:00Z",
          "pushed_at": "2026-02-12T06:58:52Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11480,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1207"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1207"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1207"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1207/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1207/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1207/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/9ded75ddefe3dd5e35bb3be13b39998a8ae9a552"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1204",
      "id": 3265819590,
      "node_id": "PR_kwDON-_mZc7CqHPG",
      "number": 1204,
      "state": "open",
      "locked": false,
      "title": "fix reasoning",
      "user": {
        "login": "UbeCc",
        "id": 70007833,
        "node_id": "MDQ6VXNlcjcwMDA3ODMz",
        "avatar_url": "https://avatars.githubusercontent.com/u/70007833?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/UbeCc",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2026-02-10T07:04:30Z",
      "updated_at": "2026-02-11T02:53:21Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "b144876352bae661a484c4eae83a9205b2a70c1c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "UbeCc:fix/reasoning",
        "ref": "fix/reasoning",
        "sha": "38c1edf751d70731fd1998bdbe7f0768e2861c0a",
        "user": {
          "login": "UbeCc",
          "id": 70007833,
          "node_id": "MDQ6VXNlcjcwMDA3ODMz",
          "avatar_url": "https://avatars.githubusercontent.com/u/70007833?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/UbeCc",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1154247300,
          "node_id": "R_kgDORMxqhA",
          "name": "claude-code-router",
          "full_name": "UbeCc/claude-code-router",
          "private": false,
          "owner": {
            "login": "UbeCc",
            "id": 70007833,
            "node_id": "MDQ6VXNlcjcwMDA3ODMz",
            "avatar_url": "https://avatars.githubusercontent.com/u/70007833?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/UbeCc",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/UbeCc/claude-code-router",
          "created_at": "2026-02-10T07:03:48Z",
          "updated_at": "2026-02-10T07:03:48Z",
          "pushed_at": "2026-02-10T07:04:20Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11472,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1204"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1204"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1204"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1204/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1204/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1204/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/38c1edf751d70731fd1998bdbe7f0768e2861c0a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1196",
      "id": 3256356539,
      "node_id": "PR_kwDON-_mZc7CGA67",
      "number": 1196,
      "state": "open",
      "locked": false,
      "title": "Added ability to pass parameters to Claude Code",
      "user": {
        "login": "AlastairThomson",
        "id": 4931269,
        "node_id": "MDQ6VXNlcjQ5MzEyNjk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4931269?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AlastairThomson",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Hi there, I (and Claude) added the ability to pass additional parameters into the Claude Code launch (and Claude fixed some issues it noted as well).\r\n\r\nThis is most useful for passing things like --continue, --resume or --dangerously-skip-permissions (if you're feeling lucky).  Tested with a private OpenAI model and all working.",
      "created_at": "2026-02-06T22:20:15Z",
      "updated_at": "2026-02-06T22:20:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "a0cb7561ccdb3b099965217dd65ca1afafd61a3d",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "AlastairThomson:main",
        "ref": "main",
        "sha": "c765adb474c115e5b59c8af365cd8b78b385dd7c",
        "user": {
          "login": "AlastairThomson",
          "id": 4931269,
          "node_id": "MDQ6VXNlcjQ5MzEyNjk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/4931269?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AlastairThomson",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1107825354,
          "node_id": "R_kgDOQggSyg",
          "name": "claude-code-router",
          "full_name": "AlastairThomson/claude-code-router",
          "private": false,
          "owner": {
            "login": "AlastairThomson",
            "id": 4931269,
            "node_id": "MDQ6VXNlcjQ5MzEyNjk=",
            "avatar_url": "https://avatars.githubusercontent.com/u/4931269?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/AlastairThomson",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/AlastairThomson/claude-code-router",
          "created_at": "2025-12-01T16:57:03Z",
          "updated_at": "2026-02-06T21:06:15Z",
          "pushed_at": "2026-02-06T21:06:06Z",
          "homepage": "",
          "size": 11465,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1196"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1196"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1196"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1196/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1196/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1196/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/c765adb474c115e5b59c8af365cd8b78b385dd7c"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1190",
      "id": 3235532393,
      "node_id": "PR_kwDON-_mZc7A2k5p",
      "number": 1190,
      "state": "open",
      "locked": false,
      "title": "add venice provider example",
      "user": {
        "login": "woodenfurniture",
        "id": 125113430,
        "node_id": "U_kgDOB3UUVg",
        "avatar_url": "https://avatars.githubusercontent.com/u/125113430?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/woodenfurniture",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\n- Add Venice.ai as a provider in the comprehensive configuration example\r\n- Updated both English (README.md) and Chinese (README_zh.md) documentation\r\n\r\n## Configuration\r\n```json\r\n{\r\n  \"name\": \"venice\",\r\n  \"api_base_url\": \"https://api.venice.ai/api/v1/chat/completions\",\r\n  \"api_key\": \"VENICE-INFERENCE-KEY-xxx\",\r\n  \"models\": [\"claude-opus-45\", \"claude-sonnet-45\"],\r\n  \"transformer\": {\r\n    \"use\": [\"anthropic\"]\r\n  }\r\n}\r\n```\r\n\r\n## Reference\r\n- Venice Claude Code documentation: https://docs.venice.ai/overview/guides/claude-code\r\n- How to Use Claude Code Without Paying $100/Month (Using Venice): https://www.youtube.com/watch?v=gtIuDDSy9HU",
      "created_at": "2026-02-02T08:54:41Z",
      "updated_at": "2026-02-02T09:00:25Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "dfbac452a786a375843743264bf05a5ec6fcc059",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "woodenfurniture:add-venice-provider",
        "ref": "add-venice-provider",
        "sha": "530a111ada523eddc4902af387308e23ee295e30",
        "user": {
          "login": "woodenfurniture",
          "id": 125113430,
          "node_id": "U_kgDOB3UUVg",
          "avatar_url": "https://avatars.githubusercontent.com/u/125113430?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/woodenfurniture",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1147817989,
          "node_id": "R_kgDORGpQBQ",
          "name": "claude-code-router",
          "full_name": "woodenfurniture/claude-code-router",
          "private": false,
          "owner": {
            "login": "woodenfurniture",
            "id": 125113430,
            "node_id": "U_kgDOB3UUVg",
            "avatar_url": "https://avatars.githubusercontent.com/u/125113430?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/woodenfurniture",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/woodenfurniture/claude-code-router",
          "created_at": "2026-02-02T08:42:13Z",
          "updated_at": "2026-02-02T08:42:14Z",
          "pushed_at": "2026-02-02T08:50:39Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11483,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1190"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1190"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1190"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1190/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1190/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1190/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/530a111ada523eddc4902af387308e23ee295e30"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1184",
      "id": 3230739563,
      "node_id": "PR_kwDON-_mZc7AkSxr",
      "number": 1184,
      "state": "open",
      "locked": false,
      "title": "feat: Update router example to parse multimodal user messages from array or string content.",
      "user": {
        "login": "chenyw1990",
        "id": 1468240,
        "node_id": "MDQ6VXNlcjE0NjgyNDA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1468240?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chenyw1990",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "完善router文档，解决样例无法覆盖content是array的情况",
      "created_at": "2026-01-31T13:10:34Z",
      "updated_at": "2026-02-01T14:01:53Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "0539d652eb6fe4ebb6bf3c1496ad38ea9f3573d7",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "chenyw1990:main",
        "ref": "main",
        "sha": "a3cad278e0a16c21a28ca5ce19aa0dec8b301ee9",
        "user": {
          "login": "chenyw1990",
          "id": 1468240,
          "node_id": "MDQ6VXNlcjE0NjgyNDA=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1468240?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/chenyw1990",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1146655424,
          "node_id": "R_kgDORFiSwA",
          "name": "claude-code-router",
          "full_name": "chenyw1990/claude-code-router",
          "private": false,
          "owner": {
            "login": "chenyw1990",
            "id": 1468240,
            "node_id": "MDQ6VXNlcjE0NjgyNDA=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1468240?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/chenyw1990",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/chenyw1990/claude-code-router",
          "created_at": "2026-01-31T13:10:15Z",
          "updated_at": "2026-01-31T13:10:26Z",
          "pushed_at": "2026-01-31T13:10:19Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11484,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1184"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1184"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1184"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1184/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1184/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1184/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/a3cad278e0a16c21a28ca5ce19aa0dec8b301ee9"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1179",
      "id": 3221353124,
      "node_id": "PR_kwDON-_mZc7AAfKk",
      "number": 1179,
      "state": "open",
      "locked": false,
      "title": "feat: add handleError hook to custom router for dynamic failover",
      "user": {
        "login": "LouisLau-art",
        "id": 75191942,
        "node_id": "MDQ6VXNlcjc1MTkxOTQy",
        "avatar_url": "https://avatars.githubusercontent.com/u/75191942?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LouisLau-art",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "### Description\nThis PR introduces a new `handleError` hook to the custom router script. This allows users to dynamically determine a fallback model when a provider returns an error (e.g., HTTP 429 Rate Limit).\n\n### Why is this needed?\nWhen using tools like **Claude Code**, hitting rate limits on a specific model often causes the entire session to fail. While the project has a static fallback configuration, it doesn't allow for the dynamic, programmable logic required to switch providers or models based on the specific error context.\n\n### Changes\n- Updated `packages/core/src/api/routes.ts`:\n  - Added a check for the `handleError` method in the custom router script.\n  - If present, `handleError(providerName, modelName, statusCode, error)` is called.\n  - The return value (if a string) is prioritized as the fallback model.\n  - Maintained backward compatibility by falling back to the static `fallback` config if the hook isn't used.\n\n### Usage Example in custom-router.js\n```javascript\nmodule.exports = {\n  handleError: async (provider, model, status, error) => {\n    if (status === 429 && model.includes('claude-3-5-sonnet')) {\n      return 'openai/gpt-4o'; // Dynamically switch to GPT-4o on rate limit\n    }\n    return null;\n  }\n};\n```",
      "created_at": "2026-01-29T02:10:01Z",
      "updated_at": "2026-01-29T02:10:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "adef44491e9bd5d503e30f3de9e9aff59314b85b",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "LouisLau-art:feat/custom-router-error-hook",
        "ref": "feat/custom-router-error-hook",
        "sha": "309975da1dfbb71793ee354008d4de88b304bc8a",
        "user": {
          "login": "LouisLau-art",
          "id": 75191942,
          "node_id": "MDQ6VXNlcjc1MTkxOTQy",
          "avatar_url": "https://avatars.githubusercontent.com/u/75191942?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/LouisLau-art",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1144743384,
          "node_id": "R_kgDORDtl2A",
          "name": "claude-code-router",
          "full_name": "LouisLau-art/claude-code-router",
          "private": false,
          "owner": {
            "login": "LouisLau-art",
            "id": 75191942,
            "node_id": "MDQ6VXNlcjc1MTkxOTQy",
            "avatar_url": "https://avatars.githubusercontent.com/u/75191942?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/LouisLau-art",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/LouisLau-art/claude-code-router",
          "created_at": "2026-01-29T02:06:18Z",
          "updated_at": "2026-01-29T02:06:19Z",
          "pushed_at": "2026-01-29T02:09:24Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11483,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1179"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1179"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1179"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1179/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1179/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1179/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/309975da1dfbb71793ee354008d4de88b304bc8a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1169",
      "id": 3205462834,
      "node_id": "PR_kwDON-_mZc6_D3sy",
      "number": 1169,
      "state": "open",
      "locked": false,
      "title": "use CleanThinkingInMessageTransformer in openai model",
      "user": {
        "login": "ThousandOfWind",
        "id": 21994238,
        "node_id": "MDQ6VXNlcjIxOTk0MjM4",
        "avatar_url": "https://avatars.githubusercontent.com/u/21994238?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ThousandOfWind",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "how to config\r\n\r\n```\r\n    {\r\n      \"name\": \"azureopenai\",\r\n      \"api_base_url\": \"https://<xxx>/openai/responses?api-version=2025-04-01-preview\",\r\n      \"api_key\": \"xxx\",\r\n      \"models\": [\r\n        \"gpt-5.2-codex\",\r\n        \"gpt-4.1\"\r\n      ],\r\n      \"transformer\": {\r\n        \"use\": [\r\n          \"cleancache\",\r\n          \"cleanThinkingInMessage\",\r\n          \"openai-responses\",\r\n          \"max_output_tokens\"\r\n        ]\r\n      }\r\n    }\r\n```\r\n\r\n\r\nto fix issue\r\n\r\n>{\"level\":50,\"time\":1769183247463,\"pid\":21265,\"hostname\":\"Mac\",\"reqId\":\"req-3\",\"err\":{\"type\":\"Error\",\"message\":\"Error from provider(azureopenai,gpt-5.2-codex: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: 'input[42].thinking'.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"input[42].thinking\\\",\\n    \\\"code\\\": \\\"unknown_parameter\\\"\\n  }\\n}\",\"stack\":\"Error: Error from provider(azureopenai,gpt-5.2-codex: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: 'input[42].thinking'.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"input[42].thinking\\\",\\n    \\\"code\\\": \\\"unknown_parameter\\\"\\n  }\\n}\\n    at Vn (/Users/zhuzhirui/vscodeworkspace/claude-code-router/dist/cli.js:582:7451)\\n    at dD (/Users/zhuzhirui/vscodeworkspace/claude-code-router/dist/cli.js:582:11338)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\\n    at async AN (/Users/zhuzhirui/vscodeworkspace/claude-code-router/dist/cli.js:582:8659)\",\"statusCode\":400,\"code\":\"provider_response_error\"},\"msg\":\"Error from provider(azureopenai,gpt-5.2-codex: 400): {\\n  \\\"error\\\": {\\n    \\\"message\\\": \\\"Unknown parameter: 'input[42].thinking'.\\\",\\n    \\\"type\\\": \\\"invalid_request_error\\\",\\n    \\\"param\\\": \\\"input[42].thinking\\\",\\n    \\\"code\\\": \\\"unknown_parameter\\\"\\n  }\\n}\"}\r\n",
      "created_at": "2026-01-24T01:43:26Z",
      "updated_at": "2026-01-24T01:45:07Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "2fd3fec051ac54ef92bc1407f3f3d967f7ea8394",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ThousandOfWind:julie/support-think",
        "ref": "julie/support-think",
        "sha": "5247003a1bad7459d41430bb8b34a7f0991131ac",
        "user": {
          "login": "ThousandOfWind",
          "id": 21994238,
          "node_id": "MDQ6VXNlcjIxOTk0MjM4",
          "avatar_url": "https://avatars.githubusercontent.com/u/21994238?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ThousandOfWind",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1140954572,
          "node_id": "R_kgDORAGVzA",
          "name": "claude-code-router",
          "full_name": "ThousandOfWind/claude-code-router",
          "private": false,
          "owner": {
            "login": "ThousandOfWind",
            "id": 21994238,
            "node_id": "MDQ6VXNlcjIxOTk0MjM4",
            "avatar_url": "https://avatars.githubusercontent.com/u/21994238?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ThousandOfWind",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/ThousandOfWind/claude-code-router",
          "created_at": "2026-01-24T01:39:19Z",
          "updated_at": "2026-01-24T15:25:48Z",
          "pushed_at": "2026-01-26T15:12:56Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11471,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1169"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1169"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1169"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1169/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1169/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1169/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/5247003a1bad7459d41430bb8b34a7f0991131ac"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1165",
      "id": 3200453946,
      "node_id": "PR_kwDON-_mZc6-ww06",
      "number": 1165,
      "state": "open",
      "locked": false,
      "title": "fix: preserve DeepSeek cache metadata in Anthropic transformer",
      "user": {
        "login": "AmirBabar",
        "id": 34877509,
        "node_id": "MDQ6VXNlcjM0ODc3NTA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/34877509?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AmirBabar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Problem\r\n\r\nDeepSeek API returns valuable cache statistics (`prompt_cache_hit_tokens`, `prompt_cache_miss_tokens`) that enable cost optimization and performance monitoring. However, when using DeepSeek with CCR, these fields were being lost during response transformation.\r\n\r\n### Root Cause\r\nThe Anthropic transformer only checked `prompt_tokens_details.cached_tokens` (OpenAI standard field) but DeepSeek returns cache data in `prompt_cache_hit_tokens` (DeepSeek-specific field).\r\n\r\n### Impact\r\nUsers couldn't see cache hit rates, making it difficult to:\r\n- Optimize prompt design for caching\r\n- Monitor cost savings from cache usage\r\n- Debug cache-related issues\r\n\r\n## Solution\r\n\r\nAdded fallback logic in the Anthropic transformer to handle both cache field formats:\r\n\r\n```typescript\r\nprivate getCachedTokens(usage: any): number {\r\n  return usage?.prompt_tokens_details?.cached_tokens ||\r\n         usage?.prompt_cache_hit_tokens ||\r\n         0;\r\n}\r\n```\r\n**Changes:**\r\n\r\nUpdated 6 locations in `anthropic.transformer.ts` (4 streaming, 2 non-streaming)\r\n\r\nAdded comprehensive documentation in `docs/docs/server/config/deepseek-transformer.md`\r\n\r\n## Configuration\r\nUsers must configure DeepSeek provider to use transformer chain:\r\n```json\r\n{\r\n  \"Providers\": [\r\n    {\r\n      \"name\": \"deepseek\",\r\n      \"transformer\": {\r\n        \"use\": [\"deepseek\", \"anthropic\"]\r\n      }\r\n    }\r\n  ]\r\n}\r\n```\r\nThe `anthropic` transformer:\r\n\r\nConverts OpenAI format → Anthropic format\r\n\r\nMaps cache fields: `prompt_cache_hit_tokens` → `cache_read_input_tokens`\r\n\r\n##Testing\r\nTested with real DeepSeek API requests:\r\n\r\nBefore fix:\r\n```json\r\n{\r\n  \"usage\": {\r\n    \"input_tokens\": 355,\r\n    \"output_tokens\": 50,\r\n    \"cache_read_input_tokens\": 0  // ❌ Lost\r\n  }\r\n}\r\n```\r\nAfter fix:\r\n\r\n```json\r\n{\r\n  \"usage\": {\r\n    \"input_tokens\": 355,\r\n    \"output_tokens\": 50,\r\n    \"cache_read_input_tokens\": 320  // ✅ Shows 90% cache hit!\r\n  }\r\n}\r\n```\r\n## Test Results\r\n\r\n- Request 1 (cold): `cache_read_input_tokens: 0` ✅\r\n- Request 2 (warm): `cache_read_input_tokens: 320` (90.1% cache hit) ✅   \r\n- Both streaming and non-streaming responses work ✅\r\n    \r\n\r\n## Documentation\r\n\r\nAdded comprehensive documentation:\r\n\r\n- Configuration examples   \r\n- Troubleshooting guide   \r\n- Cross-platform testing examples (curl)    \r\n- Performance metrics\r\n    \r\n\r\n## Backward Compatibility\r\n\r\n✅ **No breaking changes**\r\n- Existing configurations continue to work    \r\n- Only adds fallback logic for additional field    \r\n- OpenAI-standard providers unaffected\r\n    \r\n\r\n## Checklist\r\n\r\n-  Code changes tested locally   \r\n-  Documentation added\r\n-  Backward compatible    \r\n-  No breaking changes    \r\n-  Cross-platform examples provided",
      "created_at": "2026-01-22T18:23:34Z",
      "updated_at": "2026-01-22T18:23:34Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "314609b3989ef186c7919dba3a3b156f64f89063",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "AmirBabar:fix/cache-preservation",
        "ref": "fix/cache-preservation",
        "sha": "a911c46e5bd6828cdc626d32d9da2842dd5ec505",
        "user": {
          "login": "AmirBabar",
          "id": 34877509,
          "node_id": "MDQ6VXNlcjM0ODc3NTA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/34877509?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AmirBabar",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1139746022,
          "node_id": "R_kgDOQ-8k5g",
          "name": "claude-code-router",
          "full_name": "AmirBabar/claude-code-router",
          "private": false,
          "owner": {
            "login": "AmirBabar",
            "id": 34877509,
            "node_id": "MDQ6VXNlcjM0ODc3NTA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/34877509?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/AmirBabar",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/AmirBabar/claude-code-router",
          "created_at": "2026-01-22T11:06:41Z",
          "updated_at": "2026-01-22T11:06:41Z",
          "pushed_at": "2026-01-27T20:21:47Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11506,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1165"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1165"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1165"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1165/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1165/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1165/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/a911c46e5bd6828cdc626d32d9da2842dd5ec505"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1164",
      "id": 3199448134,
      "node_id": "PR_kwDON-_mZc6-s7RG",
      "number": 1164,
      "state": "open",
      "locked": false,
      "title": "feat: add stateful routing with lifecycle hooks",
      "user": {
        "login": "AmirBabar",
        "id": 34877509,
        "node_id": "MDQ6VXNlcjM0ODc3NTA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/34877509?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AmirBabar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\nAdds stateful routing with lifecycle hooks for advanced request management including queueing, rate limiting, and state persistence between requests.\r\n\r\n## Motivation\r\nCurrent custom routers are stateless functions that can't manage request flow or remember state between calls. This makes it difficult to:\r\n- Implement rate limiting\r\n- Queue requests for providers with strict limits\r\n- Track request history for optimization\r\n- Manage concurrent request limits\r\n\r\n## Features\r\n- ✅ Lifecycle hooks (preRequest, postRequest, onError)\r\n- ✅ Request queueing support\r\n- ✅ State management between requests\r\n- ✅ Full backward compatibility with function-based routers\r\n\r\n## Changes\r\n- Added `RouterWithHooks` interface in `packages/server/src/types/router.ts`\r\n- Updated router execution logic in `packages/server/src/index.ts`\r\n- Added example implementation in `examples/stateful-router.js`\r\n- Created documentation in `docs/LIFECYCLE_HOOKS.md`\r\n\r\n## Testing\r\nAll tests passed successfully:\r\n- ✅ Single request handling\r\n- ✅ Concurrent request queueing (3 parallel requests)\r\n- ✅ Backward compatibility (works without custom router)\r\n\r\nSee `TEST_RESULTS.md` for detailed test evidence and log analysis.\r\n\r\n## Breaking Changes\r\nNone - fully backward compatible with existing router configurations.\r\n\r\n## Example Usage\r\n```javascript\r\nmodule.exports = {\r\n  state: { queue: [], processing: false },\r\n  \r\n  async preRequest(request, context) {\r\n    // Queue management logic\r\n  },\r\n  \r\n  async route(request, context) {\r\n    return { provider: 'zai', model: 'glm-4.7' };\r\n  },\r\n  \r\n  async postRequest(request, response, context) {\r\n    // State cleanup\r\n  }\r\n};\r\n```",
      "created_at": "2026-01-22T13:45:38Z",
      "updated_at": "2026-01-22T13:45:38Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "ec1b7dc33f6588e87ee7f4caa92247bec40f13fe",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "AmirBabar:concurrency_tracking",
        "ref": "concurrency_tracking",
        "sha": "99a2e3d9cbfce8cbee59428dd8de6288e221aef8",
        "user": {
          "login": "AmirBabar",
          "id": 34877509,
          "node_id": "MDQ6VXNlcjM0ODc3NTA5",
          "avatar_url": "https://avatars.githubusercontent.com/u/34877509?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AmirBabar",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1139746022,
          "node_id": "R_kgDOQ-8k5g",
          "name": "claude-code-router",
          "full_name": "AmirBabar/claude-code-router",
          "private": false,
          "owner": {
            "login": "AmirBabar",
            "id": 34877509,
            "node_id": "MDQ6VXNlcjM0ODc3NTA5",
            "avatar_url": "https://avatars.githubusercontent.com/u/34877509?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/AmirBabar",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/AmirBabar/claude-code-router",
          "created_at": "2026-01-22T11:06:41Z",
          "updated_at": "2026-01-22T11:06:41Z",
          "pushed_at": "2026-01-27T20:21:47Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11506,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1164"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1164"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1164"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1164/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1164/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1164/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/99a2e3d9cbfce8cbee59428dd8de6288e221aef8"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1152",
      "id": 3186789760,
      "node_id": "PR_kwDON-_mZc698o2A",
      "number": 1152,
      "state": "open",
      "locked": false,
      "title": "修复：不支持图片问题（图片前缀误处理）及字段兼容性",
      "user": {
        "login": "guotd",
        "id": 7185356,
        "node_id": "MDQ6VXNlcjcxODUzNTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7185356?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/guotd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- 针对非 Claude 模型，移除特有字段（reasoning、thinking、cache_control、media_type），提升兼容性\r\n- 优化图片 URL 格式化逻辑，防止 data URI 前缀重复拼接，确保推理链路稳定\r\n\r\n该变更解决了图片多模型转发时因格式或冗余参数导致的推理/上传异常，改善了系统稳定性和可拓展性，便于后续多模型扩展。",
      "created_at": "2026-01-19T08:16:37Z",
      "updated_at": "2026-01-20T10:00:52Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "546b6032a0734e543408d6f90b3080ee210d1b5a",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "guotd:fix/image-double-prefix",
        "ref": "fix/image-double-prefix",
        "sha": "22ab526ce30956710ce5de01fb7dac828873f0ac",
        "user": {
          "login": "guotd",
          "id": 7185356,
          "node_id": "MDQ6VXNlcjcxODUzNTY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7185356?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/guotd",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1137315150,
          "node_id": "R_kgDOQ8oNTg",
          "name": "claude-code-router",
          "full_name": "guotd/claude-code-router",
          "private": false,
          "owner": {
            "login": "guotd",
            "id": 7185356,
            "node_id": "MDQ6VXNlcjcxODUzNTY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7185356?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/guotd",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/guotd/claude-code-router",
          "created_at": "2026-01-19T07:58:41Z",
          "updated_at": "2026-01-19T07:58:41Z",
          "pushed_at": "2026-01-19T08:13:41Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11465,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1152"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1152"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1152"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1152/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1152/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1152/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/22ab526ce30956710ce5de01fb7dac828873f0ac"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1147",
      "id": 3179659708,
      "node_id": "PR_kwDON-_mZc69hcG8",
      "number": 1147,
      "state": "open",
      "locked": false,
      "title": "Fix links in quick-start documentation",
      "user": {
        "login": "zhongzhong4zz",
        "id": 169514263,
        "node_id": "U_kgDOChqVFw",
        "avatar_url": "https://avatars.githubusercontent.com/u/169514263?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/zhongzhong4zz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "I found that former links[`quick-start.md#L73-L75`](https://github.com/musistudio/claude-code-router/blob/c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae/docs/docs/cli/quick-start.md?plain=1#L73-L75) are invalid. Correct links might be this. Hopefully, I didn't get anything wrong. Please let me know if you want further communication. I'm always willing to help!",
      "created_at": "2026-01-16T03:56:54Z",
      "updated_at": "2026-01-16T03:56:54Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "236a854e0c07d61d4435d15fea0cf1edbc48c751",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "zhongzhong4zz:patch-1",
        "ref": "patch-1",
        "sha": "48096e74614fd6c1ee8adb41f56bbc5dc06aa5bd",
        "user": {
          "login": "zhongzhong4zz",
          "id": 169514263,
          "node_id": "U_kgDOChqVFw",
          "avatar_url": "https://avatars.githubusercontent.com/u/169514263?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/zhongzhong4zz",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1135400280,
          "node_id": "R_kgDOQ6zVWA",
          "name": "claude-code-router",
          "full_name": "zhongzhong4zz/claude-code-router",
          "private": false,
          "owner": {
            "login": "zhongzhong4zz",
            "id": 169514263,
            "node_id": "U_kgDOChqVFw",
            "avatar_url": "https://avatars.githubusercontent.com/u/169514263?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/zhongzhong4zz",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/zhongzhong4zz/claude-code-router",
          "created_at": "2026-01-16T03:30:21Z",
          "updated_at": "2026-01-16T03:30:21Z",
          "pushed_at": "2026-01-16T03:42:16Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11483,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1147"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1147"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1147"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1147/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1147/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1147/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/48096e74614fd6c1ee8adb41f56bbc5dc06aa5bd"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1141",
      "id": 3173055222,
      "node_id": "PR_kwDON-_mZc69IPr2",
      "number": 1141,
      "state": "open",
      "locked": false,
      "title": "Fix typings and allow override of HOME_DIR",
      "user": {
        "login": "iongion",
        "id": 867609,
        "node_id": "MDQ6VXNlcjg2NzYwOQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/867609?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/iongion",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "When I was trying `pnpm dev:cli start` - there were some complaints about typings (they did not show up in `pnpm build`)\r\n\r\n- Also reapplies this https://github.com/musistudio/claude-code-router/pull/982\r\n",
      "created_at": "2026-01-14T11:02:32Z",
      "updated_at": "2026-01-14T11:02:32Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "18896eff1c1ccfa654774b73475e7c16c13ddb31",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "iongion:fix-typings-override-home-dir",
        "ref": "fix-typings-override-home-dir",
        "sha": "6729bb872bcb399b99b7a9a939d8f41dbe1c1469",
        "user": {
          "login": "iongion",
          "id": 867609,
          "node_id": "MDQ6VXNlcjg2NzYwOQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/867609?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/iongion",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1134153390,
          "node_id": "R_kgDOQ5nOrg",
          "name": "claude-code-router",
          "full_name": "iongion/claude-code-router",
          "private": false,
          "owner": {
            "login": "iongion",
            "id": 867609,
            "node_id": "MDQ6VXNlcjg2NzYwOQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/867609?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/iongion",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/iongion/claude-code-router",
          "created_at": "2026-01-14T10:22:18Z",
          "updated_at": "2026-01-14T10:22:18Z",
          "pushed_at": "2026-01-14T10:58:48Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11491,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1141"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1141"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1141"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1141/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1141/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1141/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/6729bb872bcb399b99b7a9a939d8f41dbe1c1469"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1128",
      "id": 3154111470,
      "node_id": "PR_kwDON-_mZc67_-vu",
      "number": 1128,
      "state": "open",
      "locked": false,
      "title": "Examples + documentation",
      "user": {
        "login": "saidelike",
        "id": 387346,
        "node_id": "MDQ6VXNlcjM4NzM0Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/387346?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/saidelike",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- translate examples/README.md from Chinese to English\r\n- review main README.md titles and hierarchy + link to examples/READMEs\r\n- add .json config example showing how to use OpenAI models with Claude Code",
      "created_at": "2026-01-07T22:10:52Z",
      "updated_at": "2026-01-07T22:13:18Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "3f176ca2fcf04e21ece60eb502be1b494f0146c2",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "saidelike:examples-improvement",
        "ref": "examples-improvement",
        "sha": "9e24bca2f607cd25c8b017921c44fae804ece2db",
        "user": {
          "login": "saidelike",
          "id": 387346,
          "node_id": "MDQ6VXNlcjM4NzM0Ng==",
          "avatar_url": "https://avatars.githubusercontent.com/u/387346?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/saidelike",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1129968725,
          "node_id": "R_kgDOQ1n0VQ",
          "name": "claude-code-router",
          "full_name": "saidelike/claude-code-router",
          "private": false,
          "owner": {
            "login": "saidelike",
            "id": 387346,
            "node_id": "MDQ6VXNlcjM4NzM0Ng==",
            "avatar_url": "https://avatars.githubusercontent.com/u/387346?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/saidelike",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/saidelike/claude-code-router",
          "created_at": "2026-01-07T20:59:53Z",
          "updated_at": "2026-01-07T20:59:53Z",
          "pushed_at": "2026-01-07T22:09:14Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11460,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1128"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1128"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1128"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1128/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1128/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1128/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/9e24bca2f607cd25c8b017921c44fae804ece2db"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1122",
      "id": 3151003004,
      "node_id": "PR_kwDON-_mZc670H18",
      "number": 1122,
      "state": "open",
      "locked": false,
      "title": "Claude/fix agent tool params i t uef",
      "user": {
        "login": "saint0x",
        "id": 127888557,
        "node_id": "U_kgDOB59srQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/127888557?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/saint0x",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2026-01-07T00:25:10Z",
      "updated_at": "2026-01-07T00:31:36Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "saint0x:claude/fix-agent-tool-params-iTUef",
        "ref": "claude/fix-agent-tool-params-iTUef",
        "sha": "2ca15828149582b19618003fb75df602cacd7759",
        "user": {
          "login": "saint0x",
          "id": 127888557,
          "node_id": "U_kgDOB59srQ",
          "avatar_url": "https://avatars.githubusercontent.com/u/127888557?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/saint0x",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1125956419,
          "node_id": "R_kgDOQxy7Qw",
          "name": "mycode",
          "full_name": "saint0x/mycode",
          "private": false,
          "owner": {
            "login": "saint0x",
            "id": 127888557,
            "node_id": "U_kgDOB59srQ",
            "avatar_url": "https://avatars.githubusercontent.com/u/127888557?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/saint0x",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "exploratory personal coding harness -- cc mitm",
          "fork": true,
          "url": "https://api.github.com/repos/saint0x/mycode",
          "created_at": "2025-12-31T18:15:03Z",
          "updated_at": "2026-01-07T23:36:28Z",
          "pushed_at": "2026-01-07T22:21:04Z",
          "homepage": "",
          "size": 10729,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1122"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1122"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1122"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1122/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1122/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1122/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/2ca15828149582b19618003fb75df602cacd7759"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1121",
      "id": 3150282999,
      "node_id": "PR_kwDON-_mZc67xYD3",
      "number": 1121,
      "state": "open",
      "locked": false,
      "title": "Fix #402: --print flag not being handled correctly",
      "user": {
        "login": "imtiyazakiwat",
        "id": 94955223,
        "node_id": "U_kgDOBajm1w",
        "avatar_url": "https://avatars.githubusercontent.com/u/94955223?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/imtiyazakiwat",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Problem\n\n`ccr code -p \"prompt\"` or `ccr code --print \"prompt\"` doesn't work - it opens interactive mode instead of running in print/headless mode.\n\n## Root Cause\n\nIn `packages/cli/src/utils/codeCommand.ts`, the `executeCodeCommand` function had broken argument handling:\n\n1. Used minimist to parse args into `argsObj`\n2. Reconstructed args into `argsArr` but **ignored `argsObj._`** (positional arguments containing the prompt)\n3. Concatenated flag values like `-p \"prompt\"` as a single string instead of separate args\n4. Used `shell: true` which caused additional parsing issues\n\n## Solution\n\n- Pass flag values as separate arguments instead of concatenated strings\n- Include positional arguments from `argsObj._` (the prompt text after `-p`)\n- Change `shell: true` to `shell: false` for proper argument handling\n- Remove unused `shell-quote` import and `joinedArgs` variable\n\n## Testing\n\nAfter the fix, these commands work correctly:\n\n```bash\nccr code -p \"Hello world\"  # runs non-interactively, prints response\nccr code --print \"Hello world\"  # same behavior\nccr code -p \"Create a file\" --dangerously-skip-permissions  # runs with permissions bypassed\n```\n\nTested locally and confirmed the fix works as expected.\n\nCloses #402",
      "created_at": "2026-01-06T18:24:22Z",
      "updated_at": "2026-01-06T18:24:22Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "298a36dd937a18890518b39ffa246b7de7ee7569",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "imtiyazakiwat:fix/issue-402-print-flag-handling",
        "ref": "fix/issue-402-print-flag-handling",
        "sha": "5538de440eb8e6b05ab73029e70059a7e18920dc",
        "user": {
          "login": "imtiyazakiwat",
          "id": 94955223,
          "node_id": "U_kgDOBajm1w",
          "avatar_url": "https://avatars.githubusercontent.com/u/94955223?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/imtiyazakiwat",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1129182980,
          "node_id": "R_kgDOQ033BA",
          "name": "claude-code-router",
          "full_name": "imtiyazakiwat/claude-code-router",
          "private": false,
          "owner": {
            "login": "imtiyazakiwat",
            "id": 94955223,
            "node_id": "U_kgDOBajm1w",
            "avatar_url": "https://avatars.githubusercontent.com/u/94955223?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/imtiyazakiwat",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/imtiyazakiwat/claude-code-router",
          "created_at": "2026-01-06T18:14:27Z",
          "updated_at": "2026-01-06T18:14:27Z",
          "pushed_at": "2026-01-06T18:24:01Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11472,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1121"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1121"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1121"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1121/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1121/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1121/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/5538de440eb8e6b05ab73029e70059a7e18920dc"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4,
        402
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1120",
      "id": 3150273262,
      "node_id": "PR_kwDON-_mZc67xVru",
      "number": 1120,
      "state": "open",
      "locked": false,
      "title": "feat: add Mistral transformer for direct API support",
      "user": {
        "login": "unmodeled-tyler",
        "id": 219877912,
        "node_id": "U_kgDODRsSGA",
        "avatar_url": "https://avatars.githubusercontent.com/u/219877912?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/unmodeled-tyler",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nThis PR adds a built-in `MistralTransformer` that enables direct integration with the Mistral AI API, resolving issue #509.\n\n## Changes\n\n- Added `mistral.transformer.ts` - handles conversion from Anthropic-style requests to Mistral's OpenAI-compatible format\n- Updated `index.ts` to export the new transformer\n\n## What it does\n\nThe transformer handles the key incompatibilities between Claude Code's request format and Mistral's API:\n\n- **Removes `cache_control` fields** - Mistral doesn't support Anthropic's caching hints\n- **Flattens array content to strings** - Converts `[{type: \"text\", text: \"...\"}]` to plain strings\n- **Converts `tool_choice`** - Maps `\"required\"` to `\"any\"` (Mistral's equivalent)\n- **Preserves image content** - Keeps array format when images are present\n\n## Usage\n\n```json\n{\n  \"Providers\": [\n    {\n      \"name\": \"mistral\",\n      \"api_base_url\": \"https://api.mistral.ai/v1/chat/completions\",\n      \"api_key\": \"$MISTRAL_API_KEY\",\n      \"models\": [\"devstral-2512\", \"mistral-large-latest\", \"codestral-latest\"],\n      \"transformer\": {\n        \"use\": [\"mistral\"]\n      }\n    }\n  ],\n  \"Router\": {\n    \"default\": \"mistral,devstral-2512\"\n  }\n}\n```\n\n## Testing\n\nTested with:\n- Devstral 2 (`devstral-2512`) - Mistral's new 123B coding model\n- `mistral-large-latest`\n- `codestral-latest`\n\nFixes #509",
      "created_at": "2026-01-06T18:21:20Z",
      "updated_at": "2026-01-06T18:29:04Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "bebb5510a7ec3caebf0a9a2db5cb9e3897cec530",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "unmodeled-tyler:feat/mistral-transformer",
        "ref": "feat/mistral-transformer",
        "sha": "7357d37205b0c08cc4b72ba292f195634da798db",
        "user": {
          "login": "unmodeled-tyler",
          "id": 219877912,
          "node_id": "U_kgDODRsSGA",
          "avatar_url": "https://avatars.githubusercontent.com/u/219877912?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/unmodeled-tyler",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1129184709,
          "node_id": "R_kgDOQ039xQ",
          "name": "claude-code-router-mistral-support",
          "full_name": "unmodeled-tyler/claude-code-router-mistral-support",
          "private": false,
          "owner": {
            "login": "unmodeled-tyler",
            "id": 219877912,
            "node_id": "U_kgDODRsSGA",
            "avatar_url": "https://avatars.githubusercontent.com/u/219877912?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/unmodeled-tyler",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Adds support for the Mistral API to claude code router",
          "fork": true,
          "url": "https://api.github.com/repos/unmodeled-tyler/claude-code-router-mistral-support",
          "created_at": "2026-01-06T18:17:44Z",
          "updated_at": "2026-01-06T18:17:44Z",
          "pushed_at": "2026-01-06T18:29:03Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11458,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1120"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1120"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1120"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1120/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1120/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1120/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/7357d37205b0c08cc4b72ba292f195634da798db"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        5,
        509
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1115",
      "id": 3147848586,
      "node_id": "PR_kwDON-_mZc67oFuK",
      "number": 1115,
      "state": "open",
      "locked": false,
      "title": "feat: add ALLOWED_ORIGINS configuration support",
      "user": {
        "login": "yicone",
        "id": 229222,
        "node_id": "MDQ6VXNlcjIyOTIyMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/229222?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yicone",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nThis PR adds support for custom CORS origins through the `ALLOWED_ORIGINS` configuration option, allowing users to access the CCR UI through proxies or custom domains.\n\n## Problem\n\nCurrently, CCR only allows CORS requests from `http://127.0.0.1:PORT` and `http://localhost:PORT`. Users who access the UI through a proxy, reverse proxy, or custom domain encounter CORS 403 errors when trying to save configurations.\n\n## Solution\n\nAdd `ALLOWED_ORIGINS` configuration array that allows users to specify additional allowed origins:\n\n```json\n{\n  \"ALLOWED_ORIGINS\": [\"http://custom-domain.local\", \"http://my-proxy:8080\"]\n}\n```\n\n## Changes\n\n### @CCR/server\n- `middleware/auth.ts`:\n  - New `getAllowedOrigins()` function: Combines default localhost origins with custom `ALLOWED_ORIGINS` from config\n  - New `isOriginAllowed()` function: Validates if a request origin is in the allowed list\n  - Updated CORS logic to use the actual requesting origin instead of hardcoded values\n  - Properly sets `Access-Control-Allow-Origin` header to the requesting origin (not wildcard)\n\n## Testing\n\n```bash\n# 1. Start CCR with custom origins\n# Add to config.json:\n{\n  \"ALLOWED_ORIGINS\": [\"http://my-proxy.local:8080\"]\n}\n\n# 2. Access UI through proxy\ncurl -H \"Origin: http://my-proxy.local:8080\" http://127.0.0.1:3456/v1/messages\n# Should succeed with Access-Control-Allow-Origin header\n\n# 3. Try unauthorized origin\ncurl -H \"Origin: http://evil.com\" http://127.0.0.1:3456/v1/messages\n# Should return 403 CORS not allowed\n```\n\n## Related Issues\n\n- #549 - CORS 403 error when saving from UI\n- Enables use cases where CCR is accessed through:\n  - Reverse proxies (nginx, Apache)\n  - Custom domains\n  - Docker containers with port mapping\n  - Development environments with custom hosts\n\n## Security Considerations\n\n- Origins must be explicitly configured in `ALLOWED_ORIGINS`\n- Default behavior unchanged (only localhost allowed)\n- No wildcard CORS - each origin must be specified\n- Origin validation happens before authentication\n",
      "created_at": "2026-01-06T00:33:05Z",
      "updated_at": "2026-01-06T04:44:40Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "abf7c99643f7b64294e7e84515eac2382400d140",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "yicone:feat/allowed-origins",
        "ref": "feat/allowed-origins",
        "sha": "1cece11ab7eb1e471209647a062ed5e591346ca3",
        "user": {
          "login": "yicone",
          "id": 229222,
          "node_id": "MDQ6VXNlcjIyOTIyMg==",
          "avatar_url": "https://avatars.githubusercontent.com/u/229222?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/yicone",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1123072233,
          "node_id": "R_kgDOQvC46Q",
          "name": "claude-code-router",
          "full_name": "yicone/claude-code-router",
          "private": false,
          "owner": {
            "login": "yicone",
            "id": 229222,
            "node_id": "MDQ6VXNlcjIyOTIyMg==",
            "avatar_url": "https://avatars.githubusercontent.com/u/229222?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/yicone",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/yicone/claude-code-router",
          "created_at": "2025-12-26T06:13:42Z",
          "updated_at": "2025-12-26T06:13:42Z",
          "pushed_at": "2026-01-05T17:59:43Z",
          "homepage": "",
          "size": 11465,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1115"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1115"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1115"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1115/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1115/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1115/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/1cece11ab7eb1e471209647a062ed5e591346ca3"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        5
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1110",
      "id": 3144513199,
      "node_id": "PR_kwDON-_mZc67bXav",
      "number": 1110,
      "state": "open",
      "locked": false,
      "title": "[Feature] add group commands",
      "user": {
        "login": "seho-dev",
        "id": 35763284,
        "node_id": "MDQ6VXNlcjM1NzYzMjg0",
        "avatar_url": "https://avatars.githubusercontent.com/u/35763284?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/seho-dev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "https://github.com/musistudio/claude-code-router/issues/1063",
      "created_at": "2026-01-04T15:20:22Z",
      "updated_at": "2026-01-04T15:20:22Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "73b4027da381810693e725645bfbd19e6e79e8a8",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "seho-dev:main",
        "ref": "main",
        "sha": "ef9c4dab9dc907f5368a7f8d00fbd7e6cbdbff28",
        "user": {
          "login": "seho-dev",
          "id": 35763284,
          "node_id": "MDQ6VXNlcjM1NzYzMjg0",
          "avatar_url": "https://avatars.githubusercontent.com/u/35763284?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/seho-dev",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1117264397,
          "node_id": "R_kgDOQpgaDQ",
          "name": "claude-code-router",
          "full_name": "seho-dev/claude-code-router",
          "private": false,
          "owner": {
            "login": "seho-dev",
            "id": 35763284,
            "node_id": "MDQ6VXNlcjM1NzYzMjg0",
            "avatar_url": "https://avatars.githubusercontent.com/u/35763284?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/seho-dev",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/seho-dev/claude-code-router",
          "created_at": "2025-12-16T04:19:53Z",
          "updated_at": "2026-01-04T15:13:27Z",
          "pushed_at": "2026-01-04T15:13:17Z",
          "homepage": "",
          "size": 11079,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1110"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1110"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1110"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1110/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1110/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1110/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/ef9c4dab9dc907f5368a7f8d00fbd7e6cbdbff28"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1101",
      "id": 3131430851,
      "node_id": "PR_kwDON-_mZc66pdfD",
      "number": 1101,
      "state": "open",
      "locked": false,
      "title": "fix: port configuration and runtime state management",
      "user": {
        "login": "yicone",
        "id": 229222,
        "node_id": "MDQ6VXNlcjIyOTIyMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/229222?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yicone",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nThis PR fixes issues related to port configuration when using the `SERVICE_PORT` environment variable to dynamically specify the service port.\n\n## Problems Solved\n\n1. **Runtime port persistence**: When starting with `SERVICE_PORT=58073 ccr start`, the actual port is now persisted to a separate runtime state file (`~/.claude-code-router/.runtime`)\n\n2. **`ccr status` shows correct port**: The status command now reads from the runtime state file and displays the actual running port instead of the config file port\n\n3. **`ccr activate` uses correct port**: Environment variables generated by `ccr activate` now use the actual runtime port\n\n## Changes\n\n### @CCR/shared\n- Add `RUNTIME_FILE` constant for runtime state persistence\n- New `runtimeState.ts` module with functions:\n  - `saveRuntimeState()` - persist runtime state on startup\n  - `getRuntimeState()` - read current runtime state\n  - `cleanupRuntimeState()` - cleanup on service stop\n  - `getRuntimePort()` - get runtime port with config fallback\n\n### @CCR/cli\n- `processCheck.ts`: `getServiceInfo()` now prioritizes runtime port over config port\n- `createEnvVariables.ts`: Uses `getRuntimePort()` for accurate port in env vars\n- `cli.ts`: Cleanup runtime state on `stop` and `restart` commands\n\n### @CCR/server\n- `index.ts`: Save runtime state on startup, cleanup on SIGINT/SIGTERM\n\n## Testing\n\n```bash\n# Start with custom port\nSERVICE_PORT=58073 ccr start\n\n# Verify status shows correct port\nccr status\n# Should show: Port: 58073\n\n# Verify activate uses correct port\neval \"$(ccr activate)\"\necho $ANTHROPIC_BASE_URL\n# Should show: http://127.0.0.1:58073\n```\n\n## Related Issues\n\n- #986 - Running multiple CCR instances\n- #801 - Status shows inconsistent after restart\n- #34 - EADDRINUSE port conflict (improved debugging)\n",
      "created_at": "2025-12-26T16:50:40Z",
      "updated_at": "2026-01-06T04:53:50Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "yicone:fix/port-configuration",
        "ref": "fix/port-configuration",
        "sha": "9d6b4676f17ee533394cdb2f2cc3af8ff877b320",
        "user": {
          "login": "yicone",
          "id": 229222,
          "node_id": "MDQ6VXNlcjIyOTIyMg==",
          "avatar_url": "https://avatars.githubusercontent.com/u/229222?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/yicone",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1123072233,
          "node_id": "R_kgDOQvC46Q",
          "name": "claude-code-router",
          "full_name": "yicone/claude-code-router",
          "private": false,
          "owner": {
            "login": "yicone",
            "id": 229222,
            "node_id": "MDQ6VXNlcjIyOTIyMg==",
            "avatar_url": "https://avatars.githubusercontent.com/u/229222?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/yicone",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/yicone/claude-code-router",
          "created_at": "2025-12-26T06:13:42Z",
          "updated_at": "2025-12-26T06:13:42Z",
          "pushed_at": "2026-01-05T17:59:43Z",
          "homepage": "",
          "size": 11465,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "b1e057f9f25abd42088baa81af46f794c7ddd561",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1101"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1101"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1101"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1101/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1101/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1101/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/9d6b4676f17ee533394cdb2f2cc3af8ff877b320"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        9,
        8,
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1089",
      "id": 3120574883,
      "node_id": "PR_kwDON-_mZc66ADGj",
      "number": 1089,
      "state": "open",
      "locked": false,
      "title": "feat(auth): support multiple API keys configuration",
      "user": {
        "login": "BigUncle",
        "id": 9360607,
        "node_id": "MDQ6VXNlcjkzNjA2MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9360607?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BigUncle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "  ## Summary\r\n\r\n  - Add support for configuring multiple API keys in authentication middleware\r\n  - Support array format: `[\"key1\", \"key2\", \"key3\"]`\r\n  - Support comma-separated string: `\"key1,key2,key3\"`\r\n  - Backward compatible with existing single-key configurations\r\n\r\n  ## Use Cases\r\n\r\n  - Team members using individual keys\r\n  - Key rotation without service interruption\r\n  - Environment-specific keys (dev/staging/prod)\r\n\r\n  ## Test plan\r\n\r\n  - [x] Test single key (legacy format) - ✅ works\r\n  - [x] Test comma-separated keys - ✅ works\r\n  - [x] Test array format keys - ✅ works\r\n  - [x] Test invalid key rejection - ✅ returns 401\r\n\r\n  ---\r\n\r\n  ## 概述\r\n\r\n  - 在认证中间件中添加多 API 密钥配置支持\r\n  - 支持数组格式：`[\"key1\", \"key2\", \"key3\"]`\r\n  - 支持逗号分隔字符串：`\"key1,key2,key3\"`\r\n  - 向后兼容现有的单密钥配置\r\n\r\n  ## 使用场景\r\n\r\n  - 团队成员使用独立密钥\r\n  - 密钥轮换时无需中断服务\r\n  - 不同环境使用不同密钥（开发/测试/生产）\r\n\r\n  ## 测试计划\r\n\r\n  - [x] 测试单密钥（旧格式）- ✅ 通过\r\n  - [x] 测试逗号分隔密钥 - ✅ 通过\r\n  - [x] 测试数组格式密钥 - ✅ 通过\r\n  - [x] 测试无效密钥拒绝 - ✅ 返回 401\r\n\r\n  🤖 Generated with [Claude Code](https://claude.com/claude-code)",
      "created_at": "2025-12-21T11:22:05Z",
      "updated_at": "2025-12-21T11:22:05Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "BigUncle:feature/multi-apikey-support",
        "ref": "feature/multi-apikey-support",
        "sha": "ba76f6767a1dd2f05d3f2c3f81f19cdf28164cc7",
        "user": {
          "login": "BigUncle",
          "id": 9360607,
          "node_id": "MDQ6VXNlcjkzNjA2MDc=",
          "avatar_url": "https://avatars.githubusercontent.com/u/9360607?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/BigUncle",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1027063687,
          "node_id": "R_kgDOPTe_hw",
          "name": "claude-code-router",
          "full_name": "BigUncle/claude-code-router",
          "private": false,
          "owner": {
            "login": "BigUncle",
            "id": 9360607,
            "node_id": "MDQ6VXNlcjkzNjA2MDc=",
            "avatar_url": "https://avatars.githubusercontent.com/u/9360607?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/BigUncle",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/BigUncle/claude-code-router",
          "created_at": "2025-07-27T08:25:37Z",
          "updated_at": "2025-12-21T13:31:44Z",
          "pushed_at": "2025-12-21T13:31:38Z",
          "homepage": "",
          "size": 9141,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 1,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 1,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "a7e20325dbb2a8827db0c9ee12924bdecfa19fd9",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1089"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1089"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1089"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1089/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1089/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1089/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/ba76f6767a1dd2f05d3f2c3f81f19cdf28164cc7"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1085",
      "id": 3120243308,
      "node_id": "PR_kwDON-_mZc65-yJs",
      "number": 1085,
      "state": "open",
      "locked": false,
      "title": "fix: statusline #1084",
      "user": {
        "login": "luochen1990",
        "id": 2309868,
        "node_id": "MDQ6VXNlcjIzMDk4Njg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luochen1990",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "修复状态栏（statusline）不见的问题。",
      "created_at": "2025-12-21T01:32:28Z",
      "updated_at": "2025-12-21T01:32:59Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "luochen1990:fix-statusline",
        "ref": "fix-statusline",
        "sha": "2ec26ca647b072520e42d5f4b619ad4394723957",
        "user": {
          "login": "luochen1990",
          "id": 2309868,
          "node_id": "MDQ6VXNlcjIzMDk4Njg=",
          "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/luochen1990",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1119446176,
          "node_id": "R_kgDOQrlkoA",
          "name": "claude-code-router",
          "full_name": "luochen1990/claude-code-router",
          "private": false,
          "owner": {
            "login": "luochen1990",
            "id": 2309868,
            "node_id": "MDQ6VXNlcjIzMDk4Njg=",
            "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/luochen1990",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/luochen1990/claude-code-router",
          "created_at": "2025-12-19T09:32:32Z",
          "updated_at": "2025-12-21T08:30:08Z",
          "pushed_at": "2025-12-21T08:30:01Z",
          "homepage": "",
          "size": 9137,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "patched"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "a7e20325dbb2a8827db0c9ee12924bdecfa19fd9",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1085"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1085"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1085"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1085/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1085/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1085/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/2ec26ca647b072520e42d5f4b619ad4394723957"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1080",
      "id": 3116978935,
      "node_id": "PR_kwDON-_mZc65yVL3",
      "number": 1080,
      "state": "open",
      "locked": false,
      "title": "feat: Add --claude-option/-C to forward additional options to Claude Code",
      "user": {
        "login": "luochen1990",
        "id": 2309868,
        "node_id": "MDQ6VXNlcjIzMDk4Njg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luochen1990",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\nAdd a new `--claude-option`/`-C` flag to the `ccr code` command that allows users to forward additional options to Claude Code, enabling fine-grained control over Claude Code's behavior while maintaining the routing functionality.\n\n## Changes\n- **Enhanced CLI**: Added `--claude-option`/`-C` flag to forward options to Claude Code\n- **Argument parsing**: Implemented custom parsing logic to handle options with values correctly\n- **Documentation**: Updated help text with comprehensive examples and syntax\n- **Project hygiene**: Removed unnecessary `package-lock.json` and updated `.gitignore`\n\n## Usage Examples\n```bash\n# Single option\nccr code \"Explain this code\" --claude-option \"--model claude-3-5-sonnet-20241022\"\n\n# Multiple options  \nccr code \"Write documentation\" --claude-option \"--model claude-3-5-sonnet\" --claude-option \"--max-tokens 2000\"\n\n# Short form\nccr code \"Help me debug\" -C \"--temperature 0.1\" -C \"--max-tokens 1500\"\n\n# Complex multi-parameter options\nccr code \"Optimize this function\" --claude-option \"--model claude-3-haiku --max-tokens 500 --temperature 0.1\"\n```\n\n## Technical Details\n- Manual argument parsing to properly handle options with values\n- Smart splitting of complex option strings while preserving quoted values  \n- Support for both `--claude-option=value` and `-C=value` syntax\n- Maintains full compatibility with existing ccr routing functionality\n- Supports all Claude Code CLI options (model, max-tokens, temperature, etc.)\n\n## Test Plan\n- [x] Build successfully with `npm run build`\n- [x] Help text displays new options correctly\n- [x] Argument parsing handles all test cases:\n  - Basic prompts without options\n  - Single and multiple claude-options\n  - Long and short form flags\n  - Quoted values and complex multi-parameter options\n  - Mixed syntax usage\n\n## Benefits\n- Enables fine-grained control over Claude Code behavior\n- Maintains all existing routing and configuration functionality\n- Intuitive syntax that follows CLI best practices\n- Comprehensive support for Claude Code's option set\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
      "created_at": "2025-12-19T09:35:28Z",
      "updated_at": "2025-12-19T09:35:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "luochen1990:feat-claude-option",
        "ref": "feat-claude-option",
        "sha": "585c753f0937c76fb7f537cbd50e588573148eda",
        "user": {
          "login": "luochen1990",
          "id": 2309868,
          "node_id": "MDQ6VXNlcjIzMDk4Njg=",
          "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/luochen1990",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1119446176,
          "node_id": "R_kgDOQrlkoA",
          "name": "claude-code-router",
          "full_name": "luochen1990/claude-code-router",
          "private": false,
          "owner": {
            "login": "luochen1990",
            "id": 2309868,
            "node_id": "MDQ6VXNlcjIzMDk4Njg=",
            "avatar_url": "https://avatars.githubusercontent.com/u/2309868?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/luochen1990",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/luochen1990/claude-code-router",
          "created_at": "2025-12-19T09:32:32Z",
          "updated_at": "2025-12-21T08:30:08Z",
          "pushed_at": "2025-12-21T08:30:01Z",
          "homepage": "",
          "size": 9137,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "patched"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "a7e20325dbb2a8827db0c9ee12924bdecfa19fd9",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1080"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1080"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1080"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1080/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1080/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1080/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/585c753f0937c76fb7f537cbd50e588573148eda"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1059",
      "id": 3084029089,
      "node_id": "PR_kwDON-_mZc630oyh",
      "number": 1059,
      "state": "open",
      "locked": false,
      "title": "fix: resolve DEP0190 warning in child_process spawn",
      "user": {
        "login": "Roylam23",
        "id": 20741593,
        "node_id": "MDQ6VXNlcjIwNzQxNTkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/20741593?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Roylam23",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Update `executeCodeCommand` to pass the command and arguments as a single string when using `shell: true`. \r\nThis addresses the Node.js DEP0190 DeprecationWarning regarding potential security vulnerabilities with unescaped arguments in shell mode.",
      "created_at": "2025-12-09T03:49:43Z",
      "updated_at": "2025-12-09T03:49:43Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Roylam23:fix/resolve-dep0190-warning",
        "ref": "fix/resolve-dep0190-warning",
        "sha": "3925674e1c03cddc3b10740b720e20262ad27554",
        "user": {
          "login": "Roylam23",
          "id": 20741593,
          "node_id": "MDQ6VXNlcjIwNzQxNTkz",
          "avatar_url": "https://avatars.githubusercontent.com/u/20741593?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Roylam23",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1088420288,
          "node_id": "R_kgDOQN_5wA",
          "name": "claude-code-router",
          "full_name": "Roylam23/claude-code-router",
          "private": false,
          "owner": {
            "login": "Roylam23",
            "id": 20741593,
            "node_id": "MDQ6VXNlcjIwNzQxNTkz",
            "avatar_url": "https://avatars.githubusercontent.com/u/20741593?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Roylam23",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Roylam23/claude-code-router",
          "created_at": "2025-11-02T23:24:57Z",
          "updated_at": "2025-11-04T19:58:30Z",
          "pushed_at": "2025-12-09T03:47:11Z",
          "homepage": "",
          "size": 9177,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "8dc0651c123079ed0666b2c9759b5d42d3fdc564",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1059"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1059"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1059"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1059/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1059/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1059/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/3925674e1c03cddc3b10740b720e20262ad27554"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1056",
      "id": 3079300424,
      "node_id": "PR_kwDON-_mZc63imVI",
      "number": 1056,
      "state": "open",
      "locked": false,
      "title": "feat: Add npm start script for local development",
      "user": {
        "login": "rogermt",
        "id": 7525673,
        "node_id": "MDQ6VXNlcjc1MjU2NzM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7525673?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rogermt",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Why This is a Good Addition  \r\n  \r\n- **Developer Experience**: Makes running from source more intuitive with the standard `npm start` command  \r\n- **Consistency**: Most Node.js projects have a start script  \r\n- **Documentation**: Serves as implicit documentation for how to run the app locally  \r\n- **Separation of Concerns**: This is purely a convenience feature, unrelated to the logger bug fix  \r\n  \r\n## Changes  \r\n- Added `\"start\": \"node dist/cli.js start\"` to the scripts section in package.json  \r\n- The script assumes the project has been built first with `npm run build`  \r\n  \r\n## Testing  \r\n- Built the project with `npm run build`  \r\n- Successfully ran the server with `npm start`  \r\n- Verified the service starts and can be stopped with `npm run stop`",
      "created_at": "2025-12-07T17:02:15Z",
      "updated_at": "2025-12-07T17:02:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "rogermt:feature/add-start-script",
        "ref": "feature/add-start-script",
        "sha": "cd4618a09f8f0a1a116d2875263820fb2285c0e2",
        "user": {
          "login": "rogermt",
          "id": 7525673,
          "node_id": "MDQ6VXNlcjc1MjU2NzM=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7525673?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/rogermt",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1111753788,
          "node_id": "R_kgDOQkQEPA",
          "name": "claude-code-router",
          "full_name": "rogermt/claude-code-router",
          "private": false,
          "owner": {
            "login": "rogermt",
            "id": 7525673,
            "node_id": "MDQ6VXNlcjc1MjU2NzM=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7525673?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/rogermt",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/rogermt/claude-code-router",
          "created_at": "2025-12-07T15:18:40Z",
          "updated_at": "2025-12-07T15:18:40Z",
          "pushed_at": "2025-12-07T16:53:52Z",
          "homepage": "",
          "size": 9165,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "8dc0651c123079ed0666b2c9759b5d42d3fdc564",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1056"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1056"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1056"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1056/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1056/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1056/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/cd4618a09f8f0a1a116d2875263820fb2285c0e2"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1055",
      "id": 3079216404,
      "node_id": "PR_kwDON-_mZc63iR0U",
      "number": 1055,
      "state": "open",
      "locked": false,
      "title": "Fix: Add null check for logger in error handlers",
      "user": {
        "login": "rogermt",
        "id": 7525673,
        "node_id": "MDQ6VXNlcjc1MjU2NzM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7525673?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rogermt",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- Prevents TypeError when logger is undefined during startup  \r\n- Falls back to console.error if logger not available  \r\n- Fixes crash on WSL2 and other environments \r\n\r\n## Problem  \r\nThe application crashes with \"TypeError: Cannot read properties of undefined (reading 'error')\" when an uncaught exception occurs before the logger is initialized. This happens because the error handlers at lines 143 and 147 try to use `server.logger` without checking if it exists.  \r\n  \r\n## Solution  \r\nAdded null checks before using the logger in both `uncaughtException` and `unhandledRejection` handlers. If the logger is not available, the error falls back to `console.error`.  \r\n  \r\n## Testing  \r\n- Tested on WSL2 environment where the bug was reproducible  \r\n- Service now starts successfully without crashing  \r\n- Error logging still works properly after logger initialization  \r\n  \r\n## Files Changed  \r\n- `src/index.ts`: Added null checks in error handlers",
      "created_at": "2025-12-07T15:24:44Z",
      "updated_at": "2025-12-07T15:31:26Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "rogermt:fix/logger-null-check",
        "ref": "fix/logger-null-check",
        "sha": "3b84fa57ddaedda9bb6582a576229d29e9753154",
        "user": {
          "login": "rogermt",
          "id": 7525673,
          "node_id": "MDQ6VXNlcjc1MjU2NzM=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7525673?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/rogermt",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1111753788,
          "node_id": "R_kgDOQkQEPA",
          "name": "claude-code-router",
          "full_name": "rogermt/claude-code-router",
          "private": false,
          "owner": {
            "login": "rogermt",
            "id": 7525673,
            "node_id": "MDQ6VXNlcjc1MjU2NzM=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7525673?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/rogermt",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/rogermt/claude-code-router",
          "created_at": "2025-12-07T15:18:40Z",
          "updated_at": "2025-12-07T15:18:40Z",
          "pushed_at": "2025-12-07T16:53:52Z",
          "homepage": "",
          "size": 9165,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "8dc0651c123079ed0666b2c9759b5d42d3fdc564",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1055"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1055"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1055"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1055/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1055/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1055/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/3b84fa57ddaedda9bb6582a576229d29e9753154"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1053",
      "id": 3079167522,
      "node_id": "PR_kwDON-_mZc63iF4i",
      "number": 1053,
      "state": "open",
      "locked": false,
      "title": "Fix issue: Cannot read properties of undefined (reading 'image')",
      "user": {
        "login": "loyvon",
        "id": 13371198,
        "node_id": "MDQ6VXNlcjEzMzcxMTk4",
        "avatar_url": "https://avatars.githubusercontent.com/u/13371198?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/loyvon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-12-07T14:26:56Z",
      "updated_at": "2025-12-08T04:29:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "loyvon:main",
        "ref": "main",
        "sha": "f6b48c0167e915c7b6e1c919e99f96b93b8acedb",
        "user": {
          "login": "loyvon",
          "id": 13371198,
          "node_id": "MDQ6VXNlcjEzMzcxMTk4",
          "avatar_url": "https://avatars.githubusercontent.com/u/13371198?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/loyvon",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1111728439,
          "node_id": "R_kgDOQkOhNw",
          "name": "claude-code-router",
          "full_name": "loyvon/claude-code-router",
          "private": false,
          "owner": {
            "login": "loyvon",
            "id": 13371198,
            "node_id": "MDQ6VXNlcjEzMzcxMTk4",
            "avatar_url": "https://avatars.githubusercontent.com/u/13371198?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/loyvon",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/loyvon/claude-code-router",
          "created_at": "2025-12-07T14:25:32Z",
          "updated_at": "2025-12-07T14:26:32Z",
          "pushed_at": "2025-12-07T14:26:25Z",
          "homepage": "",
          "size": 9165,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "8dc0651c123079ed0666b2c9759b5d42d3fdc564",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1053"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1053"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1053"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1053/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1053/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1053/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/f6b48c0167e915c7b6e1c919e99f96b93b8acedb"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1044",
      "id": 3068965235,
      "node_id": "PR_kwDON-_mZc627LFz",
      "number": 1044,
      "state": "open",
      "locked": false,
      "title": "feat: support reasoning_effort in router config",
      "user": {
        "login": "kaminoguo",
        "id": 175643586,
        "node_id": "U_kgDOCngbwg",
        "avatar_url": "https://avatars.githubusercontent.com/u/175643586?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kaminoguo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Router config now supports third parameter for reasoning effort:\n  default: provider,model,medium\n  think: provider,model,high\n\nUser-specified reasoning_effort takes priority over config.",
      "created_at": "2025-12-03T21:20:54Z",
      "updated_at": "2025-12-03T21:20:54Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "kaminoguo:feat/reasoning-effort-config",
        "ref": "feat/reasoning-effort-config",
        "sha": "ec6d5e9f9e2c514077072c5c668fbdc9d547735c",
        "user": {
          "login": "kaminoguo",
          "id": 175643586,
          "node_id": "U_kgDOCngbwg",
          "avatar_url": "https://avatars.githubusercontent.com/u/175643586?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/kaminoguo",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1109032161,
          "node_id": "R_kgDOQhp84Q",
          "name": "claude-code-router",
          "full_name": "kaminoguo/claude-code-router",
          "private": false,
          "owner": {
            "login": "kaminoguo",
            "id": 175643586,
            "node_id": "U_kgDOCngbwg",
            "avatar_url": "https://avatars.githubusercontent.com/u/175643586?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/kaminoguo",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/kaminoguo/claude-code-router",
          "created_at": "2025-12-03T08:45:08Z",
          "updated_at": "2025-12-03T08:45:08Z",
          "pushed_at": "2025-12-03T21:20:32Z",
          "homepage": "",
          "size": 9191,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "8dc0651c123079ed0666b2c9759b5d42d3fdc564",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1044"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1044"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1044"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1044/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1044/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1044/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/ec6d5e9f9e2c514077072c5c668fbdc9d547735c"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1042",
      "id": 3061508702,
      "node_id": "PR_kwDON-_mZc62eupe",
      "number": 1042,
      "state": "open",
      "locked": false,
      "title": "Add SSE response body parsing and logging",
      "user": {
        "login": "fugui",
        "id": 975471,
        "node_id": "MDQ6VXNlcjk3NTQ3MQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/975471?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/fugui",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- Add parseSSEResponse function to parse Server-Sent Events response\r\n- Log response body content for debugging purposes\r\n- Handle both structured SSE data and raw text responses\r\n\r\nLog sample:\r\n    \"responseBody\": [\r\n        {\r\n            \"type\": \"text\",\r\n            \"text\": \"网络连接看起来正常，但是GitHub的HTTPS连接可能有问题。让我尝试配置git使用不同的连接方式或者等待一下再试：\\n\"\r\n        },\r\n        {\r\n            \"type\": \"tool_use\",\r\n            \"id\": \"call_pzrndag9w9\",\r\n            \"name\": \"Bash\",\r\n            \"input\": {\r\n                \"command\": \"git config --global http.postBuffer 524288000\",\r\n                \"description\": \"增加HTTP post buffer大小\"\r\n            }\r\n        }\r\n    ],",
      "created_at": "2025-12-02T01:08:08Z",
      "updated_at": "2025-12-02T01:08:08Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "fugui:feature/response-body-logging",
        "ref": "feature/response-body-logging",
        "sha": "cae4144eb40ad3f1826a992bade28e7ae2fda1a4",
        "user": {
          "login": "fugui",
          "id": 975471,
          "node_id": "MDQ6VXNlcjk3NTQ3MQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/975471?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/fugui",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1108052455,
          "node_id": "R_kgDOQguJ5w",
          "name": "claude-code-router",
          "full_name": "fugui/claude-code-router",
          "private": false,
          "owner": {
            "login": "fugui",
            "id": 975471,
            "node_id": "MDQ6VXNlcjk3NTQ3MQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/975471?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/fugui",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/fugui/claude-code-router",
          "created_at": "2025-12-02T00:46:06Z",
          "updated_at": "2025-12-03T09:02:27Z",
          "pushed_at": "2025-12-03T09:02:20Z",
          "homepage": "",
          "size": 9191,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "427878c5324250d91af7d376859833ba9dfad5d6",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1042"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1042"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1042"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1042/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1042/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1042/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/cae4144eb40ad3f1826a992bade28e7ae2fda1a4"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1025",
      "id": 3037113743,
      "node_id": "PR_kwDON-_mZc61Bq2P",
      "number": 1025,
      "state": "open",
      "locked": false,
      "title": "Claude/fix GitHub issues 01 lscdh eb bpmpqn usd y1go8 x",
      "user": {
        "login": "arrrrny",
        "id": 48218623,
        "node_id": "MDQ6VXNlcjQ4MjE4NjIz",
        "avatar_url": "https://avatars.githubusercontent.com/u/48218623?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/arrrrny",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-11-23T05:32:52Z",
      "updated_at": "2025-11-23T05:55:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "arrrrny:claude/fix-github-issues-01LscdhEbBPMPQNUsdY1go8X",
        "ref": "claude/fix-github-issues-01LscdhEbBPMPQNUsdY1go8X",
        "sha": "1bfa0966fb322466b51c9722729aa2d2fe505d45",
        "user": {
          "login": "arrrrny",
          "id": 48218623,
          "node_id": "MDQ6VXNlcjQ4MjE4NjIz",
          "avatar_url": "https://avatars.githubusercontent.com/u/48218623?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/arrrrny",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1102250492,
          "node_id": "R_kgDOQbMB_A",
          "name": "claude-code-router",
          "full_name": "arrrrny/claude-code-router",
          "private": false,
          "owner": {
            "login": "arrrrny",
            "id": 48218623,
            "node_id": "MDQ6VXNlcjQ4MjE4NjIz",
            "avatar_url": "https://avatars.githubusercontent.com/u/48218623?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/arrrrny",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/arrrrny/claude-code-router",
          "created_at": "2025-11-23T05:07:50Z",
          "updated_at": "2025-11-23T05:07:50Z",
          "pushed_at": "2025-11-23T05:55:44Z",
          "homepage": "",
          "size": 9244,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "427878c5324250d91af7d376859833ba9dfad5d6",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1025"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/1025"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1025"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/1025/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1025/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/1025/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/1bfa0966fb322466b51c9722729aa2d2fe505d45"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/990",
      "id": 3001223944,
      "node_id": "PR_kwDON-_mZc6y4wsI",
      "number": 990,
      "state": "open",
      "locked": false,
      "title": "Add comprehensive test suite & fix security vulnerabilities",
      "user": {
        "login": "jikkuatwork",
        "id": 113770409,
        "node_id": "U_kgDOBsf_qQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/113770409?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jikkuatwork",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-11-12T03:43:09Z",
      "updated_at": "2025-11-12T03:44:21Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "jikkuatwork:claude/security-review-deep-011CV3EYC6JjBrFBoj4KEEDC",
        "ref": "claude/security-review-deep-011CV3EYC6JjBrFBoj4KEEDC",
        "sha": "e9a303550ffbee4583229b696eee2a36fe473de8",
        "user": {
          "login": "jikkuatwork",
          "id": 113770409,
          "node_id": "U_kgDOBsf_qQ",
          "avatar_url": "https://avatars.githubusercontent.com/u/113770409?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/jikkuatwork",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1094671331,
          "node_id": "R_kgDOQT9b4w",
          "name": "claude-code-router",
          "full_name": "jikkuatwork/claude-code-router",
          "private": false,
          "owner": {
            "login": "jikkuatwork",
            "id": 113770409,
            "node_id": "U_kgDOBsf_qQ",
            "avatar_url": "https://avatars.githubusercontent.com/u/113770409?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/jikkuatwork",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/jikkuatwork/claude-code-router",
          "created_at": "2025-11-12T02:46:23Z",
          "updated_at": "2025-11-12T02:46:23Z",
          "pushed_at": "2025-11-12T03:36:38Z",
          "homepage": "",
          "size": 9402,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "ab03390e2fb3852689c3b3fe6c89af73594a5edf",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/990"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/990"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/990"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/990/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/990/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/990/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/e9a303550ffbee4583229b696eee2a36fe473de8"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/982",
      "id": 2988633388,
      "node_id": "PR_kwDON-_mZc6yIu0s",
      "number": 982,
      "state": "open",
      "locked": false,
      "title": "feat: Allow configuring HOME_DIR via environment variable",
      "user": {
        "login": "yanhao98",
        "id": 37316281,
        "node_id": "MDQ6VXNlcjM3MzE2Mjgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/37316281?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanhao98",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This change allows users to customize the application's home directory by setting the CLAUDE_CODE_ROUTER_DIR environment variable.\r\n\r\n- Modified `src/constants.ts` to use `path.resolve` with the CLAUDE_CODE_ROUTER_DIR environment variable, falling back to the default `~/.claude-code-router` if not set.\r\n- Refactored `src/cli.ts`, `src/server.ts`, `src/index.ts`, `src/utils/index.ts`, and `src/utils/modelSelector.ts` to use the centralized `HOME_DIR` constant, removing hardcoded paths.\r\n- Updated `README.md`, `README_zh.md`, and `CLAUDE.md` to document this new feature and provide generic examples.\r\n- Added a comment to `docker-compose.yml` to show how to use the environment variable.\r\n- Updated `ui/config.example.json` to use a generic placeholder path.",
      "created_at": "2025-11-07T13:26:51Z",
      "updated_at": "2026-01-14T10:21:46Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "yanhao98:feat-configurable-home-dir",
        "ref": "feat-configurable-home-dir",
        "sha": "93484d54adb9f9b8bde67c9d88a45451589aaff8",
        "user": {
          "login": "yanhao98",
          "id": 37316281,
          "node_id": "MDQ6VXNlcjM3MzE2Mjgx",
          "avatar_url": "https://avatars.githubusercontent.com/u/37316281?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/yanhao98",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1091709386,
          "node_id": "R_kgDOQRIpyg",
          "name": "claude-code-router",
          "full_name": "yanhao98/claude-code-router",
          "private": false,
          "owner": {
            "login": "yanhao98",
            "id": 37316281,
            "node_id": "MDQ6VXNlcjM3MzE2Mjgx",
            "avatar_url": "https://avatars.githubusercontent.com/u/37316281?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/yanhao98",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/yanhao98/claude-code-router",
          "created_at": "2025-11-07T12:03:21Z",
          "updated_at": "2025-11-07T12:03:21Z",
          "pushed_at": "2025-11-07T14:01:59Z",
          "homepage": "",
          "size": 9366,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "ab894ad773317a261f2205d2783cc861a1519465",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/982"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/982"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/982"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/982/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/982/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/982/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/93484d54adb9f9b8bde67c9d88a45451589aaff8"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/968",
      "id": 2967899373,
      "node_id": "PR_kwDON-_mZc6w5ozt",
      "number": 968,
      "state": "open",
      "locked": false,
      "title": "feat: add port availability check before starting service",
      "user": {
        "login": "lurongjiang",
        "id": 44705885,
        "node_id": "MDQ6VXNlcjQ0NzA1ODg1",
        "avatar_url": "https://avatars.githubusercontent.com/u/44705885?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lurongjiang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Description\r\nccr code command fails to start correctly when the configured port is already in use. Previously, when ccr code was executed and the service wasn't detected as running, it would attempt to start a background service. However, if the port was already occupied\r\nby another process (or a zombie process from a previous run), the service startup would timeout without providing any indication that the issue was a port conflict. This led to confusing \"startup timeout\" errors that were difficult to debug.\r\n\r\n# Fix\r\n\r\nThe core issue has been resolved by adding port availability checks before attempting to start the\r\nservice in all relevant commands:\r\n- Added isPortAvailable function in a new utility module to check port status\r\n- Implemented port checking in the main run() function in src/index.ts before starting the server\r\n- Added import for the new port checking utility\r\n- Updated error messaging to provide clear indication when a port is already in use\r\n\r\n# Changes\r\n\r\n- New file: src/utils/portCheck.ts - Contains port availability checking functions\r\n- Modified: src/index.ts - Added port checking logic before server startup with appropriate error handling\r\n- Now provides clear error message when port is already in use instead of generic timeout error",
      "created_at": "2025-10-31T19:34:17Z",
      "updated_at": "2026-01-11T02:40:39Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "lurongjiang:main",
        "ref": "main",
        "sha": "c4f1d182e3cb57ae2ad31ae6ad1e06e5b377df5a",
        "user": {
          "login": "lurongjiang",
          "id": 44705885,
          "node_id": "MDQ6VXNlcjQ0NzA1ODg1",
          "avatar_url": "https://avatars.githubusercontent.com/u/44705885?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/lurongjiang",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1087356172,
          "node_id": "R_kgDOQM-9DA",
          "name": "claude-code-router",
          "full_name": "lurongjiang/claude-code-router",
          "private": false,
          "owner": {
            "login": "lurongjiang",
            "id": 44705885,
            "node_id": "MDQ6VXNlcjQ0NzA1ODg1",
            "avatar_url": "https://avatars.githubusercontent.com/u/44705885?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/lurongjiang",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/lurongjiang/claude-code-router",
          "created_at": "2025-10-31T19:16:10Z",
          "updated_at": "2025-10-31T19:26:12Z",
          "pushed_at": "2025-10-31T19:26:06Z",
          "homepage": "",
          "size": 7969,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "7b126f0436612de05f704a16e4d9f4c056d26556",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/968"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/968"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/968"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/968/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/968/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/968/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/c4f1d182e3cb57ae2ad31ae6ad1e06e5b377df5a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/933",
      "id": 2926764121,
      "node_id": "PR_kwDON-_mZc6ucuBZ",
      "number": 933,
      "state": "open",
      "locked": false,
      "title": "feat(server): integrate local slash command loader into server.ts",
      "user": {
        "login": "mizuirorivi",
        "id": 35176585,
        "node_id": "MDQ6VXNlcjM1MTc2NTg1",
        "avatar_url": "https://avatars.githubusercontent.com/u/35176585?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mizuirorivi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "### Summary\r\nThis PR integrates a local slash command loader directly into `server.ts`.  \r\nThe server now automatically reads and registers custom slash command definitions from `~/.claude/commands` at runtime.\r\n\r\n### Details\r\n- Added a new `loadUserTools()` function inside `server.ts`.\r\n- Supports three file formats:\r\n  - `.json`: structured tool definitions.\r\n  - `.js`: executable modules exporting `default` objects.\r\n  - `.md`: Markdown-based documentation commands (header = name, body = description).\r\n- Injects loaded tools into `/v1/messages` responses, making them appear as local slash commands inside Claude Code.\r\n\r\n### Motivation\r\nThis allows developers to define and test their own custom commands without modifying the core Claude Code CLI.  \r\n\r\n### Notes\r\n- Fully backward-compatible — if no local commands exist, the router behaves as before.\r\n- Logs each successfully loaded command to the console for visibility.\r\n- Keeps all configuration self-contained within `server.ts` (no external loader dependency).\r\n<img width=\"861\" height=\"335\" alt=\"Screenshot 2025-10-18 at 21 38 21\" src=\"https://github.com/user-attachments/assets/4bdce713-4b0f-4a58-9cfa-f966a32dcc9d\" />\r\n\r\n\r\n### Example\r\nExample file: `~/.claude/commands/orchestrator.md`\r\n```\r\n# Orchestrator\r\n\r\nSplit complex tasks into sequential steps, where each step can contain multiple parallel subtasks.\r\n\r\n## Process\r\n\r\n1. **Initial Analysis**\r\n   - First, analyze the entire task to\r\n   ...\r\n ```\r\n",
      "created_at": "2025-10-18T12:42:21Z",
      "updated_at": "2025-10-18T12:56:11Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "mizuirorivi:mizuirorivi/patch-slash-commands",
        "ref": "mizuirorivi/patch-slash-commands",
        "sha": "8748b1a7981ccb94b93436a4cde1ade5a1a211f4",
        "user": {
          "login": "mizuirorivi",
          "id": 35176585,
          "node_id": "MDQ6VXNlcjM1MTc2NTg1",
          "avatar_url": "https://avatars.githubusercontent.com/u/35176585?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/mizuirorivi",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1078788301,
          "node_id": "R_kgDOQE0AzQ",
          "name": "claude-code-router",
          "full_name": "mizuirorivi/claude-code-router",
          "private": false,
          "owner": {
            "login": "mizuirorivi",
            "id": 35176585,
            "node_id": "MDQ6VXNlcjM1MTc2NTg1",
            "avatar_url": "https://avatars.githubusercontent.com/u/35176585?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/mizuirorivi",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/mizuirorivi/claude-code-router",
          "created_at": "2025-10-18T12:28:43Z",
          "updated_at": "2025-10-18T12:28:43Z",
          "pushed_at": "2025-10-18T12:56:10Z",
          "homepage": "",
          "size": 7953,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "45232813cccb0fd73afbc039bbbbe034085f1a87",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/933"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/933"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/933"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/933/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/933/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/933/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/8748b1a7981ccb94b93436a4cde1ade5a1a211f4"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/928",
      "id": 2919961229,
      "node_id": "PR_kwDON-_mZc6uCxKN",
      "number": 928,
      "state": "open",
      "locked": false,
      "title": "feat: ✨ support `{provider},default` setting",
      "user": {
        "login": "aceHubert",
        "id": 6029663,
        "node_id": "MDQ6VXNlcjYwMjk2NjM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6029663?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aceHubert",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- use model from claude code cli\r\n- working with proxy site like newapi.ai\r\n- model selection group by provider on UI",
      "created_at": "2025-10-16T09:29:04Z",
      "updated_at": "2025-12-18T08:32:35Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "aceHubert:main",
        "ref": "main",
        "sha": "3801ee101a22bdad642ddff2647dd8d703b7873c",
        "user": {
          "login": "aceHubert",
          "id": 6029663,
          "node_id": "MDQ6VXNlcjYwMjk2NjM=",
          "avatar_url": "https://avatars.githubusercontent.com/u/6029663?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/aceHubert",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1077240078,
          "node_id": "R_kgDOQDVhDg",
          "name": "claude-code-router",
          "full_name": "aceHubert/claude-code-router",
          "private": false,
          "owner": {
            "login": "aceHubert",
            "id": 6029663,
            "node_id": "MDQ6VXNlcjYwMjk2NjM=",
            "avatar_url": "https://avatars.githubusercontent.com/u/6029663?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/aceHubert",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/aceHubert/claude-code-router",
          "created_at": "2025-10-16T01:33:08Z",
          "updated_at": "2025-12-18T08:32:38Z",
          "pushed_at": "2025-12-18T08:32:34Z",
          "homepage": "",
          "size": 9178,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "a7e20325dbb2a8827db0c9ee12924bdecfa19fd9",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/928"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/928"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/928"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/928/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/928/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/928/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/3801ee101a22bdad642ddff2647dd8d703b7873c"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/918",
      "id": 2913450523,
      "node_id": "PR_kwDON-_mZc6tp7ob",
      "number": 918,
      "state": "open",
      "locked": false,
      "title": "fix: prevent empty text content blocks in image agentFix/empty text content blocks",
      "user": {
        "login": "Yi-Lyu",
        "id": 1308846,
        "node_id": "MDQ6VXNlcjEzMDg4NDY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1308846?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Yi-Lyu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## 🐛 Problem\r\nFixed a critical bug in the image agent that could cause `messages: text content blocks must be non-empty` API errors.\r\n\r\n### Root Cause\r\nIn `src/agents/image.agent.ts:225`, when processing text messages containing `[Image #N]` markers, the code would completely remove these markers using `replace(/\\[Image #\\d+\\]/g, '')`. If the original text contained only these markers, the result would be an empty string, violating Anthropic API validation requirements.\r\n\r\n### Solution\r\n- Added safety check to ensure cleaned text is not empty\r\n- Provide fallback text `[Image reference removed]` when cleaned text becomes empty\r\n- Added `.trim()` to handle whitespace-only cases\r\n- Added explanatory comment for future maintainers\r\n\r\n### Changes\r\n- **File**: `src/agents/image.agent.ts`\r\n- **Lines**: 224-227\r\n- **Type**: Bug fix (non-breaking)\r\n\r\n### Testing\r\n- ✅ Code builds successfully\r\n- ✅ No linting errors\r\n- ✅ Maintains existing functionality while preventing empty text blocks\r\n\r\n### Impact\r\n- Prevents API errors when processing image-related messages\r\n- Improves reliability of the image agent\r\n- Maintains backward compatibility\r\n\r\nFixes the issue reported in logs where `claude-jp,claude-sonnet-4-5-20250929` provider returned `400: messages: text content blocks must be non-empty` error.",
      "created_at": "2025-10-14T12:23:23Z",
      "updated_at": "2025-10-14T12:26:00Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Yi-Lyu:fix/empty-text-content-blocks",
        "ref": "fix/empty-text-content-blocks",
        "sha": "a9817ad1ab10f7b21481ac75eea02f483da2d991",
        "user": {
          "login": "Yi-Lyu",
          "id": 1308846,
          "node_id": "MDQ6VXNlcjEzMDg4NDY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1308846?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Yi-Lyu",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1076110943,
          "node_id": "R_kgDOQCQmXw",
          "name": "claude-code-router",
          "full_name": "Yi-Lyu/claude-code-router",
          "private": false,
          "owner": {
            "login": "Yi-Lyu",
            "id": 1308846,
            "node_id": "MDQ6VXNlcjEzMDg4NDY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1308846?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Yi-Lyu",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Yi-Lyu/claude-code-router",
          "created_at": "2025-10-14T12:20:12Z",
          "updated_at": "2025-11-12T07:32:57Z",
          "pushed_at": "2025-11-12T08:18:46Z",
          "homepage": "",
          "size": 9328,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 1,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 1,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c4f8f937df93355ffea1c4849c997b49a90c1bb2",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/918"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/918"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/918"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/918/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/918/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/918/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/a9817ad1ab10f7b21481ac75eea02f483da2d991"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/865",
      "id": 2882572823,
      "node_id": "PR_kwDON-_mZc6r0JIX",
      "number": 865,
      "state": "open",
      "locked": false,
      "title": "warning message for missing API key instead of overwrite",
      "user": {
        "login": "aisensiy",
        "id": 661860,
        "node_id": "MDQ6VXNlcjY2MTg2MA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/661860?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/aisensiy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Remove forced HOST override to `127.0.0.1` when API key is missing\r\n\r\nInstead of forcing HOST to `127.0.0.1` when no API key is configured, now only shows a warning message. This allows proper deployment flexibility while still alerting about missing authentication.",
      "created_at": "2025-10-02T17:54:28Z",
      "updated_at": "2025-10-02T17:54:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "aisensiy:warning-for-no-apikey",
        "ref": "warning-for-no-apikey",
        "sha": "6f579bdfdd49649c517dbf44de75e34b7b0cc26d",
        "user": {
          "login": "aisensiy",
          "id": 661860,
          "node_id": "MDQ6VXNlcjY2MTg2MA==",
          "avatar_url": "https://avatars.githubusercontent.com/u/661860?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/aisensiy",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1068647125,
          "node_id": "R_kgDOP7JC1Q",
          "name": "claude-code-router",
          "full_name": "aisensiy/claude-code-router",
          "private": false,
          "owner": {
            "login": "aisensiy",
            "id": 661860,
            "node_id": "MDQ6VXNlcjY2MTg2MA==",
            "avatar_url": "https://avatars.githubusercontent.com/u/661860?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/aisensiy",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/aisensiy/claude-code-router",
          "created_at": "2025-10-02T17:39:34Z",
          "updated_at": "2025-10-08T16:50:08Z",
          "pushed_at": "2025-10-08T16:50:02Z",
          "homepage": "",
          "size": 5730,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "ba1a9fff25f8f9e14af4c61258c5bea7fd2448b8",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/865"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/865"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/865"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/865/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/865/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/865/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/6f579bdfdd49649c517dbf44de75e34b7b0cc26d"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/864",
      "id": 2880616057,
      "node_id": "PR_kwDON-_mZc6rsrZ5",
      "number": 864,
      "state": "open",
      "locked": false,
      "title": "Fix Windows settings file path issue in ccr code command",
      "user": {
        "login": "haikow",
        "id": 22428382,
        "node_id": "MDQ6VXNlcjIyNDI4Mzgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/22428382?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/haikow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Problem\r\nWhen running ccr code on Windows, users encounter the error:\r\nError: Settings file not found: '{env:{ANTHROPIC_AUTH_TOKEN:test,ANTHROPIC_API_KEY:,ANTHROPIC_BASE_URL:http://127.0.0.1:3456,NO_PROXY:127.0.0.1,DISABLE_TELEMETRY:true,DISABLE_COST_WARNINGS:true,API_TIMEOUT_MS:600000}\r\n\r\n Closes #862                                               \r\n\r\nRoot Cause\r\n1. The code was passing a JSON string directly to the --settings parameter instead of a file path\r\n2. The shell-quote library was escaping colons in Windows file paths, causing path corruption\r\n3. String concatenation for spawn command was causing argument parsing issues\r\n\r\nSolution\r\n- Create temporary settings file: Generate a real JSON file instead of passing JSON strings\r\n- Fix argument handling: Use proper spawn args array instead of shell-quoted concatenated strings\r\n- Platform compatibility: Maintain shell: true on Windows for PATH resolution\r\n- Resource cleanup: Automatically clean up temporary files on process exit",
      "created_at": "2025-10-02T06:23:12Z",
      "updated_at": "2025-10-02T15:24:33Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "haikow:fix/windows-startup",
        "ref": "fix/windows-startup",
        "sha": "d4058b0ae959b277522dcbece46616a09e1e2337",
        "user": {
          "login": "haikow",
          "id": 22428382,
          "node_id": "MDQ6VXNlcjIyNDI4Mzgy",
          "avatar_url": "https://avatars.githubusercontent.com/u/22428382?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/haikow",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1046406150,
          "node_id": "R_kgDOPl7kBg",
          "name": "claude-code-router",
          "full_name": "haikow/claude-code-router",
          "private": false,
          "owner": {
            "login": "haikow",
            "id": 22428382,
            "node_id": "MDQ6VXNlcjIyNDI4Mzgy",
            "avatar_url": "https://avatars.githubusercontent.com/u/22428382?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/haikow",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/haikow/claude-code-router",
          "created_at": "2025-08-28T16:32:24Z",
          "updated_at": "2025-10-02T04:23:00Z",
          "pushed_at": "2025-10-02T15:24:32Z",
          "homepage": "",
          "size": 6402,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "ba1a9fff25f8f9e14af4c61258c5bea7fd2448b8",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/864"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/864"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/864"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/864/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/864/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/864/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/d4058b0ae959b277522dcbece46616a09e1e2337"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        8,
        862
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/861",
      "id": 2879422126,
      "node_id": "PR_kwDON-_mZc6roH6u",
      "number": 861,
      "state": "open",
      "locked": false,
      "title": "enhance API key provider testing with OpenAI-compatible chat completion request",
      "user": {
        "login": "haikow",
        "id": 22428382,
        "node_id": "MDQ6VXNlcjIyNDI4Mzgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/22428382?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/haikow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Closes https://github.com/musistudio/claude-code-router/issues/710\r\n\r\nfeat: Add provider testing and enhance templates\r\n\r\nThis PR introduces new features and improvements to the Claude Code Router:\r\n\r\nProvider Connectivity Testing: Implemented new API endpoints (/api/test-providers and\r\n/api/test-provider) and CLI commands (ccr test and ccr test ) to allow users to test the\r\nconnectivity and authentication of their configured LLM providers. This helps in diagnosing configuration\r\nissues.\r\nEnhanced Provider Templates: Added qwen_cli and gemini_cli_oauth templates to the frontend's\r\n\"Import from template\" functionality, making it easier for users to configure these providers. These\r\ntemplates are also prioritized to appear at the top of the list.\r\nImproved OAuth Handling in Tests: Refactored the providerTest.ts utility to dynamically handle\r\nOAuth-managed providers (like Qwen CLI and Gemini CLI), ensuring proper token validation and API call\r\nformatting.\r\nConfiguration Path Correction: Fixed a minor typo in a configuration path within ui/config.json.\r\nRemoved Hardcoded Project ID: Eliminated a hardcoded private project ID from the providerTest.ts\r\nto ensure that project configurations are strictly managed via user settings.\r\nThese changes significantly improve the usability and debuggability of the Claude Code Router for users\r\nmanaging multiple LLM providers.",
      "created_at": "2025-10-01T19:36:52Z",
      "updated_at": "2025-10-02T04:22:57Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "haikow:main",
        "ref": "main",
        "sha": "c53aeca002ab0cb5ba47b4ee3799f3f0969f2165",
        "user": {
          "login": "haikow",
          "id": 22428382,
          "node_id": "MDQ6VXNlcjIyNDI4Mzgy",
          "avatar_url": "https://avatars.githubusercontent.com/u/22428382?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/haikow",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1046406150,
          "node_id": "R_kgDOPl7kBg",
          "name": "claude-code-router",
          "full_name": "haikow/claude-code-router",
          "private": false,
          "owner": {
            "login": "haikow",
            "id": 22428382,
            "node_id": "MDQ6VXNlcjIyNDI4Mzgy",
            "avatar_url": "https://avatars.githubusercontent.com/u/22428382?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/haikow",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/haikow/claude-code-router",
          "created_at": "2025-08-28T16:32:24Z",
          "updated_at": "2025-10-02T04:23:00Z",
          "pushed_at": "2025-10-02T15:24:32Z",
          "homepage": "",
          "size": 6402,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "07e92468f2b1700f99ec73e13672e2754983a0a1",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/861"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/861"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/861"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/861/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/861/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/861/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/c53aeca002ab0cb5ba47b4ee3799f3f0969f2165"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/818",
      "id": 2827501863,
      "node_id": "PR_kwDON-_mZc6oiEEn",
      "number": 818,
      "state": "open",
      "locked": false,
      "title": "docs:  add history chart and perf sponsors style",
      "user": {
        "login": "Thlnking",
        "id": 38023375,
        "node_id": "MDQ6VXNlcjM4MDIzMzc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/38023375?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Thlnking",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "优化打赏者列表展示，使用表格显示。\r\n添加 github 星标统计图",
      "created_at": "2025-09-15T01:48:58Z",
      "updated_at": "2025-09-15T01:48:58Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Thlnking:docs",
        "ref": "docs",
        "sha": "6cd2824e208b8b1119ea5916535c3d9ec34d47ec",
        "user": {
          "login": "Thlnking",
          "id": 38023375,
          "node_id": "MDQ6VXNlcjM4MDIzMzc1",
          "avatar_url": "https://avatars.githubusercontent.com/u/38023375?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Thlnking",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1021813393,
          "node_id": "R_kgDOPOeikQ",
          "name": "claude-code-router",
          "full_name": "Thlnking/claude-code-router",
          "private": false,
          "owner": {
            "login": "Thlnking",
            "id": 38023375,
            "node_id": "MDQ6VXNlcjM4MDIzMzc1",
            "avatar_url": "https://avatars.githubusercontent.com/u/38023375?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Thlnking",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Thlnking/claude-code-router",
          "created_at": "2025-07-18T01:58:49Z",
          "updated_at": "2025-09-15T01:43:05Z",
          "pushed_at": "2025-09-15T01:47:25Z",
          "homepage": "",
          "size": 5668,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "5cd21c570fb87cc131e0c4254b40d5ffd127b176",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/818"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/818"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/818"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/818/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/818/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/818/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/6cd2824e208b8b1119ea5916535c3d9ec34d47ec"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/775",
      "id": 2802534842,
      "node_id": "PR_kwDON-_mZc6nC0m6",
      "number": 775,
      "state": "open",
      "locked": false,
      "title": "🚀 Complete Plugin System + Analytics Dashboard + Theme System [v1.0.49 Updated]",
      "user": {
        "login": "skorpionwap",
        "id": 113388353,
        "node_id": "U_kgDOBsIrQQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/113388353?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/skorpionwap",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## 📋 Overview\n\n**🔄 UPDATED for v1.0.49** - This PR now includes the latest upstream features while introducing a revolutionary **Plugin Architecture** that makes future updates seamless and non-breaking.\n\nThis PR implements a comprehensive plugin-based system with advanced analytics, 3-theme system, and full compatibility with the latest upstream features including LogViewer and improved process management.\n\n## 🎯 **NEW: Plugin Architecture Revolution**\n\n### 🔌 **Modular Plugin System**\n- **Analytics Plugin**: Complete analytics dashboard as a self-contained plugin\n- **Themes Plugin**: Advanced theming system with glassmorphism effects\n- **Plugin Manager**: Runtime state management for plugins\n- **Zero-Conflict Updates**: Plugins are isolated from core codebase\n\n### 📊 **Analytics Plugin** (Self-contained)\n```\nplugins/analytics/\n├── index.ts              # Plugin entry point\n├── manager.ts            # Analytics engine (932 lines)\n├── middleware/           # Request tracking\n├── routes/              # API endpoints (analytics + mission-control)\n├── types.ts             # TypeScript definitions\n└── ui/                  # Complete UI components\n```\n\n**19 Functional API Endpoints:**\n- `/api/analytics/*` - 8 analytics endpoints\n- `/api/v1/mission-control/*` - 11 mission control endpoints\n\n### 🎨 **Themes Plugin** (Self-contained)\n```\nplugins/themes/\n├── index.ts              # Theme system core (519 lines)\n├── components/           # Theme UI components\n├── contexts/            # Theme state management\n├── styles/              # Complete CSS system (3000+ lines)\n└── types/              # Theme TypeScript definitions\n```\n\n**3 Complete Themes:**\n- Classic Light Theme\n- Classic Dark Theme  \n- Advanced Space Theme (Glassmorphism effects)\n\n## 🆕 **Latest Upstream Integration (v1.0.48-49)**\n\n### ✅ **Preserved All New Features:**\n- **LogViewer Component**: Interactive log viewing system\n- **REWRITE_SYSTEM_PROMPT**: Custom prompt configuration\n- **Enhanced Process Management**: Improved `find-process` integration\n- **Global Error Handlers**: Better crash prevention\n- **Visual Roadmap**: Development roadmap SVG\n- **Updated Dependencies**: @musistudio/llms v1.0.32\n\n### ✅ **Zero Breaking Changes:**\n- All upstream features work perfectly\n- Plugin system adds functionality without conflicts\n- Backward compatibility maintained 100%\n\n## 🔧 **Technical Excellence**\n\n### **Backend Architecture**\n- **Plugin Registration System**: Dynamic plugin loading\n- **State Manager**: Runtime plugin state management  \n- **Isolated Routing**: Plugin routes don't interfere with core\n- **Analytics Engine**: 840+ lines of comprehensive data processing\n- **Mission Control**: Real-time system monitoring\n\n### **Frontend Innovation**\n- **Plugin Context System**: React context for plugin state\n- **Lazy Loading**: Plugins load only when needed\n- **Theme Integration**: Seamless styling across all plugins\n- **TypeScript Safety**: Complete type definitions\n\n## 📈 **Live Data Verification**\n\nSystem actively processing requests with:\n- **Real-time Analytics**: Live request tracking and metrics\n- **Provider Health**: Multi-provider status monitoring  \n- **Performance Metrics**: Response times and success rates\n- **Cost Tracking**: Token usage and expense analysis\n\n## 🎯 **Files Structure**\n\n### **New Plugin Files** (99+ files):\n```\nplugins/\n├── analytics/           # Complete analytics system\n├── themes/             # Advanced theming system\n├── core/              # Plugin infrastructure\n│   ├── PluginManager.tsx\n│   └── stateManager.ts\n```\n\n### **Enhanced Core Files** (Integration points):\n- `src/index.ts` - Plugin loading system\n- `src/server.ts` - Plugin route registration\n- `ui/src/App.tsx` - Plugin UI integration\n- `ui/src/contexts/PluginContext.tsx` - Plugin state\n\n### **Documentation**:\n- `PLUGINS_DOCUMENTATION.md` - Complete plugin docs (1184 lines)\n- `PLUGIN_INSTALLATION_GUIDE.md` - Installation guide (661 lines)\n- `ANALYTICS_PLUGIN_REFACTOR_REPORT.md` - Technical report (466 lines)\n\n## 🚀 **Key Benefits**\n\n### **For Users:**\n- 📊 **Professional Analytics**: Comprehensive usage insights\n- 🎨 **Modern Themes**: Beautiful, customizable interface\n- ⚡ **Better Performance**: Optimized with real-time monitoring\n- 🔍 **Enhanced Debugging**: LogViewer + analytics tools\n\n### **For Maintainers:**\n- 🔌 **Future-Proof Architecture**: Plugin system prevents conflicts\n- 🔄 **Easy Updates**: Core updates don't break customizations\n- 📦 **Modular Development**: Features can be developed independently\n- 🛠️ **Clean Separation**: Clear boundaries between core and extensions\n\n## 📊 **Statistics**\n\n- **99 files changed, 22,226 additions, 60 deletions**\n- **2 Complete Plugin Systems**: Analytics + Themes\n- **19 Functional API Endpoints**: All tested and verified\n- **3 Professional Themes**: Mobile-responsive design\n- **100% Upstream Compatibility**: All v1.0.49 features preserved\n\n## 🧪 **Testing Results**\n\n### ✅ **All Systems Operational:**\n- ✅ Analytics endpoints returning live data\n- ✅ Theme switching seamless\n- ✅ Plugin system stable\n- ✅ Upstream features functional\n- ✅ LogViewer working\n- ✅ Process management improved\n- ✅ Build system successful\n- ✅ TypeScript compilation clean\n\n## 🎯 **Success Metrics**\n- ✅ **Plugin Architecture**: Revolutionary update system\n- ✅ **19/19 API Endpoints**: All functional and tested\n- ✅ **3/3 Themes**: Complete and responsive\n- ✅ **100% Compatibility**: All upstream features preserved\n- ✅ **Zero Breaking Changes**: Seamless integration\n- ✅ **Future-Proof**: Easy maintenance and updates\n\n## 🔄 **Migration Strategy**\n\nThis PR introduces a **Plugin Architecture** that:\n1. **Preserves all existing functionality**\n2. **Adds advanced features as plugins**\n3. **Enables conflict-free future updates**\n4. **Provides clean separation of concerns**\n\n**Ready for Review**: This represents a major architectural advancement that future-proofs claude-code-router while adding professional-grade analytics and theming capabilities.\n\n---\n**Enhanced by:** Mircea Gabriel (@skorpionwap)  \n**Based on:** Claude Code Router v1.0.49 by @musistudio\n\n*This plugin architecture makes claude-code-router extensible and future-proof! 🚀*",
      "created_at": "2025-09-05T13:03:26Z",
      "updated_at": "2025-09-15T08:22:32Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "skorpionwap:advanced-theme-redesign",
        "ref": "advanced-theme-redesign",
        "sha": "977a7d347f909b1c00f8db02c0b9d7891736bb20",
        "user": {
          "login": "skorpionwap",
          "id": 113388353,
          "node_id": "U_kgDOBsIrQQ",
          "avatar_url": "https://avatars.githubusercontent.com/u/113388353?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/skorpionwap",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1050284038,
          "node_id": "R_kgDOPpoQBg",
          "name": "claude-code-router",
          "full_name": "skorpionwap/claude-code-router",
          "private": false,
          "owner": {
            "login": "skorpionwap",
            "id": 113388353,
            "node_id": "U_kgDOBsIrQQ",
            "avatar_url": "https://avatars.githubusercontent.com/u/113388353?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/skorpionwap",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/skorpionwap/claude-code-router",
          "created_at": "2025-09-04T08:00:45Z",
          "updated_at": "2025-10-08T16:53:16Z",
          "pushed_at": "2025-10-08T16:53:10Z",
          "homepage": "",
          "size": 16210,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 1,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 1,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "f7adb7b28e6f7f11a21d642f4f422cdb30fef9e3",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/775"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/775"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/775"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/775/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/775/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/775/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/977a7d347f909b1c00f8db02c0b9d7891736bb20"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/702",
      "id": 2770977234,
      "node_id": "PR_kwDON-_mZc6lKcHS",
      "number": 702,
      "state": "open",
      "locked": false,
      "title": "Fix: Preserve custom config fields when saving through UI",
      "user": {
        "login": "sczheng189",
        "id": 144249901,
        "node_id": "U_kgDOCJkULQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/144249901?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sczheng189",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Problem\nWhen custom fields like `CUSTOM_ROUTER_PATH` are manually added to config.json, they get lost when the configuration is saved through the UI interface.\n\n## Root Cause\nThe UI's ConfigProvider component uses a hardcoded list of fields and filters out any unknown fields when reading and saving the configuration.\n\n## Solution\n1. Added missing fields (`CUSTOM_ROUTER_PATH` and `NON_INTERACTIVE_MODE`) to the Config interface\n2. Added an index signature to allow arbitrary custom fields\n3. Modified ConfigProvider to preserve all original config fields\n4. Only validate and set defaults for known fields while keeping unknown fields intact\n\n## Changes\n- Modified `ui/src/types.ts`: Added missing fields and index signature\n- Modified `ui/src/components/ConfigProvider.tsx`: Preserve all config fields using spread operator\n- Fixed type casting issues in `ui/src/App.tsx`\n\n## Testing\n- Built the UI successfully with `npm run build`\n- No TypeScript errors\n- Custom fields are now preserved when saving through UI\n\nThis ensures backward compatibility and allows users to add custom configuration fields without losing them when using the UI.",
      "created_at": "2025-08-25T08:12:26Z",
      "updated_at": "2025-08-25T11:45:44Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "sczheng189:fix/ui-config-custom-fields",
        "ref": "fix/ui-config-custom-fields",
        "sha": "a09e10c5eac263eff761913c3c3d0d9cae05419c",
        "user": {
          "login": "sczheng189",
          "id": 144249901,
          "node_id": "U_kgDOCJkULQ",
          "avatar_url": "https://avatars.githubusercontent.com/u/144249901?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/sczheng189",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1044122165,
          "node_id": "R_kgDOPjwKNQ",
          "name": "claude-code-router",
          "full_name": "sczheng189/claude-code-router",
          "private": false,
          "owner": {
            "login": "sczheng189",
            "id": 144249901,
            "node_id": "U_kgDOCJkULQ",
            "avatar_url": "https://avatars.githubusercontent.com/u/144249901?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/sczheng189",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/sczheng189/claude-code-router",
          "created_at": "2025-08-25T08:09:05Z",
          "updated_at": "2025-08-25T08:09:05Z",
          "pushed_at": "2025-08-25T11:45:43Z",
          "homepage": "",
          "size": 5497,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "9a5ea191f8d1a924133dd8008b175de5513e57e7",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/702"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/702"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/702"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/702/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/702/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/702/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/a09e10c5eac263eff761913c3c3d0d9cae05419c"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/679",
      "id": 2766545091,
      "node_id": "PR_kwDON-_mZc6k5iDD",
      "number": 679,
      "state": "open",
      "locked": false,
      "title": "📚 Documentation: Add development workflow scripts to CLAUDE.md",
      "user": {
        "login": "semikolon",
        "id": 13872,
        "node_id": "MDQ6VXNlcjEzODcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/semikolon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Add Development Workflow Scripts Documentation\n\n## 🎯 Purpose\nDocuments the  convenience script that streamlines CCR development when using yalc-linked LLMS packages.\n\n## 📝 What's Added\n- **Automated Workflow Section**: Documents 🔧 Building CCR with updated LLMS package...\n📦 Building CCR...\n\n> @musistudio/claude-code-router@1.0.41 build\n> node scripts/build.js\n\nBuilding Claude Code Router...\nBuilding CLI application...\nCopying tiktoken WASM file...\nBuilding UI...\n\n> temp-project@0.0.0 build\n> tsc -b && vite build\n\nvite v7.0.6 building for production...\ntransforming...\n✓ 1795 modules transformed.\nrendering chunks...\n[plugin vite:singlefile] \n\n[plugin vite:singlefile] Inlining: index-C6lR1TV1.js\n[plugin vite:singlefile] Inlining: style-H1ATVSdm.css\ncomputing gzip size...\ndist/index.html  601.43 kB │ gzip: 181.66 kB\n✓ built in 2.12s\nCopying UI build artifacts...\nBuild completed successfully!\n\n📋 Current yalc status:\nYalc dependencies found: [ '@musistudio/llms' ] script usage\n- **Manual vs Automated**: Clear distinction between manual yalc commands and convenience script\n- **Complete Development Flow**: Shows how CCR development integrates with LLMS changes\n\n## 🔧 Script Documented\n**🔧 Building CCR with updated LLMS package...\n📦 Building CCR...\n\n> @musistudio/claude-code-router@1.0.41 build\n> node scripts/build.js\n\nBuilding Claude Code Router...\nBuilding CLI application...\nCopying tiktoken WASM file...\nBuilding UI...\n\n> temp-project@0.0.0 build\n> tsc -b && vite build\n\nvite v7.0.6 building for production...\ntransforming...\n✓ 1795 modules transformed.\nrendering chunks...\n[plugin vite:singlefile] \n\n[plugin vite:singlefile] Inlining: index-C6lR1TV1.js\n[plugin vite:singlefile] Inlining: style-H1ATVSdm.css\ncomputing gzip size...\ndist/index.html  601.43 kB │ gzip: 181.66 kB\n✓ built in 2.13s\nCopying UI build artifacts...\nBuild completed successfully!\n\n📋 Current yalc status:\nYalc dependencies found: [ '@musistudio/llms' ]**: \n- Builds CCR with updated LLMS package\n- Shows yalc status and linked package information  \n- Provides ready-to-test confirmation\n\n## 💡 Why This Matters\n- **Developer Onboarding**: New contributors can quickly understand the development workflow\n- **Productivity**: Single command replaces multiple manual steps\n- **Troubleshooting**: Script shows yalc status for debugging linked package issues\n- **Consistency**: Standardizes the CCR build process with LLMS integration\n\n## 🎮 User Impact\n**Before:** Manual yalc commands + npm build + manual status checking  \n**After:** Single 🔧 Building CCR with updated LLMS package...\n📦 Building CCR...\n\n> @musistudio/claude-code-router@1.0.41 build\n> node scripts/build.js\n\nBuilding Claude Code Router...\nBuilding CLI application...\nCopying tiktoken WASM file...\nBuilding UI...\n\n> temp-project@0.0.0 build\n> tsc -b && vite build\n\nvite v7.0.6 building for production...\ntransforming...\n✓ 1795 modules transformed.\nrendering chunks...\n[plugin vite:singlefile] \n\n[plugin vite:singlefile] Inlining: index-C6lR1TV1.js\n[plugin vite:singlefile] Inlining: style-H1ATVSdm.css\ncomputing gzip size...\ndist/index.html  601.43 kB │ gzip: 181.66 kB\n✓ built in 1.92s\nCopying UI build artifacts...\nBuild completed successfully!\n\n📋 Current yalc status:\nYalc dependencies found: [ '@musistudio/llms' ] handles everything with status feedback\n\n## 📋 Documentation Enhancement\n@musistudio/claude-code-router@1.0.41 published in store.\nPackage @musistudio/llms@1.0.26 added ==> /Users/fredrikbranstrom/ccr-dev/node_modules/@musistudio/llms\nclaude code router service has been stopped.\nStarting claude code router service...\n✅ Service started successfully in the background.\n🔧 Building CCR with updated LLMS package...\n📦 Building CCR...\n\n> @musistudio/claude-code-router@1.0.41 build\n> node scripts/build.js\n\nBuilding Claude Code Router...\nBuilding CLI application...\nCopying tiktoken WASM file...\nBuilding UI...\n\n> temp-project@0.0.0 build\n> tsc -b && vite build\n\nvite v7.0.6 building for production...\ntransforming...\n✓ 1795 modules transformed.\nrendering chunks...\n[plugin vite:singlefile] \n\n[plugin vite:singlefile] Inlining: index-C6lR1TV1.js\n[plugin vite:singlefile] Inlining: style-H1ATVSdm.css\ncomputing gzip size...\ndist/index.html  601.43 kB │ gzip: 181.66 kB\n✓ built in 2.40s\nCopying UI build artifacts...\nBuild completed successfully!\n\n📋 Current yalc status:\nYalc dependencies found: [ '@musistudio/llms' ]\n\n## 🔗 Companion PR\nThis complements [LLMS PR #30](https://github.com/musistudio/llms/pull/30) which documents the LLMS side  script. Together they provide complete cross-repository development workflow documentation.\n\n## ✅ Verification\n- ✅  script exists and is executable\n- ✅ Script functionality tested with yalc-linked packages\n- ✅ Documentation formatting matches existing CLAUDE.md style\n- ✅ Instructions are clear and immediately actionable\n\n## 🔄 Development Workflow Chain\n1. **LLMS**: Make changes →  (builds, publishes, pushes to yalc)\n2. **CCR**: 🔧 Building CCR with updated LLMS package...\n📦 Building CCR...\n\n> @musistudio/claude-code-router@1.0.41 build\n> node scripts/build.js\n\nBuilding Claude Code Router...\nBuilding CLI application...\nCopying tiktoken WASM file...\nBuilding UI...\n\n> temp-project@0.0.0 build\n> tsc -b && vite build\n\nvite v7.0.6 building for production...\ntransforming...\n✓ 1795 modules transformed.\nrendering chunks...\n[plugin vite:singlefile] \n\n[plugin vite:singlefile] Inlining: index-C6lR1TV1.js\n[plugin vite:singlefile] Inlining: style-H1ATVSdm.css\ncomputing gzip size...\ndist/index.html  601.43 kB │ gzip: 181.66 kB\n✓ built in 2.38s\nCopying UI build artifacts...\nBuild completed successfully!\n\n📋 Current yalc status:\nYalc dependencies found: [ '@musistudio/llms' ] (builds CCR with updated LLMS, shows status)  \n3. **Testing**: Ready\nclaude code router service has been successfully stopped. (test the integration)\n\n**Now fully documented across both repositories! 🚀**\n\n---\n\n### Related PRs (complete series)\n- musistudio/llms#28 — GPT-5 Core API Compatibility\n- musistudio/claude-code-router#677 — Inline Reasoning Control Tokens\n- musistudio/llms#29 — 2025 Documentation & API Guide\n- musistudio/claude-code-router#678 — Enhanced Documentation\n- musistudio/llms#30 — Development Workflow Scripts\n- musistudio/claude-code-router#679 — Development Workflow Scripts\n",
      "created_at": "2025-08-22T14:44:53Z",
      "updated_at": "2025-08-22T22:58:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "semikolon:feature/dev-workflow-docs",
        "ref": "feature/dev-workflow-docs",
        "sha": "a73eeeff52385403abb1882ac38a983886b52e0e",
        "user": {
          "login": "semikolon",
          "id": 13872,
          "node_id": "MDQ6VXNlcjEzODcy",
          "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/semikolon",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1036254225,
          "node_id": "R_kgDOPcP8EQ",
          "name": "claude-code-router",
          "full_name": "semikolon/claude-code-router",
          "private": false,
          "owner": {
            "login": "semikolon",
            "id": 13872,
            "node_id": "MDQ6VXNlcjEzODcy",
            "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/semikolon",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/semikolon/claude-code-router",
          "created_at": "2025-08-11T19:45:55Z",
          "updated_at": "2026-01-29T04:10:31Z",
          "pushed_at": "2025-08-27T12:49:00Z",
          "homepage": "",
          "size": 19108,
          "stargazers_count": 3,
          "watchers_count": 3,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 3,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "6ab608943e8e49dc7bdffe14611416c7de32823d",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/679"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/679"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/679"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/679/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/679/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/679/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/a73eeeff52385403abb1882ac38a983886b52e0e"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3,
        2,
        6
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/678",
      "id": 2766481089,
      "node_id": "PR_kwDON-_mZc6k5SbB",
      "number": 678,
      "state": "open",
      "locked": false,
      "title": "📋 GPT-5 Production Integration: Enhanced Documentation - Part 4 of 4",
      "user": {
        "login": "semikolon",
        "id": 13872,
        "node_id": "MDQ6VXNlcjEzODcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/semikolon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Enhanced Documentation & GPT-5 Bug Resolution\n\n**Problem**: GPT-5 reasoning parameter compatibility crisis blocking Claude Code interactive mode\n\n**Solution**: Complete end-to-end fix spanning both repositories - FINAL DOCUMENTATION:\n- LLMS: Parameter transformation & API compatibility ([LLMS PR #1](https://github.com/musistudio/llms/pull/28)) ✅\n- CCR: Intuitive user experience via inline tokens ([CCR PR #1](https://github.com/musistudio/claude-code-router/pull/677)) ✅  \n- LLMS: Comprehensive technical documentation ([LLMS PR #2](https://github.com/musistudio/llms/pull/29)) ✅\n- CCR: User-facing guides and status updates ✅ **← THIS PR**\n\n## 📝 Documentation Updates\n- **Bug Resolution Status**: Updated GPT-5 reasoning bugs from \"🔶 pending investigation\" to \"✅ resolved\"\n- **Timeline Modernization**: Updated model references from GPT-4 (2022) to current 2025 landscape\n- **Status Tracking**: Clear confirmation that the GPT-5 compatibility crisis is fully resolved\n- **Cross-Reference Integration**: Links to companion implementation PRs for full context\n\n## ✅ Resolution Confirmation  \n- **GPT-5 Parameter Issues**: Fully resolved via transformer improvements\n- **Tools Format Errors**: Fixed via JSON schema metadata cleanup\n- **Reasoning Token System**: Working inline control tokens deployed\n- **Cross-Repository Integration**: Tested and documented end-to-end\n\n## 🎯 User Experience Impact\n- **Status Clarity**: Users now see clear \"resolved\" status instead of \"pending\" \n- **Modern Context**: Documentation reflects current 2025 model ecosystem\n- **Success Story**: Documents successful resolution of major compatibility crisis\n- **Future Reference**: Preserved knowledge for similar integration challenges\n\n## 📚 Educational Value\n- **Problem Resolution Documentation**: Shows how major API compatibility issues are resolved\n- **Cross-Repository Coordination**: Example of systematic approach to multi-repo features\n- **Status Management**: Best practices for tracking and communicating bug resolution\n- **Timeline Maintenance**: Importance of keeping documentation current with rapid AI evolution\n\n## 🔗 Complete Solution Chain\nThis PR completes the 4-PR solution set:\n\n1. **[LLMS PR #1](https://github.com/musistudio/llms/pull/28)**: Core GPT-5 API compatibility fixes\n2. **[CCR PR #1](https://github.com/musistudio/claude-code-router/pull/677)**: Inline reasoning control token implementation  \n3. **[LLMS PR #2](https://github.com/musistudio/llms/pull/29)**: Technical documentation and API guide\n4. **[CCR PR #2]** ← **THIS PR**: User documentation and resolution confirmation\n\n## 🏁 Crisis Resolution Complete\nWith this PR, the GPT-5 reasoning parameter compatibility crisis that blocked Claude Code interactive mode is:\n- ✅ **Technically Resolved**: Core fixes implemented and tested\n- ✅ **User Experience Enhanced**: Inline tokens provide intuitive control  \n- ✅ **Fully Documented**: Technical guides and user references complete\n- ✅ **Status Updated**: Clear communication of successful resolution\n\n## 📋 Stacked Architecture\nBuilt on [CCR PR #1](https://github.com/musistudio/claude-code-router/pull/677) to provide complete documentation for the inline reasoning token system.\n\n---\n\n### Related PRs (complete series)\n- musistudio/llms#28 — GPT-5 Core API Compatibility\n- musistudio/claude-code-router#677 — Inline Reasoning Control Tokens\n- musistudio/llms#29 — 2025 Documentation & API Guide\n- musistudio/claude-code-router#678 — Enhanced Documentation\n- musistudio/llms#30 — Development Workflow Scripts\n- musistudio/claude-code-router#679 — Development Workflow Scripts\n",
      "created_at": "2025-08-22T14:23:06Z",
      "updated_at": "2025-08-24T03:54:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "semikolon:review/ccr-pr2-docs",
        "ref": "review/ccr-pr2-docs",
        "sha": "2695e70d3aaa686e40e5319398b2008fcbdb9961",
        "user": {
          "login": "semikolon",
          "id": 13872,
          "node_id": "MDQ6VXNlcjEzODcy",
          "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/semikolon",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1036254225,
          "node_id": "R_kgDOPcP8EQ",
          "name": "claude-code-router",
          "full_name": "semikolon/claude-code-router",
          "private": false,
          "owner": {
            "login": "semikolon",
            "id": 13872,
            "node_id": "MDQ6VXNlcjEzODcy",
            "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/semikolon",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/semikolon/claude-code-router",
          "created_at": "2025-08-11T19:45:55Z",
          "updated_at": "2026-01-29T04:10:31Z",
          "pushed_at": "2025-08-27T12:49:00Z",
          "homepage": "",
          "size": 19108,
          "stargazers_count": 3,
          "watchers_count": 3,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 3,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "6ab608943e8e49dc7bdffe14611416c7de32823d",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/678"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/678"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/678"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/678/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/678/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/678/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/2695e70d3aaa686e40e5319398b2008fcbdb9961"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        2,
        6,
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/677",
      "id": 2766463906,
      "node_id": "PR_kwDON-_mZc6k5OOi",
      "number": 677,
      "state": "open",
      "locked": false,
      "title": "🎯 GPT-5 Production Integration: Inline Reasoning Control - Part 2 of 4",
      "user": {
        "login": "semikolon",
        "id": 13872,
        "node_id": "MDQ6VXNlcjEzODcy",
        "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/semikolon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Inline Reasoning Control Token System\n\n**Problem**: GPT-5 reasoning parameter compatibility crisis blocking Claude Code interactive mode\n\n**Solution**: Complete end-to-end fix spanning both repositories:\n- LLMS: Parameter transformation & API compatibility ([LLMS PR #1](https://github.com/musistudio/llms/pull/28)) ✅\n- CCR: Intuitive user experience via inline tokens ✅\n\n## ✨ Features\n- **Prefix Tokens**: `Deep: <prompt>`, `Quick: <prompt>`, `Explain: <prompt>`, `Brief: <prompt>`\n- **Colon Tokens**: `:deep`, `:quick`, `:explain`, `:brief` anywhere in prompt\n- **Automatic Parameter Mapping**: Tokens automatically set `reasoning_effort` and `verbosity`\n- **Provider Agnostic**: Works with both Anthropic thinking and OpenAI reasoning\n- **Cross-Router Compatibility**: Seamless integration with transformer chain\n\n## 🎮 Usage Examples\n```\nDeep: Analyze this complex algorithm for performance bottlenecks\n:quick What's 2+2?\nExplain: How does JWT authentication work in modern web apps?  \nBrief: Summarize this 50-page technical document\n```\n\n## 📊 Token Mapping Reference\n| Token | Reasoning Effort | Verbosity | Ideal Use Case |\n|-------|------------------|-----------|----------------|\n| `:quick` | low | low | Fast answers, simple queries |\n| `:deep` | high | medium | Complex analysis, debugging |\n| `:explain` | medium | high | Teaching, tutorials, detailed explanations |\n| `:brief` | medium | low | Concise responses, summaries |\n\n## 🔗 Dependencies\n- **Requires**: [LLMS PR #1](https://github.com/musistudio/llms/pull/28) for GPT-5 parameter processing\n- **Built on**: Transformer chain `reasoning` → `openai`\n- **Architecture**: Router middleware processes tokens → LLMS transforms parameters\n\n## 🧪 Testing\n- ✅ Prefix tokens properly detected and stripped from prompts\n- ✅ Colon tokens work anywhere in user messages\n- ✅ Parameters correctly mapped to reasoning_effort and verbosity\n- ✅ Compatible with both Anthropic and OpenAI reasoning systems\n- ✅ No conflicts with Claude Code's existing `#` memory system\n\n## 📋 Related PRs\n- **Depends on**: [LLMS PR #1](https://github.com/musistudio/llms/pull/28) - Core GPT-5 compatibility\n- **Enables**: [CCR PR #2] - Enhanced documentation and usage examples\n- **Part of**: Complete GPT-5 integration solution\n\n## 🔄 Implementation\nThis PR represents commit `d64dc24` - a complete standalone implementation of the inline reasoning control system.\n\n---\n\n### Related PRs (complete series)\n- musistudio/llms#28 — GPT-5 Core API Compatibility\n- musistudio/claude-code-router#677 — Inline Reasoning Control Tokens\n- musistudio/llms#29 — 2025 Documentation & API Guide\n- musistudio/claude-code-router#678 — Enhanced Documentation\n- musistudio/llms#30 — Development Workflow Scripts\n- musistudio/claude-code-router#679 — Development Workflow Scripts\n",
      "created_at": "2025-08-22T14:16:18Z",
      "updated_at": "2025-10-20T08:42:19Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "semikolon:review/ccr-pr1-head",
        "ref": "review/ccr-pr1-head",
        "sha": "d64dc24a07274731f35d489837d253349b09d3bc",
        "user": {
          "login": "semikolon",
          "id": 13872,
          "node_id": "MDQ6VXNlcjEzODcy",
          "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/semikolon",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1036254225,
          "node_id": "R_kgDOPcP8EQ",
          "name": "claude-code-router",
          "full_name": "semikolon/claude-code-router",
          "private": false,
          "owner": {
            "login": "semikolon",
            "id": 13872,
            "node_id": "MDQ6VXNlcjEzODcy",
            "avatar_url": "https://avatars.githubusercontent.com/u/13872?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/semikolon",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/semikolon/claude-code-router",
          "created_at": "2025-08-11T19:45:55Z",
          "updated_at": "2026-01-29T04:10:31Z",
          "pushed_at": "2025-08-27T12:49:00Z",
          "homepage": "",
          "size": 19108,
          "stargazers_count": 3,
          "watchers_count": 3,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 3,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "6ab608943e8e49dc7bdffe14611416c7de32823d",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/677"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/677"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/677"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/677/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/677/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/677/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/d64dc24a07274731f35d489837d253349b09d3bc"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        2,
        6,
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/643",
      "id": 2757523621,
      "node_id": "PR_kwDON-_mZc6kXHil",
      "number": 643,
      "state": "open",
      "locked": false,
      "title": "Add secure API key management via ccr config command",
      "user": {
        "login": "didgeoridoo",
        "id": 1407036,
        "node_id": "MDQ6VXNlcjE0MDcwMzY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1407036?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/didgeoridoo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Fixes #642\n\n## Summary\nImplements secure credential storage for API keys, eliminating the need for environment variables or hardcoded keys in config.json.\n\n## Implementation Details\n\n### New `ccr config` Command\n- `ccr config set <provider>` - Store API key (supports interactive and piped input)\n- `ccr config get <provider>` - Check if key is configured (never shows full key)\n- `ccr config list` - List all configured providers with masked keys\n- `ccr config delete <provider>` - Remove stored API key\n\n### Storage Approach\n- Keys stored in `~/.claude-code-router/keys` as JSON\n- File permissions set to 0600 (owner read/write only)\n- Follows same security model as SSH, AWS CLI, npm, Docker\n- Cross-platform compatible (Unix permissions on Linux/macOS, user profile isolation on Windows)\n\n### Integration\n- Modified `interpolateEnvVars` to check keystore first, then environment variables\n- Fully backward compatible - existing env var setups continue to work\n- Warning shown when both keystore and env var exist (keystore takes precedence)\n\n### Architecture\n- Clean `KeyStore` interface for future extensibility\n- Current implementation: `FileKeyStore` using filesystem with strict permissions\n- Future PR can add `NativeKeyStore` for OS keychains (macOS Keychain, Windows Credential Manager, Linux Secret Service)\n\n## Testing\n- Tested storing, retrieving, listing, and deleting keys\n- Verified integration with Cerebras API\n- Confirmed backward compatibility with environment variables\n- Tested piped input for easy migration\n\n## Security Considerations\n- No new dependencies required\n- Keys never displayed in full\n- Same security boundary as other CLI tools (filesystem permissions)\n- No encryption complexity that could fail - simple and reliable\n\n## Migration Path\n```bash\n# Easy migration from environment variables\necho $CEREBRAS_API_KEY | ccr config set cerebras\nunset CEREBRAS_API_KEY\n```\n\n## Next Steps\nFuture PR will add optional native OS keychain support via @napi-rs/keyring for users who want additional security beyond filesystem permissions.",
      "created_at": "2025-08-19T20:14:58Z",
      "updated_at": "2025-08-19T20:14:58Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "didgeoridoo:feature/secure-api-keys",
        "ref": "feature/secure-api-keys",
        "sha": "968ccf13d429650b15ad105b3874b649ef7e64dd",
        "user": {
          "login": "didgeoridoo",
          "id": 1407036,
          "node_id": "MDQ6VXNlcjE0MDcwMzY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1407036?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/didgeoridoo",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1040983843,
          "node_id": "R_kgDOPgwnIw",
          "name": "claude-code-router",
          "full_name": "didgeoridoo/claude-code-router",
          "private": false,
          "owner": {
            "login": "didgeoridoo",
            "id": 1407036,
            "node_id": "MDQ6VXNlcjE0MDcwMzY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1407036?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/didgeoridoo",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/didgeoridoo/claude-code-router",
          "created_at": "2025-08-19T19:59:11Z",
          "updated_at": "2025-08-19T19:59:11Z",
          "pushed_at": "2025-08-19T19:59:28Z",
          "homepage": "",
          "size": 5479,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "50c8f6994f477b16036a4bd43e805ade935fe178",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/643"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/643"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/643"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/643/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/643/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/643/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/968ccf13d429650b15ad105b3874b649ef7e64dd"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        6,
        642
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/612",
      "id": 2751510768,
      "node_id": "PR_kwDON-_mZc6kALjw",
      "number": 612,
      "state": "open",
      "locked": false,
      "title": "feat: Fix Gemini Provider and Improve UI Usability",
      "user": {
        "login": "ElliotBadinger",
        "id": 114085572,
        "node_id": "U_kgDOBszOxA",
        "avatar_url": "https://avatars.githubusercontent.com/u/114085572?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ElliotBadinger",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nThis pull request addresses two main areas:\n1.  **Gemini Provider Fixes:** Resolves issues where the Gemini provider could be overridden by the default background model and adds a fallback to prevent crashes on startup due to configuration errors.\n2.  **UI Usability Improvements:** Adds helpful tooltips to the \"Providers,\" \"Router,\" and \"Transformers\" sections of the web UI. This provides more context for new users and addresses feedback about the interface being difficult to understand.\n\nThese changes make the application more robust and user-friendly.\n\n🤖 Generated with [Claude Code](https://claude.ai/code)",
      "created_at": "2025-08-17T20:19:22Z",
      "updated_at": "2025-08-17T20:19:22Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ElliotBadinger:feat/gemini-ui-fixes",
        "ref": "feat/gemini-ui-fixes",
        "sha": "e183a25e759c5442a9c35cb067c1f49f52aa847e",
        "user": {
          "login": "ElliotBadinger",
          "id": 114085572,
          "node_id": "U_kgDOBszOxA",
          "avatar_url": "https://avatars.githubusercontent.com/u/114085572?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ElliotBadinger",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1039708722,
          "node_id": "R_kgDOPfiyMg",
          "name": "claude-code-router",
          "full_name": "ElliotBadinger/claude-code-router",
          "private": false,
          "owner": {
            "login": "ElliotBadinger",
            "id": 114085572,
            "node_id": "U_kgDOBszOxA",
            "avatar_url": "https://avatars.githubusercontent.com/u/114085572?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ElliotBadinger",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/ElliotBadinger/claude-code-router",
          "created_at": "2025-08-17T20:18:20Z",
          "updated_at": "2025-08-17T20:18:20Z",
          "pushed_at": "2025-08-17T20:18:59Z",
          "homepage": "",
          "size": 5264,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "95b2dadd400726fd95fd435fdd4291f90087b68e",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/612"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/612"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/612"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/612/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/612/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/612/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/e183a25e759c5442a9c35cb067c1f49f52aa847e"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/607",
      "id": 2751015181,
      "node_id": "PR_kwDON-_mZc6j-SkN",
      "number": 607,
      "state": "open",
      "locked": false,
      "title": "feat: global model router",
      "user": {
        "login": "Sn0wo2",
        "id": 152751263,
        "node_id": "U_kgDOCRrMnw",
        "avatar_url": "https://avatars.githubusercontent.com/u/152751263?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Sn0wo2",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "fix #606\r\n\r\n---\r\n\r\n### Preview:\r\n#### 简体中文:\r\n- <img width=\"752\" height=\"545\" alt=\"image\" src=\"https://github.com/user-attachments/assets/567e1af4-5546-4613-b1a8-27d2f62a9ff5\" />\r\n\r\n#### English:\r\n- <img width=\"734\" height=\"560\" alt=\"image\" src=\"https://github.com/user-attachments/assets/69f4ebe1-32cd-46bc-9d98-e5f7bf41f990\" />\r\n",
      "created_at": "2025-08-17T05:10:43Z",
      "updated_at": "2025-08-26T00:56:55Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Sn0wo2:main",
        "ref": "main",
        "sha": "17a1b8282ba32555964dd9d34e6bc358d6809b65",
        "user": {
          "login": "Sn0wo2",
          "id": 152751263,
          "node_id": "U_kgDOCRrMnw",
          "avatar_url": "https://avatars.githubusercontent.com/u/152751263?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Sn0wo2",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1039377088,
          "node_id": "R_kgDOPfOiwA",
          "name": "claude-code-router",
          "full_name": "Sn0wo2/claude-code-router",
          "private": false,
          "owner": {
            "login": "Sn0wo2",
            "id": 152751263,
            "node_id": "U_kgDOCRrMnw",
            "avatar_url": "https://avatars.githubusercontent.com/u/152751263?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Sn0wo2",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Sn0wo2/claude-code-router",
          "created_at": "2025-08-17T04:54:41Z",
          "updated_at": "2025-08-17T05:10:17Z",
          "pushed_at": "2025-09-25T21:42:56Z",
          "homepage": "",
          "size": 5203,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 2,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 2,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "d6b11e1b60744e22ed804e2ea2bf7a085bbd194d",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/607"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/607"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/607"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/607/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/607/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/607/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/17a1b8282ba32555964dd9d34e6bc358d6809b65"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        6
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/502",
      "id": 2731288280,
      "node_id": "PR_kwDON-_mZc6izCbY",
      "number": 502,
      "state": "open",
      "locked": false,
      "title": "fix: Resolve TypeScript validation errors and improve type safety",
      "user": {
        "login": "EdwardTang",
        "id": 3278807,
        "node_id": "MDQ6VXNlcjMyNzg4MDc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3278807?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/EdwardTang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## 🐛 Bug Fix: TypeScript Validation Errors\n\n### Problem\nThe project had multiple TypeScript validation errors preventing clean builds:\n- Missing type annotations on request/reply parameters in route handlers\n- Type incompatibility issues in auth middleware for header values  \n- Missing type declarations for the `@musistudio/llms` module\n\n### Solution\nThis PR addresses all TypeScript validation errors to ensure type safety and clean builds.\n\n### Changes Made\n\n#### 1. **Fixed Route Handler Type Annotations** (`src/index.ts`, `src/server.ts`)\n- Added `any` type annotations to all `req` and `reply` parameters in route handlers\n- Fixed Promise type in authentication preHandler hook (added `<void>` type parameter)\n- Ensures all async handlers have proper type definitions\n\n#### 2. **Resolved Auth Middleware Type Issues** (`src/middleware/auth.ts`)\n- Fixed type declarations for `authKey` variable to handle `string | undefined`\n- Properly cast header values to avoid type conflicts\n- Maintained backward compatibility while improving type safety\n\n#### 3. **Created Type Declaration Module** (`src/types/musistudio__llms.d.ts`)\n- Added complete type declaration file for `@musistudio/llms` module\n- Defined Server class with proper method signatures\n- Resolves TS7016 error about missing declaration file\n\n### Testing\n- ✅ All TypeScript validation passes: `npx tsc --noEmit`\n- ✅ Project builds successfully: `npm run build`\n- ✅ Router starts and runs without errors\n- ✅ Health endpoint responds correctly\n- ✅ No regression in existing functionality\n\n### Build Output\n```\nBuilding Claude Code Router...\nBuilding CLI application...\nCopying tiktoken WASM file...\nBuilding UI...\n✓ 1791 modules transformed.\n✓ built in 3.01s\nBuild completed successfully\\!\n```\n\n### Impact\n- **Developer Experience**: Clean TypeScript builds without errors\n- **Code Quality**: Improved type safety across the codebase\n- **CI/CD**: Builds will no longer fail due to TypeScript validation\n- **Maintenance**: Easier to catch type-related bugs during development\n\n### Additional Improvements\n- Setup project-specific CCR configuration from oppie-thunder\n- Added Serena integration for semantic code analysis\n- Created setup script for easier project initialization\n\n### Checklist\n- [x] Code compiles without TypeScript errors\n- [x] All existing tests pass\n- [x] Manual testing completed\n- [x] No breaking changes introduced\n- [x] Documentation updated where necessary\n\n### Related Issues\nFixes TypeScript validation errors reported in latest build checks.\n\n### Screenshots/Logs\nTypeScript validation after fix:\n```bash\n$ npx tsc --noEmit\n# No output - all validation passes\n```\n\nServer status after rebuild:\n```\n📊 Claude Code Router Status\n════════════════════════════════════════\n✅ Status: Running\n🆔 Process ID: 972871\n🌐 Port: 3456\n📡 API Endpoint: http://127.0.0.1:3456\n```",
      "created_at": "2025-08-08T16:39:37Z",
      "updated_at": "2025-08-08T17:01:07Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "EdwardTang:bugfix/typescript-validation-errors",
        "ref": "bugfix/typescript-validation-errors",
        "sha": "fb9487a17bedaaeac06befdeb539870cedef89c9",
        "user": {
          "login": "EdwardTang",
          "id": 3278807,
          "node_id": "MDQ6VXNlcjMyNzg4MDc=",
          "avatar_url": "https://avatars.githubusercontent.com/u/3278807?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/EdwardTang",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1034593717,
          "node_id": "R_kgDOPaqltQ",
          "name": "claude-code-router",
          "full_name": "EdwardTang/claude-code-router",
          "private": false,
          "owner": {
            "login": "EdwardTang",
            "id": 3278807,
            "node_id": "MDQ6VXNlcjMyNzg4MDc=",
            "avatar_url": "https://avatars.githubusercontent.com/u/3278807?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/EdwardTang",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/EdwardTang/claude-code-router",
          "created_at": "2025-08-08T16:38:41Z",
          "updated_at": "2025-08-08T16:38:41Z",
          "pushed_at": "2025-08-08T17:01:06Z",
          "homepage": "",
          "size": 5022,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "9cd5587f525eaacc47988971d83b2a1b94d393b9",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/502"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/502"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/502"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/502/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/502/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/502/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/fb9487a17bedaaeac06befdeb539870cedef89c9"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/476",
      "id": 2726533253,
      "node_id": "PR_kwDON-_mZc6ig5iF",
      "number": 476,
      "state": "open",
      "locked": false,
      "title": "feat: add model override in cli",
      "user": {
        "login": "jookwang-park",
        "id": 2802134,
        "node_id": "MDQ6VXNlcjI4MDIxMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2802134?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jookwang-park",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "I'm a big fan of this project! I've implemented some features that I needed during my usage. I'd love to get your feedback and review.\r\n\r\n# Overview \r\n\r\n Add --model CLI option to override the default model configuration at runtime\r\n\r\n# Objective\r\n\r\nCurrently, Claude Code Router uses the model configuration from config.json for all requests. Users need to manually edit the configuration file to use a different model temporarily. This PR adds a --model command-line option that allows users to override the default model for a specific ccr code execution without modifying the configuration file.\r\n\r\n# Solution \r\n\r\nImplemented a model override mechanism by leveraging the existing auth token communication channel between the CLI client and server:\r\n\r\n  1. CLI Argument Parsing (src/cli.ts):\r\n    - Added parsing for --model option in the code command\r\n    - Format: ccr code --model provider,model \"prompt\"\r\n    - Updated help text with usage examples\r\n  2. Inter-Process Communication (src/utils/codeCommand.ts):\r\n    - Since CLI and server run in separate processes, embedded model override in auth token\r\n    - Format: test:MODEL:{encoded_model} where commas are encoded as ___\r\n    - This approach works reliably because Claude CLI forwards ANTHROPIC_AUTH_TOKEN\r\n  3. Server-Side Handling (src/index.ts):\r\n    - Added preHandler hook to extract model override from auth token\r\n    - Decodes the model string and overrides the router configuration\r\n    - Only affects the specific request, not global configuration\r\n\r\n# Usage Example\r\n\r\n```bash\r\n# Use a different model for a single request\r\nccr code --model openrouter,anthropic/claude-opus-4 \"Write a function\"\r\n\r\n# Default model from config.json\r\nccr code \"Explain this code\"\r\n```",
      "created_at": "2025-08-07T05:53:25Z",
      "updated_at": "2025-08-20T16:40:26Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "jookwang-park:feature/cli-override-model",
        "ref": "feature/cli-override-model",
        "sha": "5a9ee1113cadedeab0b24b0e0dc964e4f5eb9380",
        "user": {
          "login": "jookwang-park",
          "id": 2802134,
          "node_id": "MDQ6VXNlcjI4MDIxMzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/2802134?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/jookwang-park",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1033040346,
          "node_id": "R_kgDOPZLx2g",
          "name": "claude-code-router",
          "full_name": "jookwang-park/claude-code-router",
          "private": false,
          "owner": {
            "login": "jookwang-park",
            "id": 2802134,
            "node_id": "MDQ6VXNlcjI4MDIxMzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/2802134?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/jookwang-park",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/jookwang-park/claude-code-router",
          "created_at": "2025-08-06T08:00:24Z",
          "updated_at": "2025-08-07T05:44:59Z",
          "pushed_at": "2025-08-07T05:48:05Z",
          "homepage": "",
          "size": 5047,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "4334f4092646266608dcf28168c1e2170732934f",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/476"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/476"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/476"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/476/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/476/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/476/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/5a9ee1113cadedeab0b24b0e0dc964e4f5eb9380"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/466",
      "id": 2725426433,
      "node_id": "PR_kwDON-_mZc6icrUB",
      "number": 466,
      "state": "open",
      "locked": false,
      "title": "Add claude GitHub actions 1754509083439",
      "user": {
        "login": "callingforhelp",
        "id": 120263678,
        "node_id": "U_kgDOBysT_g",
        "avatar_url": "https://avatars.githubusercontent.com/u/120263678?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/callingforhelp",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-08-06T19:44:10Z",
      "updated_at": "2025-08-06T19:44:10Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "85ce63baf6edff5e43def1f57541f40b3330180f",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "callingforhelp:add-claude-github-actions-1754509083439",
        "ref": "add-claude-github-actions-1754509083439",
        "sha": "a8f8cbd9be09aa455c6d48f5a649f8940c48ae1e",
        "user": {
          "login": "callingforhelp",
          "id": 120263678,
          "node_id": "U_kgDOBysT_g",
          "avatar_url": "https://avatars.githubusercontent.com/u/120263678?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/callingforhelp",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1033418304,
          "node_id": "R_kgDOPZi2QA",
          "name": "claude-code-router",
          "full_name": "callingforhelp/claude-code-router",
          "private": false,
          "owner": {
            "login": "callingforhelp",
            "id": 120263678,
            "node_id": "U_kgDOBysT_g",
            "avatar_url": "https://avatars.githubusercontent.com/u/120263678?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/callingforhelp",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/callingforhelp/claude-code-router",
          "created_at": "2025-08-06T19:32:50Z",
          "updated_at": "2025-08-07T08:37:17Z",
          "pushed_at": "2025-08-07T08:37:14Z",
          "homepage": "",
          "size": 5122,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 8,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 8,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "adfae3263a272820eb9575d71cd09f26860f36aa",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/466"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/466"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/466"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/466/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/466/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/466/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/a8f8cbd9be09aa455c6d48f5a649f8940c48ae1e"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/452",
      "id": 2723040174,
      "node_id": "PR_kwDON-_mZc6iTkuu",
      "number": 452,
      "state": "open",
      "locked": false,
      "title": "🐛Bug Fix: 修复多用户环境权限冲突问题",
      "user": {
        "login": "Entropy-xcy",
        "id": 22727121,
        "node_id": "MDQ6VXNlcjIyNzI3MTIx",
        "avatar_url": "https://avatars.githubusercontent.com/u/22727121?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Entropy-xcy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "### 问题描述\r\n  在多用户服务器环境中，当多个用户尝试同时运行 Claude Code Router 时，会出现以下错误：\r\n  Error: EACCES: permission denied, open /tmp/claude-code-reference-count.txt\r\n\r\n  这是因为引用计数文件位于系统共享的临时目录中，第一个用户创建文件后，其他用户由于权限不足无法\r\n  访问。\r\n\r\n  ### 解决方案\r\n  修改 `src/constants.ts` 文件：\r\n  - 文件路径变更：`/tmp/claude-code-reference-count.txt` →\r\n  `~/.claude-code-router/claude-code-reference-count.txt`\r\n  - 每个用户现在拥有独立的引用计数文件",
      "created_at": "2025-08-06T04:55:19Z",
      "updated_at": "2025-08-06T05:36:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Entropy-xcy:main",
        "ref": "main",
        "sha": "8b27ff1b767e8f4aeeabc73530364a24e7fd2e18",
        "user": {
          "login": "Entropy-xcy",
          "id": 22727121,
          "node_id": "MDQ6VXNlcjIyNzI3MTIx",
          "avatar_url": "https://avatars.githubusercontent.com/u/22727121?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Entropy-xcy",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1032947016,
          "node_id": "R_kgDOPZGFSA",
          "name": "claude-code-router",
          "full_name": "Entropy-xcy/claude-code-router",
          "private": false,
          "owner": {
            "login": "Entropy-xcy",
            "id": 22727121,
            "node_id": "MDQ6VXNlcjIyNzI3MTIx",
            "avatar_url": "https://avatars.githubusercontent.com/u/22727121?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Entropy-xcy",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Entropy-xcy/claude-code-router",
          "created_at": "2025-08-06T04:38:15Z",
          "updated_at": "2025-08-06T04:53:20Z",
          "pushed_at": "2025-08-06T04:53:15Z",
          "homepage": "",
          "size": 5020,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "75ab74957deefa01002b7d10f4b1860875bc224a",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/452"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/452"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/452"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/452/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/452/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/452/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/8b27ff1b767e8f4aeeabc73530364a24e7fd2e18"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/418",
      "id": 2716308301,
      "node_id": "PR_kwDON-_mZc6h55NN",
      "number": 418,
      "state": "open",
      "locked": false,
      "title": "feat: Add LM Studio provider support for local model hosting",
      "user": {
        "login": "anassalamah",
        "id": 8571003,
        "node_id": "MDQ6VXNlcjg1NzEwMDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8571003?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/anassalamah",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Status update:\r\n\r\n- \"Rebasing complete (post monorepo refactor)\"\r\n- \"LM Studio example config and scripts moved under examples/\"\r\n- \"Paths and scripts updated to match repo conventions\"\r\n\r\nPast description:\r\n- Add LM Studio provider configuration in config.example.json\r\n- Include setup script (setup-lmstudio.sh) for easy configuration\r\n- Add comprehensive documentation (README-LMSTUDIO.md)\r\n- Provide integration testing script (test-lmstudio-integration.sh)\r\n- Update main README to mention LM Studio support\r\n- Add sample configuration file (config.lmstudio.json)\r\n\r\nLM Studio is a popular local model hosting platform that provides OpenAI-compatible endpoints. This integration allows users to route Claude Code requests to their local LM Studio models alongside existing providers like Ollama.",
      "created_at": "2025-08-03T21:07:46Z",
      "updated_at": "2026-01-20T21:42:36Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "03664714ff1409f6c2d5e2057d4a6f52420dab78",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "anassalamah:feat/add-lmstudio-support",
        "ref": "feat/add-lmstudio-support",
        "sha": "ca492b45ad3e1a36553ac9274def2ae6d7bc147d",
        "user": {
          "login": "anassalamah",
          "id": 8571003,
          "node_id": "MDQ6VXNlcjg1NzEwMDM=",
          "avatar_url": "https://avatars.githubusercontent.com/u/8571003?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/anassalamah",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1031488781,
          "node_id": "R_kgDOPXtFDQ",
          "name": "claude-code-router",
          "full_name": "anassalamah/claude-code-router",
          "private": false,
          "owner": {
            "login": "anassalamah",
            "id": 8571003,
            "node_id": "MDQ6VXNlcjg1NzEwMDM=",
            "avatar_url": "https://avatars.githubusercontent.com/u/8571003?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/anassalamah",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/anassalamah/claude-code-router",
          "created_at": "2025-08-03T21:05:06Z",
          "updated_at": "2025-08-04T14:05:59Z",
          "pushed_at": "2026-01-20T21:36:12Z",
          "homepage": "",
          "size": 11470,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c73fe0d49d7cb0e8b8c7d0b1677c170b92d2a2ae",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/418"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/418"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/418"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/418/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/418/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/418/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/ca492b45ad3e1a36553ac9274def2ae6d7bc147d"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/379",
      "id": 2708603367,
      "node_id": "PR_kwDON-_mZc6hcgHn",
      "number": 379,
      "state": "open",
      "locked": false,
      "title": "feat: custom provider, `http-referer`, `x-title` of openrouter",
      "user": {
        "login": "lollipopkit",
        "id": 10864310,
        "node_id": "MDQ6VXNlcjEwODY0MzEw",
        "avatar_url": "https://avatars.githubusercontent.com/u/10864310?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lollipopkit",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "The related issue in the dependency repo:\r\n\r\nhttps://github.com/musistudio/llms/pull/14\r\n\r\nThanks for your review.",
      "created_at": "2025-07-30T23:27:46Z",
      "updated_at": "2025-08-08T08:51:54Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "lollipopkit:main",
        "ref": "main",
        "sha": "cb390b8b5f49535be8040613702aed4262c4e1e7",
        "user": {
          "login": "lollipopkit",
          "id": 10864310,
          "node_id": "MDQ6VXNlcjEwODY0MzEw",
          "avatar_url": "https://avatars.githubusercontent.com/u/10864310?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/lollipopkit",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1028819904,
          "node_id": "R_kgDOPVKLwA",
          "name": "claude-code-router",
          "full_name": "lollipopkit/claude-code-router",
          "private": false,
          "owner": {
            "login": "lollipopkit",
            "id": 10864310,
            "node_id": "MDQ6VXNlcjEwODY0MzEw",
            "avatar_url": "https://avatars.githubusercontent.com/u/10864310?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/lollipopkit",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/lollipopkit/claude-code-router",
          "created_at": "2025-07-30T05:41:05Z",
          "updated_at": "2025-08-08T08:52:00Z",
          "pushed_at": "2025-08-08T08:51:53Z",
          "homepage": "",
          "size": 5017,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 1,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 1,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "9cd5587f525eaacc47988971d83b2a1b94d393b9",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/379"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/379"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/379"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/379/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/379/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/379/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/cb390b8b5f49535be8040613702aed4262c4e1e7"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/373",
      "id": 2706295114,
      "node_id": "PR_kwDON-_mZc6hTslK",
      "number": 373,
      "state": "open",
      "locked": false,
      "title": "Feat use native anthropic format api",
      "user": {
        "login": "BIGPPWONG",
        "id": 4676554,
        "node_id": "MDQ6VXNlcjQ2NzY1NTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4676554?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BIGPPWONG",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Summary\r\n\r\n- Add **Anthropic passthrough support** to enable direct integration with Anthropic-compatible providers (e.g., LiteLLM)\r\n- Implement **native Anthropic API format support** with full **SSE streaming** capabilities\r\n- Maintain **backward compatibility** with existing **OpenAI format** routing\r\n\r\n---\r\n\r\n## 🚀 Features Added\r\n\r\n### Anthropic Passthrough Support\r\n\r\n✅ **Native Anthropic Format**: Direct passthrough of original Anthropic API requests  \r\n✅ **SSE Streaming**: Full Server-Sent Events streaming support for real-time responses  \r\n✅ **Smart URL Handling**: Intelligent API endpoint construction (both basic and full URLs)  \r\n✅ **Auto-detection**: Automatic streaming/non-streaming response handling  \r\n✅ **Backward Compatibility**: Existing configurations continue to work unchanged\r\n\r\n---\r\n\r\n## Technical Implementation\r\n\r\n- New `anthropicPassthrough` middleware: [src/middleware/anthropicPassthrough.ts:1](src/middleware/anthropicPassthrough.ts:1)  \r\n- Enhanced router type detection: [src/utils/router.ts:1](src/utils/router.ts:1)  \r\n- Updated provider type constants: [src/constants.ts:1](src/constants.ts:1)  \r\n- Integrated into main request pipeline: [src/index.ts:1](src/index.ts:1)  \r\n- Comprehensive documentation updates\r\n\r\n---\r\n\r\n## 📝 Configuration\r\n\r\n### Provider Configuration\r\n\r\nAdd `type` field to enable Anthropic passthrough:\r\n\r\n```json\r\n{\r\n  \"Providers\": [\r\n    {\r\n      \"name\": \"anthropic-direct\",\r\n      \"type\": \"anthropic\",\r\n      \"api_base_url\": \"https://api.anthropic.com\",\r\n      \"api_key\": \"your-api-key\",\r\n      \"models\": [\"claude-3-5-sonnet-20241022\"]\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### URL Configuration Options\r\n\r\n- **Basic URL**: `\"https://api.anthropic.com\"` → auto-constructs to `https://api.anthropic.com/v1/messages`\r\n- **Full URL**: `\"https://your-proxy.com/v1/messages\"` → uses as-is\r\n\r\n---\r\n\r\n## 🔄 Backward Compatibility\r\n\r\n- Existing providers without `type` field default to `\"openai\"` format\r\n- No breaking changes to current configurations\r\n- Gradual migration path available\r\n\r\n---\r\n\r\n## 🧪 Testing\r\n\r\n- Configurations validated with both **Anthropic official API** and **proxy services**\r\n- **SSE streaming** tested with real-time response scenarios\r\n- **Error handling** and **resource cleanup** verified\r\n\r\n---\r\n\r\n## 📚 Documentation\r\n\r\n- Updated `README.md` and `README_zh.md` with comprehensive configuration guides\r\n- Included usage examples and troubleshooting tips\r\n",
      "created_at": "2025-07-30T08:14:55Z",
      "updated_at": "2025-07-31T02:56:42Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "BIGPPWONG:feat-use-native-anthropic-format-api",
        "ref": "feat-use-native-anthropic-format-api",
        "sha": "85f19ae47b7e6983e665e0148c69a2e737bed0bd",
        "user": {
          "login": "BIGPPWONG",
          "id": 4676554,
          "node_id": "MDQ6VXNlcjQ2NzY1NTQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/4676554?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/BIGPPWONG",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1028828276,
          "node_id": "R_kgDOPVKsdA",
          "name": "claude-code-router",
          "full_name": "BIGPPWONG/claude-code-router",
          "private": false,
          "owner": {
            "login": "BIGPPWONG",
            "id": 4676554,
            "node_id": "MDQ6VXNlcjQ2NzY1NTQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/4676554?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/BIGPPWONG",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/BIGPPWONG/claude-code-router",
          "created_at": "2025-07-30T06:00:01Z",
          "updated_at": "2025-07-30T06:00:01Z",
          "pushed_at": "2025-07-31T02:55:17Z",
          "homepage": "",
          "size": 4140,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "18cfe6e2f03eef9bb3ec02759a71425115808d0f",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/373"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/373"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/373"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/373/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/373/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/373/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/85f19ae47b7e6983e665e0148c69a2e737bed0bd"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/357",
      "id": 2701562342,
      "node_id": "PR_kwDON-_mZc6hBpHm",
      "number": 357,
      "state": "open",
      "locked": false,
      "title": "feat: Implement error handling, config validation, and enhanced logging",
      "user": {
        "login": "Chibionos",
        "id": 3019880,
        "node_id": "MDQ6VXNlcjMwMTk4ODA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3019880?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Chibionos",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nThis PR implements the top 3 priority enhancements from the backlog:\n- 🔄 **Improved Error Handling and Retry Logic** (#1)\n- ✅ **Configuration Validation with Hot Reload** (#2)\n- 📊 **Enhanced Logging System** (#3)\n\n## What's Changed\n\n### 1. Error Handling Improvements\n- **Retry Logic**: Implemented intelligent retry mechanism with exponential backoff using `p-retry`\n- **Circuit Breaker**: Added circuit breaker pattern to prevent cascading failures when providers are down\n- **Custom Error Types**: Created `ApiError`, `ConfigurationError`, and `CircuitBreakerError` for better error categorization\n- **Error Formatting**: Added comprehensive error formatting with actionable messages for users\n\n### 2. Configuration Validation\n- **JSON Schema Validation**: Added AJV-based validation with detailed schema rules\n- **Hot Reload**: Configuration changes are now detected and applied without service restart\n- **Migration Support**: Old configuration formats are automatically migrated\n- **Validation Messages**: Clear error messages with field-specific feedback\n\n### 3. Winston Logging\n- **Structured Logging**: Replaced custom file-based logging with Winston\n- **Log Rotation**: Daily rotating log files with size limits (20MB per file, 14 days retention)\n- **Multiple Log Levels**: Support for error, warn, info, and debug levels\n- **Component Loggers**: Separate loggers for server, router, config, API, and transformer components\n\n### Additional Improvements\n- **CLI Enhancements**: Better error messages, graceful shutdown, and emoji indicators\n- **Request Logging**: Added request/response logging with timing metrics\n- **Process Management**: Improved signal handling and cleanup\n- **Documentation**: Added comprehensive configuration schema documentation\n\n## Breaking Changes\nNone - all changes are backward compatible. Old configurations are automatically migrated.\n\n## Testing\n- [x] Built successfully with `npm run build`\n- [x] All new dependencies installed correctly\n- [x] Configuration validation tested with various scenarios\n- [x] Error handling tested with network failures\n- [x] Hot reload tested with config changes\n\n## Files Changed\n- **New Utils**: `errorHandler.ts`, `configValidator.ts`, `logger.ts`\n- **Updated**: CLI, server initialization, router middleware\n- **Documentation**: Added `docs/configuration-schema.md`\n- **Dependencies**: Added `ajv`, `p-retry`, `winston`, `winston-daily-rotate-file`\n\n## Related Issues\nAddresses items from backlog:\n- Fixes #341, #301, #305, #343 (connection errors)\n- Addresses #244 (config validation PR)\n- Relates to #303 (winston logging PR)\n\n## Migration Guide\nNo action required. The service will:\n1. Automatically validate configuration on startup\n2. Show clear error messages if configuration is invalid\n3. Migrate old config formats automatically\n4. Create log directory at `~/.claude-code-router/logs/`\n\n🤖 Generated with [Claude Code](https://claude.ai/code)",
      "created_at": "2025-07-28T17:27:42Z",
      "updated_at": "2025-07-29T22:56:12Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Darthwares:feat/error-handling-config-logging",
        "ref": "feat/error-handling-config-logging",
        "sha": "79b739331161f1417b1a6bbd73c0c63545374c09",
        "user": {
          "login": "Darthwares",
          "id": 66136217,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MTM2MjE3",
          "avatar_url": "https://avatars.githubusercontent.com/u/66136217?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Darthwares",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1027457473,
          "node_id": "R_kgDOPT3BwQ",
          "name": "ccr-next",
          "full_name": "Darthwares/ccr-next",
          "private": false,
          "owner": {
            "login": "Darthwares",
            "id": 66136217,
            "node_id": "MDEyOk9yZ2FuaXphdGlvbjY2MTM2MjE3",
            "avatar_url": "https://avatars.githubusercontent.com/u/66136217?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Darthwares",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Claude code router that enable command line control over model and execute the command we ask to do the work.",
          "fork": true,
          "url": "https://api.github.com/repos/Darthwares/ccr-next",
          "created_at": "2025-07-28T03:35:36Z",
          "updated_at": "2025-12-11T00:43:59Z",
          "pushed_at": "2025-08-08T01:36:12Z",
          "homepage": "",
          "size": 4420,
          "stargazers_count": 15,
          "watchers_count": 15,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 15,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "2acfce5b63f3d1b6a4a4e9f2b9fc6b8935567123",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/357"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/357"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/357"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/357/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/357/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/357/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/79b739331161f1417b1a6bbd73c0c63545374c09"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        2,
        3,
        341
      ]
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/303",
      "id": 2690627507,
      "node_id": "PR_kwDON-_mZc6gX7ez",
      "number": 303,
      "state": "open",
      "locked": false,
      "title": "更新日志功能，使用winston库替代自定义日志实现",
      "user": {
        "login": "Riki-WangJJ",
        "id": 31041245,
        "node_id": "MDQ6VXNlcjMxMDQxMjQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/31041245?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Riki-WangJJ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "使用winston库替代自定义日志实现，解决单文件过大问题",
      "created_at": "2025-07-24T03:20:08Z",
      "updated_at": "2025-07-24T03:20:08Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Riki-WangJJ:feature/split-logs",
        "ref": "feature/split-logs",
        "sha": "d3abd3819754b3f3e3d3c23d282a9b1b1cc41eed",
        "user": {
          "login": "Riki-WangJJ",
          "id": 31041245,
          "node_id": "MDQ6VXNlcjMxMDQxMjQ1",
          "avatar_url": "https://avatars.githubusercontent.com/u/31041245?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Riki-WangJJ",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1025273637,
          "node_id": "R_kgDOPRxvJQ",
          "name": "claude-code-router",
          "full_name": "Riki-WangJJ/claude-code-router",
          "private": false,
          "owner": {
            "login": "Riki-WangJJ",
            "id": 31041245,
            "node_id": "MDQ6VXNlcjMxMDQxMjQ1",
            "avatar_url": "https://avatars.githubusercontent.com/u/31041245?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Riki-WangJJ",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/Riki-WangJJ/claude-code-router",
          "created_at": "2025-07-24T02:37:04Z",
          "updated_at": "2025-07-24T02:37:04Z",
          "pushed_at": "2025-07-24T03:18:09Z",
          "homepage": "",
          "size": 3933,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c6969fdd90fe1b7f1c2cc83aecd1f719ed801b1d",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/303"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/303"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/303"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/303/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/303/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/303/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/d3abd3819754b3f3e3d3c23d282a9b1b1cc41eed"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/296",
      "id": 2689381719,
      "node_id": "PR_kwDON-_mZc6gTLVX",
      "number": 296,
      "state": "open",
      "locked": false,
      "title": "Fix critical bugs and enhance stability across router, CLI, and process management",
      "user": {
        "login": "NeaByteLab",
        "id": 209737579,
        "node_id": "U_kgDODIBXaw",
        "avatar_url": "https://avatars.githubusercontent.com/u/209737579?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NeaByteLab",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\n\r\nFixes multiple critical bugs including undefined PORT in status command, router null assertion crashes, process management memory leaks, and service startup race conditions. Improves overall stability and reliability.\r\n\r\n## Bug Fixes\r\n\r\n### Fixed Issues\r\n- **PORT undefined in status command** - Added PORT to DEFAULT_CONFIG\r\n- **Router null assertion crashes** - Replaced unsafe `!` with safe `?.` \r\n- **Process management memory leaks** - Added comprehensive cleanup\r\n- **Service startup race conditions** - Improved wait times and error handling\r\n\r\n## Reproduction Steps\r\n\r\n### Bug 1: PORT undefined in status\r\n1. Install claude-code-router\r\n2. Run `ccr status`\r\n3. **Expected:** Shows correct port (3456)\r\n4. **Actual:** Shows \"Port: undefined\"\r\n\r\n### Bug 2: Router null assertion crashes\r\n1. Create config without Router section\r\n2. Run `ccr code \"test\"`\r\n3. **Expected:** Uses default model\r\n4. **Actual:** Crashes with null assertion error\r\n\r\n### Bug 3: Process management leaks\r\n1. Start service with `ccr start`\r\n2. Kill process with Ctrl+C\r\n3. **Expected:** Clean shutdown\r\n4. **Actual:** Reference count inconsistent\r\n\r\n### Bug 4: Service startup race\r\n1. Run `ccr code \"test\"` immediately after start\r\n2. **Expected:** Command works\r\n3. **Actual:** Service not ready, command fails\r\n\r\n## 🛠️ Changes\r\n\r\n### Files Modified\r\n- `src/constants.ts`: Added PORT to DEFAULT_CONFIG\r\n- `src/utils/router.ts`: Fixed null assertions and added safe access\r\n- `src/utils/codeCommand.ts`: Improved process management and cleanup\r\n- `src/cli.ts`: Enhanced service startup logic\r\n\r\n## 🧪 Testing\r\n\r\n### Before Fixes\r\n- ❌ Status command showed \"Port: undefined\"\r\n- ❌ Router crashes with null assertion errors\r\n- ❌ Process cleanup inconsistent\r\n- ❌ Service startup unreliable\r\n\r\n### After Fixes\r\n- ✅ Status command shows correct port (3456)\r\n- ✅ No more null assertion crashes\r\n- ✅ Proper process cleanup on all exit scenarios\r\n- ✅ Reliable service startup with proper error handling\r\n",
      "created_at": "2025-07-23T16:08:11Z",
      "updated_at": "2025-07-23T16:08:11Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "NeaByteLab:fix/bug-fixes-and-improvements",
        "ref": "fix/bug-fixes-and-improvements",
        "sha": "0277814a83dedb0b926d50731e76eeeedeab34f4",
        "user": {
          "login": "NeaByteLab",
          "id": 209737579,
          "node_id": "U_kgDODIBXaw",
          "avatar_url": "https://avatars.githubusercontent.com/u/209737579?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/NeaByteLab",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1025033061,
          "node_id": "R_kgDOPRjDZQ",
          "name": "claude-code-router",
          "full_name": "NeaByteLab/claude-code-router",
          "private": false,
          "owner": {
            "login": "NeaByteLab",
            "id": 209737579,
            "node_id": "U_kgDODIBXaw",
            "avatar_url": "https://avatars.githubusercontent.com/u/209737579?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/NeaByteLab",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/NeaByteLab/claude-code-router",
          "created_at": "2025-07-23T16:03:47Z",
          "updated_at": "2025-07-23T16:03:47Z",
          "pushed_at": "2025-07-23T16:03:53Z",
          "homepage": "",
          "size": 3934,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "c6969fdd90fe1b7f1c2cc83aecd1f719ed801b1d",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/296"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/296"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/296"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/296/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/296/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/296/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/0277814a83dedb0b926d50731e76eeeedeab34f4"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/244",
      "id": 2676823675,
      "node_id": "PR_kwDON-_mZc6fjRZ7",
      "number": 244,
      "state": "open",
      "locked": false,
      "title": "feat: 配置管理优化，增加了配置参数类型限制与校验，以及配置热更新",
      "user": {
        "login": "SOULEASTER",
        "id": 13078893,
        "node_id": "MDQ6VXNlcjEzMDc4ODkz",
        "avatar_url": "https://avatars.githubusercontent.com/u/13078893?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SOULEASTER",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "实现的核心功能\r\n配置验证系统 - 自动验证配置文件的完整性和正确性\r\n配置热重载 - 实时监听配置变化，无需重启服务\r\n交互式配置设置 - 提供引导式的配置创建流程\r\n增强的CLI命令 - 新增多个配置管理相关命令\r\n📁 新增的文件\r\nsrc/types/config.ts - 完整的配置类型定义\r\nsrc/utils/configValidator.ts - 配置验证器\r\nsrc/utils/configWatcher.ts - 配置文件监听器\r\nsrc/utils/configManager.ts - 配置管理器核心功能\r\nsrc/utils/configCli.ts - 配置命令行工具\r\nCONFIG_MANAGEMENT.md - 功能使用文档\r\ntest-config.js - 功能测试脚本\r\n\r\n🚀 主要优势\r\n用户体验提升 - 从复杂手动配置到简单交互式设置\r\n系统稳定性 - 配置验证防止无效配置导致的问题\r\n运维效率 - 热重载支持零停机配置更新\r\n开发友好 - 完整的TypeScript类型支持和错误提示\r\n\r\n💡 使用方法\r\n# 交互式配置设置\r\nccr setup\r\n\r\n# 验证现有配置\r\nccr validate\r\n\r\n# 查看当前配置\r\nccr config\r\n\r\n# 测试热重载功能\r\nccr test-reload\r\n这个优化显著提升了项目的配置管理能力，让用户能够更安全、更便捷地管理和更新配置，同时保持了与现有系统的完全兼容性。测试结果显示所有功能都正常工作，为项目的长期发展奠定了坚实基础。",
      "created_at": "2025-07-18T10:32:31Z",
      "updated_at": "2025-07-18T10:32:31Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SOULEASTER:main",
        "ref": "main",
        "sha": "27a3e1281f425095a51745ec94acd9353c053b80",
        "user": {
          "login": "SOULEASTER",
          "id": 13078893,
          "node_id": "MDQ6VXNlcjEzMDc4ODkz",
          "avatar_url": "https://avatars.githubusercontent.com/u/13078893?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SOULEASTER",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1020525815,
          "node_id": "R_kgDOPNP89w",
          "name": "claude-code-router",
          "full_name": "SOULEASTER/claude-code-router",
          "private": false,
          "owner": {
            "login": "SOULEASTER",
            "id": 13078893,
            "node_id": "MDQ6VXNlcjEzMDc4ODkz",
            "avatar_url": "https://avatars.githubusercontent.com/u/13078893?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SOULEASTER",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/SOULEASTER/claude-code-router",
          "created_at": "2025-07-16T02:36:09Z",
          "updated_at": "2025-07-18T10:31:11Z",
          "pushed_at": "2025-07-18T10:31:07Z",
          "homepage": "",
          "size": 3936,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "174c9a740fe4129ce7ae4d1d1fbaf6d4a17867f6",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/244"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/244"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/244"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/244/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/244/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/244/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/27a3e1281f425095a51745ec94acd9353c053b80"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/124",
      "id": 2645266054,
      "node_id": "PR_kwDON-_mZc6dq46G",
      "number": 124,
      "state": "open",
      "locked": false,
      "title": "use commander replace origin cli parse",
      "user": {
        "login": "v1xingyue",
        "id": 974169,
        "node_id": "MDQ6VXNlcjk3NDE2OQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/974169?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/v1xingyue",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "That will be much more clear.",
      "created_at": "2025-07-07T01:54:56Z",
      "updated_at": "2025-07-09T01:13:52Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "v1xingyue:dev",
        "ref": "dev",
        "sha": "3bd87c7a005ad45467ad8ac02566b2131589cbff",
        "user": {
          "login": "v1xingyue",
          "id": 974169,
          "node_id": "MDQ6VXNlcjk3NDE2OQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/974169?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/v1xingyue",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1015091119,
          "node_id": "R_kgDOPIEPrw",
          "name": "claude-code-router",
          "full_name": "v1xingyue/claude-code-router",
          "private": false,
          "owner": {
            "login": "v1xingyue",
            "id": 974169,
            "node_id": "MDQ6VXNlcjk3NDE2OQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/974169?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/v1xingyue",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/v1xingyue/claude-code-router",
          "created_at": "2025-07-07T01:53:43Z",
          "updated_at": "2025-07-07T01:53:43Z",
          "pushed_at": "2025-07-09T01:13:50Z",
          "homepage": "",
          "size": 3668,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "50a679278d6e873031a18a611c8af87927e70321",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/124"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/124"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/124"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/124/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/124/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/124/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/3bd87c7a005ad45467ad8ac02566b2131589cbff"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/87",
      "id": 2631444743,
      "node_id": "PR_kwDON-_mZc6c2KkH",
      "number": 87,
      "state": "open",
      "locked": false,
      "title": "Update documentation and configuration for current models",
      "user": {
        "login": "jlwainwright",
        "id": 17202115,
        "node_id": "MDQ6VXNlcjE3MjAyMTE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/17202115?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jlwainwright",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\nThis PR updates the project documentation and configuration to reflect current model availability and best practices as of July 2025.\n\n## Changes Made\n\n### Documentation Improvements\n- **Enhanced CLAUDE.md**: Expanded from basic 12 lines to comprehensive 80+ line technical documentation\n- **Architecture details**: Added complete middleware pipeline, routing logic, and plugin system documentation\n- **Development patterns**: Added examples for creating plugins and extending functionality\n\n### Configuration Updates\n- **Updated model references**: Changed `google/gemini-2.5-pro-preview` to `google/gemini-2.5-flash` (current available model)\n- **Added logging option**: Included `\"log\": true` for debugging\n- **Plugin configuration**: Added `usePlugins` array with example plugins\n- **Free model support**: Added comprehensive free model configuration examples\n\n### File Organization\n- **Renamed config file**: `config.json` → `config.example.json` to prevent confusion between template and working config\n- **Clearer separation**: Template vs actual configuration files\n\n### Model Availability (July 2025)\n- **Premium models**: DeepSeek, Anthropic Claude, Google Gemini 2.5 Flash\n- **Free models**: Meta Llama 4 Maverick, Google Gemini 2.0 Flash Exp, Mistral Small 3.1\n- **Rate limits**: Documented OpenRouter free tier limitations and upgrade benefits\n\n## Benefits\n- ✅ **Better onboarding**: New users can understand the architecture quickly\n- ✅ **Current models**: Uses actually available models instead of deprecated ones  \n- ✅ **Budget options**: Provides free alternatives for testing and light usage\n- ✅ **Clear examples**: Prevents configuration confusion with proper template naming\n- ✅ **Enhanced debugging**: Logging options for troubleshooting\n\n## Testing\n- Verified model availability on OpenRouter\n- Confirmed configuration format compatibility\n- Validated documentation accuracy against current codebase\n\nThis update makes the project more accessible for new developers while providing comprehensive guidance for both free and paid usage scenarios.",
      "created_at": "2025-07-01T08:26:55Z",
      "updated_at": "2025-07-01T08:38:24Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "jlwainwright:main",
        "ref": "main",
        "sha": "325ecf4214b632511fa3536ed892800cd589db4f",
        "user": {
          "login": "jlwainwright",
          "id": 17202115,
          "node_id": "MDQ6VXNlcjE3MjAyMTE1",
          "avatar_url": "https://avatars.githubusercontent.com/u/17202115?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/jlwainwright",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1011699032,
          "node_id": "R_kgDOPE1NWA",
          "name": "claude-code-router",
          "full_name": "jlwainwright/claude-code-router",
          "private": false,
          "owner": {
            "login": "jlwainwright",
            "id": 17202115,
            "node_id": "MDQ6VXNlcjE3MjAyMTE1",
            "avatar_url": "https://avatars.githubusercontent.com/u/17202115?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/jlwainwright",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/jlwainwright/claude-code-router",
          "created_at": "2025-07-01T08:00:53Z",
          "updated_at": "2025-07-01T08:38:27Z",
          "pushed_at": "2025-07-01T08:38:23Z",
          "homepage": "",
          "size": 3647,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "802bde2d76d340e198035dab0ed80ad1b5c57fc3",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/87"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/87"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/87"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/87/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/87/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/87/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/325ecf4214b632511fa3536ed892800cd589db4f"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/musistudio/claude-code-router/pulls/63",
      "id": 2615958683,
      "node_id": "PR_kwDON-_mZc6b7Fyb",
      "number": 63,
      "state": "open",
      "locked": false,
      "title": "chore(deps): update package-lock.json",
      "user": {
        "login": "leoank",
        "id": 22383963,
        "node_id": "MDQ6VXNlcjIyMzgzOTYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/22383963?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/leoank",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Update package-lock.json",
      "created_at": "2025-06-24T19:26:26Z",
      "updated_at": "2025-06-24T20:11:05Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "leoank:main",
        "ref": "main",
        "sha": "2d7eee05853a21cf221771193e105417c0ced6fe",
        "user": {
          "login": "leoank",
          "id": 22383963,
          "node_id": "MDQ6VXNlcjIyMzgzOTYz",
          "avatar_url": "https://avatars.githubusercontent.com/u/22383963?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/leoank",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1007943235,
          "node_id": "R_kgDOPBP-Qw",
          "name": "claude-code-router",
          "full_name": "leoank/claude-code-router",
          "private": false,
          "owner": {
            "login": "leoank",
            "id": 22383963,
            "node_id": "MDQ6VXNlcjIyMzgzOTYz",
            "avatar_url": "https://avatars.githubusercontent.com/u/22383963?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/leoank",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": true,
          "url": "https://api.github.com/repos/leoank/claude-code-router",
          "created_at": "2025-06-24T19:21:00Z",
          "updated_at": "2025-06-24T20:11:09Z",
          "pushed_at": "2025-06-24T20:11:04Z",
          "homepage": "",
          "size": 3650,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "musistudio:main",
        "ref": "main",
        "sha": "391cbd83343503dc3cde676bcd88af5c48f8d2c6",
        "user": {
          "login": "musistudio",
          "id": 21162426,
          "node_id": "MDQ6VXNlcjIxMTYyNDI2",
          "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/musistudio",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 938468965,
          "node_id": "R_kgDON-_mZQ",
          "name": "claude-code-router",
          "full_name": "musistudio/claude-code-router",
          "private": false,
          "owner": {
            "login": "musistudio",
            "id": 21162426,
            "node_id": "MDQ6VXNlcjIxMTYyNDI2",
            "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/musistudio",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
          "fork": false,
          "url": "https://api.github.com/repos/musistudio/claude-code-router",
          "created_at": "2025-02-25T02:17:18Z",
          "updated_at": "2026-02-18T00:56:29Z",
          "pushed_at": "2026-01-10T13:42:08Z",
          "homepage": "https://musistudio.github.io/claude-code-router/",
          "size": 11479,
          "stargazers_count": 27978,
          "watchers_count": 27978,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 2154,
          "archived": false,
          "disabled": false,
          "open_issues_count": 783,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 2154,
          "open_issues": 783,
          "watchers": 27978,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/63"
        },
        "html": {
          "href": "https://github.com/musistudio/claude-code-router/pull/63"
        },
        "issue": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/63"
        },
        "comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/issues/63/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/63/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/pulls/63/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/musistudio/claude-code-router/statuses/2d7eee05853a21cf221771193e105417c0ced6fe"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [
    {
      "id": "D_kwDON-_mZc4Aj6kJ",
      "number": 1185,
      "title": "How Can I use pencil app within claude code router",
      "body": "The pencil macos app integrates with claude code well, but How can I use the claude code router within pencil? the pencil always shows login required while terminal claude works well as follow:\r\n```\r\nClaude Code Error:\r\nInvalid API key · Please run /login\r\n\r\nOpen claude in Terminal to resolve the issue. Open Terminal\r\n```",
      "created_at": "2026-02-01T13:41:37Z",
      "updated_at": "2026-02-01T13:41:37Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "TommyLike",
        "avatar_url": "https://avatars.githubusercontent.com/u/5671225?u=94bf24a8a95a70a85de625eae7529d545dd214b5&v=4"
      }
    },
    {
      "id": "D_kwDON-_mZc4Ajzld",
      "number": 1171,
      "title": "Feature Request: Local OpenAI-Compatible Inbound Gateway for Claude CLI Session Routing",
      "body": "### The Situation: Subscription \"De-Platforming\"\r\n\r\nWith Roo Code v3.42.0, the [Claude Code provider was officially removed](https://github.com/RooCodeInc/Roo-Code/releases/tag/v3.42.0) (PR #10883). Additionally, community efforts to maintain this bridge—like [PR #10620](https://github.com/RooCodeInc/Roo-Code/pull/10620)—have been closed despite proving technical stability.\r\n\r\nThis leaves users with a Claude Pro subscription unable to utilize their included usage within external IDE agents, forcing a \"double-tax\" of per-token API fees for the same model access.\r\n\r\n### The Need: A Tool-Agnostic Gateway\r\n\r\nInstead of chasing individual IDE extensions to maintain \"Claude Code\" connectors, there is a need for a local middleware that abstracts the Claude CLI/SDK into a standard interface. This would allow users to point any tool (Cursor, Roo Code, Continue) at a local endpoint and leverage their existing subscription.\r\nFeature Proposal: Incoming OpenAI-Compatible Gateway\r\n\r\nThe goal is to extend CCR’s functionality to handle incoming requests, acting as a local OpenAI-compatible server.\r\n\r\n### Proposed MVP Architecture:\r\n\r\n    Endpoint: A local server (e.g., http://localhost:4444/v1) exposing a standard chat/completions endpoint.\r\n\r\n    Request Mapping: Maps incoming OpenAI-format JSON payloads to the Claude CLI’s internal protocol (stdin/stdout) or the Claude Agent SDK.\r\n\r\n    Authentication: Reuses existing CLI session state (via claude login) to authorize requests through the user's Pro/Max subscription.\r\n\r\n    Protocol Bridge:\r\n\r\n        Inbound: OpenAI API (JSON) → CCR\r\n\r\n        Processing: CCR wraps the prompt for the Claude CLI/SDK.\r\n\r\n        Outbound: CCR (Streaming/JSON) → OpenAI Response\r\n\r\n### Technical Justification\r\nSince the logic for emulating the connection [is already proven](https://github.com/RooCodeInc/Roo-Code/pull/10620) (you can also check unofficial vsix builds), moving this into CCR makes the solution tool-agnostic. Any IDE extension that supports a \"Custom OpenAI Endpoint\" would immediately regain access to the Claude Pro subscription via CCR without requiring tool-specific maintenance.",
      "created_at": "2026-01-25T12:04:58Z",
      "updated_at": "2026-01-25T12:07:11Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "PabloVitasso",
        "avatar_url": "https://avatars.githubusercontent.com/u/4544017?u=75724b0dc74fdf65bd4fd569844e6ec049d0b5f8&v=4"
      }
    },
    {
      "id": "D_kwDON-_mZc4Ajf_L",
      "number": 1106,
      "title": "Welcome to claude-code-router Discussions!",
      "body": "<!--\r\n    ✏️ Optional: Customize the content below to let your community know what you intend to use Discussions for.\r\n-->\r\n## 👋 Welcome!\r\n  We’re using Discussions as a place to connect with other members of our community. We hope that you:\r\n  * Ask questions you’re wondering about.\r\n  * Share ideas.\r\n  * Engage with other community members.\r\n  * Welcome others and are open-minded. Remember that this is a community we\r\n  build together 💪.\r\n\r\n  To get started, comment below with an introduction of yourself and tell us about what you do with this community.\r\n\r\n<!--\r\n  For the maintainers, here are some tips 💡 for getting started with Discussions. We'll leave these in Markdown comments for now, but feel free to take out the comments for all maintainers to see.\r\n\r\n  📢 **Announce to your community** that Discussions is available! Go ahead and send that tweet, post, or link it from the website to drive traffic here.\r\n\r\n  🔗 If you use issue templates, **link any relevant issue templates** such as questions and community conversations to Discussions. Declutter your issues by driving community content to where they belong in Discussions. If you need help, here's a [link to the documentation](https://docs.github.com/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser).\r\n\r\n  ➡️ You can **convert issues to discussions** either individually or bulk by labels. Looking at you, issues labeled “question” or “discussion”.\r\n-->\r\n",
      "created_at": "2026-01-04T05:45:49Z",
      "updated_at": "2026-01-16T16:31:59Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "musistudio",
        "avatar_url": "https://avatars.githubusercontent.com/u/21162426?u=96df8b9ab5dd4b2d28257d32f2ce37557ec3dfd2&v=4"
      }
    }
  ],
  "details": {
    "id": 938468965,
    "node_id": "R_kgDON-_mZQ",
    "name": "claude-code-router",
    "full_name": "musistudio/claude-code-router",
    "private": false,
    "owner": {
      "login": "musistudio",
      "id": 21162426,
      "node_id": "MDQ6VXNlcjIxMTYyNDI2",
      "avatar_url": "https://avatars.githubusercontent.com/u/21162426?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/musistudio",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "Use Claude Code as the foundation for coding infrastructure, allowing you to decide how to interact with the model while enjoying updates from Anthropic.",
    "fork": false,
    "url": "https://api.github.com/repos/musistudio/claude-code-router",
    "created_at": "2025-02-25T02:17:18Z",
    "updated_at": "2026-02-18T00:56:29Z",
    "pushed_at": "2026-01-10T13:42:08Z",
    "homepage": "https://musistudio.github.io/claude-code-router/",
    "size": 11479,
    "stargazers_count": 27978,
    "watchers_count": 27978,
    "language": "TypeScript",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": true,
    "has_discussions": true,
    "forks_count": 2154,
    "archived": false,
    "disabled": false,
    "open_issues_count": 783,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": {},
    "visibility": "public",
    "forks": 2154,
    "open_issues": 783,
    "watchers": 27978,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "network_count": 2154,
    "subscribers_count": 106
  },
  "lastFetched": 1771377672132
}