DeepSeek Harness · 소스 너머

종장: 다섯 가지 공학관, 무엇을 베낄까

다섯 harness 설계 철학 총괄표와 최소 베끼기 목록·체급 함정 목록.

강의 목표이 특집의 마지막 레슨이에요. 읽고 나면 세 질문에 답할 수 있습니다: 다섯 harness가 진실 원천·확장·보안 세 차원에서 어디에 서 있는지, DSH 메커니즘 중 프레임워크 없이도 베낄 수 있는 다섯 가지, 탐나도 전담 팀 없이 손대면 안 되는 설계.
인터랙티브 데모 · 설계 결정 뷔페

먼저 해보고 나서 설명해요. 아래는 특집 전체에서 다룬 주요 메커니즘을 체크 가능한 카드로 만들었고, 카드마다 푸는 문제와 의존하는 선행 메커니즘을 표시합니다. 메뉴 고르듯 프로젝트에 필요한 것을 체크하면 오른쪽에 아키텍처 목록이 실시간으로 생기고, 의존이 빠지면 빨간 경고, 체급 함정을 체크하면 감당할 수 있는지 알려 줍니다. 「재생」을 눌러 전형적인 실수와 교정 과정을 보세요.

당신의 아키텍처 목록
아직 아무 메커니즘도 체크하지 않았어요.
자유롭게 체크하거나 「재생」을 눌러 전형 흐름을 보세요.
다섯 공학관 · 총괄표 한 장

특집 전체는 DSH를 해부하지만, 매 레슨이 다른 집과 대조해요. 종장에서는 다섯 집을 한 테이블에 올립니다. 세 차원: 진실 원천(대화 상태의 권위 사본을 어디에 두나), 확장 모델(서드파티가 능력을 어떻게 더하나), 안전 의존(사고를 무엇으로 막나).

진실 원천
확장 모델
안전 의존
한 줄 입장
DSH
append-only 이벤트 로그(zstd 압축 JSONL), 복구·포크·검색·재생이 한 사본을 공유
모든 것이 플러그인: 패키지 219개, 그룹 49개, 트리 밖 bundle 설치
메커니즘 계층: 런타임 어서션, 타입 경계, 출처 인증, 단조 증명
런타임 우선, 증명 가능성이 납품 속도보다 앞섬
Claude Code
JSONL 세션 파일(사후 기록형), 복구와 조회를 뒷받침
hooks + MCP + 서브에이전트와 플러그인
권한 확인 대화상자 + 프로덕션 모니터링 피드백(서킷 브레이커 임계값은 실제 청구 데이터)
제품 모놀리스, 데이터 기반 손절
Grok Build
메모리 대화가 주, 비동기 디스크가 종, 디스크 실패가 대화를 끊지 않음
crate 70여 개 정적 조합(로컬 스냅샷 집계), 컴파일 타임에 형태 고정
Rust 타입 시스템 + 확인 흐름, 템플릿은 컴파일 타임 고정
성능과 정적 결정성 우선
Codex CLI
JSONL 세션 rollout 파일
MCP 중심의 외부 능력
승인 모드 등급 + OS급 샌드박스(Seatbelt / Landlock)
샌드박스 우선, 실행 환경을 기본으로 불신
OpenCode
로컬 파일에 저장한 세션 데이터
Provider 추상화 + 플러그인, 다중 모델 연동
권한 확인이 중심
오픈소스 TUI 우선, 모델 교체가 1순위 요구
DSH, Claude Code(복원 소스와 공식 자료), Grok Build 세 열은 로컬 저장소 기준 행 단위 확인; Codex CLI와 OpenCode 두 열은 공개 자료 정리로 행 단위 확인은 하지 않았으니 취사선택할 때 직접 검증하세요. Grok 종장 세 레슨의 증거화 대조는 Grok Build와 Claude Code 증거화 대조.

표를 본 뒤 하나만 기억하세요: 다섯 집에 옳고 그름은 없고 입장만 있어요. Claude Code의 서킷 브레이커 숫자는 실제 청구에서 왔고, Grok의 정적 조합은 컴파일 타임 결정성을 사며, Codex는 불신을 OS 계층에 적고, OpenCode는 교체 가능한 모델을 1순위에 둡니다. DSH의 특별함은 쓰기 편함보다 증명 가능성을 앞세운 것 — 런타임 입장이자 문서·테스트 체급의 뿌리예요.

최소 베끼기 목록 · Cordis 없이도 쓸 수 있는 다섯 가지

