목록으로

안 열어도 들어오는 설정 파일: 검토 차단 규범 회수 9건

0 조회
AI 에이전트 개발
#Claude Code#서브에이전트#코드 리뷰#웹소설 툴킷

TL;DR

  • 「생성 맥락을 차단하라」고 적은 절이 같은 자리에서 바이블을 쥐여 주고 있었다
  • 새 서브에이전트로 띄우면 된다고 봤는데 틀렸다. 프로젝트의 CLAUDE.mdAGENTS.md 는 찾지도 열지도 않아도 들어온다
  • 독립 검토에서 9건을 회수해 7건을 고쳤다. 차단 문구가 0건이던 스킬에 갈래 하나가 생겼고, 엉뚱하게 붙는 발화는 91개 중 6개 그대로다

웹소설 툴킷에 제안이 하나 왔다. 1부 첫 아크 20화, 109,953자를 쓰고 검토를 준비하다 나온 것이다.

설계한 사람이 검토했을 때 나온 것

회차 상세를 짜고 집필 지시를 쓴 대화가 그대로 검토까지 했더니, 매 회차 판단이 「지시대로 나왔는가」로 모였다. 「재미있는가」가 아니었다. 설계한 쪽은 모든 문장이 무엇을 위한 것인지 알기 때문에, 밋밋한 자리도 목적으로 채워서 읽는다.

제안자는 원인을 하나 더 짚었다. 검토자에게 설정집을 주면 헷갈리는 대목에서 설정을 찾아 스스로 답을 만들고 「의도된 것」으로 넘어간다. 독자에게는 그 설정집이 없다. 그래서 독자가 실제로 겪을 혼란이 보고서에서 사라진다.

툴킷이 이미 적어 둔 문장

확인해 보니 규범 자체는 있었다. 원고를 쓴 직후 돌리는 검사 절에 이렇게 적혀 있다.

이 검사는 생성 맥락을 차단한 상태에서 해야 한다. 방금 쓴 문맥이 남아 있으면
위반을 "의도한 것"으로 합리화하기 쉽다. 서브에이전트를 쓸 수 있는
환경(Cowork, Claude Code)에서는 반드시 분리하라.

에이전트에 주는 것: 생성물 + 바이블 + 직전 회차. 생성 의도나 지시사항은 주지 마라.

한 절이 서로 다른 두 가지를 지시한다. 앞은 차단하라고 하고 뒤는 바이블을 주라고 한다. 차단하는 것은 생성 의도 하나다.

설정이 맞는지 보는 검사에는 이게 맞다. 대조할 정본이 없으면 모순을 가릴 수가 없다. 재미와 이탈을 보는 검토에는 반대다. 그리고 원고 검토를 맡는 스킬 쪽에는 차단 조건이 아예 없었다. 차단·맥락·바이블 로 훑으면 걸리는 것은 커뮤니티 수집 각주 한 줄뿐이다. 오히려 「작가 의도를 모르는 채로 단정하지 마라」를 요구하고 검토 서식의 입력 항목에 「작가 의도」가 들어가 있다.

처음 내린 답: 맥락 없는 새 대화

개발자가 물었다. 검토자를 맥락 없는 새 서브에이전트로 띄우면 설정집 문제는 해결되는 것 아닌가.

절반은 맞다. 새 에이전트는 앞의 대화도 집필 지시도 못 본다. 그런데 넷이 남는다.

첫째, 맥락이 비어도 파일 접근은 열려 있다. 이 툴킷은 설정집과 회차표를 원고와 같은 저장소에 두는 것을 기본으로 삼는다. 성실한 에이전트는 이웃 파일을 읽는다. 실제로 이 저장소에는 서브에이전트가 시키지도 않은 git checkout 을 해서 릴리스 검사가 가짜 실패를 낸 기록이 있다.

둘째, 현행 규범이 바이블을 주라고 지시한다. 새 대화로 띄워도 그 줄은 그대로 따라간다.

셋째, 차단할 것에 뒤 회차가 있다. 덮을지 말지를 재려면 앞 3화만 주고 그다음을 안 줘야 한다. 뒤를 아는 검토자는 앞에서 안 막힌다. 이건 맥락 문제가 아니라 무엇을 건네는가의 문제다.

넷째, 서브에이전트가 없는 환경도 지원 대상이다.

그래서 차단을 「무엇을 준다」가 아니라 「무엇을 읽지 마라」로 적기로 했다. 검토자에게 그대로 건네는 금지문 덩어리를 만들었다. 설정집과 기획 문서와 회차표를 찾지 말고 눈에 띄어도 열지 말고 모르는 것이 나오면 모른 채로 읽고 막힌 자리를 적으라는 내용이다.

금지문이 못 막는 경로

여기까지 만들고 독립 검토를 두 갈래로 띄웠다. 하나는 「우회 가능성」, 하나는 「작가가 읽는 것과 갈래 경계」다.

첫 갈래가 이걸 짚어 왔다. 금지문을 글자 그대로 지킨 검토자에게도 설정이 들어온다.

에이전트를 띄우면 Claude Code 는 프로젝트의 CLAUDE.mdAGENTS.md, 기억해 둔 메모를 「기본 동작을 덮어쓰는 지시」로 넣어 준다. 검토자는 아무것도 찾지 않았고 아무것도 열지 않았다. 내가 쓴 금지문의 동사는 찾지 마라, 열지 마라, 쓰지 마라 셋인데 앞의 둘이 위반되지 않는다.

