Community코딩 & 개발github.com

OpenClaw CI 한도 관리

OpenClaw GitHub Actions 및 Blacksmith CI 용량, 러너 등록 예산, 팬아웃 상한, 메인 푸시 단일 실행, 샤드 크기, 호스티드 러너 오프로드, 대기열 상태, 안전한 규모 축소/확대 변경을 관리합니다. `.github/workflows/*`, `docs/ci.md`, CI 러너 레이블, 매트릭스 `max-parallel`, ClawSweeper/Blacksmith 버스트 보호, CodeQL 러너 배치를 조정하거나 느리거나 대기 중인 OpenClaw CI를 조사할 때 사용하세요.

OpenClaw CI 한도 관리란 무엇인가요?

이 스킬은 OpenClaw CI 시스템의 용량 및 성능을 관리하기 위한 포괄적인 지침을 제공합니다. 주로 Blacksmith와 GitHub Actions 환경에서 러너 등록 예산, 작업 분산, 대기열 상태 모니터링 및 안전한 규모 조정을 다룹니다. 개발자는 이 스킬을 사용하여 CI 대기열 지연, 러너 등록 제한, Blacksmith 제어판 상태 등 다양한 병목 현상을 진단하고 해결할 수 있습니다. 핵심 목표는 OpenClaw CI를 빠르게 유지하면서 자원 할당을 최적화하고 비용 효율성을 보장하는 것입니다. 또한 다양한 가상 시나리오(예: UI Blobless 체크아웃, Windows pnpm 저장소 등)에 대한 이전 실험 결과를 문서화하여 향후 유사한 변경을 고려할 때 근거 자료로 활용할 수 있도록 합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/openclaw-ci-limits

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

OpenClaw CI 한도 관리은(는) 무엇을 하나요?

이 스킬은 CI 용량 변경에 사용되며, 일반적인 테스트 실패 분류에는 사용하지 마십시오. 목표는 러너 등록, 러너 가용성, Blacksmith 제어판 상태, 다운스트림 대기열 드레인을 구분하면서 OpenClaw를 빠르게 유지하는 것입니다.

핵심 사실

  • 전체 메인 티어 CI는 매시간 실행됩니다. 일반적인 메인 푸시는 security-fast를 실행합니다. 푸시가 통과했다고 해서 전체 제품군이 통과했다는 증거는 아닙니다. 일반 PR은 Windows, macOS Node/Swift, iOS 빌드/시뮬레이터, 실제 Gateway UI, 게시된 드라이버 업데이트, Knip 및 대부분의 아키텍처 증명을 연기합니다. 가져오기 순환 및 Kysely 가드는 차단 상태를 유지합니다. 정확한 이벤트, 소유자 및 릴리스 폴백 선택을 위해 docs/ci/scope-and-routing/selection.md 및 현재 매니페스트를 사용하십시오. 용량을 조정하는 동안 지연된 레인을 복원하지 마십시오. Android 스크린샷은 릴리스 전용으로 유지됩니다.
  • 부족한 리소스를 추측하지 마십시오. 압박이 러너 등록, 적격 러너 가용성, Blacksmith 용량/제어판, 워크플로 종속성, 테스트 실행 시간 또는 다운스트림 대기열 기록기 중 어디에서 발생하는지 증명하십시오.
  • openclaw에 대한 GitHub 러너 등록은 현재 actions_runner_registration에서 5분 버킷당 10,000개를 보고합니다. 각 조정 전에 라이브 버킷을 확인하십시오. GitHub에서 변경할 수 있기 때문입니다. openclaw 조직은 하나의 버킷을 공유합니다.
  • 핵심 REST 할당량은 이 버킷을 사용하지 않습니다. actions_runner_registration을 별도로 확인하십시오. 핵심 할당량은 정상이지만 러너 등록이 제한될 수 있습니다.
  • 라이브 버킷의 약 60%를 운영 목표로 사용하십시오. 현재 10,000개 등록 버킷을 사용하여 계획된 Blacksmith 버스트 부하를 5분당 6,000개 등록 미만으로 유지하고 나머지는 다른 리포지토리, 재시도 및 버스트 중복을 위해 남겨 두십시오.
  • 라우팅, 알림, 요약, 샤드 선택 또는 짧은 CodeQL 품질 검사를 실행하는 작업은 측정된 증거에 따라 Blacksmith가 필요하다고 입증되지 않는 한 GitHub 호스팅 러너에 유지해야 합니다.

