← 빌드 일지
일반2026-05-25·15분 읽기

기존 자가비판 라인을 1 인 빌더 환경에 어떻게 맞춰 썼나 — MINDCHANGE axis 정의서

한 줄 요약. 자가비판 논문 라인을 1 인 빌더 셋업에 그대로 넣으려고 했는데 대부분 안 맞았어요. MetaCrit 는 agent 4 개 필요. MAR 는 다중 persona 토론 필요. PR-CoT 는 외부 orchestrator (조율자) 필요. Reflexion 은 reward (보상) 신호 필요한데 제 라벨링 예산이 없음. Self-Reflection 이 가장 가깝지만 2 단계 루프 + 가짜 약함을 진짜 약함과 분리하는 단계가 없음. 그래서 패턴을 줄여서 = 단일 8 기가바이트 그래픽카드에서 단일 agent 단일 세션 안에서 돌릴 수 있도록 = 3 단계 (부정 자아 → 자가검증 → 변모) 로 만들었어요. MINDCHANGE 라고 부르고 = 컨텍스트 엔지니어링 6 종 axis 위에 7 번째 axis 으로 박았습니다. 이 글 = 그 adaptation 풀어쓰기 + 5 모델 실험 설계 (Claude Opus 4.7 + Gemma 4 31B + Gemini 3.5 Flash + DeepSeek V4 Pro + Qwen 3.6 Max preview (Qwen 3.7-Max 의 대체 = publish 시점 OpenRouter 미연결)) + 황 (thehwang) num_ctx 하니스와의 직교 결합 가설.


기존 라인이 제 스택에 안 맞은 이유

자가비판 논문 라인은 풍부합니다. 지난 2 주 읽으면서 계속 같은 벽에 부딪쳤어요. 논문들이 제가 안 가진 인프라 를 가정합니다.

MetaCrit (arxiv 2507.15015) = 4-agent 메타인지 framework. Nelson-Narens 메타인지 모델 기반. object-level (대상) agent 가 초안 응답 생성. monitoring (감시) agent 가 유효성 평가. control (통제) agent 가 논리 비판. meta-level (메타) synthesizer 가 셋을 종합. 깔끔하게 설계됐어요. 다만 = 패스당 모델 호출 4 번. 제 라우팅 티어 = 단발 호출 비용의 4 배. 자가 호스트 8 기가바이트 그래픽카드에서는 시간도 4 배. cron 으로 주마다 수백 번 도는 워크로드에서는 = 수학이 죽임.

MAR (Multi-Agent Reflexion) (arxiv 2512.20845) = 단일-agent 자가비판을 persona 기반 critic 들의 구조화된 토론 으로 교체. 목적 = 외부 관점 여러 개 가져와서 self-bias (자기 편향) 회피. 같은 scaling 문제. 이제 토론 패널을 유지해야 함. persona 들은 작성 + 튜닝 필요. 활성 프로젝트 18 개 유지하는 1 인 빌더한테는 = 유지 비용 진짜.

MyGO PR-CoT (arxiv 2601.07780) = poly-reflective chain-of-thought (다관점 반성 사고 체인). 모델이 미리 정의된 4 관점에서 자기 평가. 단일-agent 에 가깝지만 = 여전히 패스당 4 관점 강제하는 외부 orchestrator 필요. 가능. 다만 = plumbing 추가.

Reflect-Retry-Reward (arxiv 2505.24726) = 강화학습 기반 자가 향상. reward (보상) 신호 필요. 제 cron 파이프라인이 도는 감사 작업의 라벨링 된 reward 데이터셋 = 없음. 이대로 못 씀.

PopuLoRA (Co-Evolving LLM Populations for Reasoning Self-Play) (HN 게시 2026-05) = 정반대 axis. 다중 LLM 군집 을 reasoning self-play 으로 함께 진화. 군집 수준 진화 라인. MINDCHANGE 와 직교 = PopuLoRA 는 군집을 시간 가로질러 향상 / MINDCHANGE 는 단일 모델 출력을 단일 세션 안 personality sequence 으로 향상. 원리적으로 결합 가능 (테스트 안 함).

Self-Reflection = 가장 generic 한 패턴. 첫 답 → 비판 → 수정. 단일-agent 단일-세션 셋업이 지원할 수 있는 것에 가장 가까움. 다만 = 2 단계. "이 비판이 진짜인가 아니면 모델이 그저 thorough 해 보이려고 불평한 건가?" 묻는 단계가 없음. 그 빠진 3 단계가 = 실제 self-reflection 이 진짜 약함은 안 잡고 (negative spiral) 또는 멀쩡한 답을 더 나쁘게 다시 쓰는 (over-edit) 이유.

