Codex를 위한 저렴한 병렬 에이전트 (Cheap parallel agents for Codex)
호출: 이 스킬은 사용자가 이름으로 호출할 때만 실행됩니다. 자동으로 적용되지 않습니다. 오케스트레이션 스킬끼리 서로 호출하지 않으며, 워커는 오케스트레이션 스킬을 호출하지 않습니다. 사용자가 하나의 작업에 대해 escalating-subagents와 이 스킬을 모두 호출한 경우, 디스패치 전에 어느 것이 적용될지 물어보십시오.
가정된 Coordinator: 사용자가 선택한 부모 모델(일반적으로 GPT-6.1 Sol); high는 평가를 위한 초기 노력 권장 사항이며, 이 스킬이 변경하는 설정이 아닙니다. ultra 상태의 부모 모델은 사전에 위임할 수 있습니다. 이 사실을 첫 번째 진행 라인에 공개하고 high를 권장하며, 이 스킬의 디스패치를 통해서만 위임하고 '고정(Pinning)'에 따라 추가 할당을 설명하십시오. 실제 부모 모델과 노력을 원장(ledger) 헤더에 기록하십시오. Coordinator는 오케스트레이션을 수행합니다: 계층(Tier) 분류, '완료(Done) 기준' 작성, 작업 항목 분해, 인터페이스 및 결정 사항 수정, 워커 브리핑, 배치 디스패치, 스냅샷 캡처, 모든 승인 레코드 검사, 분류(triage), 보고. Coordinator는 제품 코드를 절대 편집하지 않으며 워커의 transcript를 읽지 않습니다. 승인에 필요한 경우 증거 발췌문을 읽고, 계층 D 승인, 검증 분쟁, 범위 위반의 경우 통합 패치를 읽습니다.
워커는 오직 하나의 저렴한 모델에서 실행되며 각각 할당된 하나의 항목을 실행합니다. 워커는 절대 위임하지 않고, 이 스킬이나 다른 오케스트레이션 스킬을 호출하지 않으며, 스냅샷 헬퍼를 실행하지 않습니다. 호스트 권한 및 협업 모드를 존중하십시오. 계획(Plan) 모드는 구현 또는 변경을 생성하는 발견(Discovery)을 허용하지 않습니다.
모든 기준은 ID와 필수 증거 유형을 가집니다: behavioral (변경 사항을 실행하는 테스트, 빌드 또는 실행), static (타입 검사 또는 린트), parse (구문 또는 파싱 검사), format (포매터 검사), 또는 inspection (검토된 diff). 기준 유형보다 약한 증거는 충족 조건을 만족시키지 않습니다. 파싱 검사는 parse 기준을 충족하며 그 이상은 아닙니다.
계층(Tiers) 및 할당 매트릭스
첫 번째 진행 라인에서 계층 이름을 지정하십시오. 모든 단계에서 계층을 승격(promote)할 수 있습니다. 절대 강등(demote)하지 마십시오. 승격은 카운터를 유지하고 더 높은 예산을 채택하며 영향을 받는 워커의 기준을 수정합니다. 작업 항목을 매트릭스에 맞게 크기 조정하십시오: 워커는 여러 파일을 소유할 수 있으므로 작업을 삭제하는 대신 병합하십시오. 검증은 주기(cycle)당 한 번, 전체 구현 주기가 완전히 동결된 후에 실행되며, 배치당 실행되지 않습니다. 중간 배치는 다음 배치가 시작되기 전에 캡처되고 확인된 post-N을 얻으며, 임시 워커 레코드만 얻습니다.
| 계층 (Tier) | 작업 | 맵 (읽기 전용) | 구현 | 주기당 검증 (V) | 예산 (Budget) |
|---|---|---|---|---|---|
| A | 사소하고, 완전히 지정되었으며, 구체적인 검사가 있는 저위험 편집 | 0 | 1 at low | 0; Coordinator가 사후 캡처 검사 실행 | 3 |
| B | 명확한 변경 | 0 | ≤ 4 at medium | 1 at medium | 7 |
| C | 불명확한 버그 또는 상당한 기능; 기본값 | ≤ 3 at low/medium | ≤ 4 at medium | 1 at medium | 10 |
| D | 인증, 테넌트 격리, 마이그레이션, 큐/동기화, 프로덕션 데이터 변경 | ≤ 3 at medium | ≤ 4 at medium | 2 at medium (별도의 브리핑 포함: 테스트 + 기준; 사양 + 회귀); Coordinator가 패치를 읽음 | 12 |
각각의 새 할당, 재시도 또는 연속은 한 번의 호출 비용이 듭니다. 병렬 워커는 개별적으로 계산됩니다. 상태 메시지 및 대기에는 비용이 들지 않습니다. M을 수용 중인 맵 배치의 샤드 수(구현 배치의 경우 0), U를 아직 디스패치되지 않은 필수 구현 항목 수(이 배치 포함, 매핑 전 계획된 수, 최소 1), V를 주기당 검증자 수라고 할 때, 예비(reserve)는 하나의 수리(repair)와 그 재검증으로 1 + V입니다. **배치 수용(Admission)**은 remaining ≥ M + U + V + (1 + V)일 때만 가능합니다. 충족되지 않으면 폭을 줄이거나 항목을 병합하거나 둘 다 수행하십시오. 동시성을 직렬화하는 것은 호출 수가 아니라, 수용은 남은 모든 필수 항목을 계산합니다. 검증자 재시도(지원되지 않는 PASS, INCONCLUSIVE)는 예비 호출을 사용합니다. FAIL 이후 r개 항목에 대해: remaining ≥ r + V이면 r개의 수리와 완전한 새로운 검증 세트를 추가 예비 없이 실행하고, 다른 FAIL이 발생하면 보고서와 함께 실행을 종료합니다. 1 + V ≤ remaining < r + V이면 remaining − V개 항목을 수리하고 검증한 후 나머지는 해결되지 않은 상태로 보고합니다. remaining < 1 + V이면 중지하고 실패한 항목을 변경되지 않은 패치를 재검증하지 않고 해결되지 않은 상태로 보고합니다. 예시: 계층 B, 4개 항목, 폭 4: 7 → 구현 후 3 → 검증 후 2 → 두 항목 FAIL 시 하나의 수리 + 하나의 검증자 수용 → 0, 한 항목 미해결. 지원되지 않는 PASS가 있는 계층 B: 7 → 3 → 2 → 새로운 검증자 → 1 → FAIL → 1 < 2, 중지. 계층 C, 4개 계획 항목에 대한 3개의 맵 배치: 3 + 4 + 1 + 2 = 10 수용 → 7 → 4개 구현 → 3 → 검증 → 2 → 한 항목 FAIL → 수리 및 검증 → 0. 계층 D: 3 + 4 + 2 + 3 = 12 → 9 → 5 → 3 → 한 항목 FAIL → 0. 사다리(ladder)는 예산이 허용하는 동안에만 사용 가능합니다. 최대 폭에서 예비는 각 단계(rung)가 아닌 하나의 수리를 수용하며, Coordinator는 폭을 선택할 때 이 사실을 명시합니다. 분해는 예산을 추가하지 않습니다.
노력 사다리 (Effort ladder)
워커 모델은 절대 변경되지 않습니다. 노력(Effort)이 변경됩니다. medium이 기본값이며 유지해야 할 위치입니다.
| 단계 (Rung) | 모델 | reasoning_effort | 사용 |
|---|---|---|---|
| 0 | gpt-6-luna | low | 기계적 작업: 읽기 전용 맵 샤드, 이름 변경, 이동, 포맷팅, 명명된 명령 실행 및 보고; 판단 호출(judgment call) 없음 |
| 1 | gpt-6-luna | medium | 모든 Discover, Implement 및 Validate 항목의 기본값 |
| 2 | gpt-6-luna | medium | 구체적인 수정 사항과 이전 기록 경로가 있는 새 워커; 단일 누락 재시도 |
| 3 | gpt-6-luna | max | 단계 1 또는 2에서 확인된 추론 실패 후, 또는 진행 없이 두 번째 PARTIAL 후에만 |
건너뛴 수준: high는 독립 코딩 평가에서 medium에 비해 관찰된 이득이 단계를 정당화하지 못했기 때문에 건너뛰었고, xhigh는 사다리가 하나의 상향 단계를 유지하고 max가 달러당 더 많은 점수를 얻었기 때문에 건너뛰었습니다. 간격을 채우지 마십시오.
단계 0 브리핑은 다음과 같이 말합니다: 판단 호출 없음; 필요한 경우 BLOCKED를 반환하십시오. 검증자는 모든 계층에서 medium으로 시작합니다. 올바른 FAIL은 검증자를 절대 상향 조정하지 않습니다. 환경적 실패는 절대 단계를 진행시키지 않습니다. 모델 상향 조정은 없습니다: 사다리가 소진되면 Coordinator는 중지하고 보고합니다.
| 결과 | 조치 | 계산 |
|---|---|---|
| 단계 0 워커가 판단이 필요하여 BLOCKED 반환 | 가능할 때 결정을 사전에 내림; 단계 1에서 항목 재디스패치 | 호출; 단계 → 1, 실패 아님 |
| 단계 1 워커가 요구사항을 누락하거나 브리핑을 잘못 읽음 | 단계 2: 수정 사항과 이전 기록 경로를 가진 새 워커 | 호출 |
| 단계 1 또는 2에서 확인된 추론 실패, 또는 진행 없이 두 번째 PARTIAL | 단계 3 | 호출 + 단계 |
| 건전한 접근 방식과 진행 상황이 있는 PARTIAL | 동일한 단계에서 계속 | 호출 |
| 검증자가 지원되지 않는 PASS 반환 (증거 유형이 너무 약함, 오래된 스냅샷, 또는 실행되지 않은 검사) | 거부; 명시적 증거 요구사항과 함께 단계 2에서 새 검증자; 두 번째 발생 → 단계 3; Implement는 변경되지 않음 | 각 호출 |
| 검증자가 올바른 FAIL 반환 | 성공적인 검증; 수리 주기 진입: 실패한 항목은 자체 사다리에 따라 상향 조정된 후 완전한 새 검증 세트 | r + V 호출 |
| 검증자 FAIL이 기록된 증거로 Coordinator에 의해 반박됨 | 수정 사항 기록; Implement 변경 없음; 패치가 변경된 경우에만 재검증 | 없음 |
| 환경적 이유로 검증자 INCONCLUSIVE 또는 BLOCKED | 권한 내에서 해결, 동일한 단계에서 한 번 재시도; 해결되지 않은 검사는 차단됨(blocked)으로 보고서에 포함 | 호출; 단계 변경 없음 |
| 단계 3이 항목에서 실패 | 항목당 한 번: 항목을 좁히고(더 작은 범위, 사전 결정된 결정) 수용이 허용되면 단계 1에서 재시도; 좁혀진 항목은 기록과 예산을 상속받음 | 호출 |
| 최종 수리 주기에서 실패 | 중지; 해결되지 않은 항목, 증거 및 다음 단계 보고; 추가 디스패치 없음 | 없음 |
| '완료' 또는 계층 D 위험을 모호하게 하는 차단 | 사용자에게 질문; 차단 요소 이름 지정 | 없음 |
병렬 배치 (Parallel batches)
항목은 세 가지 조건이 모두 충족될 때만 배치에 포함됩니다: 소유권이 분리됨(파일 또는 glob); 종속성이 충족됨(브리핑에서 인터페이스가 수정되고, 어떤 항목도 다른 항목의 미완료 출력을 사용하지 않음); 충돌하는 부작용 없음(생성된 파일, 스키마 또는 마이그레이션, 데이터베이스, 포트, 캐시, 테스트 픽스처, CI 구성). 그렇지 않으면 직렬화하거나 병합하십시오. 사용자가 조정할 수 있는 기본 상한선은 배치당 4명의 작성자(writer)와 3개의 읽기 전용 샤드입니다. 이는 비동기 위임 연구에서 나온 휴리스틱이며 제한이 아닙니다. 용량은 런타임에서 제공됩니다. 호스트의 광고된 슬롯과 계산 의미를 사용하고 min(cap, available slots)을 디스패치하십시오. 하나의 메시지로 전체 배치를 디스패치하십시오. 부분 디스패치 시 시작된 워커를 유지하고 이름으로 등록한 후 슬롯이 확보되면 나머지를 디스패치하십시오. 이미 실행 중인 항목을 다시 시작하지 마십시오.
모든 브리핑은 Coordinator의 결정 목록(지금까지 선택된 이름, 인터페이스, 규칙)을 전달합니다. 작업에는 결정이 포함되며 병렬 워커는 그렇지 않으면 분기되기 때문입니다. 작업 트리(worktree) 없이 공유 작업 공간에서 실행하는 것은 의도적인 트레이드오프입니다: 소유권과 스냅샷 범위 검사가 물리적 격리를 대체합니다.
증거 수명 주기 및 동결 (Evidence lifecycle and freeze)
배치는 실행 전반에 걸쳐 맵, 구현 및 수리 배치 모두에 번호가 지정됩니다. base를 한 번 캡처하고 배치 N 직전에 pre-N을 캡처합니다. 해당 배치의 모든 브리핑에 스냅샷 이름과 트리 ID를 넣습니다. 맵 워커는 pre-N에 대해 보고합니다. 구현자의 검사는 검증될 때까지 잠정적(provisional)입니다. 해당 레코드는 이를 명시하고 pre-N의 이름을 지정합니다. 배치 N의 모든 작성자와 백그라운드 명령이 중지된 후 다른 것을 디스패치하기 전에 post-N을 캡처하고 해당 배치의 소유권에 대해 names0 pre-N post-N을 확인합니다(맵 배치의 경우 비어 있음). names0 post-N pre-N+1도 비어 있어야 하며, 그렇지 않으면 범위를 벗어난 편집입니다. 주기는 마지막 구현 배치가 이 검사를 통과할 때 동결됩니다: 새 검증자는 해당 배치의 post-N을 받고 동결된 상태에 대해 승인 레코드를 생성하며, Coordinator는 주기의 첫 번째 pre부터 해당 post까지의 합집합도 확인하고 검증 중에는 쓰기가 발생하지 않습니다. 장벽(Barrier): 주기의 검증자는 함께 디스패치되고 함께 대기되며, 모든 검증자가 반환되거나 중단되고 종료가 확인될 때까지 수리가 시작되지 않습니다. 수리는 자체 배치입니다: post-N을 캡처하고 확인한 후 완전한 검증자 세트를 새로 실행합니다. 승인 전에 final을 캡처합니다. 검증된 스냅샷과 final 사이의 names0는 비어 있어야 합니다. 헬퍼는 거부를 감지하고 보고합니다.
…
[계속]