claude-code-runner 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 +559 -0
- package/README.zh-Hans.md +559 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +377 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +50 -0
- package/dist/config.js.map +1 -0
- package/dist/container.d.ts +23 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +971 -0
- package/dist/container.js.map +1 -0
- package/dist/credentials.d.ts +8 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +145 -0
- package/dist/credentials.js.map +1 -0
- package/dist/docker-config.d.ts +19 -0
- package/dist/docker-config.d.ts.map +1 -0
- package/dist/docker-config.js +101 -0
- package/dist/docker-config.js.map +1 -0
- package/dist/git/shadow-repository.d.ts +30 -0
- package/dist/git/shadow-repository.d.ts.map +1 -0
- package/dist/git/shadow-repository.js +645 -0
- package/dist/git/shadow-repository.js.map +1 -0
- package/dist/git-monitor.d.ts +15 -0
- package/dist/git-monitor.d.ts.map +1 -0
- package/dist/git-monitor.js +94 -0
- package/dist/git-monitor.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +221 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +49 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +12 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +82 -0
- package/dist/ui.js.map +1 -0
- package/dist/web-server-attach.d.ts +16 -0
- package/dist/web-server-attach.d.ts.map +1 -0
- package/dist/web-server-attach.js +249 -0
- package/dist/web-server-attach.js.map +1 -0
- package/dist/web-server.d.ts +27 -0
- package/dist/web-server.d.ts.map +1 -0
- package/dist/web-server.js +812 -0
- package/dist/web-server.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
[English](./README.md) | [简体中文](#)
|
|
2
|
+
|
|
3
|
+
# Claude Code Runner
|
|
4
|
+
|
|
5
|
+
> [!WARNING]
|
|
6
|
+
>
|
|
7
|
+
> - 这项工作处于 alpha 阶段,可能存在安全问题,使用风险自负。
|
|
8
|
+
> - 如有疑问,请发送邮件至 [admin@soraharu.com](mailto:admin@soraharu.com)。
|
|
9
|
+
|
|
10
|
+
在 Docker 容器内将 Claude Code 作为自主代理运行,并自动集成 GitHub。安全地绕过所有权限提示。
|
|
11
|
+
|
|
12
|
+
## 为什么选择 Claude Code Runner?
|
|
13
|
+
|
|
14
|
+
Claude Code Runner 的主要目标是通过允许 Claude Code 在没有权限提示的情况下执行,从而实现 **完全异步的智能体工作流**。通过在隔离的 Docker 容器中使用 `--dangerously-skip-permissions` 标志运行 Claude,Claude 可以:
|
|
15
|
+
|
|
16
|
+
- 无需请求权限即可立即执行任何命令
|
|
17
|
+
- 自主进行代码更改
|
|
18
|
+
- 运行构建工具、测试和开发服务器
|
|
19
|
+
- 创建提交并管理 git 操作
|
|
20
|
+
- 在不打断用户的情况下持续工作
|
|
21
|
+
|
|
22
|
+
通过 **基于浏览器的终端** 访问 Claude,让你可以在处理其他任务的同时监控 AI 助手并与之交互。这创建了一个真正自主的开发助手,类似于 [OpenAI Codex](https://chatgpt.com/codex) 或 [Google Jules](https://jules.dev),但在你的本地机器上运行,并且完全可控。
|
|
23
|
+
|
|
24
|
+
## 概述
|
|
25
|
+
|
|
26
|
+
Claude Code Runner 允许你在隔离的 Docker 容器中运行 Claude Code,为 AI 辅助开发提供安全的环境。它会自动:
|
|
27
|
+
|
|
28
|
+
- 为每个会话创建新的 git 分支
|
|
29
|
+
- 监控 Claude 所做的提交
|
|
30
|
+
- 提供交互式的更改审查
|
|
31
|
+
- 安全地转发凭证
|
|
32
|
+
- 启用推送/PR 创建工作流
|
|
33
|
+
- 运行自定义设置命令以初始化环境
|
|
34
|
+
|
|
35
|
+
## 安装
|
|
36
|
+
|
|
37
|
+
从 npm 全局安装 Claude Code Runner:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install -g @yanranxiaoxi/claude-code-runner
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 前置要求
|
|
44
|
+
|
|
45
|
+
- Node.js >= 22.13.0
|
|
46
|
+
- Docker 或 Podman
|
|
47
|
+
- Git
|
|
48
|
+
|
|
49
|
+
## 使用方法
|
|
50
|
+
|
|
51
|
+
### 快速开始
|
|
52
|
+
|
|
53
|
+
> **提示**:为了最快的启动速度,使用预构建的官方镜像:在配置中设置 `buildImage: false` 和 `dockerImage: registry.gitlab.soraharu.com/xiaoxi/claude-code-runner:latest`。
|
|
54
|
+
|
|
55
|
+
只需在任何 Git 仓库文件夹中运行:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
claude-run
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
这将:
|
|
62
|
+
|
|
63
|
+
1. 创建一个新分支 (`claude/[timestamp]`)
|
|
64
|
+
2. 启动一个包含 Claude Code 的 Docker 容器
|
|
65
|
+
3. 在 `http://localhost:3456` 上启动 Web UI
|
|
66
|
+
4. 自动打开浏览器
|
|
67
|
+
|
|
68
|
+
### 命令
|
|
69
|
+
|
|
70
|
+
#### `claude-run` (默认)
|
|
71
|
+
|
|
72
|
+
使用 Web UI 启动新容器(推荐):
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
claude-run
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### `claude-run start`
|
|
79
|
+
|
|
80
|
+
显式启动带选项的新容器:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
claude-run start [选项]
|
|
84
|
+
|
|
85
|
+
选项:
|
|
86
|
+
-c, --config <path> 配置文件 (默认: ./claude-run.config.json)
|
|
87
|
+
-n, --name <name> 容器名称前缀
|
|
88
|
+
--no-web 禁用 Web UI (使用终端附加)
|
|
89
|
+
--no-push 禁用自动分支推送
|
|
90
|
+
--no-pr 禁用自动 PR 创建
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### `claude-run attach [container-id]`
|
|
94
|
+
|
|
95
|
+
附加到现有容器:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# 交互式选择
|
|
99
|
+
claude-run attach
|
|
100
|
+
|
|
101
|
+
# 指定容器
|
|
102
|
+
claude-run attach abc123def456
|
|
103
|
+
|
|
104
|
+
选项:
|
|
105
|
+
--no-web 使用终端附加而不是 Web UI
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### `claude-run list`
|
|
109
|
+
|
|
110
|
+
列出所有 Claude Runner 容器:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
claude-run list
|
|
114
|
+
claude-run ls # 别名
|
|
115
|
+
|
|
116
|
+
选项:
|
|
117
|
+
-a, --all 显示所有容器 (包括已停止的)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### `claude-run stop [container-id]`
|
|
121
|
+
|
|
122
|
+
停止容器:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# 交互式选择
|
|
126
|
+
claude-run stop
|
|
127
|
+
|
|
128
|
+
# 指定容器
|
|
129
|
+
claude-run stop abc123def456
|
|
130
|
+
|
|
131
|
+
# 停止全部
|
|
132
|
+
claude-run stop --all
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### `claude-run logs [container-id]`
|
|
136
|
+
|
|
137
|
+
查看容器日志:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
claude-run logs
|
|
141
|
+
claude-run logs abc123def456
|
|
142
|
+
|
|
143
|
+
选项:
|
|
144
|
+
-f, --follow 跟踪日志输出
|
|
145
|
+
-n, --tail <lines> 显示的行数 (默认: 50)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### `claude-run clean`
|
|
149
|
+
|
|
150
|
+
删除已停止的容器:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
claude-run clean
|
|
154
|
+
claude-run clean --force # 删除所有容器
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### `claude-run config`
|
|
158
|
+
|
|
159
|
+
显示当前配置:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
claude-run config
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 配置
|
|
166
|
+
|
|
167
|
+
创建一个 `claude-run.config.json` 文件(参考 `claude-run.config.example.json`):
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"dockerImage": "claude-code-runner:latest",
|
|
172
|
+
"dockerfile": "./custom.Dockerfile",
|
|
173
|
+
"detached": false,
|
|
174
|
+
"autoPush": true,
|
|
175
|
+
"autoCreatePR": true,
|
|
176
|
+
"autoStartClaude": true,
|
|
177
|
+
"envFile": ".env",
|
|
178
|
+
"environment": {
|
|
179
|
+
"NODE_ENV": "development"
|
|
180
|
+
},
|
|
181
|
+
"setupCommands": ["npm install", "npm run build"],
|
|
182
|
+
"volumes": ["/host/path:/container/path:ro"],
|
|
183
|
+
"mounts": [
|
|
184
|
+
{
|
|
185
|
+
"source": "./data",
|
|
186
|
+
"target": "/workspace/data",
|
|
187
|
+
"readonly": false
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"source": "/home/user/configs",
|
|
191
|
+
"target": "/configs",
|
|
192
|
+
"readonly": true
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"allowedTools": ["*"],
|
|
196
|
+
"maxThinkingTokens": 100000,
|
|
197
|
+
"bashTimeout": 600000,
|
|
198
|
+
"containerPrefix": "my-project",
|
|
199
|
+
"claudeConfigPath": "~/.claude.json"
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
#### 配置选项
|
|
204
|
+
|
|
205
|
+
- `dockerImage`: 要使用的基础 Docker 镜像 (默认: `claude-code-runner:latest`)
|
|
206
|
+
- `buildImage`: 在本地构建镜像(默认:true)或从仓库拉取(设置为 false)
|
|
207
|
+
- `dockerfile`: 自定义 Dockerfile 的路径 (可选)
|
|
208
|
+
- `detached`: 在分离模式下运行容器
|
|
209
|
+
- `autoPush`: 提交后自动推送分支
|
|
210
|
+
- `autoCreatePR`: 自动创建拉取请求
|
|
211
|
+
- `autoStartClaude`: 自动启动 Claude Code (默认: true)
|
|
212
|
+
- `envFile`: 从文件加载环境变量 (例如 `.env`)
|
|
213
|
+
- `environment`: 额外的环境变量
|
|
214
|
+
- `setupCommands`: 容器启动后要运行的命令 (例如安装依赖)
|
|
215
|
+
- `volumes`: 旧版卷挂载 (字符串格式)
|
|
216
|
+
- `mounts`: 现代挂载配置 (对象格式)
|
|
217
|
+
- `allowedTools`: Claude 工具权限 (默认: 全部)
|
|
218
|
+
- `maxThinkingTokens`: Claude 的最大思考令牌数
|
|
219
|
+
- `bashTimeout`: bash 命令超时时间(毫秒)
|
|
220
|
+
- `containerPrefix`: 容器名称的自定义前缀
|
|
221
|
+
- `claudeConfigPath`: Claude 配置文件的路径
|
|
222
|
+
- `dockerSocketPath`: 自定义 Docker/Podman 套接字路径(默认自动检测)
|
|
223
|
+
|
|
224
|
+
#### 挂载配置
|
|
225
|
+
|
|
226
|
+
`mounts` 数组允许你将文件或目录挂载到容器中:
|
|
227
|
+
|
|
228
|
+
- `source`: 宿主机上的路径(相对路径从当前目录解析)
|
|
229
|
+
- `target`: 容器中的路径(相对路径从 /workspace 解析)
|
|
230
|
+
- `readonly`: 可选布尔值,使挂载为只读(默认: false)
|
|
231
|
+
|
|
232
|
+
示例用例:
|
|
233
|
+
|
|
234
|
+
- 挂载不应包含在 Git 中的数据目录
|
|
235
|
+
- 在宿主机和容器之间共享配置文件
|
|
236
|
+
- 挂载构建产物或依赖项
|
|
237
|
+
- 访问宿主系统资源(谨慎使用)
|
|
238
|
+
|
|
239
|
+
#### 使用预构建的容器镜像
|
|
240
|
+
|
|
241
|
+
默认情况下,Claude Code Runner 在本地构建 Docker 镜像。如果你更喜欢从仓库拉取预构建镜像:
|
|
242
|
+
|
|
243
|
+
**方案 1:使用官方预构建镜像(推荐)**
|
|
244
|
+
|
|
245
|
+
最简单的方式是使用官方维护的镜像,只需设置 `buildImage: false`:
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"buildImage": false
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
官方镜像 `registry.gitlab.soraharu.com/xiaoxi/claude-code-runner:latest` 会自动使用。
|
|
254
|
+
|
|
255
|
+
然后运行:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
claude-run
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
官方镜像具有以下优势:
|
|
262
|
+
- ✅ 定期维护和更新
|
|
263
|
+
- ✅ 已预配置并测试
|
|
264
|
+
- ✅ 开箱即用
|
|
265
|
+
- ✅ 启动速度更快
|
|
266
|
+
- ✅ 无需指定完整的镜像 URL
|
|
267
|
+
|
|
268
|
+
**方案 2:使用自定义镜像**
|
|
269
|
+
|
|
270
|
+
如果你在仓库中维护自己的镜像:
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"dockerImage": "myregistry.com/claude-code-runner:latest",
|
|
275
|
+
"buildImage": false
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**方案 3:本地构建(默认)**
|
|
280
|
+
|
|
281
|
+
从仓库中的 Dockerfile 构建镜像:
|
|
282
|
+
|
|
283
|
+
```json
|
|
284
|
+
{
|
|
285
|
+
"dockerImage": "claude-code-runner:latest",
|
|
286
|
+
"buildImage": true
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
这对以下场景很有用:
|
|
291
|
+
|
|
292
|
+
- **开发**:在本地定制镜像
|
|
293
|
+
- **团队工作流**:构建一致的环境
|
|
294
|
+
- **CI/CD 流水线**:生成自定义版本
|
|
295
|
+
|
|
296
|
+
## 功能特性
|
|
297
|
+
|
|
298
|
+
### Podman 支持
|
|
299
|
+
|
|
300
|
+
Claude Code Runner 还支持 Podman 作为 Docker 的替代方案。该工具通过检查可用的套接字路径自动检测你是使用 Docker 还是 Podman:
|
|
301
|
+
|
|
302
|
+
- **自动检测**: 工具在标准位置检查 Docker 和 Podman 套接字
|
|
303
|
+
- **自定义套接字路径**: 使用 `dockerSocketPath` 配置选项指定自定义套接字
|
|
304
|
+
- **环境变量**: 设置 `DOCKER_HOST` 来覆盖套接字检测
|
|
305
|
+
|
|
306
|
+
> **重要提示**:如果你使用 Podman 的 rootless(无根)模式,需要启用 Podman socket 服务:
|
|
307
|
+
>
|
|
308
|
+
> ```bash
|
|
309
|
+
> systemctl --user enable --now podman.socket
|
|
310
|
+
> ```
|
|
311
|
+
>
|
|
312
|
+
> 验证 socket 服务是否正在运行:
|
|
313
|
+
>
|
|
314
|
+
> ```bash
|
|
315
|
+
> systemctl --user status podman.socket
|
|
316
|
+
> ```
|
|
317
|
+
|
|
318
|
+
Podman 的示例配置:
|
|
319
|
+
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"dockerSocketPath": "/run/user/1000/podman/podman.sock"
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
工具将在以下情况下自动检测并使用 Podman:
|
|
327
|
+
|
|
328
|
+
- Docker 套接字不可用
|
|
329
|
+
- 在标准位置找到 Podman 套接字(`/run/podman/podman.sock` 或 `$XDG_RUNTIME_DIR/podman/podman.sock`)
|
|
330
|
+
|
|
331
|
+
### Web UI 终端
|
|
332
|
+
|
|
333
|
+
启动基于浏览器的终端界面以与 Claude Code 交互:
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
claude-run --web
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
这将:
|
|
340
|
+
|
|
341
|
+
- 以分离模式启动容器
|
|
342
|
+
- 在 `http://localhost:3456` 上启动 Web 服务器
|
|
343
|
+
- 自动打开浏览器
|
|
344
|
+
- 提供完整的终端界面,具有:
|
|
345
|
+
- 实时终端流
|
|
346
|
+
- 复制/粘贴支持
|
|
347
|
+
- 终端调整大小
|
|
348
|
+
- 重新连接功能
|
|
349
|
+
|
|
350
|
+
非常适合在处理其他任务时监控 Claude 的工作。
|
|
351
|
+
|
|
352
|
+
### 自动凭证发现
|
|
353
|
+
|
|
354
|
+
Claude Code Runner 会自动发现并转发:
|
|
355
|
+
|
|
356
|
+
**Claude 凭证:**
|
|
357
|
+
|
|
358
|
+
- Anthropic API 密钥 (`ANTHROPIC_API_KEY`)
|
|
359
|
+
- macOS 钥匙串凭证(Claude Code)
|
|
360
|
+
- AWS Bedrock 凭证
|
|
361
|
+
- Google Vertex 凭证
|
|
362
|
+
- Claude 配置文件(`.claude.json`、`.claude/`)
|
|
363
|
+
|
|
364
|
+
**GitHub 凭证:**
|
|
365
|
+
|
|
366
|
+
- GitHub CLI 身份验证(`gh auth`)
|
|
367
|
+
- GitHub 令牌(`GITHUB_TOKEN`、`GH_TOKEN`)
|
|
368
|
+
- Git 配置(`.gitconfig`)
|
|
369
|
+
|
|
370
|
+
### 沙箱执行
|
|
371
|
+
|
|
372
|
+
- Claude 使用 `--dangerously-skip-permissions` 标志运行(在容器中安全)
|
|
373
|
+
- 为每个会话创建隔离的分支
|
|
374
|
+
- 在容器内完全访问运行任何命令
|
|
375
|
+
- 文件被复制到容器中(而不是挂载),实现真正的隔离
|
|
376
|
+
- 保留 Git 历史以进行适当的版本控制
|
|
377
|
+
|
|
378
|
+
### 提交监控
|
|
379
|
+
|
|
380
|
+
当 Claude 进行提交时:
|
|
381
|
+
|
|
382
|
+
1. 出现实时通知
|
|
383
|
+
2. 显示带语法高亮的完整差异
|
|
384
|
+
3. 交互式菜单提供选项:
|
|
385
|
+
- 继续工作
|
|
386
|
+
- 将分支推送到远程
|
|
387
|
+
- 推送分支并创建 PR
|
|
388
|
+
- 退出
|
|
389
|
+
|
|
390
|
+
### 使用多个容器
|
|
391
|
+
|
|
392
|
+
同时运行多个 Claude 实例:
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
# 终端 1: 启动主开发
|
|
396
|
+
claude-run start --name main-dev
|
|
397
|
+
|
|
398
|
+
# 终端 2: 启动功能分支工作
|
|
399
|
+
claude-run start --name feature-auth
|
|
400
|
+
|
|
401
|
+
# 终端 3: 列出所有运行中的容器
|
|
402
|
+
claude-run list
|
|
403
|
+
|
|
404
|
+
# 终端 4: 附加到任何容器
|
|
405
|
+
claude-run attach
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
## Docker 环境
|
|
409
|
+
|
|
410
|
+
### 默认镜像
|
|
411
|
+
|
|
412
|
+
默认 Docker 镜像包含:
|
|
413
|
+
|
|
414
|
+
- Ubuntu 22.04
|
|
415
|
+
- Git、GitHub CLI
|
|
416
|
+
- Node.js、npm
|
|
417
|
+
- Python 3
|
|
418
|
+
- Claude Code(最新版)
|
|
419
|
+
- 构建必需工具
|
|
420
|
+
|
|
421
|
+
### 自定义 Dockerfile
|
|
422
|
+
|
|
423
|
+
创建自定义环境:
|
|
424
|
+
|
|
425
|
+
```dockerfile
|
|
426
|
+
FROM claude-code-runner:latest
|
|
427
|
+
|
|
428
|
+
# 添加你的工具
|
|
429
|
+
RUN apt-get update && apt-get install -y \
|
|
430
|
+
rust \
|
|
431
|
+
cargo \
|
|
432
|
+
postgresql-client
|
|
433
|
+
|
|
434
|
+
# 安装项目依赖
|
|
435
|
+
COPY package.json /tmp/
|
|
436
|
+
RUN cd /tmp && npm install
|
|
437
|
+
|
|
438
|
+
# 自定义配置
|
|
439
|
+
ENV CUSTOM_VAR=value
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
在配置中引用:
|
|
443
|
+
|
|
444
|
+
```json
|
|
445
|
+
{
|
|
446
|
+
"dockerfile": "./my-custom.Dockerfile"
|
|
447
|
+
}
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
## 工作流示例
|
|
451
|
+
|
|
452
|
+
1. **启动 Claude Runner:**
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
cd my-project
|
|
456
|
+
claude-run
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
2. **与 Claude 交互:**
|
|
460
|
+
|
|
461
|
+
```
|
|
462
|
+
> 帮我重构认证模块以使用 JWT 令牌
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
3. **Claude 自主工作:**
|
|
466
|
+
|
|
467
|
+
- 探索代码库
|
|
468
|
+
- 进行更改
|
|
469
|
+
- 运行测试
|
|
470
|
+
- 提交更改
|
|
471
|
+
|
|
472
|
+
4. **审查并推送:**
|
|
473
|
+
- 查看提交通知
|
|
474
|
+
- 审查带语法高亮的差异
|
|
475
|
+
- 选择推送并创建 PR
|
|
476
|
+
|
|
477
|
+
## 安全考虑
|
|
478
|
+
|
|
479
|
+
- 凭证以只读方式挂载
|
|
480
|
+
- 容器与宿主机隔离
|
|
481
|
+
- 分支限制可防止意外修改主分支
|
|
482
|
+
- 所有更改在推送前需要明确的用户批准
|
|
483
|
+
|
|
484
|
+
## 故障排除
|
|
485
|
+
|
|
486
|
+
### Docker 权限问题
|
|
487
|
+
|
|
488
|
+
将你的用户添加到 docker 组:
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
sudo usermod -aG docker $USER
|
|
492
|
+
# 注销并重新登录以使更改生效
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### 容器清理
|
|
496
|
+
|
|
497
|
+
删除所有 Claude Runner 容器和镜像:
|
|
498
|
+
|
|
499
|
+
```bash
|
|
500
|
+
npm run purge-containers
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### 凭证发现失败
|
|
504
|
+
|
|
505
|
+
显式设置凭证:
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
export ANTHROPIC_API_KEY=your-key
|
|
509
|
+
export GITHUB_TOKEN=your-token
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
或使用 `.env` 文件配合 `envFile` 配置选项。
|
|
513
|
+
|
|
514
|
+
### 构建错误
|
|
515
|
+
|
|
516
|
+
确保使用 Node.js >= 22.13.0:
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
node --version
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
## 开发
|
|
523
|
+
|
|
524
|
+
### 从源代码构建
|
|
525
|
+
|
|
526
|
+
从源代码构建和开发 Claude Code Runner:
|
|
527
|
+
|
|
528
|
+
```bash
|
|
529
|
+
git clone https://gitlab.soraharu.com/XiaoXi/claude-code-runner.git
|
|
530
|
+
cd claude-code-runner
|
|
531
|
+
npm install
|
|
532
|
+
npm run build
|
|
533
|
+
npm link # 创建全局 'claude-run' 命令
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### 可用脚本
|
|
537
|
+
|
|
538
|
+
- `npm run build` - 将 TypeScript 构建为 JavaScript
|
|
539
|
+
- `npm run dev` - 开发的监视模式
|
|
540
|
+
- `npm start` - 构建并运行 CLI
|
|
541
|
+
- `npm run lint` - 运行 ESLint
|
|
542
|
+
- `npm run fix` - 运行 ESLint 并修复格式错误
|
|
543
|
+
- `npm run purge-containers` - 清理所有容器
|
|
544
|
+
|
|
545
|
+
## 贡献
|
|
546
|
+
|
|
547
|
+
1. Fork 仓库
|
|
548
|
+
2. 创建功能分支
|
|
549
|
+
3. 进行更改
|
|
550
|
+
4. 运行代码检查:`npm run lint`
|
|
551
|
+
5. 提交拉取请求
|
|
552
|
+
|
|
553
|
+
## 感谢
|
|
554
|
+
|
|
555
|
+
[claude-code-sandbox](https://github.com/textcortex/claude-code-sandbox)
|
|
556
|
+
|
|
557
|
+
## 许可证
|
|
558
|
+
|
|
559
|
+
MIT
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|