쓸모 쓸모연구소 · 실전 노트
제 284 호이번 주 새 글 158 편2026 · 09 · 30
AI 업무 자동화
OpenClaw · 맥미니 · Claude

이 글에는 쿠팡 파트너스 링크가 있으며, 구매 시 일정액의 수수료를 받습니다.

오픈클로 메모리 설정, ChatGPT 대화 기록 넣고 로컬 검색 켜기

오픈클로 메모리 설정을 빈 Mac mini 설치부터 따라가는 64단계로 정리했습니다. 봇 이름과 성격(soul)을 먼저 정하고, ChatGPT·Claude에서 내보낸 3년치 대화 기록을 봇 메모리로 옮긴 뒤, API 키 없이 돌아가는 로컬 임베딩으로 메모리 검색을 켜는 흐름입니다. 방송이 건너뛴 데이터 내보내기 메뉴, 가져오기 스크립트를 만드는 프롬프트, 셸 다시 읽기 명령도 채웠습니다.

오픈클로 메모리 설정, ChatGPT 대화 기록 넣고 로컬 검색 켜기 삽화
삽화 · 쓸모연구소

오픈클로 메모리 설정 전에: 화자가 직접 말한 위험

Ray Fernando가 초기화한 Mac mini에 OpenClaw를 처음부터 설치하는 라이브 방송이 바탕입니다. 방송 길이는 4시간 4분 50초이고, 이 글의 64단계 절차에는 실제로 한 설정 작업만 순서대로 옮겼습니다. 잡담, 시청자 채팅 응답, NVIDIA Cosmos 해커톤 리서치 시연은 절차에서 뺐고, 아래 "방송 지도"에 짧게만 적었습니다. 명령어는 화자가 입으로 말한 것만 옮겼고, 화면에만 보였을 명령은 "화면 판독 불가"로 남긴 뒤 일반적인 방법을 덧붙였습니다.

화자는 온보딩을 시작하며 OpenClaw를 "시스템에 올릴 수 있는 가장 위험한 것"이라고 부릅니다. 자기를 그대로 따라 하지 말고 직접 조사해서 본인 책임으로 판단하라고 여러 번 말합니다.

  • 구독 토큰 과사용: 가이드는 Anthropic/OpenAI API 키를 권합니다. Claude 구독의 setup token(구독 계정으로 봇을 돌리게 해 주는 인증 문자열)으로 봇을 돌리면 봇 트래픽이나 계정 탈취처럼 보여 계정이 차단되거나 약관 위반이 될 수 있다고 화자는 말합니다. 약관 내용을 다 아는 건 아니라는 말도 덧붙였습니다.
  • API 지출 한도: API 키를 쓴다면 콘솔에서 지출 한도를 꼭 걸라고 합니다.
  • ClawHub 스킬: 화자는 ClawHub(다른 사람이 만든 스킬을 공유하는 저장소)에서 받는 스킬이 지금 가장 큰 위험 지점이라고 봅니다. 숨은 프롬프트 인젝션(에이전트에게 몰래 다른 지시를 심는 공격)이 들어 있을 수 있어서, 스킬은 대화하면서 직접 만들고 코드를 검토하겠다고 합니다.
  • full yolo 금지: 아무 제한 없이 맡기는 방식으로 두지 말라고 경고합니다.
  • 보안 강화는 아직 안 했음: 방송 시점에는 초기 설정만 했고 보안 강화(hardening)는 실행하지 않았다고 직접 말합니다. 로컬 네트워크에서도 완전히 잠그지 않은 상태이고, Tailscale(내 기기끼리만 연결하는 사설 네트워크 도구)은 나중에 설정할 예정이라고 합니다. 계획 문서에 있던 "hardening, loopback, sandbox" 항목도 방송에서 하지 않았습니다.
  • 그 밖에 화자는 전용 Apple ID·Gmail로 개인 계정을 분리했고, 방송 중 토큰이 보일까 봐 화면을 여러 번 가렸습니다. 시청자 질문에는 이 봇이 컴퓨터를 "완전히 제어할 수 있다"고 답했습니다.

이해관계도 먼저 밝혀 둡니다. 모두 화자가 방송에서 직접 한 말입니다.

  • Cursor: Cursor 팀에게서 공개 전 기능의 연구용 접근권과 크레딧을 많이 받았다고 합니다. 서면 계약은 없다고 했습니다.
  • 유료 Discord: 월 15달러쯤 되는 자기 Discord에 OpenClaw 채널을 만들었다고 홍보합니다.
  • 팟캐스트: 자기가 진행하는 Rate Limited를 홍보합니다.
  • DigitalOcean: 공식 스폰서가 아니었다고 해명합니다. 약속한 600달러 크레딧이 가입자에게 지급되지 않아 책임감을 느낀다고 했습니다.
  • Cole Medin: 영상을 추천하면서 수수료는 받지 않는다고 밝혔습니다.

오픈클로 메모리는 어떻게 동작하나

본 절차로 들어가기 전에 용어 세 개를 정리해 둡니다. 이걸 알면 7장에서 왜 로컬 임베딩을 켜는지 바로 이해됩니다.

  • 워크스페이스 메모리: OpenClaw는 기억을 데이터베이스가 아니라 워크스페이스 폴더 안의 마크다운(MD) 글 파일로 남깁니다. 봇의 성격은 SOUL.md, 사용자 정보는 USER.md, 그날그날의 기록은 memory 폴더에 쌓입니다.
  • 메모리 검색(memory search): 봇이 이 MD 파일들 가운데 지금 질문과 관련 있는 부분을 찾아 읽는 기능입니다.
  • 임베딩(embedding): 글을 숫자 좌표로 바꿔 "뜻이 비슷한 글"을 찾게 해 주는 기술입니다. 임베딩이 없으면 봇은 낱말이 똑같이 들어간 줄만 찾는 단순 텍스트 검색(grep)으로 대신합니다. 임베딩 계산을 외부 서비스(Google, OpenAI, Voyage)에 맡기면 API 키가 필요하고, 내 Mac에서 직접 하면(로컬 임베딩) 키가 필요 없습니다.

그래서 이 방송의 핵심 흐름은 "기록을 memory 아래에 넣고, 로컬 임베딩으로 색인을 만든다"입니다. 3년치 대화가 외부로 나가지 않고 Mac mini 안에서 검색된다는 점이 화자가 이 구성을 고른 이유입니다.

