← 목록으로인사이트

하네스가 실행하고, 옵시디언이 기억합니다

예전에 하네스 만드는 게 재밌다는 글을 쓴 적이 있어요. 그 하네스(S-skills)를 계속 다듬다가, 이번에 구조를 크게 개편했습니다. 한 줄로 요약하면 이렇습니다 — 하네스가 실행하고, 옵시디언이 기억합니다.

문제 — 세션은 휘발된다

하네스 자체는 잘 굴러갔어요. PM이 요구사항을 정리하고, Tech Lead가 전문 에이전트를 병렬로 디스패치하고, 독립 QA가 판정까지 내립니다. 그런데 세션이 끝나면 그 과정에서 쌓인 맥락 — 왜 이 설계를 골랐는지, 디자인에서 뭘 거부당했는지, QA가 뭘 지적했는지 — 이 전부 사라졌습니다. 다음 세션의 에이전트는 매번 백지에서 시작했어요. 아무리 실행 루프가 좋아도, 기억이 없으면 같은 실수를 반복합니다.

개편 — 읽고, 일하고, 남긴다

그래서 하네스와 옵시디언 볼트를 양방향으로 순환하게 묶었습니다. 작업 전에는 볼트에서 태스크 도메인의 축적된 지식을 먼저 읽고, 작업 후에는 보고서 정리본을 볼트에 남깁니다.

text
        ┌─ 읽기 (작업 전) ─ 도메인 지식 참조 → 산출물에 [OBSIDIAN: 경로]
하네스 ─┤
        └─ 쓰기 (작업 후) ─ 보고서 정리본 → 40_프로젝트/{프로젝트}/보고서/
하네스와 볼트의 양방향 순환

읽기는 역할마다 참조하는 폴더가 다릅니다. 라우팅·기술 스택 판단은 시스템 폴더의 기술 결정 가이드를, 기획은 기획 지식을, 디자인은 축적된 디자인 시스템 문서를, 구현은 설계 원칙과 해당 도메인 지식을 먼저 읽고 시작해요. 매 작업이 과거의 결정 위에서 출발합니다.

쓰기는 사용자가 읽는 보고서를 볼트에 그 자체로 읽히는 정리본으로 저장하는 겁니다. Tech Lead의 완료 보고, QA 판정, 주간 회고, 디버깅 조사 결과, 보안 감사 요약, 릴리즈 보고 — 전부요. 나중에 위키링크로 연결하고, 미래의 제가 같은 정신 모형을 다시 로드할 수 있게요.

설계하면서 정한 것들

  • MCP를 경유하지 않습니다 — 볼트 접근은 파일 도구(Read/Grep)로 직접 합니다. 서버 한 겹이 없으니 멈춤 없이 빠르고, 옵시디언이 결국 그냥 마크다운 폴더라는 점을 그대로 활용한 거예요.
  • 볼트가 없어도 정상 동작합니다 — 참조·저장만 건너뛰고 산출물에 '미수행:'으로 정직하게 기록합니다. 조용히 넘어가는 것과 안 했다고 말하는 건 다르니까요.
  • 쓰는 역할을 분리했습니다 — 보고서 저장은 각 스킬이 자동으로, 지식 문서를 직접 작성하는 건 obsidian-writer 스킬이 담당합니다. 읽기 → 보고서 쓰기 → 지식 쓰기가 순환하며 볼트가 점점 두꺼워집니다.

느낀 것

에이전트의 장기 기억이라고 하면 벡터 DB나 전용 메모리 스토어부터 떠올리기 쉬운데, 해보니 사람이 읽는 문서 그 자체가 꽤 훌륭한 기억 장치더라고요. 에이전트가 남긴 보고서를 제가 읽고, 제가 정리한 지식을 에이전트가 읽습니다. 사람과 에이전트가 같은 기억을 공유하는 셈이라, 어느 쪽이 봐도 맥락이 이어져요.

핵심 한 줄
세션은 휘발되지만 볼트는 남습니다. 실행 루프(하네스)와 장기 기억(볼트)을 분리하고 양방향으로 순환시키면, 하네스는 쓸수록 똑똑해집니다.

물론 아직 다듬을 게 많습니다. 어떤 지식을 몇 개나 읽게 할지, 보고서가 쌓이면 어떻게 압축할지 같은 문제들이 남아 있어요. 그래도 방향은 확실해진 것 같습니다. 진행하면서 또 기록할게요.

#하네스#옵시디언#장기기억#AI에이전트#S-skills
승주

AI 에이전트 개발 일기