Claude Code 自托管环境是什么

自托管三件套:Runner 跑在你方机器,cloud 会话推理仍走 Anthropic。Team/Enterprise,零数据保留不可用。

Claude Code 自托管环境是什么

Claude Code 自托管环境是什么:把原本跑在 Anthropic 机房的 cloud session,改跑在你组织自管的机器或容器里;开发者从网页、移动端、桌面端或 claude --cloud 发起的任务不变,执行面换到你方网络。v2.1.224 起标准 claude 二进制内置 claude self-hosted-runner 子命令,Team 与 Enterprise 计划可用。

作者CodePass 技术编辑

cloud session 与本地终端会话的界线

官方 Self-hosted environments 先划边界:终端或 IDE 里直接跑的会话,始终在开发者本机,与自托管无关。cloud session 指从 Claude Code on the web、移动/桌面 app、claude --cloudscheduled routines 等入口启动、默认在 Anthropic 基础设施执行的会话。

自托管只替换「执行层」:队列、claude.ai 界面、控制面仍在 Anthropic;Anthropic 不会 inbound 连进你的 VPC。Runner 通过出站 HTTPS 轮询 api.anthropic.com 领任务,子进程 Claude Code 同样 outbound 拉模型推理与事件流。仓库 checkout、构建产物、你注入的密钥与内网访问留在你的机器上;对话内容(prompt、回复、tool 结果)仍发往 api.anthropic.com 做推理,Anthropic 也会存 transcript 以便跨端 resume。

若你只是想在自家常开机器上跑 CLI、用手机 Remote Control 遥控,那是 Pro/Max 也能用的 Remote Control,不是本文的自托管 fleet。据 Unite.AI 对 v2.1.224 的解读(二手),自托管面向的是「cloud 形态的任务必须进内网、合规或工具链预装」的团队,而非个人开发者换一台笔记本。

Environment、Runner、Session 三件套

机制可以拆成三个名词(API 字段里 environment 有时写作 poolpool_id 即 environment ID):

概念 角色
Environment 在 claude.ai 管理后台创建的名称化目的地;会话选环境,不选某台 runner
Environment secret 创建环境时一次性展示的共享凭证(UI 称 environment key);runner 用它注册
Runner 你部署的长驻进程,注册后拿 runner token,轮询领 session
Session 开发者发起的一次 Claude Code 任务;runner spawn 子进程执行

开发者开 cloud session 时在环境选择器里看到你的 environment 与 Anthropic 托管项并列。选中后,控制面把 session 入队,有空闲容量的 runner claim,clone 所选 GitHub 仓库(认证方式见 Configure git),在主机上启动 Claude Code 子进程。Runner 与 session 之间约 60 秒心跳;runner 停 poll 则 session 重新入队。

Runner 按用户锁定:第一个被 claim 的 session 决定 runner 只服务该用户账号,最多并发 --capacity 个 session,避免不同用户的 checkout 混盘。Fleet 最小规模大致等于并发活跃用户人数。固定 fleet 与 按需 orchestrator(每个 queued session 触发一次 spawn hook)二选一;后者适合 Kubernetes Job、EC2 等「来活再起 pod」的模式。

推理路径与零数据保留

模型推理不能走 Bedrock、Google Cloud Agent Platform、Microsoft Foundry 或 LLM gateway;控制面下发 Anthropic API endpoint,session 用 Anthropic 签发的 session-scoped OAuth token 调模型。这与「代码和数据在自家机器」不矛盾:算力执行在你方,token 仍指向 Anthropic 公有 API。

官方 Availability 明确:已开启 Zero Data Retention 的组织不能使用 self-hosted environments。计费方面,自托管 environment 里的 session 消耗与 Anthropic 托管 cloud environment 相同的 Claude Code 用量。

网络 egress 需放行文档 Network requirements 列出的主机;企业 proxy 可通过 HTTPS_PROXYNO_PROXY 等变量(见 Network configuration)。可选 Anthropic git proxy 把 git 也走 api.anthropic.com,减少内网直连 GitHub 的出站策略复杂度。

谁能开、从哪开

公测阶段仅 Team 与 Enterprise;默认关闭。Owner 或 admin 在 Cloud environments 管理页 打开 Allow self-hosted environments,且组织须已启用 Claude Code on the web。

当前可路由到自托管 environment 的入口:Claude Code on the web、移动/桌面 app、scheduled routines、终端 claude --cloud 或脚本 --environment dispatch。Claude Tag、Claude Security、Code Review 会话暂不支持,官方称后续单独跟进。

仓库来源目前限定 GitHub(与 web 会话一致)。国内团队若关心「云端 Agent 环境怎么配才合并得了 PR」,Cursor 侧是另一套 Docker/anydev/Doctor 故事,可对照 Cursor Cloud Agent 环境怎么配;Claude Code 自托管解决的是 Anthropic cloud session 的执行位置,不是 Cursor 云端 VM。

claude self-hosted-runner 怎么落地

Runner 内置于标准 claude 二进制,版本需 v2.1.224+;更早版本执行 claude self-hosted-runner 只会落到通用 help。主机需 Linux 或 macOS,并提供可写 base 目录供 session checkout。

最快路径是交互式引导(需 claude auth login 的 Owner/admin 账号,不能用纯 API key 或第三方 provider):

claude self-hosted-runner setup

引导会帮你在 admin UI 创建 environment、用保存的 secret 文件启动本地 runner、确认注册,并写出 ./runner-setup/CHEAT-SHEET.md。无交互环境则按 Quickstart 手工:创建 environment → 保存 secret → claude self-hosted-runner--environment-secret-file 等 flag 启动。

生产部署见 Deploy to production(镜像、K8s/Compose、git 凭据、shutdown 与 --retire-at);平台工程师扩展点见 Customize sessions(lifecycle hooks、spawn-runner、每 session 凭据 wrapper)。CI 冒烟可跑 Test end to end 里的 test loop,再推广镜像。

同一 release 还引入 cross-session SendMessage;runner 容器内两个 session 可互发消息,但自托管与跨会话 messaging 是独立能力,部署 runner 不自动等于终端跨窗协作。

什么时候值得上自托管

官方态度直接:多数团队 Anthropic 托管 environment 零运维更合适。自托管换的是三类能力:内网服务/数据库/私有 registry 可达;镜像里预装编译器、SDK、内部 CLI;checkout 与构建产物留在自控基础设施(对话内容仍上传推理)。

代价是你维护 runner 镜像、fleet 容量、网络与 git 凭据轮换;heartbeat 丢失、spot 实例回收或 --retire-at 设太紧会导致 session 中途换 runner 或 turn 丢失,需读 Shutdown timing 留 margin。

若合规要求「模型调用也不能出 Anthropic」,当前 product 边界不满足:推理固定 Anthropic API。若要求是「执行与源码不出公网、仅推理出站」,自托管 + 文档 egress 清单才是对口方案。升级决策可连同 v2.1.224 其它变更一起看 2.1.222 起的 changelog 梳理(SendMessage、crossSessionInbound 等同批进入)。

参考资料