MadoHub Docs

에이전트 라우팅

지능적인 변환으로 AI 에이전트 간에 출력을 자동으로 전달합니다.

에이전트 라우팅은 MadoHub의 핵심 기능입니다. 한 에이전트가 작업을 완료하면, MadoHub는 결과를 자동으로 추출하고, 실행 가능한 프롬프트로 변환한 후, 다른 에이전트에게 전달할 수 있습니다.

작동 방식

  1. 트리거 — 연결된 소스 타일이 설정된 트리거 유형(유휴 감지, 완료 감지, 키워드 매칭, 또는 연속 모드)에 따라 발동합니다.
  2. 추출 — MadoHub가 에이전트의 마지막 응답을 읽습니다. Claude Code의 경우 JSONL 세션 파일을 사용하여 깔끔하게 추출합니다. 다른 에이전트는 터미널 출력을 직접 읽습니다.
  3. 변환 — 추출된 출력이 대상 에이전트용 프롬프트로 변환됩니다. AI 기반 재작성, 템플릿 래핑, 또는 원시 전달을 사용할 수 있습니다.
  4. 전달 — 변환된 프롬프트가 인간과 유사한 지연(줄당 50–80ms)으로 대상 터미널에 한 줄씩 입력되고, 에이전트에 맞는 Enter 시퀀스로 제출됩니다.

JSONL 세션 해결

Claude Code의 경우, MadoHub는 세션 로그 파일을 읽어 깔끔한 응답을 추출합니다:

  1. 터미널의 tmux 페인을 찾은 후, 프로세스 트리(ps -eo pid=,ppid=,comm=)를 너비 우선으로 탐색하여 명령 이름에 claude/codex/amp/opencode가 포함된 첫 번째 자손 프로세스를 찾습니다. 이 PID가 에이전트 프로세스입니다.
  2. ~/.claude/sessions/{PID}.json(session id가 아닌 에이전트의 PID로 키가 지정됨)을 읽어 sessionId 필드를 추출합니다.
  3. ~/.claude/projects/의 모든 하위 디렉토리를 스캔하여 {sessionId}.jsonl이라는 이름의 파일(트랜스크립트)을 찾습니다.
  4. JSONL을 파싱하여 마지막 어시스턴트 메시지를 추출합니다.

이를 통해 ANSI 코드와 서식 아티팩트를 피하고 원시 터미널 스크래핑보다 훨씬 깔끔한 콘텐츠를 얻을 수 있습니다.

별도로, cwd_to_project_dir()는 타일의 작업 디렉토리를 프로젝트 디렉토리에 매핑합니다. /를 -로 치환하며, 정확히 일치하는 항목이 없으면 부분 문자열 검색으로 대체합니다.

트리거 유형

유형동작
on-idle완료 키워드 매칭(IDLE_DELAY_MS)을 기다린 후 8초간의 침묵을 기다립니다. 기본값이자 가장 안정적입니다.
on-completeon-idle과 동일하게 처리됩니다: 동일한 완료 키워드 매칭을 기다린 후, 동일한 8초 침묵 지연이 지나야 발동합니다.
on-keyword출력에서 사용자 정의 정규식 패턴이 매칭될 때 발동합니다.
always모든 새 터미널 출력을 지속적으로 스트리밍합니다.

변환 유형

유형설명
ai-routingAI 모델을 사용하여 대상 에이전트에 맞는 컨텍스트 인식 프롬프트를 생성합니다. 설정에서 API 키가 필요합니다. 사용자 정의 템플릿을 지원합니다.
prompt-wrap사용자 제공 템플릿으로 출력을 감쌉니다. 변수: {output}, {round}, {maxRounds}, {source}.
full-output터미널 출력의 마지막 30줄을 그대로 전송합니다.
raw터미널 출력의 마지막 10줄을 전송합니다.
summaryAI가 생성한 출력 요약을 전송합니다.

라우팅 디스패치는 기본적으로 madoagent 경로를 사용합니다(legacy, shadow도 선택 가능).

콘텐츠 전달

MadoHub는 50–80ms의 지연으로 대상 터미널에 한 줄씩 콘텐츠를 입력하여 인간의 입력을 시뮬레이션합니다. Enter 키 동작은 에이전트마다 다릅니다:

  • Claude Code, Codex, Amp, OpenCode: 더블 캐리지 리턴(\r\r)으로 제출합니다. Codex는 800ms의 사전 지연과 두 번의 입력 사이 200ms 간격을 가지며, 나머지 에이전트는 500ms의 사전 지연을 사용합니다.
  • Shell: 단일 개행(\n)으로 제출합니다.

루프 보호

라우팅 연결에는 무한 루프를 방지하기 위한 내장 안전장치가 있습니다:

설정기본값범위설명
maxRounds51–20자동 비활성화 전 최대 라우팅 사이클 수.
cooldownMs3s1–30s트리거 간 최소 지연.
stopKeyword—임의의 문자열감지 시 라우팅을 중지합니다 (예: "LGTM").

워크플로 예시

터미널 1 (Claude Code)             터미널 2 (Claude Code)
┌──────────────────────┐    →    ┌──────────────────────┐
│ "Refactor auth module"│         │ Receives:            │
│                       │         │ "Review the refactor │
│ ✓ Done — 3 files     │         │  in src/auth/..."    │
└──────────────────────┘         └──────────────────────┘

에이전트 1이 코드를 리팩토링합니다. 완료되면 MadoHub는 JSONL 응답을 읽고, AI 라우팅을 사용하여 구체적인 파일과 변경 사항이 담긴 리뷰 프롬프트를 생성하고, 에이전트 2에게 전달합니다.

On this page