OpenClaw 구축·운영 (10/26) — 해부: 단일 사용자 에이전트 구성 요소
부제: 마이그레이션 전 인벤토리 작성법 — 에이전트·cron·LaunchAgent·스크립트·스킬·메모리 계층
핵심 요약
- OpenClaw는 다수의 에이전트, 스케줄러/데몬, 운영 스크립트, 스킬로 구성된 단일 사용자 에이전트 시스템이다.
- 메모리는 4-tier(Identity / Curated / Project / Episode) 구조이며 oMLX
bge-m3-mlx-fp16임베딩에 hybrid 0.7/0.3 + MMR + 30일 temporal decay로 검색한다. - 이 글은 마이그레이션/재설계 전에 필요한 인벤토리 작성 프레임을 여러 레이어(에이전트 / 스케줄러 / OS 데몬 / 스크립트 군 / 스킬 / 메모리 계층 / 라우팅)로 정리하는 기술 문서다.
인벤토리가 먼저인 이유
에이전트 시스템을 다른 프레임워크로 옮기거나 재설계할 때 첫 작업은 코드 이식이 아니라 구성 요소 인벤토리다. 이유는 세 가지다.
- 리듬은 코드가 아니라 스케줄러에 박혀 있다. cron/LaunchAgent 목록을 누락하면 "왜 이 스크립트가 존재하는지"가 사라진다.
- 페르소나 수 ≠ 에이전트 수. 에이전트 개수는 모델 라우팅과 도구 권한의 분할일 뿐, 대화 창구의 수와 다르다. 이 구분이 없으면 타겟 시스템에서 profile 수를 과대 설계한다.
- 메모리 계층은 이식 단위가 다르다. Identity/Curated/Project/Episode는 각각 다른 저장소·주기·합의 규칙을 가진다. 계층별로 매핑해야 손실이 없다.
아래는 OpenClaw를 예시로 한 인벤토리 구조다. 동일 프레임을 임의의 멀티 에이전트 시스템에 적용할 수 있다.
1. 에이전트 레이어 — 대화 창구 1개 + 백엔드 작업자 N개
대화 인터페이스는 mir 하나이며 나머지는 전부 백엔드 작업자다. 에이전트 분할 축은 두 가지: 모델 등급과 도구 권한.
대표적인 분할 예시:
| 역할군 | 모델 등급 예시 | 담당 |
|---|---|---|
| 대화 창구 | 고판단 LLM (high) | 유일한 대화 창구, 라우팅 |
| 시스템 모니터 | 로컬 oMLX | 시스템 상태 |
| 리서치 | 경량 LLM | 웹 리서치, AutoSearch Deep |
| 글쓰기 | 중급 LLM | 콘텐츠 작성 |
| 코딩/오케스트레이션 | 코드 특화 LLM | CLI, subagent/skill 팩토리 |
| 메모리 의미 판단 | 중급 LLM | Reflect 판단 |
| 메모리 I/O | 로컬 oMLX | bank/ 파일 I/O |
| 외부 통합 | 경량 LLM | Google Workspace, 메신저 송신 등 |
(외 다수의 백엔드 작업자)
작동 원리: 사용자에게 노출되는 페르소나는 단일(mir)이고, 뒤쪽에서 모델 등급·비용·지연 특성에 따라 작업이 분배된다. 로컬 임베딩·파일 I/O에는 oMLX/Gemma를, 의미 판단에는 gemini-2.5-flash를, 고판단 작업에는 gpt-5.4 high를 할당하는 구조다.
2. 스케줄러 레이어 — cron이 만드는 시스템 리듬
대표적인 시간 해상도별 작업 예시:
| 주기 | 작업 유형 |
|---|---|
| 일간 (새벽) | Reflect — 의미 통합 |
| 시간당 | memory micro-cycle — 단기 메모리 정리 |
| 일간 (밤) | self-review — 행동 점검, daily-summary |
| 분 단위 폴링 | 외부 소스 스캔 (리서치, 커뮤니티) |
| 월간 | 장기 메모리 리뷰 |
(외 다수의 스케줄 작업)
작동 원리: cron은 단순 스케줄러가 아니라 에이전트의 사고 리듬을 결정한다. 새벽 Reflect(의미 통합), 시간당 micro-cycle(단기 메모리 정리), 밤 self-review(행동 점검), 월간 review(장기 패턴 압축)가 각기 다른 시간 해상도로 돌면서 메모리 휘발을 막는다. 이식 시에는 "어느 시스템이 이 4단계 주기를 보존할 수 있는가"가 판단 기준이 된다.
3. OS 데몬 레이어 — macOS LaunchAgent
OS 레벨에서 상주해야 하는 프로세스:
ai.openclaw.gateway— Gateway 데몬 (포트 18789)ai.openclaw.update-check— 자동 업데이트com.openclaw.omlx/omlx-proxy— 로컬 임베딩 모델 서버com.openclaw.daily-audit— 05:00 일일 감사 Phase A~Ecom.claude-agent.watchdog/autostart— 세션 워치독
한계: LaunchAgent는 macOS 전용이므로 Linux/컨테이너 타겟으로 옮길 경우 systemd 유닛 또는 supervisord로 1:1 치환이 필요하다. 포트 바인딩(18789)과 오디트 Phase A~E는 OS 비의존 레이어로 분리 가능.
4. 스크립트 레이어 — 다수의 운영 스크립트, 기능별 군 분류
스크립트는 기능별로 다음 군에 속한다.
- 메모리 파이프라인: retain-extract/merge, recall-tree/match, confidence-decay, topics-validate/expand, user-pattern-stage.
- Heartbeat: heartbeat-router/update/tick/health, proactive-exception-alerts.
- Self-Review: self-review-prescan/apply/fix, skill-candidate-stage.
- Daily Audit: docs-snapshot, release-check, agent-linter, config-drift, cron-analytics, session-audit.
- 외부 통합:
scrape.py(Scrapling + playwright),gws-wrapper,omlx-serve.
적용 가능 패턴: 메모리 파이프라인의 confidence-decay와 topics-validate/expand는 장기 메모리 시스템 일반에 이식 가능한 독립 유닛이다. Heartbeat 군은 분산 에이전트 헬스 모니터링의 표준형에 가깝다.
5. 스킬 레이어 — 범용 + 전용
- 범용 워크플로우:
brainstorming,writing-plans,verification,deep-interview,code-review,testing,git-commit,project-doctor,self-audit. - OpenClaw 전용:
oc-config,oc-agent,oc-channel,oc-skill,oc-memory,oc-doctor,oc-deploy,oc-backup.
분리 기준: 범용 스킬은 프레임워크 독립적이라 이식 시 원문 유지 가능. 전용 스킬은 해당 시스템의 설정 스키마·배포 경로에 묶여 있어 타겟 시스템의 동등 개념으로 재작성이 필요하다.
6. 메모리 v0.6 — 4-tier 계층
- Identity:
MEMORY.md(~600 토큰). 정체성·고정 선호. 변경 빈도 최저. - Curated:
bank/(world / experience / opinions / patterns / topics / index). 합성된 지식. Reflect가 갱신. - Project:
bank/entities/. 엔티티별 축적. - Episode:
memory/(일일 로그). 원천 이벤트.
검색 메커니즘: oMLX bge-m3-mlx-fp16 임베딩 + hybrid 0.7/0.3 (vector / keyword) + MMR + 30일 temporal decay. Reflect는 6 Phase 파이프라인이고, U-tag(사용자 관련 판단)는 관찰 → 가설 → 검증의 3-phase dialectic으로 처리된다.
이식 관점: 4-tier는 저장 주기와 변경 권한이 계층마다 다르다. Identity는 수동, Curated는 Reflect(의미 판단 에이전트), Project는 혼합, Episode는 자동 append. 타겟 시스템이 이 권한 분할을 지원하지 않으면 일관성이 깨진다.
7. 채널 라우팅 레이어
- Discord 주채널 1개에 Reflect 결과와 self-review 결과가 모두 흐른다.
- Telegram Forum 다중 토픽: General / Server / Bot / Research / Memory / Heartbeat.
설계 원리: Discord는 단일 스트림(고밀도 판단 결과), Telegram은 다중 토픽(분류된 실시간 이벤트)으로 역할을 분리한다. 이벤트 빈도와 독해 비용의 trade-off가 기준.
인벤토리에서 드러나는 두 가지 구조적 사실
평면도를 완성하면 두 가지가 구조적으로 드러난다.
첫째, 메모리·heartbeat·self-review는 코드가 아니라 리듬이다. cron/LaunchAgent가 곧 시스템의 사고 주기이며, 옮길 그릇이 이 주기를 보존할 수 있는지가 이식 가능성의 핵심 판단 기준이다.
둘째, 에이전트 수는 페르소나 수가 아니다. 다수의 에이전트 중 대화 창구는 1개이며 나머지는 모델 등급·도구 권한의 축으로 분할된 작업자다. 따라서 타겟 시스템에서는 더 적은 profile로도 동등한 기능을 구성할 수 있다.
적용 가능 범위와 열린 질문
적용 가능 범위: - 멀티 에이전트 시스템을 타 프레임워크로 이식/재설계하는 경우. - 메모리 계층이 2-tier 이상으로 분리된 시스템의 감사/이식 체크리스트. - cron/LaunchAgent 기반 장기 실행 에이전트의 리듬 보존 설계.
열린 질문: - 4-tier 메모리에서 Curated와 Project 경계는 어디가 최적인가. 엔티티 중심 시스템에서는 두 계층이 병합 가능성이 있다. - 단일 페르소나 + N 작업자 모델이 지속 가능한 상한은 어디인가. 에이전트 수가 늘수록 라우팅 판단 비용이 O(N) 이상으로 증가할 가능성. - cron 기반 리듬을 이벤트 기반으로 치환할 때 의미 통합(Reflect) 품질이 유지되는가.
다음 글에서는 위 레이어들을 Hermes 내장 기능과 1:1로 매핑한 표를 제시한다. 분류는 4 카테고리: 대체 / 부분 대체 / 보존 이식 / 폐기.
시리즈 전체 안내: 시리즈 목차
댓글
댓글 쓰기