atom은 제텔카스텐에 착안하여 만든 AI 에이전트를 위한 지식 베이스입니다. atom에서 모든 지식은 카드로 표현됩니다. 각 카드는 50자 이내의 제목과 마크다운 본문, 태그, 다른 카드에 대한 참조를 포함하며, 섹션 제목 역할을 하는 구조 카드와 메모를 적는 지식 카드로 구분됩니다. 카드는 트리 형태로 구성되며, 심링크를 통해 트리의 여러 곳에 삽입할 수 있습니다. atom 서버는 에이전트의 요청에 따라 필요한 하위 트리를 마크다운 문서 하나로 만들어 돌려줍니다. 사람도 웹 대시보드에서 내용을 확인하고 수정할 수 있지만, atom에서는 에이전트에게 제공되는 17개 MCP 도구와 REST API가 일급 시민입니다.
카드 한 장을 여러 폴더에 연결할 수 있는 바로가기 1 → N 원본 → 위치
지식 베이스를 관리하다 보면, 어떤 한 지식을 여러 곳에서 참고해야 하는 경우가 자주 발생합니다. 이럴 때, 카드를 복제하지 않고 심링크 노드를 생성하여 카드 한 장을 트리의 여러 위치에 삽입할 수 있습니다. 그림처럼 결제 재시도 카드의 키 보관 시간을 48시간으로 수정하면 설계 결정과 운영 인시던트, 레퍼런스 세 폴더에서 읽는 내용이 모두 변경됩니다.
서브 트리를 원하는 깊이까지 마크다운 문서 하나로 1회 도구 호출
서브트리 컴파일은 compile_subtree 도구로 선택한 노드부터 원하는 깊이까지의 하위 항목을 조합해 하나의 마크다운 문서로 만듭니다. 트리 계층에 따라 1단계부터 6단계까지 마크다운 제목 단계가 정해지고, 그림의 깊이 버튼을 누르면 사용자가 단계별 구성을 확인할 수 있습니다. 서브 트리는 매우 클 수 있기 때문에 에이전트는 제목과 글자 수만 추린 목차를 먼저 조회한 뒤 필요한 노드만 컴파일하거나, 글자 수 상한과 제외할 노드를 지정해 컨텍스트 창을 아낄 수 있습니다.
MCP를 통한 편집, 복잡한 작업도 batch_op 한 번으로 17 도구
에이전트는 같은 컴퓨터의 stdio나 API 키 헤더를 포함한 HTTP 요청으로 MCP 서버에 연결할 수 있습니다. 여러 건의 카드를 조작할 경우, 단일 편집 호출을 반복하는 것은 컨텍스트 낭비가 크기 때문에, atom은 한 번에 여러 편집을 처리할 수 있는 batch_op을 지원합니다. batch_op 도구는 카드 생성과 심링크 연결, 수정, 순서 변경, 삭제를 한 트랜잭션에서 처리하며, 하나라도 실패하면 전체 변경을 안전하게 되돌립니다.
카드 본문 전체를 대상으로, 범위를 하위 트리 하나로 한정할 수 있는 검색 BM25 순위 방식
에이전트는 search_cards 도구로 제목과 본문을 검색해 관련도 순으로 기본 20건까지 조회하며, 태그나 종류, 수정 시각을 조건으로 지정하고 결과마다 상위 제목 경로를 함께 받을 수 있습니다. 선택 기능으로 Jev와 같은 외부 판정 서비스를 연결하면 그림처럼 한 번에 후보 카드를 48장까지 질의와 대조해 0에서 1 사이 연관도 점수를 활용할 수 있습니다. OpenAI 키를 등록하면 카드 임베딩으로 비슷한 카드로도 검색을 확장할 수 있습니다.
처음엔 DB 서버 없이, 본격적으로 운영할 때는 PostgreSQL로 1 SQLite 파일
사용자는 Node.js 20.19 이상 또는 22.12 이상이 설치된 컴퓨터에서 별도 데이터베이스 서버나 로그인 설정 없이 SQLite 기반으로 서버와 대시보드를 바로 실행할 수 있습니다. 함께 제공되는 스크립트를 실행하면 데모 데이터가 생성되어 처음 기능을 확인할 때 활용할 수 있습니다. 본격적인 운영 환경이나 여러 에이전트가 동시에 검색하는 환경에서는 PostgreSQL을 사용할 수 있으며, 관리자는 대시보드 설정의 데이터베이스 탭에서 연결을 시험하고 기존 SQLite 데이터를 PostgreSQL로 이관할 수 있습니다.