프로젝트 소개
ohmyboring은 코딩 에이전트를 위한 자체 호스팅 개인 메모리 시스템입니다. Claude Code, Kimi Code 및 자격을 갖춘 Codex 세션에서 문제를 어떻게 해결했는지 캡처하고, 각 세션을 로컬 vault에 저장된 정제된 markdown 노트로 distill하며, "지난번에 이걸 어떻게 했지?"라고 물을 때 그 노트를 다시 가져옵니다. 모든 것이 로컬에서 실행됩니다. 임베딩과 합성은 로컬 LLM 서버(Ollama, LM Studio 또는 기타 OpenAI 호환 엔드포인트)를 통해 이루어지며, 외부 API나 토큰이 없습니다.
메모리가 들어오는 방식:
- 세션 종료 시 자동: SessionEnd 훅이 트랜스크립트를 distill하고 저장합니다. 짝을 이루는 UserPromptSubmit 훅은 최대 세 개의 관련 과거 스니펫을 새 프롬프트에 주입하며, 각 스니펫은 확정된 주장을 담고 있습니다.
- Codex 워커: Codex에는 SessionEnd 훅이 없으므로 호스트 워커가 20분마다 ~/.codex/sessions를 스캔하고 자격을 갖춘 트랜스크립트를 수집합니다.
- 백필: `make collect`는 과거 Claude Code 기록에서 비어 있는 vault를 시드합니다(최신순, 멱등, 실행당 N개). `make collect-kimi`는 Kimi Code에 대해 동일하게 수행합니다.
- 세션 중: `make distill-now`는 현재 트랜스크립트를 다시 distill하고, `make remember M="..."`는 명시적 노트를 저장합니다.
메모리는 markdown 우선입니다. vault/wiki에 있는 평범하고 사람이 읽을 수 있으며 git diff가 가능한 노트로, Obsidian vault로 직접 열어 그래프 뷰, 백링크, 태그 및 전체 텍스트 검색을 사용할 수 있습니다. 선택적 pgvector 가속기(BORING_VECTOR=on)는 규모가 필요할 때 유사도 검색과 GraphRAG를 추가합니다.
아키텍처는 빠르고 LLM이 필요 없는 읽기 경로(`make ask`, recall.py, MCP recall)와 게이트가 있는 쓰기 경로(distill-session.py가 로컬 LLM을 호출하고 결정론적 remember MCP 도구를 통해 기록)를 분리합니다. 중복 게이트는 중복 노트를 건너뛰지만 더 풍부한 노트가 동일한 wiki 파일을 다시 쓸 수 있게 합니다. drudge/src/workflow.rs의 Rust 측 타입 지정 워크플로 그래프 계약은 세션 발견, distill, 검증, 복구, remember, 마커 업데이트, 이벤트 로깅 및 준비 상태 프로젝션을 위한 노드/엣지 어휘를 정의하며, Python 훅과 워커는 여전히 호스트 I/O를 수행합니다.
구성은 boring.json(boring.example.json에서 생성)에 있습니다. 노트 언어, LLM 제공자/base_url/model/임베딩 모델 및 차원, 저장소 origin 규칙, 에이전트 트랜스크립트 어댑터가 포함됩니다. 백엔드 전환은 구성 블록 하나로 가능하며, `make up`은 제공자별 부트스트랩 스크립트로 디스패치합니다. 임베딩 모델을 변경하면 벡터 차원이 바뀌므로 llm.embed_dim을 업데이트하고 `make reset`을 실행해야 합니다. .env 파일은 비밀과 런타임 재정의를 보관합니다. 여기에는 BORING_VECTOR, LLM 재정의, distill 클램프, recall 주장 수 및 관련성 측정, 이벤트 싱크/스풀 설정, 준비 상태 윈도우, 쓰기 호출용 소유자 토큰이 포함됩니다.
운영 도구로는 `make verify-llm`(제공자, 모델 id, 임베딩 차원), `make doctor`(스택, 훅, Codex 워커/큐, 최신 수집), `make readiness`(엄격한 사전 브리핑 게이트), `make peek`(recall이 어떤 노트를 주입했고 검색기가 얼마나 멀리 도달했는지 보여주는 읽기 전용 로컬 페이지), `make usage`(로컬 트랜스크립트에서 집계한 토큰 및 모델 사용량)가 있습니다. vault/rules/pii.yaml의 PII/민감 데이터 게이트는 줄별 예외 마커와 함께 block, redact, flag 동작을 지원합니다. 선택적 통합으로는 Slack 어시스턴트와 아침 브리핑용 Hermes cron 워커가 있습니다.
요구 사항은 Docker, Python 3, jq, curl, git, make 및 로컬 LLM 서버입니다. 새 클론은 빈 vault로 시작하므로, 기록을 백필하기 전까지 첫날 recall은 아무것도 찾지 못합니다. 이 프로젝트는 MIT 라이선스이며, 머신 RAM별 로컬 모델 페어링 지침, 벤치마크 명령, 측정된 distill/임베딩 동작을 문서화합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.