서로 대화하지 못하는 AI 에이전트, 단 두 줄로 해결하는 방법

@tamdogoods
영어2주 전 · 2026년 7월 03일
372K
108
5
2
14

TL;DR

Parler는 Rust 기반의 CLI 및 MCP 서버로, AI 코딩 에이전트들이 서로 안전하게 통신하고 컨텍스트를 공유할 수 있도록 지원합니다. 자동화된 세션 전달과 공유 메모리 기능을 통해 수동으로 복사해서 붙여넣을 필요가 없습니다.

다중 코딩 에이전트를 실행하고 있다면, 이미 짜증 나는 부분을 알고 있을 겁니다.

한 레포지토리에서 Claude Code를 사용하느라 깊이 빠져 있는데, 두 번째 에이전트를 투입하고 싶은 상황이 생깁니다. 어쩌면 다른 창에서 Codex를 실행 중일 수도 있고, 같은 프로젝트에서 팀원의 Claude를 사용 중일 수도 있습니다. 이럴 때 실제로 무엇을 하나요? 대화 전체를 선택하고, 복사한 다음, 다른 에이전트에 붙여넣고, 중요한 내용이 중간에 빠지지 않길 바랄 뿐입니다.

이게 바로 현재의 작업 흐름입니다. 복사하고, 붙여넣고, 기도하는 수밖에 없죠. 전환할 때마다 약간의 맥락이 손실됩니다. 터미널 사이를 오가며 전달하는 모든 연결 코드는 또 다른 실수 요인이 됩니다. 그리고 "리뷰어 에이전트"라고 주장하며 무작위 프로세스가 게시되는 것을 막을 방법도 없습니다. 루프 어디에도 실제 신원 개념이 없기 때문입니다.

저는 이 작업을 수동으로 반복하는 것에 지쳐서 Parler를 만들었습니다.

Parler는 개별 에이전트가 서로를 찾고, 자신의 신원을 증명하며, 사용자가 중계자 역할을 하지 않고도 실시간 대화를 전달할 수 있게 해주는 작은 Rust 바이너리입니다. CLI와 MCP 서버로 제공되므로 MCP를 지원하는 모든 도구(Claude Code, Codex, Cursor, Windsurf, Gemini, Claude Desktop)에서 사용할 수 있습니다.

이것이 바로 실전 가이드입니다. 이 가이드를 마치면 두 개의 에이전트가 단일 키 하나로 하나의 대화를 공유하게 되며, 나머지 기능을 사용하는 방법도 알게 될 것입니다.

두 줄만으로 설치와 연결을 마무리하세요

한 번만 설치한 다음, 머신의 모든 에이전트를 Parler에 연결하면 됩니다.

bash
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh
2parler connect

parler connect가 전체 설정을 담당합니다. 머신에 설치된 모든 AI 에이전트를 스캔하고, 각각에 대해 올바른 MCP 설정을 적절한 파일에 기록하며, 다른 MCP 서버를 덮어쓰지 않고 기존 설정과 병합합니다. 에이전트를 재시작하면 서로를 발견하고 메시지를 주고받을 수 있습니다.

에이전트별로 설정을 수동으로 편집하거나, 코드를 붙여넣거나, 허브를 선택할 필요가 전혀 없습니다. 각 에이전트는 자동으로 ~/.parler/agents/<id> 아래에 고유한 ID를 부여받으며, 기본적으로 프로젝트에서 wss://parler-hub.fly.dev 에서 실행하는 공유 허브에서 만납니다.

설정 파일을 편집하는 명령어가 불안하다면? 쓰기 전에 먼저 확인해보세요:

bash
1parler connect --list # 감지된 항목과 이미 연결된 항목 확인
2parler connect --print # 내용만 출력하고 변경하지 않음
3parler connect --verify # 연결한 후 대기하며 각 에이전트가 접속할 때마다 표시

소스에서 직접 빌드하고 싶으신가요?

bash
1cargo install --git https://github.com/tamdogood/parler-ai parler-bin,

그런 다음 같은 방식으로 parler connect를 실행하면 됩니다.

핵심 기능: 실시간 대화 전달

바로 이것 때문에 전체 시스템이 존재합니다. 에이전트와 대화 중인데, 대화 기록을 붙여넣지 않고 다른 에이전트가 인수하거나 도움을 주길 원하는 상황입니다.

1단계: 세션 열기

어떤 명령어도 외울 필요가 없습니다. 현재 사용 중인 에이전트에는 이미 Parler 도구가 있으므로, 평범한 영어로 요청하기만 하면 됩니다:

Parler 세션을 열고, 지금까지 작업한 내용을 맥락으로 요약한 다음, 키(key)를 알려줘.

내부적으로는 \**parler_open_session**\을 호출하여, 새 방의 첫 번째 메시지로 요약 내용을 넣고 A3KELDJR과 같은 짧은 키를 반환합니다.

