Alat carian kod baharu yang dipanggil ck yang menjanjikan untuk mencari kod berdasarkan makna dan bukannya kata kunci sedang menjadi bualan dalam komuniti pembangun, tetapi pengguna awal menghadapi beberapa masalah pertumbuhan. Alat ini menggunakan teknologi embedding untuk memahami apa yang dicari oleh pembangun, membolehkan carian seperti pengendalian ralat untuk mencari blok kod yang berkaitan walaupun istilah tepat tersebut tidak hadir.
Kebimbangan Prestasi dan Penggunaan Sumber
Beberapa pengguna telah melaporkan isu prestasi yang ketara semasa menguji alat ini pada projek mereka. Ramai pembangun mengalami mesin mereka bertukar menjadi pemanas ruang dengan kipas yang berputar selepas menjalankan carian semantik selama hanya satu minit. Alat ini nampaknya sangat intensif sumber semasa pengindeksan awal dan operasi carian, terutamanya pada pangkalan kod yang lebih besar.
Pasukan pembangunan telah responsif terhadap isu-isu ini, dengan pembetulan sudah digunakan untuk beberapa masalah. Seorang pengguna mengalami kerosakan yang berkaitan dengan pengendalian emoji, yang telah ditangani dengan cepat dalam versi terkini.
Ciri Penting yang Hilang
Titik kesakitan utama bagi pengguna ialah kekurangan sokongan gitignore, bermakna alat ini cuba mengindeks fail yang biasanya harus dikecualikan daripada carian kod. Ini menyumbang kepada masalah prestasi dan menjelaskan mengapa sesetengah pengguna melihat sistem mereka bergelut di bawah beban berat. Pasukan pembangunan telah mengakui batasan ini dan menunjukkan bahawa sokongan gitignore akan datang tidak lama lagi.
Ciri-ciri Utama
- Antara muka CLI yang serasi dengan Grep
- Integrasi FastEmbed dengan model BGE
- Corak pengecualian fail dan sokongan glob
- Penapisan ambang dan pemarkahan relevan
- Penyerlahan visual hasil
- Penghuraian Tree-sitter untuk pemecahan kod pintar
- Pengekstrakan bahagian kod lengkap
- Kemas kini indeks secara berperingkat
Pengembangan Sokongan Bahasa
Alat ini kini menyokong Python , TypeScript , JavaScript , dan Haskell melalui integrasi tree-sitter untuk pembahagian kod yang pintar. Walau bagaimanapun, komuniti secara aktif meminta sokongan untuk bahasa tambahan. Sokongan Ruby telah ditambah berikutan permintaan pengguna, manakala sokongan Elixir menghadapi batasan disebabkan isu keserasian tree-sitter. Pembangun juga telah meminta Java , Clojure , dan bahasa popular lain.
Sokongan Bahasa Semasa (v1.3+)
- Disokong Sepenuhnya: Python , TypeScript , JavaScript , Haskell
- Baru Ditambah: Ruby
- Diminta: Java , Elixir , Clojure
- Sokongan Terhad: Elixir (isu keserasian tree-sitter)
Integrasi dengan Alat Pembangunan AI
Aspek menarik perbincangan tertumpu pada potensi integrasi alat ini dengan pembantu pengekodan AI seperti Claude Code . Pencipta mereka bentuk ck khusus untuk menangani batasan yang mereka perhatikan dalam cara alat AI mencari pangkalan kod, terutamanya apabila mencari konsep dan bukannya nama fungsi tertentu.
Sebab untuk membebankan grep ialah ejen sudah memahami kebanyakan semantik dan bersedia untuk menggunakannya, jadi ia adalah angkatan kecil untuk membuat mereka memanggil grep yang diubah suai dengan beberapa semantik tambahan yang kecil.
Alat ini menggunakan embedding tempatan dengan model BAAI/bge-small-en-v1.5 , memastikan bahawa kod tidak pernah meninggalkan mesin pembangun - pertimbangan privasi utama bagi banyak pasukan.
Spesifikasi Teknikal
- Model Embedding: BAAI/bge-small-en-v1.5
- Alternatif yang Dipertimbangkan: Embedding Google Gemma
- Privasi: Pemprosesan tempatan sepenuhnya
- Penyimpanan Indeks: Fail sidecar .ck
- Kaedah Kemaskini: Pengesanan perubahan berasaskan hash
- Format Output: Sokongan JSON untuk ejen AI
Seni Bina Teknikal dan Pembangunan Masa Hadapan
Alat ini mengekalkan indeks menggunakan pengesanan perubahan berasaskan hash untuk memastikan embedding dikemas kini apabila kod berubah. Ia menawarkan kedua-dua fungsi grep tradisional dan carian semantik, dengan rancangan untuk mod hibrid yang boleh menggabungkan kedua-dua pendekatan untuk hasil yang lebih komprehensif.
Walaupun konsep ini telah menjana keghairahan dalam kalangan pembangun yang bekerja dengan pangkalan kod yang besar dan kurang didokumentasikan, isu prestasi semasa dan ciri yang hilang menunjukkan alat ini masih dalam peringkat pembangunan awal. Penglibatan komuniti yang aktif dan pasukan pembangunan yang responsif menunjukkan batasan ini mungkin ditangani dengan agak cepat.
Rujukan: ck-Semantic Grep by Embedding