Dropstone Docs

Konfigurasi

Menggunakan konfigurasi JSON Dropstone.

Anda dapat mengonfigurasi Dropstone menggunakan file konfigurasi JSON.


Format

Dropstone mendukung format JSON dan JSONC (JSON dengan Komentar).

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

Lokasi

Anda dapat menempatkan konfigurasi Anda di beberapa lokasi berbeda dan mereka memiliki urutan prioritas yang berbeda.

Note:

File konfigurasi digabungkan bersama, bukan diganti. Pengaturan dari lokasi konfigurasi berikut digabungkan. Konfigurasi yang lebih baru hanya mengganti yang lebih lama untuk kunci yang bertentangan. Pengaturan yang tidak bertentangan dari semua konfigurasi dipertahankan.

Misalnya, jika konfigurasi global Anda menetapkan autoupdate: true dan konfigurasi proyek Anda menetapkan model: "dropstone/dropstone-pro", konfigurasi akhir akan mencakup kedua pengaturan tersebut.


Urutan prioritas

Sumber konfigurasi dimuat dalam urutan ini (sumber yang lebih baru mengganti yang lebih lama):

  1. Konfigurasi jarak jauh (dari .well-known/dropstone) - default organisasi
  2. Konfigurasi global (~/.config/dropstone/dropstone.json) - preferensi pengguna
  3. Konfigurasi khusus (variabel env DROPSTONE_CONFIG) - penggantian khusus
  4. Konfigurasi proyek (dropstone.json di proyek) - pengaturan khusus proyek
  5. Direktori .dropstone - agents, commands, plugins
  6. File konfigurasi terkelola (/Library/Application Support/dropstone/ di macOS) - dikendalikan admin
  7. Preferensi terkelola macOS (.mobileconfig melalui MDM) - prioritas tertinggi, tidak dapat ditimpa pengguna

Ini berarti konfigurasi proyek dapat mengganti default global, dan konfigurasi global dapat mengganti default organisasi jarak jauh. Pengaturan terkelola mengganti segalanya.

Note:

Direktori .dropstone dan ~/.config/dropstone menggunakan nama plural untuk subdirektori: agents/, commands/, modes/, plugins/, skills/, tools/. Nama singular (misalnya agent/) juga didukung untuk kompatibilitas mundur.


Jarak jauh

Organisasi dapat menyediakan konfigurasi default melalui endpoint .well-known/dropstone di domain mereka. Dropstone mengambil ini secara otomatis pada login pertama untuk pengguna yang akunnya terdaftar dengan organisasi tersebut.

Konfigurasi jarak jauh dimuat terlebih dahulu, berfungsi sebagai lapisan dasar. Semua sumber konfigurasi lainnya (global, proyek) dapat mengganti default ini.

Misalnya, jika organisasi Anda menyediakan server MCP yang dinonaktifkan secara default:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": false
    }
  }
}

Anda dapat mengaktifkan server tertentu dalam konfigurasi lokal Anda:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

Global

Tempatkan konfigurasi Dropstone global Anda di ~/.config/dropstone/dropstone.json. Gunakan konfigurasi global untuk preferensi seluruh pengguna seperti model dan izin.

Untuk pengaturan tingkat sesi (keybind, scroll, penangkapan mouse), gunakan ~/.config/dropstone/tui.json.

Konfigurasi global mengganti default organisasi jarak jauh.


Per proyek

Tambahkan dropstone.json di root proyek Anda. Konfigurasi proyek memiliki prioritas tertinggi di antara file konfigurasi standar - ini mengganti konfigurasi global dan jarak jauh.

Untuk pengaturan sesi khusus proyek, tambahkan tui.json di sebelahnya.

Tip:

Tempatkan konfigurasi khusus proyek di root proyek Anda.

Ketika Dropstone dimulai, ia mencari file konfigurasi di direktori saat ini atau melintasi ke direktori Git terdekat.

Ini juga aman untuk diperiksa ke Git dan menggunakan skema yang sama dengan yang global.


Jalur khusus

Tentukan jalur file konfigurasi khusus menggunakan variabel lingkungan DROPSTONE_CONFIG.

export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"

Konfigurasi khusus dimuat antara konfigurasi global dan proyek dalam urutan prioritas.


Pengaturan terkelola

