이 글은 Claude Opus 5.5 을 이용해 초안이 작성되었으며, 이후 퇴고를 거쳤습니다.


바둑에 KataGo 가 있다면 오목·렌쥬에는 Rapfi 가 있습니다. dhbloo/rapfi 는 GPLv3 로 공개된 C++ 오목·렌쥬 엔진이고, 오목 AI 들의 연례 대회인 Gomocup 에서 2022년부터 2026년까지 참가한 리그를 거의 모두 우승했습니다.

이 시리즈는 Rapfi 를 다섯 편에 걸쳐 뜯어봅니다.

편주제
Part 1 (이 글)오목·렌쥬 오픈소스 생태계, Rapfi 의 역사
Part 2Rapfi 와 KataGo 비교
Part 3Rapfi 는 어떻게 수를 고르는가: 패턴, NNUE, 알파-베타, MCTS
Part 4직접 빌드해서 돌려 보기: 실측 예제
Part 5Rapfi 로 오목·렌쥬 서비스를 만들 때

규칙 자체(금수, 26주형, 스왑 오프닝)는 렌쥬 입문 시리즈 에서 다뤘으므로 여기서는 필요한 만큼만 다시 적습니다. 이 시리즈의 소스 코드 인용은 모두 2026-07-23 자 master 커밋 3c94c2a (내부 버전 0.43.02) 기준입니다.


1. 이미 풀린 게임에 엔진이 왜 필요한가#

오목은 수학적으로 풀린 게임 입니다.

  • 오목(15x15): Allis, van den Herik, Huntjens 가 프로그램 Victoria 로 흑(선공) 필승을 증명했습니다. 장목을 승리로 치는 자유룰과 정확히 다섯만 인정하는 변형 모두 흑 필승입니다. 1993년 AAAI 심포지엄 발표, 1996년 Computational Intelligence 12(1) 게재, Allis 의 1994년 박사 논문이 출처입니다.
  • 렌쥬: 흑에게 금수를 걸어도 오프닝 규정이 없으면 여전히 흑 필승입니다. Wágner 와 Virág 가 2001년 ICGA Journal 24(1) 의 “Solving Renju” 에서 증명했습니다.

“풀렸다” 는 말은 흑이 완벽하게 두면 이긴다 는 뜻이지, 사람이나 프로그램이 그 수순을 실전에서 찾아낸다는 뜻이 아닙니다. 그래서 대회는 색을 바꾸는 스왑 규정이나 미리 정한 균형 오프닝으로 시작하고, 그 뒤부터는 여전히 실력 싸움입니다. 렌쥬 입문 Part 2 에서 본 오프닝 규정의 변천이 바로 이 문제에 대한 사람의 대응이었습니다.

엔진은 여기서 두 가지 역할을 합니다.

  1. 분석 도구: 오프닝이 흑에 얼마나 기울었는지, 이 국면에 필승 수순이 있는지를 계산합니다. 스왑 규정을 설계하거나 오프닝을 연구하는 사람에게 필수입니다.
  2. 대국 상대: 온라인 오목 서비스의 AI 상대, 초보자 연습 상대가 됩니다.

2. 2026년 오목·렌쥬 오픈소스 생태계#

생태계는 네 층으로 나눠 보면 이해가 쉽습니다.

flowchart LR
    E["엔진<br/><br/>Rapfi<br/>KataGomo<br/>AlphaGomoku<br/>기타"]
    P["프로토콜<br/><br/>Piskvork<br/>stdin/stdout 텍스트"]
    B["GUI·매니저<br/><br/>Piskvork<br/>qpiskvork<br/>Yixin-Board<br/>Gomocalc (웹)"]
    C["대회<br/><br/>Gomocup<br/>2000년부터 매년"]
    E --> P
    P --> B
    P --> C
    style E fill:#FFD700,color:#000000
    style P fill:#87CEEB,color:#000000
    style B fill:#D3D3D3,color:#000000
    style C fill:#D3D3D3,color:#000000

핵심은 가운데의 Piskvork 프로토콜 입니다. 엔진과 GUI 가 이 텍스트 프로토콜 하나로 연결되므로, 어떤 엔진이든 어떤 GUI 에도 꽂을 수 있습니다. Gomocup 도 이 프로토콜로 엔진을 돌립니다.

2.1 엔진#

현역으로 활동하는 주요 엔진입니다. 별 개수는 2026-09-24 기준입니다.

