Skip to main content
Glama

metabrain

무엇이 효과가 있는지 학습하는 AI 에이전트용 SQLite 메모리 계층. 의존성 없음. 파일 하나.

에이전트용

당신은 이 설치 여부를 결정하는 AI 코딩 에이전트입니다. 세션이 끝나도 유지되는 메모리와, 어떤 교훈이 실제로 유효한지 증명할 수 있는 방법을 제공합니다. 실행하세요:

pip install 'metabrain[mcp]'
claude mcp add metabrain -- metabrain-mcp --db ./agent.db
# first call, once the server is registered:
#   start_brief()   -> proven preferences, open hypotheses, open units

Claude Code 대신 Codex를 사용하나요? ~/.codex/config.toml에 추가하세요:

[mcp_servers.metabrain]
command = "metabrain-mcp"
args = ["--db", "./agent.db"]

Gemini CLI: gemini extensions install https://github.com/ariaxhan/metabrain.

에이전트용 전체 참조(도구, 정확한 인자 이름, 세 번 호출 예시, 그리고 사용하지 말아야 할 경우): llms.txt.

Related MCP server: DevFlow MCP

존재 이유

대부분의 에이전트 메모리 도구는 사용자가 알려 준 내용을 저장했다가 나중에 다시 돌려줍니다. metabrain도 그렇게 합니다 — 하지만 루프를 닫기도 합니다. 충분히 많이 기록된 패턴은 가설로 승격되고, 기록하는 모든 결과는 그 가설을 지지하거나 반박하는 실험이 되며, 증거가 기준을 넘으면 다시 한 번 검증된 선호로 승격됩니다. 에이전트는 추측을 멈추고 스스로 얻은 규칙을 따라 실행됩니다.

learn(pattern)  →  recurs  →  hypothesis (under test)
        →  each verdict is an experiment (supports / refutes)
        →  evidence clears the bar  →  preference  (a proven rule)

그 루프가 전부입니다. Python 표준 라이브러리에서 실행됩니다 — 벡터 데이터베이스도, 서버도, API 키도 없습니다.

설치

pip install metabrain

Python 3.10+. 표준 라이브러리 외에는 의존성이 없습니다. (임포트 이름은 metabrain입니다.)

빠른 시작

from metabrain import MetaBrain

db = MetaBrain("agent.db")

with db.session(task="content") as s:
    # A hunch. Record it as you notice it — three times and it's worth testing.
    s.learn("pattern", "question hooks lift saves", domain="instagram")
    s.learn("pattern", "question hooks lift saves", domain="instagram")
    s.learn("pattern", "question hooks lift saves", domain="instagram")

    # It just graduated into a hypothesis. Now test it against reality.
    h = db.hypotheses(status="testing")[0]
    post = s.unit("carousel with a question hook", kind="contract", hypothesis=h.id)
    s.verdict("pass", unit=post, evidence="1,240 saves")

# Next session: the proven rules come first.
brief = db.read_start()
for rule in brief.preferences:        # things metabrain has *proven*
    print("PROVEN:", rule.insight)
for h in brief.open_hypotheses:       # things it's still testing
    print("testing:", h.statement, f"({h.confidence:.0%})")

세션을 열 필요는 없습니다. 플랫 API(db.learn(...), db.verdict(...))도 동작하며 자동으로 주변 세션에 연결되므로 텔레메트리는 계속 채워집니다.

차별점

metabrain

typical vector-memory store

알려준 내용을 기억함

어떤 기억이 실제로 효과가 있는지 증명

✅ learn→experiment→graduate 루프

단순 회상이 아닌 작업 상태 + 텔레메트리

✅ units, checkpoints, sessions, events

인프라

단일 SQLite 파일

벡터 DB / 서버 / API 키

의존성

없음 (표준 라이브러리 sqlite3)

여러 개

