assemble
네 개의 모델, 하나의 답변, 여러 라운드. 각 턴은 현재 최고 답변을 읽고, 주어진 역할에서 비판한 뒤 개선된 버전을 작성합니다. 진행 상황은 대화가 아닌 파일에 저장되므로 모든 턴이 새로운 컨텍스트로 시작됩니다 (Ralph Wiggum 기법).
명령어
| 명령어 | 수행할 작업 |
|---|---|
assemble <task> | 기본 일정(36턴)으로 실행을 시작합니다. |
assemble --quick <task> | 2패스 x 4모델 (8턴) 블록 하나만 실행합니다. |
assemble resume [<slug>] | 가장 최근(또는 지정된) 완료되지 않은 실행을 계속합니다. |
assemble cancel [<slug>] | 상태 파일에 status: cancelled를 설정하고 중지합니다. |
assemble status | 반복 횟수, 블록, 열린 MUST 항목 및 사용된 모델을 표시합니다. |
시작 전
.assemble/config.json이 있으면 로드하고, 없으면assets/config.example.json을 로드합니다.- 모델 어댑터를 선택하고(아래 참조) 사용자에게 어떤 네 개의 모델이 실행될지, 그리고 작업 텍스트가 어디로 전송될지 알립니다. 어떤 모델이
allowedModels밖에 있거나localOnly가 true인데 모델이 원격이면 해당 모델을 제외하고 그 이유를 알립니다. - 작업과 수용 기준을 짧은 단락 하나로 다시 설명합니다. 작업이 불명확하면 라운드를 시작하기 전에 사용자에게 문의합니다.
.assemble/<slug>/디렉토리를 만들고task.md,answer.md(비어 있음),state.md를references/state-format.md에 설명된 대로 생성합니다..assemble/이.gitignore에 있는지 확인합니다.
일정
라운드는 한 모델의 턴입니다. 패스는 네 모델이 각각 한 턴씩 순서대로 수행하는 것입니다.
| 블록 | 패스 | 턴 | 누계 |
|---|---|---|---|
| 1 | 4 | 16 | 16 |
| 2 | 3 | 12 | 28 |
| 3 | 2 | 8 | 36 |
턴 36 이후에는 보고서를 표시하고 사용자에게 다른 블록을 실행할지 묻습니다. 묻지 않고 36턴을 넘기지 마십시오.
각 패스마다 역할이 순환하여 모든 모델이 모든 역할을 수행합니다: 패스 p(0부터 시작)에서 모델 m은 references/roles.md의 roles[(m + p) % 4] 역할을 수행합니다.
각 턴
턴 프롬프트는 파일만 사용하여 references/handoff-format.md를 참고해 구성합니다:
task.md- 현재
answer.md - 이전 턴의 비판 (가장 최근
round-NN.md에서) - 이번 턴의 역할 카드
이전 라운드는 포함하지 않고, 현재 답변을 작성한 모델이 누구인지 언급하지 않습니다. 그런 다음:
- 선택한 어댑터를 사용하여 이번 턴의 모델에 프롬프트를 전송합니다.
- 응답을 구문 분석하여 비판(각 이슈는
MUST또는NICE로 태그 지정), 수정된 답변, 판정으로 나눕니다. - 작업이 코드이고
checks가 설정된 경우, 수정된 답변을 스크래치 복사본에 적용하고 검사를 실행한 후 실패한 항목을 비판에MUST항목으로 추가합니다. round-NN.md(역할, 모델 ID, 비판, 검사 결과, 판정, 줄 차이 크기)를 작성하고answer.md를 수정된 답변으로 덮어씁니다.state.md를 업데이트합니다: 반복, 블록, 패스, 열린MUST개수, 변경 없음 연속 횟수.- 사용자에게 한 줄 진행 메모를 제공합니다:
라운드 7/36 · 회의론자 · MUST 2개, NICE 1개 · diff 14줄.
모델에서 오류가 발생하거나 시간이 초과되면 round-NN.md에 기록하고 턴을 건너뛰고 계속 진행합니다. 두 모델이 연속으로 실패하면 일시 중지하고 사용자에게 알립니다.
중단
턴이 MUST 항목을 제기하지 않고 answer.md의 noChangeLines 줄보다 적은 줄을 변경한 경우 변경 없음으로 간주합니다.
다음 중 하나에 해당하면 조기 중단합니다:
- 연속 4턴(전체 패스)이 변경 없음인 경우, 또는
- 턴이
<promise>CONVERGED</promise>로 끝나고 다음 턴이MUST항목 없이 이를 확인한 경우.
열린 MUST 개수가 전체 블록 동안 감소하지 않으면 중단하고 간단한 "멈춤" 메모를 작성합니다: 무엇이 막고 있는지, 무엇을 시도했는지, 사용자가 막힌 것을 해결하기 위해 결정할 수 있는 사항.
보고서
실행이 종료되면 .assemble/<slug>/report.md를 작성하고 표시합니다:
- 최종 답변
- 실행된 라운드 수와 중단 이유
- 각 블록의 주요 변경 사항
- 해결되지 않은
NICE항목 - 사용된 모델(실패 포함)
- 대략적인 토큰 및 비용 추정(프롬프트 및 응답 크기의 합, 설정에 가격이 제공된 경우 곱함)
모델 어댑터
사용 가능한 첫 번째 어댑터를 사용하고, 사용자에게 선택한 어댑터를 알립니다.
- 도구 내 서브에이전트. 호스트가 서브에이전트를 생성하고 모델을 선택할 수 있는 경우 턴당 하나의 서브에이전트를 사용합니다. Cursor는 공급업체를 혼합할 수 있습니다. Claude Code와 Kiro는 여기서 Claude 모델만 제공하므로 네 개는 Claude 변형입니다.
- 벤더 CLI. 턴당 한 번씩
scripts/run-model.sh <model-id> <prompt-file>을 실행합니다. 이는 진정한 다중 벤더 옵션입니다. 실행을 시작하기 전에 각 CLI가 존재하는지 확인합니다(command -v). - 단일 모델. 모든 턴을 스스로 실행하며 해당 턴의 역할을 수행합니다. 해당 턴의 파일만 읽고 각 턴을 새로운 시작으로 취급합니다.
무인 실행을 위한 Claude Code 중단 후크와 같은 선택적 도구별 도우미는 저장소의 adapters/ 폴더에 있습니다.