Skip to content

Latest commit

 

History

History
981 lines (726 loc) · 25.6 KB

File metadata and controls

981 lines (726 loc) · 25.6 KB

English | 简体中文

Claude Code Runner

Warning

  • 这项工作处于 alpha 阶段,可能存在安全问题,使用风险自负。
  • 如有疑问,请发送邮件至 admin@soraharu.com

在 Docker 容器内将 Claude Code、OpenCode、Codex、Kimi Code 或 Qwen Code 作为自主代理运行,并自动集成 GitHub。安全地绕过所有权限提示。

支持的代码运行器

Claude Code Runner 支持多个 AI 编程助手:

运行器 命令 描述
Claude Code claude-run Anthropic 官方的 Claude Code CLI
OpenCode claude-run --runner opencode 支持多提供商的开源替代方案
Codex claude-run --runner codex OpenAI 的 Codex CLI
Kimi Code claude-run --runner kimi 月之暗面的 Kimi Code CLI
Qwen Code claude-run --runner qwen 阿里巴巴的 Qwen Code CLI

你可以通过以下方式切换运行器:

  • CLI 参数: --runner claude--runner opencode--runner codex--runner kimi--runner qwen
  • 配置文件: 在 claude-run.config.json 中设置 "codeRunner": "codex"(或 "kimi""qwen" 等)

为什么选择 Claude Code Runner?

Claude Code Runner 的主要目标是通过允许 Claude Code、OpenCode、Codex、Kimi Code 或 Qwen Code 在没有权限提示的情况下执行,从而实现 完全异步的智能体工作流。通过在隔离的 Docker 容器中使用危险/自动批准模式标志运行 AI 助手,AI 可以:

  • 无需请求权限即可立即执行任何命令
  • 自主进行代码更改
  • 运行构建工具、测试和开发服务器
  • 创建提交并管理 Git 操作
  • 在不打断用户的情况下持续工作

通过 基于浏览器的终端 访问代码助手,让你可以在处理其他任务的同时监控 AI 助手并与之交互。这创建了一个真正自主的开发助手,类似于 OpenAI CodexGoogle Jules,但在你的本地机器上运行,并且完全可控。

概述

Claude Code Runner 允许你在隔离的 Docker 容器中运行 Claude Code、OpenCode、Codex、Kimi Code 或 Qwen Code,为 AI 辅助开发提供安全的环境。它会自动:

  • 为每个会话创建新的 Git 分支
  • 监控 AI 助手所做的提交
  • 提供交互式的更改审查
  • 安全地转发凭证
  • 启用推送/PR 创建工作流
  • 运行自定义设置命令以初始化环境

安装

从 npm 全局安装 Claude Code Runner:

npm install -g claude-code-runner

前置要求

  • Node.js >= 22.13.0
  • Docker 或 Podman
  • Git

使用方法

快速开始

提示:为了最快的启动速度,使用预构建的官方镜像:在配置中设置 buildImage: false。默认镜像会自动使用与 CLI 版本匹配的标签(例如 ghcr.io/yanranxiaoxi/claude-code-runner:v0.3.2)。

只需在任何目录中运行:

claude-run

这将:

  1. 创建一个新分支 (claude/[timestamp])
  2. 启动一个包含 Claude Code 的 Docker 容器
  3. http://localhost:3456 上启动 Web UI
  4. 自动打开浏览器

Warning

非 Git 目录支持

如果你在非 Git 目录中运行 claude-run,工具会提示你初始化 Git 仓库。如果你同意,它会自动运行 git init,创建初始提交,并启动容器。重要:初始化后,你必须手动设置远程仓库(例如在 GitHub 上)并配置上游以保存更改。使用如下命令:

git remote add origin <你的仓库 URL>
git push -u origin main

如果不设置上游,你的更改将仅存在于容器内的本地。

Note

使用带密码的 SSH 密钥

