CompanionRank
Home / Blog / Impor & Portabilitas Kartu Karakter
Panduan

Impor dan Portabilitas Kartu Karakter: Apa yang Benar-Benar Ikut Pindah

Kartu karakter terlihat seperti berkas gambar biasa, dan justru di situlah triknya: persona disimpan sebagai JSON yang disembunyikan di dalam PNG. Desain itulah yang membuat kartu bisa berpindah antaraplikasi — sekaligus alasan sebagian isi karakter diam-diam hilang di tengah jalan.

Terakhir diverifikasi: Agustus 2026Penulis: Tim Redaksi CompanionRankWaktu baca: ~7 menit
Impor & Portabilitas Kartu Karakter
Ringkasnya: Kartu karakter adalah berkas PNG dengan JSON persona tertanam di dalam sebuah chunk teks. Ada tiga generasi spesifikasi — V1 (enam kolom), V2 (menambah system prompt, lorebook, sapaan alternatif, extensions) dan V3 (menambah aset, dekorator, catatan multibahasa, disimpan di chunk berbeda) — ditambah CHARX, wadah ZIP untuk kartu yang membawa gambar dan audio. Deskripsi inti dan pesan pembuka hampir selalu ikut pindah. Lorebook, variasi sapaan, ilustrasi ekspresi, dan tambahan khusus aplikasi hanya ikut kalau aplikasi penerima mendukung generasi tersebut. Riwayat chat tidak pernah ikut, karena memang tidak pernah ada di dalam kartu.

Memindahkan karakter antaraplikasi berbeda dengan memindahkan datamu keluar dari sebuah aplikasi. Percakapan, memori, dan pengaturan ada di basis data layanan; karakter biasanya berupa artefak mandiri yang bisa kamu pegang sebagai berkas. Perbedaan itulah yang membuat kartu layak dipahami — kartu yang benar-benar kamu miliki adalah satu-satunya bagian dari setup-mu yang bertahan ketika sebuah aplikasi tutup, mengubah harga, atau berubah menjadi sesuatu yang tak lagi ingin kamu pakai.

Kartu karakter sebagai sebuah berkas

Menurut spesifikasi komunitas, kartu adalah berkas PNG (atau APNG) biasa dengan definisi karakter ditulis ke dalam chunk tEXt — blok teks berlabel yang diabaikan penampil gambar tetapi dibaca aplikasi yang mengenali kartu. JSON-nya disimpan dalam UTF-8 yang dikodekan base64. Kartu versi 1 dan 2 memakai chunk bernama chara; kartu versi 3 memakai chunk terpisah bernama ccv3. Sebagian aplikasi juga mengizinkanmu mengekspor objek yang sama sebagai berkas .json polos, yang isinya identik tetapi tanpa gambar avatar.

Spesifikasi V3 menambahkan wadah kedua, CHARX (ekstensi file .charx): arsip ZIP dengan card.json di akar dan direktori assets/ di sebelahnya, dirujuk dari kartu lewat URI embeded://. CHARX ada karena kartu modern bisa membawa satu set gambar ekspresi, ilustrasi latar, atau audio — dan tak satu pun dari itu muat di dalam chunk teks pada ukuran yang masuk akal.

Konsekuensi praktis dari desain dua chunk ini: sebuah kartu bisa tampak lengkap sekaligus kosong, tergantung siapa yang membacanya. Aplikasi yang hanya mengenal chunk chara tidak melihat apa pun di berkas yang murni V3. Dalam praktiknya, perkakas yang menulis V3 umumnya menulis kedua chunk sekaligus supaya satu berkas tetap terbuka di klien lama maupun baru — tetapi itu kebaikan hati aplikasi pengekspor, bukan jaminan formatnya.

Tiga generasi, kolom demi kolom

Mengetahui generasi kartumu memberi tahu apa saja yang mungkin selamat saat impor, bahkan sebelum kamu mengujinya.