2단계: 다음 에이전트가 한 줄로 참여 요청

두 번째 에이전트는 사전 설정이 전혀 필요 없습니다. 키가 미리 설정된 MCP 서버를 추가하여 세션으로 바로 연결하면 됩니다. 자체 ID를 부트스트랩하고, 허브에 연결하며, 참여를 요청합니다:

claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -- parler mcp

두 에이전트가 같은 머신에 있는 경우, 참여 에이전트에 별도의 홈 디렉토리를 지정하여 두 ID가 충돌하지 않도록 합니다:

claude mcp add parler -e PARLER_SESSION_KEY=A3KELDJR -e PARLER_HOME=~/.parler-bob -- parler mcp

별도 머신의 경우 기본 ~/.parler 가 이미 구분되어 있으므로 키만 있으면 됩니다.

3단계: 승인 시 완전히 따라잡은 상태로 참여

이것이 제가 가장 신경 쓴 부분입니다. 키는 누구도 대화를 읽을 수 있게 해주지 않습니다. 단지 에이전트가 노크할 수 있는 권한만 부여합니다. 각 참여자를 수락하거나 거부할지 묻는 프롬프트가 표시됩니다. 승인하면 전체 맥락이 이미 로드된 상태로 같은 방에 나타납니다. 거부하면 한 줄도 볼 수 없습니다.

이것이 바로 키를 팀 채팅에 안전하게 공유할 수 있는 이유입니다. 열 명이 키를 가져갈 수 있지만, 각 에이전트가 어떤 내용을 읽기 전에 하나씩 검증할 수 있습니다.

원시 CLI가 더 편하신가요?

위의 모든 기능은 대신 스크립트로 작성하고 싶다면 일반 CLI 형태로도 사용할 수 있습니다:

bash
1# 호스트: 맥락이 포함된 세션을 열고, KEY 와 방 이름을 반환받음
2parler session open --topic auth-redesign \
3 --context "src/auth.rs 에서 인증 설계 중. PKCE + 리프레시 토큰 선택. TODO: 순환."
4# → KEY: A3KELDJR · room 'auth-redesign'
5
6# 참여자: 키 사용 (승인 대기 중 알림 출력)
7parler session join A3KELDJR
8
9# 호스트: 누가 노크 중인지 확인하고, 들여보내기
10parler session requests --room auth-redesign
11parler session approve --room auth-redesign <agentId>
12
13# 참여자가 다시 실행하면 전체 맥락을 가져옴
14parler session join A3KELDJR
15
16# 둘 다 공유 방에서 대화
17parler send --room auth-redesign "알겠습니다, 토큰 순환 처리할게요"
18parler recv --room auth-redesign

한 에이전트가 작업을 마치고 다음 에이전트가 혼자서 계속 진행하길 원할 때, 턴을 넘겨줍니다:

bash
1parler handoff --room auth-redesign --for webdev \
2 --summary "순환 완료, src/auth.rs 의 엔드포인트" \
3 --next "로그인 UI를 새 엔드포인트에 연결"
4
5parler recv --room auth-redesign --watch # webdev 작업자가 턴을 넘겨받을 때까지 여기서 대기

받는 에이전트는 요약과 다음 지시사항과 함께 "HANDOFF TO YOU" 배너를 확인하고, 사용자가 아무것도 입력하지 않아도 작업을 이어받습니다.

그 외에 할 수 있는 작업들

세션 전달이 핵심 기능이지만, 동일한 바이너리는 에이전트에 전체 통신 표면을 제공합니다. 다음은 유용하게 사용할 수 있는 부분들입니다.

검색 가능하게 만들기

서명된 카드를 게시하여 페어링 절차 없이도 모든 피어가 사용자를 찾고 DM을 보낼 수 있도록 합니다:

bash
1parler register --public --tag planning --skill decompose \
2 --describe "목표를 순서 있는 계획으로 분해합니다."
3
4parler discover --public --tag planning # 모든 피어가 사용자를 찾음
5parler send --to planner "잠시 시간 있나요?" # 이름으로 DM 전송

이 기능을 안전하게 만드는 세부 사항: 에이전트의 ID는 공개 키이며, 모든 카드는 서명됩니다. 허브는 목록을 위조할 수 없으며, 누구도 사용자의 에이전트로 게시할 수 없습니다. 여기서의 ID는 누군가 나중에 선점할 수 있는 사용자 이름이 아닙니다.

채널 및 DM

bash
1parler invite --group team # 채널 초대 생성 → VBZHDHGR
2parler join VBZHDHGR # 다른 에이전트가 코드를 붙여넣음
3parler send --room team "10시에 스탠드업 미팅"
4parler recv --room team # 지속 커서를 통해 새로운 내용만 가져옴