Organisasi dapat memberlakukan konfigurasi yang tidak dapat ditimpa pengguna. Pengaturan terkelola dimuat pada tingkat prioritas tertinggi.

Berbasis file

Letakkan file dropstone.json atau dropstone.jsonc di direktori konfigurasi terkelola sistem:

PlatformJalur
macOS/Library/Application Support/dropstone/
Linux/etc/dropstone/
Windows%ProgramData%\dropstone

Direktori ini memerlukan akses admin/root untuk ditulis, jadi pengguna tidak dapat memodifikasinya.

Preferensi terkelola macOS

Di macOS, Dropstone membaca preferensi terkelola dari domain preferensi ai.dropstone.managed. Terapkan .mobileconfig melalui MDM (Jamf, Kandji, FleetDM) dan pengaturan diberlakukan secara otomatis.

Dropstone memeriksa jalur ini:

  1. /Library/Managed Preferences/<user>/ai.dropstone.managed.plist
  2. /Library/Managed Preferences/ai.dropstone.managed.plist

Kunci plist memetakan langsung ke bidang dropstone.json. Kunci metadata MDM (PayloadUUID, PayloadType, dll.) dihapus secara otomatis.

Membuat .mobileconfig

Gunakan ai.dropstone.managed PayloadType. Kunci konfigurasi Dropstone masuk langsung ke dict payload:

<?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>

Buat UUID unik dengan uuidgen. Sesuaikan pengaturan untuk memenuhi persyaratan organisasi Anda.

Penerapan melalui MDM

  • Jamf Pro: Computers > Configuration Profiles > Upload > scope ke perangkat target atau smart groups
  • FleetDM: Tambahkan .mobileconfig ke repo gitops Anda di bawah mdm.macos_settings.custom_settings dan jalankan fleetctl apply

Verifikasi di perangkat

Klik dua kali .mobileconfig untuk memasang secara lokal untuk pengujian (ditampilkan di System Settings > Privacy & Security > Profiles), kemudian jalankan:

dropstone debug config

Semua kunci preferensi terkelola muncul dalam konfigurasi yang diselesaikan dan tidak dapat ditimpa oleh konfigurasi pengguna atau proyek.


Skema

Skema konfigurasi utama didefinisikan di dropstone.io/config.json.

Konfigurasi tingkat sesi (tui.json) menggunakan dropstone.io/tui.json.

Editor Anda harus dapat memvalidasi dan melengkapi otomatis berdasarkan skema.


Konfigurasi sesi

Gunakan file tui.json (atau tui.jsonc) khusus untuk pengaturan tingkat sesi: perilaku scroll, penangkapan mouse, rendering diff, dan sebagainya.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "scroll_speed": 3,
  "scroll_acceleration": {
    "enabled": true
  },
  "diff_style": "auto",
  "mouse": true
}

Kunci theme, keybinds, dan terkait sesi yang lebih lama di dropstone.json sudah usang dan secara otomatis dimigrasikan jika memungkinkan.


Server

Anda dapat mengonfigurasi pengaturan server untuk perintah dropstone serve dan dropstone web melalui opsi 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"]
  }
}

Opsi yang tersedia:

  • port - Port untuk mendengarkan.
  • hostname - Hostname untuk mendengarkan. Ketika mdns diaktifkan dan tidak ada hostname yang ditetapkan, default ke 0.0.0.0.
  • mdns - Aktifkan penemuan layanan mDNS. Ini memungkinkan perangkat lain di jaringan untuk menemukan server Dropstone Anda.
  • mdnsDomain - Nama domain khusus untuk layanan mDNS. Default ke dropstone.local. Berguna untuk menjalankan beberapa instance di jaringan yang sama.
  • cors - Asal tambahan untuk diizinkan untuk CORS saat menggunakan server HTTP dari klien berbasis browser. Nilai harus berupa asal lengkap (skema + host + port opsional), misalnya https://app.example.com.

Pelajari lebih lanjut tentang server di sini.


Shell

Anda dapat mengonfigurasi shell yang digunakan untuk terminal interaktif menggunakan opsi shell. Shell yang kompatibel juga digunakan untuk panggilan alat agent.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "shell": "pwsh"
}

Jika tidak ditentukan, Dropstone akan secara otomatis menemukan dan menggunakan default yang masuk akal berdasarkan sistem operasi Anda (misalnya pwsh atau cmd.exe di Windows, /bin/zsh atau /bin/bash di macOS/Linux). Anda dapat memberikan jalur absolut atau nama pendek.


