첫 번째 Dash를
만들어보세요
Dash는 위젯이 아닙니다. Dynamic Space 위에서 자율적으로 사고하고, 판단하고, 행동하는 AI 모듈입니다. 5개의 레이어로 구성된 선언적 스키마 하나로 나만의 Dash를 정의할 수 있습니다.
Dash는 The Universe의 핵심 구성 단위입니다. 각 Dash는 자체적인 AI 두뇌(Skill Layer)를 가지며, 사용자의 의도를 이해하고, 다른 Dash와 협업하며, 상황에 맞게 스스로 진화합니다. 기존의 정적 위젯과는 근본적으로 다른 — 자율 AI 에이전트입니다.
Dash 5-Layer 구조
모든 Dash는 5개의 독립적인 레이어로 구성됩니다. 각 레이어는 관심사를 분리하여 유연한 조합과 독립적 진화를 가능하게 합니다.
전체 스키마 명세는 JSON Schema와 템플릿 문서를 참고하세요.
DASH-schema-v1.jsonDASH-template.html
API 레퍼런스
Dash 개발에 필요한 핵심 인터페이스들입니다. 모든 API는 Kotlin으로 작성되며 코루틴 기반 비동기 처리를 지원합니다.
DashSkill Interface
interface DashSkill { /** Dash가 로드될 때 1회 호출 */ suspend fun onInit(ctx: DashSkillContext) /** 트리거 조건 충족 시 실행되는 핵심 로직 */ suspend fun onInvoke( intent: DashIntent, ctx: DashSkillContext ): DashResult /** Dash 언로드 시 정리 작업 */ suspend fun onDestroy() }
DashSkin Interface
interface DashSkin { /** UI 모드: CARD, OVERLAY, FULLSCREEN */ val mode: SkinMode /** Compose UI를 렌더링 */ @Composable fun Render( state: DashState, onAction: (DashAction) -> Unit ) }
DashSkillContext (Sandbox)
class DashSkillContext( val dashId: String, val permissions: Set<Permission>, val storage: DashStorage, val network: SandboxedHttpClient, val protocol: ProtocolBus ) { /** 다른 Dash에게 메시지 발행 */ suspend fun publish(topic: String, payload: Any) /** 특정 토픽 구독 */ fun subscribe(topic: String): Flow<ProtocolMessage> /** LLM 추론 요청 */ suspend fun infer(prompt: String): LLMResponse }
Protocol Topic Validation
프로토콜 토픽은 계층적 네이밍 규칙을 따릅니다. 모든 토픽은 dash.{category}.{action} 형식이며, Orchestrator가 유효성을 검증합니다.
// 유효한 토픽 예시 val weatherTopic = "dash.weather.update" val calendarTopic = "dash.calendar.event.created" // 토픽 검증 ProtocolValidator.validate(topic) // throws InvalidTopicException
DASH.md 표준
DASH.md는 Dash의 능력을 자연어로 기술하는 표준 문서입니다. OpenClaw 연구에서 영감을 받아 설계되었으며, Orchestrator가 이 문서를 읽고 Dash의 역할과 한계를 이해합니다.
LLM 기반 Orchestrator는 자연어를 가장 잘 이해합니다. DASH.md는 Dash가 "무엇을 할 수 있는지", "어떤 상황에서 호출되어야 하는지", "어떤 제약이 있는지"를 사람과 AI 모두가 이해할 수 있는 형식으로 기술합니다.
# Weather Dash ## Identity 실시간 날씨 정보를 제공하는 Dash입니다. 위치 기반 예보, 기상 특보, 자외선 지수를 지원합니다. ## Capabilities - 현재 날씨 조회 (온도, 습도, 체감온도) - 시간별/주간 예보 제공 - 기상 특보 알림 발행 ## Triggers - 사용자가 날씨를 물어볼 때 - 매일 아침 7시 (일일 브리핑) - 기상 특보 발령 시 ## Protocols - publish: dash.weather.update - subscribe: dash.location.changed ## Constraints - 네트워크 접근 필요 (Tier 1) - API 호출 제한: 60회/분
.dpk 패키지 가이드
.dpk(Dash Package)는 Dash를 배포하기 위한 표준 패키지 포맷입니다. ZIP 기반 아카이브에 서명과 격리 정책이 포함됩니다.
패키지 구조
weather-dash.dpk ├── manifest.json # 메타데이터 + 서명 해시 ├── DASH.md # 자연어 능력 기술 ├── dash-schema.json # 5-Layer 선언 ├── skill/ # Skill Layer 구현 │ └── WeatherSkill.kt ├── skin/ # Skin Layer 리소스 │ └── WeatherSkin.kt └── signature.ed25519 # EdDSA 서명
보안 모델
| 요소 | 설명 |
|---|---|
| EdDSA 서명 | Ed25519 기반 패키지 무결성 및 개발자 인증 |
| ClassLoader 격리 | 각 Dash는 독립된 ClassLoader에서 실행, 상호 간섭 불가 |
| 4-Tier 권한 | 접근 수준에 따른 세분화된 권한 관리 |
4-Tier 권한 모델
샘플 Dash
Weather Dash 예제를 통해 5-Layer 구조가 실제로 어떻게 동작하는지 확인하세요.
실시간 날씨 정보를 제공하는 기본 Dash 예제입니다. 위치 기반 트리거, 카드형 UI, OpenWeatherMap API 연동, 프로토콜 발행까지 — Dash의 전체 라이프사이클을 보여줍니다.
{
"meta": {
"id": "com.universe.weather",
"version": "1.0.0",
"tier": 1
},
"trigger": {
"schedule": "0 7 * * *",
"intent": ["weather", "forecast"],
"event": "dash.location.changed"
},
"skin": {
"mode": "card",
"designSystem": "universe"
},
"skill": {
"entry": "skill/WeatherSkill.kt",
"llm": true
},
"protocol": {
"publish": ["dash.weather.update"],
"subscribe": ["dash.location.changed"]
}
}
Weather Dash 전체 가이드
디자인 시스템
Dash의 Skin Layer는 3가지 디자인 시스템 중 하나를 선택하여 렌더링됩니다. 각 시스템은 플랫폼과 사용자 환경에 최적화되어 있습니다.
Dash 개발자를 위한 Cosmic Design 가이드: 글래스 카드, 네뷸라 배경, 그라데이션 텍스트, 미세한 글로우 효과. designSystem: "universe"를 선언하면 자동으로 Cosmic 토큰이 주입됩니다.
Vibe Coding
코드를 작성하지 않고도 Dash를 만들 수 있습니다. 자연어로 원하는 Dash를 설명하면 AI가 5-Layer 스키마를 자동 생성합니다.
✨ 자연어로 Dash를 만드세요
"매일 아침 오늘의 날씨와 일정을 요약해서 카드로 보여주는 Dash를 만들어줘"
동작 원리
| 단계 | 프로세스 |
|---|---|
| 1. 의도 해석 | 자연어 입력에서 트리거, UI 모드, 필요 API를 추출 |
| 2. 스키마 생성 | 5-Layer JSON 스키마를 자동 생성하고 검증 |
| 3. Skill 코드 생성 | LLM이 Kotlin Skill 구현 코드를 생성 |
| 4. DASH.md 작성 | 자연어 능력 기술서를 자동 생성 |
| 5. 패키징 | .dpk로 패키징하여 바로 배포 가능 |
Vibe Coding은 프로토타이핑에 최적화되어 있습니다. 생성된 코드를 직접 수정하여 고도화할 수 있습니다.
Dash Store
만든 Dash를 Dash Store에 출시하고 수익을 창출하세요. Smart Split 모델로 공정한 수익 분배를 보장합니다.
출시 프로세스
| 단계 | 내용 |
|---|---|
| 1. 빌드 | .dpk 패키지 빌드 및 EdDSA 서명 |
| 2. 검증 | 자동화된 보안 검사, 권한 감사, 성능 테스트 |
| 3. 심사 | AI 기반 1차 심사 + 인간 리뷰 (Tier 2 이상) |
| 4. 출시 | Dash Store 등록 및 검색 인덱싱 |
Smart Split 수익 분배
Smart Split은 Dash의 실제 사용량과 품질에 기반한 동적 수익 분배 모델입니다. 단순 다운로드 수가 아니라, 활성 사용 시간, 사용자 만족도, 생태계 기여도를 종합적으로 평가하여 개발자에게 공정한 보상을 제공합니다.
| 지표 | 설명 | 비중 |
|---|---|---|
| 활성 사용 | 일일/주간 활성 사용 세션 수 | 40% |
| 만족도 | 사용자 평점 및 유지율 | 30% |
| 생태계 기여 | 다른 Dash와의 프로토콜 연동 빈도 | 20% |
| 품질 | 충돌률, 응답 시간, 리소스 효율 | 10% |