Sync adalah fitur yang menghubungkan status Roblox Studio dengan file lokal, sehingga AI dapat membaca dan memodifikasi seluruh konteks proyek secara konsisten.
Mengapa Sync Penting
Tanpa Sync, AI hanya dapat menilai berdasarkan sebagian kode yang ditempelkan dalam percakapan. Dengan mengaktifkan Sync, AI bekerja berdasarkan keseluruhan proyek sehingga hal-hal berikut menjadi lebih mudah.
- Menerapkan refaktor secara konsisten di beberapa skrip
- Mengidentifikasi dengan cepat perubahan berisiko berdasarkan riwayat perubahan
- Menjaga arah yang jelas antara Studio dan lokal sebagai standar
Cara Kerja Dasar

- Full Sync: Sinkronisasi awal pohon instans Studio ke mirror lokal
- Incremental Sync: Hanya mencerminkan perubahan selanjutnya melalui pemantauan perubahan
- Pelacakan History/Status: Memeriksa perubahan apa yang dicerminkan kapan dan ke arah mana
Data Sync dibuat di bawah {projectRoot}/weppy-project-sync/place_{placeId}/explorer. WEPPY juga mencatat sourcemap per place di {projectRoot}/weppy-project-sync/place_{placeId}/sourcemap.json, dan mempertahankan file representatif root di {projectRoot}/weppy-project-sync/sourcemap.json.
Struktur Direktori Proyek dan Multi Place
WEPPY Sync membuat direktori weppy-project-sync/ di bawah root proyek dan menyimpan mirror tree terpisah per Place.
weppy-project-sync/
├── sourcemap.json # Sourcemap representatif root (jalur yang direkomendasikan luau-lsp)
├── .sync-config.json # Konfigurasi global (dibagikan oleh semua Place)
├── place_123456/ # Direktori per Place
│ ├── explorer/ # Mirror workspace (format nested v2)
│ │ ├── Workspace/
│ │ │ ├── _tree.json
│ │ │ ├── Part/
│ │ │ │ └── Part.props.json
│ │ │ └── MyScript/
│ │ │ └── MyScript.server.luau
│ │ └── ServerScriptService/
│ │ └── _tree.json
│ ├── sourcemap.json # Sourcemap per Place
│ ├── .sync-meta.json # Metadata Place
│ └── .sync-index.json # Indeks hash (version: 2)
└── place_789012/ # Place lain
└── ...
Setiap Place memiliki direktori place_XXXXX/ uniknya sendiri. Pada tier Pro, hingga 3 Place dapat disinkronisasi secara bersamaan, dan Place yang jarang digunakan dieviksi dari memori sesuai kebijakan LRU (data disk tetap dipertahankan). Berkat struktur ini, status sync tidak tercampur meskipun Anda berpindah antara beberapa game dalam root proyek yang sama.
Menjelajahi Data Sync di VSCode
Dengan menginstal ekstensi WEPPY Roblox Explorer, Anda dapat menjelajahi pohon instans yang tersinkronisasi dalam bentuk yang sama persis dengan Roblox Studio di dalam VSCode. Explorer membaca file sync yang dibuat di sini, dan jika server MCP lokal sedang berjalan, informasi status sync dan direction secara real-time ditampilkan tambahan.

- Menampilkan pohon layanan/instans dengan ikon kelas Roblox
- Klik file skrip untuk langsung mengeditnya
- Periksa perubahan/konflik dengan badge status Sync
Basic vs Pro
| Item | Basic | Pro |
|---|---|---|
| Arah sinkronisasi | Studio → Local | Dua arah |
| Direction per tipe | Tidak didukung | Didukung (Scripts / Values / Containers / Data / Services) |
| Apply Mode per tipe | Tidak didukung | Didukung (Auto / Manual) |
| API kueri status/riwayat | Tidak didukung | Didukung (status_current_place, history, progress) |
Penggunaan alat manage_sync | Tidak didukung | Didukung |
| Multi Place Sync | Tidak didukung | Didukung (maks. 3 Place) |
Target Sinkronisasi dan Aturan Pengecualian Default
Layanan target sinkronisasi default:
WorkspaceLightingReplicatedStorageServerStorageServerScriptServiceStarterGuiStarterPlayerStarterPackReplicatedFirstSoundServiceChatLocalizationService
Item yang dikecualikan secara default:
- Kelas:
Terrain,Camera - Jalur yang dilarang demi keamanan:
CoreGui,CorePackages,RobloxScript,RobloxScriptSecurity
Direction dan Apply Mode
Direction (Arah sinkronisasi per tipe)
forward: Studio → Localreverse: Local → Studiobidirectional: Dua arah
Tipe dikelola terpisah sebagai scripts, values, containers, data, services.
Apply Mode (Cara penerapan perubahan reverse)
manual: Pengguna mengkonfirmasi dan menerapkan sebelum direfleksikan ke Studioauto: Perubahan yang terdeteksi diterapkan secara otomatis
Pada Pro, Anda dapat mengontrol alur kerja secara lebih detail dengan mengatur Direction/Apply Mode yang berbeda per tipe.
Panduan Aksi manage_sync (Pro)
| Aksi | Deskripsi | Argumen Utama |
|---|---|---|
status_current_place | Periksa status sinkronisasi Place yang terhubung saat ini | - |
history | Kueri riwayat perubahan | placeId, query.limit, query.offset |
directions | Kueri Direction per tipe | placeId |
read_file | Baca file yang tersinkronisasi | placeId, instancePath |
write_file | Tulis file yang tersinkronisasi | placeId, instancePath, content |
progress | Periksa kemajuan/throughput real-time | placeId |
Alur Kerja yang Direkomendasikan
1) Memulai dengan Aman
- Pertama, selesaikan Full Sync untuk menjadikan status saat ini sebagai titik referensi.
- Di awal, operasikan dengan penerapan
manualuntuk mengurangi risiko perubahan.
2) Membuat Perubahan Bersama AI
- “Periksa status Sync, lalu ringkaskan hanya perubahan berisiko berdasarkan riwayat perubahan terbaru”
- “Refaktor hanya skrip di sisi
ServerScriptServiceterlebih dahulu, dan simpan riwayat perubahannya”
3) Menyelesaikan Konflik
Ketika perubahan terdeteksi di kedua sisi Studio dan lokal selama sinkronisasi dua arah, layar penyelesaian konflik berikut akan muncul.

