본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 05. 12:38

옆에 있는 Codex에게 "리뷰해줘". cmux로 만드는 간단한 AI 오케스트레이션

요약

cmux 터미널 환경에서 Claude Code와 Codex CLI 등 서로 다른 AI 에이전트 간의 대화를 자동화하는 cmux-bridge 스킬을 소개합니다. 복사 및 붙여넣기 없이 자연어 지시만으로 에이전트 간 정보를 전달하고 역할을 분담하여 오케스트레이션을 수행할 수 있습니다.

핵심 포인트

  • cmux 터미널 페인 간 AI 에이전트 양방향 대화 지원
  • 수동 복사-붙여넣기 없는 에이전트 간 워크플로우 자동화
  • 자연어 지시를 통한 설계, 구현, 리뷰 역할 분담 가능
  • npx skills를 통한 간편한 설치 및 멀티 워크스페이스 지원

cmux로 터미널을 분할하여 Claude Code와 Codex CLI를 나란히 두고 사용하는 분들이 많을 것이라 생각합니다. 하지만 한쪽의 성과를 다른 쪽에 전달하고 싶을 때, 예를 들어 Claude가 작성한 코드를 옆에 있는 Codex에게 리뷰시키고 싶을 때 등, 결국에는 수동으로 복사하여 붙여넣기(Copy-paste)하며 중개하고 계시지 않나요?

그래서 복사하여 붙여넣는 중개 과정이 필요 없는 스킬을 만들어 보았습니다.

TL;DR

cmux-bridgecmux의 터미널 페인(Terminal pane)에서 동작하는 AI 에이전트들끼리 전용 API 없이도 양방향으로 대화하게 만드는 스킬입니다.

구조는 단순하며, 전용 에이전트 간 API를 사용하지 않습니다. cmux의 터미널 페인에 텍스트를 흘려 넣는 것만으로 옆 페인의 Claude Code나 Codex CLI에게 말을 겁니다.

npx skills add paichi/cmux-bridge -g

이것을 설치하면, Claude Code로 작업하면서 "옆의 Codex 페인에 이 리뷰를 부탁해"라고 자연어로 지시하는 것만으로 에이전트 간의 대화가 시작됩니다.

무엇을 할 수 있는가

cmux-bridge가 해결하는 문제는 "터미널에 나열된 여러 AI 에이전트를 인간이 수동으로 복사하여 붙여넣으며 중개하지 않고 대화하게 하고 싶다"는 과제입니다.

실제로 두 개의 페인(왼쪽: Claude Code / 오른쪽: Codex CLI)이 cmux-bridge를 통해 메시지를 주고받는 모습은 다음과 같습니다 (배속 재생).

Claude Code と Codex CLI が cmux-bridge でメッセージを往復している様子

1. 옆 페인에 가볍게 상담하기

가장 단순한 사용법은 현재 작업 중인 에이전트로부터 옆 페인의 에이전트에게 일문일답(Q&A) 형식으로 던지는 것입니다.

cmux-bridge를 사용하여 옆의 Codex 페인과 함께 이것을 구체화해줘.
리뷰 담당인 Claude Code 페인에게 이 구현 플랜을 리뷰해달라고 해줘.
다른 Codex 페인에게 이 에러의 원인을 조사해달라고 해줘.

2. 역할을 나누어 오케스트레이션(Orchestration)하기

일문일답뿐만 아니라, 여러 에이전트에게 역할을 할당하여 설계·구현·리뷰·조사를 대화로 연결할 수도 있습니다.

cmux-bridge로 `Implement Codex` 페인에 구현 플랜을 부탁하고,
그 후 `Review Claude` 페인에서 리뷰해줘.
`Design Claude` 페인에서 설계하고, `Research Codex` 페인에서 조사를 진행해줘.

포인트는 어느 페인이 어떤 역할인지를 지정해 주는 것입니다. 에이전트는 목적지가 모호하면 안전하게 선택할 수 없으므로, 근처의 에이전트 이름, 페인 타이틀, 역할명 등으로 지정합니다.