엔진방식라이선스비고
Rapfi알파-베타 + NNUE (MCTS 선택 가능)GPLv3★274. Gomocup 2022~2026 거의 전 리그 우승
KataGomoKataGo 기반 MCTS + 신경망 + VCF 솔버MIT 계열 (KataGo 라이선스)★194. 오목 외 헥스·육목 등 여러 게임을 브랜치별로 지원
AlphaGomokuAlphaZero 계열 탐색 + 신경망 + VCF 솔버GPLv3폴란드 Kozarzewski. Caro 룰 2023~2026 우승
Embryo고전적 알파-베타비공개 (실행 파일만 배포)체코 Fontán. 2019~2020년 Gomocup 최강
Yixin (弈心)비공개비공개 (GUI 만 BSD 공개)중국 Sun Kai. 2012~2018 Gomocup 7연패

몇 가지 짚어 둘 점이 있습니다.

  • KataGomo 의 저자 Zhiyang Hang(hzyhhzy)은 Rapfi 의 공동 저자 목록에도 “HZY (sigmoid)” 로 올라 있습니다. 두 엔진은 경쟁자이면서 협력 관계입니다. Rapfi 의 신경망은 KataGomo 가 둔 자가대국 기보로 학습했습니다. 이 관계는 Part 2 에서 자세히 봅니다.
  • Yixin 은 “사람 챔피언 수준에 오른 첫 오목·렌쥬 AI” 로 소개됩니다. 2017년 스왑2 규정으로 세계 오목 챔피언 Rudolf Dupszki 를 이겼고 2018년에는 세계 렌쥬 챔피언 Qi Guan 과 1승 3무 1패로 비겼습니다. 하지만 엔진 소스는 공개되지 않았습니다. 마지막 버전은 Yixin2018 입니다. 대신 Yixin 이 정한 Yixin-Board 프로토콜 확장 과 기보 데이터베이스 형식은 지금도 생태계의 사실상 표준으로 남아 Rapfi 도 그대로 지원합니다.
  • Embryo 는 강했지만 저장소에 실행 파일만 있고 라이선스가 없어 오픈소스로 볼 수 없습니다.

Gomocup 2026 에는 “역대 최다” 신규 참가가 있었습니다. 한국의 JeongHyeon Choi 가 Rust 로 쓴 PVS 기반 렌쥬 엔진 Mintaka, 개발 과정 자체를 LLM 에이전트 루프(GPT-5.5, Claude Opus 4.7, GLM-5.1)로 진행했다고 밝힌 VibeFive, 트랜스포머 평가와 증명수 탐색(PNS)을 섞은 Starpoint 등이 눈에 띕니다. 다만 이들 대부분은 공개 저장소와 대회 출전작이 같은 것인지 1차 출처로 확인되지 않아 링크는 달지 않습니다.

그 밖에 SlowRenju(GPLv3), Carbon, Chis, Pela, XL engine 같은 엔진이 Gomocup 의 “소스 공개 엔진” 목록에 있지만 대부분 2010년대 중후반 이후 갱신이 멈췄습니다.

2.2 GUI 와 매니저#

이름성격상태
PiskvorkWindows 용 오목 매니저. Gomocup 공식 도구의 원조GPLv3, 마지막 버전 9.0 (2023-05, Caro 룰 추가)
qpiskvorkQt 기반 크로스플랫폼 매니저 (Windows·Linux)GPLv2, 2026-09-18 에도 릴리스. 가장 활발
Yixin-Board (dhbloo 포크)Yixin 의 GUI 를 Rapfi 용으로 고친 것. 분석·DB 기능 완비BSD-2, GTK3 로 이식되어 macOS 지원

Rapfi 는 자체 GUI 가 없고, README 는 분석·데이터베이스 기능을 전부 쓸 수 있는 Yixin-Board 를 가장 권합니다. Rapfi 공식 릴리스에는 이 GUI 가 함께 들어 있습니다.

2.3 프로토콜: Piskvork#

Piskvork 프로토콜 은 매니저가 엔진 프로세스(pbrain-* 라는 이름을 씁니다)를 띄우고 stdin/stdout 으로 한 줄짜리 텍스트 명령 을 주고받는 방식입니다. START 15 로 판을 열고, TURN 7,8 로 상대 수를 알려 주면 엔진이 6,9 처럼 자기 수를 답합니다. 체스의 UCI, 바둑의 GTP 에 해당합니다.

