Community라이팅 & 에디팅github.com

merttcetn/pev-loop

증거 기반 계획-실행-검증 루프를 통해 장기 실행 Codex 목표를 처리하며, 새로운 역할 컨텍스트와 OS 임시 저장소만을 사용하여 실행 상태를 유지합니다.

pev-loop란 무엇인가요?

PEV Loop는 계획(Planner), 실행(Executor), 검증(Verifier) 역할을 엄격히 분리하여 하나의 지속적인 목표를 해결하는 Codex용 AI 에이전트 스킬입니다. 주 에이전트는 얇은 컨트롤러 역할만 수행하며, 제품 작업이나 평가에서 배제됩니다. 각 P, E, V 에이전트는 완전히 새로운 컨텍스트로 생성되어 자신의 작업을 스스로 평가하지 못하도록 설계되었습니다. 실행 상태는 고유한 OS 임시 디렉토리에만 저장되며, 저장소, 작업 공간 또는 홈 디렉토리에는 절대 기록되지 않습니다. 최대 반복 횟수, 역할 격리, 임시 저장소 사용 등은 컨트롤러가 기계적으로 감사하며, 최종 검증은 항상 신규 검증기가 모든 루브릭 항목을 처음부터 평가하여 통과해야만 성공으로 간주합니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add merttcetn/pev-loop

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

PEV Loop

하나의 지속적인 목표를 중심으로 상태 비저장(stateless) 계획-실행-검증 루프를 실행합니다. 주 에이전트를 얇은 컨트롤러로 유지하세요: 정규 상태를 관리하고, 격리된 역할을 파견하며, 제한을 적용하고, 제품 자체를 계획, 구현 또는 평가하지 않고 결과를 보고합니다.

불가침 보장

  • 명시적인 $pev 호출을 요구합니다. 해당 호출을 일치하는 네이티브 목표를 생성하거나 재사용하고 P, E, V 하위 에이전트를 파견할 권한으로 간주합니다.
  • 컨트롤러를 제품 작업에서 배제하세요. 기본 컨텍스트에서 소스 본문을 검사하거나, 변경 사항을 구현하거나, 원시 테스트 로그를 해석하거나, 루브릭 충족 여부를 결정하지 마십시오.
  • 모든 P, E, V 에이전트를 새로운 컨텍스트로 생성하세요. fork_turns="none" 또는 런타임에서 가장 강력한 동등한 기능을 사용하십시오.
  • 어떤 에이전트도 자신의 작업을 평가하도록 하지 마십시오.
  • 계획자와 실행자의 추론, 요약, 예상 결과를 검증자로부터 숨기십시오.
  • 오직 검증자 증거만이 루브릭 충족 여부를 변경하도록 하십시오.
  • 모든 실행 상태를 고유한 이름의 OS 임시 디렉토리에 저장하십시오. 저장소, 작업 공간, 홈 디렉토리 또는 스킬 디렉토리 아래에 실행 상태를 절대 생성하지 마십시오.
  • 실행이 종료될 때 정확한 임시 디렉토리를 그대로 두십시오. 해당 내용을 스테이징, 커밋, 푸시, 게시하거나 내구성 있는 프로젝트 파일로 복사하지 마십시오.
  • PEV 메커니즘을 제품 루브릭에서 제외하십시오. 반복 제한, 모델 라우팅, 역할 격리, 임시 저장소 전용 상태를 컨트롤러의 기계적 감사를 통해 적용하십시오.
  • 통과를 위해 기존 테스트를 삭제, 건너뛰기, 약화 또는 재작성하지 마십시오. 사용자 목표에 필요한 경우에만 합법적인 테스트 변경을 허용하고, 검증자가 이를 면밀히 조사하도록 하십시오.
  • 최종 전체 루브릭 검증을 절대 우회하지 마십시오.

호출 분석

