Agon AI
<p align="center">
<img src="https://raw.githubusercontent.com/KERNlang/agon/HEAD/assets/agon-hero.svg" alt="Agon — Any AI can join. They compete. You ship." width="820">
</p>
<p align="center">
<img src="https://img.shields.io/badge/node-%3E%3D22-brightgreen" alt="Node.js >= 22">
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License: MIT">
<img src="https://img.shields.io/badge/TypeScript-ESM-blue" alt="TypeScript ESM">
<img src="https://img.shields.io/badge/rating-Glicko--2-red" alt="Glicko-2 rated">
</p>
다중 AI 오케스트레이션 CLI — 엔진들이 구축을 위해 경쟁하고, 사고를 위해 협업합니다.
Agon AI는 세계 최고의 AI 엔진들을 사용자의 소프트웨어 엔지니어링 문제에 두 가지 방식으로 적용합니다. 첫째, 구현(implementation) 측면에서 경쟁합니다: 동일한 작업이 격리된 git worktree 내에서 실행되며, 가장 좋은 솔루션이 승리하여 자동으로 적용됩니다. 둘째, 판단(judgment) 측면에서 협업합니다: 브레인스토밍 패널이 종합(synthesis)에 기여하고, 지정된 역할과 의장이 있는 평의회 원탁 토론, 재판소 토론, 다중 엔진 검토 합의(multi-engine review consensus)를 통해 단일 모델에 의존하는 대신 모델들의 강점을 모읍니다. Glicko-2 평가는 시간이 지남에 따라 각 모델의 성능을 지속적으로 추적하므로 라우팅이 점점 더 정교해집니다.
npm install -g @kernlang/agon
목차
Agon이란 무엇인가?
<p align="center">
<img src="https://raw.githubusercontent.com/KERNlang/agon/HEAD/assets/agon-splash.png" alt="The Agon REPL on launch — AGON banner, version, engine roster, and example prompts mapped to modes." width="820">
</p>
<p align="center"><sub class="agon">실행 시의 <code class="agon">REPL</code> — 사용자의 엔진 목록과 올바른 모드로 라우팅되는 일반 프롬프트.</sub></p>
Agon AI는 개발자가 AI 코딩 어시스턴트와 상호 작용하는 방식을 근본적으로 변화시킵니다. 단일 모델에 의존하고 최상의 결과를 기대하기보다는, Agon은 **경쟁적 오케스트레이션(competitive orchestration)**을 도입합니다. 사용자는 작업을 한 번만 설명하면 되고, Agon이 이를 여러 모델에 동시에 전송합니다. 이 모델들은 솔루션을 구현하기 위해 경쟁하며, 사용자는 최고의 결과물을 검토하고 적용할 수 있습니다.
내부적으로 Agon은 정교한 **작업 트리 격리 모델(worktree isolation model)**을 사용합니다. 경쟁이 시작되면, Agon은 참여하는 각 엔진을 위해 임시적이고 숨겨진 git 작업 트리를 생성합니다. 이를 통해 엔진들은 서로 방해하거나 주 작업 디렉터리를 어지럽히지 않으면서 파일을 수정하고, 테스트를 실행하며, 반복 작업을 수행할 수 있습니다. 승리한 구현체만이 활성 브랜치에 병합됩니다.
이러한 작업을 효율적으로 라우팅하는 것이 Agon의 지능형 오케스트레이션 두뇌인 Cesar입니다. Cesar는 모든 상호 작용, 성공 및 실패를 모니터링하며 각 엔진에 대한 내부 **Glicko-2 평점 시스템(rating system)**을 업데이트합니다. 시간이 지남에 따라 Cesar는 어떤 엔진이 특정 작업 클래스—예: 테스트 작성, React 컴포넌트 리팩토링, 데이터베이스 쿼리 최적화 등—에서 뛰어난지 학습하고, 미래의 작업을 해당 특정 도메인에 가장 높은 평점을 받은 엔진으로 자동으로 라우팅합니다.
Agon은 단순히 경쟁에 관한 것이 아니라, AI 협업을 위한 통합 플랫폼입니다. 논란이 되는 아키텍처 결정을 두고 엔진들이 토론하도록 하거나, 신뢰도 기반의 가중 토큰 할당으로 솔루션을 브레인스토밍하거나, 또는 단순히 강력한 파이프라인 루프를 실행해야 하는 경우에 관계없이, Agon은 다중 에이전트 워크플로우를 위한 궁극적인 터미널 네이티브 인터페이스를 제공합니다.
요구 사항
- Node.js >= 22
- Git 저장소
- 전역적으로 설치된 지원 AI CLI가 하나 이상 필요함 (예: Claude Code, Codex, Antigravity) 또는 API 기반 엔진용 API 키
- 선택 사항: Python 3.10+를 사용하여 Python 사이드카로 실행되는 의미론적 기능(semantic features)을 활성화할 수 있습니다 — 의미론적 히스토리 검색 (
agon history --query), forge fitness에서의 tree-sitter 구문 유효성 검사, brainstorm 패러프레이즈 중복 제거 (dedup), 그리고 작업 분류기. Agon은 Python 없이도 실행되지만, 이 기능들은 문자열/정규식 경로로 대체됩니다.
설치 (Installation)
npm으로 설치 (권장)
npm install -g @kernlang/agon
이것이 전부입니다 — 하나의 명령어로 클론이나 빌드 과정 없이 완료됩니다. 이 명령어는 엔진 기반(engine substrate)인 (@kernlang/agon-engines)과 의미론적 사이드카(@kernlang/agon-dedup)를 자동으로 가져옵니다. 그런 다음 모든 Git 저장소에서 agon을 실행하여 대화형 REPL을 시작합니다.
소스에서 설치 (기여자)
git clone https://github.com/KERNlang/agon.git
cd agon
...
설치가 완료되면, 모든 Git 저장소에서 agon을 실행하여 대화형 REPL을 시작하십시오. 모든 엔진, 작업 트리 경로(worktree path), 그리고 Python 사이드카가 올바르게 해결되었는지 확인하려면 agon doctor를 실행하세요.
핵심 모드 (Core Modes)
Agon은 다양한 개발 과제에 적합하도록 여러 작동 모드를 제공합니다.
어떤 모드를 사용해야 할까요?
주제가 아닌 **문제의 형태(shape)**로 선택하십시오:
| 필요할 때… | 사용 | 이유 |
|---|
| 아이디어 / 옵션 / “무엇을 놓치고 있나요?” | brainstorm | 저렴하고 빠릅니다 — 엔진들이 신뢰도를 입찰하고 접근 방식과 격차를 제시합니다. |
| ... | | |
- 아이디어 필요 →
brainstorm
- 의사 결정 토론 필요 →
tribunal
- 정제된 단일 결과물(계획, 명세서(spec), PR 설명, 아키텍처 노트, 승인 기준(acceptance criteria), 마이그레이션 계획) 필요 →
synthesis
- 코드 검토 필요 →
review
- 테스트가 실제로 작동하는지 알고 싶을 때 →
mutate
- 경쟁적으로 코드를 구축해야 할 때 →
forge
- 가장 빠른 녹색 해결책(green solution)이 필요할 때 →
speculate
- 작업 큐 실행이 필요할 때 →
goal
- 행동하기 전에 문제에 대해 깊이 생각해야 할 때 →
think
- 커밋하기 전에 자신의 결정에 도전해보고 싶을 때 →
nero
- 신뢰할 수 있고 검증된 출처를 통해 라이브러리/레포지토리/명세서/사실 조회가 필요할 때 →
research
- 브라우저 구동이 필요한 리서치나 페이지 디자인 확인이 필요할 때 →
chrome
- 높은 위험을 감수하는, 되돌리기 어려운 결정에 전체 패널의 의견이 필요할 때 →
council
- 책상에서 벗어나 방해받지 않고 전체 개방형 작업을 구축해야 할 때 →
conquer
forge vs. speculate vs. synthesis — 세 가지 모두 여러 엔진을 실행하지만, 승자를 고르는 방식이 다릅니다:
- forge는 모든 후보를 테스트와 비교하여 점수를 매기고 최적의 것을 적용합니다.
- speculate은 통과하는 첫 번째 후보를 가져옵니다. 어떤 정답에 도달하는 가장 빠른 경로입니다.
- synthesis는 엔진들이 서로의 초안을 개선하고, 심사위원(judge)이 진화된 승자를 고릅니다. 명확한 합격/불합격 테스트가 없는 경우(계획, 명세서, 산문, 아키텍처 등)에 사용합니다.
Forge
경쟁적인 코드 생성입니다. 엔진들이 격리된 git 작업 트리에서 동일한 작업을 놓고 경쟁합니다. 승자의 변경 사항은 자동으로 메인 브랜치에 적용됩니다.
/forge "사용자 서비스에 Redis 캐싱 계층 구현"
forgeEnableSynthesis가 활성화되면, 설정 가능한 synthesizer 엔진이 다른 엔진들의 비평을 사용하여 승자를 개선하고 모든 것을 아우르는 최적의 결과물을 만듭니다. 이는 대화형 REPL에서는 Cesar, agon goal 하에서는 judge, 또는 다른 곳에 있는 이름 지정된 엔진일 수 있습니다.
Synthesis
경쟁적인 교차 수분(cross-pollination)입니다. 엔진들이 독립적으로 초안을 작성한 다음, 라운드별로 서로의 초안을 개선하고 심사위원이 최고의 진화된 결과를 선택합니다.
Think
본질적인 순차적 사고(Native sequential thinking). 하나의 엔진이 코드를 작성하기 전에 문제를 구조화되고 번호가 매겨진 생각들로 분해합니다. 이 스캐폴드(scaffold)는 가장 게으른 답변을 피하도록 강제합니다. 선택적이고 조합 가능하며, 미해결 질문을 노출시키고 agon goal에 바로 전달할 수 있는 정제된 사양(spec)을 방출합니다.
agon think "Should the rate limiter use a token bucket or a sliding window?"
agon think "Rework auth to JWT" --strategy reflexion
agon think "Design the cache layer" --strategy tot --branches 5
...
-
전략(Strategies) (메커니즘은 교체 가능한 ThinkChain 상태 기계):
linear: 클래식 순차적 사고 방식입니다.
reflexion: 각 단계는 비평(critique)을 거친 후 수정(revision)이 강제됩니다 (반-게으름).
tot: 트리 오브 쏘츠(tree-of-thoughts): 브랜치들이 스스로 점수를 매기고, 가장 좋은 것을 유지하며 나머지는 가지치기합니다.
graph: 그래프 오브 쏘츠(graph-of-thoughts): 분기한 후 가장 강력한 아이디어들을 하나의 결정으로 병합합니다.
hypothesis: 경쟁하는 가설 상태를 유지하고, 판별적 증거(discriminating evidence)를 찾아내어 실패작을 제거합니다.
-
단계 및 브랜치(Steps & branches) — --steps N (1–20)은 체인 길이를 제한하며; --branches N (1–8)은 브랜치 ID가 지정된 대체 경로를 탐색합니다 (tot의 경우 점수와 함께).
-
적대적 비평가(Adversarial critic) — --critic <engine>는 완성된 체인을 공격하는 두 번째 엔진을 가동합니다 (단일 모델 원본으로는 불가능한 교차 엔진 검사).
-
도구 기반 접지(Tool-grounding) — 존재하지 않는 리포지토리 파일을 인용하는 생각은 플래그가 지정됩니다 (--no-ground로 비활성화). 따라서 계획이 goal에 환상적인 경로를 전달하는 일이 없습니다.
-
기계 검증(Machine-validated) — 실제로 비평하고 수정하지 않은 reflexion 체인은 ThinkChain 기계에 의해 거부됩니다.
-
다른 모드와 조합됨(Composes into other modes) — agon goal --think는 먼저 의도에 대해 분해 과정(decompose pass)을 실행합니다(하위 문제 및 미해결 질문 노출, 정제된 사양 제공). 따라서 장시간의 자율적 실행이 불완전하게 이해된 상태에서 시작되는 것을 방지합니다. cesarThinkFirst가 활성화되면 ( agon config set cesarThinkFirst true) Cesar는 행동하기 전에 단계별로 추론합니다.
Nero
적대적 자기 검증(Adversarial self-challenge) — Agon이 제시하는 일종의 악마의 변호사(devil's-advocate) / 이블 트윈 패스(evil-twin pass)에 대한 답변입니다. 하지만 이는 사용자의 추론을 반영하는 것이 아니라 실제 두 번째 모델을 사용합니다. 의사결정과 그 추론 과정을 입력하면, 구조적으로 적대적인 비평가(critic)가 구체적인 실패 시나리오(INVERSION / PRE-MORTEM / SECOND-ORDER)로 이를 공격하고, 원본이 정확하다는 자신감 수준을 보고하며, 최종 판정(verdict): **결함 있음(FLAWED) / 주의하여 진행(PROCEED WITH CAUTION) / 건전함(SOUND)**으로 마무리합니다.
agon nero "Redis에 5분 TTL로 인증 토큰 캐시" --reasoning "Redis는 워커 간 공유되며 빠르다"
agon nero "오늘 밤 마이그레이션을 배포하자" --confidence 80
agon nero "이벤트 소싱으로 전환하기" --focus "재생(replay) + 스키마 진화(schema evolution)"
...
- 비평가는 최고 등급의 구축가가 아닌, 최고의 적대자입니다. 선택 순서는 비평 → 재판소(tribunal) → 글로벌 → 무작위입니다. 이는 전용
critique 분야(적대적/레드팀 재판과 위원회에 의해 제공되는 평가된 Glicko 등급 — Ratings 참조)를 선호하며, 실패할 경우 tribunal 등급으로, 그다음 글로벌로, 아무것도 경쟁하지 않은 경우에는 무작위 활성 엔진을 사용합니다. agon leaderboard --mode critique에서 순위를 확인할 수 있습니다.
- 자신의 숙제를 절대 채점하지 않습니다(Never grades its own homework) — 도전받는 저자는 후보 풀에서 제외되므로, 세션 중 Cesar의 도전은 이용 가능한 다른 엔진에 의해 답변됩니다.
- 외부 CLI에도 적용 가능합니다 —
agon nero (및 agon call nero "<결정>" --jsonl)는 Codex / Antigravity / Claude가 내부 자가 비평 대신 사용해야 할 모드입니다. 이는 그들에게 진정으로 다른 모델을 적대자로 제공합니다.
연구 (Research)
출처가 명시된(cited), 웹 기반의 지식 탐색입니다. Agon의 강점은 엔진 경쟁에 있는 것이 아니라, API 키 없이도 Agon 내에서 모델을 중심으로 발견과 검증이 이루어진다는 점입니다. Agon은 질문을 분류하고 (npm registry, GitHub repo search, MDN, IETF/RFC datatracker, Stack Overflow, Wikipedia)와 같이 키가 필요 없는 1차 출처 엔드포인트에서 소스를 가져옵니다(WebFetches them). 이후 엔진이 해당 콘텐츠에만 근거하여 인라인 [n] 인용과 함께 답변을 초안 작성하고, Agon은 모든 인용을 재가져오고 검증하며, 만료되었거나 다른 호스트로 리다이렉트되거나 또는 페이지에 인용된 용어가 언급되지 않은 경우 플래그를 지정합니다. 모델은 URL을 환각적으로 생성할 수 있지만, 그 URL에 대한 Agon의 가져오기(fetch)가 성공하도록 만들 수는 없습니다.
agon research "how does the p-retry npm package back off?"
agon research "the WHATWG URL parsing spec" --count 8
agon research "RFC 7231 cacheability rules" --engine codex
...