
지난 며칠간 개인용 AI 비서인 OpenClaw(오픈클로)를 로컬 환경(맥북/리눅스)에 직접 구축하고, 설정부터 토큰 최적화까지 샅샅이 뜯어보며 치열하게 고민했던 과정을 정리해 보았습니다.
단순한 사용기를 넘어, "이 에이전트가 도대체 어떤 녀석이고, 시스템 내에서 어떻게 살아 움직이는가?"에 대한 본질적 궁금증부터, 실제 운영 과정에서 마주친 비용 폭증 문제와 그 해결책, 그리고 향후 개발 파트너로서의 확장 가능성까지 살펴보았습니다.
흔히 쓰이는 ChatGPT, Gemini 같은 웹 기반 챗봇과 OpenClaw 같은 로컬 AI 에이전트의 가장 큰 차이는 물리적인 컴퓨터의 제어권과 자율성에 있습니다. OpenClaw는 내 컴퓨터의 백그라운드에 상주하며 시스템을 제어하고, 독립적으로 작업을 수행할 수 있는 "자율형 개인 비서(Autonomous Personal Assistant)" 프레임워크입니다.
오픈클로의 구조를 뜯어보면 크게 두 가지 영역으로 나뉩니다.
node_modules): Node.js 기반의 이벤트 루프로 돌아가는 핵심 로직 꾸러미입니다. 사용자의 명령을 파싱하고, 도구를 실행하며, LLM과 통신하는 뼈대 역할을 합니다.~/.openclaw 폴더): 바로 이 부분이 오픈클로의 핵심 정체성입니다. 이 폴더 안에는 에이전트의 성격이 정의된 SOUL.md, 설정 파일인 openclaw.json, 대화 세션 기록(sessions), 그리고 각종 정보가 축적되는 memory 폴더가 격리되어 관리됩니다.OpenClaw의 가장 흥미로운 점은 LLM 모델 자체를 튜닝(Fine-tuning)하지 않고도 스스로 성장하는 듯한 모습을 보인다는 것입니다. 그 비결은 바로 파일 시스템을 활용한 장기 기억(Long-term Memory) 관리에 있습니다.
대화 도중 알게 된 나의 취향이나, 에러를 경험했을 때 "아, Anthropic API 키는 이렇게 설정하면 안 되는구나"라는 깨달음을 얻으면 이를 텍스트 파일(MEMORY.md나 일일 메모)에 스스로 적어둡니다. 그리고 다음 동작 시 이 기록을 읽어들여 같은 실수를 반복하지 않는 경험적(Empirical) 행동 교정을 구현합니다.
Openclaw를 설치하고 나면 사용자 계정 홈 디렉토리에 숨김 폴더인 .openclaw가 생성됩니다(MacOS/Linux기준). 이 폴더는 Openclaw가 동작하는데 필요한 설정, 로그, 에이전트 데이터 등을 보관하는 핵심 디렉토리입니다.
아래는 .openclaw 폴더의 전체적인 구조와 각 요소들에 대한 간단한 설명입니다.
~/.openclaw/
├── agents/
│ └── main/
│ └── sessions/
├── completions/
│ ├── openclaw.bash
│ ├── openclaw.fish
│ ├── openclaw.ps1
│ └── openclaw.zsh
├── identity/
│ └── device.json
└── logs/
├── gateway.err.log
└── gateway.log
agents/ (에이전트 데이터)AI 에이전트와 관련된 데이터와 상태가 저장되는 공간입니다.
main/sessions/: 메인 에이전트가 사용자와 상호작용했던 채팅 세션 내역이나 실행 상태 등을 기록하고 관리하는 폴더로 추정됩니다.completions/ (터미널 자동 완성 스크립트)터미널에서 openclaw 명령어를 입력할 때, 탭(Tab) 키를 눌러 명령어를 자동 완성할 수 있도록 돕는 쉘 스크립트 파일들이 모여있는 곳입니다.
identity/ (인증 및 기기 식별)기기 인증이나 사용자 식별과 관련된 보안 정보가 담긴 폴더입니다.
logs/ (시스템 로그)Openclaw가 실행되면서 발생하는 각종 시스템 로그가 평문 형태로 저장됩니다. 시스템에 문제가 생겼을 때 트러블슈팅 용도로 가장 먼저 확인해야 하는 폴더입니다.
저에게는 개발 코파일럿인 'Antigravity(애니)'와 일상 비서인 'OpenClaw(노아)', 두 명의 강력한 로컬 에이전트가 있습니다. (일일이 풀네임으로 지칭하기 귀찮아서 이름을 붙여줬습니다.)
둘 다 제 컴퓨터의 터미널과 파일에 접근할 수 있지만, 설계 철학이 완전히 다릅니다.
| 특징 | Antigravity (애니) | OpenClaw (노아) |
|---|---|---|
| 운영 방식 | 대화 주도형 (Interactive) 내가 부를 때만 나타나서 복잡한 미션을 깊이 있게 수행하고 종료함 | 이벤트 주도형 (Autonomous)systemd 서비스로 24시간 백그라운드에 상주하며 능동적으로 알림 |
| 기억 체계 | 프로젝트/세션 중심 현재 해결 중인 코딩이나 분석 과제의 문맥(Context)에 고도로 집중함 | 영구적 파일(Log) 중심 과거의 대화, 사용자의 성향, 포트폴리오 등을 파일에 영구 축적함 |
| 강점 영역 | 복잡한 시스템 분석 및 코딩 아키텍처 설계, 대규모 리팩토링, 버그 트래킹 등 "전문 엔지니어" | 개인화된 일상 자동화 뉴스 스크랩, 스케줄 모니터링, 외부 메신저(디스코드) 연동 등 "전담 비서" |
결론적으로: Antigravity는 내가 코딩할 때 옆자리에 앉혀두고 자문을 구하는 '사수 개발자' 라면, OpenClaw는 내가 자는 동안에도 내 주식 포트폴리오를 모니터링하고 아침에 디스코드로 브리핑해 주는 '성실한 비서' 입니다.(실제로 그렇게 썼습니다.)
OpenClaw의 강점인 자율성과 외부 연결성을 극대화하기 위해서는 다음과 같은 정기적이고 반복적인 '모니터링 및 자동화 업무'에 투입하는 것이 가장 이상적입니다.
반면, 방대한 코드 베이스를 뒤엎거나 복잡한 디버깅 등 묵직한 작업은 이 녀석의 역할이 아님을 분명히 알아야 합니다. 그 이유는 아래에 후술합니다.
오픈클로를 디스코드에 연동하고 Anthropic(Claude) API를 물려 놓았더니, 작업 세션 하나 완료하기도 전에 TPM(Tokens Per Minute) Limit으로 에이전트가 뻗는 현상이 반복되었습니다.
일 하나 시키다 뻗고, 다시 일어나서 처리하다가 뻗고 하는게 반복되니 아무리 똑똑한 비서라도 일을 시킬 맛이 안 나더라고요...

