> **Language / 언어：** [English](../README.md) · [简体中文](./README.zh-CN.md) · [日本語](./README.ja.md) · **한국어** (현재)

# xiao-ui-theme-ts

DeepSeek Harness용 **고도로 사용자 지정 가능한 테마 플러그인** (기본적으로 "소(魈)" 옥색 녹색 스타일). DeepSeek Harness의 웹 인터페이스에 테마를 적용합니다. 색상, 마스코트 배지, 배경, 음성 주입 등을 모두 설정할 수 있습니다. 배경은 **정적 이미지, 동적 GIF, 루프 동영상(MP4/WebM/MOV/M4V)**을 모두 지원하며, 애니메이션 GIF를 업로드하면 자동으로 동적(라이브) 배경이 되고, 동영상을 업로드해도 자동으로 인식되어 전체 화면 루프 배경으로 재생됩니다. 기본은 소 스타일의 옥색/에메랄드 테마이지만, 강조 색상, 배지 텍스트, 음성, 배경 등을 자유롭게 조정해 나만의 테마를 만들 수 있습니다.

## 이것은 무엇인가

DeepSeek Harness의 웹 인터페이스에 고도로 사용자 지정 가능한 테마를 적용합니다. **기본은 소의 옥색 녹색 스타일** (옥색 팔레트 + 마스코트 배지 + 소풍 음성 + 프로스트 배경)이지만 모든 항목을 수정할 수 있습니다. 강조 색상, 배지 텍스트, 음성 켜기/끄기·언어·내용, 배경 이미지와 투명도. 또한 세션에 **소풍 말투**를 선택적으로 주입할 수 있습니다. 어시스턴트가 소처럼 말하게 하려면 켜고, 아니면 끄세요. 단, 바뀌는 것은 말투·문체뿐이며 답변 내용은 전혀 바뀌지 않습니다.

## 미리보기

<img width="2515" height="1288" alt="Screenshot 2026-08-23 181933" src="https://github.com/user-attachments/assets/3998f58b-53db-4349-80f3-3d993c6ad3c3" />

## 기능

