Dropstone Docs

설정

Dropstone JSON 설정 사용하기.

JSON 설정 파일을 사용하여 Dropstone을 구성할 수 있습니다.


형식

Dropstone은 JSONJSONC(주석이 있는 JSON) 형식을 모두 지원합니다.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "autoupdate": true,
  "server": {
    "port": 4096,
  },
}

위치

설정을 여러 위치에 배치할 수 있으며 각각 다른 우선순위를 가집니다.

Note:

설정 파일은 병합되며 대체되지 않습니다. 다음 설정 위치의 설정이 결합됩니다. 나중의 설정이 충돌하는 키에 대해서만 이전 설정을 재정의합니다. 모든 설정의 충돌하지 않는 설정은 유지됩니다.

예를 들어, 전역 설정에서 autoupdate: true를 설정하고 프로젝트 설정에서 model: "dropstone/dropstone-pro"을 설정하면, 최종 설정에는 두 설정이 모두 포함됩니다.


우선순위 순서

설정 소스는 다음 순서로 로드됩니다(나중의 소스가 이전 소스를 재정의함):

  1. 원격 설정 (.well-known/dropstone에서) - 조직 기본값
  2. 전역 설정 (~/.config/dropstone/dropstone.json) - 사용자 기본 설정
  3. 사용자 정의 설정 (DROPSTONE_CONFIG 환경 변수) - 사용자 정의 재정의
  4. 프로젝트 설정 (프로젝트의 dropstone.json) - 프로젝트별 설정
  5. .dropstone 디렉토리 - 에이전트, 명령, 플러그인
  6. 관리되는 설정 파일 (macOS의 /Library/Application Support/dropstone/) - 관리자 제어
  7. 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은 다음 경로를 확인합니다:

  1. /Library/Managed Preferences/<user>/ai.dropstone.managed.plist
  2. /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: .mobileconfigmdm.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 servedropstone 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
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/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
    }
  }
}

LSP 서버에 대해 자세히 알아보기.


권한

기본적으로 dropstone은 명시적 승인 없이 모든 작업을 허용합니다. permission 옵션을 사용하여 이를 변경할 수 있습니다.

예를 들어, editbash 도구에 사용자 승인이 필요하도록 하려면:

{
  "$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/**"]
  }
}
Ctrl+I