Mengekspor Riwayat OpenCode ke Obsidian

scripts/export-opencode-history.mjs menyediakan mirror satu arah yang deterministik dari database sesi SQLite OpenCode lokal (~/.local/share/opencode/opencode.db) ke catatan markdown Obsidian di bawah 05 - Conversations/<Project>/.

bun run export:history [options]
bun scripts/export-opencode-history.mjs --dry-run --limit 5
bun scripts/export-opencode-history.mjs --project-dir ~/vivera

Jaminan Keamanan dan Konten

AspekCara penanganannya
Akses SQLite Hanya-BacaDatabase dibuka dengan readonly: true (openReadonly()). Tidak ada query yang menyentuh tabel credential; tidak ada jalur kode yang mampu menulis ke database.
Lampiran InlineGambar sesi inline dan lampiran biner di-hash dengan sha256 lalu dibongkar ke .attachments/. Timestamp dipertahankan antar-run (restoreUnchangedAttachmentTimes) sehingga obsidian-git tidak membuat commit positif palsu untuk gambar yang tidak berubah.
Pembatasan SpillOutput eksekusi tool berukuran besar yang dialihkan ke disk dibaca dengan aman di dalam root yang diizinkan. Path traversal (.. dan symlink yang menunjuk ke luar root) ditolak secara tegas, dan output yang melebihi maxBytes dipotong dengan penanda yang terlihat jelas.
Penyamaran Rahasia8 pola rahasia yang berbeda disamarkan dari pesan sebelum ditulis: AWS access key, GitHub PAT classic & fine-grained, PEM private key, JWT, Bearer token, kode TOTP, dan penetapan API key generik.
Deteksi Perubahansync-writer.mjs memeriksa isi catatan sebelum menulis. Run ulang terhadap database yang tidak berubah melakukan nol penulisan ke disk.
Pembatasan KegagalanPenulisan di-buffer: sesi yang rusak dicatat ke log dan dilewati satu per satu, tetapi jika lebih dari separuh batch gagal, run keluar dengan kode non-zero tanpa menulis apa pun.

Opsi CLI

FlagKegunaan
--dry-runMerender dan me-resolve sesi tanpa menulis catatan atau lampiran ke disk.
--limit NMemproses paling banyak N sesi, dimulai dari yang terlama (0 berarti tidak ada yang diproses).
--vault PATHRoot vault Obsidian tujuan (default ke $OPENCODE_EXPORT_VAULT, jika tidak ada maka key vaultRoot di local.config.json; lihat local.config.example.json).
--db PATHPath ke database SQLite OpenCode (default ke ~/.local/share/opencode/opencode.db).
--project-dir PATHMenyaring agar hanya sesi yang terkait dengan PATH atau subdirektorinya yang diekspor.