@h1d3rone/claude-proxy 0.1.0

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 ADDED
@@ -0,0 +1,338 @@
1
+ # claude-proxy
2
+
3
+ `claude-proxy` 是一个本地单机版的 Claude 代理工具。
4
+
5
+ 它会在本机启动一个 Claude 兼容的 `/v1/messages` 服务,把 Claude Code 请求转换成 OpenAI 兼容上游请求,同时帮你维护 Claude Code 和 Codex 的本地配置。
6
+
7
+ ## 功能
8
+
9
+ - 将 Claude 请求转发到 OpenAI 兼容上游
10
+ - 交互式生成和维护 `~/.claude-proxy/config.toml`
11
+ - 自动修改 `~/.claude/settings.json`,让 Claude Code 走本地代理
12
+ - 自动修改 `~/.codex/config.toml` 和 `~/.codex/auth.json`
13
+ - 支持全量配置/清理,也支持只处理 `claude` 或 `openai` 单项
14
+ - 支持 Claude 会话开始自动启动代理、结束自动停止代理
15
+ - 只支持本机,不再支持远端主机配置
16
+
17
+ ## 要求
18
+
19
+ - Node.js `>= 18`
20
+ - 已安装 Claude Code
21
+ - 如果需要同步配置 Codex,需要本机存在 `~/.codex`
22
+
23
+ ## 安装
24
+
25
+ 推荐全局安装,因为 Claude Hook 需要能直接在 `PATH` 中找到 `claude-proxy`。
26
+
27
+ ```bash
28
+ npm install -g @h1d3rone/claude-proxy
29
+ ```
30
+
31
+ 安装后实际命令仍然是:
32
+
33
+ ```bash
34
+ claude-proxy
35
+ ```
36
+
37
+ 开发环境:
38
+
39
+ ```bash
40
+ npm install
41
+ npm test
42
+ ```
43
+
44
+ ## 快速开始
45
+
46
+ 1. 全量配置:
47
+
48
+ ```bash
49
+ claude-proxy config
50
+ ```
51
+
52
+ 2. 查看当前配置:
53
+
54
+ ```bash
55
+ claude-proxy config get
56
+ ```
57
+
58
+ 3. 手动启动代理:
59
+
60
+ ```bash
61
+ claude-proxy start
62
+ ```
63
+
64
+ 如果已经执行过 `claude-proxy config`,Claude Code 会在会话开始时自动检查代理是否已运行,未运行则启动;会话结束时自动停止。
65
+
66
+ ## 命令
67
+
68
+ ### 配置命令
69
+
70
+ ```bash
71
+ claude-proxy config
72
+ claude-proxy config claude
73
+ claude-proxy config openai
74
+ claude-proxy config get
75
+ ```
76
+
77
+ - `claude-proxy config`
78
+ 交互式配置全部字段,并同时应用到 Claude Code 和 Codex。
79
+
80
+ - `claude-proxy config claude`
81
+ 只配置 Claude 相关字段,并只更新 Claude 配置。
82
+
83
+ - `claude-proxy config openai`
84
+ 只配置 OpenAI/Codex 相关字段,并只更新 Codex 配置。
85
+
86
+ - `claude-proxy config get`
87
+ 显示配置文件、Claude、Codex 的当前状态。
88
+
89
+ ### 清理命令
90
+
91
+ ```bash
92
+ claude-proxy clean
93
+ claude-proxy clean claude
94
+ claude-proxy clean openai
95
+ ```
96
+
97
+ - `claude-proxy clean`
98
+ 恢复所有受管文件,并清除 `config.toml` 中所有受管字段。
99
+
100
+ - `claude-proxy clean claude`
101
+ 只恢复 Claude 相关文件,并清除 `config.toml` 中 Claude 相关字段。
102
+
103
+ - `claude-proxy clean openai`
104
+ 只恢复 Codex/OpenAI 相关文件,并清除 `config.toml` 中 OpenAI 相关字段。
105
+
106
+ 说明:
107
+
108
+ - `clean` 系列命令只恢复配置,不会主动停止当前正在运行的代理进程
109
+ - 如果需要停止代理,使用 `claude-proxy stop`
110
+
111
+ ### 运行命令
112
+
113
+ ```bash
114
+ claude-proxy start
115
+ claude-proxy stop
116
+ ```
117
+
118
+ - `claude-proxy start`
119
+ 使用当前配置启动本地代理,前台运行,启动成功后会输出监听地址和端口。
120
+
121
+ - `claude-proxy stop`
122
+ 停止当前受管代理进程。
123
+
124
+ ## 配置文件
125
+
126
+ 默认配置文件路径:
127
+
128
+ ```bash
129
+ ~/.claude-proxy/config.toml
130
+ ```
131
+
132
+ 也可以用 `--config` 指定:
133
+
134
+ ```bash
135
+ claude-proxy config --config /path/to/config.toml
136
+ claude-proxy config claude --config /path/to/config.toml
137
+ claude-proxy config openai --config /path/to/config.toml
138
+ claude-proxy config get --config /path/to/config.toml
139
+ claude-proxy clean --config /path/to/config.toml
140
+ ```
141
+
142
+ 参考示例见 [config_example.toml](./config_example.toml)。
143
+
144
+ ### 配置项
145
+
146
+ - `server_host`
147
+ 代理监听地址,默认 `127.0.0.1`
148
+
149
+ - `server_port`
150
+ 代理监听端口,默认 `8082`
151
+
152
+ - `base_url`
153
+ OpenAI 兼容上游地址
154
+
155
+ - `api_key`
156
+ 上游 API Key
157
+
158
+ - `big_model`
159
+ Claude `opus` 请求映射到的上游模型
160
+
161
+ - `middle_model`
162
+ Claude `sonnet` 请求映射到的上游模型
163
+
164
+ - `small_model`
165
+ Claude `haiku` 请求映射到的上游模型
166
+
167
+ - `default_claude_model`
168
+ Claude Code 默认模型
169
+
170
+ - `home_dir`
171
+ 家目录基路径,默认 `~`
172
+
173
+ - `claude_dir`
174
+ Claude 配置目录,默认 `~/.claude`
175
+
176
+ - `codex_dir`
177
+ Codex 配置目录,默认 `~/.codex`
178
+
179
+ - `codex_provider`
180
+ Codex 中要修改的 provider 名称,可选
181
+
182
+ ### 字段归属
183
+
184
+ `claude-proxy config claude` / `claude-proxy clean claude` 管理这些字段:
185
+
186
+ - `server_port`
187
+ - `big_model`
188
+ - `middle_model`
189
+ - `small_model`
190
+ - `default_claude_model`
191
+ - `claude_dir`
192
+
193
+ `claude-proxy config openai` / `claude-proxy clean openai` 管理这些字段:
194
+
195
+ - `base_url`
196
+ - `api_key`
197
+ - `codex_dir`
198
+ - `codex_provider`
199
+
200
+ `claude-proxy config` / `claude-proxy clean` 会处理以上全部受管字段。
201
+
202
+ ## Claude 与 Codex 的实际改动
203
+
204
+ ### Claude
205
+
206
+ 执行配置命令后,会修改 `~/.claude/settings.json` 中的受管部分:
207
+
208
+ - `ANTHROPIC_BASE_URL=http://localhost:<server_port>`
209
+ - `ANTHROPIC_API_KEY=arbitrary value`
210
+ - 默认模型相关环境变量
211
+ - `SessionStart` Hook:自动确保代理运行
212
+ - `SessionEnd` Hook:自动停止代理
213
+
214
+ ### Codex
215
+
216
+ 执行配置命令后,会修改:
217
+
218
+ - `~/.codex/config.toml`
219
+ 将目标 provider 的 `base_url` 改为配置文件中的 `base_url`
220
+
221
+ - `~/.codex/auth.json`
222
+ 将 `OPENAI_API_KEY` 改为配置文件中的 `api_key`
223
+
224
+ ## 兼容性说明
225
+
226
+ ### 上游 `base_url`
227
+
228
+ 如果你填的是 provider 根地址,例如:
229
+
230
+ ```toml
231
+ base_url = "https://newapis.xyz"
232
+ ```
233
+
234
+ 代理会自动把 Claude 转发流量发送到:
235
+
236
+ ```text
237
+ /v1/chat/completions
238
+ ```
239
+
240
+ 如果你已经显式填写了 `/v1`,例如:
241
+
242
+ ```toml
243
+ base_url = "https://newapis.xyz/v1"
244
+ ```
245
+
246
+ 则会保持该路径继续拼接兼容接口。
247
+
248
+ ### 单机模式
249
+
250
+ 本项目当前只支持单机模式:
251
+
252
+ - 不支持远端主机列表
253
+ - 不支持 `--host`
254
+ - 不支持旧版远端同步逻辑
255
+
256
+ ## 常见工作流
257
+
258
+ ### 首次接入
259
+
260
+ ```bash
261
+ claude-proxy config
262
+ claude-proxy config get
263
+ claude-proxy start
264
+ ```
265
+
266
+ ### 只重配 Claude
267
+
268
+ ```bash
269
+ claude-proxy config claude
270
+ ```
271
+
272
+ ### 只重配 OpenAI/Codex
273
+
274
+ ```bash
275
+ claude-proxy config openai
276
+ ```
277
+
278
+ ### 全量还原
279
+
280
+ ```bash
281
+ claude-proxy clean
282
+ ```
283
+
284
+ ### 只还原 Claude
285
+
286
+ ```bash
287
+ claude-proxy clean claude
288
+ ```
289
+
290
+ ### 只还原 OpenAI/Codex
291
+
292
+ ```bash
293
+ claude-proxy clean openai
294
+ ```
295
+
296
+ ## 旧命令迁移
297
+
298
+ 当前命令以现在项目实现为准:
299
+
300
+ - 旧的 `serve` 已改为 `start`
301
+ - 不再使用 `config set`
302
+ - 不再使用多远端主机配置
303
+
304
+ 也就是说,正确写法是:
305
+
306
+ ```bash
307
+ claude-proxy config
308
+ claude-proxy config claude
309
+ claude-proxy config openai
310
+ ```
311
+
312
+ 不是:
313
+
314
+ ```bash
315
+ claude-proxy config set
316
+ claude-proxy config set claude
317
+ ```
318
+
319
+ ## 开发
320
+
321
+ ```bash
322
+ npm install
323
+ npm test
324
+ ```
325
+
326
+ 常用 npm script:
327
+
328
+ ```bash
329
+ npm run config
330
+ npm run config:claude
331
+ npm run config:openai
332
+ npm run config:get
333
+ npm run clean
334
+ npm run clean:claude
335
+ npm run clean:openai
336
+ npm run start
337
+ npm run stop
338
+ ```
@@ -0,0 +1,11 @@
1
+ server_host = "127.0.0.1"
2
+ server_port = 8082
3
+ base_url = ""
4
+ api_key = ""
5
+ big_model = "gpt-5.4"
6
+ middle_model = "gpt-5.3-codex"
7
+ small_model = "gpt-5.2-codex"
8
+ default_claude_model = "opus[1m]"
9
+ home_dir = "~"
10
+ claude_dir = "~/.claude"
11
+ codex_dir = "~/.codex"
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@h1d3rone/claude-proxy",
3
+ "version": "0.1.0",
4
+ "description": "Node.js rewrite of claude-code-proxy with local Claude and Codex configuration management",
5
+ "bin": {
6
+ "claude-proxy": "./src/cli.js"
7
+ },
8
+ "files": [
9
+ "src",
10
+ "README.md",
11
+ "config_example.toml"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public",
15
+ "registry": "https://registry.npmjs.org/"
16
+ },
17
+ "scripts": {
18
+ "start": "node ./src/cli.js start",
19
+ "stop": "node ./src/cli.js stop",
20
+ "config": "node ./src/cli.js config",
21
+ "config:claude": "node ./src/cli.js config claude",
22
+ "config:openai": "node ./src/cli.js config openai",
23
+ "config:get": "node ./src/cli.js config get",
24
+ "clean": "node ./src/cli.js clean",
25
+ "clean:claude": "node ./src/cli.js clean claude",
26
+ "clean:openai": "node ./src/cli.js clean openai",
27
+ "test": "node --test"
28
+ },
29
+ "engines": {
30
+ "node": ">=18"
31
+ },
32
+ "dependencies": {
33
+ "@iarna/toml": "^2.2.5",
34
+ "commander": "^13.1.0",
35
+ "express": "^4.21.2",
36
+ "toml": "^3.0.0"
37
+ }
38
+ }