특집 전체에서 메커니즘 서른 개쯤을 다뤘고, 대부분은 DSH 플러그인 프레임워크에 묶여 있어요. 하지만 다섯 가지는 순수 아이디어라 베껴 바로 쓸 수 있습니다:

  1. 이벤트 로그 진실 원천. 대화 상태는 append-only 이벤트 서열 하나만 두고, 메시지 배열은 언제나 거기에서 파생합니다. JSONL 파일 하나와 fold 함수가 최소 구현이고, 복구·재생은 덤이에요(메커니즘 해설은 Model-visible ⟺ logged 레슨).
  2. 세 가지 입력 의미. agent가 일하는 중 사용자가 보내는 메시지를 대기열·끼어들기·중단 세 운명으로 나눠 명시적 인터페이스 의미로 적습니다. 이 층이 없으면 입력 타이밍은 슈뢰딩거의 상태예요.
  3. 이중 경로 압축. 능동 압력 측정과 수동 오버플로 복구를 따로 걸고, 이벤트·조건·실패 의미가 다릅니다(Compaction 이중 경로 레슨).
  4. 출처 인증. 컨텍스트에 들어가는 조각마다 출처 태그를 달고, 고권한 연산은 신뢰할 출처만 인정합니다. 도구 결과에 숨긴 지시가 사용자를 사칭할 수 없어요.
  5. 단조 Guard. 재시도·복구 같은 위험한 허용은 단조 증가 증거(세대 번호, 카운터)를 반드시 요구하고, 플러그인의 말만은 믿지 않습니다.

다섯 가지의 공통점: 모두 인터페이스 의미 수준의 결정이라 언어·프레임워크와 무관해요. 주말 하나면 거친 골격을 만들고, 나머지는 다듬기입니다.

체급 함정 목록 · 탐나도 베끼면 안 되는 세 가지

반대로 DSH가 전담 팀 인력으로 쌓은 세 가지가 있어요. 개인과 소규모 팀이 그대로 베끼면 사고가 납니다:

  1. 패키지 219개의 플러그인 트리. 모든 것이 플러그인이란 건 능력마다 Service Definition, Provider, Consumer 세 역할을 가르고 README·테스트·문서 페어링을 갖춘다는 뜻이에요. DSH는 패키지 그룹 49개, README 268개. 당신 프로젝트의 같은 필요는 plugins 폴더와 약속이면 충분합니다.
  2. 이중 언어 세 파일 문서 페어링. 문서마다 영어·중국어와 양쪽 blob hash를 적는 .i18n.yaml이 있고, 한쪽만 바꾸고 페어링을 다시 확인하지 않으면 CI가 빨개집니다. 규율은 아름답고, 비용은 문서 변경마다 두 배부터예요.
  3. 파일당 100% 커버리지 게이트. 소스 파일마다 줄 커버리지 100%. DSH 스스로 proposed 노트(2026-06-11-mutation-testing)에서 커버리지는 코드가 실행됐다는 것만 증명한다고 인정해요. AI로 테스트를 대량 쓰는 역량이 없으면 이 게이트는 “실행만 하고 assert는 없는” 가짜 테스트를 강요할 뿐입니다.
메커니즘을 베끼고 프레임워크는 베끼지 말 것

베낄 다섯 가지는 인터페이스 의미, 함정 세 가지는 인프라예요. 판단 기준: 프레임워크를 지워도 이 설계가 성립하나? 성립하면 베끼세요.

체급은 비용이자 팀의 자기증명

문서 1.8만 줄, 활성·아카이브 노트 684편, 파일별 커버리지 게이트 — 이를 먹이려면 AI 역량과 게이트를 맡은 사람이 필요해요. 증명한 것은 필요성보다 투자에 가깝습니다.

못 끝낸 부분도 정직하다

DSH는 미완을 흑백으로 적어요: 프리릴리스 단계, 포맷 호환 약속 없음, MCP는 능력 하나만 브리지, 인터랙티브 TUI 없음. 프로젝트 성숙도를 보려면 이 표를 감히 올릴 수 있는지부터 보세요.

DSH가 스스로 못 끝낸 일 · 흑백으로 명시

종장 레슨은 주인공을 띄우지 않아요. DSH는 개발자 프리뷰이고, 루트 AGENTS.md 맨 앞 둘째 절에 프리릴리스 입장이 적혀 있습니다:

Remove this section at the first tagged release. With no external consumers, prefer the correct foundation over compatibility shims: rename or repackage freely and update every reference together. Backends reject old on-disk formats. SQLite uses monotonic SCHEMA_VERSION; dsh-session keeps SESSION_FORMAT_VERSION at 0 with no compatibility promise.
(요지: 첫 정식 버전 출시 때 이 절을 지우세요. 지금은 외부 사용자가 없으니 호환 심보다 올바른 기반을 택하고, 백엔드는 옛 디스크 포맷을 거절하며, 세션 포맷 버전은 0에 머물고 호환 약속은 없습니다.) 출처: deepseek-harness-master 저장소 루트 AGENTS.md 5–7행, 확인일 2026-08-13

