AI에게 "다 했습니다" 대신 영수증을 받기로 했다

GPTERS 23기 에이전트하네스 3주차 · 기본과제(설계 계약 + 실행 영수증) + 확장과제(부러뜨리기 + 최소 수리 + 재평가)


"일이 진짜 끝났나"를 검사하는 장치를 새로 달았습니다. 규칙 다섯 개짜리였습니다.

부러뜨려 보기 전에, 습관대로 정상 파일부터 한 번 걸어봤습니다. 정상이 떨어졌습니다. 다섯 규칙이 전부 헛돌고 있었습니다.


1. 무슨 업무인가

2월부터 클로드 코드(터미널에서 도는 AI 에이전트)로 스킬 30여 개와 자동화를 만들어 왔는데, 구멍이 하나 있었습니다. 스킬을 부르지 않은 보통 대화에는 검증 규율이 0이었습니다. 에이전트가 "다 됐습니다"라고 하면 그게 진짜인지 잴 방법이 없었죠.

먼저 용어 두 개

이 글에 계속 나오는 말이라 먼저 풀어둡니다. 둘 다 제가 붙인 이름이고, 실제로는 그냥 문서 한 장씩입니다.

이름

언제 쓰나

뭐가 적히나

계약

시작 전

뭘 할 건지 · 뭘 하면 성공인지 · 실패하면 어떻게 할 건지

영수증

끝난 뒤

뭘 했는지 · 증거가 뭔지 · 판정이 뭔지 · 뭘 고쳤는지

식당 영수증이랑 발상이 같습니다. 먹었다는 말 말고 뭘 얼마에 먹었는지 적힌 종이가 남아야 하는 거죠. 에이전트한테 "다 했습니다" 대신 이 종이를 내게 한 겁니다.

그래서 전체에 1벌을 깔았습니다. 모든 요청을 먼저 세 등급으로 나눕니다.

등급

무슨 일이 여기 오나

절차

L

물어보고 답만 듣는 일. 남는 게 없다

"이 파일 어디 있지?"

그냥 답한다. 절차 없음

F

결과물이 남고 "끝났다"고 말해야 하는 일

문서 작성, 스크립트 수정

시작 전 계약 → 실행 → 영수증

M

되돌리기 어렵거나 남한테 나가는 일

메일 발송, 파일 삭제, 규칙 변경

F에 더해 사람 승인 + 끝난 뒤 재확인

영수증은 에이전트가 쓰지만 검사는 코드가 합니다. 칸이 비었는지, 판정이 정해진 네 가지(완료·질문·보류·차단) 중 하나인지를 파이썬 스크립트가 봅니다. 사람이 눈으로 보면 바쁠 때 그냥 넘어가니까요.

이 규율을 실제로 물고 있는 건 제가 만든 「하네스」라는 스킬 하나입니다(스킬 = 에이전트에게 특정 상황의 절차를 미리 적어둔 문서). 계약 양식·영수증 양식·검사 스크립트가 전부 여기 매달려 있어서, 이번 주 작업의 대상도 이 스킬이었습니다.

이번 주 과제로 스터디장님 배포 정본과 제 것을 대조했더니, 뼈대는 같았고 칸 속이 여섯 군데 비어 있었습니다. 그 여섯을 내리는 게 이번 작업이었습니다.


2. 설계 계약 — 일곱 칸

규칙 자체를 고치는 일이라 등급은 M이었습니다.

아래가 이 작업을 시작하기 전에 쓴 계약입니다. 그리고 Criteria(성공 기준) 칸은 쓰자마자 동결했습니다 — 칸 글자를 지문으로 떠서 문서 머리에 박아뒀고, 하다가 기준을 슬쩍 고치면 지문이 어긋나 걸립니다.

내용

Goal

무엇을 바꾸려 하나

배포 정본에서 내게 없던 계약 구조 6종을 내 양식에 내린다. 끝나면 계약은 무시조건·애매기준·실행모양·수리예산을 빈칸으로 둘 수 없고, 기준을 사후에 고치면 코드가 잡는다

Trigger

언제 시작하나 / 언제는 안 하나