러너 비용 정책

  • 필요한 워크로드를 안정적으로 완료하는 가장 작은 러너를 사용하십시오. 짧은 제어 작업은 호스팅 상태로 유지하고 일반적인 신뢰할 수 있는 개발 증명은 로컬로 유지하십시오.
  • 물리적 8 vCPU 이상의 러너는 예외로 취급하며 기본값이나 일반 재시도 대상이 아닙니다. 명령어와 측정된 최대 메모리, 더 작은 러너의 OOM, 또는 낮은 총 청구 비용을 보여주는 통제된 비교를 기록하십시오. CPU 사용률만 낮다고 해서 메모리 집약적 작업을 더 작은 러너로 이동할 수 있다는 증거는 아닙니다. 리소스 기반 작업자 한도를 유지하십시오.
  • 일반적인 OpenClaw Testbox는 수화를 포함하여 60분 전체 작업 기본값으로 4등급을 사용합니다. 15분 유휴 상한선을 유지하십시오. 더 짧은 마감 시간은 알려진 짧은 명령에 대해 환영합니다. 자동으로 4시간을 요청하거나 더 많은 시간을 얻기 위해 규모를 늘리지 마십시오. 명명된 메모리 집약적 명령에 대해서만 .github/workflows/ci-check-high-memory-testbox.yml을 명시적으로 선택하십시오. docs/reference/test/remote-proof.md를 참조하십시오. 해당 워크플로는 공유 32슬롯 Testbox 풀 내에서 최대 4개의 동시 임대를 갖습니다. 고메모리 프로필은 8 vCPU를 사용합니다. 두 프로필 모두 11월 3일 이전의 물리적 CPU 및 RAM을 유지합니다. 모든 Testbox 프로필은 유휴 시간을 15분으로 제한합니다.
  • 워크플로 참조가 main인 현재 OpenClaw 래퍼를 통해 할당하십시오. 소스 캡슐은 테스트 중인 체크아웃을 유지합니다. 지출 한도를 우회하기 위해 이전 워크플로 참조를 디스패치하지 마십시오. 체크아웃 전에 대기열 연령을 확인합니다. 승인된 임대는 작업 및 유휴 마감 시간을 유지합니다.
  • 하나의 명령에 더 많은 RAM이 필요하다고 해서 전체 워크플로 제품군을 업그레이드하지 마십시오. 입증된 고메모리 CI 행은 해당 소유 계획자 및 증거로 범위를 지정하고 할당을 변경하기 전에 다시 측정하십시오. 32등급 레이블이 32개의 사용 가능한 CPU를 의미하는 것은 아닙니다. 관찰된 리소스와 총 청구된 작업 비용을 비교하십시오.

