Config
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 yang berbeda dan lokasi-lokasi tersebut memiliki urutan prioritas yang berbeda.
Note
File konfigurasi digabungkan bersama, bukan diganti. Pengaturan dari lokasi konfigurasi berikut digabungkan. Konfigurasi yang lebih akhir hanya menimpa konfigurasi sebelumnya untuk kunci yang bertentangan. Pengaturan yang tidak bertentangan dari semua konfigurasi tetap 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 akhir menimpa sumber yang lebih awal):
- Konfigurasi jarak jauh (dari
.well-known/dropstone) - default organisasi - Konfigurasi global (
~/.config/dropstone/dropstone.json) - preferensi pengguna - Konfigurasi kustom (variabel env
DROPSTONE_CONFIG) - penimpaan kustom - Konfigurasi proyek (
dropstone.jsondi proyek) - pengaturan khusus proyek - Direktori
.dropstone- agen, perintah, plugin - File konfigurasi terkelola (
/Library/Application Support/dropstone/di macOS) - dikontrol admin - Preferensi terkelola macOS (
.mobileconfigmelalui MDM) - prioritas tertinggi, tidak dapat ditimpa oleh pengguna
Ini berarti konfigurasi proyek dapat menimpa default global, dan konfigurasi global dapat menimpa default organisasi jarak jauh. Pengaturan terkelola menimpa semuanya.
Note
Direktori .dropstone dan ~/.config/dropstone menggunakan nama jamak untuk subdirektori: agents/, commands/, modes/, plugins/, skills/, tools/. Nama tunggal (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 saat masuk pertama kali untuk pengguna yang akunnya terdaftar dengan organisasi tersebut.
Konfigurasi jarak jauh dimuat pertama kali, berfungsi sebagai lapisan dasar. Semua sumber konfigurasi lainnya (global, proyek) dapat menimpa 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 di 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 menimpa default organisasi jarak jauh.
Per proyek
Tambahkan dropstone.json di root proyek Anda. Konfigurasi proyek memiliki prioritas tertinggi di antara file konfigurasi standar - ini menimpa konfigurasi global dan jarak jauh.
Untuk pengaturan sesi khusus proyek, tambahkan tui.json di sampingnya.
Tip
Tempatkan konfigurasi khusus proyek di root proyek Anda.
Saat Dropstone dimulai, ia mencari file konfigurasi di direktori saat ini atau menelusuri ke atas hingga direktori Git terdekat.
Ini juga aman untuk diperiksa ke Git dan menggunakan skema yang sama dengan yang global.
Jalur kustom
Tentukan jalur file konfigurasi kustom menggunakan variabel lingkungan DROPSTONE_CONFIG.
export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"
Konfigurasi kustom dimuat antara konfigurasi global dan proyek dalam urutan prioritas.
Pengaturan terkelola
Organisasi dapat memberlakukan konfigurasi yang tidak dapat ditimpa oleh pengguna. Pengaturan terkelola dimuat di tingkat prioritas tertinggi.
Berbasis file
Letakkan file dropstone.json atau dropstone.jsonc di direktori konfigurasi terkelola sistem:
| Platform | Path |
|---|---|
| macOS | /Library/Application Support/dropstone/ |
| Linux | /etc/dropstone/ |
| Windows | %ProgramData%\dropstone |
Direktori ini memerlukan akses admin/root untuk menulis, sehingga 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 akan diberlakukan secara otomatis.
Dropstone memeriksa jalur berikut:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/Library/Managed Preferences/ai.dropstone.managed.plist
Kunci plist dipetakan langsung ke bidang dropstone.json. Kunci metadata MDM (PayloadUUID, PayloadType, dll.) dihapus secara otomatis.
Membuat .mobileconfig
Gunakan PayloadType ai.dropstone.managed. 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>
Hasilkan UUID unik dengan uuidgen. Sesuaikan pengaturan agar sesuai dengan kebutuhan organisasi Anda.
Menyebarkan melalui MDM
- Jamf Pro: Computers > Configuration Profiles > Upload > targetkan ke perangkat atau grup pintar
- FleetDM: Tambahkan
.mobileconfigke repo gitops Anda di bawahmdm.macos_settings.custom_settingsdan jalankanfleetctl apply
Memverifikasi di perangkat
Klik dua kali .mobileconfig untuk menginstal secara lokal untuk pengujian (muncul di System Settings > Privacy & Security > Profiles), lalu jalankan:
dropstone debug config
Semua kunci preferensi terkelola muncul di 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 seharusnya 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 kunci terkait sesi lama di dropstone.json tidak digunakan lagi 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. Saatmdnsdiaktifkan dan tidak ada hostname yang ditetapkan, defaultnya adalah0.0.0.0.mdns- Aktifkan penemuan layanan mDNS. Ini memungkinkan perangkat lain di jaringan menemukan server Dropstone Anda.mdnsDomain- Nama domain kustom untuk layanan mDNS. Defaultnya adalahdropstone.local. Berguna untuk menjalankan beberapa instance di jaringan yang sama.cors- Origin tambahan yang diizinkan untuk CORS saat menggunakan server HTTP dari klien berbasis browser. Nilai harus berupa origin lengkap (skema + host + port opsional), misalnyahttps://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 agen.
{
"$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.
Alat
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 alat di sini.
Model
Tetapkan model default Anda dengan opsi model. Dropstone menyediakan tiga tingkatan:
| Tingkat | Model ID |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/dropstone-heavy |
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro"
}
Sematkan 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 ringan seperti pembuatan judul. Secara default Dropstone memilih tingkatan yang sesuai; Anda dapat menimpanya secara eksplisit:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "dropstone/dropstone-pro",
"small_model": "dropstone/dropstone-fast"
}
Agen
Anda dapat mengonfigurasi agen khusus untuk tugas tertentu melalui opsi agent.
{
"$schema": "https://dropstone.io/schema/config.json",
"agent": {
"code-reviewer": {
"description": "Meninjau kode untuk praktik terbaik dan potensi masalah",
"model": "dropstone/dropstone-pro",
"prompt": "Anda adalah peninjau kode. Fokus pada keamanan, kinerja, dan keterpeliharaan.",
"tools": {
// Nonaktifkan alat modifikasi file untuk agen khusus tinjauan
"write": false,
"edit": false,
},
},
},
}
Anda juga dapat mendefinisikan agen menggunakan file markdown di ~/.config/dropstone/agents/ atau .dropstone/agents/. Pelajari lebih lanjut di sini.
Agen default
Anda dapat menetapkan agen default menggunakan opsi default_agent. Ini menentukan agen mana yang digunakan ketika tidak ada yang ditentukan secara eksplisit.
{
"$schema": "https://dropstone.io/schema/config.json",
"default_agent": "plan"
}
Agen default harus merupakan agen utama (bukan subagen). Ini bisa berupa agen bawaan seperti "build" atau "plan", atau agen kustom yang telah Anda definisikan. Jika agen yang ditentukan tidak ada atau merupakan subagen, Dropstone akan kembali ke "build" dengan peringatan.
Pengaturan ini berlaku di semua antarmuka: sesi interaktif, eksekusi sekali jalan (dropstone run), dan GitHub Action.
Perintah
Anda dapat mengonfigurasi perintah kustom untuk tugas berulang melalui opsi command.
{
"$schema": "https://dropstone.io/schema/config.json",
"command": {
"test": {
"template": "Jalankan rangkaian pengujian lengkap dengan laporan cakupan dan tampilkan kegagalan apa pun.\nFokus pada pengujian yang gagal dan sarankan perbaikan.",
"description": "Menjalankan pengujian 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": "Membuat 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, sehingga Anda hanya perlu mengonfigurasi pintasan yang ingin diubah.
Bidang keybinds yang lebih lama tidak digunakan lagi dan hanya berlaku ketika keymap tidak ada.
Pelajari lebih lanjut di sini.
Snapshot
Dropstone menggunakan snapshot untuk melacak perubahan file selama operasi agen, memungkinkan Anda 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 agen tidak dapat diputar kembali melalui UI.
Pembaruan otomatis
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 diberi tahu saat versi baru tersedia, atur autoupdate ke "notify".
Perhatikan bahwa ini hanya berfungsi jika tidak diinstal menggunakan manajer paket seperti Homebrew.
Formatter
Anda dapat mengaktifkan dan mengonfigurasi formatter kode melalui opsi formatter. Hilangkan untuk menjaga formatter tetap dinonaktifkan.
{
"$schema": "https://dropstone.io/schema/config.json",
"formatter": true
}
Gunakan objek untuk menjaga bawaan tetap aktif sambil mengonfigurasi penimpaan atau formatter kustom.
{
"$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 formatter di sini.
Server LSP
Anda dapat mengaktifkan dan mengonfigurasi server LSP melalui opsi lsp. Hilangkan untuk menjaga LSP tetap dinonaktifkan.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Gunakan objek untuk menjaga bawaan tetap aktif sambil mengonfigurasi penimpaan atau server LSP kustom.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Pelajari lebih lanjut tentang server LSP di sini.
Izin
Secara default, dropstone mengizinkan 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.
Kompaksi
Anda dapat mengontrol perilaku kompaksi konteks melalui opsi compaction.
{
"$schema": "https://dropstone.io/schema/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
auto- Secara otomatis memadatkan sesi saat konteks penuh (default:true).prune- Menghapus output alat lama untuk menghemat token (default:true).reserved- Buffer token untuk kompaksi. Menyisakan jendela yang cukup untuk menghindari luapan selama kompaksi.
Watcher
Anda dapat mengonfigurasi pola abaikan watcher 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 pemantauan 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.
Plugin
Plugin memperluas Dropstone dengan alat, hook, dan integrasi kustom.
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.
Instruksi
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.
Eksperimental
Kunci experimental berisi opsi yang sedang dalam pengembangan aktif.
{
"$schema": "https://dropstone.io/schema/config.json",
"experimental": {}
}
Tidak stabil
Opsi eksperimental tidak stabil. Opsi tersebut dapat berubah atau dihapus tanpa pemberitahuan.
Variabel
Anda dapat menggunakan substitusi variabel di file konfigurasi Anda untuk mereferensikan variabel lingkungan dan konten file.
Variabel env
Gunakan {env:NAMA_VARIABEL} untuk mengganti variabel lingkungan:
{
"$schema": "https://dropstone.io/schema/config.json",
"model": "{env:DROPSTONE_MODEL}"
}
Jika variabel lingkungan tidak diatur, variabel tersebut akan diganti dengan string kosong.
File
Gunakan {file:path/ke/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 yang dimulai dengan
/atau~
Ini berguna untuk:
- Menyertakan file instruksi besar tanpa mengacaukan konfigurasi Anda.
- Berbagi cuplikan konfigurasi umum di beberapa file konfigurasi.