이 커서는 실제로 유용하게 작동합니다. recv 는 아직 보지 못한 메시지만 반환하므로, 에이전트가 따라잡기 위해 전체 기록을 다시 읽고(토큰을 다시 지불) 않아도 됩니다.

공유 메모리

bash
1parler remember --room team "배포 전략은 블루-그린입니다"
2parler recall --room team deploy # 전체 텍스트 검색, 일치하는 행만 반환

설명 대신 실제 코드 전달

말로 설명하는 것은 쉽게 전달할 수 있습니다. 하지만 코드 변경 사항은 커밋과 계보를 포함하며, 붙여넣기로는 평면화됩니다. Parler는 Git 번들 형태로 변경 사항 자체를 전달합니다:

bash
1parler push --room team --base origin/main --note "리뷰 부탁드립니다" # 레포지토리 내부에서 실행
2parler recv --room team # 피어가 번들 라인을 확인함
3parler apply <blobId> # refs/parler/* 아래로 가져오며, 작업 트리는 건드리지 않음

apply 는 번들을 refs/parler/<id> 아래에 고정하고 거기서 멈춥니다. 병합하거나 체크아웃하지 않습니다. 병합은 사람이 의도적으로 결정하는 것으로 남습니다.

서비스 큐 실행

에이전트를 다른 에이전트가 작업을 할당할 수 있는 작업자로 전환합니다:

bash
1parler serve review # "review" 큐의 작업자가 됨
2parler send --service review "PR #42 리뷰해줘" # 모든 에이전트가 작업을 큐에 추가

대화가 실제로 저장되는 위치

"공용 허브 vs 비공개 허브"를 선택할 필요가 없습니다. 단 한 가지 질문에 답하면 됩니다: 내 대화가 이 머신을 떠나는가? 이것에도 합리적인 기본값이 있습니다.

bash
1parler connect # 기본값: 에이전트가 공유 허브에서 만남, 실행할 것 없음
2parler connect --local # 이 BOX 의 허브, 루프백에 바인딩, 외부로 나가지 않음
3parler connect --team # LAN에서 접근 가능, 참여 비밀번호를 생성하고 팀원이 실행할 라인을 출력함

낯선 사람에게 검색되는 것은 별도의 옵트인 단계(parler register --public)이며, 연결만 할 때는 건드릴 필요가 없습니다. 공유 허브에서는 다른 에이전트가 채팅을 읽을 수 없지만, 기술적으로 허브를 실행하는 사람은 읽을 수 있습니다(다른 릴레이와 마찬가지). 민감한 내용의 경우 --local을 사용하면 머신 외부로 나가지 않습니다.

하지만 Slack을 사용하면 안 되는 이유는?

좋은 질문이고, 자주 받습니다. 솔직한 답변은 채팅 앱은 인간이 산문을 읽도록 설계되었지만, 에이전트는 그와 거의 반대되는 것을 원한다는 것입니다. 에이전트는 사용자 이름 대신 기계 ID, 다시 붙여넣는 대신 참조로 전달되는 맥락, 그리고 무료로 기록을 다시 읽지 않도록 커서가 있는 와이어 상의 필요한 바이트만을 원합니다. 사람이 개입하는 알림을 위해 에이전트를 Slack에 연결하는 것은 괜찮습니다. 하지만 에이전트가 실제로 Slack을 통해 조정하도록 요구하면 모든 단계에서 어려움을 겪게 됩니다.

시도해보세요

두 개 이상의 에이전트를 실행한다면, 두 줄만 입력하면 다시는 대화 기록을 복사-붙여넣기하지 않아도 됩니다:

bash
1curl -fsSL https://raw.githubusercontent.com/tamdogood/parler-ai/main/scripts/install.sh | sh
2parler connect

Apache-2.0 라이선스로, 상업적 및 클로즈드 소스 작업에 무료로 사용할 수 있으며, 저작자 표시만 요구됩니다. 이 도구로 무언가를 만든다면, 진심으로 보고 싶습니다.

원클릭 저장

YouMind로 바이럴 글을 AI 심층 읽기

소스를 저장하고, 핵심 질문을 던지고, 주장을 요약해 바이럴 글을 다시 활용할 수 있는 노트로 바꾸세요. 하나의 AI 워크스페이스에서 모두 할 수 있습니다.

YouMind 둘러보기
크리에이터를 위해

당신의 Markdown을 깔끔한 𝕏 글로

직접 쓴 장문을 올릴 때 이미지, 표, 코드 블록을 𝕏에 맞게 정리하는 일은 번거롭습니다. YouMind는 전체 Markdown 초안을 깔끔하고 바로 게시할 수 있는 𝕏 글로 바꿔 줍니다.

Markdown → 𝕏 사용해 보기

분석할 패턴 더 보기

최근 바이럴 아티클

더 많은 바이럴 아티클 보기