AI 에이전트Hermes 기반 개인 지식 비서 구축
- #Hermes
- #LLM Wiki
- #Graph RAG
- #Personal Agent
시작은 LLM Wiki였습니다. Andrej Karpathy가 소개한 LLM Wiki는 자료를 AI가 읽고 근거를 따라 활용할 수 있는 지식으로 정리해 두자는 개념입니다. 이걸 보고 제 프로젝트 경험과 의사결정도 그렇게 정리해 보고 싶었습니다.
프로젝트 이름과 기술 목록만으로는 경험을 충분히 설명하기 어려웠습니다. 무엇을 만들었는지뿐 아니라 왜 그렇게 판단했는지, 제 역할은 어디까지였는지, 그 설명을 뒷받침하는 기록이 무엇인지도 필요했어요. 그래서 이 내용을 서로 연결해 두고, 다음 질문에서도 다시 찾아 쓸 수 있는 개인 지식 저장소를 만들기 시작했습니다.
그 저장소를 운영하려고 도입한 도구가 Hermes Agent입니다. 언어 모델이 파일을 읽고 도구를 실행하며 일할 수 있게 해 주는 AI 에이전트 도구입니다. 이 저장소를 다루는 제 개인 에이전트 루나도 Hermes 위에 만들었습니다. 별도의 모델을 학습시킨 것은 아닙니다. 기존 모델이 제 자료와 작업 규칙을 참고하도록 환경을 만든 것이죠.
문제
경험 원문·위키·관계 그래프를 담은 개인 지식 저장소가 Claude Code 명령, tmux 실행 구성, Codex 검토처럼 여러 CLI 호출에 기대어 운영되고 있었다. 실행 경로가 여러 도구에 흩어져 있어, 역할과 작업 절차를 한곳에서 관리하기 어려웠다.
결정
지식과 규약, 역할별 권한은 그대로 두고 실행 경로만 Hermes로 옮겼다. 역할은 책임과 권한으로 나누고, 하위 에이전트 위임은 분리할 수 있는 작업에만 쓰기로 했다.
결과
전환 뒤 그래프 검증에서 무결성 오류는 없었지만, 낮은 신뢰도 관계에 대한 경고는 남았다. 위임이 할당량 제한으로 실패했을 때는 직접 수행 경로로 돌아갔다.
지식은 두고 실행 도구 교체
Hermes를 도입하기 전에도 저장소에는 경험 원문, 위키, 그리고 관계와 근거를 담은 그래프가 있었습니다. 실행은 AI 코딩 도구인 Claude Code의 명령과 tmux(터미널 여러 개를 띄워 두는 도구) 실행 구성으로 했고, 검토 과정에는 OpenAI의 코딩 모델 Codex를 연결해 두었습니다.
Hermes로 전환하면서 이 자료와 규칙을 처음부터 다시 만들지는 않았습니다. 바꾼 것은 지식을 운영하는 실행 경로입니다. 여러 CLI 호출에 의존하던 흐름을 Hermes가 직접 수행하도록 옮겼고, 검토도 Hermes 안에서 별도 관점으로 하도록 정리했습니다.
기존 실행
Claude Code 명령과 tmux 실행 구성, Codex 검토 경로에 역할과 작업 절차를 연결했습니다.
Hermes 도입
Hermes가 역할 문서와 워크플로우를 읽고 직접 수행합니다. 독립적인 검토나 탐색이 필요할 때만 하위 에이전트에 위임합니다.
저장소의 지식 규약과 역할별 권한은 유지했습니다. 도구를 바꾸면서 자료의 의미까지 바뀌면, 전환이 제대로 됐는지 확인하기도 어려워지기 때문입니다.
한 에이전트 안의 역할 분리
실행 도구를 하나로 모았다고 모든 작업을 같은 권한으로 처리하게 하지는 않았습니다. 원본을 보존하는 일, 원본에서 주장을 뽑아내는 일, 그 주장을 검증하는 일은 서로 구분해야 했습니다.
원본 보존
자료와 출처 유지후보 추출
대상·관계·주장 생성근거 검토
원문과 의미 대조정리·색인
검색 가능한 지식으로 반영
원본 보존 역할은 내용을 임의로 해석해 바꾸지 않습니다. 추출 역할은 근거가 약한 내용을 확정하지 않고 후보로 남깁니다. 검토 역할은 원문 인용과 관계를 확인합니다. 검색 역할은 읽기 전용으로 자료를 찾아 답합니다.
이 역할들이 모두 별도 프로세스로 동시에 도는 것은 아닙니다. 기본은 Hermes가 필요한 역할 문서와 절차를 읽고 순서대로 처리하는 방식입니다. 역할은 실행 개수라기보다 책임과 권한의 구분에 가까웠습니다.
의미가 비슷한 지식을 합치거나 서로 충돌하는 주장을 정리하는 일은 제 판단으로 남겼습니다. 에이전트가 파일을 고칠 수 있다고 해서 경험의 의미까지 정하게 하지는 않으려 했습니다.
자연어 요청과 작업 절차 연결
Hermes를 도입하면서 저장소용 스킬과, 자연어 요청을 작업 절차에 대응시키는 표를 만들었습니다. 스킬은 이 저장소에서 어떤 문서를 읽고 어떤 도구를 써야 하는지 알려 주는 작업 지침입니다.
예를 들어 ‘현재 지식 저장소 상태를 점검해’라는 요청은 점검 절차와 검증 도구로 연결했습니다. ‘이 경험을 근거와 함께 설명해’라는 요청은 검색 절차로 연결했고요. 질문할 때마다 운영 규칙 전체를 다시 설명하는 대신, 요청에 맞는 절차를 읽게 한 것입니다.
검색도 관련 문서 하나를 찾는 데서 끝내지 않았습니다. 검색 결과를 출발점으로 삼아 연결된 관계와 주장, 근거까지 확인하게 했습니다. 프로젝트에 참여했다는 사실과 그 안의 특정 작업을 직접 했다는 주장은 구분되어야 하니까요.
이런 관계 구조가 제가 만들려던 ‘나의 온톨로지’입니다. 온톨로지는 어떤 대상들을 어떻게 나누고 서로 어떻게 연결할지 정한 구조를 말합니다. 저를 복제하는 모델이 아니라, 경험·역할·판단·근거를 나누고 잇는 방식을 정한 것입니다. Hermes에는 그 구조를 읽고 정해진 절차로 활용하는 일을 맡겼습니다.
병렬 실행 전의 기본 경로
독립적인 자료 탐색이나 검토는 하위 에이전트에 위임하도록 구성했습니다. 하위 에이전트는 메인 에이전트가 일부 작업을 따로 맡기는 별도의 에이전트입니다. 하지만 모든 요청을 병렬로 처리하는 것을 기본값으로 두지는 않았습니다. 작은 검색이나 반영 작업은 Hermes가 직접 순서대로 하고, 서로 분리할 수 있는 작업에만 위임을 쓰도록 했습니다.
같은 그래프 파일을 여러 에이전트가 동시에 수정하는 것은 금지했습니다. 하위 에이전트가 완료했다고 보고하는 것만으로 작업을 끝내지도 않았습니다. 메인 에이전트가 산출물을 다시 읽고 확인하게 했습니다.
초기에는 GPT 계열 메인 모델과 Gemini Flash 계열 위임 모델을 함께 쓰는 구성도 연결했습니다. 병렬 스모크 테스트까지는 완료했습니다. 하지만 이후 그래프 정리 작업에서는 무료 할당량 제한으로 위임이 실패해 직접 수행 경로로 돌아갔습니다. 위임이 된다는 것과 계속 쓸 수 있다는 것은 다른 문제였어요. 직접 수행 경로를 기본으로 남겨 둔 이유가 실제 작업에서 드러났습니다.
필요한 만큼만 보여 주는 자료
알고리즘 스터디 플랫폼 알고수를 운영하면서, AI 에이전트에게 정보를 계속 쌓아 주는 것이 오히려 판단을 흐릴 수 있다는 것을 경험했습니다. 그래서 개인 지식 저장소도 더 많이 기억시키는 방향으로만 가고 싶지는 않았습니다.
초기 활용처 중 하나였던 자기소개서 작성에서는 전체 그래프를 매번 쓰지 않도록 했습니다. 정보를 우선 참고할 것, 필요할 때 찾을 것, 보관 위주로 둘 것, 쓰지 않을 것으로 나눠 front / on_demand / archive / off로 표시했습니다.
경험을 지우는 방식은 아닙니다. 원본을 보존하는 문제와, 지금 쓰는 글에 어떤 정보를 보여 줄지 정하는 문제를 분리한 것입니다. 지식을 쌓는 일뿐 아니라 요약하고, 합치고, 덜 보여 주는 일도 운영의 일부로 보았습니다.
도입하며 확인한 것
전환 뒤에는 실행 문서만 바꾸고 끝내지 않았습니다. 역할 문서와 작업 절차에 이전 도구를 전제로 한 설명이 남아 있는지 대조했고, 그래프 검증과 검색 스모크 테스트도 했습니다.
당시 최종 점검에서 그래프 무결성 오류는 없었습니다. 다만 낮은 신뢰도의 관계에 대한 경고는 남아 있었습니다. 구조 검증을 통과했다고 모든 지식이 사실로 확정되는 것은 아닙니다. 파일과 참조가 정상인지 보는 검사와, 경험의 의미를 검토하는 판단은 따로 필요했습니다.
Hermes를 처음 도입하며 한 일은 완성된 개인 비서를 만드는 것보다, 제 기록을 다룰 수 있는 실행 환경을 마련하는 일에 가까웠습니다. 기존 지식을 보존한 채 실행 경로를 옮기고, 역할과 검증 절차를 연결하고, 제가 결정해야 할 부분은 남겨 두었습니다.
LLM Wiki에서 시작한 관심은 그렇게 ‘자료를 정리하는 방법’에서 ‘에이전트가 내 자료를 어떻게 다뤄야 하는가’로 이어졌습니다. 루나의 출발점도 여기에 있었습니다.