4시간 방송 지도: 8개 구간

어디쯤에서 무엇을 했는지 찾을 때 쓰세요. 괄호 안은 아래 절차의 몇 장에 해당하는지입니다. 참고로 메모리 검색을 켜는 설정 명령은 방송 시작 후 2시간 46분 36초 무렵에야 나옵니다. 방송 전체보다 아래 절차를 먼저 읽는 편이 빠릅니다.

구간 1. 도입·준비물·설치 시작 (절차 1장)

  • 화자는 Robert H. Eubanks의 Substack 글 "OpenClaw on Mac Mini complete guide"를 따라갑니다. 링크는 영상 설명란에 있다고 합니다.
  • 쓰는 기기는 Mac mini M4(RAM 16GB)이고, 화자 말로는 약 600달러입니다. 전용 기기를 쓰는 이유로는 문제가 생겨도 그 기기 안에서 끝나고, AirDrop·브라우저·macOS 앱을 쓸 수 있다는 점을 듭니다.
  • 에이전트 전용 Apple ID와 Gmail은 방송 전에 만들어 두었고, 비밀번호는 Apple 키체인에 둔다고 합니다.
  • 화자의 구상(방송에서 구축하지는 않음): Mac mini는 다른 기기에 일을 나눠 주는 지휘 담당만 하고, 모델 실행은 DGX Spark·Mac Studio(예정)·MacBook Pro(128GB)·NAS가 맡습니다.
  • 설치 명령을 붙여넣고 Homebrew 오류를 sudo !!로 넘깁니다.
  • 설치를 기다리는 동안 방송 3일 전에 한 대화 기록 분석을 이야기합니다. 화자가 읽어 준 수치는 138MB, 2023년 3월~2026년 1월, 대화 1,857개, ChatGPT 메모리 42개, Anthropic 프로젝트 23개입니다.
  • 시청자 질문에 Mac mini 대신 25달러짜리 안드로이드 폰이나 VPS도 쓸 수 있다고 답합니다.

구간 2. 온보딩 마법사 (절차 2장)

  • 설치가 끝나 버전 2026.2.9(자막 "20262.9")가 뜨고 온보딩이 시작됩니다.
  • 위험 고지 동의, QuickStart, Anthropic, setup token, Opus 4.6, 채널 건너뛰기, pnpm, API 키 전부 나중에, hooks 3개, Hatch in TUI 순서로 진행합니다.
  • 시청자가 "Mac mini가 왜 필요하냐"고 묻자 개인정보 보관, Time Machine 백업, Touch ID·키체인 보안, 외부 작업용 VPS와의 분리를 이유로 듭니다. 768GB 메모리 같은 추론 클러스터 수치는 앞으로의 계획입니다.

구간 3. 설치 폴더 둘러보기와 채팅 Q&A (절차 3장)

  • ~/.openclaw(자막 교정 추정) 폴더를 Finder로 열어 구조를 보여 줍니다.
  • DigitalOcean 크레딧 건을 해명합니다(위 이해관계 참고).
  • 시청자 질문에 exe.dev를 소개합니다. 월 20달러에 VM 25개 같은 화면 내용을 읽어 주지만 직접 검증하지는 않았다고 밝힙니다.
  • Hetzner(자막 "Herzner")는 살펴본 적은 있지만 이미 가진 Mac mini와 AWS를 택했고, Railway는 설정이 어려워 권하지 않는다고 합니다.
  • 시청자 발언: 한 시청자가 "Hetzner가 4달러 미납으로 내 서버를 지웠다"는 채팅을 남겼습니다. 화자 주장이 아닙니다.
  • Anthropic 방식을 흉내 내려면 Claude Agent SDK와 Cole Medin 영상을 보라고 추천합니다.

구간 4. 부트스트랩 대화: 이름과 성격 (절차 4장)

  • 봇 이름은 시청자들과 고민한 끝에 화자가 "Honu"로 붙입니다. 하와이어로 거북이라는 뜻이고, 화자는 행운을 뜻한다고 설명합니다.
  • 비용 이야기(화자 추정): Cursor의 fast 모드는 6배 가격이고, 약 56,000토큰짜리 요청이 5달러 미만이었을 거라고 합니다.

구간 5. 가져오기 계획과 스크립트 만들기 (절차 5장)

  • 계획 순서는 설치, 온보딩, 부트스트랩 대화, 보안 강화, 기록 가져오기였습니다. 보안 강화는 건너뛰었습니다.
  • Cursor 크레딧 관련 질문에 답합니다(위 이해관계 참고).
  • 결과물은 화자가 읽어 준 기준으로 Python 약 500줄 스크립트와 파일 1,291개 패키지입니다.

구간 6. Mac mini로 옮기기·가져오기·임베딩 설정 (절차 6~7장)

  • 화자 주장: OpenClaw는 "최근 3주~한 달 사이 나온 가장 강력한 기술"이라고 합니다.
  • 화자 주장: OpenClaw 설치 대행으로 1~2천 달러를 받으면 백만 달러 사업이 된다고 말합니다. 연 1천만 달러를 번다는 사람 이야기는 팟캐스트에서 들었다고 합니다. 수익 근거는 제시되지 않았습니다.
  • tar 파일을 Mac mini로 옮기고, 가져오기 스크립트가 한 번 막힌 뒤 고쳐서 성공합니다. 이어 로컬 임베딩을 켭니다.

구간 7. 메모리 검색 확인과 세션 관리 (절차 7장 끝)

  • 오늘 쓴 양은 118,000토큰이라고 말합니다.
  • 테스트: 팟캐스트 이름을 말하지 않고 "최근 팟캐스트에서 뭘 이야기했지?"라고 묻자, 봇이 Rate Limited 관련 기록을 날짜별로 내놓습니다. 화자는 "무섭다"고 반응합니다.
  • /compact를 해도 컨텍스트 표시가 그대로라 /new로 새 세션을 엽니다. 사고 수준은 high로 올립니다.
  • 화면 구성: Mac mini는 HDMI로 TV에 연결돼 있고, 노트북에서 macOS 화면 공유로 접속합니다.
  • (절차에서 뺀 부분) NVIDIA Cosmos 해커톤 자료를 Cursor에서 인계 문서로 만들어 봇에게 리서치를 맡기는 시연을 합니다. 화자 말로 마감은 2월 26일, 16일 남은 시점입니다.
  • Claude 구독(Max 플랜) 사용량은 4%라고 확인합니다.
  • 시청자 발언: 이메일 24만 통과 Slack 메시지 58만 5천 개를 Qdrant(자막 "quadrant")로 색인했다는 사례가 채팅에 올라옵니다.