- **사용자 지정 가능한 팔레트 (기본 옥색/에메랄드)** : 라이트/다크 옥색 팔레트. 강조 색상은 컬러 휠로 선택하고, 테마 자체는 설정에서 한 번에 끌 수 있습니다.
- **마스코트 배지** : 드래그 가능·접을 수 있는 배지 (오른쪽 아래). 제목과 부제는 임의 텍스트로 변경 가능하며, 아바타 이미지도 업로드로 교체할 수 있습니다. 아바타는 GIF 애니메이션도 지원하여 GIF를 업로드하면 애니메이션으로 재생됩니다. '마스코트 기본값으로 되돌리기' 버튼으로 아바타 경로·제목·부제를 초기값으로 되돌릴 수 있습니다.
- **소풍 음성 (작업 세션)** : 시스템 프롬프트에 소풍 말투 설명을 주입 (켜기/끄기 가능). 중국어/영어 템플릿 또는 직접 작성한 커스텀 프롬프트 지정 가능. **말투만** 바꾸며 내용·도구·실행 방식은 전혀 변하지 않고, 캐릭터 인격도 주입하지 않습니다.
- **롤플레이 공간 (엔터테인먼트, 기본 꺼짐)** : 실제로 사용하는 작업 세션과 완전히 분리된 **독립 롤플레이 세션**입니다. **스위치를 켜기 전에는 아무것도 설치되지 않으므로**, 업그레이드로 agent preset이 저절로 생기지 않습니다. 켜면 '역할 시스템 프롬프트'를 독립된 DSH agent preset(`~/.dsh/.agent-presets/xiao-roleplay/`, 표시 이름 「角色空间（娱乐） / Roleplay (entertainment)」)으로 기록합니다. 새 세션을 시작하고 상단에서 이 프리셋을 선택하면 캐릭터에 들어갑니다. 기본값은 **영어 「소」 설정**이며, 임의의 캐릭터 설정을 붙여 넣으면 역할을 바꿀 수 있습니다. 이 프리셋 자체는 **파일/명령/작업 도구를 마운트하지 않습니다**(**웹 검색 허용**을 켜면 web_search / web_fetch 한 줄만 추가됩니다). 따라서 작업 세션의 실제 능력을 희생할 일은 없습니다. (profile 레벨 플러그인이 등록한 도구는 어떤 프리셋에도 속하지 않고 롤플레이를 포함한 모든 세션에 나타납니다. 아래 주의 사항을 참고하세요.) 양쪽 기록은 서로 독립입니다. 원클릭 켜기/끄기이며 끄면 프리셋이 제거됩니다.
- **프로스트 배경** : 배경 이미지 설정 가능 (플러그인 상대 경로, 로컬 절대 경로, 또는 직접 업로드). 블러 강도와 UI 투명도도 조정. 애니메이션 GIF를 업로드하면 자동으로 **동적(라이브) 배경**으로 처리됩니다. **MP4 / WebM / MOV / M4V 동영상**을 업로드해도 자동으로 인식되어 전체 화면 루프 동영상 배경으로 재생됩니다(동영상 배경에서는 소리 켜기/끄기 선택 가능). 정적 이미지나 단일 프레임 GIF는 기존처럼 정적 프로스트 배경으로 처리됩니다.
- **다중 배경(로테이션)** : 배경 목록에 두 번째 항목을 추가하면 자동으로 로테이션됩니다. 정지 이미지와 애니메이션 GIF는 설정 가능한 '전환 간격'에 따라 전환되고, 동영상은 '간격 ≤ 재생 시간'이면 끝까지 재생한 뒤, '간격 > 재생 시간'이면 루프 재생하며 간격에 도달한 뒤 전환됩니다(전환 시간 = max(간격, 동영상 길이)). 전환에는 약 0.7초의 고정 크로스페이드를 사용합니다. 배경이 1장뿐일 때는 아무것도 바뀌지 않습니다(타이머·페이드 없이 기존과 동일).
- **UI·사이드바 투명도 제어** : UI 불투명도(0.3–0.9)는 메인 영역을, 사이드바 불투명도(0–1)는 좌우 사이드바를 각각 제어. 100% 완전 불투명하게 하면서도 배경은 항상 일부 비칩니다.
- **강조 색상** : 기본은 소의 옥색 녹색. 컬러 휠로 임의의 강조 색상을 선택 가능. 패널 면, 테두리, 브랜드 색상, 사이드바, 배경 그라데이션이 연동해 바뀌며, 변경 후 저장됩니다. '테마 색상 기본값으로 되돌리기'로 소의 옥색 녹색으로 되돌릴 수 있습니다.
- **테마 관리(멀티 테마)** : 현재 전체 설정을 이름 있는 테마로 저장하고, 전환/이름 변경/삭제(내장 '소' 테마는 삭제 불가), 현재 테마를 기본값으로 되돌리기가 가능합니다. 각 테마를 `.json`으로 원클릭 가져오기/내보내기가 가능합니다.
- **업로드 자산 관리(피커)** : 배경/아바타 업로드 진입점이 피커 창이 되어 이미 업로드된 파일(썸네일, 크기, 수정 시각, 어느 테마가 참조하는지)을 나열합니다. 기존 파일을 **선택해 재사용**하거나 그 자리에서 **새로 업로드**(성공 후 자동 선택)할 수 있습니다. 하단의 '업로드 폴더 열기'로 파일 관리자에서 직접 추가·삭제·이름 변경이 가능합니다. **파일은 자동으로 삭제되지 않습니다** — 업로드 폴더는 사용자가 관리합니다.
- **설정 페이지** : 마스터 스위치, 강조 색상, **말투(작업 세션)**, 템플릿 언어, 커스텀 프롬프트, **롤플레이 공간(엔터테인먼트)**(켜기/끄기 · 역할 시스템 프롬프트 · 프리셋 적용/갱신 · 기본 역할로 되돌리기 · 프리셋 폴더 열기 · 설치 상태), 아바타 경로, 마스코트 제목/부제, 테마 관리, 프로스트 배경(켜기/경로/업로드/블러/투명도, GIF 또는 MP4/WebM/MOV/M4V 동영상은 동적 배경으로 자동 인식, 동영상 배경은 소리 선택 가능), UI 및 사이드바 불투명도.

## 요구 사항

