워크스페이스 파일 저장소
OpenClaw의 파일 저장소와 조직 방식을 알아봅니다.
워크스페이스란?
워크스페이스는 OpenClaw가 파일을 저장하고 관리하는 전용 디렉토리입니다:
- 에이전트가 생성/읽는 모든 파일 저장
- 세션 간 공유 가능한 영구 저장소
- 보안을 위해 시스템 파일 접근 제한
기본 위치
| 플랫폼 | 기본 경로 |
|---|---|
| Linux/macOS | ~/.openclaw/workspace/ |
| Windows | %USERPROFILE%\.openclaw\workspace\ |
| 커스텀 | OPENCLAW_WORKSPACE 환경 변수 |
파일 시스템 구조
~/.openclaw/workspace/
├── sessions/ # 세션별 파일
│ ├── session-abc123/
│ │ ├── data.csv
│ │ └── analysis.json
│ └── session-def456/
│ └── output.txt
├── temp/ # 임시 파일
├── uploads/ # 업로드된 파일
└── persistent/ # 영구 저장 파일
├── config.json
└── database.db
파일 저장소 유형
1. 세션 저장소 (Session Storage)
일시적인 세션별 파일 저장:
- 세션 종료 후에도 유지
- 같은 세션에서 재접속 시 파일 공유
- 세션 만료 후 자동 정리 (기본 30일)
2. 영구 저장소 (Persistent Storage)
장기 보관이 필요한 파일:
- 자동 정리 제외
- 여러 세션에서 공유
- 명시적 삭제 시까지 보존
3. 임시 저장소 (Temp Storage)
단기 사용 파일:
- 24시간 후 자동 삭제
- 캐시, 중간 결과 저장에 적합
- 중요한 파일 저장 부적합
파일 제한 사항
보안 제한
워크스페이스 내부 경로만 접근 가능합니다:
# 허용되지 않음
/etc/passwd
/var/log/system.log
~/../other-user/file.txt
# 허용됨
workspace/config.json
sessions/my-session/data.csv
심볼릭 링크 및 부모 디렉토리(../) 접근 차단
파일 크기 제한
| 설정 | 기본값 | 설명 |
|---|---|---|
maxFileSize |
100MB | 단일 파일 최대 크기 |
maxTotalSize |
10GB | 워크스페이스 전체 최대 크기 |
maxFileCount |
10,000 | 최대 파일 수 |
자동 정리 설정
workspace:
autoCleanup:
enabled: true
schedule: "0 2 * * *"
rules:
- path: "temp/"
ageDays: 1
- path: "sessions/*/"
ageDays: 30
- pattern: "*.tmp"
ageDays: 7
수동 정리:
openclaw workspace clean --dry-run # 시뮬레이션
openclaw workspace clean # 실제 정리
openclaw workspace clean --path temp/
워크스페이스 관리 명령어
# 워크스페이스 경로 확인
openclaw workspace path
# 워크스페이스 통계
openclaw workspace stats
# 파일 목록
openclaw workspace list --path sessions/
# 백업
openclaw workspace backup --output backup.zip
워크스페이스 백업
자동 백업 설정
workspace:
backup:
enabled: true
schedule: "0 3 * * 0"
retention: 4
compression: true
destinations:
- type: "local"
path: "~/.openclaw/backups/"
- type: "s3"
bucket: "my-backup-bucket"
prefix: "openclaw/"
수동 백업
openclaw workspace backup --output full-backup.zip
openclaw workspace backup --incremental
openclaw workspace backup --session session-abc123
파일 작업 모범 사례
상대 경로 사용:
// 올바른 예
await skill.saveToFile('sessions/my-session/data.json', data);
파일 존재 확인 후 작업:
if (await skill.fileExists('config.json')) {
const config = await skill.readFile('config.json');
}
임시 파일 정리:
try {
await skill.saveToFile('temp/cache.json', data);
await processData();
} finally {
await skill.deleteFile('temp/cache.json');
}
참고: