Anthropic
Claude
아키텍처, 기획, Wave 3 준비도 게이트를 위한 깊은 추론 — 파이프라인이 처음 설계된 기준 모델.

βάθος, 그리스어로 “깊이, 심연”.
v0.4.0 · Rust 엔진 · 여섯 프로바이더, 웨이브마다 선택
팀은 모델에 종속되지 않습니다. 동일한 17개 역할, 7웨이브 파이프라인, 강제 게이트가 이제 당신이 고른 프런티어 모델 — 여섯 프로바이더 — 위에서 그대로 구동됩니다. 재작성도 종속도 없이, 역할과 웨이브마다 알맞은 모델을 배정하세요.
Anthropic
아키텍처, 기획, Wave 3 준비도 게이트를 위한 깊은 추론 — 파이프라인이 처음 설계된 기준 모델.
OpenAI
구현과 리팩토링에 강합니다. 별도 프로세스로 위임되므로 어떤 런타임과도 같은 웨이브에 설 수 있습니다.
Zhipu · Z.ai
이 저장소에서 라이브 연결이 실증된 유일한 교체형 백엔드. 대량 역할에 유능하고 비용 효율적입니다.
Moonshot AI
100만 토큰 플래그십과 코딩 전용 등급을, Moonshot의 Anthropic 호환 엔드포인트로.
DeepSeek
저비용의 플래그십과 고속 등급. 엔드포인트가 조용히 무시하는 필드까지 카탈로그에 적어 뒀습니다.
Alibaba Cloud
플래그십·균형·고속 등급을 Model Studio로. 엔드포인트가 고정 URL이 아니라 워크스페이스별이라는 점까지 반영했습니다.
역할별로, 웨이브별로 고르거나, 아예 손대지 않아도 됩니다. 결정론적 Rust 엔진, 게이트, 감사 체인은 그대로입니다. 라이브 API 연결은 Claude·Codex·GLM에서 확인했고, Kimi·DeepSeek·Qwen은 각 프로바이더 공식 문서를 근거로 배선·문서화했을 뿐 아직 실제 키로 실증하지는 않았습니다.
플랫폼에 맞게 Rust 엔진을 빌드하고, BATHOS_BIN이 엔진을 가리키게 한 뒤, 여섯 프로바이더 중 고른 모델로 Claude Code에서 파이프라인을 실행하세요.
1 — 코드 받기 & 엔진 빌드
2 — 프로젝트에 BATHOS 연동
1번에서 고른 플랫폼에 맞춰 바뀐다. 이 저장소를 작업 디렉터리로 쓰거나, βάθος를 직접 프로젝트에 연동한다.
# Option A — use this repo as your working directory
# .claude/ (commands, agents, hooks) is already wired — just open Claude Code here.
# Option B — adopt βάθος into your own project:
./install.sh --into /path/to/your/project # --force overwrites an existing .claude/
export BATHOS_BIN="/path/to/bathos/core/target/release/bathos"3 — 파이프라인 실행
프로젝트에서 Claude Code를 열고, /model-config로 모델을 고른 뒤 웨이브 커맨드를 순서대로 실행합니다.
/team-kickoff
/route /abs/path/to/project
/wave1-discovery /abs/path
/wave2-design /abs/path
/wave3-story-gate /abs/path
/wave5-implement /abs/path
/wave6-verify-report /abs/path
/team-confirmAgent Teams가 켜진 Claude Code v2.1.32 이상(모델은 여섯 프로바이더 중 선택), 그리고 Rust 툴체인(bash 훅에는 jq)이 필요합니다.
긴 LLM 대화 하나는 흐트러집니다. 설계와 구현 사이에서 맥락이 사라지고, 검증은 생략되며, 같은 모델이 스스로 작성하고 스스로 승인합니다. BATHOS는 이를 구조로 대체합니다.
대부분은 슬래시 커맨드를 입력할 뿐입니다. 그 커맨드가 내부에서 호출하는 결정론적 코어가 단일 Rust 바이너리입니다.
.claude/ 아래의 마크다운
웨이브를 실행하고 팀원을 스폰·검수·종료하는 슬래시 커맨드, 역할, 훅. 그 웨이브에 고른 프로바이더로 구동되는 당신의 메인 세션, 즉 리드가 이를 이끕니다.
단일 정적 Rust 바이너리
상태, 게이트, 웨이브 전환, 라우팅, 스토리 신선도, 플러그인을 계산하고 강제합니다. 훅과 커맨드가 자동으로 호출합니다.
작업은 명시적 웨이브를 거쳐 디스커버리에서 검증된 릴리스까지 이동합니다. 본류는 W0 → W1 → W2 → W3 → W5 → W6이며, IP·연구(W4)는 핵심 경로 밖의 선택 플러그인입니다.
W0
Caleb
선택적 사전 브리프. 브레인스토밍, 아이디어 벼리기, 제품 브리프.
W1
John · Caleb
리버스 엔지니어링과 시장 리서치로 USP를 벼립니다.
W2
Joshua → James · Jonnathan
기획이 웨이브를 게이트한 뒤, 아키텍처와 UX를 병렬로.
W3
Matthew + Thomas · Matthias
자족적 스토리 파일로 응축하는 구현 준비도 게이트.
W4
Mark · Nathanael
핵심 경로 밖의 선택 플러그인(특허와 논문).
W5
Phillip · Andrew · Stephen
스토리 파일을 기준으로 백엔드, 프론트엔드, ML을 빌드.
W6
Thomas · Michael · Hananiah · Martin
리뷰, 보안 감사, 동작 보존 리팩토링, 릴리스 리포트.
Wave 3 — 심장
Wave 3은 설계와 빌드 사이의 간극을 닫습니다. 스토리 엔지니어가 상류 작업을 자족적 스토리 파일로 응축하고, 모든 기술적 주장에 출처를 태깅하며, 독립 리뷰어가 승인하고, FAIL 시 훅이 구현 진입을 물리적으로 차단합니다.
디스커버리와 아키텍처와 구현은 같은 일이 아닙니다. 이제 같은 모델로 돌릴 이유도 없습니다. 웨이브마다 원하는 프로바이더를 지정해 두면, 엔진이 그 선언을 끝까지 지키게 합니다.
$ bathos model set --wave W2 --runtime claude
$ bathos model set --wave W5 --runtime kimi
$ bathos model set phillip --runtime codex
# a role assignment beats its wave
$ bathos model validate --wave W5
→ exit 2 · session is claude, W5 wants kimi
save → set env → restart → /cold-start웨이브마다 프로바이더를 선언해 두면, 엉뚱한 백엔드에서 웨이브가 시작되기 전에 validate가 막습니다.
대부분의 에이전트 작업은 사용량 한도에서 죽습니다. 팀원이 조용해지고, 그 머릿속에 있던 것도 함께 사라집니다. 여기서는 그저 일시정지입니다. 인수인계가 이미 전부 디스크에 있으니, 아직 여유가 있는 프로바이더로 팀을 다시 붙이기만 하면 웨이브는 멈춘 그 자리에서 이어집니다.
1 · 인식
출력이 멎은 팀원은 거의 크래시가 아닙니다. 열에 아홉은 계정 세션 한도이고, 그 팀원의 트랜스크립트에 그렇게 적혀 있습니다. 함부로 kill하지 마십시오. bathos model show가 헤더에 현재 세션 백엔드를 찍어 주므로, 어느 프로바이더가 말랐고 어떤 역할이 거기 서 있었는지 바로 보입니다.
2 · 재지정
bathos model set --wave W5 --runtime glm --model glm-5.3이 그 웨이브의 새 프로바이더를 model-plan.json에 기록합니다. 역할을 지정하면 그 역할만 덮어쓰고, bathos model unset은 다시 폴백으로 되돌립니다. 바뀐 항목만 기록될 뿐, 나머지 계획은 건드리지 않습니다.
3 · 재개
GLM·Kimi·DeepSeek·Qwen은 ANTHROPIC_BASE_URL을 바꿔 붙는 방식이고, 그 환경변수는 프로세스 전역입니다. 그래서 전환에는 저장과 env 교체와 새 세션이 듭니다. 뒤에서 조용히 갈아 끼워지는 일은 없습니다. 별도 프로세스로 위임되는 Codex는 그조차 들지 않습니다. /cold-start로 세션을 복원하면 웨이브는 디스크에 남은 산출물에서 다시 돕니다.
# 1 — which backend am I on, and what just ran dry?
$ bathos model detect # ANTHROPIC_BASE_URL → claude|glm|kimi|deepseek|qwen
$ bathos model show # effective runtime/model per role, and its source
# 2 — re-point the wave (or one role) at a provider that still has budget
$ bathos model set --wave W5 --runtime glm --model glm-5.3
$ bathos model set stephen-ml-engineer --runtime codex
# a role assignment beats its wave · unset returns it to the fallback
$ bathos model validate --wave W5
→ exit 2 · session is claude, W5 wants glm
1) take the whole batch to glm 2) move the role to claude / codex
3) split the wave: finish this batch, shut down, restart on glm
# 3 — env-swap runtimes only: save, swap, restart, resume
/save
$ export ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic
$ export ANTHROPIC_AUTH_TOKEN=… # DeepSeek reads ANTHROPIC_API_KEY instead
# restart Claude Code → /cold-start → re-run /wave5-implement엉뚱한 백엔드에서 웨이브가 시작되는 것을 validate가 막고, 스택트레이스 대신 빠져나갈 세 갈래를 출력합니다.
프로바이더를 바꿔도 나머지는 그대로입니다. 같은 17역할, 같은 PASS / CONCERNS / FAIL, 같은 감사 체인, 같은 웨이브 순서. 모델 ID는 allowlist가 아니라 자유 문자열이라 같은 계정의 더 싸거나 오래된 모델도 그대로 동작합니다. 한도를 넘기는 가장 빠른 길은 대개 다른 벤더로 건너가는 것이 아니라 한 등급 내려가는 것입니다.
BATHOS는 작업에 필요한 웨이브만 가동합니다. 라우터가 네 개의 stakes 축에서 레벨을 추천하고, 당신이 확정합니다.
| 레벨 | 작업 유형 | 가동 웨이브 |
|---|---|---|
| Lv0 | 버그 수정 / 사소한 변경 | W5 (+ 최소 W6) |
| Lv1 | 소기능 / 국소 리팩터 | 경량 W2 + W3(축약) + W5 + 경량 W6 |
| Lv2 | 표준 기능 / 모듈 | W1 + W2 + W3 + W5 + W6 |
| Lv3 | 신규 제품 / 대형 | W0–W6 (W4 선택) |
| Lv4 | 엔터프라이즈 / 딥테크 / 규제 | W0–W6 전체 + W4 |
리드는 당신의 메인 세션이며 결코 스폰되지 않습니다. 전문가는 웨이브별로 스폰되며, 동시성은 최대 3으로 제한됩니다.
모든 웨이브 게이트는 하나의 어휘로 말하며, 핵심 게이트는 코드로 강제됩니다. 근거 없는 자동 통과는 없습니다.
PASS
기준 충족, 블로커 없음
다음 웨이브로 진입
CONCERNS
조건부 통과, 비차단 리스크
리스크를 기록한 뒤 진행
FAIL
차단 결함
진입 차단, 보완 후 재게이트
모든 상태 변경은 키 기반 감사 해시 체인(HMAC-SHA256)에 기록됩니다. 단일 커맨드 bathos audit verify로 이력이 변경되지 않았음을 증명합니다.
그냥 두면 AI는 모든 과제에 새 코드로 답합니다. 새 추상화, 새 의존성, 파일 하나 더. Wave 5 구현자에게는 대신 명시적인 구현 규율이 주입됩니다. 무엇이든 쓰기 전에 7단 사다리를 올라가 먼저 걸리는 칸에서 멈춥니다. 해법에는 게을러도, 읽기에는 절대 게으르지 않게.
짐작으로 필요할 것 같은 것은 만들지 않고, 만들지 않았다고 한 줄로 말합니다. YAGNI.
여기 이미 사는 헬퍼·타입·패턴이 있으면 그것을 씁니다. 몇 파일 건너에 있는 것을 다시 구현하는 것이 가장 흔한 군더더기입니다.
그러면 표준 라이브러리가 합니다.
피커 라이브러리보다 날짜 입력, JS보다 CSS, 애플리케이션 코드보다 DB 제약.
그것을 씁니다. 몇 줄이면 되는 일에 새 의존성을 들이지 않습니다.
그러면 한 줄입니다.
가장 짧은 diff가 이깁니다. 단, 그 변경이 어디까지 건드려야 하는지 실제로 이해한 다음에.
여기는 줄이지 않습니다
사다리는 무엇을 만들지를 지배합니다. 정해진 범위를 얼마나 완전하게 만들지는 다른 축이고, 그것은 Boil the Ocean의 몫입니다. 둘을 맞바꾸지 않습니다.
// ponytail: single global lock, split per-wave
// if profiling shows contention
# ponytail: fixed backoff, go exponential once
# the API starts rate-limiting
$ /bathos-debt # CONCERNS: docs + ponytail: src
→ 2 open · 1 no-trigger의도적으로 자른 부분은 그 한계와 다시 볼 트리거를 코드에 남기고, /bathos-debt가 그것을 한 장부로 모읍니다. 트리거가 없는 마커는 따로 표시됩니다. 조용히 썩는 것이 바로 그것들이니까요.
강도는 스위치 하나로: /bathos intensity lite · full · ultra · off.
엔지니어링 원칙은 Dietrich Gebert의 ponytail(MIT)에서 가져왔습니다. 페르소나와 브랜딩은 가져오지 않았습니다 — BATHOS는 캐릭터가 아니라 오케스트레이션 제품입니다.
핵심 불변식(상태, 게이트, 라우팅, 스토리 신선도)은 단일 정적 Rust 바이너리에 있어, 언제나 동일한 방식으로 계산되고 강제됩니다.
$ echo '{"scope":"feature","novelty":true}' \
| bathos --state-dir _state route decide
→ {"recommended_level":2,"requires_confirmation":true}stakes로부터 레벨을 추천합니다. 엔진이 제안하고, 당신이 확정합니다.
모든 작업 세션은 자체완결 HTML 리포트로 끝납니다 — 세션 종료 시 자동으로 작성되거나, /taskreport로 필요할 때 만듭니다. 디스크와 git의 사실만으로 조립하며, 지어내지 않습니다.
result_report/
├─ task_report_20260716_104150_session_no12.html
└─ … # one file per session, auto-numbered
# on /exit → SessionEnd hook · or run /taskreport세션당 리포트 하나, 순번대로 — 빌드 전체의 종이 기록.
웨이브 시작 전에 역할마다 모델과 런타임을 배정하고, 실행 과정을 실시간 패널로 지켜봅니다 — 리드에게서 키보드를 뺏지 않으면서.
$ bathos model set james --runtime claude --model opus
$ bathos model set phillip --runtime codex
$ bathos model validate --wave W5 # mixed-batch guard
→ PASS
$ bathos panes --mode tui --wave W5 # live · read-only웨이브 전에 모델을 배정하고 실행을 지켜봅니다 — 읽기 전용, 당신의 제안을 위한 인박스와 함께.