Skip to content

Claude Code Web 版

Claude Code on the web 在 claude.ai/code 上运行 Anthropic 管理的云端基础设施,会话在关闭浏览器后仍持续运行,可通过 Claude 移动 App 监控。支持从终端用 --remote 启动云端任务、用 --teleport 将云端会话拉回本地,以及 Auto-fix PR(自动响应 CI 失败和代码审查评论)。云端环境预装了 Python、Node.js、Ruby、Go、Rust、Docker、PostgreSQL、Redis 等主流工具。

Claude Code on the web 在 Anthropic 管理的云端基础设施上运行任务,通过 claude.ai/code 访问。会话在关闭浏览器后仍持续,可随时通过 Claude 移动 App 监控。

本文覆盖:


GitHub 认证

云端会话需要访问你的 GitHub 仓库以克隆代码和推送分支。两种方式:

方式工作原理适合场景
GitHub AppWeb 快速入门 时安装 Claude GitHub App,按仓库授权需要明确的逐仓库授权
/web-setup在终端运行 /web-setup,将本地 gh CLI token 同步到 Claude 账号已经在用 gh 的个人开发者

两种方式都可用。/schedule 会检查是否有任一方式配置,没有则提示运行 /web-setup

注意Auto-fix PR 需要 GitHub App(用于接收 PR webhook)。用 /web-setup 连接后想启用 Auto-fix,需要在对应仓库安装 App。

Team/Enterprise 管理员可以在 claude.ai/admin-settings/claude-code 的 Quick web setup 开关来禁用 /web-setup


云端环境

每个会话在新的 Anthropic 管理 VM 上运行,克隆你的仓库。本节说明会话启动时有什么可用,以及如何定制。

云端会话中可用的内容

云端会话从仓库的新克隆开始——提交到仓库的内容可用,只在本机安装/配置的内容不可用:

内容云端可用原因
仓库的 CLAUDE.md克隆的一部分
仓库的 .claude/settings.json hooks克隆的一部分
仓库的 .mcp.json MCP 服务器克隆的一部分
仓库的 .claude/rules/克隆的一部分
仓库的 .claude/skills/.claude/agents/.claude/commands/克隆的一部分
.claude/settings.json 中声明的插件会话启动时从市场安装
用户级 ~/.claude/CLAUDE.md在你机器上,不在仓库
只在用户设置中启用的插件改为在仓库的 .claude/settings.json 中声明
claude mcp add 添加的 MCP 服务器写入本地用户配置,不是仓库。改用 .mcp.json
静态 API Token 和凭证暂无专用 secrets 存储。见下文
AWS SSO 等交互式认证不支持,需要浏览器登录

注意:目前没有专用 secrets 存储。环境变量和 Setup 脚本对能编辑该环境的人可见——如需在云端使用 secrets,请考虑这一可见性。

预安装工具

类别包含内容
PythonPython 3.x + pip、poetry、uv、black、mypy、pytest、ruff
Node.js20、21、22(via nvm),npm、yarn、pnpm、bun¹、eslint、prettier、chromedriver
Ruby3.1、3.2、3.3 + gem、bundler、rbenv
PHP8.4 + Composer
JavaOpenJDK 21 + Maven + Gradle
Go最新稳定版(模块支持)
Rustrustc + cargo
C/C++GCC、Clang、cmake、ninja、conan
Dockerdocker、dockerd、docker compose
数据库PostgreSQL 16、Redis 7.0
工具git、jq、yq、ripgrep、tmux、vim、nano

¹ Bun 已安装,但在云端代理下包获取有已知兼容问题。在云端会话中运行 check-tools 命令查看精确版本(该命令只在云端会话中存在)。

处理 GitHub Issues 和 PR

云端会话内置 GitHub 工具,Claude 可以直接读取 Issues、列出 PR、获取 Diff、发布评论,无需任何额外配置。这些工具通过 GitHub 代理认证,token 不会进入容器。

gh CLI 不预安装。如需用到 gh releasegh workflow run 等内置工具未覆盖的命令,在 Setup 脚本中安装并认证。