명세의 마지막 갱신은 2023-03-20(Caro 룰 추가)이고, 스왑2 오프닝용 SWAP2BOARD 는 2022년 말에 추가되었습니다. 구체적인 주고받기는 Part 4 에서 직접 해 봅니다.

2.4 웹과 교육용 저장소#

  • Gomocalc: Rapfi 저자가 만든 웹 분석판입니다. Rapfi 를 WebAssembly 로 컴파일해 브라우저 안에서 돌리므로 서버에 계산을 요청하지 않습니다. 서비스를 만들 때의 참고 구조로 Part 5 에서 다시 다룹니다.
  • junxiaosong/AlphaZero_Gomoku: 별 3,600개가 넘는, 오목 분야에서 가장 유명한 저장소입니다. 다만 6x6·8x8 판에서 AlphaZero 를 이해하기 위한 교육용이고 대회용 엔진이 아닙니다. “오목 AI 오픈소스” 로 검색하면 이 저장소가 먼저 나오지만 실전 강도의 기준점은 Rapfi 와 KataGomo 입니다.

2.5 대회: Gomocup#

Gomocup 은 2000년부터 열린 오목 AI 대회이고 2026년(6월 5~7일)이 27회째였습니다. 리그는 다음과 같습니다.

리그판비고
Freestyle (Freestyle-20)20x20장목도 승리
Freestyle-1515x152024년 신설
Fastgame20x20수당 5초, 대국당 120초
Standard15x15정확히 다섯만 승리
Renju15x15흑 금수
Caro15x15양끝이 모두 막히지 않은 정확히 다섯만 승리. 2023년 신설

중요한 조건이 하나 있습니다. 엔진 하나당 CPU 코어 1개로 제한 하고 GPU 는 쓰지 않습니다. 2026년 하드웨어는 AMD EPYC 서버, 메모리 제한 1GB 였습니다. GPU 를 허용하던 무제한 리그는 2025년과 2026년에 열리지 않았습니다. 이 조건은 Part 2 의 Rapfi–KataGo 비교에서 결정적인 변수가 됩니다.


3. Rapfi 의 역사#

3.1 저자#

Rapfi 는 중국의 Haobin Duan (段浩彬, GitHub dhbloo) 이 만들었습니다. 논문에는 베이징항공항천대학(Beihang University) 소속으로 나옵니다. 저장소의 AUTHORS 파일에는 그 외에 KataGomo 저자 HZY 를 포함한 5명이 올라 있지만, GitHub 기준 커밋 234개가 dhbloo 한 사람의 것일 정도로 사실상 1인 주도 프로젝트입니다.

AUTHORS 파일은 두 곳에 감사를 표합니다.

  • Stockfish: “Rapfi 는 Stockfish 코드 일부를 채택했다” 고 밝힙니다. 탐색 구조가 Stockfish 를 많이 닮은 이유입니다 (Part 3).
  • Pikafish 팀: 중국 장기(샹치) 엔진 Pikafish 팀이 엔진 테스트 플랫폼과 계산 자원을 제공했습니다. 2022년 11월 커밋부터 “fishtest 서버에 자동 업로드” 라는 메시지가 보이는데, Stockfish 식 분산 테스트로 수정 하나하나의 Elo 이득을 검증해 온 것입니다.

3.2 연대기#

flowchart TB
    A["2018 · Gomocup 데뷔 (자유룰만), 4위"] --> B["2019 · 전면 재작성, 2위"]
    B --> C["2021 · 표준·렌쥬 룰 추가"]
    C --> D["2022 · 첫 NNUE, 전 리그 우승"]
    D --> E["2022-09 · 현 저장소 첫 커밋 (0.38.02)"]
    E --> F["2023–2024 · mix8 → mix9"]
    F --> G["2024 · ARM64, WASM, MCTS"]
    G --> H["2025 · 논문, mix9svq"]
    H --> I["2026 · 2025년 빌드로 5개 리그 우승"]
    style D fill:#FFD700,color:#000000
    style I fill:#FFD700,color:#000000

2018년: Gomocup 에 처음 나와 자유룰 4위, 속기 4위를 했습니다. 이때는 자유룰만 지원했습니다. 이 2018년판은 dhbloo/Rapfi-gomocup 에 MIT 라이선스로 남아 있는데, README 에 “코드 구조가 이후 개발에 맞지 않아 더 이상 갱신하지 않는다” 고 적혀 있습니다.

