경고를 차단으로 올렸더니, '유실 없다'는 절반만 맞는 문장이었다
규칙은 문서에 두 번 적혀 있었다. 그런데도 안 지켜졌다. 그래서 문장을 하나 더 적는 대신, 규칙을 코드로 바꿨다. 그리고 그 코드도 절반만 맞았다.
경고는 지켜지지 않는다
봇이 나한테 한국어로 답해야 한다는 규칙이 있다. 문서에도 있고 메모리에도 있었다. 그런데 영어 시스템 알림이 발화자인 턴에서, 영어 답이 그대로 폰에 착지하는 일이 반복됐다. 문장으로 두 군데나 적어뒀는데 안 지켜졌다는 건, 처방이 “문장을 하나 더 적는 것”이 아니라는 뜻이다.
그래서 게이트를 경고에서 차단으로 올렸다. 대상도 DM 전용에서 DM+그룹으로 넓혔다. 규칙은 코드입니다 — 몇 번을 다시 겪어도 결론은 같다.
”차단하면 유실 없다”는 절반만 참이었다
머지 게이트에서 지적이 들어왔다. 차단하면 대신 통지문이 나가니 유실이 없다고 써놨는데, 차단된 원문 자체는 어디에도 안 남는다는 것이었다. 통지문은 “막았다”는 사실만 전하지, 막힌 내용은 전하지 않는다.
수리는 단순했다 — 막히는 지점은 언제나 단순하다. 차단 원문을 로컬 파일에 적재하고(상한 200건, 다 차면 오래된 것부터 돌려쓰기) 통지문에 보관 경로를 한 줄 붙였다. 적재에 실패해도 통지문은 나가게 뒀다. 보존하려다 알림까지 죽이면, 그게 원래 사고보다 더 나쁘다.
배운 것 — “막았으니 안전하다”는 검증되지 않은 절반이다. 막은 다음 그 내용이 어디로 가는지까지 적어야 설계가 닫힌다.
658건을 94건으로
PR 하나 올릴 때마다 검증 스윕이 25~32분씩 돌았다. 셸 파일 하나 고쳐도 전량을 돌리니 그렇다. 변경과 연관된 대상 + 스모크 세트만 돌게 하는 축을 넣었다.
| 상황 | 종전 | 스코프 적용 후 |
|---|---|---|
| 셸 1파일 변경 | 658건 | 94건 |
| 스코프 밖 변경 | 658건 | 92건(스모크만) |
기본값은 그대로 뒀다. 플래그를 안 주면 종전과 완전히 같이 돈다. 게이트가 조용히 좁아지는 것이 이 축의 유일한 사고 형태라서, 좁히기는 명시 옵션으로만 열었다.
카톡봇의 두뇌를 갈아끼웠다
카톡봇의 판단 엔진을 교체하고, 그림을 읽는 축까지 붙였다. 격리 계약은 그대로 지켰다 — 호스트 디렉토리를 통째로 마운트하지 않고, 그림 한 장만 컨테이너 안으로 복사한 뒤 읽기 권한을 그 경로 하나로만 열었다.
개발 중에 잡은 버그 두 개가 더 값졌다. 하나는 미로그인 상태에서 엔진이 실패했는데 에러 문구를 정상 답변처럼 내보내 카톡방에 그대로 나갈 뻔한 것. 다른 하나는 권한 거부를 모델이 말로 얼버무리면 그 답이 진짜 답인 척 통과하던 것. 둘 다 “실패가 성공과 같은 모양으로 반환되는” 같은 계열이다.
로컬 32B 모델, 다시 재보고 다시 기각
맥북 M5(통합메모리 24GB)에 32B 코딩 모델을 얹어봤다. 예전에 소형 모델을 기각한 기록이 있었지만 “VRAM 30B급이면 재검토”라는 조건을 달아뒀었고, 이번에 그 조건이 충족돼서 다시 쟀다.
적재는 성공했다. 19GB 모델이 21GB로 상주했다. 문맥 읽기는 30.9 tok/s로 정상이었다. 그런데 답 생성이 1.37~3.00 tok/s, 평균 약 2였다. 멀티파일 수정은 통과했다 — 두 파일에 걸친 버그를 한 번에 고쳤다. 하지만 도구 호출 포맷에서 실패했다. 의미상 맞는 답은 만드는데, 에이전트 하네스가 요구하는 규격으로 감싸지 못했다.
결론은 “아직 아니다”였다. 근본 원인이 능력이 아니라 메모리라는 게 분명했다 — 21GB를 24GB에 얹으면 OS와 세션이 쓸 여유가 3GB뿐이라 상시 압축·스왑 상태가 된다. 실제로 로드 직후 여유 페이지가 81MB까지 붕괴했다가, 언로드하니 20GB로 즉시 회복했다.
배운 것 — “로드된다”와 “여유 있게 돌아간다”는 다른 조건이다. 재검토 조건을 걸 땐 후자로 걸어야 한다.
배운 것
한국어 게이트가 차단으로 발효됐고, 차단된 원문도 보존된다. PR 시점 검증이 필요할 때 658건 대신 94건만 돌릴 수 있게 됐다. 카톡봇이 글자와 그림을 함께 읽는다. 로컬 32B 상시 워커 안은 기각으로 확정됐고, 모델 파일은 디스크에 남겨뒀다.
들어간 돈은 0원이다. 로컬 모델 실험에 든 건 전기와 11분이었고, 그 11분으로 “월 얼마짜리 GPU를 살 필요가 있나”라는 질문을 닫았다.
— 강대종 / @ssamssae