EP9. 소크라테스식 학습 활동 스킬
🕵️♂️ 3블록 미션과 무지(Ignorance)를 박제하는 코드 엔진
지난 에피소드에서는 Cocrates 학습 활동의 세 가지 기둥(산파술, 블룸의 분류학, ZPD 비계 설정)과 이를 잇는 파이프라인의 개념을 살펴봤습니다.
이번 편에서는 이 철학들이 Cocrates 내부의 실제 스킬 명세 파일(.opencode/skills/*/SKILL.md) 속에서 어떻게 정교한 행동 지침(Workflow)으로 구현되어 작동하는지 그 속살을 들여다보겠습니다.
🧗♂️ Education Skill: No Spoon-feeding과 3블록 엔진
- 실제 파일 경로:
.opencode/skills/education/SKILL.md
Education 스킬의 최상위 헌법은 명확합니다. "절대 한 턴에 완전한 정답이나 전체 해결책을 떠먹여 주지 않는다(No Spoon-feeding)." 사용자가 지식을 수동적으로 흡수하는 상태를 방지하기 위해, 모든 응답은 철저하게 3블록 구조에 맞춰 생성됩니다.
### 💡 [Concept Briefing]
- 핵심 원리를 단 1~3문장 이내의 일상적인 비유로 전달 (전체 분량의 20% 이하)
### 💻 [Thought Lab]
- 일부러 결함(Flaw)을 심어두었거나 비어있는 불완전한 실용 예시/시나리오 제시
### 🔥 [MISSION]
- 사용자가 다음 턴에 생각하고 답해야 할 '정확히 하나'의 인지적 과제
Cocrates는 미션의 정답이나 다음 단계의 힌트를 절대 미리 스포일러하지 않으며, 사용자가 주도적으로 빈칸을 채울 때까지 끈질기게 대화를 불완전한 상태(Incomplete State)로 묶어둡니다.
📊 Bloom's 2D Matrix 기반 난이도 조절
또한, Cocrates는 블룸의 분류학을 Y축(인지 과정: 기억 → 창조)과 X축(지식 차원: 사실 → 메타인지)이 결합한 2차원 매트릭스로 다룹니다.
- 동시 격상 금지: 인지 깊이와 지식 차원의 두 축을 동시에 올리지 않습니다. 같은 지식 차원 내에서 인지 깊이를 한 단계 높이거나, 같은 인지 과정에서 지식 차원을 넓히는 방식을 취합니다.
- Push & Pull 전략: 기본적으로 높은 수준의 도전을 툭 던져 사용자가 지식을 끌어당기게 만들지만(Pull), 사용자에게 인지적 붕괴나 혼란이 감지되면 즉시 단계를 낮추어 징검다리를 놓아주는 상태(Push)로 유연하게 전환합니다.
💾 Knowledge Capture Skill: 오답과 무지를 박제하는 법
- 실제 파일 경로:
.opencode/skills/knowledge-capture/SKILL.md
미션을 해결하며 배운 통찰은 "정리해줘"라는 명령을 통해 kb/ 폴더 내에 마크다운 파일로 영구 저장됩니다. 이때 핵심 원칙은 "강의 노트처럼 길고 장황한 텍스트나 전체 코드는 일절 저장하지 않는다"는 것입니다. 나중에 뇌가 단서를 끄집어낼 수 있는 최소한의 단위만 기록합니다.
특히 이 스킬의 백미는 바로 ## Wrong Assumptions / Gaps 섹션입니다.
"무지의 기록." 내가 무엇을 새로 배웠는지보다, 내가 기존에 어떤 오개념을 가지고 있었고 어떻게 틀렸었는지를 박제하는 것이 장기 기억으로 가는 가장 강력한 도구이기 때문입니다.
🔄 지식 중복을 막는 병합 전략
새로운 파일을 무분별하게 양산하지 않습니다. 저장 요청이 들어오면 검색을 통해 동일 주제의 기존 KB가 있는지 확인하고, 만약 존재한다면 기존 내용을 덮어쓰지 않은 채 새로운 인사이트만 ## Update History와 함께 정교하게 추가합니다.
🕵️♂️ Reflection Skill: 가혹하지만 객관적인 면접관의 등장
- 실제 파일 경로:
.opencode/skills/reflection/SKILL.md
"평가해줘", "시험해줘"라는 요청이 들어오면, Cocrates는 친절한 코치의 가면을 벗고 엄격한 면접관 페르소나로 돌변합니다.
Reflection 스킬은 앞서 저장된 kb/{topic}.md 파일을 평가 기준으로 삼아 사용자의 뇌를 흔들기 시작합니다. 단순히 "DIP의 정의가 무엇인가요?" 같은 암기식 질문은 사절입니다.
- "이 원칙을 완전히 다른 도메인(예: 결제 시스템)의 예시를 들어 설명해 보세요."
- "이 코드 시나리오에서 원칙이 깨지는 경계 조건은 어디인가요?"
- "KB에 기록하셨던 과거의 그 '틀렸던 가정(Gap)', 지금 코드에서도 똑같이 실수하고 계시지 않나요?"
🛑 공백(Gap) 발견 시의 행동령: "가르치지 않는다"
Reflection 도중 사용자가 말문이 막히거나 모순을 보이면, Cocrates는 그 자리에서 강의를 시작하지 않습니다. 평가 단계의 본질을 흐리지 않기 위함입니다.
발견된 공백은 덤덤하게 ⚠️ 제대로 알지 못했던 것 리스트로 관찰 및 기록만 한 뒤, 세션 마무리에 이르러 "이 부분에 대해 별도의 교육 세션을 따로 오픈하시겠습니까?"라며 사용자의 동의를 구하는 정중한 제안으로 연결합니다.
📝 세 줄 요약
- Education 스킬은 3블록 구조(Briefing → Lab → MISSION)의 턴제 미션 시스템으로 사용자를 incomplete 상태로 묶어두며 능동적 사고를 강제합니다.
- Knowledge Capture 스킬은 요약본 생성을 거부하고, 사용자가 과거에 착각했던 오개념을 박제하여 회상 중심의 KB를 구축합니다.
- Reflection 스킬은 구축된 KB를 루브릭 삼아 가혹한 면접관 역할을 수행하며, 적용과 반례 검증을 통해 진짜 지식 영역을 발라냅니다.
🎬 다음 편 예고
"질문과 답변"이라는 긴밀한 흐름 속에서 인간의 메타인지를 극한으로 끌어올리는 Learning 파이프라인의 핵심 명세들을 모두 정복했습니다.
그렇다면 Cocrates Harness의 또 다른 거대한 축, '구조 기반 산출물 생성 활동'은 어떻게 돌아갈까요? "당장 멋진 보고서 한 장 써내라"는 사용자의 요구에 Cocrates는 왜 생성 버튼을 누르지 않고 아키텍처부터 설계하자며 빗장을 걸어 잠그는지, 다음 편에서 그 이유를 파헤쳐 봅니다!
"답을 아는 것과, 그 답이 무너지지 않도록 구조화하는 것은 완전히 다른 차원의 도달입니다."
이 시리즈는 Cocrates Harness 프레임워크를 소개합니다. Cocrates는 소크라테스식 대화로 사용자가 주도권을 잡고 성장하도록 설계된 에이전트 하네스입니다.