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

Claude Code 自托管环境是什么:把原本跑在 Anthropic 机房的 cloud session,改跑在你组织自管的机器或容器里;开发者从网页、移动端、桌面端或 claude --cloud 发起的任务不变,执行面换到你方网络。v2.1.224 起标准 claude 二进制内置 claude self-hosted-runner 子命令,Team 与 Enterprise 计划可用。
cloud session 与本地终端会话的界线
官方 Self-hosted environments 先划边界:终端或 IDE 里直接跑的会话,始终在开发者本机,与自托管无关。cloud session 指从 Claude Code on the web、移动/桌面 app、claude --cloud、scheduled 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 有时写作 pool,pool_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_PROXY、NO_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 等同批进入)。