상대는 옆 페인에만 국한되지 않습니다. 다른 cmux 워크스페이스에서 동작하는 페인에게도 상담할 수 있습니다. "example-project 워크스페이스의 리뷰용 Codex에게 물어봐"와 같이 워크스페이스를 덧붙여 부탁하면 해당 페인으로 메시지가 전달됩니다.

설치 및 요구사항

설치

현재 사용 중인 에이전트용으로만 설치하려면 다음과 같습니다.

npx skills add paichi/cmux-bridge -g

npx skills의 설치를 지원하는 모든 에이전트에 설치하고 싶다면 다음과 같습니다.

npx skills add paichi/cmux-bridge -a '*' -g -y

npx skills는 vercel-labs/skills에서 유래한, 스킬을 각 에이전트의 스킬 디렉토리에 배포하기 위한 도구입니다.

요구사항

요구사항은 다음과 같습니다.

  • cmux 0.63.2 이상
  • bash 3.x 이상
  • python3
  • 참여하는 AI 에이전트마다 1개의 cmux 터미널 페인
  • 각 에이전트가 자신의 cmux 터미널 페인 안에서 동작하고 있을 것
  • 각 에이전트가 스킬을 로드할 수 있을 것
  • 각 에이전트가 동일한 cmux 페인에서 셸 커맨드(Shell command)를 실행할 수 있을 것

구조: 2층 구조

cmux-bridge는 역할이 다른 두 개의 레이어로 구성되어 있습니다.

레이어파일역할
행동 규범SKILL.md에이전트에게 「언제·어떻게 사용할지」, 「해서는 안 될 일」을 가르치는 지시서
실행계scripts/cmux-bridgecmux의 CLI를 호출하여 실제로 텍스트를 보내는 Bash 래퍼 (wrapper)

그리고 배포물에는 보충 자료로서 2개의 references/와 Codex/OpenAI UI용 메타데이터(agents/openai.yaml)가 동봉되어 있습니다.

SKILL.md … 에이전트에 대한 지시
agents/openai.yaml … OpenAI/Codex UI용 메타데이터
references/ … 커맨드·프로토콜 상세 (필요할 때만 읽음)
...

전용 에이전트 간 API는 갖추지 않았으며, 수행하는 작업은 cmux의 페인 (pane)에 텍스트 한 줄을 보내는 것뿐입니다. 그렇기 때문에 인간이 대화를 화면에서 그대로 관찰할 수 있습니다.

메시지가 흐르는 경로를 도식화하면 다음과 같습니다.

메시지 프로토콜

브릿지의 메시지는 한 줄이며, 송신자와 회신처가 반드시 포함됩니다.

[cmux-bridge from:<sender> reply-to:<surface:N>] <body
  • from: … 송신자 이름 (예: claude-code, codex)
  • reply-to: … 회신을 보낼 대상 페인 (예: surface:104)
  • 본문 … 실제로 전달하려는 내용

나아가 여러 턴(turn)에 걸친 화제에서는 본문 맨 앞에 「발화 종류 (act)」와 「화제 ID (id)」를 붙입니다.

[act:ask id:review-1] 이 변경 사항을 리뷰해 주세요.

이를 통해 한 줄의 메시지만으로 「누가 보냈고」, 「어디로 회신하며」, 「어떤 화제의」, 「어떤 종류의 발화인지」를 모두 알 수 있습니다.

act에 사용하는 값은 다음 8가지입니다 (SKILL.md 기준).

act의미
ask질문하기
inform정보 공유하기
propose플랜이나 선택지 제안하기
react찬성·반대·반응하기
clarify명확화 요구하기
think수신했음/생각 중임을 알리기
decide결정하기
close화제 종료하기

포인트는 thinkclose의 처리 방식입니다. 상대가 think (생각 중)를 보내면 같은 화제로는 더 이상 보내지 않고, close (종료)에는 회신하지 않습니다 (「알겠습니다」나 「감사합니다」도 보내지 않음). 인간이라면 맞장구를 치고 싶어질 상황이지만, AI끼리 그렇게 하면 대화가 끝없이 이어집니다. 발화 종류를 명시함으로써 대화의 종료를 결정할 수 있도록 설계했습니다.

실제 대화를 시계열로 나열하면 다음과 같은 이미지입니다.

그 외의 장치들

메시지 형식 외에도 「AI 간의 대화가 깨지지 않도록 하기 위한」 몇 가지 장치가 들어 있습니다. 깊게 파고들지 않고 요점만 소개하겠습니다.

  • 자기 루프 보호 (Self-loop protection): 대상이 자기 자신인 경우, 설령 강제 플래그를 붙이더라도 반드시 거부합니다. AI가 실수로 자신의 페인에 메시지를 보내 무한 루프에 빠지는 사고를 물리적으로 차단합니다.
  • 종료 코드로 실패 분류: 「성공/실패」의 이진 값이 아니라, 0~9 사이의 값으로 실패 종류를 세밀하게 구분합니다. 예를 들어 「cmux 외부에서 동작 중」, 「대상지가 터미널이 아님」, 「대상을 찾을 수 없음」 등이 별도의 코드로 나뉘어 있어, 에이전트가 코드를 보고 다음 행동을 자율적으로 결정할 수 있습니다.
  • 과도한 관찰 방지 (폴링 규율): 상대 페인의 화면을 읽는 작업은 토큰을 낭비하므로 빈번한 폴링 (polling)을 금지합니다. 회신이 없더라도 잠시 기다렸다가 몇 번만 확인하도록 규칙을 정했습니다.
  • /clear 명령어 처리: 브릿지 메시지는 맨 앞에 헤더가 붙기 때문에, 그대로 두면 /clear가 행두에 오지 않아 슬래시 커맨드 (slash command)로 인식되지 않습니다. 그래서 /clear 전용 서브 커맨드를 따로 마련했습니다.
  • 송신자 자동 판별: Claude Code인지 Codex CLI인지 환경 변수로부터 자동으로 판별하여 from:에 넣으므로, 보통은 아무 설정 없이 사용할 수 있습니다.

세부 사양(종료 코드 목록이나 송신자 판별 우선순위 등)은 SKILL.mdreferences/에 적혀 있으므로, 관심이 있다면 살펴보시기 바랍니다.

claude -p를 사용하지 않고 다른 페인(pane)의 Claude에게 부탁할 수 있습니다.

부수적 효과: 설계와는 별개의 부수적 효과로서, 과금 측면에 대해서도 언급해 두겠습니다.

스크립트나 다른 에이전트(Agent)로부터 Claude에게 프로그래밍 방식으로 작업을 던지는 방법으로는, 헤드리스 모드(Headless mode)인 claude -p(비대화형 원샷 실행)가 일반적입니다. 그리고 2026년 6월 15일부터 시행되는 변경 사항에 따라, claude -p나 Claude Agent SDK를 통한 이용은 Pro / Max 등의 구독(Subscription) 범위에서 벗어나, API 요금으로 과금되는 별도의 월간 크레딧에서 소비되게 됩니다. 대화 모드인 Claude Code(터미널 / IDE의 TUI)는 기존과 동일하게 구독 범위 내에 유지됩니다 (공식 도움말).

cmux-bridge는 새로운 claude -p 프로세스를 실행하는 것이 아니라, 이미 대화 모드로 동작 중인 다른 페인의 claude에게 텍스트를 밀어 넣을 뿐입니다. 대상이 되는 Claude는 대화 세션(Interactive session)으로 동작하기 때문에, claude -p 측의 별도 크레딧을 소비하지 않고 구독 범위 내에서 의뢰 및 오케스트레이션(Orchestration)을 할 수 있습니다.

요약

옆 페인에 있는 Codex에게 "이것 좀 리뷰해줘"라고 부탁하는 것만으로, 적절하게 작업을 대행해 주는 스킬을 만들었습니다. 단독 이용은 물론, 여러 AI를 조합한 오케스트레이션도 가능합니다. 부디 부담 없이 다양한 상황에서 마음껏 사용해 보세요.

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0