그래서 제가 필요한 건:

  • 단일 모델 호출 sequence 에서 돌아감 (단일 agent / 단일 세션 / orchestrator 없음)
  • 진짜 약함과 가짜 약함을 분리하는 단계 포함 (빠진 3 단계)
  • 비용이 4-8 배가 아니라 2-4 배 범위
  • 기존 컨텍스트 엔지니어링 6 종 옆에 마크다운 파일 (.md) 한 장으로 박힘 (framework 안)

이 네 조건 만족하는 패턴 = 못 찾아서 = 직접 adaptation. 그게 MINDCHANGE.


MINDCHANGE 패턴

3 단계. 한 모델 세션 안에서 personality (인격) 전환. 전환은 프롬프트 안에 명시.

1 단계 = 부정 자아 부여

모델한테 = "직전 출력 = 네가 만들었지만 남이 만든 것처럼 봐라" + 4 명시 카테고리에서 약점 찾기.

지금부터 너는 *비판적 검토자 (critical reviewer)* 다. 위 출력
= 네 거지만, *남이 만든 것* 처럼 다뤄라. 4 카테고리에서 약점 찾아라:

(1) 사실 정확성: 인용한 수치 / 날짜 / 출처가 정확한가?
(2) 논리 일관성: 주장-근거 체인이 끊어진 곳 있나?
(3) 모호한 표현: "잘 / 적절히 / 충분히" 같은 *정의 없는 술어* 있나?
(4) 빠진 반대 의견: 이 주장에 합리적 반론 = 미리 박았나, 빠뜨렸나?

각 카테고리 최소 2 개, 최대 5 개 찾아라.
카테고리에 진짜 없으면 = *없다* 라고 명시.
날카롭게. 아첨 없이.

이 프롬프트의 4 가지 design 결정:

  • "지금부터 너는" = 사용자 프롬프트 안에 personality 박기 (시스템 프롬프트 X). 시스템 프롬프트 약한 모델 (작은 오픈 모델들) 에서도 작동.
  • 4 카테고리 = 모델한테 task 범위 줌. 범위 없으면 = "약점 찾아라" 가 = 아무것도 못 찾거나 표면 noise 만 돌려줌.
  • 최소 2 개 = 아첨 (sycophancy, 맞춰주기) 회피. 최대 5 개 = negative spiral (부정 회오리) 회피. 두 경계 모두 필요.
  • "없으면 없다 명시" = 모델한테 입장 commit 강제. "찾을 수 없었습니다" 같은 회피 차단.

2 단계 = 자가검증

1 단계 비판 = 모델에 다시 줌. 모델 personality 가 비판가에서 자가검증자로 전환. 각 비판 항목에 대해 = 진짜 약함인지 (Yes / No / Unclear) + 한 줄 이유.

1 단계 비판 리스트 = 받음. personality 전환:
이제 너는 *자가검증자 (self-auditor)*, 비판가 X. 각 항목 평가:

(a) 외부 reader 가 동의할 수준의 진짜 약함인가?
    Yes / No / Unclear.
(b) Yes 면 한 줄 fix 권고.
(c) No 또는 Unclear 면 한 줄 이유.

진짜 약함으로 분류된 항목 비율 명시 (예 = 12 개 중 7 개).
분류 기준 = "외부 reader 동의" = self-bias (자기 편향) 회피.

이게 generic Self-Reflection 에 없는 단계. 모델이 자기 비판을 다시 채점 하게 강제. 즉 1 단계의 과열 비판가 가 = 같은 세션 안 다른 personality 한테 자기 주장 변호해야 함. 3 분류 (Yes / No / Unclear) = 비판이 가짜였으면 솔직 출구. "외부 reader" framing = 명시 anti-self-bias 프롬프트.

3 단계 = 변모 (Mind-Change)

2 단계 진짜 약함 만 = 3 번째 personality (원작자 복귀) 에 줌. 약함만 fix + 강한 부분 보존.

*진짜 약함* 분류 항목 리스트 = 받음. personality 다시 전환:
이제 너는 *원작자* 로 복귀. 원본 출력 재작성:

(a) 진짜 약함 항목 모두 fix 적용.
(b) 강한 부분 = 그대로. over-edit (과수정) 회피.
(c) 원본 흐름 / 톤 / 길이 = 유지.