그리고 그 규약 파일에 무엇이 들어가는지가 문제였다. 작품 제목, 표기 통일 규칙, 인물 호칭, 용어. 바이블의 요약이다. 규약 파일이라 작가는 그걸 설정집으로 여기지 않고 검토자는 「내가 따라야 할 규칙」으로 읽는다.

가장 아픈 부분은 이거다. 이 저장소는 자기 검토를 띄울 때 쓰는 문서에 이미 같은 내용을 적어 두고 있었다. 「완전한 제로컨텍스트는 불가능하다. 서브에이전트는 AGENTS.md·CLAUDE.md·개인 메모리를 「기본 동작을 덮어쓰는 지시」로 주입받는다.」 자기 검토에는 있고 작가용 규범에는 없었다.

나머지 회수

두 갈래에서 9건이 나왔고 근거로 든 파일과 줄을 전부 열어 대조했다. 지어낸 이력은 0건이다. 7건을 고쳤다.

무거운 것 둘을 더 적는다.

차단이 성립했는지 확인할 방법이 없었다. 설정집을 읽고 낸 보고서와 안 읽고 낸 보고서가 형식상 구별되지 않는다. 둘 다 항목을 다 채우고 인용도 붙고 처방도 없다. 검토가 무엇을 잰 것인지 아무도 모르는 상태로 그 결과가 개고 판단의 근거가 된다. 출력 첫 칸을 「무엇을 읽었나」로 세웠다. 자기 신고이므로 증거는 아니고 고지다. 그 한계도 문서에 적었다.

「아는 하차 이유」가 기존 조건을 하나도 안 거쳤다. 검토자에게 아는 하차 이유를 적고 원고의 어느 줄이 걸리는지 짚으라고 했는데, 검토자는 원고만 읽으므로 그 목록은 전부 모델이 미리 알고 있던 통설이다. 툴킷은 같은 부류에 이미 조건을 걸어 두었다. 같은 성향 커뮤니티 2곳 이상에서 관측될 것, 랭킹 상위작에서도 쓰이면 지뢰가 아니라 취향 갈림으로 볼 것. 새 갈래에는 그게 하나도 없었다. 게다가 보정할 자리가 둘 다 막혀 있다. 검토자는 기준 문서를 못 읽어 신뢰도 등급을 밝힐 수 없고 취합하는 쪽은 요약을 하지 않기로 되어 있다. 지위를 낮추는 문장을 검토자가 그대로 옮겨 적게 했다.

도달 경로에서 낸 실패 둘

만든 갈래에 작가가 도달하려면 시험 발화를 넣고 어느 스킬로 붙는지 재야 한다. 여기서 두 번 걸렸다.

처음 만든 발화 셋이 스킬 설명문의 문구를 그대로 베낀 것이었다. 그걸 막으려고 만들어 둔 검사가 붉어졌다. 베낀 발화로 재면 통과가 보장되므로 고쳤다는 증거가 안 된다는 이유로 넣어 둔 검사인데, 정확히 그 실패에 걸렸다.

피하려고 설명문에 낱말을 더 넣었더니 이번엔 엉뚱하게 붙는 발화가 6개에서 8개로 늘었다. 원고 검토 스킬이 다른 두 스킬이 받던 문장을 가져갔다. 보강을 되돌리고, 되돌린 상태에서 통과하는 발화 셋만 남겼다.

고치기 전과 뒤

  • 원고 검토 스킬의 차단 관련 문구 0건이 갈래 하나로 늘었다. 무엇을 읽지 말지, 몇 화까지 건넬지, 누가 판단하지 않을지가 문서에 있다
  • 검토 서식에서 원문 인용이 빠질 수 있었다. 서식 서두가 반드시 지킬 것으로 「검토 순서」와 「지적 3개에 수정안 필수」 둘만 들고 있었다. 인용을 그 목록에 넣었다
  • 작가에게 A-1 #7 같은 번호만 내보내던 자리 3곳을 고쳤다. 번호 앞에 그게 무엇인지를 적는다
  • 검사 21개 전부 통과. 시험 발화 91개 중 엉뚱한 스킬로 붙는 것은 6개로, 고치기 전과 같다

남은 것

새로 만든 갈래를 실제 원고로 돌려 보지 않았다. 이 저장소에는 원고가 없다. 금지문이 붙은 검토자가 정말로 설정을 안 찾는지, 「무엇을 읽었나」 칸이 실제로 채워지는지는 확인 못 했다.

검토를 여러 갈래로 나누라는 제안은 미뤘다. 제안자가 다섯으로 나눠 돌린 사례를 냈지만 한 갈래로 돌려서 못 잡았다는 비교가 없다. 갈래 이름을 툴킷이 정해 버리면 그 관점이 없는 작품에서 하나가 빈다.

「몇 화까지 넘겨야 해」라는 질문은 지금 어느 스킬로도 안 간다. 설명문에 그 낱말을 넣으면 붙기는 하는데, 다른 스킬이 받던 문장을 빼앗아서 잘못 붙는 발화가 하나 늘었다. 하나를 얻고 하나를 잃는 교환이라 넣지 않았다. 대신 범위를 안 고른 보고서는 이탈 판단을 읽지 말라고 그 갈래 안에 적어 두었다.


댓글

댓글 작성