Agora는 Git 커밋 DAG를 공유 기억으로 쓰는 비동기 AI 연구 에이전트 커뮤니티다.
Agora: Git as Shared Memory for Collective AutoResearch
무엇인가
이 논문이 푸는 문제는 AI 연구 에이전트들이 서로 다른 세션에서 독립적으로 돌아갈 때 생기는 기억의 단절이다. 한 세션이 학습률을 어떻게 바꿨는지, 어떤 분기가 버려졌는지, 어떤 결과가 아직 독립 재현이 필요한지는 대화 로그나 임시 작업 디렉터리에 남으면 다음 세션이 처음부터 다시 알아내야 한다. 기존 멀티에이전트 프레임워크는 역할극, 프로그램 가능한 대화, 표준 운영 절차, 오케스트레이터 같은 방식으로 한 애플리케이션·한 에피소드 안의 팀을 조율한다. Agora는 그와 달리 대화, 관리자, 역할 그래프, 런타임, 파일시스템을 공유하지 않는 비동기 참여자들을 대상으로 한다.
어떻게 동작하나
Agora의 핵심은 기여를 Git 커밋으로 저장하는 append-only 방향성 비순환 그래프(DAG)다. 각 노드는 커밋 해시, 발행 계정, 태그 집합, 설명, 구조화 메타데이터, 선택적 프로젝트 지표, 부모 집합, 서버 타임스탬프로 구성되고, 부모 엣지는 '이 작업 위에 세웠다'는 뜻이다. 메타데이터만 있는 작업은 JSON을 보내 서버가 정규 커밋을 만드는 가벼운 경로를, 코드가 있는 작업은 참여자가 로컬에서 커밋하고 Git 번들을 업로드해 서버 검증을 거치는 무거운 경로를 쓴다. 품질은 자기 보고가 아니라 하류 증거로 측정한다. 기여 u의 증거 점수는 S(u) = Σ_{v:(u,v)∈E} 1[a(u)≠a(v)] w(v), 즉 다른 계정이 u 위에 세운 작업의 태그별 가중 합이며, 자기 인용은 제외된다. 검증자가 판정을 바꾸면 최신 판정만 점수에 반영되고 두 커밋은 모두 이력에 남는다.
무엇과 다른가
리더보드만으로는 실패한 시도와 저평가된 대안이 보이지 않기 때문에, analyze 호출은 지표 선두, 가장 많이 인용된 노드, 리프, 유망하지만 덜 탐색된 결과, 미검증 결과, 검증이 엇갈린 항목, 열린 가설, 최근 활동, 태그, 기여자 등의 뷰를 돌려준다. 설명 임베딩이 50% 이상을 덮으면 코사인 임계값 0.90의 단일 연결 클러스터링을 수행하고(최근 5,000개로 상한), 클러스터 수·크기·최상위 클러스터 점유율·엔트로피 기반 유효 클러스터 수·균등도·지표 히스토그램·소규모 클러스터의 유망 노드를 보고한다. 후보 순위는 밴딧·트리 탐색 계열의 다양성 인지 상한선 U(v) = 100 Q(v) + C sqrt(log(N+1)/(n(v)+1)) + 100D/sqrt(1+ρ(v))로 매기며, Q는 품질 백분위, n은 후속 작업 수, ρ는 거의 중복인 설명 수다. 후보는 exploit(선두 재현·개선), explore known(얇은 클러스터의 유망 작업 확장), explore novel(싱글턴 또는 극소 클러스터의 미접촉 노드 점검) 세 슬롯으로 제시된다. 프로토타입은 Go 서비스, CLI, Next.js 웹 인터페이스로 되어 있고 프로젝트마다 베어 저장소를 두며 SQLite에 8개 테이블을 유지한다. 서버는 26개 HTTP 라우트, CLI는 15개 명령 그룹을 노출하고 쓰기·복제·가져오기에는 베어러 인증과 속도 제한이 걸린다.
어떻게 쓰나
실험 과제는 학습 데이터도 경사 하강도 없이 사전학습 모델의 가중치만으로 새 아키텍처를 초기화하는 것이다. 기증자 풀에는 GPT-2, LLaMA, Mistral, Qwen, Gemma, Pythia, RWKV, Mamba 등 32개 아키텍처 계열의 공개 가중치 모델 141개(534GB)가 있다. 목표 모델은 멀티헤드 어텐션과 단순화한 Mamba식 선택적 상태공간 블록을 번갈아 쌓은 14층 하이브리드로, 히든 크기 672, 어텐션 헤드 7개, 비공유 임베딩, 총 119,572,320 파라미터이며 어떤 기증자와도 차원이 일치하지 않도록 골랐다. 참여자는 무작위 초기화된 목표를 받아 새 가중치를 돌려주는 transfer(model, config) 함수를 제출하고, 평가기는 모든 난수 생성기를 42로 시드한 뒤 FineWeb-Edu 텍스트 200개를 GPT-2 토크나이저로 512토큰 비중첩 청크로 잘라 바이트당 다음 토큰 손실(bpb)을 계산한다. 무작위 초기화는 3.3923 bpb, 통상 학습된 GPT-2 124M은 약 1.0 bpb이고, 프로젝트 브리프의 목표는 2.5 미만이었다.
전제와 한계
워커는 Claude Opus 4.7을 쓴 Claude Code와 GPT-5.5를 쓴 Codex 세션이었고, 컨테이너에 GPU와 Agora 계정 자격증명 하나를 마운트해 헤드리스로 실행했다. 프롬프트는 program.md를 읽고 agora analyze로 남들이 무엇을 시도했는지 보라는 한 줄뿐이며, 역할이나 방법을 지정하지 않았다. 13개 계정이 11일 19시간 동안 1,703개 기여를 발행했고 내역은 채점된 결과 1,124개, 통찰 284개, 가설 203개, 검증 165개, 보고서 1개이며 그중 233개가 최고 기록을 갱신했다. 최종 최고 방법은 1.899044 bpb로 무작위 대비 3.3923에서 출발해 학습된 GPT-2 124M과의 격차 중 62%를 닫았다. 이 방법은 83개 파이썬 모듈이 각각 부모를 import해 변경 하나씩을 적용한 사슬이다. A단계는 기증자 파라미터가 아니라 기증자의 예측을 초기화에 쓴다. GPT-2 어휘를 공유하는 6개 기증자(GPT-2 small/large, Cerebras-GPT 111M~1.3B)에게 28개 단일 토큰 문맥(없음, end-of-text, 'the' 등 빈출 토큰 26개) 아래 모든 어휘 토큰을 질의하고, 다음 토큰 로그-소프트맥스를 고정 기증자 가중치(GPT-2 small에 0.725)와 행별 문맥 가중치로 혼합해 50257×50257 문맥 평균 바이그램 표 M을 만든다. 열 평균 u를 유니그램 앵커로 분리하고 중심화한 표를 고정 스케치와 1회 멱반복을 쓰는 무작위 SVD로 rank 671까지 분해해 입력 임베딩과 출력 헤드로 삼고, 히든 차원 0에 u를 담고 두 온도로 두 항을 재조정한 뒤 모든 서브레이어를 0으로 둔다. B단계는 96차원 밴드 B_k = [1+96k, 97+96k)에 희소하고 결정적인 편집을 가해 서브레이어를 되살린다. 모든 어텐션 층은 한 밴드에 대한 균일한 인과 평균 풀링을 작은 스케일로 되쓰고, 0층 SwiGLU는 GPT-2 small 첫 MLP의 SVD 투영 슬라이스를 0.009 스케일로 받는다. 각 SSM 블록은 선택 경로를 꺼서 한 밴드에 대한 게이트된 깊이별 인과 합성곱으로 축소되고, 1층은 최근 위치를 강조하는 부호 교대 커널을, 나머지는 균일 커널을 쓴다. 출력 투영은 걸러진 밴드를 자기 밴드에, 6개 층에서는 B2와 B3에도 쓴다.
점수 궤적을 보면 첫 채점 시도는 GPT-2와 Mamba의 파라미터 슬라이스를 모양에 맞춰 복사해 4.68로 무작위보다 나빴고, 작성자는 이를 설명과 함께 부정적 결과로 발행했다. 30분 뒤 같은 계정이 복사를 GPT-2 예측에서 읽은 유니그램 사전으로 바꿔 2.52를 냈고, 6시간 안에 네 계정이 이를 3·6·12·24개 접두사 바이그램 통계로 확장해 1.93을 기록했다. 이 18개 채점 기여가 전체 개선의 약 98%를 차지했고, 나머지 1,106개가 추가로 얻은 것은 0.03이었다. 접두사 집합을 48개로 늘리기, 특이값 스펙트럼 평탄화, 하이브리드 기증자에서 네이티브 Mamba 블록 이식, GPT-2 임베딩 행렬 직접 복사, 다른 토크나이저(Pythia)로 사전 만들기는 모두 성능이 퇴행해 점수와 함께 공개됐고, 명시적으로 부정적 결과로 태그된 기여가 53개다. 최고 기여의 조상은 145개 커밋, 15개 계정이며 144개 부모 엣지 중 115개가 계정 경계를 넘는다. 참여자들은 95개 서로 다른 목표에 대해 165개 검증 기여를 올렸고 실패 보고는 없었다. 같은 하드웨어 재현은 비트 단위로 동일하고 A100과 H100 사이는 최대 1.3×10^-3 bpb 차이로 브리프가 정한 허용 범위 안이며, 우승 방법의 채점된 조상 144개 중 40개가 독립 재현됐다.
협업 역학에서는 네 가지 패턴이 관찰됐다. 첫 8개 개선이 전체 하강의 약 70%를 만들었고, 하나의 계보가 후속 작업 대부분을 모으는 좁은 척추가 형성됐으며, 서로 다른 계정이 동일 점수를 올린 696쌍 중 63%가 1시간 이내, 80%가 6시간 이내였다. 또한 여러 기여가 1.90 bpb 근처에 수렴하며 평가기가 전역적으로 선형이고 목표 모델의 서브레이어가 충분히 쓰이지 않았다는 진단, 바이그램 레시피가 강한 국소 최적이라는 설명을 내놨지만 이 설명들은 독립적으로 검증되지 않았다. 인간은 실행 전 과제·기증자 풀·평가기·브리프를 준비한 것 외에 한 번만 개입했다. 5월 2일 전체 활동의 3분의 1 이상이 하나의 의미 클러스터에 몰리고 리더보드가 정체하자 클러스터링과 다양성 요약, 다양성 인지 UCB를 배포했고, 워커들은 즉시 새 뷰를 사용하기 시작해 5월 3일 00:13 UTC에 희소한 상태공간 클러스터를 탐색하던 워커가 첫 SSM 편집을 1.9028 bpb로 발행했다.
저자들이 밝힌 한계는 분명하다. 마지막으로 기록된 개선폭 9×10^-6은 하드웨어 간 변동보다 작아서 사실상 잡음 수준이다. 공유 그래프와 분석 뷰가 단위 컴퓨트당 발견량에 미치는 영향을 측정하려면 고정 예산 아래의 짝지은 비교가 필요하다고 명시하며, 그 설계를 부록 C에 두었다. 또한 저자들은 우승 방법을 직접 재실행하지 않았고, 최종 수치는 아카이브된 평가기 출력과 에이전트들의 하드웨어 간 재현으로 뒷받침된 값이다. 실무자 관점에서 이 논문이 주는 시사점은 명확하다. 여러 에이전트를 비동기로 굴릴 때 대화 로그 대신 커밋 DAG를 공유 기억으로 두면 계보, 부정적 결과, 검증 상태가 그대로 남고, 자기 인용을 배제한 하류 증거 점수로 품질을 근사할 수 있다. 다만 이 실험은 단일 과제, 13개 워커, 하나의 평가기에서 나온 결과이며, 리더보드가 좁은 계보에 쏠리는 현상은 다양성 뷰를 넣어도 완전히 사라지지 않았다. 도입을 검토한다면 증거 점수가 실제 성능과 얼마나 상관하는지, 검증 태그가 남용되지 않는지, 그리고 탐색 슬롯이 실제로 새 분기를 만들어내는지를 자기 프로젝트 로그로 확인해야 한다.