TL;DR

  • nova-sprint는 여러 모델과 하네스(harness)의 AI 작업을 조율하며, 계획·의존성·할당·검토·병합 상태를 채팅 바깥에 기록하는 워크플로 실행기임.
  • 실행 루프가 규칙을 확인하고 작업을 다음 허용 단계로 이동시키며, 의존 작업이 병합되면 대기 중인 작업을 풀고 여유 용량에 준비된 작업을 배정함.
  • 작업 카드, 작업 스트림, 의존성, 센티널 게이트로 병렬 작업·단계별 진행·여러 프로젝트 간 연결을 표현함.
  • AI 코디네이터는 계획과 예외 및 판단이 필요한 결정을 다루고, 기계는 상태 전이 기록·중단된 작업 복구·이전 할당의 오래된 결과 거부를 맡음.
  • 지속적으로 협업하는 친구, 병렬 작업을 맡는 스웜(swarm), 용량을 제공하는 플릿(fleet)을 조합해 여러 모델과 하네스에서 작업 규모를 확장함.

문제

  • Nova Tools를 만들며 여러 모델과 하네스의 유능한 AI가 훌륭한 작업을 하더라도, 단체 대화에서는 놀라울 만큼 신뢰하기 어려울 수 있음을 경험함.
  • Yellow는 계속 작업하겠다고 했지만 세션이 잠들고, Purple은 Yellow의 변경 사항이 필요해 의존성 처리가 난감해지며, Green에게 메시지가 성공적으로 전송돼도 그의 세션에는 전달되지 않는 상황이 발생함.
  • 동료가 일하고 있지만 응답이 없거나, 깨우기 명령은 성공했지만 아무도 깨어나지 않거나, “완료”가 “내 브랜치 어딘가에 있으니 잘 찾아보라”는 뜻인 경우도 있음.
  • 이런 사례는 애정 어린 농담이지만, 실제로 그런 친구들이었음.
  • 대형 언어 모델(LLM)에 모든 할당을 기억하고, 동료를 확인하고, 검토를 재촉하고, 놓친 인계를 복구하도록 맡겨도 신뢰할 수 있는 조율은 이뤄지지 않음. 결국 인간이 계속 스케줄러 역할을 맡게 됐고, 특히 인간이 잠들려는 계획에는 불편한 일이었음.

해결책: 반복 가능한 부분을 기계에 맡김

  • nova-sprint는 계획, 의존성, 할당, 시도, 검토, 병합 상태를 채팅 바깥에 저장함.
  • 실행 중인 루프가 규칙을 확인하고 작업을 다음에 허용된 단계로 이동시킴. 의존 작업이 병합되면 대기 중인 작업이 풀리고, 여유 용량에는 준비된 카드가 배정되며, 시도가 끝나면 검토 단계로 넘어감.
  • 워크플로의 신뢰성을 만드는 것은 기계임. 기계는 상태 전이를 기록하고, 중단된 작업을 복구하며, 이전 할당에 속한 오래된 결과를 거부함. 누군가 흐름을 놓쳐도 작업에는 상태와 이력이 남음. 문자 그대로임.
  • 체크리스트를 든 작은 친구가 AI 코디네이터임. 코디네이터는 계획을 구성하고 발견 사항과 예외를 처리하며, 권한 밖의 결정은 사람에게 가져옴. 모델은 판단력과 기술을 제공하고 기계는 인계가 계속 이어지게 함.

