스폰서LobeHubLobeHub자세히 알아보기
dshfind

DSH란 무엇인가?

한 줄 요약: DSH(DeepSeek Harness)는 Cordis를 기반으로 구축된 오픈 소스 coding agent(코딩 에이전트)입니다. 단순히 "에이전트가 일하는 환경"이 아니라, 모든 것은 플러그인, 실행은 재구축 가능이라는 두 가지 핵심 사상을 중심으로 한 에이전트 운영 체제 전체입니다.


1. 먼저 분명히 하자: DSH에는 세 가지 의미가 있습니다

많은 사람들이 DSH를 "하나의 도구"라고 말하지만, 사실 세 개의 층이 겹쳐 있는 것입니다.

무엇인가비유
SDK(기반)DeepSeek Harness SDK: Cordis로 작성된 프레임워크로, 모델·도구·정책·스토리지·UI가 모두 조합 가능한 플러그인운영 체제의 커널
dsh(도구)SDK 위에 구축된 명령줄 도구: dsh web으로 Web UI를 열고, dsh --profile headless "작업"으로 작업을 실행OS가 설치된 컴퓨터
생태계(콘텐츠)skills(스킬), 플러그인, profile 조합 팩, 커뮤니티컴퓨터의 앱 스토어

우리가 평소에 "DSH"라고 할 때는 보통 두 번째 층——당신의 컴퓨터에서 실행되는 에이전트 도구——를 가리킵니다. 하지만 지금 여러분이 사용하고 있는 이 웹사이트(dshfind)가 실행되는 Harness 환경도 DSH 위에서 동작하고 있습니다.

生态(内容)skills · 插件 · profile | 应用商店dsh 工具web · run · profile | 装好系统的电脑SDK 底座Cordis · 一切皆插件 | 操作系统内核

三层都建立在 Cordis(时空可组合性范式)之上


2. 어떤 문제를 해결하는가? (두 문장으로)

에이전트가 일하려면 "환경"이 필요하고, 환경이 장기적으로 진화하려면 "규율"이 필요합니다.

  • 일반 AI 애플리케이션 = 모델을 한 번 호출하고, 답을 반환하면 끝.
  • 에이전트 = 모델을 반복적으로 호출 + 직접 작업 수행(파일 읽기·쓰기, 명령 실행, API 호출) + 장기 실행.
  • DSH = "장기 실행"이라는 전제하에 도구, 권한, 메모리, 세션, 플러그인 관리를 모두 질서 있게 관리.

운영 체제가 여러 프로그램이 한 대의 컴퓨터를 충돌 없이 공유하도록 하듯이, DSH는 여러 플러그인이 하나의 에이전트 런타임을 공유하면서 서로를 망가뜨리지 않도록 합니다.


3. 핵심 사상 1: 모든 것은 플러그인

이것은 DSH의 제1원리입니다. 아키텍처 문서의 첫 줄에 적혀 있습니다.

모든 것은 플러그인이다. 루프도 예외가 아니다.

"루프"는 agent loop(에이전트 루프)——즉 "인지 → 사고 → 행동"의 메인 루프를 가리킵니다. 전통적인 프레임워크는 메인 루프를 하드코딩하기 때문에 확장하려면 소스 코드를 수정(fork)해야 합니다. DSH에서는 메인 루프 자체조차 플러그인입니다.

전통적인 프레임워크에서는DSH에서는
모델을 바꾸고 싶다 → 프레임워크 소스를 수정LLM 어댑터 플러그인을 등록
도구를 추가하고 싶다 → 프레임워크 소스를 수정ctx.tools도구 플러그인을 등록
실행 방식을 바꾸고 싶다 → 프레임워크 소스를 수정다른 bash / PTY 백엔드 플러그인으로 교체
스토리지를 바꾸고 싶다 → 데이터베이스를 전환다른 세션 영속화 플러그인으로 교체
UI를 바꾸고 싶다 → 프런트엔드를 재작성다른 UI 플러그인으로 교체

여기서 "플러그인"은 작은 기능이 아니라 시스템 전체의 구성 요소입니다: 모델, 도구, 정책, 스토리지, 컨텍스트 관리, UI가 모두 동등한 플러그인으로서 조합됩니다. 배포하는 쪽은 agent loop를 fork하지 않고도 어떤 동작이든 확장하거나 교체할 수 있습니다.