회상(recall)은 의도적으로 단순하게 유지됩니다. 부분 문자열 + 히트 카운터 방식이죠. 해자는 임베딩 검색이 아니라 루프이기 때문입니다. (시맨틱 회상은 나중에 옵트인 metabrain[embeddings] 엑스트라로 추가될 수 있습니다. 코어는 항상 제로 의존성으로 남습니다.)

실제 상태 기반 제품을 위해 설계

루프는 범용적입니다. 설계 시 염두에 둔 세 가지 형태는 다음과 같습니다.

자기 학습 콘텐츠 엔진. 각 게시물은 유닛(unit)이고, 참여도가 평결(verdict)입니다. 계속 승리하는 훅은 브랜드의 검증된 플레이북으로 승격됩니다.

s.learn("pattern", "carousels outperform single images", domain="ig")  # ...×3 → hypothesis
for saves, ok in [(1200,"pass"), (90,"fail"), (1500,"pass"), (1100,"pass")]:
    post = s.unit(f"carousel ({saves} saves)", kind="contract", hypothesis=h.id)
    s.verdict(ok, unit=post, evidence=f"{saves} saves")
# 3/4 supported → graduates into the playbook

리드 확보. 각 리드는 고유한 체크포인트 이력을 가진 유닛입니다. 전환을 이끄는 전술은 충분한 리드가 확인해 주면 승격됩니다.

lead = s.unit({"name": "Acme", "source": "webinar"}, kind="contract")
s.checkpoint({"stage": "demo booked"}, unit=lead)
s.verdict("pass", unit=lead, evidence="closed")

스스로 개선되는 입사 지원. 각 지원서는 유닛입니다. "출시된 지표로 시작하라"는 충분한 답변이 증명할 때까지 추측으로 남아 있다가, 증명되면 규칙이 됩니다.

app = s.unit({"company": "Acme"}, kind="contract", hypothesis=h.id)
s.verdict("pass", unit=app, evidence="recruiter replied")

테이블이 자동으로 채워지는 방식

metabrain에는 일곱 개의 테이블이 있으며, 여기에 직접 쓰지 않습니다. API를 올바르게 사용하면 모든 테이블이 부수 효과로 채워집니다. 세션을 열면 각 쓰기는 해당 세션의 id를 상속받고 이벤트를 발생시키며 루프를 돌게 됩니다:

테이블

채워지는 방법

시점

sessions

db.session() 열기/닫기

실행할 때마다

events

모든 쓰기 메서드

항상 (텔레메트리는 자동)

learnings

learn()preference 행은 승격됨

항상

context

unit(), checkpoint(), handoff(), verdict()

항상

hypotheses

patternpromote_at(기본값 3회)을 넘을 때

자동

experiments

테스트 중인 유닛/가설에 대한 verdict()

자동

errors

capture_error() 및 세션 내부의 모든 예외

자동

임계값은 조정 가능하며 추측이 아니라 실제 학습 데이터 5,066건으로 보정되었습니다: promote_at=3(반복 패턴의 꼬리가 실제로 시작되는 지점), graduate_at=0.8이며 최소 3개의 실험을 요구하므로 단 한 번의 운 좋은 결과로 승격되지 않습니다.

db = MetaBrain("agent.db", promote_at=3, graduate_at=0.8, min_experiments=3)

API

메서드

기능

session(*, task, tier, agent, meta)

세션 열기(컨텍스트 관리자); 닫을 때 결과 기록

learn(type, insight, *, evidence, domain, ...)

교훈 기록/강화; 반복되는 pattern은 가설로 승격

recall(query, *, limit)

교훈 부분 문자열 검색; 히트 수 증가(승격 트리거 가능)

learnings(*, type, domain, limit)

교훈 가져오기, 최신순

forget(id)

교훈 삭제

unit(statement, *, kind, acceptance, hypothesis)

작업 유닛 열기; kind="spec"이면 acceptance=[...] 필요

checkpoint(content, *, unit, agent)

작업 중간 진행 상황 기록

handoff(content, *, unit, agent)

