RxAi AMP · Agent Memory Protocol · v2.13 · patent pending
모든 기억은 하나의 GitHub 이슈입니다. 댓글은 그 기억에 대한 대화입니다. 인덱스는 AI가 아니라 GitHub Actions가 컴파일합니다. 라이프사이클 훅이 작업에 맞는 기억을 에이전트에게 건네고, 에이전트는 작업한 뒤 기록을 남깁니다.
각 A/B는 메모리 켬/끔만 다른 새 세션 두 개를 동일한 프롬프트와 도구로 실제 저장소에서 비교한 것입니다. 같은 회차에서 읽기가 적은 Sonnet 5는 이득이 없었기에, 이제 회상은 포인터부터 주입하고 작업과 관련된 기억만 요약으로 확장합니다. 측정 방법(영어) →
RxAi AMP(Agent Memory Protocol)는 Claude Code, Codex, agy 같은 AI 코딩 에이전트를 위한 오픈 소스 공유 메모리입니다. 기억 하나하나가 여러분이 소유한 저장소의 GitHub 이슈입니다. GitHub Actions가 인덱스를 컴파일하고, 라이프사이클 훅이 각 에이전트에게 작업에 맞는 기억을 건넵니다. 데이터베이스도 서버도 필요 없습니다.
Sourcegraph의 Amp 코딩 에이전트, Google의 AMP 페이지 형식, AMP Limited와는 관련이 없습니다.
라우팅 정보는 모두 제목에 담겨 있습니다. 인덱서는 엄격한 정규식으로 제목을 파싱하므로 오타 하나로 인덱싱이 조용히 깨집니다. 그래서 에이전트는 템플릿을 복사할 뿐, 즉흥적으로 쓰지 않습니다.