🎁 비유: 일반적인 프레임워크는 "한 채의 건축물이어서, 평면을 바꾸려면 날벽을 철거해야 합니다". DSH는 "레고 블록이어서, 어느 한 조각이든 단독으로 교체할 수 있습니다". 이는 Cordis(시공간 컴포저빌리티 패러다임) 위에 구축되었기 때문에 가능한 것입니다——우리가 정독할 바로 그 논문의 구현체입니다.


4. 핵심 사상 2: 실행은 재구축 가능(이벤트 로그가 곧 진실)

에이전트가 하루 동안 실행되면 수백 번의 작업을 수행합니다. "모든 것에 기록이 있고, 언제든 다시 할 수 있다"를 어떻게 보장할까요? DSH의 답은 이벤트 소싱입니다.

모델이 볼 수 있는 모든 것은 권위 있는 세션 로그에 기록된다. 영속화, 복구, fork, 리플레이, 텔레메트리, UI는 모두 동일한 이벤트 스트림에서 파생된다.

즉:

  • 에이전트의 각 단계(모델 요청, 도구 호출, 결과 반환)는 모두 세션 로그에 추가됩니다(append-only)
  • "모델이 볼 수 있음 ⟺ 기록됨"——모델이 보는 것과 로그에 기록되는 것은 완전히 일치합니다
  • 세션을 복구하고 싶나요? 로그에서 재구축하세요. fork해서 계속 진행하고 싶나요? 로그에서 복사하세요. 리플레이하고 싶나요? 로그를 읽으세요. 통계를 내고 싶나요? 로그를 계산하세요

장점: "모르는 어딘가에 숨겨진 상태" 같은 것이 없습니다. 시스템에 어떤 문제가 발생하더라도 로그가 완전한 진실이며, 임의의 체크포인트에서 재구축할 수 있습니다.

🎁 비유: 이것은 "일기 쓰기"가 아니라 "전 과정을 녹화하고, 어느 프레임으로든 돌아갈 수 있는 것"입니다. 일반 애플리케이션은 충돌하면 처음부터 다시 해야 하지만, DSH는 충돌핼도 로그에서 현장을 정확하게 재구축할 수 있습니다.


5. 핵심 사상 3: 능력은 곧 "이음매"(seam)

아키텍처 문서에는 핵심 키워드가 하나 있습니다: seam(이음매).

"교체 가능한 능력" 하나는 세 가지 역할로 구성됩니다.

Service Definition(능력 정의: 이 능력이 어떤 모습인가)
        ↕
Service Provider(제공자: 누가 일을 하는가)
        ↕
Consumer(소비자: 누가 사용하는가)

이 세 가지 역할이 분리되어 있는 한, 그 능력은 "이음매"입니다——어느 한쪽 끝을 단독으로 교체핼도 나머지 둘에 영향을 주지 않습니다.

DSH에서는 거의 모든 것이 이음매입니다.

