@musistudio/claude-code-router 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  > This is a tool for routing Claude Code requests to different models, and you can customize any request.
4
4
 
5
-
6
5
  ![](screenshoots/claude-code.png)
7
6
 
8
7
  ## Usage
@@ -25,8 +24,9 @@ npm install -g @musistudio/claude-code-router
25
24
  ccr code
26
25
  ```
27
26
 
28
- 4. Configure routing[optional]
29
- Set up your `~/.claude-code-router/config.json` file like this:
27
+ 4. Configure routing[optional]
28
+ Set up your `~/.claude-code-router/config.json` file like this:
29
+
30
30
  ```json
31
31
  {
32
32
  "OPENAI_API_KEY": "sk-xxx",
@@ -64,33 +64,135 @@ Set up your `~/.claude-code-router/config.json` file like this:
64
64
  }
65
65
  }
66
66
  ```
67
- - `background`
68
- This model will be used to handle some background tasks([background-token-usage](https://docs.anthropic.com/en/docs/claude-code/costs#background-token-usage)). Based on my tests, it doesn’t require high intelligence. I’m using the qwen-coder-2.5:7b model running locally on my MacBook Pro M1 (32GB) via Ollama.
69
- If your computer can’t run Ollama, you can also use some free models, such as qwen-coder-2.5:3b.
70
-
71
-
72
- - `think`
73
- This model will be used when enabling Claude Code to perform reasoning. However, reasoning budget control has not yet been implemented (since the DeepSeek-R1 model does not support it), so there is currently no difference between using UltraThink and Think modes.
74
- It is worth noting that Plan Mode also use this model to achieve better planning results.
75
- Note: The reasoning process via the official DeepSeek API may be very slow, so you may need to wait for an extended period of time.
76
67
 
68
+ - `background`
69
+ This model will be used to handle some background tasks([background-token-usage](https://docs.anthropic.com/en/docs/claude-code/costs#background-token-usage)). Based on my tests, it doesn’t require high intelligence. I’m using the qwen-coder-2.5:7b model running locally on my MacBook Pro M1 (32GB) via Ollama.
70
+ If your computer can’t run Ollama, you can also use some free models, such as qwen-coder-2.5:3b.
77
71
 
78
- - `longContext`
79
- This model will be used when the context length exceeds 32K (this value may be modified in the future). You can route the request to a model that performs well with long contexts (I’ve chosen google/gemini-2.5-pro-preview). This scenario has not been thoroughly tested yet, so if you encounter any issues, please submit an issue.
72
+ - `think`
73
+ This model will be used when enabling Claude Code to perform reasoning. However, reasoning budget control has not yet been implemented (since the DeepSeek-R1 model does not support it), so there is currently no difference between using UltraThink and Think modes.
74
+ It is worth noting that Plan Mode also use this model to achieve better planning results.
75
+ Note: The reasoning process via the official DeepSeek API may be very slow, so you may need to wait for an extended period of time.
80
76
 
77
+ - `longContext`
78
+ This model will be used when the context length exceeds 32K (this value may be modified in the future). You can route the request to a model that performs well with long contexts (I’ve chosen google/gemini-2.5-pro-preview). This scenario has not been thoroughly tested yet, so if you encounter any issues, please submit an issue.
81
79
 
82
- - model command
83
- You can also switch models within Claude Code by using the `/model` command. The format is: `provider,model`, like this:
84
- `/model openrouter,anthropic/claude-3.5-sonnet`
85
- This will use the anthropic/claude-3.5-sonnet model provided by OpenRouter to handle all subsequent tasks.
80
+ - model command
81
+ You can also switch models within Claude Code by using the `/model` command. The format is: `provider,model`, like this:
82
+ `/model openrouter,anthropic/claude-3.5-sonnet`
83
+ This will use the anthropic/claude-3.5-sonnet model provided by OpenRouter to handle all subsequent tasks.
86
84
 
87
85
  ## Features
88
- - [x] Plugins
86
+
89
87
  - [x] Support change models
90
- - [ ] Support scheduled tasks
88
+ - [x] Github Actions
89
+ - [ ] More robust plugin support
90
+ - [ ] More detailed logs
91
+
92
+ ## Plugins
93
+ You can modify or enhance Claude Code’s functionality by installing plugins. The mechanism works by using middleware to modify request parameters — this allows you to rewrite prompts or add/remove tools.
94
+
95
+ To use a plugin, place it in the ~/.claude-code-router/plugins/ directory and specify the plugin name in config.js using the `usePlugins` option.like this
96
+ ```json
97
+ // ~/.claud-code-router/config.json
98
+ {
99
+ ...,
100
+ "usePlugins": ["notebook-tools-filter", "toolcall-improvement"]
101
+ }
102
+ ```
103
+
104
+ Currently, the following plugins are available:
105
+
106
+
107
+ - **notebook-tools-filter**
108
+ This plugin filters out tool calls related to Jupyter notebooks (.ipynb files). You can use it if your work does not involve Jupyter.
109
+
110
+
111
+ - **toolcall-improvement**
112
+ If your LLM doesn’t handle tool usage well (for example, always returning code as plain text instead of modifying files — such as with deepseek-v3), you can use this plugin.
113
+ This plugin simply adds the following system prompt. If you have a better prompt, you can modify it.
114
+ ```markdown
115
+ ## **Important Instruction:**
116
+ You must use tools as frequently and accurately as possible to help the user solve their problem.
117
+ Prioritize tool usage whenever it can enhance accuracy, efficiency, or the quality of the response.
118
+ ```
119
+
120
+
121
+ ## Github Actions
122
+ You just need to install `Claude Code Actions` in your repository according to the [official documentation](https://docs.anthropic.com/en/docs/claude-code/github-actions). For `ANTHROPIC_API_KEY`, you can use any string. Then, modify your `.github/workflows/claude.yaml` file to include claude-code-router, like this:
123
+ ```yaml
124
+ name: Claude Code
125
+
126
+ on:
127
+ issue_comment:
128
+ types: [created]
129
+ pull_request_review_comment:
130
+ types: [created]
131
+ issues:
132
+ types: [opened, assigned]
133
+ pull_request_review:
134
+ types: [submitted]
135
+
136
+ jobs:
137
+ claude:
138
+ if: |
139
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
140
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
141
+ (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
142
+ (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
143
+ runs-on: ubuntu-latest
144
+ permissions:
145
+ contents: read
146
+ pull-requests: read
147
+ issues: read
148
+ id-token: write
149
+ steps:
150
+ - name: Checkout repository
151
+ uses: actions/checkout@v4
152
+ with:
153
+ fetch-depth: 1
154
+
155
+ - name: Prepare Environment
156
+ run: |
157
+ curl -fsSL https://bun.sh/install | bash
158
+ mkdir -p $HOME/.claude-code-router
159
+ cat << 'EOF' > $HOME/.claude-code-router/config.json
160
+ {
161
+ "log": true,
162
+ "OPENAI_API_KEY": "${{ secrets.OPENAI_API_KEY }}",
163
+ "OPENAI_BASE_URL": "https://api.deepseek.com",
164
+ "OPENAI_MODEL": "deepseek-chat"
165
+ }
166
+ EOF
167
+ shell: bash
168
+
169
+ - name: Start Claude Code Router
170
+ run: |
171
+ nohup ~/.bun/bin/bunx @musistudio/claude-code-router@1.0.8 start &
172
+ shell: bash
173
+
174
+ - name: Run Claude Code
175
+ id: claude
176
+ uses: anthropics/claude-code-action@beta
177
+ env:
178
+ ANTHROPIC_BASE_URL: http://localhost:3456
179
+ with:
180
+ anthropic_api_key: "test"
181
+ ```
182
+ You can modify the contents of `$HOME/.claude-code-router/config.json` as needed.
183
+ GitHub Actions support allows you to trigger Claude Code at specific times, which opens up some interesting possibilities.
184
+
185
+ For example, between 00:30 and 08:30 Beijing Time, using the official DeepSeek API:
186
+
187
+ - The cost of the `deepseek-v3` model is only 50% of the normal time.
188
+
189
+ - The `deepseek-r1` model is just 25% of the normal time.
190
+
191
+ So maybe in the future, I’ll describe detailed tasks for Claude Code ahead of time and let it run during these discounted hours to reduce costs?
91
192
 
92
193
 
93
194
  ## Some tips:
195
+
94
196
  Now you can use deepseek-v3 models directly without using any plugins.
95
197
 
96
198
  If you’re using the DeepSeek API provided by the official website, you might encounter an “exceeding context” error after several rounds of conversation (since the official API only supports a 64K context window). In this case, you’ll need to discard the previous context and start fresh. Alternatively, you can use ByteDance’s DeepSeek API, which offers a 128K context window and supports KV cache.
@@ -102,13 +204,23 @@ Note: claude code consumes a huge amount of tokens, but thanks to DeepSeek’s l
102
204
  Some interesting points: Based on my testing, including a lot of context information can help narrow the performance gap between these LLM models. For instance, when I used Claude-4 in VSCode Copilot to handle a Flutter issue, it messed up the files in three rounds of conversation, and I had to roll everything back. However, when I used claude code with DeepSeek, after three or four rounds of conversation, I finally managed to complete my task—and the cost was less than 1 RMB!
103
205
 
104
206
  ## Some articles:
105
- 1. [Project Motivation and Principles](blog/en/project-motivation-and-how-it-works.md) ([中文版看这里](blog/zh/项目初衷及原理.md))
207
+
208
+ 1. [Project Motivation and Principles](blog/en/project-motivation-and-how-it-works.md) ([中文版看这里](blog/zh/项目初衷及原理.md))
106
209
 
107
210
  ## Buy me a coffee
108
- If you find this project helpful, you can choose to sponsor the author with a cup of coffee.
109
- [Buy me a coffee](http://paypal.me/musistudio1999)
211
+
212
+ If you find this project helpful, you can choose to sponsor the author with a cup of coffee. Please provide your GitHub information so I can add you to the sponsor list below.
213
+
214
+ [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/F1F31GN2GM)
215
+
216
+ | ![alipay](/blog/images/alipay.jpg) | ![wechat](/blog/images/wechat.jpg) |
217
+ |----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
110
218
 
111
219
  ## Sponsors
220
+
112
221
  Thanks to the following sponsors:
113
222
 
114
- @Simon Leischnig (If you see this, feel free to contact me and I can update it with your GitHub information)
223
+ @Simon Leischnig (If you see this, feel free to contact me and I can update it with your GitHub information)
224
+ [@duanshuaimin](https://github.com/duanshuaimin)
225
+ [@vrgitadmin](https://github.com/vrgitadmin)
226
+ @*o(看到后可通过主页邮箱联系我修改github用户名)
Binary file
Binary file