如果你的 SSH 密钥设置了密码保护,在运行 claude-run 之前先启动 SSH agent:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa  # 输入一次密码
claude-run  # SSH agent 会被转发到容器

这样 Claude Code 就可以使用你的 SSH 密钥,而不会反复提示输入密码。

Tip

中国大陆用户配置代理

如果你在中国大陆地区,可能需要配置代理以访问 Claude API。参考 claude-run.config.cn-example.json 创建配置文件:

{
  "buildImage": false,
  "environment": {
    "ANTHROPIC_AUTH_TOKEN": "<YOUR_ANTHROPIC_AUTH_TOKEN>",
    "ANTHROPIC_BASE_URL": "https://api.ai.soraharu.com",
    "ANTHROPIC_MODEL": "anthropic/claude-sonnet-4-5",
    "ANTHROPIC_SMALL_FAST_MODEL": "anthropic/claude-haiku-4-5"
  }
}

<YOUR_ANTHROPIC_AUTH_TOKEN> 替换为你的实际令牌,ANTHROPIC_BASE_URL 替换为你的代理地址。

命令

快捷命令

以下命令是 claude-run 的快捷方式:

  • clauderun
  • ccrun
  • ocrun(OpenCode 别名)
  • opencoderun(OpenCode 别名)
  • opencode-run(OpenCode 别名)
  • cxrun(Codex 别名)
  • codexrun(Codex 别名)
  • codex-run(Codex 别名)
  • kmrun(Kimi Code 别名)
  • kimirun(Kimi Code 别名)
  • kimi-run(Kimi Code 别名)
  • qwrun(Qwen Code 别名)
  • qwenrun(Qwen Code 别名)
  • qwen-run(Qwen Code 别名)

claude-run(默认)

使用 Web UI 启动新容器(推荐):

claude-run

使用 OpenCode

要使用 OpenCode 而不是 Claude Code:

# 通过 CLI 参数
claude-run --runner opencode

# 或使用 OpenCode 别名
ocrun
opencoderun
opencode-run

使用 Codex

要使用 OpenAI Codex:

# 通过 CLI 参数
claude-run --runner codex

# 或使用 Codex 别名
cxrun
codexrun
codex-run

使用 Kimi Code

要使用月之暗面的 Kimi Code:

# 通过 CLI 参数
claude-run --runner kimi

# 或使用 Kimi Code 别名
kmrun
kimirun
kimi-run

使用 Qwen Code

要使用阿里巴巴的 Qwen Code:

# 通过 CLI 参数
claude-run --runner qwen

# 或使用 Qwen Code 别名
qwrun
qwenrun
qwen-run

claude-run start

显式启动带选项的新容器:

claude-run start [选项]

选项:
  -c, --config <path>    配置文件(默认: ./claude-run.config.json)
  -n, --name <name>      容器名称前缀
  --runner <runner>      要使用的代码运行器: 'claude''opencode''codex''kimi''qwen'
  --shell <shell>        启动时使用的 shell: 'claude''opencode''codex''kimi''qwen''bash'
  --no-web               禁用 Web UI(使用终端附加)
  --no-push              禁用自动分支推送
  --no-pr                禁用自动 PR 创建

claude-run attach [container-id]

附加到现有容器:

# 交互式选择
claude-run attach

# 指定容器
claude-run attach abc123def456

选项:
  --no-web               使用终端附加而不是 Web UI

claude-run list

列出所有 Claude Runner 容器:

claude-run list
claude-run ls        # 别名

选项:
  -a, --all              显示所有容器(包括已停止的)

claude-run stop [container-id]

停止容器:

# 交互式选择
claude-run stop

# 指定容器
claude-run stop abc123def456

# 停止全部
claude-run stop --all

claude-run logs [container-id]

查看容器日志:

claude-run logs
claude-run logs abc123def456

选项:
  -f, --follow           跟踪日志输出
  -n, --tail <lines>     显示的行数(默认: 50)

claude-run clean

删除已停止的容器:

claude-run clean
claude-run clean --force  # 删除所有容器