MCP 쪽은 도구 능력만 브리지했고 Resources와 Prompts는 명시적으로 미룸 — packages/mcp/mcp-client/README.md 111행 원문: “Tools are the only bridged MCP capability — Resources and Prompts have no harness consumer and are deferred.” 제품 입구도 Web UI와 headless뿐(apps/ 아래 cli와 web만)이라 Claude Code·Grok Build 같은 인터랙티브 TUI는 없어요. 세 가지는 흑점이 아니라 취사선택: 기반이 마르기 전에 2층을 붓지 않는 것.

미니멀 모드 · harness를 모델 계측기로

마지막으로 지나치기 쉽지만 DSH 동기를 가장 잘 설명하는 이야기예요. 네 제품 모드가 곧 preset 설정 네 파일이고, 미니멀 모드 핵심 설정은 이 몇 줄뿐입니다:

apps/cli/config/agent-presets/minimal/agent.cordis.yml1–13행
# The `minimal` agent preset: a fixed-prompt, two-tool coding-agent composition.
#
# The persona is the complete system prompt, so global identity, Web orientation,
# tool guidance, and later assembly listeners cannot add prompt text. Runtime
# context snapshots are suppressed for this preset, and the model composes only
# persistent `bash` and `str_replace_editor`. Context compaction is absent.

- id: persona
  name: '@deepseek-ai/dsh-persona'
  config:
    text: You are a helpful software engineer assistant.
    complete: true
    includeRuntimeContext: false
소스 스냅샷 안내: 로컬 저장소 deepseek-harness-master 기준, 확인 파일 apps/cli/config/agent-presets/minimal/agent.cordis.yml, 확인일 2026-08-13. 코드 블록은 소스 원문을 유지합니다.

이 설정이 하는 일을 읽으면: System Prompt는 한 문장이고 complete라 플러그인이 글자를 더할 수 없고, 런타임 컨텍스트는 억제되며, 도구는 bash와 str_replace_editor뿐, 압축도 없어요. harness 쪽 변수는 전부 최소로 조여져 있습니다. 루트 BENCHMARK.md는 Python SDK로 이 minimal 변형을 벤치마크하라고 권하고, 작업마다 독립 workspace와 세션을 씁니다.

이것이 DeepSeek가 harness를 만든 동기 중 하나예요: 모델 벤더는 표준화·재현 가능·압축 간섭 없는 계측기로 자사 모델을 평가해야 하고, 그걸 겸사겸사 범용 런타임으로 만들었습니다. Anthropic이 Claude Code를 만든 건 모델이 제품을 섬기게 하려는 것이고, DeepSeek의 DSH는 절반이 모델 자체를 재려는 목적이에요. 입장이 다르니 공학관도 다릅니다. 앞으로 agentic RL 훈련과 모델 평가는 재생·증명 가능한 harness를 더 갈망할 테고, DSH의 무거운 메커니즘 경로가 먼저 가치를 실현하는 지점일 수 있어요.

대조군의 종장도 서로 맞물려요: Grok 특집의 엔지니어링 회고와 증거 경계Coding Agent 설계 워크벤치가 Rust 모놀리스 각도에서 같은 질문에 답하니, 양쪽을 맞춰 읽으면 다섯 공학관이 갖춰집니다.

수업 실습
01

뷔페로 자기 프로젝트 아키텍처 리뷰하기

페이지 맨 위 데모로 돌아가 실제 프로젝트 현황대로 체크하세요: 이미 있는 메커니즘은 체크, 없는 것은 비워 두기. 오른쪽 빨간 경고에서 의존 빠진 조합을 적어도 하나 찾으세요(예: 재시도 로직은 있는데 단조 증거가 없음). 그리고 답하세요: 빠진 조각을 채우려면 최소 얼마나 코딩해야 하나? 일주일 넘으면 더 아래 층을 먼저 베껴야 한다는 뜻이에요.

Takeaway: 다섯 harness에 옳고 그름은 없고 입장만 있어요: 제품 모놀리스, 정적 조합, 샌드박스 우선, 다중 모델 개방, 증명 가능한 런타임. 베낄 때는 메커니즘만 보고 프레임워크는 보지 마세요: 이벤트 로그 진실 원천, 세 입력 의미, 이중 경로 압축, 출처 인증, 단조 Guard 다섯은 가져가도 되고; 패키지 219 플러그인 트리, 이중 언어 문서 페어링, 파일별 전커버 세 가지는 전담 팀 없으면 손대지 마세요. 판단 기준 한 줄: 프레임워크를 지워도 성립하는 설계만 베낄 가치가 있어요.