시작: 배포본 2개 확인 지시 + 반영 범위 승인. 무시: ①상시 헤더 20줄 상한을 넘겨야 들어가는 항목 ②백업 게이트(별건으로 분리) ③교육 배포 전용 장치 ④회귀 미통과 상태의 전파

Context

무엇을 근거로 하나

배포본 2개(51개 파일 열람) + 내 양식·검사기·기존 영수증 6건. 빠진 것: 학습가이드 본문 6만 자 미독(요약본·슬라이드 전사로 대체)

Route

무엇을 어떤 순서로

모양: 정해진 순서(분기 없음) — 양식 개정 → 검사 규칙 5종 → 고장 샘플 제작 → 회귀 세트 증설 → 전수 회귀 → 영수증 → 재확인

Criteria

뭘 하면 성공인가

아래 표로 따로 뺐습니다

Approval

어디서 사람이 막나

반영 범위 사전 승인 완료. 정본 변경이라 커밋 후 재확인 필수

Repair

실패하면 무엇만 고치나

깨진 검사 하나만 고치고 전수 재실행. 원복 경로 = 백업 4벌. 예산: 시도 3 / 수리 2 / 같은 방식 재시도 1

Criteria 칸은 길어서 따로 뺐습니다. 통과 조건만 적지 않고 실패와 애매까지 미리 가르는 게 이번에 새로 내린 것 중 하나입니다.

판정

내용

통과

①회귀 전수 통과 ②기존 영수증에 새 규칙 소급 적용 없음 ③상시 헤더 무변경 ④새 규칙 5종이 각각 고장 샘플에서 실제로 잡힘 ⑤이 작업의 영수증 자체가 새 양식으로 통과 ⑥기준 변조를 대조 검사가 잡음

실패

하나라도 미충족이면 기각·원복

애매

검증용 비밀 문제는 같은 날 만들면 무효 — 만들지 않고 "확인 못 함"으로 남긴다

내린 여섯 개는 Trigger의 무시조건(언제는 시작하지 않나), Route의 실행 모양, Criteria의 애매 칸(통과와 실패 사이 회색지대를 미리 적기), Repair의 유한 예산, 그리고 기준 동결판정 3값입니다.


3. 어디서 막혔나 / 무엇을 부러뜨렸나

막힘 ① 시작하기도 전에 계약 전제가 틀렸다

계약에 "기존 영수증 6건 전부 통과 유지"라고 썼습니다. 착수 전 실측을 해보니 5통과 / 1실패였습니다. 이틀 전 영수증 하나가 판정 칸 미기입 상태로 남아 있었습니다.

기준을 "5통과/1실패 유지"로 고쳐 쓸 수도 있었습니다. 고치지 않고, 판정 기준을 "개정 전후 동일성 유지"로 대고 전제가 틀렸다는 사실을 영수증에 적었습니다.

막힘 ② 새 검사 규칙 다섯 개가 전부 헛돌고 있었다

고장 샘플을 만들기 전에 정상 샘플부터 걸었습니다. 지난주 사례글에 "새로 단 게이트는 정상 케이스부터 걸어봐라"라고 써놨고, 이번엔 그걸 회귀 세트에 검사 항목으로 박아뒀습니다. "정상 기준본은 통과해야 한다"가 15개 검사 중 하나입니다.

그 검사가 울렸습니다. 정상 파일이 탈락.

원인은 별표 두 개였습니다. 양식은 강조 표시를 써서 무시:로 적는데, 검사기는 무시:라는 글자를 찾고 있었습니다. 사이에 별표가 끼어서 찾는 글자가 영영 안 나옵니다. 다섯 규칙이 전부 같은 방식이라, 다섯 개가 전부 모든 파일에 경보를 울리는 상태였습니다.

고장 샘플만 걸어봤다면 — 고장 샘플은 어차피 탈락이 기대값이라 — "잘 잡네" 하고 통과시켰을 겁니다.

막힘 ③ 부러뜨렸더니, 못 막는 자리가 나왔다

기준 동결은 이렇게 동작합니다. 계약의 판정기준 칸을 해시(내용이 한 글자만 바뀌어도 완전히 달라지는 지문)로 떠서 문서 머리에 박아둡니다. 실행하다가 기준을 몰래 고치면 지문이 어긋나 탈락이 뜹니다.