关联 Artifact 到会话

每个云端会话在 claude.ai 上有一个 Transcript URL,会话可以从 CLAUDE_CODE_REMOTE_SESSION_ID 环境变量读取自己的 ID。可以用这个在 PR body、commit message、Slack 或生成的报告中放置可追溯的链接:

bash
echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID}"

运行测试、启动服务和添加包

Claude 会作为处理任务的一部分来运行测试。只需在提示词中要求,比如"修复 tests/ 中失败的测试"或"每次修改后运行 pytest"。像 pytest、jest 和 cargo test 等测试运行器由于预装而开箱即用。PostgreSQL 和 Redis 已预装但默认不运行。在会话期间让 Claude 启动它们即可:

service postgresql start
service redis-server start

Docker 支持运行容器化服务。让 Claude 运行 docker compose up 来启动你的项目服务。拉取镜像的网络访问受环境的访问级别限制,且受信任的默认列表包含 Docker Hub 等常见镜像仓库。如果你的镜像很大或拉取很慢,可将 docker compose pulldocker compose build 添加到你的 Setup 脚本中。拉取的镜像会保存在缓存环境中,因此每个新会话都会在磁盘上保留它们。缓存仅存储文件,不保存运行中的进程,所以 Claude 仍需要在每个会话中启动容器。要添加未预装的包,使用 Setup 脚本。脚本的输出会被缓存,因此在那里安装的包在每个会话开始时都可用,无需每次重新安装。你也可以要求 Claude 在会话中途安装包,但这些安装不会带入其他会话。

资源限制

云端会话的大致上限(可能变化):

  • 4 vCPU
  • 16 GB RAM
  • 30 GB 磁盘

需要大量内存的任务(大型构建、内存密集测试)可能失败或被终止。超出这些限制的工作负载,使用 Remote Control 在自己的硬件上运行 Claude Code。

配置环境

环境控制网络访问、环境变量和 Setup 脚本。可从 Web 界面或终端管理:

操作方式
添加环境选择当前环境打开选择器,再选 Add environment
编辑环境选择环境名旁边的设置图标
归档环境打开环境编辑,选择 Archive
设置 --remote 的默认环境在终端运行 /remote-env

环境变量使用 .env 格式(每行一个 KEY=value),值不要用引号包裹(引号会作为值的一部分存储):

NODE_ENV=development
LOG_LEVEL=debug
DATABASE_URL=postgres://localhost:5432/myapp

Setup 脚本

Setup 脚本是在新云端会话启动时、Claude Code 启动前运行的 Bash 脚本。用于安装预装环境中没有的依赖、配置工具或预取所需内容。脚本以 root 身份在 Ubuntu 24.04 上运行。

在环境设置对话框的 Setup script 字段中输入脚本。示例(安装 gh CLI):

bash
#!/bin/bash
apt update && apt install -y gh
  • Setup 脚本只在创建新会话时运行,恢复已有会话时跳过
  • 脚本退出非零则会话启动失败,非关键命令后追加 || true 避免偶发安装失败阻断会话

环境缓存

Setup 脚本会在你首次在该环境中启动会话时运行。完成后,Anthropic 会对文件系统进行快照,并将该快照作为后续会话的起点重用。新会话启动时,磁盘上已经包含了你的依赖项、工具和 Docker 镜像,且会跳过 Setup 脚本步骤。这保证了即使脚本安装庞大的工具链或拉取容器镜像,启动速度也依然很快。缓存会捕获文件,而不是正在运行的进程。Setup 脚本写入磁盘的任何内容都会保留下来。但它启动的服务或容器不会保留,因此需要通过向 Claude 发出请求或使用 SessionStart hook 为每个会话单独启动它们。当你更改环境的 Setup 脚本或允许的网络主机,以及缓存过期(约 7 天后)时,Setup 脚本会再次运行以重建缓存。恢复现有的会话时,绝不会重新运行 Setup 脚本。你不需要手动启用缓存或管理快照。

Setup 脚本 vs SessionStart Hooks