2019년: Gomocup 소개문에 따르면 “알고리즘을 완전히 새로 썼고 속도가 개선” 되었습니다. 자유룰·속기 모두 2위였고 우승은 Embryo 였습니다.

2021년: 표준 룰과 렌쥬 룰을 지원하기 시작했고 Yixin-Board 용 기본 확장도 이때 들어갔습니다.

2022년: 전환점입니다. Gomocup 2022 소개문은 “Rapfi 는 이제 KataGomo 가 둔 대국으로 학습한 NNUE 를 갖췄고, 고전적 평가와 NNUE 를 혼합해 쓴다” 고 적습니다. 그해 Rapfi 는 무제한 리그까지 전 리그를 우승 했습니다.

2022년 9월 30일: 지금의 dhbloo/rapfi 저장소 첫 커밋이 “init from rapfi 0.38.02” 입니다. 즉 공개 저장소의 git 기록은 버전 0.38.02 에서 시작하고 그 이전 개발 이력은 들어 있지 않습니다. 첫 이슈가 10월 25일이므로 공개 시점은 2022년 10월 무렵으로 보이지만, 정확한 공개일은 1차 출처로 확인되지 않습니다.

2023~2024년: 신경망 구조가 mix8 (2023) 에서 mix9 (2024) 로 바뀌었습니다. 릴리스 노트에 적힌 Elo 이득은 뒤의 표에 있습니다.

2024년: 6월에 ARM64(NEON) 빌드, 7월에 WebAssembly 빌드가 들어갔습니다. 9월 2일 “initial implementation for MCTS” 커밋으로 몬테카를로 트리 탐색이 추가되어 10월에 병합되었습니다.

2025년: 3월 17일 arXiv 에 논문이 올라왔고, 5월에 현재 기본 신경망인 mix9svq 로 바뀌었습니다. 6월 15일 릴리스가 지금까지의 마지막 공식 릴리스입니다.

2026년: 새 릴리스는 없습니다. 대신 대규모 리팩터링(2026-07-23, 탐색·DB·튜닝 파이프라인 모듈화)과 신경망 추론 가속(0.43.02, 2026-05-30)이 master 에 들어갔습니다. Gomocup 2026 에는 2025년 빌드(“RAPFI25”) 그대로 출전해 5개 리그를 모두 우승했습니다.

3.3 공식 릴리스#

GitHub Releases 에는 네 개뿐입니다.

태그공개일내용
gomocup20232023-06-12Rapfi23. Yixin-Board GUI 동봉 Windows 빌드
2309032023-09-02mix8 NNUE. 이전 대비 75~100 Elo 향상 (자유룰-20 +88, 표준-15 +76, 렌쥬-15 +104)
2406092024-06-08mix9 NNUE. mix8 대비 20~55 Elo 향상. AVX-VNNI·ARM64 NEON 빌드 추가
2506152025-06-15mix9svq. 가중치 크기를 크게 줄이면서 10~50 Elo 향상. GUI 를 GTK3 로 옮겨 macOS 지원

릴리스 사이 간격이 1년 가까이 되고, 그 사이 master 에 들어간 개선은 릴리스되지 않은 채 쌓입니다. 서비스에 쓸 때 어느 쪽을 기준으로 삼을지는 Part 5 에서 다룹니다.

3.4 Gomocup 성적#

연도별 순위입니다(각 연도 Gomocup 공식 결과 페이지 기준). “—” 는 미참가 또는 리그 미개설입니다.

연도자유룰(20)자유룰-15속기표준렌쥬그해 Rapfi 가 못 딴 리그의 우승자
20184위—4위——자유룰 Yixin, 속기 Embryo
20192위—2위——Embryo 전 리그
20202위—2위——Embryo
2021공동 3위—3위2위3위자유룰·속기 Embryo, 표준·렌쥬 KataGomo
20221위—1위1위1위없음 (무제한 리그 포함 전관왕)
20231위—1위순위 없음1위표준 AlphaGomoku
20241위1위1위1위1위없음
20251위1위1위1위1위없음
20261위1위1위1위1위없음
  • 2021년 자유룰은 Rapfi 와 KataGomo 가 Elo 까지 같아 나란히 3~4위였습니다.
  • 2023년 표준 리그는 대국 중 27번 크래시가 나 “크래시 10% 초과” 규정에 걸려 Elo 가 매겨지지 않았습니다. 결과 페이지는 “이 리그에서 가장 잘 둔 AI 였다고 할 만하다” 고 덧붙였습니다.
  • Rapfi 는 Caro 룰을 지원하지 않아 Caro 리그에는 나오지 않습니다.
  • 2026년에는 한 해를 쉰 KataGomo 가 “2021년판보다 약 200 Elo 강해진” 버전으로 돌아와 5개 리그 모두 2위 를 했습니다. 자유룰-15 에서는 차이가 9 Elo 에 불과했습니다.

