ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Claude Code 自托管 Runner 编排器(self-hosted-runner orchestrator)命令详解:spawn 队列轮询、Hook 退出码契约与 SCM 隧道配置

Claude Code 自托管 Runner 编排器(self-hosted-runner orchestrator)命令详解:spawn 队列轮询、Hook 退出码契约与 SCM 隧道配置 文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载本指南基于 Claude Code 系统提示仓库中的 orchestrator 命令帮助文档完整讲解claude self-hosted-runner orchestrator子命令的全部命令行选项连接与鉴权、spawn-runner Hook 的并发与超时控制、退出码契约、可选 SCM 连接器隧道、健康检查端口与调试目录。读者将掌握如何正确启动、调优与排障一个面向 Claude Code 云会话的自托管 Runner 编排器。命令概述编排器是什么、做什么orchestrator是claude self-hosted-runner家族中负责**消费 spawn 请求spawn-hints**的进程。与单个 runner 直接拉取并执行会话不同编排器面向的是按需弹性扩容autoscaling场景Usage: claude self-hosted-runner orchestrator [options]其工作循环可以概括为轮询spawn-hints 队列服务器端立即返回不阻塞对每一条 hint执行一次${hooks-dir}/spawn-runnerHookHook 必须异步提交工作例如kubectl create job、EC2RunInstances等并在--hook-timeout秒内退出编排器根据 Hook 的退出码决定后续动作见下文退出码契约。仓库中的 self-hosted runner doctor 系统提示 第 9 节补充说明了编排器与 runner 在健康检查端口上的关系两者默认都使用 8080 端口在同一主机上运行时需确认监听者是谁/healthz端点恒返回 200真正的状态需要读取响应体。退出码契约会话 spawn 与 standby spawn 的差异编排器对spawn-runnerHook 退出码的解读分为两种场景这是整个编排逻辑的核心会话 spawnsession spawns——为真实会话生成 runner退出码含义编排器行为0成功no-op无需重试视为已处理1可重试失败retryable进入退避backoff稍后重试2不可重试失败non-retryable熔断circuit-break该 hint 不再重试Hook 的stderr 尾部tail会被转发为 nack 错误信息供服务器端记录到会话上doctor 文档中称为spawn_last_error。不可重试错误会让会话进入circuit_broken状态会话被暂停且不会再被自动重新提供参考 doctor 文档 §9Hook 失败 5 次或返回不可重试码后需人工在 Admin UI 点击Retry或调用retry-spawnAPI。Standby spawn--min-idle产生的预置容量——无会话绑定任何非零退出码都只在本机记录日志并在租约lease到期后重新请求。这一契约也解释了 doctor 诊断表中的典型排障路径当queue_counts.circuit_broken 0时应通过 self_hosted_runner_list_sessions 查看每个会话的spawn_last_error已脱敏的 Hook stderr修复基础设施后对暂停会话逐个 Retry。连接选项API 地址与环境密钥--api-url url API base URL --environment-secret-file path 环境密钥文件路径或设置环境变量 SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET--api-urlAPI 基地址未指定时使用内置默认值仓库元数据变量DEFAULT_SELF_HOSTED_RUNNER_API_URL。--environment-secret-file环境密钥文件路径也可通过环境变量SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET提供。兼容性说明--pool-secret-file与SELF_HOSTED_RUNNER_POOL_SECRET是已废弃的别名新部署请使用 environment 命名。密钥的签发只在Admin UI中进行Admin settings → Cloud environments → Self-hosted environments → 环境 Configuration 标签页的Issue new key见 self-hosted runner setup 系统提示。密钥轮换流程为签发新密钥 → 部署到 runner → 吊销旧密钥。doctor 文档 §1 还指出环境密钥被吊销后runner 会打印[runner:fatal] RegisterRunner auth failed — environment secret invalid or revoked此时需在 Admin UI 重新签发并重新挂载。Hook 选项并发、超时与租约--hooks-dir path spawn-runner Hook 所在目录必填。[env: SELF_HOSTED_RUNNER_HOOKS_DIR] --hook-concurrency n 并行运行的最大 spawn-runner Hook 数默认${DEFAULT_HOOK_CONCURRENCY}。 同时限制了每次轮询认领claim的 hint 数量。 --hook-timeout sec Hook 运行超过 sec 秒后发送 SIGTERM默认${DEFAULT_HOOK_TIMEOUT_MS/1000} 秒。 --expected-spawn-seconds n 该编排器所 spawn 的 runner 的 p99 启动时间默认${DEFAULT_EXPECTED_SPAWN_SECONDS}。 每次 Poll 都会作为服务器端租约发送若 runner 在此之前未注册 会话会以新的 jti 重新 hint。HA 副本必须使用相同的值。 --min-idle n 保持至少 n 个空闲槽位统计的是所有 runner 的剩余容量而非 runner 数量 默认 0即禁用。服务器会在每次 Poll 时为缺口铸造无会话绑定的 standby work_orders。要点--hooks-dir是必填参数目录内需包含名为spawn-runner的可执行 Hook。--hook-concurrency双向生效既限制并发执行的 Hook 数量也限制每次轮询认领的 hint 数防止瞬时洪峰打爆集群配额。--hook-timeoutHook 超时后收到 SIGTERM。doctor 文档 §9 补充说明编排器会在--hook-timeout 2×5s 宽限后放弃一个处于 D 状态如挂死的挂载的子进程若日志长时间无进展建议重启编排器。--expected-spawn-seconds是 HA 部署的关键约束所有副本必须配置相同值否则服务器端租约不一致会导致会话被重复 hint。--min-idle用于保温服务器按空闲槽位缺口铸造 standby work_orders无会话绑定确保有足够预置容量随时接单。SCM 连接器打通到 GHES 的持久隧道SCM 连接器是可选的用于让 Anthropic 托管的会话前流程pre-session flows访问仅在你的网络内部可路由的 GitHub Enterprise ServerGHES主机--scm-connector-host h[:p] 要转发到的 GHES 主机名端口默认 443。设置此项即启用连接器。 --scm-connector-id n 该组织的 ghe_configurations.id与 --scm-connector-host 同时使用时必填。 --scm-connector-provider s Provider slug默认ghe。 --scm-connector-ca-file path 与 GHES 主机 TLS 握手时使用的额外 CA 捆绑包PEM。 --scm-connector-host-rewrite fromto_host:to_port e2e 专用——重定向 TCP 连接同时保持 Host/SNI 为 --scm-connector-host。启用条件是同时提供--scm-connector-host与--scm-connector-id。--scm-connector-ca-file用于企业内网自签 CA 或私有 PKI 的场景。--scm-connector-host-rewrite明确标注为e2e 测试专用生产环境不要使用——它会改变 TCP 连接目标但保留原始 Host/SNI仅用于在测试环境模拟隧道路径。运行时选项健康检查端口与日志级别--health-port port /healthz HTTP 监听端口默认${DEFAULT_HEALTH_PORT}。设为 0 则禁用。 恒返回 200存活探测。响应体携带 connected/last_*/queue_counts/warm_hints_dispatched 供就绪/告警判断。[env: SELF_HOSTED_RUNNER_HEALTH_PORT] --log-level level 日志级别info 或 debug默认info/healthz的设计要点结合 doctor 文档 §9 的字段级排障表端点永远返回 200因此它只回答进程还活着吗liveness就绪/告警必须解析响应体关键字段包括connected是否能连上${ANTHROPIC_API_HOST}、环境密钥是否被接受为false时读取同体last_error字段可能为spawn-runner hook failed: stderr tail或轮询失败信息。clock_skew_ms≥ 60000 或 ≤ −60000 表示主机时钟漂移会干扰校验 work-order JWTexp的 Hook需修复 NTP。last_poll_at在connected: true的情况下超过约 60s 未更新说明轮询循环卡在某个慢/卡死的spawn-runnerHook 上。queue_counts.backing_off/queue_counts.circuit_broken分别对应 Hook 间歇性失败指数退避与已熔断暂停的会话数。warm_hints_dispatched预置warmhint 的派发计数。在运维笔记本上排查时先做端口转发再探测kubectl port-forward deploy/orchestrator 8080然后curl -s http://localhost:8080/healthz | jq .。--health-port设为0可禁用监听此时 liveness 探测将无目标需配合其他探活手段。环境变量SELF_HOSTED_RUNNER_HEALTH_PORT可替代该参数。调试选项work-order JWT 落盘--debug-dir path DEV ONLY——将每条 work-order 的 JWT、解码后的 JSON 以及 Hook 的 stderr 写入 dir/jti.{jwt,json,stderr}。5 分钟后自动清理。 [env: SELF_HOSTED_RUNNER_DEBUG_DIR]明确标注DEV ONLY生产环境不应启用。每一条 work-order 会生成三个同名不同后缀的文件.jwt原始 JWT、.json解码后的 claims、.stderrHook 标准错误输出。文件按 work-order 的jti命名5 分钟自动清理避免磁盘被调试产物填满。若需离线检查会话 JWT 内容如确认ccr:org_id是否来自错误组织可配合使用 decode-token 命令帮助文档 中的claude self-hosted-runner decode-token子命令——它默认开启签名与 exp/nbf 校验--no-verify仅用于离线检查。与相邻组件的协同度量口径与诊断闭环编排器与 runner 的度量口径不可混用仓库中的 session metrics 帮助文档 对此有明确界定编排器的spawn_hooks_total统计spawn-runner Hook 的运行次数含 warm hintsrunner 的sessions_started_total统计会话子进程的 spawn 次数会话因 runner 重启/重新分配而重 spawn 时会再次计数。两者计数对象不同做容量分析时应按各自语义解读。此外runner 侧暴露的 Prometheus 度量claude_code_self_hosted_runner_{capacity,active_sessions,locked_account,last_poll_age_seconds,info}经http://host:{health-port}/metrics抓取参考 setup 系统提示 的 cheat sheet 部分与编排器/healthz的queue_counts组合使用可以完整覆盖有多少 runner、忙不忙、队列里有多少会话在等待 spawn的观测面。生产部署建议与排障速查根据 doctor 系统提示 与 setup 系统提示生产化编排器时需注意部署方式由运维自持仓库明确说明生产部署是教授而非工具化——没有deploy_to_k8s类工具Kubernetes / Docker Compose 配方参考官方运维指南 PDF且假定重启间无磁盘状态持久化--base-dir需可写、密钥通过 volume 挂载。密钥与权限环境密钥文件需chmod 600secret 仅存在于 Admin UI操作者自行将值写入磁盘文件Agent 只引用文件路径。常驻诊断命令出现异常时优先运行claude self-hosted-runner doctor若需升级为人工工单按 doctor 流程生成脱敏诊断包healthz.json、metrics.txt、日志 tail、versions.txt、config-redacted.txt与DIAGNOSIS.md由操作者人工审查后再分享给 Anthropic禁止自动上传客户日志。常见故障信号一览源自 doctor §9/healthz 信号根因处置连接被拒进程未启动、--health-port非 8080 或为 0启动进程 / 修正端口connected: false网络/DNS/TLS 或环境密钥被拒按 doctor §1/§2 修复400/401/403/404/426 会致编排器非零退出并触发重启循环clock_skew_ms超限主机时钟漂移修复 NTPlast_poll_at陈旧轮询卡在慢 Hook 或 D 状态子进程杀掉卡死的 Hook、检查 hooks-dir 挂载、必要时重启编排器last_error非空Hook 脚本失败或轮询失败用假CLAUDE_RUNNER_ORDER_ID手工运行 Hook 复现queue_counts.circuit_broken 0Hook 连续失败 5 次或返回不可重试码修复基础设施后在 Admin UI 对暂停会话Retry结语claude self-hosted-runner orchestrator是 Claude Code 自托管 Runner 弹性扩容链路的调度中枢它以极少的参数把轮询 spawn-hints、异步调用 spawn-runner Hook、按退出码裁决重试或熔断、可选打通 GHES 隧道、暴露健康端点这几件事收敛为一条可配置、可观测、可调试的命令。理解--expected-spawn-seconds的 HA 一致性要求、--hook-concurrency的双重限流语义、退出码契约与/healthz响应体字段就能在 Kubernetes 或 Docker Compose 上稳定运行自己的编排器。相关命令与诊断细节可继续查阅仓库中的 decode-token 帮助、session metrics 帮助 与 self-hosted runner doctor 文档。赞分享文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载相关推荐Claude Code System Prompts 深度解析Self-hosted Runner decode-token 命令的 JWT 解码与安全校验指南Claude Code System Prompts 深度解析Self hosted Runner decode token 命令的 JWT 解码与安全校验指文档提示工程人工智能Claude Code Self-Hosted Runner 中 git-lfs pre-push Hook 失效问题成因与修复指南Claude Code Self Hosted Runner 中 git lfs pre push Hook 失效问题成因与修复指南 本文基于 Claude文档提示工程人工智能Agent Orchestrator 的 ao orchestrator 命令详解列出与检索编排会话Orchestrator SessionsAgent Orchestrator 的 ao orchestrator 命令详解列出与检索编排会话Orchestrator Sessions 本指南以创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表