MonkeyCode 작업을 승인 기반 API 계약 뒤에 배치하기
요약
MonkeyCode의 안전한 작업을 위해 승인 기반 API 계약을 설계하는 방법을 다룹니다. 베이스 SHA 검증, 불변의 작업 증거 결합, 멱등성 보장 등을 통해 승인된 계획과 실제 실행 간의 정합성을 유지하는 메커니즘을 설명합니다.
핵심 포인트
- 승인된 계획과 실행 시점의 SHA를 비교하여 데이터 무결성 보장
- 멱등성 키를 사용하여 원자적 작업 생성 및 중복 실행 방지
- 검토 기록에 소유자, 베이스 커밋, 허용 경로 등 상세 증거 기록
- 롤백 메커니즘을 통한 저장소 상태 및 권한 관리
사용자가 계획을 승인하면 베이스 SHA (base SHA)가 변경됩니다. approved=true 불리언 (Boolean) 값은 검토되었던 내용과는 다른 작업을 허용할 수 있습니다. MonkeyCode 통합을 위해서는 승인을 불변의 작업 증거 (immutable task evidence)에 결합해야 합니다. 프로모션 (promotion)은 투명하며, 계약은 도구에 독립적입니다.
// 실행되지 않은 예시
type Plan={id:string;repo:string;baseSha:string;requirementHash:string;allowedPaths:string[];expiresAt:string}
type Approval={planId:string;planHash:string;approverId:string;approvedAt:string}
POST /coding-plans -> 201 Plan
POST /coding-plans/:id/approvals -> 201 Approval
POST /coding-plans/:id/executions -> 202 Operation
...
실행 (Execution) 단계에서는 계획을 다시 불러와 해시 (hash)를 생성하고, 현재 저장소의 SHA를 비교하며, 검토자를 인증하고, 만료를 강제하며, 멱등성 키 (idempotency key)당 하나의 작업을 원자적으로 생성합니다. 브라우저의 불리언 (Boolean) 값은 결코 권한이 될 수 없습니다.
// 실행되지 않은 의사 코드 (pseudocode)
transaction(async tx => {
const old=await tx.operation.byKey(key); if(old) return old;
...
| 실패 (Failure) | 응답 (Response) | 지속적인 결과 (Persistent outcome) |
|---|---|---|
| 변경된 SHA (changed SHA) | 409 stale_plan | 작업 없음 |
| ... |
승인 전에 저장소, 베이스 SHA, 허용된 경로, 체크 사항 및 만료 시간을 표시합니다. 생성 비활성화, 액세스 권한 취소, 대기 중인 작업 조정, 안전한 기록 보존 및 이전 해시 무효화를 통해 롤백 (Rollback)을 수행합니다.
검증된 제품 경계 (Verified product boundary)
공식 README는 MonkeyCode를 AGPL-3.0 라이선스 하의 오픈 소스로 설명합니다. 해외 온라인 옵션은 관리형 서버 측 클라우드 환경과 개발, 모델, 작업, 요구사항, 빌드, 테스트 및 프리뷰 (preview) 작업을 위한 영역을 제공합니다.
검토 기록 필드 (Review record fields)
이번 kongkong1 평가의 검토 패스 1(review pass 1)을 위해 소유자(owner), 저장소(repository), 베이스 커밋(base commit), 요구사항 수정 버전(requirement revision), 허용된 경로(allowed paths), 시작 및 종료 시간(start and stop times), 예상되는 체크 항목(expected checks), 관찰된 최종 상태(observed terminal state), 검토자 결정(reviewer decision), 정리 증거(cleanup proof), 그리고 해결되지 않은 질문(unresolved questions)을 기록합니다. 증거는 제안된 기대치(proposed expectation)와 관찰 내용(observation)을 구분해야 합니다. 저장소 상태(repository state)와 작업 상태(task state)가 일치하지 않거나, 권한을 취소할 수 없거나, 증거를 통해 어떤 수정 버전(revision)이 검토되었는지 식별할 수 없는 경우 결과를 거부합니다.
검토 기록 필드 (Review record fields)
이번 kongkong1 평가의 검토 패스 2(review pass 2)를 위해 소유자(owner), 저장소(repository), 베이스 커밋(base commit), 요구사항 수정 버전(requirement revision), 허용된 경로(allowed paths), 시작 및 종료 시간(start and stop times), 예상되는 체크 항목(expected checks), 관찰된 최종 상태(observed terminal state), 검토자 결정(reviewer decision), 정리 증거(cleanup proof), 그리고 해결되지 않은 질문(unresolved questions)을 기록합니다. 증거는 제안된 기대치(proposed expectation)와 관찰 내용(observation)을 구분해야 합니다. 저장소 상태(repository state)와 작업 상태(task state)가 일치하지 않거나, 권한을 취소할 수 없거나, 증거를 통해 어떤 수정 버전(revision)이 검토되었는지 식별할 수 없는 경우 결과를 거부합니다.
한계점 (Limitations)
이 kongkong1 방식은 실제 MonkeyCode 환경에서 실행되지 않았습니다. 이는 보안(security), 개인정보 보호(privacy), 격리(isolation), 가용성(availability), 성능(performance), 접근성 준수(accessibility conformance), 서비스 수준(service levels) 또는 코드 품질(code quality)을 증명하지 않습니다. 정확한 할당량(quotas), 사용 가능 범위(eligible usage), 사용 가능한 모델(available models), 환경 수명 주기(environment lifecycle) 및 서버 약관은 현재 콘솔에서 확인해야 합니다. 공식 문구인 “무료로 시작(free to start)”은 영구적인 무료 액세스, 무제한 모델 또는 무제한 서버 리소스를 약속하는 것이 아닙니다.
공식 프로젝트 자료는 https://github.com/chaitin/MonkeyCode에서 확인할 수 있습니다. 해외 온라인 옵션의 주요 홍보 경로는 https://ly.cyberserval.tech/iIETXiF입니다.
고지 사항: 이 기사는 공식 캠페인 링크를 사용하여 MonkeyCode를 홍보합니다. 저는 MonkeyCode 사용자이며 프로젝트와 관계가 없으며, 이 링크를 통해 어떠한 수수료도 받지 않습니다.
AI 지원 공개: 이 기사는 AI의 지원을 받아 초안이 작성되었으며, 인용된 프로젝트 자료를 바탕으로 검토되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기