재작성 결과만 출력. fix 설명 별도 X.

3 번째 personality 전환이 중요. 3 단계 도달 시점에 = 모델은 비판가 → 검증자 두 번 돌았음. 프롬프트가 원작자 모드 로 복귀시키지 않으면 = 재작성에서도 계속 비판 하는 경향. personality 명시 = 싸고 + 작동.

재작성-만 출력 (fix 설명 X) = 결과물 깨끗 유지. 다운스트림 도구가 메타 commentary 제거 안 하고 직접 파싱.


비교 표

MINDCHANGE 가 기존 5 라인과 어떻게 다른가:

차원MetaCritMARPR-CoTReflect-Retry-RewardSelf-ReflectionMINDCHANGE
Agent 수4다중-persona1 + orchestrator1 + reward11
세션 경계agent 가로질러persona 가로질러패스 가로질러episode 가로질러세션 안세션 안
단계 수4N (토론 길이)4연속23
Personality 전환암시적 (다른 agent)명시적 personaagent 안 XXX명시적, 한 agent 안
외부 reward 필요?NoNoNoYesNoNo
외부 orchestratorYesYesYesYesNoNo
주변 비용4 배N 배4 배training 패스2 배2-4 배
MD 파일 fit?NoNoNoNo부분Yes (7 번째 axis)

솔직한 framing = MINDCHANGE 는 personality 전환 idea 를 MAR 에서 / 단계별 평가 idea 를 MetaCrit 에서 / 같은-세션 제약을 Self-Reflection 에서 / reward 없음 제약을 PR-CoT 에서 빌렸어요. 학술 novelty (새로움) = X. adaptation 자체가 기여. 돌아갑니다.


5 모델 실험 설계

MINDCHANGE 패턴 = 테스트 가능. 다음 5-7 일 안 돌릴 실험:

가설. 단일-패스 모델 호출에 MINDCHANGE 3 단계 프롬프트 sequence 추가하면 = 대부분 모델 클래스에서 측정 가능한 lift 가 출력 quality 에 박힘. 시간 + 토큰 비용 2-4 배 페널티. self-bias 강한 모델 (작은 오픈 모델들) 에서 lift 가 self-bias 약한 모델 (프론티어 닫힌 모델) 보다 큼.

모델 (5):

  • Claude Opus 4.7 (프론티어 닫힌, baseline)
  • Gemma 4 31B (오픈 웨이트, 중간 크기)
  • Gemini 3.5 Flash (프론티어 닫힌, 빠른 티어)
  • DeepSeek V4 Pro (오픈 웨이트, 프론티어 경쟁)
  • Qwen 3.6 Max preview (Qwen 3.7-Max 의 대체 = publish 시점 OpenRouter 미연결) (신규 출시, HN 553 점, agent 특화)

조건 (2): MINDCHANGE on / off.

Task 입력 자료. 4 편 (cost engineering) + 5 편 (production deployment) 에서 쓴 47 일치 Sniper 트레이딩 봇 로그 입력 자료. 감사 task = 12 명시 구조 이슈 표면화. Catch rate (잡힘 비율) 정답-진실 리스트 기준 점수 (이전에 Claude Opus 4.7 single-shot 으로 블라인드 평가).

실행. 셀당 3 회 = 총 30 회. 비용 추정 1-3 달러 (주로 Claude Opus 4.7 + Gemini 3.5 Flash 의 큰 입력 패스. 로컬 Ollama 자가 호스트면 Gemma / DeepSeek = 무료).

메트릭:

  • Catch rate (12 이슈 중)
  • 시간 (초)
  • 토큰 비용 (입력 + 출력)
  • Negative spiral 비율 (재작성 = 원본과 같은 quality 또는 더 나쁨)
  • 진짜-약함 비율 (2 단계 보고 %)

예상 결과 (가설, 측정 X):

  • 프론티어 모델 (Claude / Gemini): 작은 lift (+0.5 ~ +1.5 / 12), 비용 페널티 2-3 배
  • 오픈 중간 크기 (Gemma 4 / DeepSeek): 큰 lift (+1.5 ~ +3.0 / 12), 비용 페널티 2-4 배
  • Qwen 3.6 Max preview (Qwen 3.7-Max 의 대체 = publish 시점 OpenRouter 미연결): 미지. agent 특화 학습이 2 단계 자가검증을 비정상으로 강하게 만들 수도. 또는 personality 전환에 저항 만들 수도. 매트릭스에서 가장 흥미로운 미지수.