구간 8. 마무리와 잡담 (절차 없음)

  • 다음 방송에서 Composer 1.5와 Codex 5.3을 볼 예정이라고 합니다.
  • 게스트에게 배운 요령으로, 보낸 메일만 색인하면 관계를 파악하는 신호가 강하다는 이야기를 합니다.
  • 팟캐스트 Rate Limited(공동 진행 Eric Provencher(자막 "Eric Provence"), Adam Larson) 홍보, Apple에서 12년 일한 경력, 2020년 코로나 후유증과 퇴사, ChatGPT로 시작한 코딩, 난독증 이야기가 이어집니다.

따라 하기 전 준비물

  • Mac mini. 화자는 M4 기본형(RAM 16GB, SSD 256GB)을 초기화해서 썼고, 전용 기기를 권합니다.
  • Mac 관리자 권한 사용자 계정과 비밀번호. 설치 중 sudo(관리자 권한으로 명령을 실행하는 접두어)에 필요합니다. 시스템 설정 → 사용자 및 그룹에서 내 계정 아래에 "관리자"라고 적혀 있는지 확인합니다.
  • 에이전트 전용 Apple ID와 Gmail. 화자는 방송 전에 만들어 두었고, 만드는 과정은 방송에 없습니다. 앞의 Substack 가이드를 참고하라고 합니다.
  • Anthropic 인증 수단. Claude 구독의 setup token(화자 선택) 또는 Anthropic API 키입니다.
  • 4~6장까지 하려면 ChatGPT·Anthropic 데이터 내보내기 파일, Cursor(AI 코드 편집기), 가져오기 스크립트가 필요합니다. 스크립트는 직접 만들어야 합니다. 만드는 요령은 5장에 프롬프트로 정리했습니다.
  • 비용(모두 화자 발언): Mac mini 약 600달러, Claude 구독(화자는 Max 플랜). OpenClaw 자체 비용 이야기는 없었습니다. 구독과 API 요금은 바뀌니 공식 안내를 확인해야 합니다.

1장. 한 줄 설치 명령 실행

  1. Mac mini에서 터미널을 엽니다.
    • 위치: Mac mini 화면. 화자는 노트북에서 macOS 화면 공유로 원격 접속한 상태였습니다. 터미널은 Cmd+Space로 Spotlight를 열어 "terminal"을 입력하면 됩니다.
    • 확인: 터미널 창이 뜬다.
  2. 웹 브라우저에서 openclaw.ai의 빠른 시작(Quick Start) 페이지를 엽니다.
    • 확인: 한 줄 설치 명령이 보인다. 명령 원문은 화면 판독 불가였고, 공식 Quick Start의 명령은 아래 형태입니다. 사이트와 다르면 사이트를 따릅니다.
프롬프트
curl -fsSL https://openclaw.ai/install.sh | bash
  1. 한 줄 설치 명령을 복사합니다.
    • 확인: 클립보드에 명령이 들어간다.
  2. 터미널에 붙여넣습니다.
    • 확인: 명령이 입력 줄에 나타난다.
  3. 엔터를 누릅니다.
    • 확인: 설치가 시작된다. 빈 Mac에는 Homebrew(맥용 프로그램 설치 관리자)가 없어서 설치 스크립트가 Homebrew부터 깔려고 한다.
    • 주의: 화자는 여기서 "Installing homebrew failed … stdin is not TTY … need sudo access" 메시지를 보고 실패했습니다. 관리자 권한이 필요하다는 뜻입니다. 사용자 계정이 관리자여야 합니다.
  4. 5단계가 실패했다면 아래 명령을 실행합니다.
프롬프트
sudo !!
  • 설명: !!("뱅뱅")는 바로 앞 명령을 다시 실행하고, sudo는 그 명령을 관리자 권한으로 돌립니다.
  • 확인: 비밀번호를 묻는 줄이 뜬다. 7. Mac 사용자 비밀번호를 입력하고 엔터를 누릅니다.
    • 주의: 입력한 글자는 화면에 보이지 않습니다.
    • 확인: "preparing environment"가 나오고 Homebrew 설치가 진행된다. 8. 설치가 끝날 때까지 기다립니다.
    • 확인: 설치 스크립트가 Homebrew 설치와 PATH 수정을 마치고 OpenClaw 버전(화자 화면 2026.2.9, 자막 "20262.9")을 보여 준 뒤 온보딩이 시작된다.
    • 참고: Homebrew·git 같은 것은 이 한 줄 스크립트가 알아서 설치한다고 화자는 말합니다.

sudo !!로도 계속 실패하면 Homebrew를 먼저 따로 설치한 뒤 설치 명령을 다시 실행하는 방법이 있습니다. brew.sh 첫 화면의 공식 명령은 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"입니다.

2장. 온보딩 마법사

온보딩(첫 설정 마법사)은 화살표 키로 고르고 Enter로 넘어갑니다. 여러 개를 고르는 목록은 스페이스바로 선택합니다.

  1. 위험 고지에 동의합니다.
    • 위치: 온보딩 첫 질문 "I understand this is powerful and inherently risky"(강력하고 본질적으로 위험하다는 걸 이해한다)
    • 주의: 화자는 "full yolo로 두지 말라"고 경고합니다.
    • 확인: 다음 질문(설정 방식)으로 넘어간다.
  2. 설정 방식에서 QuickStart를 고릅니다.
    • 확인: 모델 제공자 선택 화면이 뜬다.
  3. 모델 제공자로 Anthropic을 고릅니다.
    • 참고: 목록에는 Vercel AI Gateway, OpenAI OAuth 등도 있었습니다.
    • 확인: 인증 방식 선택 화면이 뜬다.
  4. 인증 방식으로 setup token을 고릅니다.
    • 대안: API 키 방식. 이때는 console.anthropic.com에서 키를 만들고 지출 한도를 걸라고 화자는 말합니다. 한도 설정 위치는 방송 중에 찾지 못했습니다. 콘솔의 Settings(설정) 안 Limits(한도) 항목에서 월 지출 상한을 정할 수 있고, 메뉴 이름은 바뀔 수 있으니 콘솔 화면에서 확인합니다.
    • 주의: 구독(setup token)으로 과하게 쓰면 봇 트래픽으로 보여 계정이 차단되거나 약관 위반이 될 수 있다고 화자는 말합니다.
    • 확인: "토큰 생성 명령을 실행한 뒤 여기에 붙여넣으라"는 안내가 뜬다.
  5. 새 터미널 창을 하나 더 엽니다.
    • 위치: 화자는 토큰을 만들 기기의 터미널(Ghostty)을 열었습니다. 기본 터미널 앱이면 Cmd+N으로 새 창이 열립니다.
    • 주의: 화자는 처음에 엉뚱한 창에서 하다가 돌아갔습니다. 온보딩 창은 그대로 두고 다른 창에서 합니다.
    • 확인: 빈 터미널 창이 뜬다.
  6. 안내된 토큰 생성 명령을 실행합니다.
    • 주의: 명령 원문은 화면 판독 불가. Claude Code가 설치된 기기라면 보통 claude setup-token 명령으로 이 토큰을 만듭니다. 온보딩 화면에 적힌 명령이 있으면 그것을 따릅니다.
    • 확인: 긴 토큰 문자열이 출력된다.
  7. 토큰을 복사합니다.
    • 주의: 토큰 중간에 줄바꿈이 섞여 나와서, 화자는 텍스트 편집기(TextMate)에 붙였다가 한 줄로 정리했습니다. 방송 중이라 노출을 막으려고 화면도 가렸습니다.
    • 확인: 줄바꿈 없는 토큰 한 줄이 클립보드에 있다.
  8. 온보딩 화면에 토큰을 붙여넣고 엔터를 누릅니다.
    • 확인: 토큰 이름을 묻는다.
  9. 토큰 이름을 입력하고 엔터를 누릅니다.
    • 예: 화자는 기기 이름을 붙였습니다(자막 "M4 MIDI", 정확히 들리지 않음). 나중에 알아볼 수 있는 이름이면 됩니다.
    • 확인: 모델 선택 화면이 뜬다.
  10. 기본 모델(Opus 4.6)을 고릅니다.
    • 확인: 채널 선택 화면이 뜬다.
  11. 채널(Telegram·Discord 등)에서 "Skip for now"를 고릅니다.
    • 참고: 나중에 추가할 수 있습니다. 화자는 "openclaw channels add"를 언급했지만 실제로 실행하지는 않았습니다.
    • 확인: 스킬 설정 질문이 뜬다.
  12. 스킬 설정(Configure skills)에 Yes를 고릅니다.
    • 확인: 패키지 관리자 선택 화면이 뜬다.
  13. 패키지 관리자로 pnpm을 고릅니다.
    • 참고: 화자는 bun을 좋아하지만 문제가 있다고 들어서 pnpm을 골랐다고 합니다.
    • 확인: 누락된 스킬 의존성 설치 목록이 뜬다.
  14. 스킬 의존성 목록에서 "Skip for now"를 고릅니다.
    • 조작: 항목 선택은 스페이스바입니다. 목록에는 1Password, ClawHub, GitHub, gog(Google Workspace), Whisper 로컬, Peekaboo, WhatsApp 등이 있었습니다.
    • 주의: ClawHub 스킬은 숨은 프롬프트 인젝션이 있을 수 있다는 게 화자 판단입니다.
    • 확인: API 키 입력 질문이 차례로 뜬다.
  15. Google Places API 키 질문에 "나중에(Not yet)"를 고릅니다.
    • 확인: 다음 키 질문으로 넘어간다.
  16. Gemini API 키(Nano Banana Pro용) 질문에 "나중에(Not yet)"를 고릅니다.
    • 확인: Notion 키 질문이 뜬다.
  17. Notion API 키 질문에 No를 고릅니다.
    • 주의: 자막에 분명한 답은 없고 바로 다음 질문으로 넘어갑니다.
    • 확인: OpenAI 이미지 생성 키 질문이 뜬다.
  18. OpenAI 이미지 생성 키 질문에 No를 고릅니다.
    • 확인: OpenAI Whisper API 키 질문이 뜬다.
  19. OpenAI Whisper API 키 질문에 No를 고릅니다.
    • 확인: ElevenLabs 키 질문이 뜬다.
  20. ElevenLabs API 키 질문에 No를 고릅니다.
    • 확인: "Enable hooks" 화면이 뜬다.
  21. Hooks 목록에서 boot, command logger, session memory 세 개를 고릅니다.
    • 설명: hook은 특정 순간에 자동으로 도는 작업입니다. session memory는 /new를 입력할 때 세션 내용을 메모리에 저장한다고 화자가 화면을 읽어 줍니다. 메모리를 쌓는 게 목적이라면 이 항목은 꼭 켭니다.
    • 확인: 게이트웨이 서비스 설치가 시작된다.
  22. 게이트웨이 서비스 설치가 끝날 때까지 기다립니다.
    • 주의: 화자는 이 구간에서 토큰이 보일까 봐 화면을 가렸습니다. 출력 내용은 판독 불가.
    • 확인: macOS 팝업 "node가 로컬 네트워크의 기기를 찾도록 허용"이 뜬다.
  23. 팝업에서 "허용(Allow)"을 누릅니다.
    • 대안: "허용 안 함"을 눌러도 나중에 바꿀 수 있다고 화자는 말합니다. 화자는 명령줄 방법을 말하지 않았지만, 시스템 설정 → 개인정보 보호 및 보안 → 로컬 네트워크에서 node 항목을 켜고 끌 수 있습니다.
    • 주의: 허용하면 OpenClaw가 같은 네트워크의 다른 기기를 찾아 연결을 시도합니다.
    • 확인: "How do you want to hatch your bot?"(봇을 어디서 깨울까) 질문이 뜬다.
  24. "Hatch in TUI"를 고릅니다.
    • 대안: "Hatch in the web UI"를 고르면 웹 브라우저로 열립니다. TUI는 터미널 창 안에서 대화하는 화면입니다.
    • 확인: 터미널 화면(TUI)에서 봇이 "방금 깨어났다, 기억도 이름도 없다"는 식으로 첫 인사를 한다.

3장. 오픈클로 설치 폴더 확인 (선택)

  1. 새 터미널 창을 엽니다.
    • 확인: 빈 터미널 창이 뜬다.
  2. OpenClaw 폴더를 Finder로 여는 명령을 실행합니다.
프롬프트
open ~/.openclaw
  • 주의: 이 명령은 자막 교정 추정입니다. 자막은 "user ty open claw", "Splatilly open claw"였고, 화자가 "점(.)으로 시작하는 숨김 폴더"라고 설명한 문맥으로 ~/.openclaw라고 추정했습니다. 정확한 표기는 화면 판독 불가. ~는 내 홈 폴더를 뜻합니다.
  • 확인: Finder 창이 열리고 agents, sessions, canvas, cron, devices, identity, logs, openclaw.json, workspace가 보인다. workspace 안의 soul·heartbeat 파일은 처음엔 0KB다.

Finder에서 숨김 폴더가 안 보이면 Cmd+Shift+마침표(.)를 눌러 숨김 파일 표시를 켭니다. 이 폴더 전체가 봇의 설정과 기억이니, 큰 작업 전에는 통째로 다른 곳에 복사해 두면 되돌리기가 쉽습니다.

4장. 부트스트랩 대화: 봇 이름과 성격 정하기

4~6장은 그대로 재현할 수 없습니다. 이 부분은 화자가 Cursor로 직접 만든 비공개 개인 스크립트와 미리 써 둔 글에 기댑니다. 방송 시점에 스크립트는 공개되지 않았고, 화자는 나중에 오픈소스로 공개하겠다고만 했습니다. 흐름을 참고하되, 아래에 적은 프롬프트로 내 것을 만들어 쓰면 됩니다.

부트스트랩(bootstrap)은 봇이 처음 깨어나 자기 이름과 성격, 주인에 대한 정보를 정하는 첫 대화입니다. 이 대화가 끝나야 SOUL.md와 USER.md가 채워집니다.

  1. 봇 화면(TUI)에 자기소개 메시지를 보냅니다.
    • 참고: 화자는 Cursor로 미리 써 둔 글(경력, 사업, 관심사 등)을 붙여넣었습니다. 글 원문은 화면 판독 불가.
    • 확인: 봇이 내용을 정리하고 "이제 내 이름을 정하자"는 식으로 되묻는다.
  2. 봇에게 정한 이름을 보냅니다.
    • 예: 화자는 시청자와 함께 고민한 끝에 "Honu"라는 이름을 붙였습니다.
    • 확인: 봇이 이름·이모지·성격 요약을 내놓고 soul 이야기로 넘어가자고 한다.
  3. 봇에게 기기 구성 설명(Mac mini 용도, 개인정보 원칙 등)을 보냅니다.
    • 확인: 봇이 "개인정보는 협상 불가, 나는 검색엔진이 아니라 두 번째 뇌" 같은 원칙으로 요약한다.
  4. Cursor에서 soul 규칙 문서를 다듬습니다.
    • 참고: 화자는 Pete Steinberger의 soul 게시물(짧게 말하기, 얼버무리지 않기, 아첨 금지 등)을 넣고 "욕설은 빼 달라"고 요청했습니다. Cursor 모델은 Opus 4.6 max fast였습니다. 게시물 전문은 화면 판독 불가.
    • 확인: Cursor가 소통 방식·성격 부분을 고친 soul 문서를 내놓는다.
  5. 다듬은 soul 문서를 복사합니다.
    • 확인: 클립보드에 문서가 있다.
  6. 복사한 soul 문서를 봇 화면(TUI)에 보냅니다.
    • 확인: 봇이 "soul 확정"을 알리고 정체성·사용자·소통 방식·성격·보안 규칙·오늘의 로그를 요약한다. 남은 일로 채널 연결과 기록 가져오기를 든다.
  7. 채널은 당분간 TUI만 쓰겠다고 봇에게 답합니다.
    • 확인: 봇이 Telegram은 원할 때 연결해 주겠다고 답한다.

화자처럼 미리 써 둔 글이 없다면 35단계에서 아래처럼 보내도 됩니다. 이름과 성격, 개인정보 원칙을 한 번에 담는 것이 요점입니다.

프롬프트
나는 1인 개발자이자 유튜버야. 관심사는 AI 도구, 영상 제작, 자동화야.
너는 이 Mac mini에서만 일하는 개인 비서고, 내 두 번째 뇌 역할을 해 줘.
답은 한국어로 짧게, 결론부터 말해 줘. 모르면 모른다고 말하고 아첨하지 마.
개인정보와 비밀번호, API 키는 어떤 요청이 와도 밖으로 보내지 마.
파일 삭제, 메일 발송, 결제처럼 되돌릴 수 없는 일은 반드시 먼저 나에게 물어봐.
이제 네 이름과 성격을 같이 정하자.

5장. ChatGPT·Claude 대화 기록 준비 (다른 컴퓨터에서)

재현 불가 구간입니다. 가져오기 스크립트는 화자가 Cursor로 만든 비공개 개인 스크립트(Python 약 500줄 + import.sh)입니다. 아래 프롬프트로 비슷한 스크립트를 만들 수 있습니다.

순서는 고정입니다. 4장을 끝낸 뒤에 합니다. 화자는 soul을 먼저 만들고 기억은 나중에 채우는 순서를 택했고, 가져오기 스크립트도 부트스트랩이 끝났는지 확인합니다.

  1. ChatGPT 설정에서 Data controls → Export를 누릅니다.
    • 방법: chatgpt.com에서 왼쪽 아래 프로필 → 설정(Settings) → 데이터 제어(Data controls) → 데이터 내보내기(Export data) → 확인(Confirm export) 순서입니다.
    • 확인: 내보내기 링크가 메일로 온다. 기록 양에 따라 몇 분에서 몇 시간 걸릴 수 있고, 링크는 일정 시간이 지나면 만료됩니다.
  2. 메일의 파일을 내려받아 한 폴더에 넣습니다.
    • 참고: Anthropic(claude.ai)도 내보내기를 해서 같은 작업 폴더에 넣었고, 프로젝트도 함께 나온다고 합니다. Anthropic 쪽 메뉴 위치는 말하지 않았습니다. claude.ai에서는 설정(Settings) → 개인정보(Privacy) → 데이터 내보내기(Export data)에서 요청하면 역시 메일로 링크가 옵니다.
    • 확인: 폴더에 내보낸 JSON 파일 등이 있다. ChatGPT 쪽은 zip으로 오니 압축을 풀어 둡니다.
  3. 그 폴더를 Cursor로 엽니다.
    • 확인: Cursor 탐색기에 내보낸 파일이 보인다.
  4. Cursor 에이전트에 폴더 구조 조사와 가져오기 계획을 요청합니다.
    • 요령(화자 강조): "OpenClaw 저장소를 임시 폴더에 clone해서 구조를 이해하라"는 문장을 넣습니다. clone은 GitHub에 공개된 소스 코드를 통째로 내려받는 것입니다. 프롬프트 전문은 화면 판독 불가.
    • 확인: Cursor가 폴더 구조, 대화 수, 메모리 수 등을 보고하고 계획 문서를 만든다.
  5. 봇(TUI)에게 "Cursor에 넘길 수 있게 네 워크스페이스 폴더 구조를 마크다운으로 정리해 달라"고 보냅니다.
    • 주의: 화자는 이전 내용을 실수로 한 번 더 붙여넣었다가 다시 붙여넣었습니다.
    • 확인: 봇이 가져올 위치와 권장 폴더 구조가 담긴 마크다운을 준다.
  6. 봇의 답과 함께 "계획을 검토·수정해 달라"는 요청을 Cursor 새 에이전트 창에 보냅니다.
    • 참고: "Mac mini는 다른 기기라 압축해서 옮겨야 한다"는 점도 함께 적었습니다.
    • 확인: Cursor가 수정안을 낸다. 가져온 기록은 memory/imports/chatgpt·memory/imports/claude에 두고(봇 자신의 메모와 구분), 색인은 memory 아래에 두고(그래야 메모리 검색에 잡힘), 압축, 전송, 풀기, 설치 흐름을 추가하는 내용이다.
  7. Cursor에 스크립트 생성(build)을 실행시킵니다.
    • 확인: 내보내기 Python 스크립트, 설치 스크립트(import.sh), README가 만들어지고 실행된다. 화자 기준 파일 1,291개 패키지가 나왔다. 설치 스크립트는 기존 SOUL.md·AGENTS.md를 건드리지 않고 파일을 추가만 한다고 화자가 읽어 준다.
  8. 패키지 폴더를 tar 파일 하나로 압축합니다.
    • 참고: Cursor가 "AirDrop은 파일 여러 개보다 하나가 낫다"며 권했습니다.
    • 주의: tar 명령 원문은 화면 판독 불가. 일반적인 형식은 아래와 같습니다. 폴더 이름은 내 것으로 바꿉니다.
    • 확인: tar 파일이 생긴다(화자 기준 약 520KB).
프롬프트
tar -czf openclaw-import.tar.gz openclaw-import

45~48단계를 한 번에 맡기고 싶다면, Cursor나 Claude Code 같은 코딩 에이전트에 아래처럼 요청해 볼 수 있습니다. 화자가 강조한 "저장소를 clone해서 구조를 이해하라"와 "추가만 하라"를 모두 넣었습니다.

프롬프트
이 폴더에는 ChatGPT와 Claude에서 내보낸 대화 기록이 있어.
1. OpenClaw GitHub 저장소를 임시 폴더에 clone해서 워크스페이스와 memory 폴더 구조를 먼저 이해해 줘.
2. 대화 기록을 대화 하나당 마크다운 파일 하나로 바꾸고, 날짜와 제목을 파일 앞머리에 넣어 줘.
3. 결과는 memory/imports/chatgpt 와 memory/imports/claude 아래에 두는 구조로 만들어 줘.
4. 다른 Mac으로 옮겨 실행할 import.sh 를 만들어 줘. 이 스크립트는 파일을 추가만 하고 SOUL.md, USER.md, AGENTS.md 는 절대 건드리지 마.
5. 실행 전에 워크스페이스가 있는지, SOUL.md 와 USER.md 가 있는지 확인하게 해 줘.
6. 전체를 tar 파일 하나로 묶는 명령까지 알려 줘.

6장. Mac mini로 옮겨서 기록 가져오기

재현 불가 구간입니다. 5장에서 만든 화자의 개인 스크립트를 실행하는 단계입니다. 내 스크립트를 만들었다면 같은 흐름으로 진행하면 됩니다.

  1. 작업한 컴퓨터의 Finder 네트워크 항목에서 Mac mini에 접속합니다.
    • 참고: "등록된 사용자"로 접속했고, 비밀번호는 키체인에서 찾아 저장했습니다. Mac mini 쪽에서 시스템 설정 → 일반 → 공유 → 파일 공유가 켜져 있어야 이렇게 접속됩니다. AirDrop으로 보내도 됩니다.
    • 확인: Mac mini의 폴더가 Finder에 보인다.
  2. tar 파일을 Mac mini의 Downloads 폴더에 복사합니다.
    • 확인: Mac mini Downloads에 tar 파일이 있다.
  3. Mac mini의 Finder에서 tar 파일을 더블클릭해 압축을 풉니다.
    • 시도했다가 되돌림: 화자는 처음에 원격 연결을 거쳐 노트북(작업 컴퓨터) 쪽에서 풀려다 오래 걸려 취소했습니다. 그다음 Mac mini에서 직접 풀었습니다. 터미널이라면 tar -xzf 파일이름.tar.gz로 풉니다.
    • 확인: Downloads에 가져오기 폴더가 생긴다.
  4. Mac mini 터미널에서 Downloads로 이동합니다.
프롬프트
cd ~/Downloads
  • 확인: 오류 없이 프롬프트가 돌아온다. 54. 현재 위치를 확인합니다.
프롬프트
pwd
  • 확인: 결과가 Downloads 경로다. 55. 압축을 푼 폴더로 이동합니다.
    • 참고: 자막은 "cd open claw import"입니다. 실제 폴더 이름은 화면 판독 불가. ls로 폴더 이름을 먼저 보고 cd 폴더이름으로 들어갑니다.
    • 주의: 화자는 폴더 안으로 들어가지 않고 실행하려다 다시 이동했습니다. 터미널 접근 허용 팝업이 떠서 Allow를 눌렀습니다.
    • 확인: ls 하면 설치 스크립트가 보인다. 56. 설치 스크립트에 실행 권한을 줍니다.
