pax-beehive/dsh-hub-cli
Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub
DSH Hub CLI – DeepSeek Harness (DSH) 플러그인 프리셋 공유 및 적용
개요 – Node 기반 명령줄 도구로 DeepSeek Harness의 정확한 상태(런타임 버전, 순서가 있는 플러그인, 구성 패치, 필요한 환경 변수)를 캡처하여 공개 DSH Plugin Hub에 불변의 Preset Release로 게시할 수 있습니다. 다른 사용자는 해당 프리셋을 가져와 단일 명령으로 동일한 환경을 재현할 수 있습니다.
중요성
| 문제 | DSH Hub 솔루션 |
|---|---|
| 드리프트 – 팀원이 수동으로 플러그인을 설치하고 버전이 시간이 지남에 따라 변경됩니다. | 프리셋은 런타임, 플러그인 버전, 로드 순서, 소스 해시를 고정합니다. |
| 숨겨진 구성 – 비밀과 패치 파일이 문서나 채팅에 흩어져 있습니다. | ${ENV_VAR} 자리 표시자만 게시되고 실제 비밀 값은 로컬에 유지됩니다. |
| 신뢰할 수 없는 온보딩 – "내 컴퓨터에서는 작동해"라는 이야기. | profile apply는 전체 프로필을 스테이징, 검증, 원자적으로 교체하며 되돌릴 수 있는 개정 기록을 제공합니다. |
| 수동 업그레이드 – 위험하고 오류가 발생하기 쉽습니다. | profile diff는 정확한 변경 사항을 표시하고 profile upgrade는 변경 사항을 적용하며 profile rollback은 이전 개정을 복원합니다. |
핵심 개념
- Preset Release – 작은 콘텐츠 주소 지정 JSON/YAML 문서(
sha256해시)로 다음을 기록합니다:- DSH 런타임 버전(
@deepseek-ai/dsh). - 정확한 npm 무결성 해시 또는 고정된 Git 커밋 ID가 있는 순서가 있는 번들(플러그인) 목록.
- 작성자의
cordis.patch.yml구성. - 런타임에 필요한 선언된 입력(환경 변수).
- DSH 런타임 버전(
- Profile – 현재 설치된 플러그인, 잠금 파일, 패치를 보관하는 로컬 디렉터리(
~/.dsh/profiles/<name>). - Plan – 현재 상태의 지문과 만료 시간(30분)을 포함하는 변경(적용/업그레이드) 미리보기. 변경 전에 계획을 명시적으로 승인해야 하므로 CLI를 AI 에이전트에 안전하게 만듭니다.
주요 명령(빠른 참조)
| 명령 | 용도 |
|---|---|
dsh-hub profile share <slug> --version <v> --profile <name> |
로컬 프로필을 캡처하고 불변 프리셋을 게시합니다. |
dsh-hub profile apply <slug> --version <v> --profile <name> |
프리셋을 가져와 스테이징, 검증 후 로컬 프로필을 원자적으로 교체합니다. |
dsh-hub profile diff … |
로컬 상태와 프리셋 간의 줄 단위 비교를 표시합니다. |
dsh-hub profile upgrade … |
새 프리셋 버전으로 업그레이드합니다(diff 미리보기 포함). |
dsh-hub profile rollback [revision] |
각 적용 시 자동 저장된 이전 개정을 복원합니다. |
dsh-hub profile doctor |
상태 점검을 실행합니다(누락된 입력, 버전 드리프트, 잠금 파일 무결성). |
dsh-hub search / info / install |
공개 플러그인 카탈로그를 탐색하고 개별 플러그인을 설치합니다. |
dsh-hub login |
장치 코드 흐름으로 Hub에 인증합니다(또는 DSH_HUB_TOKEN 사용). |
| `dsh-hub telemetry on | off` |
내부 작동 방식
- 캡처 – CLI는
~/.dsh/profiles/<profile>(플러그인, 순서,cordis.patch.yml, 환경 변수 선언)을 읽고 모든 아티팩트에 콘텐츠 주소 지정 해시가 있는 Release 문서를 빌드합니다. - 게시 – Release가 Hub API에 업로드되고 해시가 불변성을 보장합니다.
- 적용 –
--plan은 Release 해시, 현재 프로필의 사전 조건 해시, 만료 타임스탬프를 포함하는 JSON 계획을 생성합니다.- 사용자(또는 감독하는 인간)가 계획 ID를 승인합니다.
- CLI는 임시 디렉터리에 새 플러그인을 스테이징하고 구조 검사와
dsh --dump-config를 실행하여 패치를 검증합니다. - 성공하면 스테이징된 디렉터리가 라이브 프로필을 원자적으로 교체하고 이전 버전은 롤백용 개정으로 유지됩니다.
- 보안 검사 –
- 설치 전에 Release 해시를 검증합니다.
- 게시된 패치에는 환경 변수 자리 표시자만 허용되고 실제 비밀 값은 거부됩니다.
- 토큰은
0600권한으로 저장되고 텔레메트리는 옵트아웃할 수 있습니다.
일반적인 워크플로
# 1️⃣ CLI를 전역으로 설치
npm i -g @dsh-plugin-hub/cli
# 2️⃣ 현재 작업 공간을 프리셋으로 공유
dsh-hub profile share my‑workspace --version 1.0.0 --profile web --dry-run # 미리보기
dsh-hub login # 한 번만
dsh-hub profile share my‑workspace --version 1.0.0 --profile web # 게시
# 3️⃣ 팀원이 적용
dsh-hub profile apply my‑workspace --version 1.0.0 --profile web
dsh-hub profile doctor # 모든 것이 정상인지 확인
AI 에이전트와의 통합
이 저장소는 CLI를 에이전트 도구(예: dsh_hub_profile_diff)로 노출하는 dsh‑plugin 패키지도 제공합니다. 에이전트는 계획을 생성하고 인간에게 제시하며 명시적 확인 후에만 dsh-hub operation apply <plan-id>를 실행할 수 있습니다. 이 설계는 "인간이 루프에 있는" 안전 장벽을 강제합니다.
개발 및 확장성
- Monorepo에는 4개의 패키지(
schemas,registry,cli,dsh-plugin)가 포함되어 있으며 모두 함께 버전 관리됩니다. - Node ≥22.13 및 pnpm으로 구축되었으며 TypeScript로 타입 검사되고 Node 내장 테스트 러너로 테스트됩니다.
- 기여 지침, 행동 강령, 거버넌스 모델이 제공됩니다.
- CLI는 MIT 라이선스로 오픈소스입니다.
보안 및 개인정보 보호 하이라이트
- 콘텐츠 주소 지정 릴리스(
sha256)는 변조를 방지합니다. - 모든 플러그인 소스는 고정됩니다(npm 무결성 해시 또는 전체 Git 커밋 ID).
- 계획은 30분 후 만료되며 로컬 프로필이 변경되면 중단됩니다.
- 비밀은 로컬 머신을 떠나지 않으며 변수 이름만 게시됩니다.
- 선택적 텔레메트리는 완전히 익명이며 비활성화할 수 있습니다.
라이선스
MIT – 자유롭게 사용, 수정, 배포할 수 있습니다.
결론 – DSH Hub CLI는 팀이 완전한 DeepSeek Harness 구성을 재현 가능하고 감사 가능한 방식으로 공유할 수 있게 하여 취약한 "이 플러그인 목록을 설치" 프로세스를 AI 에이전트도 안전하게 호출할 수 있는 단일 명령의 버전 관리 작업으로 전환합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트