Skip to main content
여러 terminal이 한 화면에 있다고 저절로 팀이 되는 것은 아니다. Dure는 provider에 종속되지 않는 조율 계층을 더해 에이전트가 서로 작업을 넘기고, 결과를 보고하고, 막힌 지점을 알리고, 사람의 결정을 기다릴 수 있게 한다.

명령을 실행하기 전 요구사항

  • dure CLI를 설치하고 사용하려는 app channel에서 Dure를 한 번 이상 실행한다. CLI가 읽는 registry가 이때 생성된다. 그 뒤 task-create에는 실행 중인 앱이 필요하지 않다.
  • task-create는 작업을 기록할 뿐이다. --title은 필수지만 provider, 실행 중인 agent, project, worktree, managed session은 필요 없다. --spec--deps는 선택이다.
  • 별도 --requirements field는 없다. 범위, 완료 조건, 검증 방법, 기대 결과 형식을 자유 형식 --spec에 넣는다. Dure는 이를 저장하고 전달하지만 계약의 완전성이나 충족 여부를 판정하지 않는다.
  • Dure 안에서 연 terminal은 올바른 app channel을 자동으로 상속한다. 설치형 앱은 기본으로 stable을 사용한다. 외부 shell에서 격리된 개발 빌드를 대상으로 실행할 때는 DURE_APP_CHANNEL을 해당 빌드의 channel로 설정한다.
  • dispatch --inject의 요구사항은 더 엄격하다. 대상이 같은 channel에 등록돼 있고 해당 session이 입력을 받을 수 있어야 한다. 원격 mailbox는 아직 연결되지 않으므로 결과 보고까지 완결하려면 대상도 로컬이어야 한다. --inject를 빼면 작업 배정과 메시지만 저장한다.

조율 계층이 더하는 것

종류가 있는 메시지

Note, status, dispatch, 완료 보고, escalation, decision gate, heartbeat를 서로 구분해 보낸다.

Provider 중립적인 대상

한 에이전트, 전체를 뜻하는 @all, @claude@codex 같은 provider 그룹을 수신자로 지정한다.

결과가 돌아오는 작업

작업을 기록하고 에이전트에게 배정한 뒤 terminal 출력을 추측하는 대신 구조화된 worker_done 결과를 받는다.

사람의 판단을 흐름 안에

승인이 필요한 경계를 넘기 전에 에이전트가 답을 기다리는 질문이나 decision gate를 만들 수 있다.
메시지와 작업 상태는 현재 Dure app channel에 저장된다. 관리형 agent session 안에서는 Dure가 발신자를 자동으로 식별하므로 보통의 명령에 별도 --from identity를 붙이지 않아도 된다.

작은 조율 루프

현재 팀 전체에 공지를 보낸다.
작업을 만들고 이름이 있는 에이전트에게 배정한다.
--inject는 작업 설명과 보고 규칙을 대상 에이전트의 terminal에 넣는다. Dispatch 자체도 종류가 있는 메시지로 남기 때문에 단순한 keystroke 전송과는 다르다. 결과, 막힘, 사람의 결정이 필요한 이벤트를 기다린다.

조율 패턴

독립 작업을 병렬로 나누기

조사, 구현, 리뷰를 각각 작업으로 만들고 서로 다른 에이전트나 provider에게 배정한다. Worktree는 파일 변경을 격리하고 orchestration channel은 공통 의도와 결과를 전달한다.

조용히 멈추는 대신 질문하기

Coordinator의 답이 필요한 에이전트는 reply가 올 때까지 기다릴 수 있다.

오래 걸리는 작업과 먹통 구분하기

긴 작업을 수행하는 worker는 heartbeat를 보낼 수 있다. 계속하려면 조치가 필요한 작업은 escalation을 보내므로 모든 terminal을 지켜보지 않아도 둘을 구분할 수 있다.

Terminal 주입과의 차이

다른 terminal에 text를 입력하는 것은 에이전트를 깨우거나 prompt를 전달할 때 유용하지만 task identity, message type, 지속되는 결과 계약은 없다. Dure orchestration은 먼저 소통을 기록한다. Injection은 배정된 작업을 전달하는 선택적 수단이지 source of truth가 아니다.
현재 오케스트레이션은 하나의 Dure app channel 안에서 로컬로 동작한다. 원격 SSH 에이전트는 로컬 mailbox에 직접 참여하지 않고, @all은 수신자마다 별도의 전달 확인을 아직 기록하지 않는다. 반드시 처리해야 하는 작업에는 수신자를 명시한다.
정확한 alpha 경계는 현재 한계에서 확인하고, 작업에 맞는 worker 선택은 provider 지원 수준을 참고한다.