기각된 실험

  • UI Blobless Sparse 체크아웃 (2026-10-16): 네이티브 모바일/macOS 앱 트리를 제외하면 48.31MiB의 논리적 추적 콘텐츠가 제거되었지만 러너 비용 개선으로 인정되지 않았습니다. 실행 38866595993에서 Blacksmith UI E2E 체크아웃은 56초, 호스티드 브라우저 체크아웃은 58초가 걸렸습니다. 동일 실행 전체 UI 체크아웃은 22~38초가 걸렸습니다. 이는 작고 짝이 맞지 않는 샘플일 뿐 측정된 청구 차액이 아닙니다. 전체 소스 체크아웃을 유지하십시오. 필터링된 가져오기, 지연 구체화, 신뢰할 수 있는 하네스 내보내기를 포함한 더 낮은 전체 체크아웃 시간 및 청구 비용이 있는 경우에만 재고하십시오. 더 적은 논리적 바이트만으로는 절감 효과가 입증되지 않습니다.
  • 선언 픽스처 소유자 선택 (2026-10-02): test/scripts/tsdown-declaration-fixture.ts는 런타임 엔트리포인트 클로저에서 실제 소스 복사본을 파생하므로 이를 편집하는 제품 PR은 그 위에 구축된 4개의 선언 제품군을 선택하지 않습니다. PR #162614 가 그런 식으로 write-unified-entry-dts를 중단했습니다. 매시간 예약된 CI (실행 36979748808) 가 병합 후 약 35분 만에 이를 발견했고 0a188c4f038f0가 1시간 이내에 픽스처를 복구했습니다. new URL(..., import.meta.url) 리터럴로 소유자를 선언하면 적극적 선택의 20개 임포트 허브 컷오프 아래에서만 제품군에 도달합니다. 인시던트 소유자와 다른 7명은 허브이므로 재생된 #162614 diff도 여전히 아무것도 선택하지 않았습니다. 표준 PR 플래너 옵션을 통해 이전 30일 동안 소유자를 건드린 92개의 모든 메인 커밋을 재생했을 때 URL 리터럴은 새로 12개를 포함했습니다(+35개 행, +1,689 등급-vCPU-분). 전체 커버리지, 예를 들어 동일한 목록에 대한 정책 감시는 81개에 대해 새로 제품군을 선택하고 build-artifacts(16등급에서 12개 PR 실행 동안 중앙값 330초)를 69개에 대해 시작합니다. 제품군이 ci-build-manifest.mjs의 빌드 소유자이기 때문입니다. +242개 행 및 +11,628 등급-vCPU-분, 영향을 받는 PR당 중앙값 +161(+8%)입니다. 7주 동안 하나의 이스케이프된 소유자 중단을 얻습니다. 따라서 일반 경로를 유지하십시오. 매시간 예약된 CI, 도구 소유자 PR 및 릴리스 검증이 이 증명을 소유합니다. 이스케이프율이 실질적으로 더 높거나 build-artifacts를 시작하지 않는 선택이 있는 경우에만 재고하십시오.
  • 경계 비동기 입력 준비 (2026-09-26): 세 개의 선언/경계 호출자에 기존 CompilerInputSnapshot.prepare() 호출을 추가하면 동일한 4-CPU/15.42GiB Testbox에서 전체 콜드 검증이 464.21초에서 544.68초로 증가했습니다. 웜 검증은 12.62초에서 14.63초로 증가했습니다. 모든 125개 플러그인 검사와 카나리가 통과했지만 CPU 사용량도 증가했습니다. 6개의 호출자 추가가 제거되었습니다. 가정된 속도 향상으로 이를 반복하지 마십시오. 다른 용도는 측정된 종단 간 이점이 필요합니다.
  • Windows pnpm 저장소 (2026-09-20): 실행 35547255790의 원본 영수증은 다운로드 없이 모든 1,453개 패키지를 재사용했음에도 불구하고 중앙값 전체 설정 시간이 콜드 45.295초 대비 복원 시 52.738초(+16.4%)로 측정되었습니다. 763.8MiB 아카이브를 복원하는 데 23.601~26.980초가 걸렸습니다. 프로듀서 설정/저장은 62.527초를 추가했습니다. 7개의 네이티브 작업이 모두 통과했지만 자격 축소기가 24KiB 보고된 RAM 차이에서 실패했습니다. 단정이 완화되거나 작업이 재실행되지 않았습니다. 정확히 RAM이 일치하는 하위 집합도 여전히 11.3% 느렸습니다. 이는 설명적 증거일 뿐 교체 합격 자격이 아닙니다. 일반 Windows 설정을 캐시되지 않은 상태로 유지하십시오. 복원, 추출, 고정 조정 및 프로듀서 작업을 포함한 순 전체 설정 절감이 있는 경우에만 재고하십시오.
  • 호스티드 Mac 정확한 종속성 (2026-09-01): 실행 33458856298의 동일 헤드 게시자 및 소비자는 1.66GB 종속성 아카이브를 성공적으로 저장하고 복원했지만 설정 시간이 일반 저장소 캐시를 사용한 86초 대비 142초가 걸렸습니다. 추출은 27초 대비 82초가 걸렸습니다. 설치 시간은 43초에서 35초로만 개선되었습니다. 호스티드 Mac 작업을 일반 저장소 캐시에 유지하십시오. 전송, 추출 및 고정 조정을 포함한 측정된 총 설정 절감이 있는 경우에만 재고하십시오. 성공적인 캐시 적중이 아닙니다.
  • Actions-아티팩트 체크아웃 (2026-08-16): 공유 Blacksmith Git 가져오기를 사전 비행으로 생성된 작업 공간 또는 .git 아티팩트로 대체하는 것을 권장하지 마십시오. PR #124818 에서 16초 Blacksmith 체크아웃 기준선 대비 7초 호스티드를 측정했습니다. 가장 좋은 직접 아티팩트 변형은 패킹에 1초, 업로드에 3초, 복원 중앙값 11초가 소요되었습니다. 직렬 프리픽스를 포함하면 중앙값 개선은 약 1초에 불과했고 Blacksmith의 빠른 가져오기 실행을 회귀시켰습니다. 공식 아티팩트 클라이언트는 더 나빴습니다. 실행 31971531521 에서 중앙값 다운로드 22초에 구체화 2초를 더한 시간이 측정되었습니다. Blacksmith의 빠른 Actions-캐시 경로가 빠른 Actions-아티팩트 다운로드를 의미하지는 않습니다. 프로듀서 비용 및 빠른 가져오기 회귀를 포함하여 다른 전송에 대한 측정된 종단 간 증거가 있는 경우에만 재고하십시오.