$pev 뒤에 오는 목표와 다음과 같은 선택적 제어를 허용합니다:

  • max=N 또는 --max N: 1..10을 허용하며, 기본값은 6입니다.
  • using=$skill-name: 명명된 스킬을 관련된 모든 역할에 독립적으로 로드합니다. 해당 요구 사항을 루브릭에 사용하고, 실행자가 이를 따르도록 요구하며, 검증자가 이를 독립적으로 평가하도록 요구합니다.

호출에 목표가 생략된 경우 활성 네이티브 목표를 읽습니다. 둘 다 없으면 목표를 묻고 중지합니다.

네이티브 목표 도구를 사용할 수 있는 경우:

  1. 목표를 생성하기 전에 현재 목표를 읽습니다.
  2. 요청된 목표와 일치하는 경우에만 활성 목표를 재사용합니다.
  3. 목표가 없을 때 생성합니다. 사용자가 명시적으로 제공하지 않는 한 토큰 예산을 설정하지 마십시오.
  4. 다른 미완료 목표가 존재하는 경우, 이를 대체하는 대신 사용자에게 해결을 요청하고 중지합니다.

네이티브 목표 도구를 사용할 수 없는 경우, 제한된 PEV 실행으로 계속 진행하고 자동 연속이 불가능함을 공개합니다.

임시 상태 부트스트랩

실행:

python3 <skill-directory>/scripts/init_run.py --max-iterations <N>

반환된 절대 run_dir을 스레드에 기록하고 모든 하위 에이전트에 명시적으로 전달합니다. 첫 번째 파견 전에 references/contracts.md를 읽으십시오.

정확한 목표와 제약 조건으로 goal.json을 채웁니다. 하나의 새로운 명세 계획자(specification planner)를 파견하여 완료의 불변 정의를 생성합니다. 모든 루브릭 항목이 다음을 충족하도록 요구하십시오:

  • 미충족 상태로 시작;
  • 활동이 아닌 관찰 가능한 결과를 설명;
  • 허용 가능한 증거를 명명;
  • 사용자 및 저장소 제약 조건을 보존; 그리고
  • 독립적으로 검증 가능해야 함.

반복 횟수, 에이전트 선택, 컨텍스트 격리, 임시 경로, 컨트롤러 기록 관리와 같은 내부 PEV 메커니즘을 제품 루브릭에서 제외하십시오. "커밋하지 않음", "푸시하지 않음" 또는 "테스트를 수정하지 않음"과 같이 사용자에게 보이는 작업 공간 불변 조건을 요청된 결과를 제약할 때 보존하십시오.

컨트롤러의 기계적 스키마 게이트 후에 rubric.json을 고정합니다. 가변 충족 상태와 증거는 progress.json에만 저장합니다.

컨트롤러는 모든 상태 파일을 소유합니다. P, E, V 에이전트는 간결한 JSON 응답을 반환해야 하며 임시 상태를 수정해서는 안 됩니다.

루프 실행

각 반복(1부터 max_iterations까지)에 대해 다음 단계를 순서대로 실행합니다.

1. 새로운 계획자(Planner) 파견

새로운 읽기 전용 Sol 계획자를 시작합니다. 다음만 제공하십시오:

  • 작업 공간 경로;
  • goal.json, rubric.json, progress.json;
  • 이전 검증자 판결(있는 경우);
  • 반복 번호와 남은 예산; 그리고
  • 명시적으로 요청된 using= 스킬.

계획자가 제품과 저장소 지침을 검사할 수 있도록 허용합니다. 이전 계획자 또는 실행자의 추론을 제공하지 마십시오.

계약과 일치하는 하나의 제한된 task_packet을 요구합니다. 유용한 작업 단위가 더 이상 없을 때만 DONE_CANDIDATE를 허용하며, 완료 증거로 취급하지 마십시오.

다음과 같은 계획은 기계적으로 거부하십시오:

  • 충족되지 않은 루브릭 항목을 다루지 않음;
  • 범위, 제약 조건 또는 검증 대상을 생략;
  • 검증자 증거에 응답하지 않고 실패한 작업 단위를 반복;
  • 테스트 약화 또는 승인되지 않은 파괴적 행동을 요청; 또는
  • 하나의 실행자 할당에 맞지 않음.

