OpenCode V2 — RTK dan caveman
Dokumen ini menjelaskan dua alat penghematan token yang dipasang untuk OpenCode V2 di mesin ini. RTK memampatkan output perkakas, skill caveman memampatkan jawaban. Keduanya punya batasan nyata, dan batasan itu tidak bisa dihilangkan dengan menyalakan sakelar.
RTK
Apa itu
rtk adalah proxy baris perintah. Dirinya menuliskan perintah yang setara
namun lebih ringkas, lalu memampatkan keluarannya. Contoh: git status
menjadi rtk git status, ls menjadi rtk ls, rg pola . menjadi
rtk grep pola ..
Pemasangan
Binari dipasang lewat Homebrew dan tercatat di Brewfile:
brew install rtkIntegrasi OpenCode tidak memakai rtk init -g --opencode. Perintah itu
menulis plugin berbentuk API V1 yang gagal dimuat oleh V2. Yang dipakai adalah
adapter milik repo ini.
Adapter V2
Berasal di config/opencode/plugins/rtk.ts dan terpasang lewat symlink ke
~/.config/opencode/plugins/rtk.ts. Ada tiga penyesuaian terhadap plugin
resmi.
- Plugin resmi mengekspor named export dari plugin berbasis function. V2
menuntut default export yang punya
iddansetup. - V1 mengembalikan objek hook dari plugin. V2 memasang hook lewat
ctx.tool.hook("execute.before"). Nama hook sama, cara akses berbeda. - Contoh V2 mengimpor dari
@opencode/plugin. Paket itu tidak ada di mesin ini karena OpenCode 2.0.18 adalah binary Bun single-file tanpanode_modules. Loader hanya membacaiddansetup, jadi impor dihapus.
Peringatan tentang exit code
Dokumentasi rtk rewrite menyatakan perintah yang didukung keluar dengan kode
0, dan yang tidak didukung keluar dengan kode 1 tanpa output. Kenyataannya di
rtk 0.50.0, perintah yang jelas-jelas didukung seperti git status keluar
dengan kode 3 sambil tetap mencetak hasil rewrite yang benar.
Adapter karena itu memakai isi stdout sebagai penentu, bukan exit code. Versi pertama menganggap exit code non-nol sebagai kegagalan dan membuang stdout. Akibatnya tidak ada satu pun perintah yang terrewrite, dan tidak ada error yang terlihat.
Cara memverifikasi
Penghematan diukur, bukan diklaim:
rtk gainKolom Total commands dan Tokens saved harus naik setelah menjalankan
perintah shell biasa. Kalau tidak naik, hook tidak aktif.
Batas yang tidak bisa dihapus
Hook hanya menutup tool shell, yang di OpenCode V2 bernama shell. Tool
bawaan seperti read, grep, dan glob tidak melewati hook, dan tidak bisa
diarahkan lewat plugin. Klaim bahwa RTK memampatkan seluruh kerjaan agent
tidak benar.
Batas kedua: pengukuran independen dari JetBrains atas 86 task coding nyata
menemukan RTK justru 7,6 persen lebih mahal per task pada model dengan
kemampuan penalaran rendah, dan tidak ada perbedaan berarti pada kemampuan
penalaran tinggi. Angka pemasaran 60 sampai 90 persen tidak berhasil
diuji ulang di sini. Kalau pemakaian token terlihat naik setelah dipasang, hapus adapter
dengan rm ~/.config/opencode/plugins/rtk.ts lalu opencode reload.
Caveman
Apa itu
Skill yang memampatkan gaya jawaban. Dimuat dari
~/.config/opencode/skills/caveman/SKILL.md, tidak melalui symlink.
Pemasangan
Node tidak terpasang di mesin ini, jadi npx skills add dan
npm install -g @caveman-ai/cli tidak bisa dipakai. File SKILL.md diambil
langsung dari repositori upstream:
curl -sSL -o SKILL.md \
https://raw.githubusercontent.com/JuliusBrussee/caveman/main/plugins/caveman/skills/caveman/SKILL.mdTidak ada proxy yang dipasang. Proxy caveman memampatkan input perkakas, sedangkan yang dipakai adalah memampatkan output. Memasang proxy juga akan menyalakan telemetri secara default, sementara RTK memakai telemetri tidak aktif secara default.
Kenapa skill ini tidak masuk repo
File SKILL.md dari upstream mengandung karakter Tionghoa untuk
mendokumentasikan mode wenyan. scripts/lint.sh memindai seluruh file
ter-track untuk rentang CJK, Hangul, dan Cyrillic, lalu gagal bila menemukan
satu pun. Mem-vendor file itu apa adanya akan membuat make lint gagal.
Kalau file ini nanti harus masuk repo, pengecualian untuk berkas pihak
ketiga perlu ditambahkan ke check_forbidden di scripts/lint.sh secara
eksplisit, bukan dengan pengecualian ad hoc.
Dua perubahan dari file upstream
Skill asli mendeklarasikan dua hal yang tidak sesuai dengan aturan repo ini, jadi keduanya diubah saat pemasangan.
- Default gaya. Aslinya
full, dan bagian “Persistence” menyatakan gaya itu berlaku untuk seluruh sesi. Itu bertabrakan dengan aturan pelaporan diconfig/opencode/AGENTS.mdyang meminta jawaban terperinci. Default diubah kelite, dan gaya hanya aktif bila diminta. - Mode wenyan. levels
wenyan-lite,wenyan-full, danwenyan-ultramenghasilkan keluaran Tionghoa klasik. Bagian itu diberi penanda bahwa mode tersebut dinonaktifkan, dengan alasan yang sama seperti di atas.
Biaya yang tidak diumumkan
Skill ini menambah sekitar 1.000 token input pada setiap panggilan, karena ruleset-nya ikut dibawa setiap kali. Pada pertanyaan singkat, biayanya bisa lebih besar daripada yang dihemat. README caveman sendiri menyarankan melewatinya untuk beban kerja yang nyaris tanpa prosa.
Repo ini kebalikannya: prosa adalah hasil akhirnya, lewat dokumentasi, pesan
commit, dan laporan. Itu alasan utama skill ini dipasang dengan default
lite dan tanpa mode wenyan, bukan sebagai gaya kerja harian.
Langkah manual yang tersisa
brew bundle installPerintah itu memasang bats-core, shellcheck, dan shfmt yang sudah ada
di Brewfile namun belum terpasang. Setelah terpasang:
make checkmulai menjalankanshellcheckpada seluruh script untuk pertama kalinya, dan kemungkinan besar menemukan temuan yang perlu diperbaiki.bats tests/menjalankan 22 test yang selama ini belum pernah dieksekusi dengan bats-core sungguhan.shfmtdipakai olehmake fmt. Target itu sengaja tidak dijadikan gate lint. Diperiksa pada 18 berkas, shfmt menghasilkan 105 baris perubahan di 4 berkas, dan hampir semuanya menghapus perataan yang disengaja, misalnyalog_info() { ... }menjadilog_info() { ... }. Kode repo ini meratakan kelompok fungsi agar mudah dibaca, dan shfmt tidak punya opsi untuk mempertahankan itu. Jalankanmake fmthanya kalau memang ingin bergaya shfmt.