첫 번째 확인 사항

CI를 변경하기 전에 현재 압박을 수집하십시오:

gh api rate_limit --jq '{core:.resources.core,graphql:.resources.graphql,search:.resources.search,actions_runner_registration:.resources.actions_runner_registration}'
gh run list -R openclaw/openclaw --limit 20 --json databaseId,status,conclusion,workflowName,event,headBranch,createdAt,updatedAt,url
gh run list -R openclaw/clawsweeper --limit 20 --json databaseId,status,conclusion,workflowName,event,headBranch,createdAt,updatedAt,url
gh api repos/openclaw/clawsweeper/actions/runs/<run-id>/jobs --paginate --jq '.jobs[] | {id,name,status,conclusion,labels,created_at,started_at,completed_at,runner_name,runner_group_name}'
blacksmith testbox list --all
curl -fsS https://clawsweeper.openclaw.ai/api/status | jq '{generated_at,fleet,diagnostics:{errors:.diagnostics.errors}}'
curl -fsS https://clawsweeper.openclaw.ai/api/exact-review-queue | jq '{generated_at,review:.lanes.review,publication:.lanes.publication,state_writer,state_append}'
node scripts/ci-run-timings.mjs --latest-main
node scripts/ci-run-timings.mjs --recent 10

의심스러운 대기 중인 실행의 경우 작업을 검사하십시오. 실행 수준의 queued 상태는 작업이 종속성을 기다리고 있는지 아니면 적격 러너가 없는지 여부를 알려주지 않습니다. created_at, started_at, labels 및 runner_name을 비교하십시오. 취소하기 전에 오래된 대기 중인 실행을 실시간으로 다시 확인하십시오. 쓸모없는 것으로 입증된 실행만 취소하십시오.

Testbox warmup은 임대 생성을 확인하지만 러너 준비 상태는 확인하지 않습니다. providerMetadata.runURL 없이 초기 queued 스냅샷은 용량 부족을 입증하지 않습니다. 해당 URL을 사용하여 연결된 정확한 워크플로를 검사하십시오. 할당된 check 러너가 설정을 수행하는 것은 수화입니다. 확인된 승인 또는 용량 대기열은 기존 중지-소유-할당 정책을 따릅니다. 최신 워크플로 실행에서 연결을 유추하거나 확인된 용량 대기열을 기다리지 마십시오.

scripts/ci-run-timings.mjs 시작 지연에는 워크플로 종속성 대기 시간과 러너 대기열 시간이 포함될 수 있습니다. 이는 추세 증거일 뿐 자체로 러너 압박 증거는 아닙니다.