범인은 제가 에이전트를 너무 믿고 방치한 사이 비대해진 '세션 파일'에 있었습니다.
OpenClaw는 나를 더 잘 이해하기 위해 대화 내역을 계속 쌓아둡니다. 아직 이전 작업을 완료하기도 전에 뻗어버린 메인 세션이 캐싱한 토큰이 어느덧 153k(약 15만 토큰)까지 불어나 있을 정도로요.
근데 Claude Haiku-4.5 모델의 TPM 제한은 50,000입니다. 제가 "안녕?"이라고 한마디만 해도 오픈클로는 맥락을 유지하겠다며 153k를 한꺼번에 서버로 던졌고, 서버는 "한 번에 5만 토큰 이상은 안 받아!"라며 입구 컷을 해버린 것이죠.
심지어 접근성을 높이기 위해 설정해 둔 디스코드 봇에서 "안녕?"이라고 짧게 물어볼 때조차, 오픈클로는 지금까지 쌓아온 나의 모든 성향, 과거의 대화 기록 전체, 심지어 이전 채팅 내역까지 모조리 읽어서 LLM에게 한 번에 전송 해버렸으니 뭐 하나 시킬만하면 뻗는건 당연한 수순이었을지도 모르겠습니다.
아마 제가 설정해 둔 요금제 때문일수도 있지만 정말 이건 아니다 싶더군요.
이 '무한 에러 루프'를 끊기 위해 저는 세 가지 가설을 세우고 직접 시스템을 역설계하며 테스트를 진행했습니다.
최적화(Test B)의 핵심 로직:
MEMORY.md는 평소에 절대 로드하지 못하게 강제해버렸습니다. 대신, 꼭 필요한 내용만 담은 일일 메모만 가볍게 로드하고, 깊은 과거는 에이전트가 필요할 때만 스스로 '검색'하게 만들었습니다.놀라운 결과:
이 조치를 통해 응답 정확도는 100%에서 96%로 단 4%만 희생하면서, 입력 토큰 소모량을 114 토큰에서 22 토큰으로 약 81% 감소시킬 수 있었습니다. Agent가 나를 잘 알아주는것도 중요하지만, 큰 차이가 없다면 단순함이 최고의 최적화임을 다시금 깨달은 순간이었습니다.
또한 모델별 리밋(Haiku: 50k, Sonnet: 30k)에 따라, 평소엔 Haiku로 가성비를 챙기고 복잡한 로직이 필요할 때나 Haiku의 limit이 임박할 경우 잠시 Sonnet으로 우회하는 '듀얼 모델 전략'을 수립하여 비용과 Limit을 최소화 하였습니다.
현재 오픈클로는 가벼운 수준의 개인 비서에 특화되어 있지만(물론 LLM이 붙어서 무겁습니다만), 로컬 시스템의 제어권을 가졌다는 점에서 그 확장성은 무궁무진합니다. 특히 개발에 특화된 에이전트와의 결합을 상상해 보면 놀라운 아키텍처가 그려집니다.
이러한 마이크로 에이전트 아키텍처를 구축한다면, 비서의 신속성/모바일 연결성 + 개발 프레임워크의 전문성 등 각자의 전문성을 결합하여 로컬 개발 환경을 압도적으로 강력하게 진화시킬 수 있을 것입니다.
아직 붙여보지 않았지만 동기 중에 전직 개발자분이 만들어 주신 개발 에이전트와의 결합 가능성을 분석해 본 결과 적용 가능성이 높다는 결론이 있었기에, 결국 실제로 구현되는 것은 시간 문제라고 봅니다.
3일동안 잘 가지고 놀았습니다.
OpenClaw를 써보겠다고 노트북도 하나 희생하고 토큰과의 전쟁을 치렀던 지난 며칠은 단순히 툴 하나를 써보는 것을 넘어, AI 에이전트의 '메모리 관리 체계'와 '정체성 형성 과정', 그리고 LLM 호출 시 발생하는 '비용 효율성'의 민낯을 마주할 수 있는 시간이었습니다.
이 기록이 로컬 AI 환경을 구축하려는 누군가에게 작은 영감이 되기를 바랍니다.
안녕하세요 TPM 때문에 저도 고생하고 있는데 혹시 json 말고 md 쪽 설정으로만 TPM 설정 해결 하셨을까요??