microsoft/conductor

A CLI tool for defining and running multi-agent workflows with the GitHub Copilot SDK and Anthropic Agents SDK.

Conductor – 결정적 다중 에이전트 AI 워크플로를 위한 CLI

정의 – conductor는 AI 에이전트(Copilot, Claude 등)의 파이프라인을 단일 YAML 파일로 설명하고 해당 파이프라인을 로컬 또는 CI에서 실행할 수 있는 명령줄 도구입니다. 오케스트레이션 자체는 결정적입니다. 라우팅 결정은 LLM이 아닌 Jinja2 템플릿으로 표현되므로 동일한 입력은 항상 동일한 경로를 따릅니다.

중요한 이유 – 다단계 AI 시스템(코드 검토 봇, 연구 후 합성 루프, 계획 후 구현 주기)을 구축하거나 실험하는 경우 버전 관리, 테스트, 공유가 어려운 임시 스크립트를 작성하는 경우가 많습니다. Conductor는 다음을 제공합니다.

  • 반복 가능하고 버전 관리되는 워크플로(PR에서 diff할 수 있는 일반 YAML)
  • 공급자에 구애받지 않는 에이전트 – Copilot, Anthropic Claude, Claude-Agent SDK, NousResearch Hermes 또는 Azure Container Apps 샌드박스 실행.
  • 병렬 처리 및 하위 워크플로 – for_each를 사용한 팬아웃, 재사용 가능한 하위 워크플로, 동시 에이전트 그룹.
  • 인간 개입 게이트 – 사용자가 Markdown 프롬프트에 답변할 때까지 실행을 일시 중지합니다.
  • 관찰 가능성 – 웹 대시보드(실시간 DAG 보기, 스트리밍 에이전트 출력) 및 실행 중인 모든 워크플로를 모니터링하고 토큰 사용량을 표시하며 터미널을 떠나지 않고 게이트에 답변할 수 있는 TUI "Fleet Manager".
  • 안전 제한 – 최대 반복 횟수, 시간 초과, 명시적 종료 단계.
  • OpenTelemetry – 더 깊은 분석을 위해 추적을 Jaeger/Tempo로 내보냅니다.

작동 방식

  1. YAML 작성 – workflow, agents 목록(모델, 프롬프트, 출력 스키마) 및 그 사이의 라우팅(routes)을 선언합니다. Jinja2 표현식은 값을 계산하거나, 다음에 실행할 단계를 결정하거나, 하위 워크플로에 대한 입력 매핑을 구축할 수 있습니다.
  2. 실행 – conductor run my-workflow.yaml --input key=value …로 실행합니다. CLI는 YAML을 해석하고 선택한 공급자의 API 클라이언트를 시작한 다음 각 단계(에이전트, 스크립트, set 단계, MCP 도구 호출 등)를 실행합니다.
  3. 관찰 – 대화형 브라우저 UI에는 --web을 추가하고, 헤드리스로 실행한 후 나중에 대시보드를 열려면 --web‑bg를 사용합니다. conductor fleet(TUI)를 사용하여 모든 활성 실행을 보고, 인간 게이트에 답변하거나, 양식에서 새 실행을 시작합니다.
  4. 관찰 및 디버그 – 로그, 토큰/비용 카운터, 선택적 OpenTelemetry 스팬이 출력됩니다. 실행의 JSON 출력을 내보낼 수도 있습니다.

설치 – 프로젝트는 curl … | sh(Windows에서는 PowerShell)를 통해 최신 릴리스를 가져오는 한 줄 설치 프로그램을 제공합니다. 내부적으로 uv를 사용하여 격리된 가상 환경을 만들고 미러, 프록시, 무결성 검사를 처리합니다. uv tool install, pipx 또는 일반 pip로 설치할 수도 있습니다.

주요 개념

  • 공급자 – workflow.runtime.provider에서 AI 백엔드(copilot, openai, claude 등)를 선택합니다. 각 공급자의 모델 이름은 default_model로 설정합니다.
  • 단계 –
    • agent – 프롬프트로 LLM을 호출합니다.
    • script – 셸 명령을 실행하고 종료 코드 또는 구문 분석된 JSON으로 라우팅할 수 있습니다.
    • set – Jinja2로 값을 계산합니다(LLM 없음, 하위 프로세스 없음).
    • mcp – 도구 서버를 직접 호출하여 LLM 토큰 사용을 우회합니다.
    • terminate – 상태로 워크플로를 종료합니다.
  • 라우팅 – 첫 번째로 일치하는 Jinja2 조건이 우선합니다. 에이전트 출력, 스크립트 종료 또는 모든 컨텍스트 변수로 라우팅할 수 있습니다.
  • 인간 게이트 – 단계가 일시 중지되고 Markdown 프롬프트가 표시될 수 있습니다. 사용자는 대시보드, CLI 또는 TUI에서 답변합니다.
  • 병렬 그룹 / for_each – 정적 그룹은 함께 실행됩니다. 동적 그룹은 목록에서 팬아웃되며 각 인스턴스는 하위 워크플로를 호출할 수 있습니다.

일반적인 사용 사례

workflow:
  name: simple-qa
  entry_point: answerer
  runtime:
    provider: copilot
    default_model: gpt-5.5

agents:
  - name: answerer
    model: gpt-5.5
    prompt: |
      Answer the following question:
      {{ workflow.input.question }}
    output:
      answer:
        type: string
    routes:
      - to: $end

output:
  answer: "{{ answerer.output.answer }}"

다음과 같이 실행합니다.

conductor run my-workflow.yaml --input question="What is Python?"

CLI는 JSON 결과를 출력하고 --web을 추가하면 대시보드에서 에이전트의 추론이 스트리밍됩니다.

사용 대상 –

  • AI 강화 개발자 도구, 코드 검토 봇 또는 연구 어시스턴트를 구축하는 팀.
  • 재현성과 관찰 가능성이 필요한 다중 에이전트 파이프라인을 프로토타이핑하는 연구자.
  • 이러한 파이프라인을 CI/CD에서 실행하려는 DevOps 담당자(결정적 라우팅으로 실행이 예측 가능하고 비용 추적이 가능함).

제한 사항 / 상태 – 핵심 CLI는 안정적이지만 일부 공급자(Claude Agent SDK, Hermes, Azure Container Apps)는 실험적으로 표시됩니다. 프로젝트는 적극적으로 유지 관리되며(CI 배지, 버전 관리 릴리스) 업그레이드 도구(conductor update)를 제공합니다.


위의 모든 정보는 저장소의 README에서 직접 가져온 것입니다. 외부 가정은 추가되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트