확장과제로 이걸 부러뜨려 봤습니다. 시나리오는 기준을 완화한 다음, 지문을 다시 떠서 박으면? 입니다.

단독 검사는 통과했습니다. 지문과 본문이 일치하니까요. 자기 지문 검사는 "사후에 고쳤나"만 잡지, "고치고 지문까지 다시 찍었나"는 못 잡습니다.

이건 이전 영수증과 지문을 맞대보는 대조 검사를 돌려야 잡힙니다. 대조 검사에서는 "기준 변경 감지 — 이전 지문과 현재 지문이 다르다"가 떴습니다.

이 사각을 「알려진 사각 C1」로 문서에 등재했습니다. 대응은 규칙 하나입니다. 재평가 영수증은 반드시 대조 검사를 경유한다.


4. 무엇을 바꿨나 — 가장 작은 수리

다섯 규칙을 다시 쓰지 않았습니다. 깨진 건 "키워드를 찾는 자리" 하나였습니다.

검사 직전에 별표만 벗긴 사본을 만들어, 그 사본에서 키워드를 찾게 했습니다. 함수 하나 추가. 단 지문 계산은 원문 그대로 뒀습니다 — 변조 탐지가 목적이라 원문에 민감해야 하니까요.

수리 1회. 계약에 적은 예산(시도 3 / 수리 2) 안입니다.


5. 실행 영수증 — Trace · Proof · Verdict · Repair

내용

Trace

무엇을 불렀고 뭐가 돌아왔나

배포본 51개 파일 열람 → 정본 4벌 백업 → 착수 전 베이스라인 실측 → 양식 개정 → 검사 규칙 5종 + 대조 명령 신설 → 고장 샘플 7벌 제작 → 회귀 세트 6건에서 15건으로 → 전수 회귀 3회

Proof

실제로 관측된 흔적

회귀 출력 "전수 통과 (15건)" · 고장 샘플 5벌이 각각 제 규칙 코드로 검출 · 대조 검사 출력 "기준 변경 감지" · 상시 헤더 9줄 무변경 확인

Verdict

기준에 비추어 통과인가

완료 — 단 둘은 통과로 세지 않음. ① 확인 못 함: 새 규칙용 비밀 검증 문제는 없다. 만든 사람이 답을 아는 문제는 비밀 문제가 아니라서 오늘 만들지 않았다 ② 알려진 사각 C1: 기준 완화 + 지문 재발급은 단독 검사가 못 막는다

Repair

안 됐다면 무엇을 고쳤나

별표 수리 1건 → 같은 기준·같은 샘플로 전수 재실행 15/15

기존 영수증 6건은 개정 후에도 5통과/1실패였고, 실패 사유까지 개정 전과 같았습니다. 이것도 검사 항목(소급 적용 금지)으로 박혀서 자동으로 확인됩니다.


6. 무엇이 달라졌나 / 다음 실험

: 검사기가 "칸이 있나"만 봤습니다. 계약이 시작조건만 적고 무시조건이 없어도, 기준이 통과조건만 적고 애매를 안 가려도, 수리가 무한 재시도여도 통과였습니다.

: 그 넷이 비면 기각이고, 기준을 실행 중에 고치면 지문이 잡습니다.

칸 이름과 상시 헤더는 하나도 안 바뀌었습니다. 그래서 다른 런타임에 다시 심을 게 없었습니다.

다음에 개선할 한 가지: 새 규칙용 비밀 검증 문제를 나중 세션에서 만드는 것. 오늘 만든 고장 샘플 7벌은 제가 규칙을 알고 만든 것이라, 규칙을 모르는 상태에서 만든 고장이 하나는 있어야 검증이 섭니다.


배운 점

하나. 부러뜨리기 세트에는 "정상은 통과해야 한다"가 먼저 들어가야 한다.

금속탐지기를 샀는데 삐— 소리가 계속 난다고 해봅시다. 쇠붙이를 대보면 삐— 울리니까 "잘 되네" 싶습니다. 그런데 빈손으로 지나가도 삐— 울립니다. 탐지기가 아니라 그냥 시끄러운 기계인 거죠.