Tools

Anda dapat mengelola alat yang dapat digunakan LLM melalui opsi tools.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "tools": {
    "write": false,
    "bash": false
  }
}

Pelajari lebih lanjut tentang tools di sini.


Model

Tetapkan model default Anda dengan opsi model. Dropstone dilengkapi dengan tiga tingkat:

TingkatID Model
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/dropstone-heavy
{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro"
}

Tetapkan kedalaman penalaran default dengan variant:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "variant": "high"
}

Nilai variant yang valid adalah low, medium, high, xhigh. Lihat Models untuk rincian lengkapnya.

Opsi small_model mengonfigurasi model terpisah untuk tugas-tugas ringan seperti pembuatan judul. Secara default Dropstone memilih tingkat yang sesuai; Anda dapat menimpanya secara eksplisit:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "small_model": "dropstone/dropstone-fast"
}

Agents

Anda dapat mengonfigurasi agent khusus untuk tugas-tugas tertentu melalui opsi agent.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "agent": {
    "code-reviewer": {
      "description": "Meninjau kode untuk praktik terbaik dan masalah potensial",
      "model": "dropstone/dropstone-pro",
      "prompt": "Anda adalah peninjau kode. Fokus pada keamanan, kinerja, dan kemudahan pemeliharaan.",
      "tools": {
        // Nonaktifkan alat modifikasi file untuk agent hanya tinjauan
        "write": false,
        "edit": false,
      },
    },
  },
}

Anda juga dapat mendefinisikan agent menggunakan file markdown di ~/.config/dropstone/agents/ atau .dropstone/agents/. Pelajari lebih lanjut di sini.


Agent default

Anda dapat mengatur agent default menggunakan opsi default_agent. Ini menentukan agent mana yang digunakan ketika tidak ada yang ditentukan secara eksplisit.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "default_agent": "plan"
}

Agent default harus berupa agent utama (bukan subagent). Ini dapat berupa agent bawaan seperti "build" atau "plan", atau agent khusus yang telah Anda tentukan. Jika agent yang ditentukan tidak ada atau merupakan subagent, Dropstone akan kembali ke "build" dengan peringatan.

Pengaturan ini berlaku di semua antarmuka: sesi interaktif, run sekali jalan (dropstone run), dan GitHub Action.


Commands

Anda dapat mengonfigurasi perintah khusus untuk tugas-tugas berulang melalui opsi command.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "command": {
    "test": {
      "template": "Jalankan rangkaian tes lengkap dengan laporan cakupan dan tampilkan kegagalan apa pun.\nFokus pada tes yang gagal dan sarankan perbaikan.",
      "description": "Jalankan tes dengan cakupan",
      "agent": "build",
      "model": "dropstone/dropstone-fast",
    },
    "component": {
      "template": "Buat komponen React baru bernama $ARGUMENTS dengan dukungan TypeScript.\nSertakan pengetikan yang tepat dan struktur dasar.",
      "description": "Buat komponen baru",
    },
  },
}

Anda juga dapat mendefinisikan perintah menggunakan file markdown di ~/.config/dropstone/commands/ atau .dropstone/commands/. Pelajari lebih lanjut di sini.


Keymap

Sesuaikan pintasan keyboard di tui.json dengan keymap.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "keymap": {
    "sections": {
      "global": {
        "command.palette.show": "ctrl+p"
      }
    }
  }
}

keymap digabungkan dengan default bawaan, jadi Anda hanya perlu mengonfigurasi pintasan yang ingin Anda ubah.

Bidang keybinds yang lebih lama sudah usang dan hanya berlaku ketika keymap tidak ada.

Pelajari lebih lanjut di sini.


Snapshot

Dropstone menggunakan snapshot untuk melacak perubahan file selama operasi agent, memungkinkan Anda untuk membatalkan dan mengembalikan perubahan dalam sesi. Snapshot diaktifkan secara default.

Untuk repositori besar atau proyek dengan banyak submodul, sistem snapshot dapat menyebabkan pengindeksan lambat dan penggunaan disk yang signifikan. Anda dapat menonaktifkan snapshot menggunakan opsi snapshot.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "snapshot": false
}

