Karpathy 스타일 LLM 위키를 에이전트들이 직접 유지하는 시스템 - Markdown과 Git 기반

11 hours ago 3
  • 여러 AI 에이전트가 같은 오피스에서 협업하도록 구성됐고, 숨겨진 API 호출보다 브라우저 UI와 역할별 팀 구성을 통한 가시적인 작업 흐름을 앞세움
  • 메모리는 에이전트별 notebook과 팀 공용 wiki로 나뉘며, 원시 작업 맥락은 개인 쪽에 남기고 검증된 사실과 반복 플레이북만 공용 지식으로 올리도록 설계됨
  • 기본 wiki는 단순 문서 폴더가 아니라 로컬 Git 저장소로 동작하며, typed facts, append-only 로그, LLM 합성 brief, /lookup, /lint 같은 파일 우선 도구 체계를 함께 제공함
  • 세션은 턴마다 새로 시작되고 도구도 에이전트별로 제한되며, push-driven 실행 모델과 프롬프트 캐시를 조합해 세션 길이와 무관하게 평평한 입력량을 유지하도록 맞춰짐
  • Telegram, OpenClaw, One CLI, Composio까지 연결해 외부 메시지와 액션 실행을 끌어오면서도, 셀프호스팅 오픈소스와 자체 API 키 사용을 바탕으로 팀 메모리와 에이전트 협업을 한 공간에 묶어 둠

메모리와 위키 구조

  • 에이전트별 notebook팀 공용 wiki를 분리해, 개인 작업 맥락과 조직 지식을 다른 계층으로 관리함
  • notebook에는 작업 중 얻은 원시 맥락, 관찰, 잠정 결론을 저장하고, 반복 플레이북·검증된 사실·확정된 선호처럼 오래 가는 정보만 wiki로 승격되도록 설계됨
  • 어떤 정보도 자동 승격되지 않으며, 에이전트가 notebook에서 wiki로 올릴 항목을 직접 결정함
  • wiki에는 마지막으로 해당 맥락을 기록한 주체를 가리키는 정보가 포함돼, 다른 에이전트가 누구를 다시 멘션할지 판단할 수 있게 해줌
  • 새 설치에서는 markdown 백엔드가 기본이며, 기존 Nex 또는 GBrain 워크스페이스는 기존 지식 그래프 백엔드를 그대로 유지함
  • none 백엔드를 선택하면 공용 wiki는 꺼지지만, 로컬 notebook은 계속 동작함

markdown wiki의 동작 방식

  • 기본 wiki는 단순 Markdown 폴더가 아니라, 로컬 Git 저장소 기반 팀 위키로 동작하며 경로는 ~/.wuphf/wiki/ 임
  • 여기에 triplet 형태의 typed facts, 엔터티별 append-only 사실 로그, LLM이 합성한 brief, 인용 기반 /lookup, 모순·고아 문서·오래된 주장·깨진 교차 참조를 찾는 /lint가 포함됨
  • LLM이 합성한 brief는 archivist 정체성으로 커밋되며, cat, grep, git log, git clone 같은 파일 우선 도구 체계를 그대로 활용할 수 있음
  • 이 기본 wiki는 API 키 없이 사용할 수 있음
  • 코드 내부 명명으로 notebook은 private, wiki는 shared 메모리이며, markdown 백엔드와 nex·gbrain 백엔드는 서로 다른 MCP 도구 표면을 사용함
  • markdown 백엔드 도구 집합과 nex·gbrain의 레거시 도구 집합은 같은 서버 인스턴스에 공존하지 않음
  • 관련 세부 문서는 DESIGN-WIKI.md, docs/specs/WIKI-SCHEMA.md에서 이어짐

실행 모델과 구성 선택지

  • 기본 에이전트 CLI는 Claude Code이며, --provider codex로 Codex CLI도 선택 가능함
  • 메모리 백엔드는 nex, gbrain, none, 기본 markdown 가운데 고를 수 있음
  • --no-nex를 써도 Telegram 같은 로컬 연동 기능은 계속 동작하며, 실행 후 /focus로 CEO 라우팅 위임 모드로 되돌릴 수 있음
  • gbrain 선택 시 초기 온보딩에서 OpenAI 또는 Anthropic 키를 요구하며, 임베딩과 벡터 검색이 필요하면 OpenAI를 사용해야 함
  • 역할 팩은 starter, founding-team, coding-team, lead-gen-agency, revops를 제공함
  • --opus-ceo, --no-open, --web-port, --unsafe 같은 플래그로 모델, 브라우저 자동 열기, 포트, 권한 검사를 조정할 수 있음
  • 저장소는 pre-1.0 상태이며 main 브랜치가 매일 바뀔 수 있어, 포크 시 main 대신 릴리스 태그 고정을 권장함

