핵심은 도구 개수가 아니라 복구 가능한 상태·예측 가능한 중단·계량 가능한 부작용입니다.
thread_id·checkpoint·interrupt·쿼터를 맞추면 노트북·원격 Mac 모두 장시간 안정적으로 돌아갑니다.
연관 글: 추론·RAG·OpenClaw·IDE. 홈·구매(로그인 불필요). 표·체크리스트·HowTo↓
| 차원 | 핵심 설계 포인트 | 원격 Mac 장시간 실행 팁 |
|---|---|---|
| thread_id | 세션당 키 1개, user/session 매핑·감사, 동일 키 동시 쓰기 금지 | 게이트웨이에서 발급·반환(클라이언트 임의 문자열 충돌 방지) |
| checkpoint | 배포 단위와 네임스페이스 일치, 그래프 버전·업그레이드 마이그레이션 | 쓰기 증폭: DB·SQLite 파일·WAL, vacuum 창 모니터링 |
| SQLite / Postgres | 저동시·빠른 시작: SQLite+WAL, 로컬 SSD | 다중 워커·감사: Postgres+풀; SQLite는 네트워크 볼륨 금지 |
| interrupt | 승인 노드에서 대기, 대기 상태·UI 문구 저장 | 무응답 시 기본 분기·안전 종료(워커 영구 점유 방지) |
| tool timeout | 도구 하드 타임아웃 + 서브그래프 예산 + LLM 첫 토큰·총 시간 | RTT·p95 반영, OpenClaw 퓨즈·로그 필드와 정렬 |
| 디렉터리 쿼터 | workspace·checkpoint·아티팩트·임시 다운로드 분리, 소프트·하드 한도 | inode·소파일 폭풍, 정리 주기(IDE 브리지) |
checkpoint: SQLite인가 Postgres인가?
SQLite: 저동시·WAL·로컬 SSD·iCloud 분리, 장시간 파일·백업 잠금 유의. Postgres: 다중 워커·감사, 풀·마이그레이션·autovacuum. 중앙 DB면 시계·재연결 테스트 포함.
샌드박스 쿼터 수락 체크리스트
- thread_id와 파일 접두사 연동 → 세션 삭제 시 scratch 연쇄 삭제.
- checkpoint와 업로드 디렉터리 분리.
- 도구별 파일·디렉터리 상한 + inode 알람.
- interrupt 대기 시에도 점유 → 큐 TTL·워커 이관.
- tool timeout 후 SIGTERM→SIGKILL, 좀비 없음.
- kill 후 최신 checkpoint 복구·불변식 비교.
HowTo 요약
thread_id → 저장소·마이그레이션 → interrupt·resume → 계층 타임아웃 → 쿼터 CI → 원격 Mac 장시간 부하.
원격 Mac 장시간 실행: 운영 팁
launchd·컨테이너에서 로그·checkpoint·scratch를 동일 로컬 디스크에 두고 디스크 알람을 먼저 켭니다. 동일 thread_id를 노트북·클라우드가 동시에 쓰지 말고, 재연결 뒤 최신 checkpoint에서 이어가 분기 오류를 막습니다.
CHECKPOINT_DIR="$HOME/agent-state/checkpoints"
SANDBOX_WORKSPACE="$HOME/agent-state/scratch/$THREAD_ID"