Perhatikan bahwa menonaktifkan snapshot berarti perubahan yang dibuat oleh agent tidak dapat dikembalikan melalui UI.


Autoupdate

Dropstone akan secara otomatis mengunduh pembaruan baru saat dimulai. Anda dapat menonaktifkan ini dengan opsi autoupdate.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "autoupdate": false
}

Jika Anda tidak menginginkan pembaruan tetapi ingin diberitahu ketika versi baru tersedia, atur autoupdate ke "notify". Perhatikan bahwa ini hanya berfungsi jika tidak diinstal menggunakan pengelola paket seperti Homebrew.


Formatters

Anda dapat mengaktifkan dan mengonfigurasi pemformat kode melalui opsi formatter. Hilangkan untuk membuat pemformat tetap dinonaktifkan.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": true
}

Gunakan objek untuk membuat bawaan tetap diaktifkan sambil mengonfigurasi penggantian atau pemformat khusus.

{
  "$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"]
    }
  }
}

Pelajari lebih lanjut tentang pemformat di sini.


Server LSP

Anda dapat mengaktifkan dan mengonfigurasi server LSP melalui opsi lsp. Hilangkan untuk membuat LSP tetap dinonaktifkan.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

Gunakan objek untuk membuat bawaan tetap diaktifkan sambil mengonfigurasi penggantian atau server LSP khusus.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

Pelajari lebih lanjut tentang server LSP di sini.


Permissions

Secara default, dropstone memungkinkan semua operasi tanpa memerlukan persetujuan eksplisit. Anda dapat mengubah ini menggunakan opsi permission.

Misalnya, untuk memastikan bahwa alat edit dan bash memerlukan persetujuan pengguna:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}

Pelajari lebih lanjut tentang izin di sini.


Compaction

Anda dapat mengontrol perilaku pemadatan konteks melalui opsi compaction.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}
  • auto - Secara otomatis memadatkan sesi ketika konteks penuh (default: true).
  • prune - Hapus keluaran alat lama untuk menghemat token (default: true).
  • reserved - Buffer token untuk pemadatan. Meninggalkan jendela yang cukup untuk menghindari overflow selama pemadatan

Watcher

Anda dapat mengonfigurasi pola pengabaian pengawas file melalui opsi watcher.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "watcher": {
    "ignore": ["node_modules/**", "dist/**", ".git/**"]
  }
}

Pola mengikuti sintaks glob. Gunakan ini untuk mengecualikan direktori yang bising dari pengawasan file.


Server MCP

Anda dapat mengonfigurasi server MCP yang ingin Anda gunakan melalui opsi mcp.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "mcp": {}
}

Pelajari lebih lanjut di sini.


Plugins

Plugins memperluas Dropstone dengan alat khusus, hook, dan integrasi.

Tempatkan file plugin di .dropstone/plugins/ atau ~/.config/dropstone/plugins/. Anda juga dapat memuat plugin dari npm melalui opsi plugin.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}

Pelajari lebih lanjut di sini.


Instructions

Anda dapat mengonfigurasi instruksi untuk model yang Anda gunakan melalui opsi instructions.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}

Ini mengambil array jalur dan pola glob ke file instruksi. Pelajari lebih lanjut tentang aturan di sini.


Experimental

Kunci experimental berisi opsi yang sedang dalam pengembangan aktif.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "experimental": {}
}

Tidak Stabil:

Opsi eksperimental tidak stabil. Mereka dapat berubah atau dihapus tanpa pemberitahuan.


Variables

Anda dapat menggunakan substitusi variabel dalam file konfigurasi Anda untuk mereferensikan variabel lingkungan dan konten file.


Env vars

Gunakan {env:VARIABLE_NAME} untuk mengganti variabel lingkungan:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "{env:DROPSTONE_MODEL}"
}

Jika variabel lingkungan tidak diatur, itu akan diganti dengan string kosong.


Files

Gunakan {file:path/to/file} untuk mengganti konten file:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["./custom-instructions.md"]
}

Jalur file dapat berupa:

  • Relatif terhadap direktori file konfigurasi
  • Atau jalur absolut dimulai dengan / atau ~

Ini berguna untuk:

  • Menyertakan file instruksi besar tanpa mengacaukan konfigurasi Anda.
  • Berbagi cuplikan konfigurasi umum di beberapa file konfigurasi.
Ctrl+I