2026-04-30 OpenClaw 파일 도구, 청크 읽기, ripgrep 우선 트리아지, 토큰 예산: 헤드리스 임대 Apple Silicon 클라우드 Mac(HK / JP / KR / SG / US)
OpenClaw를 SSH만으로 다루는 임대 Mac mini M4에서 흔한 실패는 “모델이 멍청하다”가 아니라 컨텍스트 기아입니다. 거대 로그, 비대한 단일 Swift 파일, 바이너리 위주 빌드 산출물을 한 번에 밀어 넣으면 홍콩·도쿄·서울·싱가포르·미국 어디 브리지든 같은 벽에 부딪힙니다. NVMe는 빠르지만 LLM은 토큰 과금이기 때문입니다. 이 글(2026-04-30)은 ripgrep 우선으로 위치를 증명하고, 줄·바이트로 자른 청크만 읽으며, 명시적 바이트 상한과 7단계 체크리스트로 파일 도구를 “cat 좋아하는 인턴”이 아니라 시니어처럼 굴리게 합니다. TCC/FDA와 파일 도구의 연장이며, 증거 위생은 구조화 로깅과 함께, 모델 비용은 429/503과 재시도 예산과 함께 설계하세요.
파일 도구로 토큰 벽에 닿는 팀
MacXCode 호스트에서 자주 보는 세 유형입니다.
- iOS 릴리스 책임자: 요약이 불안해
xcodebuild전체를 붙여넣어 신호를 묻는다. - 플랫폼: 야간 Archive와 OpenClaw를 같이 두고
.xcresult와 거대 SwiftPM을 동시에 노출한다. - 지원: 고객 리포에
node_modules나Pods/가 남아 구두로 “무시해”라고 해도 검색 단계가 증명하지 않으면 실패한다.
rg 컨텍스트 1차 패스 48줄, 근본 원인 문단을 쓰기 전 좁히기 3회.
자동화 반대가 아니라 단계 자동화입니다. A에서 신호 위치를 증명하고, B에서 그 이웃만 LLM에 실으며, C에서 패치나 티켓 요약을 씁니다. A를 건너뛰면 5분 디스크 읽기가 네 자리 토큰 청구와 싱가포르 빌더에 없는 경로 환각으로 이어집니다.
도구 선택: 파일 도구·셸·정적 색인
OpenClaw가 트리를 건드리기 전 의사결정표입니다. 내부 래퍼 이름은 바꿔도 의도는 유지하세요.
| 신호 유형 | 권장 경로 | 헤드리스 Mac에서의 이유 | 안티패턴 |
|---|---|---|---|
| 저장소 내 미지 문자열 | rg --line-number --no-heading --max-count 40 후 청크 읽기 |
NVMe는 탐색이 싸고 합성은 LLM이 비싸다 | 무시 규칙 없는 재귀 grep -R로 CI 디스크 오염 |
| 구조화된 빌드 실패 | xcresulttool로 슬라이스 후 JSON 청크 첨부 |
실패 테스트에 토큰을 몰고 에셋 카탈로그에 낭비하지 않음 | 스크린샷을 Base64로 프롬프트에 삽입 |
| 비밀 의심 | 파일 도구 중단. 사람과 help 로테이션 런북 | 모델 로그로의 우발 유출 방지 | ~/ 전체에서 “API 키를 찾아라” 요청 |
OpenClaw와 Xcode CI를 같은 호스트에 두면 작업 디렉터리를 분리하세요(예: /Volumes/builds/ci와 /Volumes/agents/openclaw). 홈 공유는 사람에게는 편하지만 어떤 잡이 먼저 .env를 건드렸는지 증명이 깨집니다.
ripgrep 우선: 자동화에서도 버티는 플래그
ripgrep은 기본적으로 .gitignore를 존중합니다. 어제 실험으로 더러워진 워크트리가 남은 임대 Mac에서 이게 생명줄입니다. 매번 상한 쿼리로 시작하고 일치 수가 천장 아래일 때만 넓힙니다.
rg -n "fatal error:|error: " --glob '!**/build/**' --glob '!**/DerivedData/**' -S . | head -n 60
--max-depth는 1급 플래그가 아니므로 깊은 트리를 손으로 피하기보다 glob 부정으로 막습니다. 빌드 산출물을 꼭 봐야 한다면 2 TB SKU에 버릴 클론을 만들고 동시에 도는 병렬 xcodebuild의 NVMe를 빼앗지 마세요.
git rev-parse HEAD로 확인한 뒤 다음 모델 왕복으로 갑니다.
청크 규칙: 모델과의 “완전성” 계약
청크는 “0~N바이트 읽기” 이상의 의미를 가집니다. 세 층으로 봅니다.
| 층 | 바이트 폭 가이드 | 용도 | 읽기 전 게이트 |
|---|---|---|---|
| 마이크로 | 4~16 KB | plist 키, Fastlane 일부, 단일 Swift 구조체 | rg로 파일명이 확정됨 |
| 메조 | 32~120 KB | Package.swift, 중간 로그, Gradle류 설정 | 히트 줄이 단일 파일에 몰림 |
| 매크로 | 최대 512 KB | 생성 API 클라이언트, xcresult 텍스트 발췌 | rg가 핫스팟을 보인 뒤에만 |
수동으로 붙이는 발췌 헤더에는 줄 번호를 반드시 넣습니다(“Foo.swift 820~910행”). 인간 리뷰어처럼 인용하지 않으면 존재하지 않는 API를 씁니다. 악의가 아니라 좌표가 없을 뿐입니다.
수치 예산: 디스크 속도와 모델 경제 연결
M4 NVMe는 큰 파일에서 수 GB/s급 순차 읽기에 닿을 수 있지만 청구는 토큰입니다. 브리지 벽에 세 숫자:
- 200 ms — 12k 파일 미만 리포에서 rg 완료 후 “프롬프트에 첫 유용 발췌”까지 p95 목표.
- 18 — 한 합성 프롬프트에 실을 서로 다른 파일 경로 상한(중복은 접기).
- 92% — 중간 모노레포에서 전체 파일 읽기 대신 rg 우선으로 바꾼 팀의 토큰 절감 가늠(직접 로그로 측정).
예산 초과 시 우아하게 낮추고 부분 본문 대신 후보 파일과 일치 수의 글머리를 돌려줍니다. 오염된 컨텍스트에서 회복하는 것보다 사람이 다음 수를 고르는 편이 빠릅니다.
리전 지연, 디스크 계층, 싱가포르의 위치
MacXCode는 HK / JP / KR / SG / US에서 같은 Mac mini M4급을 제공하지만 OpenClaw와 CI 짝은 데이터를 따르세요. git과 레지스트리가 AWS ap-southeast-1이면 싱가포르 베어메탈이 왕복에서 이기는 경우가 많고 엔지니어가 미국에 있어도 같습니다. App Store Connect 업로드가 지배적이면 US East 빌더가 TLS 재시도를 줄일 수 있습니다. 결정을 위키에 남기고 예쁜 리전으로 옮겨 상류 RTT만 나쁘게 만들지 마세요.
디스크 여유도 중요합니다. OpenClaw 트랜스크립트와 DerivedData를 512 GB SKU에 같이 두면 컴팩션 폭풍을 부릅니다. 모델을 탓하기 전에 시뮬레이터와 아카이브 정리 잡을 넣으세요.
LLM에 파일 경로를 던지기 전 7단계
- 커밋 SHA와 clean/dirty 확인. 머지 논쟁이면
git status --porcelain. - 빌드 산출물을 명시적으로 제외한 glob으로 상한 ripgrep.
- 바이트와 줄 주석이 달린 단일 청크만 연다. 메조 초과 전체 읽기는 rg가 단일 핫스팟을 보일 때까지 금지.
- 산문 재입력 대신 구조화 발췌(xcresulttool JSON, plist 조각) 첨부.
- 인시던트마다 토큰 사용량 로그. 모델 계열·온도와 상관.
- 자격 증명이 프롬프트에 섞이면 로테이션. 프롬프트는 로그와 동급.
- 포스트모템에 한 줄 액션: glob 강화, 새 ignore, 로그 사전 요약 CI 프리스텝 중 하나.
5단계를 건너뛰면 분기 말에 “싼 모델만 썼다”는 말이 파일 덤프로 수학적으로 거짓인 걸 알게 됩니다.
FAQ: 파일 도구·권한·모델 선택
| 질문 | 실무 답(2026-04-30) |
|---|---|
Package.resolved 전체를 읽게 해야 하는가 |
아니요. 관심 의존에 rg를 걸고 해당 스탠자만 인용. 락파일은 크지만 엔트로피는 낮다. |
| 빠른 NVMe가 청크를 대체하는가 | 아니요. 지연은 나아져도 모델 컨텍스트는 같고 바이트는 토큰이 된다. |
토큰이 아니라 권한 오류라면 청크 조정 전에 FDA/TCC 트리아지를 밟으세요. 병목을 잘못 짚지 않도록.
넓은 NVMe의 Mac mini M4가 파일 집약 에이전트에 통하는 이유
OpenClaw는 웹훅 대기 유휴와 대형 리포 버스트 읽기 사이를 진자처럼 움직입니다. MacXCode 노드의 베어메탈 Mac mini M4와 1~2 TB는 ripgrep 경로 지연을 예측 가능하게 하고 Xcode 이웃이 컴파일하는 동안에도 Node와 헬퍼 프로세스용 통합 메모리 여유를 남깁니다. 과할당 하이퍼바이저 디스크 지터를 숨기지 않아 토큰 예산 논의가 정직해집니다. “왜 거대 VM 한 대가 아니라 중형 세 대인가”를 묻는 용량 계획에는 리전별 가격과 함께 답하고, FDA 확인이 드문 경우만 VNC로 승격합니다.