claude-run config

显示当前配置:

claude-run config

claude-run self-update

更新 Claude Code Runner 到最新版本:

claude-run self-update
claude-run update        # 别名

此命令会自动将全局安装的包更新到 npm 上可用的最新版本。

配置

创建一个 claude-run.config.json 文件(参考 claude-run.config.example.json):

{
	"dockerImage": "claude-code-runner:latest",
	"buildImage": true,
	"dockerfile": "./custom.Dockerfile",
	"detached": false,
	"autoPush": true,
	"autoCreatePR": true,
	"autoStartClaude": true,
	"envFile": ".env",
	"environment": {
		"NODE_ENV": "development"
	},
	"setupCommands": ["npm install", "npm run build"],
	"volumes": ["/host/path:/container/path:ro"],
	"mounts": [
		{
			"source": "./data",
			"target": "/workspace/data",
			"readonly": false
		},
		{
			"source": "/home/user/configs",
			"target": "/configs",
			"readonly": true
		}
	],
	"allowedTools": ["*"],
	"maxThinkingTokens": 100000,
	"bashTimeout": 600000,
	"containerPrefix": "my-project",
	"claudeConfigPath": "~/.claude.json",
	"dockerSocketPath":"/run/user/1000/podman/podman.sock",
	"forwardSshKeys": true,
	"forwardGpgKeys": true,
	"forwardSshAgent": true,
	"forwardGpgAgent": false,
	"enableGpgSigning": false
}