다음을 읽으십시오:

  • .github/workflows/ci.yml
  • .github/workflows/codeql-critical-quality.yml
  • docs/ci.md
  • test/scripts/ci-workflow-guards.test.ts
  • test/scripts/ci-workflow-planning.test.ts
  • test/scripts/ci-workflow-evidence.test.ts
  • scripts/lib/*ci*, scripts/lib/*test-plan*, 또는 scripts/ci-changed-scope.mjs 아래의 건드린 플래너 파일

병목 현상 진단

상한을 변경하기 전에 문제를 분류하십시오:

  • 러너 등록 제한: 러너 할당 전에 많은 작업이 대기 중, Blacksmith/GitHub가 generate-jitconfig에서 403/429 또는 스팸 스타일 422 응답을 보고하고 API 핵심 할당량은 여전히 정상입니다. 요청 페이로드가 그 외에는 유효한 경우에만 422를 이 신호로 처리하십시오. 버스트성 및 Blacksmith 작업 수를 수정하십시오.
  • Blacksmith 용량: Blacksmith 대시보드에 실제 동시성 상한 또는 사용 불가능한 용량이 표시됩니다. GitHub 워크플로 팬아웃만으로는 이 문제를 해결하지 마십시오.
  • Blacksmith Testbox 제어판: 목록, 웜업, 상태 또는 실행 호출이 임대가 반환되기 전에 시간 초과됩니다. 이는 Actions 러너 등록 및 Actions 작업 용량과 별개입니다. 신뢰할 수 있는 소스는 문서화된 로컬 폴백을 사용할 수 있습니다. 신뢰할 수 없는 소스는 차단된 상태로 유지됩니다.
  • 사용 불가능한 러너 레이블: 작업이 사용자 정의 runs-on 레이블로 대기 중이고 started_at 및 runner_name이 비어 있으며 적격 러너가 없습니다. 사용 가능한 호스티드 또는 등록된 레이블을 복원하십시오. 팬아웃으로는 해결할 수 없습니다.
  • 워크플로 종속성 대기: 작업이 대기 중이지만 필요한 선행 작업이 종료되지 않았습니다. 종속성을 수정하거나 기다리십시오. 전체 지연을 러너 대기열 압박이라고 부르지 마십시오.
  • OpenClaw 테스트 실행 시간: 작업은 빠르게 시작되지만 하나의 레인이 벽시계 시간을 지배합니다. 러너 조정 대신 $openclaw-test-performance를 사용하십시오.
  • 실제 CI 실패: 작업이 시작된 후 실패합니다. 이 스킬 대신 $github:gh-fix-ci 또는 $openclaw-testing을 사용하십시오.
  • ClawSweeper 검토 백로그: 게시 및 상태 기록기가 정상인 동안 검토 보류/준비가 증가합니다. openclaw/clawsweeper에서 검토 승인/작업자를 조정하십시오.
  • ClawSweeper 게시 백로그: 게시 보류/준비 및 가장 오래된 기간이 증가하고 순 드레인이 0 또는 음수이거나 데드 레터가 증가합니다. 먼저 게시 배치, 상태 기록기 조정 및 GitHub 돌연변이 대기 시간을 검사하십시오.
  • 상태 구체화기/추가 백로그: state_append.pending_rows, pending_bytes 또는 가장 오래된 기간이 구체화기가 대기 중이거나 없을 때 증가합니다. 해당 단일 드레인을 먼저 복구하십시오. 더 많은 검토 작업자는 상황을 악화시킵니다.

등록 예산 계산

편집 전에 변경 사항에 대한 최악의 등록 수를 추정하십시오:

새로운 Blacksmith 등록 수 ~= 하나의 5분 창 내에서 대기열에 추가될 수 있는 Blacksmith 작업 수

매트릭스 작업의 경우 5분 창 내에 시작할 수 있는 모든 행을 계산하십시오. strategy.max-parallel은 동시 행 수만 제한합니다. 짧은 행은 창이 재설정되기 전에 전환되어 더 많은 러너를 등록할 수 있습니다. 더 낮은 추정치를 정당화하려면 작업 기간, 재시도 및 대기열 전환을 사용하십시오. preflight, security-fast, build-artifacts 및 플랫폼 레인과 같은 비매트릭스 Blacksmith 작업을 추가하십시오.

반복 시:

...

[번역됨]

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills and agent Templates when requested; add Templates; install, verify, update, uninstall, publish, or sync skills.

관련 스킬