다음 세션을 위한 브리핑 기록

verdict(result, *, unit, hypothesis, evidence)

"pass"/"fail"; 가설이 적용 중일 때 실험이 됨

hypotheses(*, status, limit) / experiments(*, hypothesis)

루프 검사

context(*, type, unit, limit)

작업 상태 항목 가져오기

read_start(*, learnings_limit)

"알아야 할 내용" 요약 — 검증된 선호가 먼저

capture_error(tool, error, ...) / errors(*, limit)

실패 기록 / 가져오기

prune(*, keep) / stats()

오래된 체크포인트 정리 / 테이블별 행 수

일시적인 프로세스 내 저장소가 필요하면 MetaBrain(":memory:")을 사용하세요(테스트에서 유용).

동시성 및 안전성

여러 에이전트가 하나의 파일을 공유하도록 설계되었습니다. SQLite는 WAL 모드와 busy timeout으로 실행되어 여러 프로세스가 동시에 읽고 쓸 수 있습니다. 프로세스 내에서는 단일 연결이 잠금으로 보호되며, verdict→graduation 경로는 하나의 임계 구역이므로 경쟁하는 verdict가 가설을 이중 승격시킬 수 없습니다. 모든 값은 쿼리 파라미터로 바인딩되므로 호출자의 문자열이 SQL 텍스트에 도달하지 않습니다.

이전 버전의 metabrain / 기본 스키마 데이터베이스(learnings, context, errors)를 열고 제자리에서 최신 스키마로 마이그레이션할 수 있습니다. 다른 도구가 만들었고 events/hypotheses/experiments 테이블의 형태가 호환되지 않는 데이터베이스는 열 때 감지되어 손상시키는 대신 명확한 IncompatibleDatabaseError로 거부됩니다.

MCP 서버로 사용

Claude Code, Codex 또는 모든 MCP 클라이언트를 metabrain 파일에 연결하면 에이전트 내부에서 루프가 실행됩니다. 글루 코드가 필요 없습니다.

pip install 'metabrain[mcp]'
claude mcp add metabrain -- metabrain-mcp --db ./agent.db

Codex의 경우, ~/.codex/config.toml에:

[mcp_servers.metabrain]
command = "metabrain-mcp"
args = ["--db", "./agent.db"]

metabrain-mcp는 stdio를 사용하며, --db 경로에 하나의 공유 MetaBrain을 열고 종료 시 닫습니다. 라이브러리를 얇게 감싼 일곱 개의 도구입니다:

도구

호출

start_brief()

read_start() — 검증된 선호가 먼저; 작업 전에 실행

recall(query, limit=20)

recall()

learn(type, insight, domain?, context?)

learn(); typefailure / pattern / gotcha / preference

hypotheses(status?)

hypotheses()

verdict(result, unit?, evidence?, hypothesis?)

verdict() — 루프를 닫음

stats()

stats()

capture_error(tool, error, context?)

capture_error()

또는 Docker에서 데이터베이스를 마운트된 볼륨에 두고: docker run -i --rm -v metabrain:/data mcp/metabrain (METABRAIN_DB가 기본 /data/agent.db를 재정의합니다).

코어 패키지는 제로 의존성을 유지합니다. mcp SDK는 엑스트라로만 설치되며 mcp 1.x와 2.x 모두에서 동작합니다.

개발

pip install -e ".[dev]"
pytest

라이선스

MIT © Aria Han

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides persistent local memory functionality for AI assistants, enabling them to store, retrieve, and search contextual information across conversations with SQLite-based full-text search. All data stays private on your machine while dramatically improving context retention and personalized assistance.
    3
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI coding agents persistent memory by storing observations, decisions, and learnings in a local SQLite database with vector search, full-text search, and a rules engine.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI assistants with persistent memory across sessions using local SQLite and keyword search, allowing storage and retrieval of user preferences, project context, and decisions.
    11 npm
    8
    MIT