missingus3r/friday-showcase
요약
Claude Code CLI와 Telegram을 활용하여 구축한 상시 가동형 개인용 AI 시스템인 'friday-showcase'를 소개합니다. 별도의 복잡한 오케스트레이션 프레임워크나 파인튜닝 없이, Claude Code의 네이티브 기능과 경량 Flask 메모리 서버만을 사용하여 자기 진화형 어시스턴트를 구현했습니다.
핵심 포인트
- Claude Code CLI를 핵심 런타임으로 사용하여 별도의 글루 코드나 복잡한 에이전트 인프라를 최소화함
- MCP(Model Context Protocol)와 셸 도구를 통해 외부 서비스 및 파일 시스템과 연동
- 경량 Flask 서버와 SQLite를 사용하여 대화 기록, 메모리, 엔티티를 관리하는 지속적 메모리 구현
- 모델 파인튜닝 없이도 일일 성찰 및 기술 습득 서브시스템을 통해 스스로 개선되는 자기 진화형 구조 채택
- 단일 구독 체제와 표준 OS 환경을 활용하여 시스템 복잡도와 비용 효율성을 극대화
Claude Code CLI ($100/month)와 Telegram만을 사용하여 구축한 상시 가동형 개인용 AI 시스템 — 커스텀 AI, 클라우드 VM, 파인튜닝(Fine-tuning) 없음.
라이브 페이지: missingus3r.github.io/friday-showcase
이것은 표준 Windows, Linux 또는 macOS 머신에서 24시간 7일 내내 실행되는 자기 진화형(Self-evolving) AI 어시스턴트입니다. Telegram을 통해 통신하며, 예약된 작업을 자율적으로 수행하고, 파일과 프로젝트를 관리하며, 세션 전반에 걸쳐 지속적인 메모리(Persistent memory)를 유지합니다. 또한, 이 시스템은 자신의 행동으로부터 학습합니다. 새로운 기술을 습득하고, 일일 성과를 되돌아보며, 반복된 수정을 통해 사용자의 선호도를 추론하고, 스스로 개선 사항을 제안합니다. 전체 시스템은 $100/month Max Plan의 Claude Code (Anthropic의 CLI 에이전트)를 기반으로 구동됩니다. 커스텀 AI 백엔드, 파인튜닝된 모델, 오케스트레이션 프레임워크(Orchestration framework)는 전혀 사용되지 않았습니다. 유일한 커스텀 코드는 지속적인 메모리를 위한 경량 Flask 서버와 자기 진화형 서브시스템(Subsystems)뿐입니다.
Claude Code가 중심에 위치하며, MCP (Model Context Protocol) 플러그인과 셸(Shell) 도구를 통해 외부 서비스에 연결됩니다. CLAUDE.md 파일은 시스템 프롬프트(System prompt) 역할을 하여 행동, 사용 가능한 도구, cron 스케줄을 정의합니다. 이 위에 기술 습득, 일일 성찰, 선호도 학습, 월드 모델링(World modeling), 자기 개선 제안이라는 일련의 자기 진화형 서브시스템이 동일한 메모리 서버에서 예약된 작업으로 실행되며, 모델 파인튜닝 없이도 통찰력을 어시스턴트의 행동에 다시 반영합니다.
사용자 (Telegram) ---> Claude Code (MCP 플러그인 포함)
|
|--> 메모리 API ---> SQLite (대화, 메모리, 임베딩)
...
OpenClaw, NemoClaw 및 기타 에이전트 프레임워크와 같은 프로젝트들은 인상적이지만, 커스텀 런타임(Runtimes), 오케스트레이션 코드, 배포 파이프라인, 그리고 종종 자체적인 API 비용과 같은 복잡한 계층을 추가합니다.
Claude Code는 이미 그 자체로 런타임(Runtime)입니다. Claude Code에는 네이티브 도구 사용(Native tool use), MCP 플러그인 지원, cron 스케줄링, 서브 에이전트 생성(Sub-agent spawning), 파일 I/O, git, 그리고 셸(Shell) 액세스가 내장되어 있습니다. LLM과 도구 사이에 별도의 글루 코드(Glue code)가 필요하지 않습니다. Claude Code가 이 모든 것을 네이티브하게 처리합니다.
철학은 다음과 같습니다: 단일 구독 체제를 유지하고, 제공업체의 서비스 약관(Terms of Service)을 준수하며, 외부 LLM API나 커스텀 에이전트 인프라를 덧붙이는 것을 피하는 것입니다. 하나의 플랜, 하나의 CLI, 하나의 모델 — 그리고 모델이 설계된 대로 작동하게 두는 것입니다.
| 구성 요소 | 기술 |
|---|---|
| 두뇌 (Brain) | Claude Code CLI (Opus 4.7, 1M 컨텍스트) |
| ... | |
| 대화, 기억, 그리고 엔티티(Entities)를 보여주는 D3.js 힘 지향 시각화(Force-directed visualization). 각 노드 유형은 고유한 색상을 가집니다. 드래그, 확대, 클릭을 통해 탐색할 수 있습니다. |
모든 시스템 구성 요소와 그 연결 관계를 보여주는 시각적 지도. 노드는 드래그가 가능하며 위치는 서버 측에 저장됩니다.
메모리 서버에는 저장된 모든 로그, 기억, 엔티티를 상호작용 가능한 그래프 노드로 렌더링하는 시각적 웹 엔드포인트(Web endpoint)가 포함되어 있습니다. 이 구현체는 Friday라고 불리지만, 시스템 이름은 무엇으로든 변경할 수 있습니다. 이름은 단지 CLAUDE.md 설정 내의 변수일 뿐입니다.
예약된 브리핑 (Scheduled briefings)— 날씨 (Open-Meteo API), 외환/암호화폐 (DolarAPI, ExchangeRate), AI 뉴스 (WebSearch), 영화 (YTS API)
자율 모니터링 (Autonomous monitoring)— HuggingFace API, 블로그 및 애그리게이터 (aggregators)를 스캔하여 60개 이상의 조직에서 새로운 AI 모델 출시를 감지
노트 작성 및 지식 관리 (Note-taking and knowledge management)— 링크, 텍스트 및 구조화된 데이터를 Notion (MCP) 및 로컬 마크다운 (markdown)에 저장
음성 메시지 (Voice messages)— 오디오를 수신하고 전사 (ElevenLabs Scribe STT), 합성된 음성으로 응답 (ElevenLabs TTS)
비디오 분석 (Video analysis)— 다운로드, 전사 (YouTube 자막 / ElevenLabs), 그리고 LLM (Groq / OpenRouter API)을 통한 구조화된 보고서 생성
이메일 처리 (Email handling)— 이메일 확인, 초안 작성, 전송 및 전달 (AgentMail MCP)
Git 작업 (Git operations)— 커밋 (commit), 푸시 (push), PR 생성, 리포지토리 (repositories) 관리 (GitHub API + git CLI)
웹 리서치 (Web research)— 검색, 가져오기, 요약 및 결과 보고 (WebSearch + WebFetch 도구)
자가 치유 크론 (Self-healing crons)— 자체 예약된 작업 (scheduled jobs)을 모니터링하고 만료된 작업을 재생성 (CronCreate/CronList 내장)
선제적 메시징 (Proactive messaging)— 어시스턴트가 먼저 연락을 취함: 가벼운 안부 인사, 사용자가 언급했지만 잊어버린 사항에 대한 알림, 보류 중인 작업에 대한 후속 조치 (follow-ups).
단순히 반응적인 것에 그치지 않고 — 기억과 문맥(context)을 기반으로 대화를 시작합니다.
기술 습득 (Skill acquisition) — 완료된 작업에서 재사용 가능한 패턴을 추출하고, 이를 트리거 패턴(trigger patterns)과 함께 기술(skills)로 저장하여 유사한 요청을 매번 더 빠르게 처리합니다.
일일 자기 성찰 (Daily self-reflection) — 매일 밤 크론(cron) 작업이 대화 로그를 검토하여 실수, 성공 사례, 새롭게 나타나는 패턴을 식별하고, 그 결론을 실행 가능한 통찰(actionable insights)로 저장합니다.
선호도 학습 (Preference learning) — 피드백 이력을 분석하여 반복된 수정 사항으로부터 규칙을 추론하고, 향후 이를 자동으로 적용합니다.
세계 모델링 (World modeling) — 사용자의 행동 모델(활동 패턴, 반복되는 주제, 이벤트 상관관계)을 신뢰도 점수(confidence scores) 및 만료일(expiration dates)과 함께 시간이 지남에 따라 구축합니다.
자기 개선 제안 (Self-improvement proposals) — 잠재적인 최적화 가능성을 감지하고 차이점(diffs)이 포함된 공식 제안서를 생성하며, 사용자의 명시적인 승인 없이는 절대로 변경 사항을 적용하지 않습니다.
메모리 API 상태 모니터링 (Memory API health monitoring) — 메모리 서버에 대해 주기적인 상태 점검(health checks)을 수행하며, 서버가 다운될 경우 자동으로 재시작하고 장애 발생 시 사용자에게 알림을 보냅니다.
시스템은 이를 유지하고 학습하게 만드는 18개의 자율적인 크론(cron) 작업(기존 10개 + v2 하네스(harness)에 의해 추가된 8개)을 실행합니다:
| # | 작업 (Job) | 일정 (Schedule) | 목적 (Purpose) |
|---|---|---|---|
| 1 | 이메일 확인 (Email check) | 매 1시간마다 | 받은 편지함의 새 이메일 확인, 있을 경우 알림 |
| ... | 매일 09:37 | 마감 기한이 3일 미만이거나 5일 이상 진전이 없는 목표에 플래그 표시 (v2 하네스 (v2 harness)) | |
| 12 | 기억 감쇠 (Memory decay) | 매주 (일요일) | 검증되지 않은 신념에 신뢰도 반감기 적용 (v2 하네스 (v2 harness)) |
| 13 | 일일 지표 (Daily metrics) | 매일 22:23 | 환각률 (hallucination rate), 보정 격차 (calibration gap) 등을 계산 (v2 하네스 (v2 harness)) |
| 14 | 예측 해결사 (Predictions resolver) | 매일 21:53 | due_at 시간이 지난 예측 종료 (v2 하네스 (v2 harness)) |
| 15 | 기술 승격 (Skill promotion) | 매일 02:37 | 가드레일 (guardrails)을 통해 초안(draft)→베타(beta)→안정(stable) 단계로 승격 (v2 하네스 (v2 harness)) |
| 16 | 실험 실행기 (Experiments runner) | 매 6시간마다 (:17) | /sandbox dry-run을 통해 실행 중인 A/B 실험을 구동하고, 최소 샘플 수(min_samples) 도달 시 자동 종료 (v2 하네스 (v2 harness)) |
| 17 | 월드 모델 성장기 (World model grower) | 매일 06:53 | 지난 24시간 동안 동일한 주제/엔티티/행동이 2회 이상 언급되면 감지하여, POST /worldmodel 실행 및 /entity 행 자동 삽입 (v2 하네스 (v2 harness)) |
| 18 | 자동 감사 (Auto-audit) | 하루 3회 (08:19, 14:19, 20:19) | 무결성 스캔: 비어 있는 성찰(reflections), 오래된 핵심 테이블(core tables), 역량 실패율(capabilities fail rate) 50% 초과, 예측 지연 여부 확인. 오류 발생 시 알림 (v2 하네스 (v2 harness)) |
하트비트(heartbeat) 및 브리핑(briefing) 크론(cron) 작업은 감시자(watchdogs) 역할을 합니다. 이들은 18개의 모든 작업이 활성화되어 있는지 확인하고, 누락된 작업이 있으면 다시 생성합니다. 대시보드의 **크론 탭 (Crons tab)**은 두 개의 열로 구성된 차이(diff)를 보여줍니다: 다음 실행까지 실시간 카운트다운이 표시되는 런타임 활성(runtime-active) 상태와 동기화 배지(sync badges)가 표시되는 디스크 저장된 프롬프트(persisted-on-disk prompts)입니다.
메모리 서버(v2.9.0+)는 HTTP를 통해 전체 DB 스냅샷을 제공하는
/backup/export
및
/backup/import
엔드포인트를 노출합니다. 권장 설정은 /backup/export를 드라이브나 클라우드 버킷으로 매일 밤 오프사이트 rsync를 예약하는 것입니다. 만약 머신이 고장 나면, POST /backup/import를 통해 새 설치 환경에 스냅샷을 업로드하고 재시작하면 Friday가 멈췄던 지점부터 다시 시작합니다. 대시보드 상단 바의 💾 백업 (Backup) 버튼을 누르면 브라우저에서 동일한 흐름이 실행됩니다.
내 인스턴스의 참조 스냅샷:
github.com/missingus3r/memory-graph.⚠️ 해당 저장소(repo)는 클론(clone)을 위한 템플릿이 아닙니다. 그곳의 코드는 이 저장소의 SETUP.md를 따를 때 Claude Code에 의해 자율적으로 생성됩니다. 모든 사용자는 결과적으로 약간씩 다른 버전을 갖게 됩니다. 자신만의 버전을 생성하려면 SETUP.md를 사용하세요. memory-graph 저장소는 스크린샷을 위한 소스 및 출력 결과가 어떻게 보이는지에 대한 참조용으로만 커밋되었습니다.
Claude Code는 대화 로그 기록, 장기 기억 (long-term memory), 엔티티 추적 (entity tracking), 키-값 저장소 (key-value storage), 그리고 벡터 임베딩 (vector embeddings)을 활용한 RAG를 처리하는 단일 Flask + SQLite 서버 파일을 생성합니다. 외부 벡터 데이터베이스 (external vector database)는 사용되지 않으며, 임베딩은 동일한 SQLite 파일 내에 BLOB 형태로 저장됩니다.
핵심 기능:
대화 로그 기록 (Conversation logging)— 모든 메시지는 타임스탬프, 역할 (role), 채널, 그리고 자동 분류된 중요도 점수 (0.0-1.0)와 함께 저장됩니다.
중요도 점수 산정 (Importance scoring)— 메시지는 데이터베이스에 저장된 동적 키워드-점수 쌍(hardcoded 방식 아님)을 사용하여 삽입 시점에 자동으로 분류됩니다. 키워드는 API (GET/POST /keywords)를 통해 추가, 업데이트 또는 삭제할 수 있으며, 히트 횟수(hit counts)가 자동으로 추적됩니다. 선호도 학습 크론 (preference learning cron)은 사용 패턴에 따라 시간이 지남에 따라 점수를 조정할 수 있습니다.
시맨틱 검색 (Semantic search)— 임베딩 벡터에 대한 코사인 유사도 (cosine similarity) 계산 (3072 차원)
하이브리드 검색 (Hybrid search)— FTS5와 시맨틱 검색을 상호 순위 융합 (Reciprocal Rank Fusion)을 통해 결합하며, 중요도에 따라 가중치가 부여됩니다.
주간 요약 (Weekly summarization)— 크론 (cron)이 오래된 로그를 주간 요약으로 압축합니다 (원본은 보존됨). 검색 결과는 관련 주간 요약 정보로 풍부해집니다.
엔티티 추적 (Entity tracking)— 인물, 기업, 도구, 개념
키-값 저장소 (Key-value store)— UI 상태를 위한 서버 측 지속성 (server-side persistence)
웹 시각화 (Web visualization) — 서버는 /graph 경로에서 다음 네 가지 탭을 가진 싱글 페이지 앱 (single-page app)을 호스팅합니다:
Graph (그래프) — 대화, 기억, 엔티티 (entities)를 상호작용 가능한 노드 (nodes)로 보여주는 D3.js 기반의 힘 지향 시각화 (force-directed visualization)
Logs (로그) — 접을 수 있는 날짜 그룹과 검색 기능이 포함된 연대기적 보기
Architecture (아키텍처) — 드래그 가능한 노드가 포함된 시스템 다이어그램 (노드 위치는 서버 측에 유지됨)
RAG — 하이브리드 검색 (hybrid search) 및 임베딩 통계 (embedding stats)를 제공하는 시맨틱 검색 (semantic search) 대시보드
전체 메모리 계층은 Claude Code에 의해 생성된 단일 Python 파일입니다. 벡터 데이터베이스 (vector database), Redis, Elasticsearch는 사용하지 않습니다. 오직 Flask + SQLite + 동일한 DB 파일 내의 임베딩 (embeddings)만 사용합니다.
이 어시스턴트는 단순히 지시를 따르는 것에 그치지 않고, 자신의 행동으로부터 학습하며 시간이 지남에 따라 개선됩니다.
이를 실현하기 위해 다섯 가지 시스템이 함께 작동합니다:
Skill Acquisition (기술 습득) — 어시스턴트가 새로운 유형의 작업을 해결할 때, 패턴을 추출하여 재사용 가능한 기술로 저장합니다. 다음에 유사한 요청이 들어오면 이미 처리 방법을 알고 있습니다. 기술은 트리거 패턴 (trigger patterns) 및 단계별 절차와 함께 저장되며, 사용 현황이 추적됩니다.
Daily Self-Reflection (일일 자기 성찰) — 매일 밤, 크론 잡 (cron job)이 그날의 대화 로그를 검토하며 질문합니다: 무엇이 잘 되었는가? 무엇이 잘못되었는가? 어떤 패턴이 나타나는가? 결론은 성찰 (reflections)로 저장되어 향후 행동에 피드백됩니다.
Preference Learning (선호도 학습) — 명시적인 수정에만 의존하는 대신, 시스템은 주기적으로 모든 과거 피드백을 분석하여 반복되는 패턴을 찾습니다. 사용자가 동일한 유형의 실수를 여러 번 수정하면, 시스템은 자동으로 규칙을 추론하고 향후 이를 적용합니다.
World Model (월드 모델) — 시스템은 시간이 지남에 따라 사용자의 행동에 대한 내부 모델을 구축합니다: 사용자가 가장 활발한 시간은 언제인지, 특정 요일에 어떤 주제가 반복되는지, 이벤트 사이에 어떤 상관관계가 있는지 등을 파악합니다. 이러한 통찰은 신뢰도 점수 (confidence scores) 및 만료일과 함께 저장됩니다.
Self-Improvement Proposals (자기 개선 제안) — 시스템이 더 나은 방식으로 작동할 수 있는 요소(키워드 목록, 크론 일정, 점수 함수 등)를 감지하면, 설명과 차이점 미리보기 (diff preview)가 포함된 공식 제안서를 생성합니다.
변경 사항은 절대 자동으로 적용되지 않습니다. 사용자는 Telegram을 통해 각 변경 사항을 승인하거나 거부합니다.
이 모든 과정은 추가적인 인프라 없이 동일한 메모리 서버(memory server)에서 실행됩니다. 데이터는 Memory Graph의 "Brain" 탭에서 확인할 수 있습니다. 이 대시보드에는 학습된 기술(learned skills), 활성 선호도(active preferences), 일일 회고(daily reflections), 세계 모델 통찰(world model insights), 그리고 대기 중인 제안(pending proposals)이 표시됩니다.
Brain 탭: 학습된 기술, 활성 선호도, 일일 회고, 세계 모델 통찰, 그리고 대기 중인 자기 개선 제안 — 이 모든 것이 동일한 메모리 서버에서 실행됩니다.
그 결과, 기본 모델이 변경되지 않더라도 매일 업무 능력이 향상되는 시스템이 구축됩니다. 이는 모델 자체가 바뀌는 것이 아니라, 모델 위에 기술, 선호도, 행동 패턴의 라이브러리를 지속적으로 쌓아나가기 때문입니다. 모델은 그대로 유지되지만, 어시스턴트는 진화합니다.
이 전체 시스템은 단 하나의 월 $100 Anthropic Max Plan으로 운영됩니다. 추론(inference)을 실행하기 위한 클라우드 VM도 필요 없습니다. LangChain, AutoGPT, 혹은 에이전트 프레임워크(agent framework)도 필요하지 않습니다. 그저 MCP 플러그인이 설치된 머신 위의 Claude Code만 있으면 됩니다.
핵심 통찰: Claude Code는 단순한 코딩 어시스턴트가 아니라, 범용 자율 에이전트 런타임(general-purpose autonomous agent runtime)입니다. 도구(tools), 지침(instructions), 그리고 일정(schedule)을 부여하면 24시간 내내 작동하는 완전한 어시스턴트가 됩니다. $100 플랜은 네이티브 도구 사용(native tool use)과 긴 컨텍스트(long context)를 갖춘 가장 유능한 AI 모델 중 하나에 대해 (거의) 무제한 접근을 제공합니다. 그것만으로도 충분합니다.
SETUP.md 파일을 다운로드하여 새로운 Claude Code 세션에 전달하세요. Claude Code가 Telegram 봇 설정, 메모리 서버, API 키, 그리고 CLAUDE.md 생성을 포함한 모든 단계를 자율적으로 안내할 것입니다. 당신은 그저 승인하고 따라가기만 하면 됩니다.
Claude Code를 열고 다음과 같이 입력하세요:
Read the file ~/Downloads/SETUP.md and follow every step in it to set up a 24/7 AI assistant on this machine. Ask me for confirmation before each major step.
끝입니다. Claude Code가 가이드를 읽고 전체 설정 과정을 자율적으로 안내합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기