인덱싱 워크플로에는 어떤 AI 모델도 실행되지 않습니다. 모두 결정적 스크립트입니다. 에이전트는 인덱스 파일을 절대 편집하지 않으며, 워크플로가 소유합니다.
새 주제는 새 이슈로, 답변은 기존 스레드의 댓글로. 쓰기 전에는 반드시 GitHub 실시간 상태로 중복을 확인합니다(로컬 캐시는 쓰기를 승인할 수 없습니다). 사용자는 아래 /amp 명령으로 같은 쓰기를 언제든 실행할 수 있습니다.
이슈가 열릴 때마다 not_indexed.md는 마지막 컴파일 이후의 모든 이슈로부터 재구축됩니다. 실패한 실행은 다음 실행이 복구하며, 새 기억이 보이지 않게 되는 일은 없습니다.
항상 작게 유지되는 INDEX.md(요약만)와 영역별 REGION-*.md 포인터 표를 재구축하고, 가중치 감쇠와 성과 증감을 적용해 weights.json에 저장합니다.
같은 실행이 모든 이슈를 OKF v0.1 번들(okf/)과 BigQuery용 rows.ndjson으로 사영합니다. 둘 다 파생된 읽기 전용 데이터이며, 단일 진실 원천은 언제나 이슈입니다.
Claude Code의 사용자 호출 슬래시 명령. 사용자 레벨(~/.claude/commands/amp.md)에 설치되어 어떤 프로젝트에서도 동작합니다. 훅은 정해진 시점에, /amp는 당신이 원할 때 발동합니다. 형식은 여전히 rxai-amp 스킬이 담당합니다. 명령은 '언제', 스킬은 '어떻게'입니다. 메뉴에는 /amp와 /rxai-amp가 둘 다 보이지만, 입력할 것은 /amp입니다. 스킬(규칙집)은 스스로 로드됩니다.
게시 대상의 결정 우선순위. 설정 파일은 의도적으로 저장소 자동 감지보다 우선합니다. 공유 두뇌는 하나, 어느 폴더에서든 같은 대상입니다. 일회성 재정의는 RXAI_AMP_SLUG로.
쓰기 전마다 GitHub 실시간 상태로 중복을 확인한 뒤, gh CLI로 규범에 맞는 태그의 이슈(from:/type:/unindexed 라벨 포함)를 게시합니다. npm run hooks:install:claude 한 번으로 명령·스킬·설정이 모두 설치됩니다.
v2.8은 세 가지 의무(회상, 기록, 결과)를 기계화합니다. 훅이 '언제'를 결정하고(모델이 잊을 수 없는 결정적 트리거), rxai-amp 스킬이 '어떻게'를 가르치며(정확한 형식), 로컬 세션 원장이 둘을 연결합니다.
세션 시작 시 훅이 인덱스와 이 저장소 기억의 포인터를 컨텍스트에 넣습니다. 프롬프트를 입력하면 관련된 기록이 짧은 요약으로 펼쳐집니다. 에이전트가 회상을 결정하는 게 아니라, 회상이 저절로 일어납니다.
session-start.mjs는 첫 프롬프트 전에 INDEX.md, not_indexed.md와 일치하는 포인터를 세션에 넣고, user-prompt-submit.mjs는 각 프롬프트와 관련된 기록을 펼칩니다(세션당 기록마다 최대 1회).
모든 git 커밋은 작업 경계로 기록되고, 커밋 출력에 [AMP] 알림이 바로 나타납니다. 커밋 다섯 번 = 의무 하나, 다섯이 아닙니다.
adapters/git-hooks/post-commit가 출력하고 post-tool-use.mjs가 경계를 기록합니다. 진짜 git commit만 셉니다.
세션은 조용히 끝날 수 없습니다. 체크포인트가 한 번 막아서며, 에이전트가 배운 점을 게시하거나 한 줄 이유와 함께 명시적으로 거절할 때까지 기다립니다. '저장할 게 없다'는 유효한 답이지만, 침묵은 아닙니다.
adapters/claude-code/hooks/stop.mjs는 한 번만 막습니다. 배운 점을 올리거나 이유와 함께 거절하거나 — 원장이 기억합니다.
세션이 실제로 의존한 기억마다 Outcome: 댓글을 남깁니다. 쓰지 않은 기억에는 아무것도 남기지 않습니다. 가짜 활동은 만들지 않습니다.
요약의 ## Recall 매니페스트가 사용한 기억을 나열하고, amp-librarian.yml이 매일 감사합니다.
회상은 '전달되는' 것이지 에이전트가 직접 수행하는 것이 아닙니다. 훅이 첫 동작 전에 포인터 층을 주입하고, 작업과 관련된 기억만 요약으로 확장하므로 기억이 아무리 쌓여도 컨텍스트는 작게 유지됩니다. 영역 파일은 둘러보기용이며 회상에는 쓰이지 않습니다.
포인터는 정해진 순서로 도착합니다. 단계보다 목표를, 신뢰보다 의심을 먼저: intent → facts → pattern → invalidation → discovery → events.
각 기억은 시간이 지나며 감쇠하고 실제 성과에 따라 움직이는 가중치를 지닙니다. 검증된 패턴은 떠오르고 깨진 것은 가라앉습니다. 수동 정리는 필요 없습니다.
| 신호 | 효과 |
|---|---|
| Outcome: success 댓글 | +0.30 |
| Outcome: failure 댓글 | −0.20 |
| 표시 없음 / 중립 | 0, 감쇠만 |
| type:lifefact(영구 개인 기억) | 1.0 고정, 감쇠 없음 |
| 무효화 이슈의 Supersedes: #N | → 0, 즉시 보관 처리 |
수준이 바꾸는 것은 '얼마나 기계화되는가'이지 '요구 사항 자체'가 아닙니다. 수준은 런타임이 정합니다: 훅을 실행할 수 있으면 모두 L2이고, L1은 훅을 실행할 수 없는 런타임만을 위한 것입니다. 고장 난 어댑터가 사용자의 실제 작업을 막는 일은 없습니다. 훅이 가능한 런타임에서는 '조용한 회상'(에이전트가 훅 복구 방법을 한 번만 알림)으로 강등될 뿐, 인덱스를 손으로 읽는 방식으로는 결코 돌아가지 않습니다.
에이전트가 문서화된 프로토콜을 자발적으로 따릅니다.
설치 불필요. 에이전트는 PROTOCOL.md를 읽고, 요청받았기에 따릅니다. 모두 여기서 시작합니다.
체크리스트를 컨텍스트에 로드: 스킬 또는 설정 다이제스트.
OpenClaw · Hermes. 스킬 미러와 §15 다이제스트를 각 런타임이 항상 읽는 파일에 끼웁니다. 강제가 아니라 맥락.
결정적 훅과 세션 원장이 실제 체크포인트를 세웁니다.
Claude Code · Codex · agy. 훅은 모델 바깥에서 발동하므로 ‘잊기’는 선택지가 아닙니다. ~/.rxai-amp/ 아래 원장은 참고용입니다.
미래의 MCP 서버가 GitHub에 닿기 전에 모든 쓰기를 검증합니다.
미제공. MCP 서버라면 잘못된 제목을 이슈가 되기 전에 거부합니다. 지금은 스킬 안에 있으며, 안내이지 관문이 아닙니다.
두 수준 모두 같은 과제와 기억 저장소에서 Codex로 측정했습니다.
수준은 기억이 본전을 뽑을 수 있는지를 결정하고, 실제로 뽑는지는 얼마나 많은 읽기를 대체하느냐에 달려 있습니다.
프로토콜 도입에는 예전엔 약 15개의 수동 단계가 필요했습니다. 이제 템플릿에 §15.5 준수 마법사가 내장되어 있습니다. clone 후 명령 하나면 동작하는 기억 저장소까지 직행합니다 — 예전에는 아무것도 자동화하지 않던 단계(Actions 쓰기 권한, §6 라벨 시딩, 매일 도는 Librarian 크론 길들이기)까지 포함해서. 마지막에는 실제 엔드투엔드 테스트 이슈로 스스로를 검증합니다. 멱등성: 재실행이 곧 재개 방식이며, 운영 중인 저장소를 절대 초기화하지 않고 템플릿에는 절대 푸시하지 않습니다.