이음매소켓을 교체하는 예
LLM모델 제공자를 변경(DeepSeek, 기타) → 새 어댑터를 등록
파일 시스템스토리지 백엔드를 변경 → ctx.fs 제공자를 구현
프로세스 실행명령 실행 방식을 변경 → bash 백엔드를 교체
샌드박스 정책보안 정책을 변경 → fs/* 정책 이벤트를 수신
검색/스크래핑검색 소스를 변경 → web 제공자를 등록

왜 이것이 중요한가? 에이전트 기술 스택은 매우 빠르게 진화하기 때문입니다(모델은 매달 바뀌고, 도구는 매일 새로 나옵니다). 모든 능력이 이음매라면 무언가 하나를 바꾸는 데는 소켓 하나만 건드리면 되며, 시스템 전체를 재작성할 필요가 없습니다.


6. 핵심 사상 4: 자기 참조적 수정(에이전트는 스스로를 수정할 수 있다)

DSH에는 꽤 "공상과학" 같지만 실제로 존재하는 기능이 있습니다: 자기 참조적 Cordis 도구(명시적으로 활성화해야 함).

활성화하면 에이전트는 다음을 할 수 있습니다.

  • 자신의 라이브 런타임을 검사(현재 어떤 플러그인이 설치되어 있고, 어떤 서비스가 등록되어 있는지)
  • 실행 중에 플러그인을 마운트하거나 언마운트(새 도구를 스스로 장착하거나, 오래된 것을 분해)

이것이 "자기 진화 에이전트"의 원형입니다: 실행 중인 시스템이 스스로를 수정. 그리고 이것이 (자멸이 아니라) 안전한 이유는 바로 밑바닥에 있는 Cordis의 "시공간 컴포저빌리티" 보장 덕분입니다——장착한 것은 분해할 수 있고, 분해핼도 흔적이 남지 않습니다.

⚠️ 이 맥락은 제1장과 제2장을 잇습니다: "에이전트의 자기 진화"를 원한다면, 먼저 "동적 조합"을 해결해야 합니다.


7. 내장 능력 한눈에 보기(실제 목록)

DSH가 기본으로 제공하는 능력(공식 문서 기준)은 "에이전트가 갖춰야 할 도구 전체"라고 생각할 수 있습니다.

범주구체적인 능력
파일읽기, 편집, 검색
실행shell 명령, 영속 터미널(PTY)
스킬재사용 가능한 skill(스킬)
작업 관리goals(목표), plans(계획), todos(할 일), 백그라운드 작업
협업subagent(서브 에이전트), workflow(워크플로)
보안샌드박스, 승인
설정설정, credentials(자격 증명, 절대 설정에 인라인하지 않음)
세션영속화·복구·fork·쿼리 가능한 세션
인지LSP(코드 시맨틱), Web 접근
컨텍스트컨텍스트 압축(context compaction)
관측텔레메트리

8. DSH를 어떻게 사용하는가? (네 가지 방법)

방법명령/방식사용 사례
Web UIdsh web그래픽 인터페이스, Plan Mode(계획 모드) 포함
명령줄dsh --profile headless "이 작업 공간을 요약해줘"작업을 한 번 실행하고, 답을 출력한 뒤 종료
설정 조합dsh --profile tuiprofile(플러그인 조합 팩)로 시작을 커스터마이즈
프로그래밍 연동Python SDK / ACP / JSON-RPCDSH를 자신의 프로그램에 임베딩

9. 핵심 요약

이 섹션은 정볟양이 적지 않습니다. 다음 다섯 문장만 기억하면 충분합니다.

  1. DSH = SDK + 도구 + 생태계. 본질은 "에이전트의 운영 체제"
  2. 모든 것은 플러그인——모델, 도구, 정책, 스토리지, UI, 심지어 메인 루프까지 모두 플러그인이며, 확장에 fork가 필요 없음
  3. 실행은 재구축 가능——모델이 볼 수 있는 모든 것이 권위 있는 이벤트 로그에 기록되며, 복구·리플레이·fork 가능
  4. 능력은 이음매——어떤 능력이든 단독으로 교체할 수 있으며, 모델이나 실행기 교체는 소켓 교체처럼 간단
  5. 자기 참조적 수정——에이전트는 자신의 런타임을 검사하고 수정할 수 있으며, 이는 Cordis의 "장착한 것은 분해할 수 있다"는 보장에 의존

🚀 다음 섹션에서는 "에이전트 프레임워크의 기본 사상"을 다룹니다——먼저 에이전트 자체가 어떻게 생각하고 어떻게 움직이는지 이해한 다음, DSH가 왜 이렇게 설계되었는지 되돌아봅시다.

셀프 테스트 · DSH란 무엇인가

답을 모두 선택한 후 「답안 제출」을 클릭하면 정답 여부와 해설을 확인할 수 있습니다.

1. DSH에 대한 설명 중 가장 정확한 것은 무엇입니까?
2. 「모든 것은 플러그인이다. 루프도 예외가 아니다」에서 「루프」는 무엇을 가리킵니까?
3. 「실행은 재구축 가능」은 무엇에 의해 실현됩니까?
4. 「능력의 이음매(seam)」를 구성하는 세 가지 역할은 무엇입니까?