- Studio Priority: Timpa menggunakan status sisi Studio sebagai standar
- Local Priority: Terapkan ke Studio menggunakan file lokal sebagai standar
- Per-File: Pilih sisi mana yang diprioritaskan secara individual per file
4) Memulihkan saat Terjadi Masalah
- Lacak perubahan terbaru dengan
history - Periksa file yang diperlukan dengan
read_file - Terapkan konten yang akan dipulihkan dengan
write_filedan verifikasi kembali status Studio
Format File (v2 nested directory)
Setiap instans Roblox disimpan sebagai direktorinya sendiri, dengan file meta yang terletak di dalamnya:
explorer/
├── Workspace/
│ ├── _tree.json
│ ├── Part/
│ │ └── Part.props.json
│ ├── MyScript/
│ │ └── MyScript.server.luau
│ └── Coins/
│ └── Coins.value.json
Konvensi penamaan file:
- Properti:
{Name}/{Name}.props.json - Skrip:
{Name}/{Name}.server.luau/.client.luau/.module.luau - Nilai:
{Name}/{Name}.value.json
Instans dengan nama yang sama dibedakan dengan menambahkan sufiks ~N pada direktori (contoh: Part~2/Part.props.json).
Jika nama mengandung ~, karakter tersebut di-escape menjadi ~~ (contoh: Part~2 → Part~~2/). Aturan Odd-Count Tilde: hanya diinterpretasikan sebagai sufiks collision ketika jumlah tilde pada ~+N di akhir adalah ganjil.
Integrasi luau-lsp
WEPPY Sync dapat secara otomatis menghasilkan file sourcemap yang dibutuhkan luau-lsp, sehingga Anda dapat menggunakan fitur editor yang mengenali Roblox tanpa harus mengkonfigurasi proyek Rojo secara terpisah.
Setelah Full Sync selesai, WEPPY menghasilkan file berikut:
- Sourcemap Place:
weppy-project-sync/place_<id>/sourcemap.json - File representatif root:
weppy-project-sync/sourcemap.json
Ketika luau-lsp membaca sourcemap WEPPY, hal-hal berikut akan ditingkatkan:
- Pelengkapan otomatis
game.* - Navigasi berdasarkan skrip yang tersinkronisasi
- Resolusi
requiredi antara skrip yang tersinkronisasi
Metode Konfigurasi yang Direkomendasikan
- Jalankan Full Sync sekali agar WEPPY membuat
weppy-project-sync/sourcemap.json. - Atur konfigurasi sourcemap
luau-lspeditor agar mengarah keweppy-project-sync/sourcemap.json. - Jika Anda dapat menonaktifkan pembuatan Rojo otomatis di klien yang Anda gunakan, atur
luau-lsp.sourcemap.autogeneratekefalse.
Contoh konfigurasi VSCode:
{
"luau-lsp.sourcemap.enabled": true,
"luau-lsp.sourcemap.autogenerate": false,
"luau-lsp.sourcemap.sourcemapFile": "weppy-project-sync/sourcemap.json"
}
weppy-project-sync/sourcemap.json mengikuti place representatif proyek saat ini. Jika Anda ingin menggunakan place tertentu secara tetap, atur luau-lsp agar langsung membaca weppy-project-sync/place_<id>/sourcemap.json dari place tersebut.