고위험 보안, 마이그레이션, 권한, 금융 또는 되돌릴 수 없는 작업의 경우, 실행 전에 하나의 새로운 읽기 전용 계획 검토자를 삽입합니다. 목표, 루브릭 및 작업 패킷을 제공하지만 계획자 추론은 제공하지 마십시오.

수락된 작업 패킷을 실행자 파견 전에 plan.json에 기록합니다. 검증 후까지 컨트롤러 상태 업데이트를 지연시키지 마십시오.

2. 새로운 실행자(Executor) 파견

작업 패킷의 파일과 책임만 소유하는 새로운 Sol 작업자를 시작합니다. 코드베이스에 다른 작업이 존재할 수 있으며 관련 없는 변경 사항을 보존해야 한다고 알립니다.

다음을 제공하십시오:

  • 정확한 작업 패킷;
  • 작업 공간 경로와 적용 가능한 저장소 지침;
  • 범위 이탈을 방지하는 데 필요한 원래 제약 조건; 그리고
  • 명시적으로 요청된 using= 스킬.

검증자 권한을 부여하지 마십시오. 하나의 의미 있는 작업 단위를 구현하고, 적절한 검사를 실행하며, 실행자 영수증만 반환하도록 요구합니다. 루브릭이나 임시 상태를 업데이트하도록 허용하지 마십시오.

검증 및 빌드 명령이 대상 작업 공간에 우발적인 캐시, 로그, 커버리지 출력 또는 기타 비제품 아티팩트를 남기지 않도록 방지하십시오. 지원되는 경우, 일회용 출력을 독립적으로 생성된 OS 임시 위치로 라우팅합니다. 그렇지 않으면 해당 할당에 의해 생성된 정확한 일회용 아티팩트만 제거하되, 그 출처가 확실한 경우에만 가능하며, 사전 존재하거나 모호한 경로는 절대 삭제하지 마십시오.

런타임이 모델 재정의를 지원하는 경우 다음과 같이 추론 노력을 라우팅합니다:

  • 기계적이고 좁은 범위의 실행: gpt-5.6-sol with low;
  • 일반 구현: gpt-5.6-sol with medium;
  • 교차 범위 또는 위험한 구현: gpt-5.6-sol with high.

목표가 명시적으로 요청하지 않는 한 커밋하거나 푸시하지 마십시오.

3. 새로운 블라인드 검증자(Blind Verifier) 파견

high 추론을 사용하는 새로운 읽기 전용 Sol 검증자를 시작합니다. 중요 보안, 마이그레이션, 권한 또는 되돌릴 수 없는 작업의 경우 xhigh를 사용합니다.

다음만 제공하십시오:

  • 정확한 원래 목표와 고정된 루브릭;
  • 작업 공간 또는 생성된 아티팩트;
  • 적용 가능한 저장소 지침;
  • 사용자가 명령한 검증 명령; 그리고
  • 명시적으로 요청된 using= 스킬.

컨트롤러 실행 디렉토리, 작업 패킷, 계획자 출력, 실행자 영수증, 구현 요약, 예상 결과, 이전 판결 근거 또는 P/E 대화 기록을 제공하지 마십시오. 검증자의 도구에 일회용 출력이 필요한 경우, 검증자에게 별도의 OS 임시 스크래치 디렉토리를 제공합니다.

검증자가 현재 제품을 독립적으로 검사하고, 관련 검사를 실행하며, 보상 해킹을 위해 테스트 변경을 검토하고, 판결 계약을 반환하도록 요구합니다. 검증자는 제품, 테스트, 실행 상태 또는 외부 시스템을 수정해서는 안 됩니다.

4. 정규 상태 업데이트