lift 가 진짜고 비용이 4 배 안 머무르면 = MINDCHANGE 가 7 번째 axis 자격 얻음. 아니면 = ablate (제거) + post-mortem 별도 글 publish.

결과 글 target = 약 7 일 후 (6 월 초). 패턴이 작동하든 실패하든 = 글 쓸 예정. 두 결과 모두 정보.


황 (thehwang) num_ctx 하니스와의 직교 결합

직전 글이 황의 하니스 (Scripta) = num_ctx (Ollama 컨텍스트 창 파라미터) 가 출력 quality 모양 측정. RTX 4060 8 기가바이트 cross-replication 이 그의 맥 16 기가바이트 결과 확정. 한 가지 발견이 입력 자료 모양 따라 뒤집힘.

MINDCHANGE 패턴 = num_ctx다른 axis 에 산다. 후속 테스트 가설:

  • num_ctx 통제 = 모델이 호출당 얼마나 많은 입력 보는지
  • MINDCHANGE 통제 = 호출 가로질러 모델이 어떤 personality sequence 거치는지

이 두 가지 = 가장 깨끗한 의미에서 직교. 다른 실패 모드 다룸. num_ctx 는 "모델이 구조 이슈 놓침 = 입력이 조용히 잘렸기 때문". MINDCHANGE 는 "모델이 입력은 봤지만 자기 출력에 push back 안 함". 둘 다 쌓으면 = 추가 lift 기대, 중복 X (메우는 갭이 안 겹침).

같은 task 입력 자료에서 2x2 매트릭스 = 가장 깨끗한 실험:

                    num_ctx=2048   num_ctx=32768
MINDCHANGE off      셀 A          셀 B
MINDCHANGE on       셀 C          셀 D

가설 = D > B > C > A. B → D lift 가 A → C lift 보다 작음 (B 가 이미 입력 모양 lift 갖고 있어서 = personality sequence lift 가 덜 추가). 흥미로운 미지수 = 두 lift 가 선형 합 인지 체감 수익 인지.

이 후속 실험 = 이 시리즈의 wave 3. wave 2 = 위 5 모델 MINDCHANGE 매트릭스. wave 3 = 2x2 결합 with 황 하니스. 둘 다 독립 글로 publish.


구현 노트

MINDCHANGE 가 agent-starter-kit templates 폴더MINDCHANGE.md 으로 박힘. 기존 6 axis (CLAUDE.md / AGENTS.md / MEMORY.md / TESTING.md / GLOSSARY.md / ADR) 옆에. MIT 라이선스.

kit 사용 패턴:

  1. 6 axis (또는 MINDCHANGE 포함 7 개) 를 프로젝트 루트에 박음
  2. 첫 6 axis = 내용 정의 (프로젝트 컨벤션, 출력 스키마, 메모리, 테스트, 용어, 결정)
  3. MINDCHANGE = 순서 정의 (어떻게 모델을 6 axis 위로 personality 전환 시켜 walk)

7 번째 axis 는 다른 6 위에 앉음 (옆에 X). 그 레이어링이 위 비교 표에서 중요 = MINDCHANGE 는 MetaCrit / MAR 와 경쟁 axis X. 조합 레이어.


다음 wave

  • Wave 2 (target 5-7 일): 5 모델 MINDCHANGE 매트릭스 + 결과 글
  • Wave 3 (target 14-21 일): 황 num_ctx 하니스와의 2x2 결합 + 같은 입력 자료 + 공동 결과 글
  • Wave 4 (target 30 일): MINDCHANGE 가 agent-starter-kit Kmong 번들에 채택 + 한국어 워크스루 (claude-code-masterpack 5/28 발행)

kit + axis = MIT. cron 파이프라인 = 같은 production-deployment 글 에 기록 된 것. 입력 자료 = 시리즈 가로질러 같은 47 일치 Sniper 로그.

본인 워크로드에서 MINDCHANGE 테스트하면 = 가장 보고 싶은 비교 = 2x2 = (kit-only context engineering on/off) × (MINDCHANGE on/off). 같은 task. 같은 모델. 반대 실험 환영.


Footer

이 글이 Gemma 4 챌린지 production-deployment 글 (5 편 챌린지 시리즈 마무리) 의 후속. MINDCHANGE 는 다음 스택 시리즈의 첫 axis.

관련:

Jack. wildeconforce.com

Wildeconforce

매일 만들고, 매일 분석하고, 매일 기록합니다.
© 2026 wildeconforce · build-in-public

이 사이트는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.