Release and CI
릴리스 성능 점검
이 페이지는 2026년 5월 OpenClaw 성능, 패키지 크기, 의존성, shrinkwrap 정리의 근거를 담고 있습니다. 공개 블로그 글의 기술 부록입니다.
여기에는 두 가지 감사 결과가 결합되어 있습니다.
- 릴리스 성능 점검:
v2026.5.28부터 안정 버전v2026.4.23까지의 GitHub Releases를 대상으로OpenClaw Performance워크플로,profile=smoke, mock-provider 레인을 사용했습니다. 대부분의 태그 행은 샘플 하나이며,v2026.5.27및v2026.5.28행은 최신 repeat-3 릴리스 브랜치 아티팩트를 사용합니다. - 이전 4월 맥락:
v2026.4.1부터v2026.5.2까지 게시된clawgrit-reportsmock-provider 기준선이며, 깨진 4월 말 릴리스를 공개 성능 기준선으로 간주하지 않기 위해서만 사용했습니다. - 설치 용량 점검: 임시 패키지에 새로
npm install --ignore-scripts를 실행하고, 크기는du -sk node_modules로, 패키지 인스턴스 수는node_modules순회로 측정했습니다. - npm 패키지 크기 점검: 게시된 릴리스에 대해
npm pack openclaw@<version> --dry-run --json을 실행해 압축 tarball 크기, 압축 해제 크기, 파일 수를 기록했습니다.
스냅샷
성능 범위: 요청된 릴리스 77개, 아티팩트 기반 지점 74개, 사용할 수 없는 CI 실행 3개. 측정된 최신 안정 버전 지점: v2026.5.28.
콜드 턴 5.1배 더 빠름
v2026.4.14: 9.8초v2026.5.28: 1.9초
17.9MB tarball
최신 안정 버전 패키지이며, 3월 패키지 크기 최고점인 43.3MB에서 감소했습니다.
361.7MiB 신규 설치
v2026.5.28은 중첩된 OpenClaw 의존성 트리를 크게 줄였지만, 로컬 설치 감사에서는 여전히 더 작은 259.7MiB 중첩 트리가 남아 있습니다.
설치된 패키지 300개
최신 안정 버전 릴리스이며, 스크립트를 비활성화한 신규 설치에서 고유 패키지 이름/버전 루트로 측정했습니다.
설치 용량 타임라인
의존성 645개
이 샘플에서 2026.2.26은 월간 의존성 수 최고점이었습니다.
1,020.6MB 설치
2026.5.22는 루트 shrinkwrap을 추가했고 패키지 형태 문제를 드러냈습니다. 중첩된 openclaw/node_modules 아래에 911.8MB가 들어갔습니다.
361.7MiB 설치
2026.5.28은 2026.5.27 대비 신규 설치 크기를 52.8% 줄였지만, 여전히 259.7MiB 중첩 OpenClaw 트리를 설치합니다.
패키지 루트 300개
2026.5.28은 2026.5.27보다 고유 패키지 이름/버전 루트를 71개 적게 설치합니다.
5.28에서 변경된 사항
v2026.5.27과 v2026.5.28 사이의 정리는 기능 자체를 제거한 것이 아니라 기본 설치 그래프를 줄였습니다.
고유 패키지 이름/버전 루트는 371에서 300으로 줄었습니다. 패키지 인스턴스는 372에서 301로 줄었습니다.
동일한 로컬 설치 감사에서 중첩 openclaw/node_modules는 656.1MiB에서 259.7MiB로 줄었습니다.
모든 플랫폼용 @napi-rs/canvas 네이티브 패키지 콘은 더 이상 기본 설치에 포함되지 않습니다.
기본 패키지가 적다는 것은 기본적으로 신뢰해야 하는 tarball, 유지관리자, 네이티브 바이너리, 설치 시 동작, 전이 업데이트 경로가 더 적다는 뜻입니다.
주요 수치
4월 말의 깨진 행을 공개 성능 기준선으로 사용하지 마세요.
v2026.4.23과 v2026.4.29는 유용한 회귀 증거이지만, 큰 14x식 델타는 대부분 나쁜 릴리스 라인에서 회복한 정도를 설명합니다.
블로그 서사에서는 규모를 보여 주는 기준으로 더 이른 4월 공개 기준선을 사용하세요.
| 지표 | 더 이른 4월 기준선 | v2026.5.28 |
델타 |
|---|---|---|---|
| 콜드 에이전트 턴 | 9,819ms | 1,908ms | 80.6% 낮음, 5.1배 빠름 |
| 웜 에이전트 턴 | 7,458ms | 1,870ms | 74.9% 낮음, 4.0배 빠름 |
| 에이전트 피크 RSS | 686.2MB | 581.0MB | 15.3% 낮음 |
더 이른 4월 기준선은 공개된 clawgrit-reports mock-provider 실행의 v2026.4.14입니다. 해당 실행은 반복 3을 사용했고, 진단 타임라인이 방출되지 않았기 때문에만 실패했습니다. 콜드, 웜, RSS 중앙값은 여전히 대략적인 규모로 유용합니다. 이를 릴리스 게이트 통계가 아니라 서사적 맥락으로 취급하세요.
5월 스윕 안에서 최신 릴리스 브랜치 행은 v2026.5.2에서 실질적으로 이동했습니다.
| 지표 | v2026.5.2 |
v2026.5.28 |
델타 |
|---|---|---|---|
| 콜드 에이전트 턴 | 3,897ms | 1,908ms | 51.0% 낮음 |
| 웜 에이전트 턴 | 3,610ms | 1,870ms | 48.2% 낮음 |
| 에이전트 피크 RSS | 613.7MB | 581.0MB | 5.3% 낮음 |
이전 안정 릴리스와 비교하면 다음과 같습니다.
| 지표 | v2026.5.27 |
v2026.5.28 |
델타 |
|---|---|---|---|
| 콜드 에이전트 턴 | 2,231ms | 1,908ms | 14.5% 낮음 |
| 웜 에이전트 턴 | 2,226ms | 1,870ms | 16.0% 낮음 |
| 에이전트 피크 RSS | 649.0MB | 581.0MB | 10.5% 낮음 |
설치 공간
| 지표 | 기준선 | v2026.5.28 |
델타 |
|---|---|---|---|
2026.5.22 피크 대비 설치 크기 |
1,020.6MB | 361.7MiB | 64.6% 낮음 |
최신 릴리스 2026.5.27 대비 설치 크기 |
767.1MiB | 361.7MiB | 52.8% 낮음 |
월간 최고 2026.2.26 대비 의존성 |
645 | 300 | 53.5% 낮음 |
최신 릴리스 2026.5.27 대비 의존성 |
371 | 300 | 19.1% 낮음 |
2026.5.22 대비 중첩 openclaw/node_modules |
911.8MB | 259.7MiB | 71.5% 낮음 |
2026.5.27 대비 중첩 openclaw/node_modules |
656.1MiB | 259.7MiB | 60.4% 낮음 |
npm 패키지 크기
| 버전 | 압축된 tarball | 압축 해제된 패키지 | 파일 | 참고 |
|---|---|---|---|---|
2026.1.30 |
12.8MB | 33.5MB | 4,607 | 초기 리브랜딩 패키지 |
2026.2.26 |
23.6MB | 82.9MB | 10,125 | 기능 증가 |
2026.3.31 |
43.3MB | 182.6MB | 21,037 | 패키지 크기 최고점 |
2026.4.29 |
22.9MB | 74.6MB | 9,309 | 패키지 가지치기가 보임 |
2026.5.12 |
23.4MB | 80.1MB | 12,035 | 주요 외부 Plugin 분리 |
2026.5.22 |
17.2MB | 76.9MB | 12,386 | 문서/자산이 패키지에서 제외됨 |
2026.5.27 |
17.8MB | 79.0MB | 12,509 | 이전 안정 패키지 |
2026.5.28 |
17.9MB | 81.0MB | 9,082 | 최신 안정 패키지 |
2026.5.12는 changelog에서 보이는 Plugin 추출 마일스톤입니다.
Amazon Bedrock, Bedrock Mantle, Slack, OpenShell sandbox, Anthropic Vertex, Matrix, WhatsApp은 코어 의존성 경로 밖으로 이동했으므로, 해당 의존성 콘은 모든 코어 설치가 아니라 해당 Plugin과 함께 설치됩니다.
Kova 에이전트 턴 요약
4월 안정 라인에는 서로 다른 두 이야기가 있습니다. 4월 초는 느렸지만 식별 가능한 수준이었습니다. 4월 말은 회귀 절벽이 되었습니다. v2026.5.2는 mock-provider 레인이 처음으로 3-5초 범위로 내려가고 제공된 스윕에서 일관되게 통과하기 시작한 지점입니다.
이전 공개 맥락:
| 릴리스 | Kova | 콜드 턴 | 웜 턴 | 에이전트 피크 RSS |
|---|---|---|---|---|
v2026.4.10 |
실패 | 11,031ms | 7,962ms | 679.0MB |
v2026.4.12 |
실패 | 11,965ms | 8,289ms | 713.5MB |
v2026.4.14 |
실패 | 9,819ms | 7,458ms | 686.2MB |
v2026.4.20 |
실패 | 22,314ms | 18,811ms | 810.8MB |
v2026.4.22 |
실패 | 9,630ms | 7,459ms | 743.0MB |
제공된 스윕:
| 릴리스 | Kova | 콜드 턴 | 웜 턴 | 에이전트 피크 RSS |
|---|---|---|---|---|
v2026.4.23 |
실패 | 47,847ms | 8,010ms | 1,082.7MB |
v2026.4.24 |
실패 | 48,264ms | 25,483ms | 996.0MB |
v2026.4.25 |
실패 | 81,080ms | 59,172ms | 1,113.9MB |
v2026.4.26 |
실패 | 76,771ms | 54,941ms | 1,140.8MB |
v2026.4.27 |
실패 | 60,902ms | 33,699ms | 1,156.0MB |
v2026.4.29 |
실패 | 94,031ms | 57,334ms | 3,613.7MB |
v2026.5.2 |
통과 | 3,897ms | 3,610ms | 613.7MB |
v2026.5.7 |
통과 | 3,923ms | 3,693ms | 654.1MB |
v2026.5.12 |
통과 | 7,248ms | 6,629ms | 834.8MB |
v2026.5.18 |
통과 | 3,301ms | 2,913ms | 630.3MB |
v2026.5.20 |
통과 | 3,413ms | 2,952ms | 643.2MB |
v2026.5.22 |
통과 | 4,494ms | 4,093ms | 654.3MB |
v2026.5.26 |
통과 | 2,626ms | 2,282ms | 660.4MB |
v2026.5.27-beta.1 |
통과 | 2,575ms | 2,217ms | 635.3MB |
v2026.5.27 |
통과 | 2,231ms | 2,226ms | 649.0MB |
v2026.5.28 |
통과 | 1,908ms | 1,870ms | 581.0MB |
소스 프로브
필수 프로브 진입점이 해당 소스 트리에 아직 없었기 때문에, 성공한 이전 ref 17개에 대해 소스 프로브는 건너뛰었습니다. 해당 ref의 에이전트 턴 지표는 여전히 존재합니다.
대표 소스 프로브 지점:
| 릴리스 | 기본 readyz p50 |
Plugin 50개 readyz p50 |
CLI 상태 p50 | Plugin 최대 RSS |
|---|---|---|---|---|
v2026.4.29 |
2,819ms | 2,618ms | 1,679ms | 389.0MB |
v2026.5.2 |
2,324ms | 2,013ms | 1,384ms | 377.2MB |
v2026.5.7 |
1,649ms | 1,540ms | 1,175ms | 387.6MB |
v2026.5.18 |
1,942ms | 1,927ms | 607ms | 426.5MB |
v2026.5.20 |
1,966ms | 1,987ms | 621ms | 455.0MB |
v2026.5.22 |
2,081ms | 1,884ms | 5,095ms | 444.2MB |
v2026.5.26 |
1,546ms | 1,634ms | 656ms | 400.4MB |
v2026.5.27-beta.1 |
1,462ms | 1,548ms | 548ms | 394.0MB |
v2026.5.27 |
1,491ms | 1,571ms | 553ms | 401.5MB |
v2026.5.28 |
1,457ms | 1,474ms | 623ms | 386.1MB |
v2026.5.22 CLI 상태 급증은 agent-turn 레인이 여전히 통과했더라도 이 표에서 확인할 수 있습니다.
대상 CLI 또는 Gateway 회귀를 조사할 때는 소스 프로브를 유지하세요.
설치 공간 감사
의존성 샘플은 월별 안정 릴리스 하나와
2026.5.22 shrinkwrap 도입 이벤트 및 최신 2026.5.28 릴리스를 사용합니다.
| 지점 | 설치된 의존성 | 신규 설치 | OpenClaw 패키지 | 중첩된 openclaw/node_modules |
루트 shrinkwrap | Canvas 설치 동작 |
|---|---|---|---|---|---|---|
1월 2026.1.30 |
605 | 438.4MB | 45.8MB | 2.4MB | 아니요 | 최상위 wrapper + darwin-arm64 |
2월 2026.2.26 |
645 | 575.7MB | 110.1MB | 3.5MB | 아니요 | 최상위 wrapper + darwin-arm64 |
3월 2026.3.31 |
438 | 584.1MB | 234.8MB | 0MB | 아니요 | 최상위 wrapper + darwin-arm64 |
4월 2026.4.29 |
392 | 335.0MB | 97.4MB | 0MB | 아니요 | 설치된 항목 없음 |
2026.5.22 |
401 | 1,020.6MB | 1,020.4MB | 911.8MB | 예 | 중첩: @napi-rs/canvas 패키지 12개 모두 |
5월 2026.5.26 |
371 | 767.5MB | 767.4MB | 656.4MB | 예 | 중첩: @napi-rs/canvas 패키지 12개 모두 |
2026.5.27 |
371 | 767.1MiB | 766.9MiB | 656.1MiB | 예 | 중첩: @napi-rs/canvas 패키지 12개 모두 |
최신 2026.5.28 |
300 | 361.7MiB | 361.6MiB | 259.7MiB | 예 | 설치된 항목 없음 |
Shrinkwrap 경계
2026.5.20에는 루트 shrinkwrap이 없고, 큰 중첩 OpenClaw 의존성
트리도 없습니다.
2026.5.22는 루트 shrinkwrap을 추가하고 중첩된
openclaw/node_modules 아래에 911.8MB를 설치합니다.
2026.5.28은 shrinkwrap을 유지하며 여전히 중첩된
openclaw/node_modules 아래에 259.7MiB를 설치합니다.
2026.5.28은 로컬 신규 설치 감사에서 더 이상 어떤 @napi-rs/canvas
패키지도 설치하지 않습니다.
게시된 tarball 검사를 통해 경계를 확인할 수 있습니다.
| 버전 | 게시된 안정 버전? | 루트 npm-shrinkwrap.json |
참고 |
|---|---|---|---|
2026.5.20 |
예 | 아니요 | shrinkwrap 이전 마지막 안정 릴리스 |
2026.5.21 |
아니요 | n/a | 안정 npm 릴리스 없음 |
2026.5.22 |
예 | 예 | shrinkwrap 도입 |
2026.5.23 |
아니요 | n/a | 안정 npm 릴리스 없음 |
2026.5.24 |
아니요 | n/a | 안정 npm 릴리스 없음 |
2026.5.25 |
아니요 | n/a | 안정 npm 릴리스 없음 |
2026.5.26 |
예 | 예 | 중첩 의존성 트리가 여전히 존재 |
2026.5.27 |
예 | 예 | 중첩 의존성 트리가 여전히 존재 |
2026.5.28 |
예 | 예 | 중첩 의존성 트리가 훨씬 작아짐 |
중요한 차이는 다음과 같습니다. shrinkwrap 자체가 문제가 아닙니다.
v2026.5.28도 여전히 루트 shrinkwrap을 제공합니다. 문제는 npm이 큰 중첩
OpenClaw 의존성 트리와 12개의 @napi-rs/canvas 플랫폼 패키지를 모두
구체화하게 만든 패키지 형태였습니다. 중첩 트리는 v2026.5.28에서 더 작아졌고,
canvas 플랫폼 fanout은 더 이상 로컬 감사에 나타나지 않습니다.
shrinkwrap에 대한 쉬운 설명과 maintainer 수준 패키지 검사는 npm shrinkwrap을 참조하세요.
공급망 해석
의존성 수는 설치 크기 지표일 뿐만 아니라 운영 보안 지표이기도 합니다. 모든 패키지는 운영자가 신뢰해야 하는 maintainer, tarball, 전이 업데이트, 선택적 네이티브 바이너리, 설치 시 동작의 집합을 확장합니다.
정리 방향은 다음과 같습니다.
- 무겁고 선택적인 기능은 기본 core 설치 밖에 둡니다
- Plugin 패키지가 자체 런타임 의존성 그래프를 소유하게 합니다
- Gateway 시작 중 런타임 패키지 관리자 복구를 피합니다
- 모든 플랫폼 네이티브 패키지 구체화를 유발하지 않으면서 결정적 설치를 보존합니다
- 패키지 승인 및 측정 경로에서 설치 스크립트를 비활성화된 상태로 유지합니다
- 게시 전에 중첩 의존성 트리와 네이티브 선택적 의존성 폭증을 포착합니다
관련 문서: