Skip to main content

Command Palette

Search for a command to run...

OpenClaw 파헤치기

Updated
2 min read
OpenClaw 파헤치기

서론

OpenClaw가 어떻게 작동하는지 작성하기 전에 잡답을 먼저 작성해보려고한다.

AI 비서는 예전부터 많이 생각하던 주제였다.
나는 평소 귀찮음이 많고, 관심 없는 것에는 신경을 잘 쓰지 않는다. 그래서 통학길이나 출퇴근길에 AI가 내 일정을 알고, 집을 나서기 전에 "오늘 비 오니까 우산 챙기세요" 정도만 알려줘도 충분히 편리할 거라고 생각했다.
그래서 윈도우 10에 코타나가 탑제 된다고 할때도 상당히 기대를 했었고 한국어를 지원하지 않아서 실망했었다.

그런 나에게 OpenClaw로 부터 시작한 Claw 열풍은 흥미로웠고 육아에 여유가 생겨서 OpenClaw에 대해서 알아보았다. 그러나 권한문제나 복잡한 설정등 불만족하는 사용자들도 많아 보였다

찾아보니 많은 사람들이 개인비서를 만들고 있었고 나도 대AI시대에 AI를 이용해서 나에게 맞는 Claw, 개인비서를 만들기위해 OpenClaw의 구현을 살펴보았고 언제 작업을 진행할지 몰라서 정리해두려고 한다.

설계 구조

extensions

외부(discord, whatsapp, gmail등)에 있는 현실과 연결하는 역할

  1. 외부로부터 메시지를 받아서 정규화 후 Gateway로 전달

  2. Gateway로 부터 메시지를 받아서 외부로 전달

scheduler

일정시간마다 작동하여서 사용자에게 진짜 비서처럼 보이게 한다(gateway 호출)

  • cron: 예약된 시각에 실행되며 정해진 일정 수행

  • heartbeat: 일정주기마다 실행되며 사람처럼 리얼타임으로 생각하는것처럼 느껴지게함

task

작업관리 실제 작업은 agent를 호출한다
task가 있기때문에 단순히 A(여행 계획), B(숙소예약), C(교통편예약)가 실행되는게 아닌 A를 위해 B, C가 실행된다.

단순히 LLM에 컨텍스트 전체를 넣어서 작동하지 않는 이유는 비용(토큰)이나 context window제한 때문으로 추측된다

gateway

가장 많은 기능을 담당한다(다른 기능 오케스트레이션 및 메모리 관리)

  1. extenstions, cron 로부터 특정 포멧의 메시지를 받으면 agent나 task로 전달

  2. agent로부터 응답을 받으면 대상 extension으로 전달

  3. 메시지를 받을때마다 사용자와 맵핑해서 히스토리로 저장

  4. 저장된 히스토리를 압축(compaction), 삭제(pruning), 메모리(memory)로 이동 이 행위들은 규칙기반 혹은 LLM호출해서 판단

agent

사용 가능한 LLM을 확인한 후, 해당 LLM의 API 포맷에 맞게 요청을 구성해서 호출한다.
역할은 프롬프트(.md)를 통해 결정된다.

  • LLM 호출과 tool 실행을 반복하면서 최종 응답을 만들고, 특정 포맷으로 gateway에 전달한다.

메모리 구조

  • 일일 노트(memory/YYYY-MM-DD.md)
    오늘과 어제는 자동 로드
    그날 있었던 일에 대한 로그

  • 꿈일기(DREAMS.md)
    중간계층, 파일자체는 사람검토용으로 존재

  • 장기기억(MEMORY.md)
    중요한 내용이 저장되는 장기기억

마무리

OpenClaw를 봤을때 뭔가 작동을 사람에게 설명하고 공유하려는 느낌을 받았다. (많은 md 파일 노)
그리고 오픈소스 프로젝트여서 그런지 다양한 플랫폼과 연결할 수 있고 기능도 많았다.

직접 만든다면 나에게 필요한 기능만 구현하고, 채널이나 플러그인을 좀 더 명확하게 분리해서 코드베이스와 구조를 가독성 있게 만들고 싶다

마지막으로 가장중요한건 Docs에 잘 정리 되어있었다...
문서의 초반부, 일부만 봤을때는 시작가이드, 혹은 사용자를 위한가이드(단순 .md 작성)에 대해서만 있는줄알았는데 철학이나 아키텍쳐에 대한 부분도 있었다.
미리 알았다면 이 글을 안 썼을지도 모르겠다...

More from this blog

[잡담] vive coding

서론 퇴근후 혹은 주말에 사이드 프로젝트를 진행해보려고 했지만 육아로 인해서 집중 할 수 있는 시간이 없어서 AI를 통해서 프로젝트를 진행하고 나는 목표를 제시하고 진행 사항만 받으려고한다 이전에도 개발시에 AI를 이용해서 보일러플레이트를 구현하거나 반복작업이나 해야하는게 명확한 작업, 기존에 코드를 참고만해서 진행하는 작업들을 할때 AI를 이용했으나 조금

Mar 15, 20261 min read
[잡담] vive coding

토큰 효율성(Token Efficiency)

토큰 효율성이란? 토큰 효율성은 AI 코딩 도구를 활용할 때 최소한의 컨텍스트로 최대한 정확한 결과를 얻기 위한 원칙AI가 코드를 이해하고 수정하는 데 필요한 정보를 최적화하여 생산성을 향상가능 토큰 효율성이 필요한 이유 Context Window 한계 AI 모델은 한 번에 처리할 수 있는 토큰 수가 제한됨 (128K, 200K 등) 더 많은 파일을 읽을수록 중요한 정보가 희석됨 집중된 컨텍스트 = 더 정확한 이해 응답 속도 적은 토큰 = ...

Dec 3, 20253 min read
토큰 효율성(Token Efficiency)

[Claude Code: 기능] Plugin

탄생배경 Slash 커멘드, 서브 에이전트, MCP 서버, Hook 같은 확장기능을 팀원 혹은 커뮤니티와 공유하기 위해서 개발 왜 플러그인이 필요한가? npm이나 pip, brew처럼 패키지 관리자를 사용하듯이 확장기능을 사용할 수 있다 설치시 (기존) npm intstall 혹은 command.md, hook.md 파일 복사 → (플러그인 사용) /plugin install 로 플러그인 설치 삭제시 (기존) 설치된 command.md...

Nov 3, 20251 min read

[Claude Code: 기능] Agent Skills

탄생배경 실제 업무에서는 전문화된 지식과 팀, 조직별 맞춤 컨텍스트가 필요하게되어서 출시됨 Agent Skills은 Claude 에서도 사용가능하지만 여기서는 Cladue Code에 대해서만 작성 특징 점진적 공개(Progressive disclosure) 메타데이터 (항상 로드됨) → 지침(본문, 트리거될 때 로드됨) → 리소스 및 코드 (외부 파일, 필요에 따라 로드됨) 워크플로우 패턴 e.g) X한경우 Y를 수정 후 처음부터 다시 ...

Nov 2, 20252 min read

gglee.dev

8 posts