FormatTempatnyaIsinyaBatas utama
V1chunk charaEnam kolom datar: nama, deskripsi, kepribadian, skenario, pesan pertama, contoh dialogTanpa lorebook, tanpa system prompt, tanpa variasi sapaan
V2chunk chara, kolom bersarang di bawah dataSemua kolom V1 plus catatan pembuat, system prompt, instruksi pasca-riwayat, sapaan alternatif, character book tertanam, tag, pembuat, versi karakter, dan objek extensions bebas bentukTanpa daftar aset; extensions memang bersifat khas aplikasi
V3chunk ccv3Semua isi V2 plus daftar aset, nickname, catatan pembuat multibahasa, daftar sumber, sapaan khusus grup, serta dekorator lorebook seperti kedalaman penyisipan dan aturan aktivasiTak terlihat oleh pembaca yang hanya melirik chara
CHARXZIP berisi card.json + assets/Kartu V3 plus berkas gambar dan audio yang dirujuknyaHanya berguna bila aplikasi penerima bisa membongkarnya

Ada dua detail dalam spesifikasi yang lebih penting daripada kelihatannya. Pertama, V2 mewajibkan editor tidak boleh merusak pasangan kunci-nilai yang tidak dikenal — objek extensions dimaksudkan tetap dipertahankan bahkan oleh aplikasi yang tidak memahaminya, dengan kunci diberi ruang nama per aplikasi agar tidak bentrok. Kedua, V3 adalah superset ketat dari V2, sehingga ada jalur turun: sebuah aplikasi bisa mengisi ulang objek V2 dari kartu V3, tetapi dekoratornya harus dibuang dalam prosesnya. Pembuangan itulah yang membuat perilaku berubah tanpa ada satu pun kolom yang tampak hilang. Fungsi masing-masing kolom dibahas di Anatomi Kartu Karakter.

Yang selamat, yang melemah, yang tak pernah ikut

Memilah isi kartu ke dalam tiga keranjang membuat risikonya kelihatan konkret.

KeranjangIsiAlasan
Ikut dengan andalNama, deskripsi, kepribadian, skenario, pesan pertama, contoh dialogIni kolom V1; praktis semua aplikasi yang mengenali kartu membacanya
Ikut kalau pembacanya cukup baruSystem prompt, instruksi pasca-riwayat, sapaan alternatif, lorebook tertanam, tag, metadata pembuatTambahan V2 — importer yang hanya mengerti V1 sekadar mengabaikannya
Melemah diam-diamDekorator lorebook, aset dan ilustrasi ekspresi, sapaan khusus grup, extensions beruang namaDibuang atau diratakan saat kartu V3 dibaca sebagai V2, atau saat CHARX diimpor klien yang hanya paham PNG
Tak pernah ikutRiwayat chat, memori bentukan aplikasi, pilihan model, pengaturan sampler, status langgananSemuanya bukan bagian dari kartu; semuanya ada di layanan

Baris terakhir itulah yang mengejutkan orang di tengah migrasi. Mengekspor karakter bukan berarti mencadangkan sebuah hubungan — transkrip dan memori jangka panjang yang dibangun aplikasi untukmu adalah hal terpisah, biasanya lebih sulit didapat, dan sering tidak portabel dalam bentuk yang bisa dipakai. Sisi itu dibahas di Ekspor Data Aplikasi Pendamping, sedangkan alasan memori berperilaku seperti itu ada di Memori & Kesinambungan.

Ada dua hal yang berubah tanpa disentuh siapa pun. Kartu V3 menyimpan creation_date dan modification_date sebagai stempel waktu Unix, dan spesifikasinya meminta aplikasi menulis tanggal modifikasi saat ekspor — jadi kartu yang cuma kamu pindahkan akan terlihat seperti sudah diedit, dan satu-satunya jejak asal-usul yang masih bisa dipercaya adalah tanggal pembuatan aslinya. Kalau kamu menyimpan arsip kartu buatan sendiri, catat tanggalnya sebelum ekspor, bukan sesudahnya.

