UFO

AI Agent OrchestrationIDEPython

★ 9,714주당 +70조회 4

무엇인가

UFO는 데스크톱 자동화 에이전트와 그 상위 오케스트레이터를 한 저장소에 담은 프로젝트다. 하위 계층인 UFO²는 개별 Windows 기기에서 GUI 조작과 API 호출을 섞어 작업을 수행하고, 상위 계층인 UFO³ Galaxy는 그런 기기 여러 대를 묶어 하나의 요청으로 지휘한다. 저장소 이름은 UFO지만 현재 문서의 중심은 Galaxy다.

어떻게 동작하나

요청이 들어오면 ConstellationAgent가 이를 TaskStar 노드와 의존성 간선으로 이루어진 DAG(Task Constellation)로 분해한다. TaskOrchestrator가 이 그래프를 실행 엔진으로 삼아 노드를 스케줄링하고, 각 노드의 실행 결과에 따라 그래프를 런타임에 다시 쓴다. 기기는 Agent Registration 절차로 등록되고 capability 정보를 기준으로 노드에 매칭된다. 기기 간 통신은 WebSocket 기반의 AIP(Unified Agent Interaction Protocol)로 이루어지며 연결이 끊기면 자동 재연결한다. 설정은 config/galaxy/agent.yaml과 config/ufo/agents.yaml에 나뉘어 있다.

무엇과 다른가

단일 기기 자동화 도구나 정적 워크플로 스크립트와 달리 실행 계획이 고정되어 있지 않다. 실패나 예상 밖 결과가 나오면 그래프를 통제된 방식으로 재작성하고 다음 노드를 다시 배치한다. 기기를 미리 지정하는 대신 capability 기반으로 매칭하고 실행 중 재할당한다. UFO²는 Galaxy 없이도 단독으로 Windows 자동화를 수행할 수 있고, Galaxy에 붙을 때는 Windows 기기 에이전트 역할을 맡는다.

어떻게 쓰나

설정 파일에 LLM 제공자와 키를 넣는 것이 시작점이다. Galaxy는 config/galaxy/agent.yaml, UFO²는 config/ufo/agents.yaml을 사용하며 OpenAI, Azure OpenAI 외에 Qwen, Gemini, Claude도 지정할 수 있다. 이후 Galaxy 클라이언트로 기기를 등록하고 Windows·Linux·Android 각각의 디바이스 셋업 절차를 따른다. UFO²만 쓸 경우에는 Windows 기기 하나에 에이전트를 띄우고 작업을 지시한다.

전제와 한계

Python으로 작성되어 있고 동작하려면 외부 LLM API 접근이 전제된다. Windows 자동화 기능은 UFO² 계층에 속하므로 Galaxy에서 Windows 작업을 하려면 해당 기기에 UFO² 에이전트가 설치되어 있어야 한다. 기기 간 협업은 AIP WebSocket 연결이 유지되는 것을 전제로 하며, 이기종 플랫폼 지원은 Windows·Linux·Android 셋업 가이드가 다루는 범위에 해당한다.

관련 논문 3

유사 도구