配置选项

  • dockerImage: 要使用的基础 Docker 镜像 (默认: claude-code-runner:latest;当 buildImagefalse 时,默认使用与 CLI 版本匹配的官方镜像,如 ghcr.io/yanranxiaoxi/claude-code-runner:v0.3.2)
  • buildImage: 在本地构建镜像(默认:true)或从仓库拉取(设置为 false)
  • dockerfile: 自定义 Dockerfile 的路径(可选)
  • detached: 在分离模式下运行容器
  • autoPush: 提交后自动推送分支
  • autoCreatePR: 自动创建拉取请求
  • autoStartClaude: 自动启动 Claude Code (默认: true)
  • codeRunner: 要使用的代码运行器: "claude""opencode""codex""kimi""qwen" (默认: "claude")
  • defaultShell: 启动时使用的 shell: "claude""opencode""codex""kimi""qwen""bash" (默认: 与 codeRunner 一致)
  • envFile: 从文件加载环境变量 (例如 .env)
  • environment: 额外的环境变量
  • setupCommands: 容器启动后要运行的命令(例如安装依赖)
  • volumes: 旧版卷挂载(字符串格式)
  • mounts: 现代挂载配置(对象格式)
  • allowedTools: Claude 工具权限 (默认: 全部)
  • maxThinkingTokens: Claude 的最大思考令牌数
  • bashTimeout: bash 命令超时时间(毫秒)
  • containerPrefix: 容器名称的自定义前缀
  • claudeConfigPath: Claude 配置文件的路径
  • opencodeConfigPath: OpenCode 配置文件的路径(默认:~/.config/opencode/opencode.json
  • codexConfigPath: Codex 配置目录的路径(默认:~/.codex
  • kimiConfigPath: Kimi Code 配置目录的路径(默认:~/.kimi
  • qwenConfigPath: Qwen Code 配置目录的路径(默认:~/.qwen
  • dockerSocketPath: 自定义 Docker/Podman 套接字路径(默认自动检测)
  • forwardSshKeys: 将 ~/.ssh 中的 SSH 密钥转发到容器(默认:true)
  • forwardGpgKeys: 将 ~/.gnupg 中的 GPG 密钥转发到容器(默认:true)
  • forwardSshAgent: 转发 SSH agent 以支持带密码的密钥(默认:true)
  • forwardGpgAgent: 转发 GPG agent 以支持带密码的 GPG 密钥(默认:false,需显式启用)
  • enableGpgSigning: 在容器中启用 GPG 提交签名(默认:false)

OpenCode 配置

要使用 OpenCode 而不是 Claude Code,创建一个配置文件:

{
	"codeRunner": "opencode",
	"defaultShell": "opencode",
	"environment": {
		// Anthropic 提供商
		"ANTHROPIC_API_KEY": "your-api-key",

		// 自定义 API 端点(例如代理服务)
		"ANTHROPIC_BASE_URL": "https://your-proxy-url"
	}
}

OpenCode 支持多个提供商。详情请参阅 OpenCode 提供商文档

  • OpenAI、Anthropic、Google Vertex AI、Azure OpenAI
  • OpenRouter、Groq、Together AI 等
  • 通过 Ollama 或 LM Studio 使用本地模型
使用 oh-my-opencode 插件

容器已预装 oh-my-opencode。要启用它:

1. 在宿主机上创建配置(推荐方式):

在宿主机上创建 ~/.config/opencode/opencode.json

{
	"plugin": ["oh-my-opencode"],
	"agents": {
		"sisyphus": { "model": "anthropic/claude-opus-4-6" }
	}
}

在容器启动时,配置文件会自动复制到容器中。

2. 在容器内运行安装器:

# 在容器内执行
npx oh-my-opencode install --no-tui --claude=yes --gemini=no --copilot=no

注意:在宿主机上创建配置是首选方式,因为:

  • 配置文件通常包含敏感的 API 密钥
  • 你可以将它排除在 git 跟踪之外(将 opencode.json 添加到 .gitignore
  • 同一配置可以在多个容器之间重用
  • 你可以在 claude-run.config.json 中使用 opencodeConfigPath 自定义路径

有关详细配置选项,请参阅 oh-my-opencode 安装指南

Codex 配置

要使用 OpenAI Codex,创建一个配置文件:

{
	"codeRunner": "codex",
	"defaultShell": "codex",
	"environment": {
		"OPENAI_API_KEY": "your-openai-api-key"
	}
}

Codex 在容器中使用 --dangerously-bypass-approvals-and-sandbox 模式运行。你也可以在容器内通过 codex login 进行认证。

配置存储在 ~/.codex/(包括 config.tomlauth.json)。你可以在 claude-run.config.json 中使用 codexConfigPath 自定义路径。

详情请参阅 Codex CLI 文档

Kimi Code 配置

要使用月之暗面的 Kimi Code,创建一个配置文件:

{
	"codeRunner": "kimi",
	"defaultShell": "kimi",
	"environment": {
		"KIMI_API_KEY": "your-kimi-api-key",
		"KIMI_BASE_URL": "https://api.kimi.com/coding/v1"
	}
}

Kimi Code 在容器中使用 --yolo 模式(自动批准所有操作)运行。你也可以在 ~/.kimi/config.toml 中配置默认模型和其他选项。

配置存储在 ~/.kimi/。你可以在 claude-run.config.json 中使用 kimiConfigPath 自定义路径。

详情请参阅 Kimi Code CLI 文档

Qwen Code 配置

要使用阿里巴巴的 Qwen Code,创建一个配置文件:

{
	"codeRunner": "qwen",
	"defaultShell": "qwen",
	"environment": {
		"DASHSCOPE_API_KEY": "your-dashscope-api-key"
	}
}

Qwen Code 在容器中使用 --yolo 模式(自动批准所有操作)运行。它支持通过配置 ~/.qwen/settings.json 使用多个模型提供商。

配置存储在 ~/.qwen/。你可以在 claude-run.config.json 中使用 qwenConfigPath 自定义路径。

Qwen Code 还支持通过 settings.json 中的 modelProviders 配置使用 OPENAI_API_KEYANTHROPIC_API_KEYGEMINI_API_KEY

详情请参阅 Qwen Code 文档

挂载配置

mounts 数组允许你将文件或目录挂载到容器中:

  • source: 宿主机上的路径(相对路径从当前目录解析)
  • target: 容器中的路径(相对路径从 /workspace 解析)
  • readonly: 可选布尔值,使挂载为只读(默认: false)

示例用例:

  • 挂载不应包含在 Git 中的数据目录
  • 在宿主机和容器之间共享配置文件
  • 挂载构建产物或依赖项
  • 访问宿主系统资源(谨慎使用)

使用预构建的容器镜像

默认情况下,Claude Code Runner 在本地构建 Docker 镜像。如果你更喜欢从仓库拉取预构建镜像:

方案 1:使用官方预构建镜像(推荐)

最简单的方式是使用官方维护的镜像,只需设置 buildImage: false

{
	"buildImage": false
}

会自动使用与 CLI 版本匹配的官方镜像(例如 ghcr.io/yanranxiaoxi/claude-code-runner:v0.3.2)。

然后运行:

claude-run

可用的官方镜像:

  • GitHub 容器镜像仓库(默认):ghcr.io/yanranxiaoxi/claude-code-runner:v<version>
  • Docker Hubdocker.io/yanranxiaoxi/claude-code-runner:v<version>
  • GitLab 镜像仓库registry.gitlab.soraharu.com/xiaoxi/claude-code-runner:v<version>

注意:镜像标签中的 <version> 会自动匹配 CLI 版本号(例如 v0.3.2)。每个版本同时也提供 :latest 标签。

所有镜像都具有以下优势:

  • ✅ 定期维护和更新
  • ✅ 已预配置并测试
  • ✅ 开箱即用
  • ✅ 启动速度更快
  • ✅ 使用默认镜像(GitHub 容器镜像仓库)时无需指定完整的镜像 URL
  • ✅ 镜像标签自动与 CLI 版本匹配,确保版本一致性

要使用 Docker Hub:

{
	"buildImage": false,
	"dockerImage": "docker.io/yanranxiaoxi/claude-code-runner:v0.3.2"
}

要使用 GitLab 镜像仓库:

{
	"buildImage": false,
	"dockerImage": "registry.gitlab.soraharu.com/xiaoxi/claude-code-runner:v0.3.2"
}

方案 2:使用自定义镜像

如果你在仓库中维护自己的镜像:

{
	"dockerImage": "myregistry.com/claude-code-runner:latest",
	"buildImage": false
}

方案 3:本地构建(默认)

从仓库中的 Dockerfile 构建镜像:

{
	"dockerImage": "claude-code-runner:latest",
	"buildImage": true
}

这对以下场景很有用:

  • 开发:在本地定制镜像
  • 团队工作流:构建一致的环境
  • CI/CD 流水线:生成自定义版本

功能特性

Podman 支持

Claude Code Runner 还支持 Podman 作为 Docker 的替代方案。该工具通过检查可用的套接字路径自动检测你是使用 Docker 还是 Podman:

  • 自动检测: 工具在标准位置检查 Docker 和 Podman 套接字
  • 自定义套接字路径: 使用 dockerSocketPath 配置选项指定自定义套接字
  • 环境变量: 设置 DOCKER_HOST 来覆盖套接字检测

Important

如果你使用 Podman 的 rootless(无根)模式,需要启用 Podman socket 服务:

systemctl --user enable --now podman.socket

验证 socket 服务是否正在运行:

systemctl --user status podman.socket

Podman 的示例配置:

{
	"dockerSocketPath": "/run/user/1000/podman/podman.sock"
}

工具将在以下情况下自动检测并使用 Podman:

  • Docker 套接字不可用
  • 在标准位置找到 Podman 套接字(/run/podman/podman.sock$XDG_RUNTIME_DIR/podman/podman.sock

SSH 和 GPG 密钥支持

Claude Code Runner 会自动将你的 SSH 和 GPG 密钥转发到容器中,让你可以无缝地对任何远程仓库(GitHub、GitLab、Bitbucket、自托管等)进行 git 操作。

自动 SSH 密钥转发

默认情况下,你的 ~/.ssh 目录会自动挂载到容器中并设置正确的权限:

  • ✅ 支持所有 git 托管提供商(不仅仅是 GitHub)
  • ✅ 支持 SSH 协议(git@github.com:user/repo.git
  • ✅ 自动处理密钥权限
  • ✅ 支持多个 SSH 密钥

对于带密码的 SSH 密钥,在运行 claude-run 之前先在宿主机上启动 SSH agent:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa  # 输入你的密码
claude-run  # SSH agent 会被转发到容器

容器将使用宿主机的 SSH agent,因此你无需再次输入密码。

Note

故障排除:SSH Agent 无法连接

如果在容器内运行 ssh-add -l 显示 "communication with agent failed":

  1. 验证宿主机 agent:确保宿主机上 ssh-add -l 能正常工作
  2. 检查启动日志:容器启动时查看是否显示 "✓ SSH agent forwarding enabled via socat relay"
  3. 备用方案:禁用 agent 转发,直接使用密钥:
    {
      "forwardSshAgent": false,
      "forwardSshKeys": true
    }
    (如果密钥有密码保护,首次使用时可能需要输入密码)

GPG 密钥支持

来自 ~/.gnupg 的 GPG 密钥会自动转发到容器。GPG 提交签名默认是禁用的,以避免在非交互式环境中出现密码提示。

三种使用方式:

  1. 直接使用 GPG 密钥(推荐用于无密码密钥)

    • GPG 密钥文件自动复制到容器
    • 无需额外配置
    • 仅适用于没有密码的 GPG 密钥
  2. 通过 GPG agent 转发(推荐用于密码保护的密钥)

    • 需要在配置中启用:
    {
      "forwardGpgAgent": true,
      "enableGpgSigning": true
    }
    • 宿主机 GPG agent 会在容器启动时自动转发
    • 支持密码保护的密钥(无需在容器内输入密码)
    • 需要宿主机 gpg-agent 正在运行
  3. 完全禁用 GPG 签名

    • 默认行为(如果不配置 enableGpgSigning
    • 即使宿主机配置了 commit.gpgsign = true,容器内也会禁用签名
    • 这是为了避免在无法访问 /dev/tty 的容器环境中出现签名失败

Note

为了安全起见,建议使用 SSH 提交签名(如果 Git 服务器支持)。这样不需要配置 GPG 就能实现签名。

禁用 SSH/GPG 转发

如果你不想转发密钥,可以禁用此功能:

{
  "forwardSshKeys": false,
  "forwardGpgKeys": false,
  "forwardSshAgent": false,
  "forwardGpgAgent": false
}

Git 配置

你的 git 配置(姓名、邮箱等)会自动从宿主机复制。容器已预先配置为:

  • 自动接受所有 SSH 主机密钥(为了安全,请在首次连接时手动验证)
  • 使用 SSH agent 进行身份验证
  • 同时支持 SSH 和 HTTPS 协议

对于使用令牌的 HTTPS,设置 GITHUB_TOKEN 环境变量或使用内置的 gh CLI 令牌发现功能。

Web UI 终端

启动基于浏览器的终端界面以与 Claude Code 交互:

claude-run --web

这将:

  • 以分离模式启动容器
  • http://localhost:3456 上启动 Web 服务器
  • 自动打开浏览器
  • 提供完整的终端界面,具有:
    • 实时终端流
    • 复制/粘贴支持
    • 终端调整大小
    • 重新连接功能

非常适合在处理其他任务时监控 Claude 的工作。

自动凭证发现

Claude Code Runner 会自动发现并转发:

Claude 凭证:

  • Anthropic API 密钥(ANTHROPIC_API_KEY
  • macOS 钥匙串凭证(Claude Code)
  • AWS Bedrock 凭证
  • Google Vertex 凭证
  • Claude 配置文件(.claude.json.claude/

GitHub 凭证:

  • GitHub CLI 身份验证(gh auth
  • GitHub 令牌(GITHUB_TOKENGH_TOKEN
  • Git 配置(.gitconfig

沙箱执行

  • 代码运行器使用各自的危险/自动批准模式标志(在容器中安全):
    • Claude Code: --dangerously-skip-permissions
    • OpenCode: 无需标志(交互式 TUI;仅在非交互 -p 模式下自动批准)
    • Codex: --dangerously-bypass-approvals-and-sandbox
    • Kimi Code: --yolo
    • Qwen Code: --yolo
  • 为每个会话创建隔离的分支
  • 在容器内完全访问运行任何命令
  • 文件被复制到容器中(而不是挂载),实现真正的隔离
  • 保留 Git 历史以进行适当的版本控制

提交监控

当 Claude 进行提交时:

  1. 出现实时通知
  2. 显示带语法高亮的完整差异
  3. 交互式菜单提供选项:
    • 继续工作
    • 将分支推送到远程
    • 推送分支并创建 PR
    • 退出

使用多个容器

同时运行多个 Claude 实例:

# 终端 1: 启动主开发
claude-run start --name main-dev

# 终端 2: 启动功能分支工作
claude-run start --name feature-auth

# 终端 3: 列出所有运行中的容器
claude-run list

# 终端 4: 附加到任何容器
claude-run attach

Docker 环境

默认镜像

默认 Docker 镜像包含:

  • AlmaLinux 10
  • Git、GitHub CLI
  • Node.js、npm
  • Python 3
  • Claude Code
  • OpenCode(含 oh-my-opencode 插件)
  • Codex (OpenAI)
  • Kimi Code CLI
  • Qwen Code
  • 构建必需工具

自定义 Dockerfile

创建自定义环境:

FROM claude-code-runner:latest

# 添加你的工具
RUN apt-get update && apt-get install -y \
    rust \
    cargo \
    postgresql-client

# 安装项目依赖
COPY package.json /tmp/
RUN cd /tmp && npm install

# 自定义配置
ENV CUSTOM_VAR=value

在配置中引用:

{
	"dockerfile": "./my-custom.Dockerfile"
}

工作流示例

  1. 启动 Claude Runner:

    cd my-project
    claude-run
  2. 与 Claude 交互:

    > 帮我重构认证模块以使用 JWT 令牌
    
  3. Claude 自主工作:

    • 探索代码库
    • 进行更改
    • 运行测试
    • 提交更改
  4. 审查并推送:

    • 查看提交通知
    • 审查带语法高亮的差异
    • 选择推送并创建 PR

安全考虑

  • 凭证以只读方式挂载
  • 容器与宿主机隔离
  • 分支限制可防止意外修改主分支
  • 所有更改在推送前需要明确的用户批准

故障排除

Docker 权限问题

将你的用户添加到 docker 组:

sudo usermod -aG docker $USER
# 注销并重新登录以使更改生效

容器清理

删除所有 Claude Runner 容器和镜像:

npm run purge-containers

凭证发现失败

显式设置凭证:

export ANTHROPIC_API_KEY=your-key
export GITHUB_TOKEN=your-token

或使用 .env 文件配合 envFile 配置选项。

构建错误

确保使用 Node.js >= 22.13.0:

node --version

开发

从源代码构建

从源代码构建和开发 Claude Code Runner:

git clone https://gitlab.soraharu.com/XiaoXi/claude-code-runner.git
cd claude-code-runner
npm install
npm run build
npm link  # 创建全局 'claude-run' 命令

可用脚本

  • npm run build - 将 TypeScript 构建为 JavaScript
  • npm run dev - 开发的监视模式
  • npm start - 构建并运行 CLI
  • npm run lint - 运行 ESLint
  • npm run fix - 运行 ESLint 并修复格式错误
  • npm run purge-containers - 清理所有容器

贡献

  1. Fork 仓库
  2. 创建功能分支
  3. 进行更改
  4. 运行代码检查:npm run lint
  5. 提交拉取请求

感谢

claude-code-sandbox

许可证

MIT