- DeepSeek Harness (`dsh` 사용 가능) — `0.1.1-rc.2` 와 `0.1.5-rc.1` 에서 검증됨([버전 호환성](#버전-호환성) 참고)
- Node.js (≥ 18 권장)
- [pnpm](https://pnpm.io/)

## 버전 호환성

지난 업그레이드의 앞뒤 버전(업그레이드 전 / 현재)을 모두 지원합니다.

| 구성 요소 | 검증 / 지원 범위 | 테마의 대응 |
| --- | --- | --- |
| DeepSeek Harness | `0.1.1-rc.2`(업그레이드 전) → `0.1.5-rc.1`(현재) | 왼쪽 사이드바: 클래스 이름 접미사 `sidebarCol`. 오른쪽 사이드바: 예전 열 이름 `detailsCol` 과 새 네이티브 패널 `data-sidebar-right-panel` 앵커를 모두 유지하므로 어느 DSH 버전에서도 동작합니다. |
| better-sidebar(서드파티) | `0.17.1`(업그레이드 전) → `0.19.0`(현재) | `0.17.1` 은 자체적으로 그리는 오른쪽 패널(`data-dsh-panel` / `data-dsh-pane`), `0.19.0` 은 DSH 네이티브 오른쪽 사이드바에 탭을 등록하는 방식(`data-sidebar-right-panel`)입니다. 새 버전이 `data-dsh-panel` 을 붙이는 "하단 워크벤치" 패널은 명시적으로 제외해 불투명하게 둡니다. |

2026-09-10 기준 `dsh 0.1.1-rc.2 + better-sidebar 0.17.1` 과 `dsh 0.1.5-rc.1 + better-sidebar 0.19.0` 양쪽에서 "사이드바 불투명도"가 좌우 사이드바에 적용되는 것을 확인했습니다. 호환 앵커를 모두 남겨 두었으므로 업그레이드 / 롤백에도 유지됩니다. 더 오래된 better-sidebar(0.14.x / 0.16.x)도 같은 `data-dsh-panel` 앵커를 사용하므로 동작할 것으로 보지만 검증되지는 않았습니다.

## 온라인 설치 (빠르게)

1. `dsh` 명령이 사용 가능한지 확인합니다.
2. 패키지 이름으로 설치 (npm, 권장):
```bash
dsh plugin --profile web add xiao-ui-theme-ts
```
   또는 GitHub 릴리스의 tgz로 직접 설치:
```bash
dsh plugin --profile web add https://github.com/jinxlux/xiao-theme-dsh-ui-plugin/releases/latest/download/xiao-ui-theme-ts.tgz
```

## 소스에서 설치 (클론)

```bash
git clone <copied-repo-url>
cd xiao-ui-theme-ts

pnpm install       # 빌드 의존성 설치
pnpm run build     # lib/ 생성 (ESM Host + ModuleLoader Client + 타입 정의)
pnpm run check     # 선택: 산출물이 dsh 플러그인 계약을 만족하는지 검증
```

이후 번들로 DSH 프로필에 추가합니다:

```bash
# 상대 경로 (리포지토리와 같은 레벨에서 실행)
dsh plugin --profile web add "./xiao-ui-theme-ts"
# 또는 절대 경로
dsh plugin --profile web add "D:/.../xiao-ui-theme-ts"
```

> `dsh plugin add`는 패키지를 프로필에 설치하고, `dsh.bundle` 선언 덕분에 **번들 스택에 자동으로 연결**됩니다 — 수동 설정 불필요.
> 테마를 반영하려면 DSH Web을 새로고침/재시작하세요.

## 사용법 및 설정

- DSH Web → **설정 → 소 테마** : 마스터 스위치, 강조 색상, **말투(작업 세션)**, 템플릿 언어, 커스텀 프롬프트, **롤플레이 공간(엔터테인먼트)**, 아바타 경로, 마스코트 제목/부제, 테마 관리, 프로스트 배경(켜기/경로/업로드/블러/투명도, GIF 또는 MP4/WebM/MOV/M4V 동영상은 동적 배경으로 자동 인식, 동영상 배경은 소리 선택 가능), UI 불투명도, 사이드바 불투명도.
- **말투(작업 세션)** : 내장 중국어/영어 템플릿은 말하는 방식만 바꿉니다(내용·도구·실행 방식은 그대로, 캐릭터 인격도 기록하지 않습니다). 하지만 **커스텀 프롬프트는 다릅니다**: **모든** 작업 세션의 시스템 프롬프트에 그대로 삽입되므로 적은 내용이 실제로 적용됩니다. 말투만 적으세요. 도구/권한/인격/'반드시 거부하라' 같은 지시를 적으면 정상 작업 세션이 망가집니다.
- **롤플레이 공간(엔터테인먼트)** : 말투와는 별개의 독립 설정 그룹입니다.
  - **켜기/끄기**(기본 꺼짐) : 켜면 아래 역할 텍스트로 프리셋을 생성/갱신하고, 끄면 삭제합니다(이미 진행 중인 롤플레이 세션은 그대로 계속됩니다). 마스터 스위치(**소 테마 사용**)에도 종속됩니다: 마스터가 꺼져 있으면 아무것도 설치되지 않고 프리셋은 제거됩니다.
  - **웹 검색 허용**(기본 꺼짐) : 켜면 롤플레이 프리셋에 DSH의 웹 도구(web_search / web_fetch)가 딱 한 줄 추가되어, 연기 전에 최신 줄거리·디자인·설정을 찾아볼 수 있습니다. 파일/명령/작업 권한은 그대로 없습니다. 역할 텍스트에 도구 지시는 쓰지 마세요: 입력한 역할 텍스트는 그대로 쓰이고, 그 뒤에 플러그인이 짧은 규칙 절(이 스위치의 도구 차단 + '출처를 밝히지 않기')을 **항상 덧붙입니다**. 역할 텍스트로 덮어쓰거나 끌 수 없으므로, 써 봐야 충돌만 납니다. (profile 레벨 웹 플러그인을 설치했다면 검색 provider는 그것이 제공합니다. 아래 주의 사항을 참고하세요.) 조회한 내용은 캐릭터의 배경 지식으로만 쓰이며, 캐릭터는 '인터넷에서 찾아봤다' 같은 메타 발언이나 출처·링크를 내놓지 않습니다. 꺼져 있을 때(기본값)는 그냥 금지입니다: 역할 텍스트가 '어떤 도구도 쓰지 말라'고 명령합니다 — 이 차단은 프롬프트에 있는 것이지 도구 자체를 제거한 것은 아닙니다.
  - **역할 시스템 프롬프트** : 비우면 내장 영어 「소」 설정. 임의의 캐릭터 설정을 붙여 넣으면 역할이 바뀝니다(저장 시 프리셋에 자동 동기화).
  - **프리셋 적용/갱신** : 수동으로 강제 재작성합니다(생성된 파일을 직접 고친 뒤 복구할 때 유용).
  - **기본 역할(소)로 되돌리기** / **프리셋 폴더 열기** : 역할 텍스트 복원, 또는 `~/.dsh/.agent-presets/xiao-roleplay/` 를 파일 관리자로 엽니다.
  - **캐릭터에 들어가는 방법** : **새 세션**을 시작하고 상단 프리셋 선택에서 「角色空间（娱乐） / Roleplay (entertainment)」를 고릅니다. DSH는 아직 아무것도 출력하지 않은 세션만 프리셋을 전환할 수 있으므로, 기존 세션을 롤플레이로 바꿀 수는 없습니다.
- **다중 배경** : 설정 → 샤오 테마의 배경 그룹에 모든 배경이 나열됩니다. '업로드된 파일에서 추가'를 클릭하면 **썸네일 피커**가 열리므로 추가할 이미지/동영상을 클릭하세요(그 창에서 바로 업로드도 가능). 목록의 각 항목에는 미리보기가 표시됩니다. 2장 이상이면 로테이션이 시작되고 위로/아래로/삭제 컨트롤과 '전환 간격' 슬라이더가 나타납니다. '배경 선택/업로드'는 기존과 같이 **첫 번째** 항목만 교체합니다.
- **강조 색상** : 컬러 휠로 강조 색상 선택 (기본 소의 옥색 녹색 `#2E8B72`). 패널 면, 테두리, 브랜드 색상, 사이드바, 배경 그라데이션이 연동해 바뀝니다. 의미 있는 상태 색상(오류/경고/성공)은 고정되며 강조 색상을 따르지 않습니다.
- **마스코트** : 배지 제목(기본 "靖妖傩舞")과 부제(기본 "别挡路")는 임의 텍스트로 변경 가능. 제목을 비우면 기본으로 돌아갑니다. 아바타 경로는 플러그인 상대 경로 또는 로컬 절대 경로를 지원하며, 이미지를 직접 업로드해 아바타를 교체할 수도 있습니다. 아바타는 GIF 애니메이션도 지원하여 GIF를 업로드하면 별도 토글 없이 애니메이션으로 재생됩니다.
- **업로드(피커)** : '배경 선택/업로드' 또는 '아바타 선택/업로드'를 클릭하면 자산 창이 열립니다. 기존 업로드를 선택해 재사용(배경은 동적 플래그 자동 재계산)하거나 그 자리에서 새로 업로드해 자동 선택할 수 있습니다. '업로드 폴더 열기'로 직접 관리하고, '테마 색상 기본값으로 되돌리기'·'마스코트 기본값으로 되돌리기'로 초기값을 복원합니다.
- **UI 불투명도** : 메인 영역을 제어. 범위 0.3–0.9로, 배경이 항상 약 10% 이상 보이도록 상한이 설정되어 있습니다.
- **사이드바 불투명도** : 좌우 사이드바를 각각 제어. 범위 0–1, 100% 완전 불투명까지 가능. 왼쪽은 DSH 기본 사이드바, 오른쪽은 DSH 네이티브 오른쪽 사이드바 패널(안정 앵커 `data-sidebar-right-panel`)이며 **better-sidebar ≥ 0.19** 의 탭도 이 패널에 올라가므로 슬라이더 하나로 둘 다 제어됩니다. 구버전 better-sidebar(< 0.19)가 직접 그리던 패널은 `data-dsh-panel` / `data-dsh-pane` 로 계속 적용됩니다. 둘 다 없으면 규칙이 아무 일도 하지 않습니다.
- 변경 사항은 **즉시 반영**되며 DSH 재시작이 필요 없습니다.
- 설정은 DSH 데이터 루트 아래의 `xiao-theme.json` 에 저장됩니다(기본 `~/.dsh`, `$DSH_HOME` 을 설정했다면 그곳). 업로드한 배경 이미지/동영상은 바로 옆의 `xiao-theme-uploads/` 에 저장됩니다(사용자 단위, 리포지토리에 포함 안 됨). 이미 `~/.dsh` 에 데이터가 있는 기존 설치는 **예전 위치를 계속 사용**하므로, 업그레이드가 '설정 초기화'처럼 보이지 않습니다([주의사항](#주의사항) 참조). 업로드는 스트리밍으로 디스크에 기록되며 용도별 상한이 다릅니다: 아바타/이미지는 20MB, 배경(동영상 포함)은 200MB까지 허용. 지원하지 않거나 형식이 일치하지 않는 파일은 거부되고 설정 페이지에 명확한 메시지가 표시됩니다(조용히 실패하지 않음).

## 주의 사항

- **로컬 설치에서 원격 설치로 전환** : 처음에 로컬 경로로 설치한 경우(`dsh plugin add ./xiao-ui-theme-ts`,
  DSH는 `link:` 의존성으로 기록) 나중에 패키지 이름 / tgz로 원격 설치로 전환할 때는 남아 있는 link를
  먼저 제거하세요. 그렇지 않으면 pnpm이 link를 따라 로컬 `node_modules`로 돌아가 심볼릭 링크 `EPERM`
  (`@types/node`)으로 실패합니다. 먼저 제거한 뒤 다시 시도하세요:
  ```bash
  dsh plugin --profile web remove xiao-ui-theme-ts
  dsh plugin --profile web add xiao-ui-theme-ts
  ```
- **마운트 전에 빌드** : `lib/`는 빌드 산출물로 커밋되지 않습니다. 클론 후 `pnpm install && pnpm run build`를 먼저 실행하세요. 빌드되지 않은 디렉터리를 `dsh plugin add`하면 `lib/`가 없어 로딩에 실패합니다.
- 기본 아바타/배경은 **패키지 내 상대 경로**(`resource/avatar.png`)를 사용해 머신 간에 읽을 수 있습니다. 빌드 후 `resource/`를 `lib/`와 같은 레벨로 유지하세요(현재 구성 성립). `resource/bg.svg`는 구버전이며 현재 사용되지 않습니다.
- **동영상 배경 호환성** : 브라우저 간 가장 안정적인 것은 H.264(AVC) + AAC의 `.mp4`, 또는 VP8/VP9의 `.webm`입니다. 일부 브라우저에서는 HEVC(H.265) `.mp4`/`.mov`를 디코딩하지 못합니다. `.avi`/`.mkv`는 지원하지 않습니다.
- **동영상 배경 소리는 “페이지 로드마다 한 번의 상호작용”이 필요합니다** : 브라우저(Chrome / Edge / Firefox)는 **음소거 자동 재생은 항상 허용**하지만, 사용자가 페이지와 상호작용하기 전에는 **소리 있는 자동 재생을 반드시 차단**합니다 — 페이지 로드 단위의 브라우저 정책이며 이 플러그인의 설정이 아닙니다. 따라서 '동영상 배경 소리'를 켠 상태로 DSH를 시작(또는 페이지 새로고침)하면 배경 동영상은 **먼저 음소거로 재생**되고, UI 아무 곳이나 클릭하거나 키를 누르는 순간 소리가 자동으로 돌아옵니다(**테마를 다시 고를 필요 없음**). 이 스위치는 '소리를 원하는지'만 나타낼 뿐 브라우저의 판단을 뒤집을 수 없습니다. 첫 프레임부터 소리를 내려면 해당 오리진(`http://127.0.0.1:3080`)을 기업 정책 `AutoplayAllowlist` 로 허용하거나 `--autoplay-policy=no-user-gesture-required` 플래그로 브라우저를 실행하세요(디버그용). 필요 없다면 소리 스위치를 끄고 완전 음소거로 쓰는 것이 가장 간단합니다. 자세한 내용은 [Autoplay policy in Chrome](https://developer.chrome.com/blog/autoplay/) 을 참고하세요.
- 소풍 음성 프롬프트는 DSH의 `systemPrompt` 조립에 의존합니다. 사용 중인 agent 프리셋이 프롬프트를 persona만 남기도록 거르는 경우, 또는 **complete persona**를 쓰는 경우 해당 세션에서는 음성이 나타나지 않을 수 있습니다(프리셋 동작이며 플러그인 버그가 아닙니다).
- "사이드바 불투명도"는 DSH 자체 `sidebarCol` 열과 네이티브 오른쪽 사이드바 패널(`data-sidebar-right-panel`)에 적용됩니다. 구버전 DSH의 오른쪽 열 이름 `detailsCol`, 구버전 better-sidebar가 직접 그린 패널의 `data-dsh-panel` / `data-dsh-pane` 도 호환을 위해 유지합니다. 새 버전 better-sidebar의 **하단 워크벤치** 패널도 `data-dsh-panel` 을 가지지만 `:not([data-dsh-bottom-panel])` 로 명시적으로 제외해 불투명하게 둡니다. better-sidebar 미설치 시에도 오른쪽 규칙은 DSH 기본 오른쪽 사이드바에 적용되며 메인 UI에 영향이 없습니다.
- **업로드는 사용자 관리(자동 삭제 없음)** : 업로드한 파일은 자동으로 정리되지 않아 폴더가 커질 수 있습니다. 피커의 '업로드 폴더 열기'로 직접 추가·삭제·이름을 바꾸세요.
- **말투 섹션은 프리셋에 의해 버려질 수 있습니다** : `xiao-voice` 는 스코프 없는 평범한 system prompt 섹션이며 '모드'가 아닙니다. 프롬프트 조립을 persona만 남기도록 거르는 프리셋이나 persona에 `complete: true` 를 켠 프리셋은 이 섹션을 제거합니다 — 특정 프리셋에서 말투가 사라지는 것은 그 프리셋의 동작이며 스위치 고장이 아닙니다.
- **롤플레이 공간은 agent preset을 기록합니다** : 켜면 `~/.dsh/.agent-presets/xiao-roleplay/` 아래에 `agent.cordis.yml` 과 `preset.yml` 을 유지합니다(`agent.cordis.yml` 은 자동 생성물이므로 직접 편집하지 마세요. 역할 변경은 설정 페이지 텍스트 상자에서 합니다). 끄면 이 두 파일을 삭제합니다(비재귀 삭제이므로 그 폴더에 넣어 둔 다른 파일은 건드리지 않습니다). 프리셋의 persona가 곧 전체 system prompt이며(`complete: true`, 런타임 컨텍스트 없음), 이 프리셋 자체는 **작업용 도구(파일/셸/서브에이전트/작업/플랜)를 마운트하지 않습니다**(**웹 검색 허용**을 켜면 web_search / web_fetch 한 줄만 추가됩니다). **주의**: 이것은 프리셋 자체 계층에만 해당합니다 — profile 레벨(host 면)로 등록된 서드파티 플러그인 도구(예: modsearch의 `read_page` / `x_search`, plugin-vet의 `scan_plugin` 등)는 어떤 프리셋에도 속하지 않고 **모든** 세션(롤플레이 포함)에 나타나며 프리셋으로는 숨길 수 없습니다. 이것은 지원되는 구성입니다: 그대로 두면 **웹 검색 허용**을 켰을 때 `web_search` 가 그 플러그인이 제공하는 provider(modsearch가 바로 그것)를 사용합니다. 롤플레이 세션에 갖게 하고 싶지 않을 때만 profile에서 제거/비활성화하세요. 이 루트는 DSH의 사용자 단위 해석 규칙을 따르므로(비어 있지 않은 `$DSH_HOME` 이 `~/.dsh` 보다 우선), 프리셋은 항상 DSH가 검색하는 위치에 놓입니다. 테마 자체의 설정과 업로드 파일은 의도적으로 `~/.dsh` 에 그대로 두어, 업그레이드가 '설정 초기화'처럼 보이지 않게 합니다.
- **롤플레이와 작업 세션은 서로 영향을 주지 않습니다** : 작업 세션은 말투 주입만 받고 캐릭터 인격은 절대 주입되지 않습니다. 롤플레이 세션은 작업 세션의 도구(파일/셸/서브에이전트/작업/플랜)를 상속하지 않고(웹 검색·가져오기는 **웹 검색 허용**을 켰을 때만) '롤플레이가 실제 능력을 망친다'는 상황 자체가 생기지 않습니다 — 대신 롤플레이 세션은 작업을 도와줄 수 없으며, 이것이 엔터테인먼트 모드의 올바른 경계입니다. 기록과 테마 설정도 서로 독립입니다.
- **롤플레이 내용 면책** : 롤플레이 세션에서 모델은 설정에 따라 연기합니다. **기술적 결론이나 사실로 취급하지 마세요**. 저작권이 있는 대사 원문은 동봉하지 않으며, 역할 텍스트는 사용자가 작성합니다(그 뒤에 플러그인이 짧은 규칙 절을 덧붙입니다. 위 설정 설명 참고).
- 본 플러그인은 설정에 **환경 변수를 읽지 않습니다**. 설정은 `xiao-theme.json` 과 컴파일 시 기본값만 사용합니다. (`$DSH_HOME` 은 데이터 루트를 찾는 데에만 쓰이며 테마 설정에는 쓰이지 않습니다.)

## 라이선스 및 고지

- **코드** : 본 리포지토리 소스는 **MIT 라이선스**로 공개되어 있습니다(`LICENSE` 참조). 법에서 허용하는 범위에서 학습·수정·재배포할 수 있습니다.
- **이미지** : `resource/`(bg.svg, avatar.png, 그리고 사용자가 업로드한 배경 이미지)는 **공개 온라인 출처**의 것으로, 본 테마의 데모/사용자 지정 전용입니다.
- **캐릭터/설정** : 소(魈, Xiao)와 《원신》(Genshin Impact) 캐릭터의 외형, 이름, 관련 설정, 아트 자산의 **저작권은 miHoYo에 있습니다**. MIT 라이선스는 **본 리포지토리의 코드만**을 다루며 miHoYo의 캐릭터 외형/설정/원본 아트를 **다루지 않습니다**. 관련 자산(`resource/` 및 테마 표시)을 포함한 것은 허가 없이 **상업적 사용이나 전용을 금지**합니다. 재배포·상업 이용 시 먼저 miHoYo의 라이선스를 받으세요. `resource/`의 자산을 제거·교체하면 이 제약을 피할 수 있습니다. 자세한 내용은 `LICENSE`의 "Character Image & Setting Intellectual Property Notice"를 참조하세요.