Impor yang ditolak juga belum tentu berarti kartunya rusak. Spesifikasi mengizinkan aplikasi langsung menolak file CHARX kalau ukurannya terlalu besar, filenya rusak, dienkripsi tanpa cara dekripsi yang didukung, atau memang bukan zip yang valid. Kalau satu aplikasi menolak file yang di aplikasi lain terbuka dengan lancar, coba buka dulu sebagai zip sebelum menyimpulkan karakternya hilang.

Kenapa kartu yang terimpor sempurna pun terasa berbeda

Anggap perpindahannya nirsusut dan setiap kolom tiba utuh. Karakternya tetap bisa terasa seperti orang lain, karena kartu hanyalah satu masukan di antara beberapa. Aplikasi penerima menyuntikkan system prompt dasarnya sendiri, menjalankan model berbeda, menerapkan pengaturan sampler sendiri, dan membagi jendela konteks dengan porsi berbeda antara lorebook dan percakapan berjalan. Kartu yang menganggarkan seribu token detail dunia di satu aplikasi bisa melihat sebagian besarnya terpotong di aplikasi lain.

Ini perlu dinyatakan terang-terangan, karena reaksi biasanya adalah mulai menyunting kartu — yang lalu merusaknya di aplikasi asal. Diagnosis konfigurasinya lebih dulu. Metode pembanding di Menulis Ulang Karakter Roleplay berlaku tanpa perubahan: pesan pembuka yang tetap, satu variabel sekali jalan. Kalau entri lorebook-mu berhenti terpicu, penyebab yang paling mungkin adalah perbedaan pemicu atau anggaran token, bukan teks yang hilang — lihat Membangun Dunia untuk Roleplay AI.

Aplikasi yang sama sekali tak punya pintu

Semua di atas mengandaikan kedua aplikasi bisa berbahasa kartu. Sebagian besar aplikasi pendamping untuk konsumen tidak. Karakternya hidup sebagai baris dalam basis data, editornya cuma menyodorkan kotak deskripsi pendek, dan tidak ada tombol ekspor — bukan karena datanya rumit, melainkan karena portabilitas bukan tujuan produk. Menilainya secara adil itu penting: aplikasi tertutup tidak otomatis lebih buruk, dan banyak orang memang tak pernah ingin pindah. Tetapi hal itu mengubah apa yang kamu pertaruhkan ketika menghabiskan berminggu-minggu memoles sebuah persona di dalamnya.

Periksa pintunya sebelum kamu membutuhkannya, bukan sesudah. Kalau sebuah aplikasi menyediakan ekspor kartu, biasanya hal itu disebut di pengaturan atau halaman bantuan, dan ekspornya akan menyebut nama format. Kalau kata "ekspor" tidak muncul di mana pun, anggap karakternya tak bisa diselamatkan dan simpan sendiri salinan teks yang kamu tulis — dokumen biasa berisi deskripsi, kepribadian, dan sapaan adalah cadangan kasar tapi efektif yang tak bisa dirusak perubahan format apa pun. Seberapa besar kendali penyuntingan yang diberikan tiap aplikasi sejak awal termasuk hal yang kami nilai di peringkat aplikasi, dan ulasan MusePick membahas satu aplikasi berorientasi roleplay pada dimensi ini.

