Build My Own API / 나만의 API 만들기
개인용 API를 만든다고 하면 보통 메모, 할 일, 일정 같은 데이터를 저장하고 조회하는 CRUD API를 떠올리게 된다. 하지만 조금 다르게 생각해보면, 개인용 API는 단순한 데이터 저장소를 넘어 개인 운영체제처럼 설계할 수 있다.
여기서 말하는 개인 운영체제 API는 내 생각, 할 일, 일정, 자료를 하나의 구조 안에서 연결하고, 필요할 때 자동화하거나 다른 도구와 연동할 수 있는 개인용 시스템이다.
이 구조의 핵심 리소스는 크게 네 가지다.
memories
memories는 내가 기억해야 할 생각, 기록, 결정, 선호, 회고, 지식이 쌓이는 공간이다.
단순한 메모와 비슷해 보일 수 있지만, 역할은 조금 다르다. 메모가 “적어두는 것”에 가깝다면, memory는 나중에 다시 찾고 연결하기 위한 의미 단위에 가깝다.
예를 들어 이런 내용이 하나의 memory가 될 수 있다.
개인용 API는 단순 CRUD API가 아니라 개인 운영체제 API처럼 설계한다.memory가 중요한 이유는 다른 리소스와 연결될 때 더 분명해진다. 어떤 생각에서 실행할 일이 생기면 task로 이어질 수 있고, 참고 자료를 읽고 얻은 핵심 내용은 memory로 저장될 수 있다.
즉, memories는 개인 운영체제 API에서 의미를 담당하는 레이어다.
tasks
tasks는 실행해야 할 일을 관리하는 리소스다.
할 일은 단순히 제목과 완료 여부만으로 끝나지 않는다. 어떤 생각에서 나온 일인지, 어떤 자료를 참고해야 하는지, 언제까지 해야 하는지 같은 맥락을 함께 가질 수 있다.
예를 들어 이런 흐름이 가능하다.
memory: 개인 운영체제 API 구조를 정리해야 한다.
task: 개인 운영체제 API의 핵심 리소스 정리하기이렇게 하면 “이 할 일을 왜 만들었는지”를 나중에 추적할 수 있다.
그런데 여기서 한 가지 더 생각해볼 지점이 있다. task가 반드시 사람이 직접 해야 하는 일일 필요는 없다는 점이다.
기존의 할 일 관리 도구는 보통 사람이 해야 할 일을 정리하는 방식에 가깝다. 하지만 개인 운영체제 API에서는 task를 조금 더 넓게 볼 수 있다. 어떤 task는 내가 직접 처리해야 하는 일이고, 어떤 task는 AI Agent에게 위임할 수 있는 일이다.
예를 들어 “블로그 글 작성하기”라는 task가 있다고 하자. 이 task 전체를 내가 직접 처리할 수도 있지만, 일부는 Agent에게 명령할 수 있다.
task: 개인 운영체제 API에 대한 블로그 글 작성하기
command: 관련 memories를 찾아 글의 개요를 만들어줘.
command: 개요를 바탕으로 개발 블로그 스타일의 초안을 작성해줘.
command: 최종 글에 어울리는 slug를 추천해줘.이 관점에서 task는 “해야 할 목표”에 가깝고, command는 “Agent에게 내리는 구체적인 지시”에 가깝다.
task = 달성해야 할 일
command = Agent에게 시키는 일
run = Agent가 실제로 실행한 기록따라서 AI Agent를 개인 운영체제 API 안에서 다루려면 tasks만으로는 부족할 수 있다. tasks는 목표를 표현하고, 그 아래에 Agent에게 위임할 수 있는 commands를 두는 방식이 더 자연스럽다. 그리고 command가 실제로 실행된 결과는 runs로 기록할 수 있다.
예를 들어 다음과 같은 구조가 가능하다.
memory → task → command → run → resource → memory하나의 memory에서 task가 생기고, task를 처리하기 위해 Agent에게 command를 내린다. Agent가 command를 실행하면 run이 남고, 실행 결과는 resource로 저장된다. 그리고 그 결과에서 다시 의미 있는 내용이 추출되면 memory로 남길 수 있다.
이렇게 하면 task는 단순 체크리스트가 아니라, 사람과 Agent가 함께 실행하는 작업의 중심이 된다.
task는 memory, resource, event와 연결될 때 더 유용해진다. memory에서 task가 파생될 수 있고, resource를 기반으로 task가 만들어질 수 있으며, task에 시간이 배정되면 event로 이어질 수 있다. 여기에 command와 run을 추가하면, task는 Agent에게 위임 가능한 실행 단위로도 확장된다.
즉, tasks는 개인 운영체제 API에서 실행을 담당하는 레이어다.
events
events는 시간이 정해진 일을 다룬다.
회의, 약속, 집중 시간, 마감 일정처럼 특정 시간에 발생하는 항목이 여기에 해당한다.
tasks와 events는 비슷해 보이지만 성격이 다르다.
task = 해야 할 일
event = 시간이 정해진 일예를 들어 “블로그 글 작성하기”는 task이고, “토요일 오후 2시에 블로그 글 작성하기”는 event에 가깝다.
task가 실행해야 할 행동이라면, event는 그 행동이나 사건이 실제 시간 위에 배치된 형태다. 어떤 task는 event로 연결될 수 있고, 반대로 어떤 event가 끝난 뒤에는 회의록이나 회고 형태의 memory가 남을 수 있다.
AI Agent 관점에서도 event는 의미가 있다. 특정 시간에 Agent가 실행해야 하는 command를 예약하거나, 주기적으로 실행되는 작업을 event와 연결할 수 있다. 예를 들어 매주 일요일 저녁에 한 주 동안의 memories와 tasks를 요약하도록 Agent에게 명령할 수 있다.
즉, events는 개인 운영체제 API에서 시간을 담당하는 레이어다.
resources
resources는 외부에서 들어온 자료를 다룬다.
파일, 링크, 문서, 이미지, 이메일, 이슈처럼 내가 참고하거나 활용해야 하는 원본 데이터가 여기에 해당한다.
resource는 그대로 저장해두는 것에서 끝나지 않는다. 어떤 문서를 읽고 핵심 내용을 memory로 남길 수 있고, 그 안에서 실행해야 할 일이 발견되면 task로 이어질 수 있다.
resource: 업로드한 문서
memory: 문서에서 추출한 핵심 내용
task: 문서를 바탕으로 해야 할 일이 관점에서 resource는 원본이고, memory는 그 원본에서 추출한 의미다.
AI Agent가 실행한 결과물도 resource가 될 수 있다. 예를 들어 Agent가 작성한 블로그 초안, 요약 문서, 분석 결과, 코드 조각, 이메일 초안 등은 모두 resource로 저장할 수 있다. 그리고 그 결과물에서 다시 중요한 내용이 추출되면 memory로 남길 수 있다.
즉, resources는 개인 운영체제 API에서 외부 자료와 원본 데이터, 그리고 실행 결과물을 담당하는 레이어다.
네 가지 리소스의 관계
이 구조를 간단히 정리하면 다음과 같다.
memories = 내가 알고 있는 것
tasks = 내가 해야 하는 것
events = 시간이 정해진 것
resources = 외부에서 가져온 것여기에 AI Agent 관점을 더하면 다음처럼 확장할 수 있다.
commands = Agent에게 시키는 것
runs = Agent가 실행한 기록하지만 commands와 runs는 완전히 별개의 핵심 리소스라기보다는, tasks를 Agent 실행까지 확장하기 위한 보조 구조에 가깝다. 핵심 흐름은 여전히 memories, tasks, events, resources를 중심으로 움직인다.
중요한 점은 이 리소스들이 따로 존재하는 것이 아니라 서로 연결된다는 점이다.
예를 들어 문서를 업로드하면 그것은 resource가 된다. 그 문서에서 중요한 내용을 뽑아 memory로 저장할 수 있다. memory에서 실행할 일이 생기면 task가 된다. task를 직접 처리할 수도 있고, Agent에게 command로 위임할 수도 있다. Agent가 command를 실행하면 run이 남고, 결과물은 다시 resource로 저장된다. task에 시간이 배정되면 event가 된다. event가 끝난 뒤에는 결과나 회고가 다시 memory로 남을 수 있다.
resource → memory → task → command → run → resource → memory이 흐름이 만들어지면 개인 API는 단순한 저장소가 아니라 생각과 행동, 그리고 Agent 실행을 연결하는 시스템이 된다.
memories는 의미를 저장하고,tasks는 실행 목표를 만들고,events는 시간을 배정하고,resources는 외부 자료와 결과물을 연결한다.
그리고 필요한 경우,
commands는 Agent에게 지시를 내리고,runs는 Agent의 실행 과정을 기록한다.
결국 개인 운영체제 API의 핵심은 데이터를 많이 저장하는 것이 아니라, 데이터 사이의 관계를 잘 만드는 것이다. 내가 예전에 어떤 생각을 했는지, 그 생각에서 어떤 할 일이 나왔는지, 관련 자료는 어디에 있는지, 언제 실행할 것인지, 그리고 어떤 부분을 Agent에게 위임했는지를 하나의 흐름으로 다룰 수 있다면, 그것은 단순한 개인용 API를 넘어 내 데이터와 행동을 연결하는 개인용 실행 시스템이 된다.