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):
- Konfigurasi jarak jauh (dari
.well-known/dropstone) - default organisasi - Konfigurasi global (
~/.config/dropstone/dropstone.json) - preferensi pengguna - Konfigurasi khusus (variabel env
DROPSTONE_CONFIG) - penggantian khusus - Konfigurasi proyek (
dropstone.jsondi proyek) - pengaturan khusus proyek - Direktori
.dropstone- agents, commands, plugins - File konfigurasi terkelola (
/Library/Application Support/dropstone/di macOS) - dikendalikan admin - Preferensi terkelola macOS (
.mobileconfigmelalui 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:
| Platform | Jalur |
|---|---|
| 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:
/Library/Managed Preferences/<user>/ai.dropstone.managed.plist/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
.mobileconfigke repo gitops Anda di bawahmdm.macos_settings.custom_settingsdan jalankanfleetctl 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. Ketikamdnsdiaktifkan dan tidak ada hostname yang ditetapkan, default ke0.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 kedropstone.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), 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 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:
| Tingkat | ID Model |
|---|---|
| Fast | dropstone/dropstone-fast |
| Pro | dropstone/dropstone-pro |
| Heavy | dropstone/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.