|
### 🖼️ Pratinjau Multi-Frame Akurat
Eksportir OpenPencil headless yang terpasang merender pratinjau yang setia pada desain: frame tingkat-teratas pertama sebagai PNG besar yang aman untuk diputar ulang, plus deretan thumbnail yang dapat digulir secara horizontal, klik-untuk-memilih, serta navigasi sebelumnya/berikutnya untuk dokumen multi-frame.
|
### 🗺️ Kanvas Interaktif
"Buka kanvas interaktif" memasang OpenPencil Web SDK bersifat baca-saja secara lazy dengan pan, zoom, dan fit — periksa halaman mana pun, simpul bersarang, atau halaman nonaktif tanpa meninggalkan percakapan.
|
|
### ✏️ Editor Terkelola
Dengan `editable: true`, aksi edit membuka editor OpenPencil terkelola — seleksi, lapisan, properti, alat gambar, undo/redo, dan semantik simpan eksplisit — di workbench sisi kanan yang dapat diubah ukurannya dengan opsi layar penuh.
|
### 🤖 Alat Desain Asli-Agen
Lima alat kanvas langsung dan enam alat `openpencil_pipeline_*` memungkinkan Agen membuat, memeriksa, menyempurnakan, menerbitkan, mengubah, dan membaca kanvas nyata melalui runtime OpenPencil terkelola.
|
|
### 🔐 Izin Berbasis Kapabilitas
Izin gambar dan dokumen adalah kapabilitas bertanda tangan yang terikat hash. Metadata peramban tidak pernah mengekspos jalur host sembarangan, dan kapabilitas pratinjau/editor bertanda tangan tidak pernah masuk ke hasil alat kanonis atau konteks model.
|
### ⚡ Keamanan Transaksional
Dokumen pipeline penuh tetap menjadi draf privat yang belum diterbitkan sampai semua gerbang kualitas native dan DSH lolos. Penerbitan tidak menimpa jalur yang sudah ada, dan pembatalan atau batch gagal tidak meninggalkan target kosong.
|
|
### 🌍 Mengikuti Tampilan & Nuansa DSH
Kartu alat dan editor terkelola mengikuti lokale Tionghoa/Inggris serta tema terang/gelap DSH tanpa memuat ulang sesi pengeditan.
|
### 🎯 Satu Alur Kerja Lengkap
"Kebutuhan → private live canvas di bilah samping → dua batch semantik dengan PNG presisi untuk pengguna → gerbang kualitas deterministik native/DSH → penerbitan atomik" — satu alur lengkap di dalam DSH.
|
## Instalasi ke DSH
DSH adalah paket terpisah. Pasang sekali jika belum ada:
```sh
npm install -g @deepseek-ai/dsh@latest
```
Lalu tambahkan plugin ke sebuah profil dan jalankan aplikasi web:
```sh
dsh plugin --profile web add @zseven-w/dsh-openpencil@next
dsh web
```
Untuk pengembangan lokal, bangun checkout ini, tautkan path absolutnya ke profil Web, lalu mulai ulang DSH sepenuhnya:
```sh
pnpm run build
dsh plugin --profile web add link:/absolute/path/to/dsh-openpencil
dsh web
```
Dependensi `link:` membuat hasil build ulang berikutnya langsung terlihat dari checkout ini. Namun, DSH harus dimulai ulang sepenuhnya setelah dependensi profil diganti karena profil Web bawaan tidak melakukan hot reload bundle host secara default.
Tidak ingin memasang DSH secara global? Jalankan dua langkah yang sama lewat `pnpm dlx`:
```sh
pnpm dlx --package=@deepseek-ai/dsh@latest dsh plugin --profile web add @zseven-w/dsh-openpencil@next
pnpm dlx --package=@deepseek-ai/dsh@latest dsh web
```
> Plugin OpenPencil bersifat publik dan tidak memerlukan token npm. Jika DSH prerelease itu sendiri memerlukan autentikasi registry, simpan kredensial tersebut di konfigurasi npm tingkat-pengguna atau sementara di luar checkout. Repositori ini sengaja tidak memuat kredensial registry apa pun.
## Alat Desain
Pilihan opsional mengikuti `openpencil_style_plan` → `openpencil_style_confirm` → `openpencil_pipeline_begin` dengan brief asli dan `style_selection`. Katalog dan pilihan tepat tidak membutuhkan rekomendasi; penyedia bawaan dimatikan. Handoff mendukung script, bukan app-agent atau commerce. Pembuatan app-agent biasa tetap tersedia.
| Alat | Fungsinya |
| --- | --- |
| `openpencil_new` | Jalur cepat kompatibel untuk pekerjaan sederhana: menjalankan satu skrip QuickJS `batch_design` transaksional, menerbitkan hanya jika target belum ada, dan mengembalikan presentasi yang dapat diedit. Utamakan pipeline penuh untuk desain produksi. |
| `openpencil_pipeline_begin` | Memulai draf privat milik sesi beserta satu-satunya root, langsung membuka live canvas yang sama di bilah samping, dan menjaga target `.op` tetap belum diterbitkan. |
| `openpencil_pipeline_context` | Memuat satu detail guideline, style, theme, atau UI kit yang terbatas hanya bila detail tersebut benar-benar tidak ada dalam kontrak begin; ini bukan loop penyegaran saat startup. |
| `openpencil_pipeline_batch` | Menjalankan paling banyak dua skrip generasi QuickJS langsung. Setiap transaksi yang berhasil hanya mencoba menampilkan PNG presisi kepada pengguna; setelah alat kembali, segera ikuti `next`. |
| `openpencil_pipeline_inspect` | Menyediakan diagnosis manual hanya bila pengguna memintanya secara eksplisit; generasi biasa tidak menggunakannya sebagai langkah pratinjau atau pemeriksaan gambar oleh model. |
| `openpencil_pipeline_finish` | Menjalankan gerbang deterministik native dan DSH, merender PNG presisi pasca-final, lalu menerbitkan secara atomik dengan `createIfAbsent`. Hanya hasil `needs_correction`, `canContinue: true`, `repairTargets` lengkap dan tidak kosong, serta `omitted: 0` yang mengizinkan satu perbaikan U-only dan satu finish terakhir; hasil lain yang belum terbit bersifat terminal. |
| `openpencil_pipeline_abort` | Membuang draf yang belum diterbitkan tanpa membuat file target. |
| `openpencil_create` | Menerapkan program `batch_design` transaksional untuk menghasilkan atau menyusun ulang simpul pada kanvas langsung yang sudah ada. |
| `openpencil_edit` | Mengubah simpul eksplisit atau simpul tunggal yang dipilih pengguna. |
| `openpencil_render` | Membuat snapshot `.op` yang tidak dapat diubah dan diarahkan-oleh-konten, lalu merender setiap frame tingkat-teratas pada halaman aktif — `scale` dan `editable` opsional. |
| `openpencil_selection` | Membaca simpul persis yang dipilih pada kanvas editor langsung. |
## Alur Kerja Desain Agen
Untuk generasi biasa, gunakan jalur singkat tetap: `openpencil_pipeline_begin` → dua `openpencil_pipeline_batch` QuickJS langsung → satu `openpencil_pipeline_finish`. Begin membuat satu-satunya root dan langsung membuka live canvas privat di bilah samping; jalur workspace yang diminta belum ada sampai penerbitan berhasil. Setelah setiap begin atau batch berhasil, segera lakukan panggilan berikutnya tanpa narasi, perencanaan, perbandingan, inspeksi, atau alat yang tidak terkait. Secara default seluruh desain memakai tepat satu gambar; setiap frame Hero/Product/Art/Media memiliki tepat satu visual utama, jangan pernah memasangkan gambar dengan ikon placeholder.
Kedua batch yang berhasil mencoba menampilkan pratinjau PNG presisi kepada pengguna. Setelah alat kembali, segera ikuti `next`. Jika `next` melaporkan `previewUnavailable`, skrip sudah di-commit ke live canvas: jangan jalankan ulang batch dan jangan panggil `openpencil_pipeline_inspect` atau `read_image`. `openpencil_pipeline_inspect` hanya untuk diagnosis yang diminta pengguna secara eksplisit.
Finish menjalankan finalisasi, lint, pemeriksaan kontras dan layout native OpenPencil serta gerbang kualitas deterministik DSH, lalu dalam satu panggilan sehat merender PNG final presisi dan menerbitkan target secara atomik. Perbaikan hanya diizinkan bila hasil sekaligus memuat `stage: "needs_correction"`, `canContinue: true`, `repairTargets` lengkap dan tidak kosong dengan `omitted: 0`, serta setiap target memiliki `operation: "U"`, `nodeId` persis yang tidak kosong, dan `patch` tidak kosong. Terapkan semua target bersama dalam tepat satu batch U-only, lalu tanpa narasi panggil finish tepat satu kali lagi. Hasil lain yang belum terbit, error, atau `canContinue: false` bersifat terminal: laporkan sekali dan jangan retry, inspect, membaca image/context, abort, atau membuat draf pengganti. Jika gerbang gagal atau `openpencil_pipeline_abort` dipanggil, target tetap tidak ada. PNG final presisi dan live editor dalam hasil published sudah authoritative; kembalikan hasil itu dan segera akhiri. Bilah samping hanya auto-open saat idle dan **Edit canvas** tetap tersedia untuk peralihan eksplisit.
Dalam layanan DSH yang sama dan masih berjalan, berganti browser atau memuat ulang dapat memulihkan publication tahan lama yang diparse secara ketat dari `openpencil_new` atau `openpencil_pipeline_finish` sebagai PNG presisi beserta aksi **Edit canvas** yang eksplisit. Kartu historis tidak pernah membuka bilah samping secara otomatis; pengguna harus mengeklik aksi tersebut. `openpencil_render` historis biasa tetap hanya-baca, dan koneksi non-loopback tidak pernah menerima izin editor.
Skill `openpencil-design` bawaan tetap menjadi panduan scripting dan kualitas, sementara runtime terkelola tidak bergantung pada biner desktop. `openpencil_new` tetap menjadi jalur cepat satu batch yang kompatibel, tetapi generasi berkualitas produksi sebaiknya mengutamakan pipeline penuh.
Gunakan `openpencil_create` dan `openpencil_edit` hanya untuk kanvas langsung yang sudah ada. Pengeditannya tetap belum disimpan hingga aksi Simpan pada editor.
## Aset Penampil Web
DSH hanya menyajikan `client.js` untuk plugin klien, sehingga OpenPencil ESM SDK, WASM-nya, dan CanvasKit disiapkan sebagai aset same-origin yang eksplisit:
```sh
pnpm run sync:viewer-assets
```
Perintah sinkronisasi lebih mengutamakan checkout `../openpencil` yang bersebelahan (pengembangan lokal), dengan fallback ke submodul `vendor/openpencil` yang di-vendor (CI dan clone baru). Ganti dengan `OPENPENCIL_ROOT` atau `--openpencil-root`. Direktori aset pra-build yang lengkap dapat dipilih dengan `DSHPLUGIN_OPENPENCIL_VIEWER_SOURCE`. Pencarian saat runtime dapat diganti dengan `DSHPLUGIN_OPENPENCIL_VIEWER_ASSET_DIR`.
Aset penampil dimuat secara lazy hanya setelah pengguna membuka kanvas. Jika tidak ada atau tidak valid, pratinjau PNG tetap tersedia dan tidak ada tombol kanvas yang ditampilkan.
## Editor Terkelola
Sesi yang dapat diedit menggunakan host web terkelola OpenPencil — arsitektur yang sama dengan `op-vscode`. Plugin memulai host hanya setelah aksi pengguna yang berwenang, menyimpan token daemon di memori, memvalidasi sumber dan origin iframe, serta menutup proses saat sesi editor berakhir. Permukaan editor dipilih secara progresif: detail Tool native saat host mendeklarasikan sambungan tersebut, jika tidak maka workbench sisi kanan plugin dengan kontrol ubah-ukuran dan layar penuh.
Startup menggunakan listening handshake yang aman untuk mount lambat: probe kesiapan baru dimulai setelah host bawaan mengumumkan alamat yang telah di-bind. Instalasi OpenPencil desktop tidak diperlukan.
Instalasi yang dipublikasikan memilih paket yang sesuai dengan OS/CPU saat ini dari enam paket platform native: `darwin-arm64`, `darwin-x64`, `linux-arm64`, `linux-x64`, `win32-arm64`, dan `win32-x64`; kedua paket Linux menargetkan glibc. Paket root mendeklarasikan semuanya sebagai `optionalDependencies` dengan versi persis agar pengelola paket memilih varian yang benar (misalnya `@zseven-w/dsh-openpencil-darwin-arm64`). Paket tersebut menyertakan `op-host-web-server`, bundel web editor, dan CanvasKit sebagai satu runtime yang saling cocok. Karena itu, editor terkelola tidak bergantung pada `/Applications/OpenPencil.app`, `openpencil-desktop` di `PATH`, ataupun checkout sumber OpenPencil.
Jika DSH memuat ulang atau melepas plugin saat kanvas masih kotor (belum disimpan), host menyimpan draf pemulihan lokal yang tidak transparan hingga tujuh hari. Membuka ulang sumber yang sama akan menanyakan sebelum memulihkannya ke kanvas langsung; pemulihan tidak pernah menimpa file `.op` hingga pengguna menyimpan secara eksplisit.
Paket resmi untuk keenam platform menerima endpoint bootstrap kolaborasi China dan Global selama build release yang dilindungi; nilai yang disuntikkan divalidasi sebelum dipublikasikan. Build mandiri lokal tanpa penyuntikan tersebut dapat menimpa bootstrap sebelum memulai DSH dengan `OPENPENCIL_COLLAB_BOOTSTRAP_URL=https://