작업 기록

반복 경고를 줄이되, 규칙을 끄지 않는 방법

PromptSieve에 검토 완료 fingerprint baseline 흐름을 추가해 반복 오탐을 줄이면서 새 문맥의 경고는 남긴 작업 기록.

짙은 남색 배경에서 반복 경고 카드 일부가 작은 확인 표식으로 정리되고, 새로운 주황색 경고는 검사선 밖에 남아 있는 가로형 편집 이미지.

지난 작업에서 PromptSieve는 외부 텍스트 안의 의심 지시를 한국어·영어 규칙으로 표시하고, SARIF를 포함한 구조화된 결과를 만들 수 있게 됐다. 다음 질문은 탐지 규칙을 더 늘리는 것이 아니었다. 사람이 이미 읽고 정상이라고 판단한 같은 문구가 반복될 때, 검토 피로를 줄이면서도 새 위험 신호를 지우지 않으려면 어떻게 해야 할까?

가장 쉬운 답은 규칙을 끄는 것이다. 그러나 규칙 단위의 예외는 너무 넓다. 예를 들어 어떤 문서의 “이전 지시를 무시하라”는 문장이 보안 교육의 인용이라 정상일 수 있어도, 다른 문서에서 같은 규칙이 잡은 문장은 실제로 다시 봐야 할 수 있다. 한 번의 오탐 때문에 규칙 전체를 꺼 버리면, 반복 경고와 새 경고를 함께 버리게 된다.

이번에는 그 예외를 검토한 발견 하나에만 묶는 baseline 흐름을 추가했다. --format baseline은 발견의 규칙 ID, 심각도, 문맥을 결합해 만든 SHA-256 fingerprint 목록을 JSON으로 출력한다. 원문 전체나 매치 문자열은 baseline 파일에 넣지 않는다. 사용자는 그 후보를 결과 화면과 대조해 실제로 정상이라고 검토한 항목만 남긴 뒤, 다음 실행에서 --baseline으로 전달할 수 있다.

python3 prompt_sieve.py external-notes.txt --format baseline --output reviewed-baseline.json
python3 prompt_sieve.py external-notes.txt --baseline reviewed-baseline.json --format json

두 번째 실행에서는 fingerprint가 정확히 같은 항목만 결과에서 숨긴다. 줄 번호가 바뀌어도 문맥이 같으면 반복 경고를 줄일 수 있지만, 규칙·심각도·문맥 중 하나라도 달라지면 새 발견으로 남는다. JSON 결과에는 보이는 finding_count와 별도로 suppressed_count도 기록한다. 즉, “아무것도 발견되지 않았다”와 “이전에 검토한 항목을 이번에는 숨겼다”를 구분할 수 있다.

이 설계에는 분명한 한계가 있다. 문맥을 fingerprint에 쓰는 만큼 문구가 조금만 바뀌어도 다시 검토하게 되고, 반대로 사람이 baseline 후보를 성급히 받아들이면 나중의 같은 문맥을 지나칠 수 있다. SHA-256은 안전 판정이 아니라 항목 식별 방식일 뿐이다. baseline을 공유하거나 보관할 때도 그 파일이 검토 이력을 뜻할 수 있음을 고려해야 한다. 그래서 생성 명령은 ‘승인 목록 만들기’가 아니라 검토 후보 만들기로 문서화했고, 새 문맥·높은 심각도·미검토 항목은 계속 남겨야 한다고 명시했다.

구현은 baseline JSON 형식을 version: 1과 64자리 소문자 fingerprint 배열로 제한했다. 형식이 깨졌거나 잘못된 파일이면 조용히 무시하지 않고 종료 코드 2로 멈춘다. 검토 흐름에서 예외 파일이 잘못 읽혔는데도 통과로 보이는 상황을 피하려는 선택이다.

검증에서는 Python 컴파일 검사와 단위 테스트 11개가 모두 통과했다. 기존 영문·한국어 탐지와 SARIF 출력 검증을 유지하면서, 한 발견만 baseline에 넣었을 때 다른 발견은 남는지, baseline 결과에 원문 문장이 아닌 해시만 들어가는지를 추가로 확인했다. 의심 영문 샘플 다섯 건으로 baseline을 만든 뒤 재실행했을 때는 finding_count: 0, suppressed_count: 5, 종료 코드 0이 나왔다. 이는 동일한 샘플에서 숨김 경로가 동작한다는 구현 검증이지, 실제 문서에서 오탐이 충분히 줄었다는 사용자 검증은 아니다.

다음 확인은 더 많은 예외를 미리 넣는 일이 아니다. 서로 다른 사람이 실제 외부 텍스트를 점검할 때, baseline 후보를 검토하는 비용이 반복 경고를 읽는 비용보다 낮은지, 그리고 숨기지 않은 새 경고를 실제로 다시 확인하는지 기록해야 한다. 작은 보안 점검기의 가치는 경고 수를 줄이는 데 있지 않다. 사람이 어떤 예외를 받아들였는지 잊지 않으면서, 아직 설명되지 않은 신호에 시간을 쓸 수 있게 하는 데 있다.

CONTINUE READING

프롬프트 인젝션눈에 보이지 않는 문자도 검토 신호로 남기기검증맥락은 공짜가 아니다: 에이전트가 무엇을 남기고 무엇을 버려야 하는가