설정
Dropstone JSON 설정 사용하기.
JSON 설정 파일을 사용하여 Dropstone을 구성할 수 있습니다.
형식
Dropstone은 JSON 및 JSONC(주석이 있는 JSON) 형식을 모두 지원합니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"autoupdate": true,
"server": {
"port": 4096,
},
}
위치
설정을 여러 위치에 배치할 수 있으며 각각 다른 우선순위를 가집니다.
Note:
설정 파일은 병합되며 대체되지 않습니다. 다음 설정 위치의 설정이 결합됩니다. 나중의 설정이 충돌하는 키에 대해서만 이전 설정을 재정의합니다. 모든 설정의 충돌하지 않는 설정은 유지됩니다.
예를 들어, 전역 설정에서 autoupdate: true를 설정하고 프로젝트 설정에서 model: "dropstone/dropstone-pro"을 설정하면, 최종 설정에는 두 설정이 모두 포함됩니다.
우선순위 순서
설정 소스는 다음 순서로 로드됩니다(나중의 소스가 이전 소스를 재정의함):
- 원격 설정 (
.well-known/dropstone에서) - 조직 기본값 - 전역 설정 (
~/.config/dropstone/dropstone.json) - 사용자 기본 설정 - 사용자 정의 설정 (
DROPSTONE_CONFIG환경 변수) - 사용자 정의 재정의 - 프로젝트 설정 (프로젝트의
dropstone.json) - 프로젝트별 설정 .dropstone디렉토리 - 에이전트, 명령, 플러그인- 관리되는 설정 파일 (macOS의
/Library/Application Support/dropstone/) - 관리자 제어 - macOS 관리되는 기본 설정 (MDM을 통한
.mobileconfig) - 최우선, 사용자가 재정의할 수 없음
이는 프로젝트 설정이 전역 기본값을 재정의할 수 있고, 전역 설정이 원격 조직 기본값을 재정의할 수 있음을 의미합니다. 관리되는 설정은 모든 것을 재정의합니다.
Note:
.dropstone 및 ~/.config/dropstone 디렉토리는 하위 디렉토리에 복수형 이름을 사용합니다: agents/, commands/, modes/, plugins/, skills/, tools/. 단수형 이름(예: agent/)도 하위 호환성을 위해 지원됩니다.
원격
조직은 자신의 도메인에서 .well-known/dropstone 엔드포인트를 통해 기본 설정을 제공할 수 있습니다. Dropstone은 해당 조직에 등록된 계정을 가진 사용자가 처음 로그인할 때 자동으로 이를 가져옵니다.
원격 설정이 먼저 로드되어 기본 계층으로 작동합니다. 다른 모든 설정 소스(전역, 프로젝트)는 이러한 기본값을 재정의할 수 있습니다.
예를 들어, 조직이 기본적으로 비활성화된 MCP 서버를 제공하는 경우:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
로컬 설정에서 특정 서버를 활성화할 수 있습니다:
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
전역
전역 Dropstone 설정을 ~/.config/dropstone/dropstone.json에 배치합니다. 모델 및 권한과 같은 사용자 전체 기본 설정에 전역 설정을 사용합니다.
세션 수준 설정(키바인드, 스크롤, 마우스 캡처)의 경우 ~/.config/dropstone/tui.json을 사용합니다.
전역 설정은 원격 조직 기본값을 재정의합니다.
프로젝트별
프로젝트 루트에 dropstone.json을 추가합니다. 프로젝트 설정은 표준 설정 파일 중에서 가장 높은 우선순위를 가지며 전역 및 원격 설정을 모두 재정의합니다.
프로젝트별 세션 설정의 경우 옆에 tui.json을 추가합니다.
팁:
프로젝트 루트에 프로젝트별 설정을 배치합니다.
Dropstone이 시작될 때 현재 디렉토리에서 설정 파일을 찾거나 가장 가까운 Git 디렉토리까지 위로 이동합니다.
이는 Git에 안전하게 체크인할 수 있으며 전역 설정과 동일한 스키마를 사용합니다.
사용자 정의 경로
DROPSTONE_CONFIG 환경 변수를 사용하여 사용자 정의 설정 파일 경로를 지정합니다.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
사용자 정의 설정은 우선순위 순서에서 전역 및 프로젝트 설정 사이에 로드됩니다.
관리되는 설정
조직은 사용자가 재정의할 수 없는 설정을 적용할 수 있습니다. 관리되는 설정은 가장 높은 우선순위 계층에서 로드됩니다.
파일 기반
시스템 관리 설정 디렉토리에 dropstone.json 또는 dropstone.jsonc 파일을 배치합니다:
| 플랫폼 | 경로 |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
이 디렉토리는 관리자/루트 액세스가 필요하므로 사용자가 수정할 수 없습니다.
macOS 관리되는 기본 설정
macOS에서 Dropstone은 ai.dropstone.managed 기본 설정 도메인에서 관리되는 기본 설정을 읽습니다. MDM(Jamf, Kandji, FleetDM)을 통해 .mobileconfig를 배포하면 설정이 자동으로 적용됩니다.
Dropstone은 다음 경로를 확인합니다:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
plist 키는 dropstone.json 필드에 직접 매핑됩니다. MDM 메타데이터 키(PayloadUUID, PayloadType 등)는 자동으로 제거됩니다.
.mobileconfig 생성
ai.dropstone.managed PayloadType을 사용합니다. Dropstone 설정 키는 페이로드 dict에 직접 들어갑니다:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>ai.dropstone.managed</string>
<key>PayloadIdentifier</key>
<string>com.example.dropstone.config</string>
<key>PayloadUUID</key>
<string>GENERATE-YOUR-OWN-UUID</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>share</key>
<string>disabled</string>
<key>server</key>
<dict>
<key>hostname</key>
<string>127.0.0.1</string>
</dict>
<key>permission</key>
<dict>
<key>*</key>
<string>ask</string>
<key>bash</key>
<dict>
<key>*</key>
<string>ask</string>
<key>rm -rf *</key>
<string>deny</string>
</dict>
</dict>
</dict>
</array>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadIdentifier</key>
<string>com.example.dropstone</string>
<key>PayloadUUID</key>
<string>GENERATE-YOUR-OWN-UUID</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
uuidgen으로 고유한 UUID를 생성합니다. 조직의 요구사항에 맞게 설정을 사용자 정의합니다.
MDM을 통해 배포
- Jamf Pro: Computers > Configuration Profiles > Upload > 대상 디바이스 또는 스마트 그룹으로 범위 지정
- FleetDM:
.mobileconfig를mdm.macos_settings.custom_settings아래의 gitops 리포지토리에 추가하고fleetctl apply실행
디바이스에서 확인
.mobileconfig를 두 번 클릭하여 로컬로 설치하여 테스트한 후(System Settings > Privacy & Security > Profiles에 표시됨) 다음을 실행합니다:
dropstone debug config
모든 관리되는 기본 설정 키는 해결된 설정에 나타나며 사용자 또는 프로젝트 설정으로 재정의할 수 없습니다.
스키마
주요 설정 스키마는 dropstone.io/config.json에 정의되어 있습니다.
세션 수준 설정(tui.json)은 dropstone.io/tui.json을 사용합니다.
편집기는 스키마를 기반으로 유효성 검사 및 자동 완성을 수행할 수 있어야 합니다.
세션 설정
세션 수준 설정을 위해 전용 tui.json(또는 tui.jsonc) 파일을 사용합니다: 스크롤 동작, 마우스 캡처, diff 렌더링 등.
{
"$schema": "https://dropstone.io/schema/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true
}
dropstone.json의 레거시 theme, keybinds 및 세션 관련 키는 더 이상 사용되지 않으며 가능한 경우 자동으로 마이그레이션됩니다.
서버
dropstone serve 및 dropstone web 명령에 대한 서버 설정을 server 옵션을 통해 구성할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
사용 가능한 옵션:
port- 수신할 포트.hostname- 수신할 호스트명.mdns가 활성화되고 호스트명이 설정되지 않으면0.0.0.0으로 기본값 설정됨.mdns- mDNS 서비스 검색 활성화. 네트워크의 다른 디바이스가 Dropstone 서버를 검색할 수 있습니다.mdnsDomain- mDNS 서비스의 사용자 정의 도메인 이름. 기본값은dropstone.local. 동일한 네트워크에서 여러 인스턴스를 실행할 때 유용합니다.cors- 브라우저 기반 클라이언트에서 HTTP 서버를 사용할 때 CORS에 허용할 추가 원본. 값은 전체 원본(스킴 + 호스트 + 선택적 포트)이어야 합니다(예:https://app.example.com).
셸
shell 옵션을 사용하여 대화형 터미널에 사용할 셸을 구성할 수 있습니다. 호환되는 셸은 에이전트 도구 호출에도 사용됩니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"shell": "pwsh"
}
지정하지 않으면 Dropstone은 운영 체제를 기반으로 합리적인 기본값을 자동으로 검색하고 사용합니다(예: Windows의 pwsh 또는 cmd.exe, macOS/Linux의 /bin/zsh 또는 /bin/bash). 절대 경로 또는 짧은 이름을 제공할 수 있습니다.
도구
tools 옵션을 통해 LLM이 사용할 수 있는 도구를 관리할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"tools": {
"write": false,
"bash": false
}
}
모델
model 옵션으로 기본 모델을 설정합니다. Dropstone은 세 가지 계층을 제공합니다:
| 계층 | 모델 ID |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
variant로 기본 추론 깊이를 고정합니다:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"variant": "high"
}
유효한 variant 값은 low, medium, high, xhigh입니다. 전체 분석은 모델을 참조하세요.
small_model 옵션은 제목 생성과 같은 경량 작업을 위한 별도의 모델을 구성합니다. 기본적으로 Dropstone은 적절한 계층을 선택합니다. 명시적으로 재정의할 수 있습니다:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
에이전트
agent 옵션을 통해 특정 작업을 위한 특화된 에이전트를 구성할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"agent": {
"code-reviewer": {
"description": "코드를 모범 사례 및 잠재적 문제에 대해 검토합니다",
"model": "dropstone/dropstone-pro",
"prompt": "당신은 코드 리뷰어입니다. 보안, 성능 및 유지보수성에 집중하세요.",
"tools": {
// 검토 전용 에이전트에 대해 파일 수정 도구 비활성화
"write": false,
"edit": false,
},
},
},
}
~/.config/dropstone/agents/ 또는 .dropstone/agents/의 마크다운 파일을 사용하여 에이전트를 정의할 수도 있습니다. 자세히 알아보기.
기본 에이전트
default_agent 옵션을 사용하여 기본 에이전트를 설정할 수 있습니다. 이는 명시적으로 지정되지 않은 경우 사용할 에이전트를 결정합니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
기본 에이전트는 주 에이전트여야 합니다(하위 에이전트 아님). "build" 또는 "plan"과 같은 기본 제공 에이전트이거나 정의한 사용자 정의 에이전트일 수 있습니다. 지정된 에이전트가 존재하지 않거나 하위 에이전트인 경우 Dropstone은 경고와 함께 "build"로 폴백됩니다.
이 설정은 모든 인터페이스에 적용됩니다: 대화형 세션, 일회성 실행(dropstone run) 및 GitHub Action.
명령
command 옵션을 통해 반복적인 작업을 위한 사용자 정의 명령을 구성할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"command": {
"test": {
"template": "전체 테스트 스위트를 커버리지 리포트와 함께 실행하고 모든 실패를 표시합니다.\n실패한 테스트에 집중하고 수정 사항을 제안합니다.",
"description": "커버리지와 함께 테스트 실행",
"agent": "build",
"model": "dropstone/dropstone-fast",
},
"component": {
"template": "TypeScript 지원으로 $ARGUMENTS라는 새로운 React 컴포넌트를 생성합니다.\n적절한 타이핑과 기본 구조를 포함합니다.",
"description": "새 컴포넌트 생성",
},
},
}
~/.config/dropstone/commands/ 또는 .dropstone/commands/의 마크다운 파일을 사용하여 명령을 정의할 수도 있습니다. 자세히 알아보기.
키맵
tui.json에서 keymap으로 키보드 단축키를 사용자 정의합니다.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"global": {
"command.palette.show": "ctrl+p"
}
}
}
}
keymap은 기본 제공 기본값과 병합되므로 변경하려는 단축키만 구성하면 됩니다.
이전 keybinds 필드는 더 이상 사용되지 않으며 keymap이 없을 때만 적용됩니다.
스냅샷
Dropstone은 스냅샷을 사용하여 에이전트 작업 중 파일 변경 사항을 추적하여 세션 내에서 변경 사항을 실행 취소하고 되돌릴 수 있습니다. 스냅샷은 기본적으로 활성화됩니다.
많은 리포지토리 또는 많은 하위 모듈이 있는 프로젝트의 경우 스냅샷 시스템으로 인해 느린 인덱싱 및 상당한 디스크 사용량이 발생할 수 있습니다. snapshot 옵션을 사용하여 스냅샷을 비활성화할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"snapshot": false
}
스냅샷을 비활성화하면 에이전트가 만든 변경 사항을 UI를 통해 롤백할 수 없습니다.
자동 업데이트
Dropstone은 시작할 때 새로운 업데이트를 자동으로 다운로드합니다. autoupdate 옵션으로 이를 비활성화할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"autoupdate": false
}
업데이트를 원하지 않지만 새 버전을 사용할 수 있을 때 알림을 받으려면 autoupdate를 "notify"로 설정합니다.
이는 Homebrew와 같은 패키지 관리자를 사용하여 설치된 경우에만 작동합니다.
포매터
formatter 옵션을 통해 코드 포매터를 활성화하고 구성할 수 있습니다. 포매터를 비활성화된 상태로 유지하려면 생략합니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
기본 제공 포매터를 활성화된 상태로 유지하면서 재정의 또는 사용자 정의 포매터를 구성하려면 객체를 사용합니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
LSP 서버
lsp 옵션을 통해 LSP 서버를 활성화하고 구성할 수 있습니다. LSP를 비활성화된 상태로 유지하려면 생략합니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
기본 제공 LSP 서버를 활성화된 상태로 유지하면서 재정의를 구성하려면 객체를 사용합니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
권한
기본적으로 dropstone은 명시적 승인 없이 모든 작업을 허용합니다. permission 옵션을 사용하여 이를 변경할 수 있습니다.
예를 들어, edit 및 bash 도구에 사용자 승인이 필요하도록 하려면:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
압축
compaction 옵션을 통해 컨텍스트 압축 동작을 제어할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- 컨텍스트가 가득 찼을 때 자동으로 세션 압축(기본값:true).prune- 토큰을 절약하기 위해 이전 도구 출력 제거(기본값:true).reserved- 압축을 위한 토큰 버퍼. 압축 중 오버플로우를 피하기 위해 충분한 윈도우 유지
감시자
watcher 옵션을 통해 파일 감시자 무시 패턴을 구성할 수 있습니다.
{
"$schema": "https://dropstone.io/schema/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}