프롬프트
chmod +x import.sh
  • 참고: 파일 이름은 발화 "import.sh" 기준입니다. chmod +x는 파일을 실행할 수 있게 표시하는 명령입니다.
  • 확인: 오류 메시지 없이 프롬프트가 돌아온다. 57. 실행 전에 스크립트 내용을 읽어 봅니다.
프롬프트
cat import.sh
  • 확인: "추가만 한다(purely additive)", "워크스페이스가 있는지 확인한다" 같은 내용이 보인다. 남이 만든 스크립트라면 이 단계를 절대 건너뛰지 않습니다. 58. 스크립트를 실행합니다.
프롬프트
./import.sh
  • 확인: 파일이 복사되며 "Import complete"가 뜬다.
  • 시도했다가 되돌림: 화자의 첫 실행은 "soul을 먼저 만들어야 한다, BOOTSTRAP 파일이 아직 있으니 부트스트랩을 끝내라"는 메시지로 멈췄습니다. Cursor는 BOOTSTRAP.md를 지우라고 권했지만, 화자는 "그냥 둬도 되지 않냐"고 되묻고 지우지 않았습니다. 대신 스크립트가 SOUL.md·USER.md가 있는지 확인하도록 Cursor로 고쳤고, 고친 스크립트를 Mac mini Downloads에 다시 복사(덮어쓰기)한 뒤 56단계와 58단계를 다시 했습니다.
  • 주의: 완료 뒤 "API 키가 필요하다"는 경고가 나옵니다. 임베딩 제공자(Google, OpenAI, Voyage) 키가 없어 색인 재구성이 실패한 겁니다. 7장에서 해결합니다.

7장. 오픈클로 메모리 검색(로컬 임베딩) 켜기

  1. 스크립트 출력 결과와 함께 "색인이 어떻게 동작하느냐"는 질문을 봇(TUI)에 보냅니다.
    • 확인: 봇이 "워크스페이스의 MD 파일을 의미 기반으로 검색한다(memory search). 지금은 임베딩 제공자가 없어 단순 텍스트 검색(grep)으로 대신한다"고 설명한다.
  2. 봇에게 어떤 임베딩 제공자가 좋은지 묻습니다.
    • 확인: 봇이 로컬 임베딩(provider local, node-llama-cpp, GGUF 모델, API 키 불필요)을 권한다. node-llama-cpp는 내 Mac에서 작은 AI 모델을 돌리는 도구이고, GGUF는 그 모델 파일 형식입니다.
    • 참고: 봇은 Gemini를 무료 대안으로 들었습니다. 웹 검색은 네트워크 접근이라 "에어갭 원칙"(외부 네트워크와 떨어뜨려 두는 원칙)과 부딪친다는 지적도 봇이 했습니다. 화자가 쓰고 싶다던 Exa 웹 검색은 연결하지 않았습니다.
  3. 메모리 검색을 켜는 설정 명령을 실행합니다.
프롬프트
openclaw config set memory search enabled true
  • 주의: 발화를 그대로 받아쓴 명령입니다. 실제 설정 키 표기(띄어쓰기·대소문자)는 화면 판독 불가라, 이대로 입력하면 안 될 수 있습니다. 정확한 키 이름은 openclaw config --help나 공식 문서의 memory 항목에서 확인합니다.
  • 이어서: 화자는 곧바로 제공자를 local로 지정하는 설정도 실행했습니다("config set local"). 전체 명령은 화면 판독 불가.
  • 확인: "Restart gateway to apply"(적용하려면 게이트웨이를 재시작하라) 안내가 나온다. 62. 게이트웨이를 재시작합니다.
프롬프트
openclaw gateway restart
  • 확인: 재시작 완료 메시지가 나온다.
  • 시도했다가 되돌림: 원래 쓰던 터미널 창에서는 openclaw 명령이 먹지 않았습니다. 설치 직후라 셸이 설정을 다시 읽지 않았기 때문이라고 화자는 설명하고, 63단계처럼 새 창으로 옮겼습니다. 63. 새 터미널 창을 엽니다.
    • 확인: 빈 터미널 창이 뜬다. 64. 봇 화면(TUI)을 다시 엽니다.
프롬프트
openclaw tui
  • 대안: 셸 설정 파일을 source로 다시 읽어도 된다고 화자는 말합니다. 파일 이름은 말하지 않았지만, macOS 기본 셸(zsh)이라면 source ~/.zshrc입니다.
  • 확인: 봇이 "로컬 임베딩 활성화, 임베딩 작성 중"이라고 답한다.
  • 주의: 화자의 경우 잠시 뒤 봇이 "색인 0개"라고 보고했습니다. 봇 안내대로 별도 터미널에서 62단계(openclaw gateway restart)를 한 번 더 실행하자 "메모리 검색 완전 작동, 3년치 기록을 API 호출 없이 로컬 검색"이라는 답이 왔습니다.

61단계 명령 표기가 확실하지 않으니, 봇에게 직접 맡기는 방법도 있습니다. 화자도 60단계에서 봇에게 먼저 물어본 뒤 설정했습니다.

프롬프트
메모리 검색을 로컬 임베딩으로 켜고 싶어. API 키 없이 이 Mac 안에서만 돌아가게 해 줘.
정확한 openclaw config 명령을 먼저 보여 주고, 내가 확인하면 실행해 줘.
끝나면 게이트웨이를 재시작하고, 색인된 파일 수를 알려 줘.

메모리 검색이 제대로 되는지 확인하려면 가져온 기록에만 있는 내용을 이름을 빼고 물어봅니다. 화자가 팟캐스트 이름을 말하지 않고 "최근 팟캐스트에서 뭘 이야기했지?"라고 물은 것과 같은 방식입니다.

프롬프트
작년에 내가 ChatGPT랑 가장 많이 이야기한 주제 세 가지를 날짜와 함께 알려 줘. 어느 파일에서 찾았는지도 적어 줘.