Daftar periksa sebelum pindah

  1. Ekspor dalam format terkaya yang tersedia. Kalau PNG dan JSON sama-sama ada, ambil keduanya — JSON lebih mudah diperiksa dan diperbaiki, PNG membawa avatarnya.
  2. Catat generasinya. Dialog ekspor biasanya menyebut V2, V3, atau CHARX. Kalau tidak, asumsi teraman adalah V2.
  3. Jangan sentuh berkas aslinya. Mengekspor ulang dari aplikasi penerima bisa diam-diam menurunkan kartu V3 menjadi V2, dan dekorator tak bisa dipulihkan dari salinan yang sudah turun versi.
  4. Impor, lalu baca editornya kolom demi kolom. Bandingkan dengan kartu sumber: deskripsi, kepribadian, contoh dialog, sapaan, jumlah entri lorebook. Yang hilang ketahuan di sini, bukan di chat.
  5. Jalankan tiga pesan pembuka yang tetap. Satu ringan, satu bermuatan emosi, satu yang meminta karakter mengambil inisiatif — tiga yang sama di kedua aplikasi, supaya perbedaannya berarti.
  6. Bangun ulang yang tak terbawa format. Avatar dan gambar ekspresi, variasi sapaan, dan entri lorebook yang gagal tiba. Kerjakan paling akhir, setelah kamu tahu apa yang benar-benar hilang.

Dikerjakan dengan urutan itu, migrasi memakan waktu kurang dari sejam dan memberitahumu sesuatu yang bertahan lama: bagian mana dari karaktermu yang ada di dalam berkas, dan bagian mana yang ada di dalam aplikasi. Pembedaan itulah isi sebenarnya dari portabilitas, dan layak diketahui sebelum kamu membutuhkannya. Kalau kamu membangun karakter dari nol dengan rencana pindah di kemudian hari, Membuat Karakter Roleplay Pertamamu dan Cara Kerja Pembuat Karakter AI membahas apa yang sebaiknya ada di kartu, bukan di aplikasi.

Pertanyaan yang sering diajukan

Bisakah saya memindahkan kartu karakter dari satu aplikasi ke aplikasi lain?

Hanya kalau kedua aplikasi berbicara dalam format kartu yang sama. Aplikasi yang dibangun di atas spesifikasi kartu karakter komunitas membaca dan menulis berkas PNG dengan JSON kartu tertanam di dalamnya, jadi kartu yang diekspor dari satu aplikasi biasanya terbuka di aplikasi lain. Banyak aplikasi pendamping konsumen tidak pernah menampilkan berkas kartu sama sekali, dan pada aplikasi seperti itu karakternya tidak bisa dikeluarkan lewat jalur resmi mana pun.

Apa bedanya kartu karakter V2 dan V3?

V2 membungkus enam kolom V1 asli ke dalam objek data dan menambahkan system prompt, instruksi pasca-riwayat, sapaan alternatif, lorebook tertanam, tag, metadata pembuat, serta objek extensions. V3 adalah superset dari V2: ia mempertahankan seluruh kolom V2 dan menambah daftar aset, nickname, catatan pembuat multibahasa, daftar sumber, sapaan khusus grup, dan dekorator lorebook. V3 disimpan di chunk terpisah, sehingga kartu yang hanya V3 bisa terlihat kosong bagi pembaca yang hanya mengerti V2.

Kenapa karakter yang saya impor berperilaku berbeda di aplikasi baru?

Kartu hanyalah satu dari beberapa masukan. Aplikasi baru menyuntikkan system prompt, model, pengaturan sampler, dan anggaran konteksnya sendiri, dan bisa memangkas atau mengabaikan kolom yang tidak diimplementasikannya. Karakter yang isinya terbaca identik di kedua editor tetap bisa menghasilkan balasan berbeda, dan itu perbedaan konfigurasi, bukan impor yang gagal.

Sumber: Spesifikasi Character Card V3 (SPEC_V3.md) · Spesifikasi Character Card V2 (spec_v2.md). Daftar kolom, nama chunk, wadah CHARX, dan kewajiban V2 mempertahankan kunci yang tidak dikenal diambil dari spesifikasi tersebut; perilaku tiap aplikasi berbeda-beda dan sebaiknya kamu verifikasi di aplikasi yang kamu pakai.