Setup 脚本SessionStart Hooks
附属于云端环境仓库
配置位置云端环境 UI仓库 .claude/settings.json
运行时机没有缓存环境可用时,Claude Code 启动前每次会话启动(含恢复),Claude Code 启动后
作用范围仅云端环境本地和云端均运行

用 Setup 脚本安装云端需要但本机已有的内容(如语言运行时、CLI 工具);用 SessionStart Hook 处理本地和云端都应运行的项目配置(如 npm install)。

用 SessionStart Hook 安装依赖

在仓库的 .claude/settings.json 中添加 SessionStart Hook:

json
{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"
          }
        ]
      }
    ]
  }
}

scripts/install_pkgs.sh 中用 CLAUDE_CODE_REMOTE 变量跳过本地执行:

bash
#!/bin/bash

if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then
  exit 0
fi

npm install
pip install -r requirements.txt
exit 0

SessionStart Hooks 在云端的限制

  • 无法只在云端运行(需要手动检查 CLAUDE_CODE_REMOTE
  • 需要网络访问(None 级别下会失败)。Trusted 级别下的默认白名单已涵盖 npm、PyPI、RubyGems 和 crates.io。
  • 所有出向流量经过安全代理,Bun 等工具有已知兼容问题
  • 增加了启动延迟:每次启动或恢复会话时都会运行 hook,这与受益于环境缓存的 Setup 脚本不同。为了保持脚本快速,请在重新安装依赖前先检查其是否已存在。

如果需要为后续的 Bash 命令保留环境变量,请将它们写入 $CLAUDE_ENV_FILE。详情请参阅 SessionStart hooks。目前尚不支持将基础镜像替换为自己的 Docker 镜像。请使用 Setup 脚本在提供的镜像上安装所需的内容,或者通过 docker compose 将你的镜像作为容器与 Claude 并行运行。


网络访问

每个环境指定一个访问级别,可以追加自定义允许域名。默认为 Trusted

访问级别

级别出向连接
None不允许任何出向网络访问
Trusted仅允许白名单域名:包注册表、GitHub、云 SDK
Full任意域名
Custom自定义白名单,可选择是否包含默认域名

GitHub 操作通过独立代理处理,不受此设置影响。

允许特定域名

选择 Custom 网络访问级别,在 Allowed domains 字段中每行一个域名:

api.example.com
*.internal.example.com
registry.example.com

使用 *. 匹配通配符子域名。勾选 Also include default list of common package managers 保留默认 Trusted 域名。

GitHub 代理

所有 GitHub 操作经过专用代理服务,透明处理所有 git 交互:

  • 在沙箱内部,git 客户端使用范围限定的凭证,代理验证并转换为你的实际 GitHub Token
  • 将 git push 限制为当前工作分支
  • 在安全边界内支持克隆、fetch 和 PR 操作

安全代理

所有出向互联网流量经过 HTTP/HTTPS 安全代理,提供恶意请求防护、速率限制和内容过滤。


Web/终端间迁移

这些工作流需要 Claude Code CLI 并使用相同的 claude.ai 账号登录。

从终端发起 Web 任务

--remote 标志从命令行创建云端会话:

bash
claude --remote "修复 src/auth/login.ts 中的认证 bug"

这会在 claude.ai 创建新的云端会话。会话克隆当前目录的 GitHub remote 的当前分支——先 push 本地提交,因为 VM 从 GitHub 克隆而不是从本机克隆。--remote 一次处理一个仓库,任务在云端运行,你可以继续本地工作。

/tasks 检查进度,或在 claude.ai 或 Claude 移动 App 上直接与会话交互。

技巧

本地规划,远程执行:

bash
# 在计划模式中协作制定方案
claude --permission-mode plan

# 满意后 commit、push,启动云端会话执行
claude --remote "执行 docs/migration-plan.md 中的迁移计划"

并行运行多个任务:

bash
claude --remote "修复 auth.spec.ts 中不稳定的测试"
claude --remote "更新 API 文档"
claude --remote "将 logger 重构为结构化输出"

每个 --remote 创建独立的云端会话,用 /tasks 监控全部。

发送未托管在 GitHub 的本地仓库

从未连接 GitHub 的仓库运行 claude --remote 时,Claude Code 会自动打包本地仓库上传到云端会话(包含所有分支的完整历史,以及已追踪文件的未提交变更)。强制使用此模式(即使已连接 GitHub):

bash
CCR_FORCE_BUNDLE=1 claude --remote "运行测试套件并修复所有失败"

打包仓库限制:

  • 必须是有至少一次 commit 的 git 仓库
  • 打包大小不超过 100 MB(超出会依次降级为只打包当前分支,再到单次快照)
  • 未追踪的文件不包含(先 git add 再打包)
  • 从 bundle 创建的会话若未配置 GitHub 认证,无法推送回 remote

从 Web 迁移到终端

将云端会话拉到本地继续:

  • --teleportclaude --teleport 打开交互选择器,或 claude --teleport <session-id> 直接恢复
  • /teleport:在已有 CLI 会话中运行 /teleport(或 /tp
  • /tasks:运行 /tasks 查看后台会话,按 t teleport
  • Web 界面:点击 Open in CLI 复制命令

Teleport 时,Claude 会验证仓库、fetch 并 checkout 云端会话的分支,并加载完整对话历史到终端。

注意--teleport--resume 不同——--resume 从本机本地历史恢复对话,不列出云端会话;--teleport 拉取云端会话及其分支。

Teleport 前提条件

要求说明
干净的 Git 状态工作目录无未提交变更(需要时提示 stash)
正确的仓库必须在相同仓库的 checkout 中运行,不能是 fork
分支可用云端会话的分支必须已推送到 remote
相同账号必须使用相同的 claude.ai 账号

--teleport 不可用时:Teleport 需要 claude.ai 订阅认证。如果通过 API Key、Bedrock、Vertex AI 或 Foundry 认证,运行 /login 切换到 claude.ai 账号。如果已用 claude.ai 登录但仍不可用,可能是组织禁用了云端会话。


管理会话

会话显示在 claude.ai/code 侧边栏。可查看变更、分享给队友、归档完成的工作或永久删除。

管理上下文

云端会话支持产生文本输出的内置命令。打开交互终端选择器的命令(如 /model/config)不可用:

命令云端可用备注
/compact压缩对话释放上下文,支持可选的保留重点(如 /compact keep the test output
/context显示当前上下文窗口内容
/clear从侧边栏开始新会话

自动压缩在上下文窗口接近容量时自动运行(与 CLI 相同)。通过环境变量设置 CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70 在 70% 容量时提前压缩(默认约 95%)。

查看变更

每个会话显示 +42 -18 样式的变更统计。点击打开 Diff 视图,可在特定行添加内联注释,随下一条消息发给 Claude。

分享会话

Enterprise/Team 账号:Private 或 Team 可见性,Team 模式对组织成员可见,默认启用 GitHub 仓库访问验证。

Max/Pro 账号:Private 或 Public 可见性,Public 对所有登录 claude.ai 的用户可见。分享前检查会话是否含有敏感内容(代码、私有仓库凭证等)。

Claude in Slack 会话自动设为 Team 可见性。

归档会话

悬停在侧边栏会话上,选择归档图标。归档的会话从默认列表隐藏,可通过筛选归档会话查看。

删除会话

永久删除会话及其数据,不可撤销。两种方式:

  • 侧边栏:筛选归档会话,悬停并选择删除图标
  • 会话菜单:打开会话,选择标题旁下拉菜单,选择 Delete

Auto-fix PR

Claude 可以监视 PR,自动响应 CI 失败和代码审查评论。启用方式:

  • 在 Web 创建的 PR:打开 CI 状态栏,选择 Auto-fix
  • 从终端:在 PR 分支上运行 /autofix-pr,Claude Code 自动检测 PR、创建 Web 会话并开启 Auto-fix
  • 从移动 App:直接告知 Claude 要 auto-fix PR
  • 任意已有 PR:粘贴 PR URL 到会话并告知 Claude 开启 auto-fix

Claude 如何响应 PR 活动

启用 Auto-fix 后,Claude 接收 PR 的 GitHub 事件(新评论、CI 检查失败),对每个事件进行调查:

  • 明确的修复:有把握且不与早期指令冲突时,Claude 直接修改、推送并解释
  • 模糊的请求:评论可以有多种解读或涉及架构决策时,先询问再行动
  • 重复或无需操作的事件:在会话中记录并跳过

Claude 可能以你的 GitHub 账号回复评论线程(每条回复都标注为来自 Claude Code,让审查者知道是 Agent 写的)。


安全与隔离

  • 隔离虚拟机:每个会话在独立 Anthropic 管理 VM 中运行
  • 网络访问控制:默认限制访问,可以禁用(但禁用后 Claude Code 仍可与 Anthropic API 通信,数据可能离开 VM)
  • 凭证保护:git 凭证、签名密钥等不在沙箱中,通过安全代理使用范围限定的凭证处理认证
  • 安全分析:代码在隔离 VM 中分析和修改,然后再创建 PR

故障排查

对于对话中出现的运行时 API 错误,如 API Error: 500529 Overloaded429Prompt is too long,请参阅错误参考。这些错误及其修复方法在 CLI 和桌面应用中是共通的。以下部分专门讨论云端会话特有的问题。

创建会话失败

如果新会话启动失败并提示 Session creation failed 或停滞在配置阶段,这意味着 Claude Code 无法分配云端环境。

  • 检查 status.claude.com 查看是否有云端会话故障。
  • 稍后重试,因为容量是按需配置的。
  • 确认你的仓库可访问。私有仓库需要已安装 GitHub App 并拥有该仓库的访问权限,或者通过 /web-setup 同步了 gh token。参见 GitHub 认证选项

远程控制会话过期或拒绝访问

--teleport 和云端会话一样,通过同样的远程控制会话基础设施进行连接,因此认证和会话过期错误会显示 Remote Control 的提示词。你可能会看到 Remote Control session has expiredAccess denied。连接 token 是短期的,并作用于你的账户范围。

  • 在本地运行 /login 以刷新凭证,然后重新连接。
  • 确认你登录的是拥有该会话的同一个账户。
  • 如果你看到 Remote Control may not be available for this organization,说明你的管理员尚未为你的计划启用远程会话。

环境已过期

云端会话会在一段无活动期后停止,且底层的环境会被回收。在本地终端中,这会表现为 Could not resume session... its environment has expired. Creating a fresh session instead. 在 Web 界面中,会话在会话列表中标记为过期。从 claude.ai/code 重新打开会话,配置一个全新的环境,并恢复你的对话历史。


限制

  • 速率限制:Claude Code on the web 与其他 Claude 用量共享账号速率限制,并行任务按比例消耗更多配额
  • 仓库认证:Web 到终端的会话迁移需要使用相同账号认证
  • 平台限制:仓库克隆和 PR 创建只支持 GitHub(包括 Team/Enterprise 的 GitHub Enterprise Server)。GitLab、Bitbucket 等平台可以通过本地 bundle 发送,但会话无法推回 remote

相关文档

常见问题

Q: Claude Code Web 版和本地运行有什么区别?

Web 版在 Anthropic 管理的云端 VM 上运行,会话关闭浏览器后继续运行,可从移动 App 监控。本地版在你自己的机器上运行,能访问本地文件系统和工具,无需 GitHub 连接。两者可以通过 --remote--teleport 无缝迁移。

Q: 云端会话能访问我本地的文件和配置吗?

只能访问提交到 git 仓库的内容(CLAUDE.md.claude/settings.json.mcp.json 等)。用户级 ~/.claude/CLAUDE.md、本地安装的 MCP 服务器等不会进入云端会话。

Q: Auto-fix PR 会自动合并代码吗?

不会。Auto-fix 只是在 CI 失败或收到审查评论时让 Claude 调查并推送修复,不会自动合并 PR。你仍然需要手动审查 Claude 的修改并决定是否合并。