기존 자가비판 라인을 1 인 빌더 환경에 어떻게 맞춰 썼나. MINDCHANGE axis 결과는 negative 였습니다
한 줄 요약. 자가비판 논문 라인을 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 라인과 어떻게 다른가:
| 차원 | MetaCrit | MAR | PR-CoT | Reflect-Retry-Reward | Self-Reflection | MINDCHANGE |
|---|---|---|---|---|---|---|
| Agent 수 | 4 | 다중-persona | 1 + orchestrator | 1 + reward | 1 | 1 |
| 세션 경계 | agent 가로질러 | persona 가로질러 | 패스 가로질러 | episode 가로질러 | 세션 안 | 세션 안 |
| 단계 수 | 4 | N (토론 길이) | 4 | 연속 | 2 | 3 |
| Personality 전환 | 암시적 (다른 agent) | 명시적 persona | agent 안 X | X | X | 명시적, 한 agent 안 |
| 외부 reward 필요? | No | No | No | Yes | No | No |
| 외부 orchestrator | Yes | Yes | Yes | Yes | No | No |
| 주변 비용 | 4 배 | N 배 | 4 배 | training 패스 | 2 배 | 2-4 배 |
| MD 파일 fit? | No | No | No | No | 부분 | Yes (7 번째 axis) |
솔직한 framing = MINDCHANGE 는 personality 전환 idea 를 MAR 에서 / 단계별 평가 idea 를 MetaCrit 에서 / 같은-세션 제약을 Self-Reflection 에서 / reward 없음 제약을 PR-CoT 에서 빌렸어요. 학술 novelty (새로움) = X. adaptation 자체가 기여. 돌아갑니다.
5 모델 실험 설계 + 결과
MINDCHANGE 패턴 = 테스트 가능. 어제 (publish 24 시간 전) 실험 완료 = 일정 앞당겨 진행.
가설 (실험 전): 단일-패스 모델 호출에 MINDCHANGE 3 단계 프롬프트 sequence 추가하면 = 대부분 모델 클래스에서 측정 가능한 lift. 시간 + 토큰 비용 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 편 / 5 편 글에서 쓴 47 일치 Sniper 트레이딩 봇 로그. 감사 task = 12 명시 구조 이슈 표면화. Catch rate = 정답-진실 substring pattern match 채점.
- 실행: 셀당 3 회, 총 30 회. 실제 비용 = $7.14 (추정 $1-3 초과. Qwen on 모드 3 회 = OpenRouter HTTP 403 "key limit exceeded" 로 실패 = 누적 지출이 $4 한도 넘은 시점).
- 메트릭: catch rate (12 중) / 시간 / 토큰 비용 / negative spiral 비율 / 진짜-약함 비율.
측정 결과 (catch rate, 3 회 평균):
| 모델 | off | on | lift | 시간 배 | 비용 배 |
|---|---|---|---|---|---|
| Claude Opus 4.7 | 11.7 / 12 | 12.0 / 12 | +0.3 | 1.00 | 2.48 |
| DeepSeek V4 Pro | 7.7 / 12 | 7.0 / 12 | −0.7 | 3.23 | 3.92 |
| Gemini 3.5 Flash | 2.0 / 12 | 1.0 / 12 | −1.0 | 4.00 | 3.82 |
| Gemma 4 31B | 5.7 / 12 | 5.7 / 12 | +0.0 | 4.24 | 4.03 |
| Qwen 3.6 Max preview | 8.0 / 12 | (3 on-runs 잔액 한도 초과로 실패) | n/a | n/a | n/a |
Negative spiral 비율 (on-mode 재작성이 원본보다 점수 낮은 회수):
- Claude on: 0% (안정, 0/3)
- DeepSeek on: 33% (1/3)
- Gemini on: 33% (1/3)
- Gemma 4 on: 33% (1/3)
진짜-약함 비율 (Stage 2 자가검증 Yes 율, 완료한 4 모델 평균): 76-77%, 모델 가로질러 매우 일관.
가설은 빗나갔어요, 구체 방향까지.
Claude Opus 4.7 = 예측 밴드 안 가장 낮은 끝 (+0.3, 가설은 +0.5 ~ +1.5). 다른 4 모델 = 전부 sideways 또는 negative. DeepSeek + Gemini 는 MINDCHANGE 적용 시 single-shot baseline 보다 점수 낮음. Gemma 4 31B 는 변화 X. "작은 오픈 모델 lift 가 더 클 것" 예측 = 반대로 나옴.
가설이 깨진 이유 (개인 풀이):
-
substring 채점 천장. Claude 가 이미 baseline 11.7 / 12. lift 박힐 공간이 거의 없음. +0.3 은 모델이 "어떤 run 에선 한 개 놓침" 에서 "3 회 다 12 개 catch" 로 옮겨간 신호. 진짜이지만 미세.
-
약한 모델 negative spiral. DeepSeek / Gemini / Gemma 4 가 Stage 1 (비판가) + Stage 2 (자가검증자) 거치면 = 비판 생성. 76% 진짜-약함 비율 = 모델이 자기 비판 4 개 중 3 개를 진짜로 믿음. 다만 = substring 채점은 = 재작성이 새 framing 박아 gold-truth pattern match 깨도 알 수 없음. non-Claude on-run 9 회 중 3 회가 = 재작성 후 낮은 점수. 모델은 thorough 했고 = 채점이 thoroughness 를 처벌했어요.
-
작은 모델 personality 전환 비용. non-Claude on-run 의 3.23-4.24 배 시간 배 = 대부분 4 단계 순차 호출 + personality 전환 추론 시간. 작은 모델 = 각 personality 전환 ("너는 이제 비판가...") 에 더 많은 토큰 + 재작성 단계까지 가면 = 더 disorganized 출력. 비용 페널티 = 가설 허용보다 강하게 박힘.
-
Qwen 잔액 부족. Qwen 3.6 Max preview 의 on-mode 3 회 = OpenRouter HTTP 403 "key limit exceeded" = 누적 지출 $4 천장 넘은 시점. 매트릭스에서 가장 흥미로운 미지수 = 여전히 미지수. Qwen off 는 8.0 / 12 (DeepSeek baseline 비슷). on-mode 테스트 = 이 wave 에선 사라짐.
MINDCHANGE 가 7 번째 axis 자격 = 보류.
이 패턴 = 5 모델 중 1 모델 (Claude) 에서만 작동, 그 모델의 lift = +0.3 / 12. 비용 페널티 2.5-4.2 배. 다른 4 모델의 33% negative-spiral 비율 = MINDCHANGE 를 1 인 빌더 파이프라인에 blindly 박으면 = non-Claude 모델에서 3 회 중 1 회는 출력 더 나쁨.
이건 negative result. 그래도 publish 하는 이유 = 대안이 = "내가 방어 못 하는 thesis" publish 인데 = dev community 가 정직한 negative result 를 보상하는 라인. MINDCHANGE.md axis 는 kit 에 유지하되 = README 가 "Claude 급 모델 전용, 일반 lift 아님" 으로 flag 됨.
다음 실험은 = 이 실험의 재실행 X. 같은 입력 자료에서 = 황 (thehwang) 의 num_ctx 하니스와의 2x2 매트릭스 = MINDCHANGE 가 다른 intervention 과 stacked 됐을 때 직교 lift 가지는지 확인. 다음 section 에 설명.
황 (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 사용 패턴:
- 6 axis (또는 MINDCHANGE 포함 7 개) 를 프로젝트 루트에 박음
- 첫 6 axis = 내용 정의 (프로젝트 컨벤션, 출력 스키마, 메모리, 테스트, 용어, 결정)
- 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.
관련:
- MINDCHANGE.md axis 정의서 (MIT, 9.5 KB)
- agent-starter-kit (MIT) / 크몽 번들 ₩39K
- 황 (thehwang) Scripta 하니스 (MIT)
Jack. wildeconforce.com