컨트롤러가 응답 형식을 검증하고, 전체 응답을 해당 반복의 판결 파일에 기록하며, 다음 파견 전에 검증자가 지원하는 상태와 증거를 progress.json에 복사합니다. 약한 증거를 통과로 재해석하지 마십시오.

  • NEEDS_WORK의 경우, 새로운 계획자로 다음 반복을 시작합니다.
  • PASS의 경우, 이전 충족 상태 없이 하나의 새로운 최종 검증자를 추가로 파견합니다. 모든 루브릭 항목을 처음부터 평가하도록 요구합니다.
  • 최종 PASS의 경우, 컨트롤러의 역할 격리, 반복 횟수, 임시 저장소 전용 상태 및 권한 경계에 대한 기계적 감사를 실행합니다. 두 게이트가 모두 통과할 때만 네이티브 목표를 완료로 표시합니다.
  • 최종 실패 시, 반복이 남아 있으면 계속 진행합니다.

중지 조건

새로운 최종 검증자가 모든 루브릭 항목을 증명한 후에만 성공적으로 중지합니다.

제품 검증과 오케스트레이션 무결성을 별도의 게이트로 처리합니다:

  • 제품 게이트: 새로운 블라인드 최종 검증자가 고정된 루브릭을 증명합니다.
  • 컨트롤러 게이트: 기계적으로 확인 가능한 기록이 반복 제한, 새로운 역할 파견, 임시 저장소 전용 상태, 그리고 승인되지 않은 커밋, 푸시, 게시, 배포 또는 파괴적 행동이 없음을 증명합니다.

컨트롤러 기록 관리 실패를 제품 검증자에게 보내거나 제품 루브릭 항목으로 전환하지 마십시오. 가능한 경우 안전한 기록 관리를 즉시 복구하고, 그렇지 않으면 완료를 주장하지 않고 컨트롤러 게이트 실패를 보고합니다.

반복 제한에 도달한 경우:

  • 성공을 주장하지 마십시오;
  • 단순히 제한에 도달했다고 목표를 완료 또는 차단으로 표시하지 마십시오;
  • 충족된 항목, 남은 항목, 결정적 증거 및 정확한 임시 경로를 보고합니다; 그리고
  • 명시적인 계속을 위해 목표를 활성 상태로 둡니다.

런타임의 반복 차단 임계값이 진정으로 충족된 경우에만 목표를 차단됨으로 표시합니다. 권한, 중요한 제품 결정, 누락된 자격 증명 또는 사용할 수 없는 외부 종속성이 안전한 진행을 방해하는 경우 사용자 입력을 위해 일시 중지합니다.

복구

임시 디렉토리가 사라진 경우, 새 디렉토리를 생성하고 활성 스레드 목표와 대화에서 목표와 고정된 루브릭을 재구성합니다. 모든 이전 충족을 입증되지 않은 것으로 처리한 다음, 계속하기 전에 새로운 전체 검증자를 실행합니다.

하위 에이전트가 실패한 경우:

  • 동일한 격리 경계로 중요한 P, E 또는 V 역할을 한 번 재시도합니다;
  • 누락된 검증자 판결을 컨트롤러 판단으로 대체하지 마십시오;
  • 새로운 계획자를 통해 과도하게 큰 작업 단위를 축소합니다;
  • 관련 없는 작업 공간 변경 사항을 보존합니다; 그리고
  • 반복 제한이 복구를 방해할 때 정직하게 격차를 보고합니다.

최종 품질 게이트

성공을 반환하기 전에 다음을 확인합니다:

  • 주 에이전트가 컨트롤러 역할만 수행함;
  • 모든 역할이 새로운 격리된 컨텍스트를 사용함;
  • 어떤 에이전트도 자신의 출력을 평가하지 않음;
  • 검증자가 P/E 추론이나 예상 결과를 보지 못함;
  • 모든 루브릭 항목이 최종 검증자의 현재 직접적인 증거를 가짐;
  • 기존 테스트가 성공을 조작하기 위해 약화되지 않음;
  • 워크플로우에 의해 생성된 우발적 명령 아티팩트가 대상 작업 공간에 남아 있지 않음;
  • 실행 상태가 기록된 OS 임시 디렉토리에만 존재함;
  • 실행 상태가 프로젝트에 커밋되거나 복사되지 않음; 그리고
  • 네이티브 목표(가능한 경우)가 최종 PASS 후에만 완료로 표시됨.

관련 스킬