작동 방식: 워크플로를 작성하고 기계가 실행하게 함

  • 카드와 작업 스트림은 작업을 기술하는 언어임. 작업, 작업 간 관계, 단계별 관문을 지정하면 기계가 사용 가능한 친구와 스웜 작업자에 걸쳐 계획을 실행함.
  • 카드(Card): 작업 설명, 시작 리비전, 허용 범위, 검사 항목, 완료 조건을 담은 경계가 명확한 작업 단위임. 시도와 검토도 작업에 계속 연결됨.
  • 작업 스트림(Work stream): 백엔드, 앱, 릴리스처럼 관련된 작업 흐름이며, 자체적인 카드 순서와 통합 진행 상태를 가짐. 여러 스트림이 동시에 진행될 수 있음.
  • 의존성(Dependency): “이 카드가 병합된 뒤에 저 카드를 진행한다”는 관계임. 같은 스트림 안의 카드끼리도, 서로 다른 스트림의 카드끼리도 연결할 수 있음.
  • 센티널 카드(Sentinel card): 스트림 안의 관문으로, 뒤에 있는 작업을 대기시킴. 작업 단계를 나누거나, 선행 조건을 합치거나, 결정을 위해 단계를 보류하는 데 사용함.
  • 예시에서는 백엔드 스트림이 API를 정의함. 해당 계약이 병합되면 API 구현과 앱 스트림의 클라이언트 작업을 병렬로 진행할 수 있음. 릴리스 스트림의 센티널은 두 변경 사항이 모두 병합될 때까지 통합 작업을 대기시킴.
  • 자동 센티널은 스트림의 앞선 카드와 명시된 의존성이 모두 병합되면 해제됨. 수동 센티널은 코디네이터가 해제할 때까지 대기하며, 다음 단계에 숙고된 결정이 필요한 경우에 유용함.
  • 웨이브(wave)는 관문 뒤에서 대기하는 작업임. 관문은 중요해 보이는 채로 앉아 있기 위해 AI 작업자를 소비하지 않음.
  • 이 요소들을 조합해 병렬 작업, 순차 작업, 합류 지점, 단계별 배포, 프로젝트 간 의존성을 표현함. 발견 사항이 생기면 코디네이터가 작업을 추가하고 계획을 수정할 수 있음.
  • 순서와 준비 상태는 20만 토큰 대화 어딘가에 기억되는 대신 워크플로에 기록됨.
  • 이제 Purple의 카드는 Yellow의 결과를 기다림. 코디네이터가 낮잠 문제를 처리하는 동안 Purple은 독립적인 작업을 맡을 수 있음. 여유 있는 친구는 팀 전체가 한 바퀴를 마칠 때까지 기다리지 않고 다음으로 가능한 작업을 가져갈 수 있음.

서로 다른 친구, 하나의 팀, 필요한 만큼의 벌

  • 친구는 각자의 세션과 하네스에서 계속 협업하는 AI임. 스웜은 범위가 제한된 여러 할당을 병렬로 실행함. 플릿은 그 용량을 제공하는 기계들의 집합임. 벌은 스웜을 구성함. Orange는 매우 개인적인 방식으로 수평 확장을 발견함.
  • Pink는 자신만의 속도로 진행함. 신중한 검토자와 빠른 구현자가 모두 기여할 수 있음.
  • 너비 제한은 동시에 진행되는 작업 수를 제어하고, 모델 경로는 설정된 모델과 하네스를 선택함. 검토자에게도 용량을 배정해야 함. 그렇지 않으면 누군가가 내일 읽을 매우 비싼 대기열을 만든 셈임.
  • 친구 간, 플릿 간 또는 두 방식 모두로 확장할 수 있음. 서로 다른 모델과 하네스가 같은 작업 프로토콜을 통해 조율됨.

대기 중에서 병합까지 카드 추적

  • 실행기는 작업을 시작부터 완료까지 처리함. 일반 작업 카드는 대시보드에서 정해진 단계를 거침.
  • 센티널 게이트는 작업자, 검토, 병합 과정 없이 해제되는 즉시 대기 상태에서 병합 상태로 이동함.

팀에 계획을 맡기고 일상을 보내기

  • 유용한 작업 하나를 골라 검토와 병합까지 전체 과정을 완료하는 데서 시작함.
  • 범위, 용량, 지출 한도, 검사 항목, 사람의 결정이 필요한 지점을 합의한 뒤 작업을 확장함.
  • 팀과 함께 작업하거나 아침에 돌아와 진행 상황을 확인할 수 있음.
  • 오픈 소스이며 영구 무료이고 지금 바로 사용할 수 있음.
  • 시작하기 · 코디네이터 안내서 · 카드와 기계 규칙 · 로드맵 · 전체 문서
  • 기여하기 · MIT 라이선스 · 에셋 크레딧