- Stevens는 가족의 일정·날씨·우편물·리마인더를 매일 아침 Telegram으로 정리해 주는 개인 AI 비서이며, 복잡한 에이전트나 RAG 없이도 실용적인 도움을 줌
- 핵심은 Val.town 위에 둔 단일 SQLite 메모리 테이블과 여러 크론 작업으로, 관련 메모리를 LLM 문맥으로 넘겨 브리핑을 생성함
- 날짜가 있는 메모리와 날짜 없는 배경 정보를 나눠 저장하고, 아침 브리핑에는 앞으로 일주일간의 항목과 항상 필요한 배경 메모리를 함께 넣음
- Google Calendar, 날씨 API, USPS Informed Delivery OCR, Telegram·이메일 입력, 주간 fun facts가 같은 로그 테이블을 채우는 가져오기 작업으로 연결됨
- 개인 AI 도구는 앱마다 흩어진 생활 맥락을 공유 메모리로 모을 때 더 유용해지며, 정보 규모가 작고 시간 경계가 명확하면 단순한 구조로도 시작 가능함
Stevens가 하는 일
- Stevens는 Ishiguro 소설 Remains of the Day의 집사 이름에서 따온 가족용 AI 비서임
- 매일 아침 Telegram 브리핑으로 하루에 필요한 정보를 한 번에 전달함
- 그날의 캘린더 일정
- 날씨 예보 미리보기
- 받을 예정인 우편물이나 택배
- 사용자가 추적해 달라고 맡긴 리마인더
- 브리핑은 형식적인 집사 말투로 작성됨
- 일일 브리핑 외에도 사용자는 Stevens와 직접 상호작용할 수 있음
- 중요한 정보가 담긴 이메일을 전달함
- Telegram 채팅으로 리마인더를 남김
- Telegram에서 질문함
- 단순한 구조지만, 가족용 개인 비서로는 Siri보다 이미 더 유용하다고 평가됨
Val.town 위에 올린 단순한 구조
- 전체 시스템은 Val.town에 호스팅됨
- Val.town은 이 프로젝트에 필요한 기본 기능을 한곳에서 제공함
- SQLite 저장소
- HTTP 요청 처리
- 예약된 크론 작업
- 수신·발신 이메일
- Stevens는 아침 브리핑에 넣을 내용을 “집사의 노트북”에 해당하는 로그에서 읽음
- 이 노트북은 Stevens가 알고 있는 모든 것을 담은 기록이며, 관리자 화면에서 내용을 확인할 수 있음
단일 메모리 테이블로 브리핑 만들기
- 노트북의 실제 구현은 몇 개 컬럼을 가진 단일 SQLite 테이블임
- 각 로그 항목에는 텍스트가 들어가며, 필요하면 관련될 것으로 예상되는 날짜가 붙음
- 날짜 없는 항목은 일반 배경 정보로 취급되어 항상 문맥에 포함됨
- 초기 설정 때 Telegram을 통한 intake interview로 배경 메모리를 만들 수 있음
- 아침 브리핑 생성 흐름은 단순함
- 크론 작업이 실행됨
- Claude API를 호출해 업데이트 문장을 작성함
- 결과 텍스트를 Telegram 스레드로 보냄
- 모델에 전달되는 문맥은 두 종류로 구성됨
- 앞으로 일주일간의 날짜 있는 로그 항목
- 날짜 없는 배경 항목
같은 로그를 채우는 가져오기 작업들
- 여러 데이터 가져오기 작업이 같은 SQLite 테이블을 채움
- 현재 로그 항목의 출처는 다음과 같음
- Google Calendar API에서 매시간 데이터를 가져옴
- 날씨 API로 지역 날씨 예보를 매시간 확인함
- USPS Informed Delivery 이메일을 전달하면 Stevens가 Claude로 우편물 스캔 이미지를 OCR함
- 수신 Telegram 메시지와 이메일이 로그 항목을 만들 수 있음
- 매주 “fun facts”가 로그에 추가되어 이후 일일 업데이트에 색을 더함
- 새 가져오기 작업을 붙이기 쉬운 구조임
- 가져오기 작업은 로그의 메모리를 추가하거나 수정하는 어떤 프로세스든 될 수 있음
- 메모리 내용은 나중에 LLM에 다시 전달될 임의의 텍스트이면 충분함
단순한 메모리로 시작할 수 있는 이유
- 개인 AI 도구는 다른 정보원에서 가져온 더 넓은 맥락에 접근할 때 유용해짐
- 캘린더와 날씨 예보를 알면 단순 챗봇도 더 실용적인 비서가 됨
- ChatGPT는 최근 과거 대화 메모리를 추가했지만, 그 사일로 안에 저장되지 않은 정보도 많음
- AI 기반 개인 소프트웨어의 장기 형태는 더 많은 앱 사일로가 아니라, 삶에 대한 공유 맥락 풀 위에서 동작하는 작은 도구들에 가까움
- Stevens의 사용 사례는 제한적이고 정보가 본질적으로 시간 경계를 가지므로, LLM에 넘길 관련 문맥을 찾기 쉬움
- 최신 모델의 긴 컨텍스트 윈도도 단순한 접근을 가능하게 함
- 정보 규모가 커지면 RAG나 더 복잡한 메모리 접근이 필요할 수 있지만, 처음부터 복잡하게 시작할 필요는 없음
말투와 UI를 바꾸기 쉬운 개인 프로젝트
- Stevens는 처음에는 Apple이나 Google 제품 같은 건조한 말투였음
- 형식적인 집사 말투로 바꾸는 일은 프롬프트 몇 줄 수정으로 끝남
- 관리자 대시보드도 비디오 게임처럼 느껴지게 만들었음
- 이미지 에셋은 ChatGPT에서 생성했고, UI는 Cursor와 Claude 3.7 Sonnet으로 바이브 코딩함
- 작은 추가 노력만으로 프로젝트를 더 재미있게 만들 수 있었음
직접 살펴보는 방법
- Stevens는 바로 실행 가능한 제품이 아니라 개인 프로젝트임
- 코드는 stevensDemo에서 확인하고 포크할 수 있음
- 단일 메모리 테이블과 확장 가능한 크론 작업 묶음이라는 패턴은 다른 유용한 개인 도구에도 적용 가능함
- 코드를 편집할 때는 원하는 AI 에디터와 Val Town CLI를 사용해 로컬 파일시스템과 동기화하는 방식이 권장됨