루프 시스템 아키텍트은(는) 무엇을 하나요?
반복되는 작업을 실행 가능하고, 결과를 증명할 수 있으며, 중단 후 복구되고, 목적을 다시 작성하지 않고도 개선할 수 있는 관찰 가능한 제어 시스템으로 전환합니다.
모드 선택
- 감사(Audit): 기존 워크플로우를 검사하고 누락된 부분이나 개방 루프(open-loop) 부분을 보고합니다. 요청하지 않는 한 편집하지 마십시오.
- 설계(Design): 계약, 상태 스키마, 역할 그래프, 평가, 런타임 설계를 생성합니다.
- 운영화(Operationalize): 컨트롤러, 어댑터, 영속성, 증거, 단일 명령 실행 경로를 구현합니다.
- 진화(Evolve): 완료된 실행을 분석하고, 제안된 루프/지식/스킬 개선을 검증한 후 승격하거나 거부합니다.
사용자가 "빌드" 또는 "작동하게 해달라"고 요청하면 운영화(Operationalize)를 포함하십시오. 마크다운 계획만으로는 운영 루프가 아닙니다.
실제 현실에서 시작하기
- 저장소의 지침과 사용자가 범위에 배치한 아티팩트를 읽으십시오.
- 실제 도구, 진입점, 상태 파일, 테스트, 스케줄러, 에이전트 CLI, 더티 워크트리를 검사하십시오.
- 현재 권위 있는 입력과 참고 자료를 분리하십시오. 모델 메모리를 사용하여 간격을 채우지 마십시오.
- 루프를 분류하십시오:
- 터미널(Terminal): 입증 가능한 완료 지점이 있는 단일 목표.
- 반복(Recurring): 각 실행은 종료되지만, 모니터/서비스는 은퇴할 때까지 계속됩니다.
- 무엇이 존재하고, 무엇이 누락되었으며, 무엇이 단지 주장된 것인지 변경하기 전에 명시하십시오.
전체 감사를 보려면 audit-rubric.md를 읽으십시오.
폐쇄 제어 루프 요구
다음 모든 요소를 식별하고 연결하십시오:
- 목표와 소유자;
- 완료 조건 또는 실행당 성공 조건;
- 권위 있는 소스 경계와 출처;
- 트리거와 저비용 사전 점검;
- 센서와 수집된 신호;
- 비교기, 윈도우, 임계값/규칙;
- 컨트롤러와 유한 결정 공간;
- 액추에이터와 새로운 결과를 센서에 반환하는 경로;
- 영구 상태, 커서, 이벤트 로그, 증거 저장소;
- 오케스트레이터, 실행자, 독립적 검증자의 책임;
- 개방형 능력/스킬 발견 및 후보 스킬 생성;
- 권한 경계와 보호된 필드;
- 수락 평가와 필요한 증거;
- 재시도, 타임아웃, 백오프, 실패 분류, 롤백;
- 멱등성, 중복 제거, 동시성 잠금, 부작용 초크 포인트;
- 토큰, 비용, 턴, 벽시계 시간 예산;
- 관찰 가능성, 알림, 무작동 성공 상태;
- 대체된 능동적 진실의 직접 교체;
- 경험 증류와 통제된 승격;
- 중지, 일시 중지, 중단, 은퇴 조건.
센서에서 액추에이터로의 피드백이 없으면 개방 루프입니다. 영구 상태가 없으면 반복되는 프롬프트입니다. 검증자 증거가 없으면 자체 주장된 완료입니다. 컨트롤러/트리거가 없으면 인간이 운영해야 하는 절차입니다.
최소 프로필
모든 루프에 20개 요소가 모두 필요한 것은 아닙니다. 단일 운영자, 크론 등급 루프(한 사용자, 한 머신, 낮은 폭발 반경, 공유 부작용 없음)의 경우 다음 8개로 계약이 충분합니다:
- 목표와 소유자;
- 성공 조건(완료 또는 실행당);
- 트리거와 저비용 사전 점검;
- 액추에이터와 그 부작용 경로;
- 영구 상태와 커서;
- 부작용 경로에 대한 멱등성/중복 제거;
- 관찰 가능성: 마지막 결과와 다음 작업을 볼 수 있는 위치;
- 은퇴 조건.
누락된 부분을 비워 두지 말고 명시적으로 선언하십시오: learning.enabled: false로 설정하고, reason 필드와 함께 capabilities.discovery: "none"을 설정하십시오. 린터는 둘 다 허용합니다. 통과하는 최소 계약 예제는 loop.contract.minimal-example.json을 참조하십시오. 루프가 공유 부작용, 두 번째 운영자, 외부 테넌트 또는 어떤 형태의 자기 수정을 얻으면 전체 계약으로 업그레이드하십시오.
루프 패키지 생성
이름은 저장소에 맞게 조정하되, 하나의 표준 기계 판독 가능 계약과 하나의 상태 기록을 유지하십시오. 루프 패키지, 상태 및 증거는 사용자 프로젝트에 위치하며, 이 스킬 패키지 내부에는 절대 위치하지 않습니다. 기본 패키지는 다음과 같습니다:
loop/
├── LOOP-CONTRACT.md 사람이 읽을 수 있는 운영 계약
├── loop.contract.json 기계 판독 가능 표준 계약
├── RUN-STATE.json 현재 실행, 커서, 시도 횟수, 다음 기계 동작
├── events/ 추가 전용 실행 이벤트 또는 동등한 이벤트 저장소
├── evidence/ 검증자가 읽을 수 있는 영수증
├── evals/ 결정론적 및 의미론적 수락 검사
├── knowledge/ 원시 로그가 아닌 유형별 승격된 지식
├── candidates/ 승격되지 않은 교훈과 스킬 변경 사항
└── scripts/run-loop 단일 명령 컨트롤러 또는 프로젝트 고유의 동등한 것
필드 계약은 loop-contract.md를 사용하십시오. loop.contract.template.json을 복사하고 모든 플레이스홀더를 채운 후 다음을 실행하십시오:
python3 scripts/loop_lint.py /path/to/loop.contract.json
프로젝트가 린터를 벤더링하지 않은 경우 이 스킬 내부의 복사본을 사용하십시오. 디스크에 아무것도 쓸 수 없는 경우 계약과 컨트롤러를 복사 가능한 텍스트로 출력하고 루프가 작동하려면 디스크에 무엇을 배치해야 하는지 말하십시오.
지침뿐만 아니라 컨트롤러 구축
컨트롤러는 사용자가 에이전트 간에 복사하여 붙여넣지 않고도 한 번의 호출로 루프를 진행시킬 수 있어야 합니다:
- 동시성 잠금을 획득하고 멱등성 키를 파생합니다;
- 계약과 상태를 로드하고 린트합니다;
- 고정된 소스 해시 또는 현재 소스 권한을 확인합니다;
- 저비용 트리거/사전 점검을 실행하고 작업이 없을 때 무작동 성공을 기록합니다;
- 필요한 능력을 해결합니다;
- 오케스트레이터/실행자를 위한 최소 컨텍스트 패킷을 생성합니다;
- 변경이 가능할 때 격리된 작업 공간에서 실행합니다;
- 출력, 비용, 도구 호출, 차이점 및 증거를 캡처합니다;
- 자신의 쓰기를 인증할 수 없는 독립적 검증기를 실행합니다;
- 실패 시 제한된 수리, 재시도, 롤백 또는 중지로 분류하고 라우팅합니다;
- 통과 시 결과를 원자적으로 승격하고 현재 상태를 업데이트합니다;
- 변경 불가능한 이벤트/영수증을 추가합니다;
- 트리거가 만족될 때만 증류를 호출합니다;
- 잠금을 해제하고 다음 기계 실행 가능 동작을 노출합니다.
엔진별 최소 검증자 독립성:
- Claude Code(또는 서브에이전트가 있는 모든 런타임): 계약, 수락 검사 및 증거 경로만 수신하는 새 컨텍스트 서브에이전트로 검증자를 실행하십시오. 실행자의 대화는 포함하지 마십시오.
- 서브에이전트 메커니즘이 없는 경우: 증거를 디스크에서 다시 읽고 수락 검사에 대해 평결을 반환하는 별도의 프로세스 또는 별도의 호출로 검증자를 실행하십시오.
- 둘 다 사용할 수 없는 경우: 동일한 컨텍스트가 자신의 작업을 확인하는 것은 자체 검토(performance, verification이 아님)입니다. 감사에서 검증자라고 표시하는 대신 그렇게 말하십시오.
트리거, 상태 전환, 스키마 검사, 권한, 재시도, 해시 및 승격에는 결정론적 코드를 선호하십시오. LLM은 기계적으로 결정할 수 없는 판단, 계획, 진단 및 콘텐츠에 사용하십시오.
정적 허용 목록 없이 스킬 발견 또는 생성
통제된 실행과 함께 개방형 발견을 사용하십시오:
- 작업에서 능력 계약을 도출하십시오: 입력, 출력, 부작용, 증거, 위험.
- 메타데이터와 계약 적합성별로 설치된 스킬 및 프로젝트 능력을 검색하십시오.
- 출처와 종속성을 검사하십시오. 임베디드 프로젝트 정체성을 진실로 가져오지 마십시오.
- 후보 스킬을 샌드박스 처리하고 능력별 평가를 실행하십시오.
- 적합한 것이 없으면 고유한 예제와 평가와 함께 격리된 후보 스킬을 생성하십시오.
- 보안, 개인정보, 기능 및 회귀 검사를 통과한 후에만 버전을 승격하십시오.
- 기본적으로 로컬에 등록하십시오. 외부 게시는 소유 환경의 별도 정책을 따릅니다.
개방형 발견이 개방형 권한을 부여하지는 않습니다. 명령, 데이터 범위, 부작용 정책 및 런타임 권한은 여전히 모든 스킬을 제한합니다.
경험을 사용 가능한 지식으로 증류
계속 커지는 로그를 모든 에이전트에 제공하지 마십시오. 원시 증거, 에피소드 요약, 후보 교훈, 표준 지식, 절차적 스킬 및 평가를 분리하여 유지하십시오.
승격 경로를 실행하십시오:
추적 + 결과
→ 정규화된 에피소드
→ 후보 교훈
→ 중복 제거 및 충돌 확인
→ 이전 실행 및 반례에 대해 재생
→ 섀도우 또는 카나리아
→ 버전 승격
→ 다음 실행 모니터링
→ 유지 또는 롤백
단순히 시간이 지났다는 이유만이 아니라, 반복된 실패, 반복된 수동 작업, 드리프트, 비용 회귀, 의미 있는 결과 증거 또는 구성된 샘플 크기에서 증류를 트리거하십시오. 학습 계층을 설계하거나 변경하기 전에 distillation.md를 읽으십시오. 전용 증류 스킬(예: experience-pack)이 설치된 경우, 증류 워크플로우 자체를 소유하도록 하십시오. 이 스킬은 그것을 호출하는 루프를 설계합니다.
진화 프로세스는 위임된 권한 내에서 SOP, 트리거, 컨텍스트 패킹, 스크립트, 스킬, 검색 및 운영 임계값을 개선할 수 있습니다. 목표, 소스 경계, 테넌트/개인정보 경계, 권한 모델 또는 성공을 정의하는 평가를 자동으로 다시 작성해서는 안 됩니다.
능동적 진실을 깨끗하게 교체
허용된 업데이트에 대해:
- 계약, 상태 스키마, 코드, 테스트, 문서, 뷰 및 스킬 전반에 걸친 영향 그래프를 계산하십시오;
REPLACES,REMOVES,KEEPS를 선언하십시오;- 모든 종속 항목을 업데이트하십시오;
- 능동적 검색에서 대체된 표현과 값을 제거하십시오;
- 모순/오래된 값 스캔을 실행하십시오;
- 영향을 받는 해피 경로와 실패 경로 평가를 실행하십시오;
- 정확히 하나의 현재 답변을 복구해야 하는 제로 컨텍스트 프로브를 실행하십시오;
- 원자적으로 승격하십시오. 이전 버전은 버전 제어/이벤트 기록에만 보관하고 능동적 컨텍스트에는 보관하지 마십시오.
자율성 보정
- 결정론적이고 독립적 검증이 통과될 때 가역적이고 경계된 작업을 자동 실행하십시오.
- 더 높은 위험의 자동화된 작업에는 카나리아, 섀도우, 이중 검증 및 롤백을 사용하십시오.
- 권한이 누락되었거나, 필요한 결정이 목표를 변경하거나, 작업이 실질적으로 되돌릴 수 없고 아직 권한이 부여되지 않은 경우에만 사용자에게 중지하십시오.
- 자율적이라고 광고되는 루프에서 일상적인 인간 승인을 숨겨진 액추에이터로 만들지 마십시오.
완료 확인
다음 모든 사항이 충족될 때까지 루프를 운영 중이라고 하지 마십시오:
- 하나의 명령 또는 구성된 이벤트가 프롬프트 전달 없이 이를 진행할 수 있습니다;
- 중단 복구가 수락된 작업을 다시 수행하지 않고 지속된 상태에서 재개됩니다;
- 중복 트리거가 부작용을 중복할 수 없습니다;
- 검증자 실패가 제한된 수리 또는 깨끗한 중지를 유발합니다;
- 성공 및 실패-폐쇄 경로 모두에 증거가 있습니다;
- 무작동 실행이 성공적으로 저렴하게 종료됩니다;
- 현재 상태, 마지막 결과, 비용, 열린 실패 및 다음 작업을 관찰할 수 있습니다;
- 하나의 진화 후보가 재생되었고 승격되거나 올바르게 거부되었습니다(최소 프로필에서
learning.enabled: false인 경우 면제됨); - 제로 컨텍스트 에이전트가 활성 파일만으로 현재 계약과 다음 작업을 설명할 수 있습니다.
별도로 보고하십시오: 무엇이 구현되었는지, 무엇이 실행되었는지, 라이브 센서가 없어 무엇이 휴면 상태인지, 여전히 사용자의 권한이 필요한 것은 무엇인지.