Gomocup 의 역대 Elo 목록(자유룰-20 기준)에서도 1위는 RAPFI 2025 (3073), 2위는 KATAGOMO 2026 (2879) 입니다.

3.5 논문#

2025년 3월 17일 arXiv 에 “Rapfi: Distilling Efficient Neural Network for the Game of Gomoku” (2503.13178) 가 올라왔습니다. 저자 순서는 Zhanggen Jin(동북대), Haobin Duan(베이항), Zhiyang Hang(칭화대, KataGomo 저자) 입니다. 제1저자가 Duan 이 아니라는 점 에 주의하십시오. 2026-09-24 현재 v1 만 있고 학술지 게재 정보는 없습니다.

논문의 핵심 주장은 셋입니다.

  1. 판을 선 모양의 작은 패턴들로 쪼개 미리 계산한 표(codebook)로 바꾸는 신경망 Mixnet 은, 같은 정확도의 ResNet 보다 계산량이 수천 배 적습니다. 알파-베타 탐색 기준으로 Mixnet small 이 초당 42만 8천 노드를 탐색할 때 ResNet-6b96f 는 484 노드입니다.
  2. 같은 시간을 주면 MCTS 에서 Mixnet 이 ResNet 기준선보다 300~400 Elo 강합니다.
  3. 알파-베타 탐색과 결합한 Rapfi 는 GPU 가 없는 CPU 전용 환경에서 KataGomo 보다 약 400 Elo 강합니다.

3번의 “CPU 전용” 이라는 단서는 반드시 붙여 읽어야 합니다. 이 단서가 Part 2 의 주제입니다. Mixnet 의 구조 자체는 Part 3 에서 소스 코드와 함께 봅니다.

논문 초록에는 “Botzone 의 오목 에이전트 520개 중 1위” 라는 주장도 있지만 논문 밖에서 확인할 수 없어 인용만 해 둡니다.

3.6 주변 프로젝트#

Rapfi 본체 저장소는 서브모듈로 다른 저장소 셋을 묶고 있습니다.

저장소역할라이선스
rapfi-networks신경망 가중치와 예제 설정 파일CC0 (퍼블릭 도메인)
pytorch-nnue-trainer신경망 학습 코드. KataGo 자가대국 데이터도 읽음라이선스 파일 없음
gomoku-calculatorGomocalc 웹앱 소스라이선스 파일 없음

엔진 코드(GPLv3), 가중치(CC0), 웹앱(라이선스 미표기)의 라이선스가 셋 다 다르다는 점 은 서비스를 만들 때 중요합니다. Part 5 에서 다시 짚습니다.


4. 정리#

  • 오목·렌쥬는 이미 풀린 게임이지만, 스왑 규정과 균형 오프닝 아래에서는 여전히 계산 싸움이고 엔진은 분석 도구이자 대국 상대로 쓰입니다.
  • 생태계는 Piskvork 텍스트 프로토콜 을 중심으로 엔진·GUI·대회가 느슨하게 연결되어 있습니다.
  • 현역 오픈소스 최상위권은 Rapfi(알파-베타 + NNUE)와 KataGomo(KataGo 기반 MCTS) 두 갈래이고, 두 프로젝트는 저자와 학습 데이터를 공유하는 사이입니다.
  • Rapfi 는 2018년 4위에서 출발해 2022년 NNUE 도입과 함께 정상에 올랐고, 2024~2026년에는 참가한 5개 리그를 모두 우승했습니다.

다음 편에서는 같은 문제를 전혀 다른 방식으로 푸는 KataGo(KataGomo)와 Rapfi 를 나란히 놓고 비교합니다.


References#

1차 출처 (2025~2026)#

배경 자료 (구자료, 연도 명시)#