제 검사기가 딱 그 상태였습니다. 고장 파일만 넣어봤다면 "잘 잡네" 하고 넘어갔을 겁니다. 정상을 넣었을 때 조용한지를 봐야 비로소 구분할 줄 아는 검사기입니다.

둘. 게이트가 못 막은 자리도 증거다.

부러뜨렸더니 못 막는 구멍이 하나 나왔습니다. 당장 고칠 수 있는 종류가 아니었고요.

그냥 넘어가면 몇 달 뒤에 똑같은 걸 또 발견합니다. 그 자리를 찾느라 시간을 두 번 씁니다. 그래서 「사각 C1」이라고 이름을 붙여 적어뒀습니다. 다음에 열어보면 "여기 뭘 걸어야 하는구나"가 바로 나옵니다.

셋. 전제가 틀렸으면 기준을 고치지 말고 어긋남을 적어라.

계약에 "기존 영수증 6건 전부 통과 상태를 유지한다"고 썼는데, 세어보니 5건만 통과였습니다. 제 전제가 틀렸던 겁니다. 여기서 두 갈래가 있었습니다.

선택

결과

계약을 "5통과/1실패 유지"로 고친다

문서가 깔끔해진다. 대신 내가 틀렸다는 기록이 사라진다

계약은 두고 어긋남을 영수증에 적는다

문서가 지저분해진다. 대신 기록이 남는다

아래를 택했습니다. 위로 하면 문서상으론 완벽한데, 확인 없이 전제를 쓰는 습관은 그대로 남습니다.


검사기를 새로 달았으면, 고장부터 넣지 말고 정상부터 넣어보십시오.


과제 제출 필드

대상 확정 카드

필드

mode

existing — 이미 있던 스킬 위에서 시작

skill_name

하네스

real_job_noun

요청 하나를 계약으로 열고 영수증으로 닫기

why_this_is_agent_harness_starting_point

모든 요청이 여기서 등급 판정을 받는다. 계약 양식·영수증 양식·검사 스크립트가 전부 이 스킬에 매달려 있어서, 여기를 고치면 다른 런타임까지 따라온다

start_when

산출물이 남고 "끝났다"고 말해야 하는 일(F) 이상

never_start_when

물어보고 답만 듣는 일(L) — 절차를 펴지 않는다. 과잉 절차도 실패다

done_or_pass_sketch

영수증 4칸이 채워지고 검사 스크립트가 통과

ownership

learner_owned — 제가 2월부터 만들어 온 것

protected_original_boundary

스터디 배포 원본은 읽기만 했고 수정하지 않았습니다. 고친 건 제 사본뿐

inventory_evidence

fresh_list — 착수 시 실제 설치된 스킬 목록을 확인

status

confirmed

실행 필드

필드

control_shape

workflow (단계 고정, 분기 없음)

gate_held

false — 기준을 완화한 뒤 지문을 다시 떠서 박으면 단독 검사가 통과시킨다. 대조 검사로만 잡힘(알려진 사각 C1)

failure_owner

검사 스크립트의 키워드 찾는 자리 한 곳. 양식도 규칙 다섯 개도 아니고 그 한 함수가 실패를 소유했다

smallest_repair_unit

그 함수 하나 (검사 직전 별표 벗긴 사본 생성). 나머지는 손대지 않음

same_criteria_on_re_eval

true — 수리 후 재평가는 같은 기준·같은 샘플로 전수 재실행(15/15). 기준 완화 없음

completion_level

case_post_complete

simulation_only

false — 전부 실대상 실행(정본 양식·검사기·기존 영수증 6건)

backup receipts

정본 4건 각각 .bak-260807-v1 (수리 착수 전 생성)

not_checked

새 규칙용 비밀 검증 문제 미제작 — 만든 사람이 답을 아는 문제는 비밀 문제가 아니라서 같은 날 만들지 않았다. 현재 새 규칙은 고장 샘플 검증만 있고 비밀 문제 검증은 없다

3
4개의 답글
밀어주고 끌어주는

온·오프라인 AI 스터디

AI로 어디까지 할 수 있는지
직접 확인하실 분만 신청하세요.