프리 벤치 타임 전에 봉투를 밀봉하라
요약
이 글은 AI 프로젝트를 진행할 때 '무료 컴퓨팅'이나 '공유 벤치'에 의존하는 위험성을 경고합니다. 성공적인 협업과 지속 가능한 개발을 위해, 모든 작업 과정(프롬프트 입력, 데이터 변경 등)마다 목적, 데이터 클래스, 중지 시간 등을 명시한 '봉투(envelope)'를 작성하고 기록해야 한다고 강조합니다.
핵심 포인트
- 무료 컴퓨팅은 임시적인 실험실 작업대처럼 취급해야 합니다.
- 작업의 시작과 끝을 명확히 하기 위해 '봉투'에 목적, 데이터 클래스 등을 기록하세요.
- 협업 과정에서 역할(Editor, Witness, Closer)을 분리하여 책임 소재를 분명히 해야 합니다.
- 채팅 스레드 대신 검색 가능한 위키 페이지에 모든 기록을 남겨야 합니다.
무료 모델 좌석은 서면 인수인계를 대체할 수 없습니다. 무료 서버는 이름이 지정된 소유자를 대체할 수 없습니다. 팀은 첫 프롬프트가 들어가기 전에 봉투를 밀봉해야 합니다.
많은 팀들이 이제 검토하는 속도보다 더 빠르게 코드를 생성합니다. 공유 벤치가 비밀을 혼합하기 전까지는 속도가 진전처럼 느껴집니다. 조용한 실패는 종료 지점(exit)이 없는 레이블이 지정되지 않은 실행입니다.
생성된 코드는 아무도 결과의 소유자가 되기 전에 완성된 것처럼 보일 수 있습니다. 포트폴리오 데모와 공유 벤치는 다른 방식으로 실패합니다. 벤치는 다음 사람이 중지 규칙을 볼 수 없을 때 실패합니다.
무료 컴퓨팅을 빌린 작업대처럼 다루기
이 플레이북은 무료 컴퓨팅을 빌린 실험실 작업대(lab bench)처럼 취급합니다. 이 작업대는 로그가 붙어 있는 동안에만 유용하게 유지됩니다. 그 로그는 팀 위키 안에 있는 한 페이지짜리 봉투입니다.
이 봉투에는 목적, 데이터 클래스, 중지 시간, 그리고 마감 스탬프가 담겨 있습니다. 누락된 필드는 누군가 채울 때까지 작업대를 어둡게 만듭니다. 채워진 필드라 할지라도 그 옆에 사람의 이름이 필요합니다.
이름을 지정한 릴레이 유지하기
데스크 에디터(Desk Editor)는 어떤 프롬프트가 들어가기 전에 작업을 수락하거나 거부합니다. 런 위트니스(Run Witness)는 세션을 지켜보고 무엇이 변경되었는지 기록합니다. 클로저(Closer)는 diff 이후에 보관, 유지 또는 폐기 스탬프를 찍습니다.
작은 팀은 한 사람이 두 개의 모자를 쓰도록 할 수 있습니다. 같은 사람이 하나의 실행을 편집하고, 증언하고, 마감해서는 안 됩니다. 인력이 부족할 때는 클로저 역할을 두 번째 엔지니어에게 분리하세요.
작업은 에디터가 봉투를 파일한 후에만 시작됩니다. 작업은 위트니스가 diff와 로그를 연결할 때 진행됩니다. 작업은 클로저가 동일한 봉투에 스탬프를 찍을 때 끝납니다.
인수인계는 채팅 스레드가 유일한 기록이 될 때 실패합니다. 채팅은 스크롤되어 사라지지만, 위키 페이지는 검색 가능하게 남아 있습니다. 실행 전에 안정적인 위키 슬러그 아래에 봉투를 붙여넣으세요.
한 페이지짜리 실행에는 네 가지 박자가 있으며 추가 의식은 없습니다. 그 박자는 파일, 확인(check), 프롬프트, 그리고 이름이 첨부된 스탬프입니다. 만약 어떤 박자라도 이름이 부족하면 릴레이는 멈추고 작업대는 어둡게 유지됩니다.
증인(witness) 핸드오프는 다음과 같이 읽을 수 있습니다: diff 연결됨, 데이터 클래스 변경 없음, 시계 온전함. 근접한 핸드오프는 다음과 같이 읽을 수 있습니다: 테스트 재실행됨, 비밀 정보 부재, 스탬프 유지. 보류(Hold)는 지정된 사람이 돌아올 때까지 diff가 병합되지 않고 머무름을 의미합니다.
데이터 클래스가 표류할 때 중단하기
다음 장면은 측정된 사고가 아니라 복합적인 실패입니다. 파서 스파이크가 공개적으로 시작되고, 그다음 내부 로그가 붙여넣어집니다. 자유 서버는 봉투가 결코 허용하지 않았던 데이터를 보유합니다.
증인은 데이터 클래스가 변경되는 순간 멈춰야 합니다. 클래스 변경은 조용한 연속이 아니라 새로운 작업입니다. 편집자는 다음 프롬프트 전에 봉투를 다시 작성해야 합니다.
일부 팀은 MonkeyCode를 통해 이 벤치에 도달합니다. 공개: 본 기사는 MonkeyCode의 제품 홍보의 일환으로 준비되었습니다. 운영자는 무료 모델 접근 및 무료 서버 옵션을 보고합니다.
이 두 가지 주장은 역량 계약이 아니라 가용성 참고 사항입니다. 본 기사는 모델, 할당량(quota), 하드웨어 또는 기간을 명시하지 않습니다. 제품이 보여주는 모든 실시간 제한을 봉투에 복사하세요.
제품이 숫자를 보여주지 않으면 '알 수 없음(unknown)'이라고 적고 로컬에서 상한선을 설정하세요. 로컬 상한선은 벤더의 약속이 아니라 팀 규칙입니다. 상한선 또는 시계가 먼저 도달할 때 실행을 중단하세요.
무료 접근은 긴 공지 없이 변경될 수 있습니다. 무료 서버는 공유되거나, 느려지거나, 재설정되거나, 철회될 수 있습니다. 봉투에는 접근이 끝날 경우 팀이 무엇을 할 것인지 적어야 합니다.
첫 번째 밀봉된 실행을 위해 임시 저장소(throwaway repository)를 선택하세요. 프로덕션 비밀 정보와 고객 데이터는 그 저장소에 두지 마세요. 무료 서버를 금고가 아니라 복도 화이트보드처럼 취급하세요.
데이터 클래스는 낯선 사람이 읽게 될 첫 줄에 속해야 합니다. 공개(public), 내부(internal) 또는 금지(forbidden)만을 유일한 세 가지 레이블로 사용하세요. 금지는 편집자가 어떤 프롬프트보다 먼저 작업을 거부한다는 의미입니다.
목적은 낯선 사람이 감사할 수 있도록 한 문장 안에 들어가야 합니다. 모델을 단순히 시도하는 줄은 목적이 아니며 실패해야 합니다. 파서를 재작성하고 테스트가 녹색 상태를 유지하도록 하는 것과 같은 목적은 통과할 수 있습니다.
정지 시간(Stop time)은 기분 상태가 아니라 시계입니다. UTC 기준으로 절대 타임스탬프와 최대 분(minute count)을 기록하십시오. 증인(witness)은 두 경계 중 하나에 도달하면 세션을 종료합니다.
로컬 작업과 무료 서버 작업은 같은 위험도가 아닙니다. 샘플이 노트북을 벗어나지 않는 경우에는 로컬 모드를 사용하십시오. 카드 이름에서 해당 모드를 명시할 때만 무료 서버를 사용하십시오.
공유 서버는 이웃(neighbors), 재시작, 그리고 불분명한 데이터 보존 문제를 야기합니다. 증인은 재시작, 시간 초과(timeout), 빈 응답을 기록해야 합니다. 이러한 메모는 클로저가 도장을 찍기 전에 봉투에 적혀야 합니다.
슬로건이 아닌 게이트를 붙여라
아래 아티팩트는 위키 페이지용으로 실행되지 않은 예시입니다. 검사기가 신뢰하기 전에 이름과 경로를 조정하십시오. 필수 봉투 필드가 비어 있으면 실행을 거부합니다.
카드 형식은 전체 YAML 파서가 아니라 평면 키 파일(flat key file)입니다. 값에 공백이 포함될 수 있지만, 각 키는 한 줄에 유지되어야 합니다. 값을 따옴표로 감싸지 마십시오. 이 파서는 그렇게 처리하기 때문입니다.
#!/usr/bin/env python3
'''실행되지 않은 예시: 빈 봉투를 가진 무료 벤치 실행 거부.'''
...
purpose: 샘플 파서를 재작성하고 테스트가 녹색 상태를 유지하도록 함
data_class: public
vendor: MonkeyCode
...
date -u +%Y-%m-%dT%H:%M:%SZ
python3 check_envelope.py envelope.card
cat > blank.card << 'EOF'
...
검사기는 위키 내보내기 옆이나 리포지토리 안에 저장하십시오. 공유 벤치 작업이 시작되기 전에 신뢰할 수 있는 CI 환경에서 실행하십시오. 실패한 검사는 나중에 할 메모가 아니라 하드 스톱(hard stop)입니다.
검사기에 포함된 분 경계는 제품 제한이 아니라 팀 정책입니다. 팀에 이미 더 엄격한 규칙이 있다면 10과 90을 변경하십시오. 이 정수들을 공급업체 할당량이나 약속으로 취급하지 마십시오.
첫 번째 테스트는 빈 카드를 사용하고 0이 아닌 종료 코드를 예상합니다. 두 번째 테스트는 전체 카드와 미래의 정지 시간을 사용합니다. 그 완전한 카드는 검사기에서 0 종료 코드를 반환해야 합니다.
세 번째 테스트는 데이터 클래스를 금지(forbidden)로 표시하고 거부를 예상합니다. 과거의 정지 시간은 다른 필드가 괜찮아 보여도 실패해야 합니다. 이 검사들은 공유 벤치가 열리기 전 최소한의 조건입니다.
샘플 카드는 가짜 리포지토리와 가짜 소유자 이름을 사용합니다. 무료 서버에서 첫 실제 세션을 시작하기 전에 둘 다 교체하세요. 정지 시간을 미래로 남아 있도록 수정하세요.
체커(checker)의 출력은 점수라기보다는 게이트(gate)처럼 읽으세요. 통과했다는 것은 봉투가 완성되었다는 의미이지, 코드가 안전하다는 의미는 아닙니다. 사람 클로저(closer)는 병합(merge)하기 전에 여전히 diff를 읽습니다.
샘플 명령어들은 새로운 팀원이 감사할 수 있도록 작게 유지됩니다. 여기에 표시된 필드 검사에는 Python 3만 충분합니다. 이 로컬 체커 내부에는 네트워크 호출이 속해서는 안 됩니다.
외부에 전화를 거는(phones home) 체커는 봉투 자체를 유출할 수 있습니다. 검증은 노트북이나 신뢰할 수 있는 러너(trusted runner)에서 유지하세요. 라이브 키를 카드나 스크립트에 붙여넣지 마세요.
편집하기 전에 UTC 명령을 사용하여 정지 시계를 만드세요. 그 타임스탬프를 stop_at_utc에 붙여넣은 다음, 분 제한을 추가하세요. 날짜 명령이 누락된 경우, 신뢰할 수 있는 시계에서 UTC를 가져오세요.
이 작업들은 봉투 밖에 두세요
제한 사항은 숨겨진 각주가 아니라 혜택 옆에 있어야 합니다. 카드는 나중에 비밀을 몰래 넣는 프롬프트를 감지할 수 없습니다. 카드는 무료 서버가 워크로드를 격리했는지 증명할 수 없습니다.
검토자들은 긴 하루 끝에 승인 도장을 찍을 수 있습니다. 같은 쌍이 모든 공유 실행에서 배포될 때 클로저를 교체하세요. 주간 폐쇄된 봉투 샘플은 습관을 정직하게 유지합니다.
공유 서버가 없는 개인 노트북의 경우 이 플레이북(playbook)은 건너뛰세요. 법률 자문팀이 이미 데이터 경로를 소유하고 있는 경우 건너뛰세요. 공개 위키에 카드 내용이 유출될 수 있는 경우 건너뛰세요.
또한, 작업에 이름 붙여진 프로덕션 런타임(production runtime)이 필요한 경우에도 건너뛰세요. 알려지지 않은 모델 정체성은 임시적인 스파이크(spike)에 대해서만 허용됩니다. 프로덕션 병합에는 팀이 재테스트할 수 있는 고정된 런타임이 필요합니다.
이 방법은 의도적으로 순수한 채팅 기반 코딩보다 느립니다. 그 느림함은 여러 사람이 하나의 작업대를 공유할 때 중요합니다. 밀봉된 봉투는 몇 분의 비용을 초래하며 나쁜 병합을 방지할 수 있습니다.
위키를 가진 팀은 다음으로 보고된 무료 경로를 시험해 볼 수 있습니다. 임시 리포지토리를 사용하고 체커로부터 통과를 기다리세요. 그 첫 번째 실행은 카드에 쓰인 정지 시간 내에 유지하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기