협업과 외부 연동

  • Telegram 브리지를 지원하며, 오피스 안에서 /connect를 실행한 뒤 Telegram을 고르고 @BotFather 토큰을 넣어 그룹 또는 DM과 양방향 메시지 흐름을 연결할 수 있음
  • OpenClaw 에이전트도 /connect openclaw로 가져올 수 있으며, 게이트웨이 URL과 ~/.openclaw/openclaw.json의 gateway.auth.token을 사용해 세션을 브리지함
  • OpenClaw 세션은 오피스 안에서 일급 구성원으로 들어와 @mention할 수 있고, 실제 실행은 각자의 샌드박스에서 계속 이뤄짐
  • OpenClaw 게이트웨이 인증에는 Ed25519 키페어를 사용하며, 키는 ~/.wuphf/openclaw/identity.json에 0600 권한으로 저장됨
  • 외부 액션 실행을 위해 One CLIComposio 두 제공자를 내장함
  • One CLI는 로컬 바이너리로 사용자의 머신에서 액션을 실행해, 서드파티에 자격 증명을 보내지 않는 흐름에 맞춰짐
  • Composio는 Composio의 호스팅 OAuth 흐름으로 Gmail, Slack 같은 SaaS 계정을 연결함

설계 선택과 운영 특성

  • 세션은 턴마다 새로 시작되며, 대화 이력이 누적되지 않는 구조를 택함
  • 도구는 에이전트별로 범위를 제한하며, DM에서는 4개 MCP 도구만, 전체 오피스에서는 27개 도구를 로드함
  • 에이전트는 broker가 알림을 밀어줄 때만 깨어나는 push-driven 모델이라 heartbeat polling이 필요 없음
  • 작업 중에도 특정 에이전트에 DM을 보내 재시작 없이 중간 조정할 수 있음
  • Claude Code, Codex, OpenClaw 런타임을 한 채널에서 혼합할 수 있음
  • 메모리는 에이전트별 notebook과 워크스페이스 wiki를 함께 두며, GBrain 또는 Nex의 지식 그래프 기반 메모리도 선택 가능함
  • 가격 측면에서는 MIT 라이선스, 셀프호스팅, 자체 API 키 사용을 조합한 무료 오픈소스 모델을 내세움
  • Codex 기반 10턴 CEO 세션 측정에서, 입력 토큰은 턴당 약 87k로 평평하게 유지
  • 캐시 이후 청구 토큰은 턴당 약 40k, 10턴 총합은 약 286k로 제시됨
  • Claude API 프롬프트 캐시 기준 97% 캐시 히트율을 기록했고, Claude Code 5턴 비용은 $0.06으로 적혀 있음
  • 누적 세션 오케스트레이터는 같은 세션에서 턴당 입력이 124k에서 484k로 커지는 반면, WUPHF는 세션 길이와 무관하게 평평한 입력량을 유지함
  • 이 차이는 8턴 기준 7배 차이로 측정됐다고 적혀 있음
  • 이런 특성은 fresh session, 동일 접두어 기반 prompt caching, DM 모드의 적은 도구 수, heartbeat 없는 push-driven wake 구조와 맞물림
  • 재현 스크립트로는 wuphf --pack starter & 뒤 ./scripts/benchmark.sh가 제시되며, 모든 수치는 사용자 로컬 환경과 키로 실측

구현 상태와 검증 흐름

  • README의 주요 항목마다 코드 경로를 직접 연결한 claim status 표를 두고, 무엇이 shipped인지 partial인지 구분함
  • 기본 CEO가 Sonnet이고 --opus-ceo로 업그레이드되는 점, collaborative mode 기본값, /focus 전환, per-agent MCP scoping, fresh session, push-driven wake, 워크스페이스 격리, Telegram 브리지, 액션 제공자 2종, OpenClaw 브리지, wuphf import, --memory-backend markdown 기본값을 모두 shipped로 표시함
  • 라이브 웹 에이전트 스트리밍은 partial, goreleaser 기반 prebuilt binary는 config ready 상태로 표시됨
  • 재시작 시 진행 중 작업 복원은 v0.0.2.0에서 shipped로 적혀 있음
  • LLM Wiki는 git-native team memory와 Wikipedia 스타일 UI로 shipped 처리돼 있으며, 관련 구현 위치로 internal/team/wiki_git.go, internal/team/wiki_worker.go, web/src/components/wiki/, DESIGN-WIKI.md를 연결함
  • claim과 status가 충돌하면 코드가 우선이며, 문제를 찾으면 issue를 열도록 안내함

평가와 데모 자료

  • 포크 전에 AI 코딩 도우미로 저장소를 평가하는 fork-or-skip 프롬프트를 제공하며, 마케팅 문구 없이 파일 경로·라인 번호·판정을 500단어 이하로 요구함
  • 이 프롬프트는 릴리스 전에도 내부적으로 사용한다고 적혀 있음
  • wiki가 실제로 작성되는 흐름을 보여주는 5분 터미널 데모로 ./scripts/demo-entity-synthesis.sh를 제시함
  • 이 데모에서는 에이전트가 다섯 개 사실을 기록하고, 합성 임계치가 발동한 뒤 broker가 로컬 LLM CLI를 호출하고, 결과가 archivist 정체성으로 Git 저장소에 커밋되며, 전체 작성 체인이 git log에 남음
  • 데모 요구 사항은 curl, python3, --memory-backend markdown로 실행 중인 broker, 그리고 claude·codex·openclaw 가운데 지원되는 LLM CLI가 PATH에 있어야 함
Read Entire Article