오픈클로 메모리 설정 확인하기

  • sudo !! 뒤 설치 스크립트가 끝나고 온보딩이 시작됐다.
  • 봇이 TUI에서 첫 인사를 했다.
  • (선택) ~/.openclaw 폴더를 Finder로 열어 구조를 확인했다.
  • 봇 이름과 soul이 확정됐다("soul 확정" 메시지).
  • 가져오기 스크립트가 "Import complete"를 출력했다.
  • 봇이 "메모리 검색 완전 작동"이라고 답했다.
  • 이름을 말하지 않고 과거 일을 물었을 때 봇이 기록에서 찾아 답한다. 화자는 팟캐스트 주제로 시험했다.

방송에서 막힌 곳과 푼 방법

  • Homebrew 설치 실패("stdin is not TTY … need sudo access"): 관리자 권한이 필요합니다. 관리자 계정에서 sudo !!를 실행하고 비밀번호를 넣었습니다.
  • setup token에 줄바꿈이 섞임: 출력된 토큰이 여러 줄로 나뉘었습니다. 텍스트 편집기에서 한 줄로 정리한 뒤 붙여넣었습니다.
  • 가져오기 스크립트가 "BOOTSTRAP 파일이 있으니 부트스트랩을 끝내라"며 멈춤: 스크립트가 BOOTSTRAP 파일 유무로 완료 여부를 판단했기 때문입니다. 파일을 지우지 않고, SOUL.md·USER.md가 있는지 보도록 스크립트를 고쳐 다시 돌렸습니다.
  • "Import complete" 뒤 API 키 경고: 임베딩 제공자 키가 없어서입니다. 로컬 임베딩을 켜고 게이트웨이를 재시작했습니다.
  • 설정 후 openclaw 명령이 안 먹음: 설치 직후 셸이 설정을 다시 읽지 않아서입니다. 새 터미널 창에서 openclaw tui를 열었습니다. source ~/.zshrc로도 풀립니다.
  • 봇이 "색인 0개"라고 보고: 봇 설명으로는 재시작이 아직 색인 생성을 일으키지 않았다고 합니다. 별도 터미널에서 openclaw gateway restart를 다시 실행했습니다.
  • /compact 뒤에도 컨텍스트 표시가 그대로: 원인은 말하지 않았고, /new로 새 세션을 시작하니 0으로 돌아왔습니다. /compact는 지금 대화를 요약해 줄이는 명령이고, /new는 새 대화를 여는 명령입니다. 29단계에서 session memory hook을 켰다면 /new 때 이전 세션이 메모리에 저장됩니다.

가져오기 스크립트는 "추가만 하고 봇이 만든 파일(SOUL.md·AGENTS.md)은 건드리지 않는다"고 화자가 읽어 줬고, 가져온 기록은 memory/imports/ 아래에 따로 모입니다.

화자가 나중으로 미룬 일

방송은 메모리 검색이 돌아가는 데서 끝납니다. 아래는 화자가 "나중에" 하겠다고 한 것들입니다. 3년치 개인 대화가 들어간 봇이니, 따라 한다면 첫 두 가지는 미루지 않는 편이 좋습니다.

  • 보안 강화(hardening, loopback, sandbox). loopback은 게이트웨이를 내 기기 안(127.0.0.1)에서만 접속되게 묶는 설정입니다.
  • Tailscale 원격 접속. 지금은 노트북에서 macOS 화면 공유로 들어갑니다.
  • Telegram 채널 연결과 Exa 웹 검색 연결.
  • 봇에게 Cursor·Droid·Claude Code 같은 코딩 에이전트 붙이기. 봇에게 "준비해 주겠다"고만 했습니다.
  • 가져오기 스크립트 오픈소스 공개.

자주 묻는 질문

오픈클로에 ChatGPT 대화 기록을 넣을 수 있나요?

넣을 수 있지만 기본 기능으로 한 번에 되지는 않습니다. 화자는 ChatGPT와 Claude에서 내보낸 기록을 Cursor로 만든 개인 스크립트로 마크다운 파일로 바꿔 memory/imports/ 아래에 넣었습니다. 이 스크립트는 방송 시점에 공개되지 않아, 글에 적은 프롬프트로 비슷한 스크립트를 직접 만들어야 합니다.

ChatGPT 대화 기록은 어디서 내보내나요?

chatgpt.com의 설정 → 데이터 제어(Data controls) → 데이터 내보내기(Export data)에서 요청하면 다운로드 링크가 메일로 옵니다. Claude는 claude.ai 설정의 개인정보(Privacy) 메뉴에서 같은 방식으로 내보낼 수 있습니다.

오픈클로 메모리 검색에 API 키가 꼭 필요한가요?

아닙니다. 임베딩 제공자로 Google, OpenAI, Voyage를 쓰면 키가 필요하지만, 로컬 임베딩(provider local)을 켜면 키 없이 Mac 안에서 색인과 검색이 돌아갑니다. 화자도 로컬 임베딩을 켜고 게이트웨이를 재시작해 3년치 기록을 API 호출 없이 검색했습니다.

메모리 색인이 0개로 나오면 어떻게 하나요?

화자도 같은 상황을 겪었습니다. 별도 터미널에서 openclaw gateway restart를 한 번 더 실행하자 색인이 만들어졌습니다. 가져온 파일이 memory 폴더 아래에 있어야 메모리 검색에 잡힌다는 점도 확인합니다.

Claude 구독으로 오픈클로를 돌려도 되나요?

화자는 구독의 setup token을 썼지만, 과하게 쓰면 봇 트래픽으로 보여 계정이 차단되거나 약관 위반이 될 수 있다고 경고했습니다. 가이드는 API 키를 권하고, API 키를 쓴다면 콘솔에서 지출 한도를 꼭 걸라고 합니다. 약관은 Anthropic 공식 안내에서 직접 확인해야 합니다.

이 글은 Ray Fernando의 4시간 4분 50초 라이브 방송을 영어 자동 자막 기준으로 정리했고 화면은 대조하지 못했습니다. 고유명사와 명령어 표기가 정확하지 않을 수 있으며, ~/.openclaw는 자막("user ty open claw" 등)을 문맥으로 교정한 추정입니다. 데이터 내보내기 메뉴, 가져오기 스크립트용 프롬프트, tar 명령, claude setup-token, source ~/.zshrc, 로컬 네트워크 권한 위치는 방송에 없어 편집자가 보충했습니다.

출처: youtu.be/…

원본 영상 보러가기 ↗