- GitHub’da 161 bin yıldız alan açık kaynaklı yapay zeka kodlama ajanı OpenCode, yerel Qwen3.6-27B ile test edildiğinde hem araç kalitesi hem de güvenlik tasarımı açısından kullanımın bırakılması gereken bir düzeydeydi
AGENTS.mdyeniden yükleme, sabit mesafeli bağlam budama, güncel tarih ekleme ve mod değiştirme işlemleri prompt cache’i tekrar tekrar geçersiz kılıyor; bu yüzden M4 Max’te bile yanıt üretimi başlamadan önce süre 10 dakikaya kadar çıkabiliyor- Oturum sıkıştırma, sistem prompt’u, izin doğrulama, alt ajan kontrolü ve TUI düzgün biçimde birbirine bağlanmadığı için bağlam ve mesajlar kayboluyor; model önemli spesifikasyonları unutmuş halde kod yazabiliyor
- Bash AST’si ve metin desenlerine dayanan izin filtresi, dolaylı çalıştırma, mutlak yol, değişken, Python, yönlendirme gibi yöntemleri engelleyemiyor; harici dosya erişim kısıtları ve kalıcı izinler de kolayca aşılabiliyor
- Varsayılan uzak model bağlantısı, sınırsız internet erişimi ve geçmişteki HTTP sunucusu RCE açığı düşünüldüğünde yalnızca Docker yeterli değil; çalıştırılabilir dosya engelleme, salt okunur yollar ve işletim sistemi düzeyinde izolasyon gerekiyor
Değerlendirme kapsamı ve varsayımlar
- OpenCode, geliştiricisi tarafından bir yapay zeka kodlama ajanı olarak tanıtılan bir proje; inceleme sırasında GitHub yıldız sayısı 161 bindi
- Test, yerel LLM olan Qwen3.6-27B ve OpenCode Git sürümü
baef5cd4temel alınarak yapıldı - Bu, ayrı bir güvenlik ifşasından çok, LLM çıktısının Bash’e aktarıldığı yapıda boru hattı katmanlarının nasıl başarısız olduğunu inceleyen bir çalışma
- LLM kullanmanın kendisi ile kullanıcının makinesinin kolayca ele geçirilebilir veya silinebilir olması ayrı konular olarak değerlendiriliyor
Prompt cache’i tekrar tekrar bozan yapı
- OpenAI
/v1/chat/completionsailesi API’ler, şimdiye kadarki tüm konuşmayı JSON olarak gönderir ve JSON meta verisi eklenmiş bir SSE delta akışıyla yanıt verir- Oturum uzadıkça yükleme maliyeti kareli biçimde artar
- Araç çağrıları, birden çok JSON delta’yı yeniden JSON’a birleştiren çift kodlama kullanır
- Sunucu durum tutmayan bir yapıda olsa da performans için değerlendirme sonuçlarını önbelleğe alır
- İstekle eşleşen en uzun cache önekini bulur
- Önekin sonundan son mesaja kadar prefill yapar
- Bitiş token’ına kadar yeni token’lar üretir
- Yaklaşık 0.5TB/s bellek bant genişliğine sahip M4 Max’te Qwen3.6-27B’nin token üretimi kullanılabilir düzeydeydi, ancak uzun bağlamın prefill işlemi hesaplama açısından çok pahalıydı
- Uygun bir önek cache bulunamazsa GPU tam yükte çalışırken yanıt üretiminin başlaması için yaklaşık 10 dakika beklemek gerekebiliyor
- OpenCode, her SSE turunda dosya sisteminde glob yapıyor ve ilk sistem prompt’una eklenen
AGENTS.mddosyasını yeniden okuyor- Sonraki oturum için
AGENTS.mddeğiştirilse bile mevcut oturumun tamamı yeniden değerlendiriliyor
- Sonraki oturum için
- Ajan modundan kullanıcı moduna geçerken araç çağrısı bağlamını budayarak büyük cache bölümlerini geçersiz kılıyor
PRUNE_PROTECT = 40_000değerinden daha eski araç sonuçları atıldığı için en iyi durumda bile 40 bin token cache miss oluşuyor- Durdurma işlemi de kullanıcı geçişi olarak işlendiğinden, yanlış gidişatı düzeltmek için müdahale edildiğinde cache atılıyor ve yeniden beklemek gerekiyor
- İlk sistem prompt’una güncel tarih eklendiği ve her SSE turunda yeniden değerlendirildiği için gece yarısı geçildiğinde tüm cache miss oluyor
Budama ve oturum sıkıştırma
- Budama,
skilldışındaki tüm araç sonuçlarına aynı şekilde uygulanıyor ve başta okunan önemli materyalleri ayrıca korumuyor- Yeni oturumda önce spesifikasyon okunuyor
- İlgili kodlar ek olarak okunurken 40 bin token sınırı aşılıyor
- Model gereksiz akıl yürütmeye ya da yanlış yöne sapıyor ve kullanıcı müdahale edip durduruyor
- Durdurma sonucu spesifikasyon bağlamdan siliniyor
- Model artık ilk spesifikasyona başvurmadan implementasyon yapıyor
- Oturum sıkıştırma (compaction), mevcut oturumun başına yeni bir prompt ekleyip tamamını yeniden prefill ettikten sonra bunu birkaç maddeyle özetliyor
- Özet prompt’unu oturum sonuna eklemek, tüm prefill maliyetinden kaçınabilirdi
- Modelin devir notunu doğrudan dosya olarak yazması daha iyi çalıştı; sonuç düzenlenebiliyor veya birden çok oturumda yeniden kullanılabiliyordu
- Sıkıştırma, sonlu bir bağlam penceresini sonsuzmuş gibi gösteren sızıntılı bir soyutlama; budamayla birlikte kullanıldığında sorun daha da büyüyor
- Bağlam penceresi ve prompt cache’i temel kısıtlar olarak kabul edip bunları yönetmek için araç sunmak daha doğru; Pi’nin oturum ağacı prompt cache’i bilinçli biçimde kullanıyor
Sistem prompt’u ve Plan modu
- Varsayılan sistem prompt’u çok uzun ve önemli bir kısmı modele kısa yanıt vermesini söylemeye ayrılmış
- Alt ajanlara
ABSOLUTELY NO COMMENTSdemesini zorunlu kılan türden güçlü kodlama tercihleri de içeriyor - Plan’dan Build’e geçiş akıcı değil; plan yeterince ayrıntılandırılırsa bağlam penceresinin sonuna yaklaşabiliyor
- Tartışma çıktısını dosyaya yazıp düzenledikten sonra bunu yeni oturuma aktarma yöntemi tercih edildi
- Plan modu bildirimi hiçbir dizine yazılamayacağını söylüyor, ancak pratikte
.opencode/plansiçine yazabiliyor- Hem talep edilmeden bu dizine yazdığı hem de açıkça istenmesine rağmen yazmayı reddettiği durumlar yaşandı
- Varsayılan sistem prompt’u küresel olarak değiştirilemiyor; bu yüzden her proje için kopyalanması gerekiyor
- Yalnızca Build modu prompt’u yeniden tanımlanırsa Plan moduna geçildiğinde tüm prompt cache miss oluyor
- Modele özel prompt’lar içerik ve kalite açısından büyük farklar gösteriyor
- GPT-4, o1 ve o3 için Beast Mode, üçüncü taraf paketleri ve bağımlılıkları anlamak için Google doğrulamasının zorunlu olduğunu söylüyor
İzin doğrulamasının yarattığı karar yorgunluğu
- Proje dışındaki dosyalara erişim kaba metin analiziyle tespit edilirse
Yes,No,Alwaysseçenekli bir izin penceresi açılıyor ve yanıt verilene kadar yürütme duruyor- Aynı işi gelecekte de sürekli reddedecek bir
Neverseçeneği yok
- Aynı işi gelecekte de sürekli reddedecek bir
- Alt ajan
/tmpiçindeki bir betiğin çıktısını okumaya çalıştığındaNoseçilirse ajan sonlanıyor ve görev bağlamı da kayboluyor- İlerlemenin korunması için istenmeyen harici erişimlerde bile
Yesdenmesi gereken durumlar oluşabiliyor
- İlerlemenin korunması için istenmeyen harici erişimlerde bile
- İzin istekleri tekrar tekrar geliyorsa ve üretken kalmanın tek seçeneği
Yesise kullanıcı riskli istekleri de onaylayabilir - Dizin dışına yazmayı engelleyen temel güvenlik önlemi insanın sürekli dikkatine dayanamaz
Mesajlar ve alt ajan etkileşimi
- SSE akışı sırasında gönderilen mesajlar kuyruğa giriyor, ancak gerçekten ne zaman iletildikleri belirsiz
- Kod, bunların araç çağrısı turu bittiğinde gönderildiğini düşündürüyor; ancak bekleyen mesaj gönderilmeden araçtan düşünme aşamasına geçilen durumlar da yaşandı
- Kullanıcı durdurursa mesaj kuyruktan çıkıp yalnızca log’da kalıyor ve artık gönderilemiyor; bu yüzden yeni akışı başlatmak için ikinci bir mesaj gerekiyor
- Mesaj geri almanın log’dan ilgili mesajı silemediği durumlar da var
- Alt ajanlarla doğrudan konuşulamıyor veya ilerlemeleri durdurulamıyor
- Yanlış yöne giderlerse ya kapatıp bağlamı kaybetmek ya da token harcanmasını izlemek gerekiyor
- Bu özelliğin geçmişte var olduğu anlaşılıyor ancak şimdi kaldırılmış
- Ana sohbette alt ajanı
@mentionile çağırmak da işe yarar biçimde çalışmıyor ve durdurma da yapılamıyor
- Qwen’in düşünme sürecine araç çağrısı yerleştirmesi gibi, alt ajanın araç çağrısı başarısız olursa ölümcül hata oluşuyor ve o ana kadarki bağlam kayboluyor
- Alt ajan yeniden kullanımı, işleri küçük bağlamlara bölme amacıyla çelişiyor
- İlgisiz görevlerde mevcut alt ajan yeniden kullanılabiliyor
- Büyük bağlama sahip ana ajan ile alt ajan arasında gidip gelinerek cache miss oluşturuluyor
- İnsan için zengin etkileşim olabilir ama modele sunulan seçenekler azaltılmalı
- Alt ajan davranışıyla ilgili bir GitHub sorunu da bulunuyor
Ajan araç tasarımı
edit, varsayılan olarak benzersiz biçimde eşleşen metin üzerinde tam arama-değiştirme yapıyor- Model dosya içeriğini tam hatırlayabilirken, birden çok düzenlemeden sonra değişen satır numaralarını kaçırabildiği için bu yaklaşım uygun
- Global değiştirme seçeneği birden çok takip düzeltmesine yol açtı; bunun kaldırılması Pi’nin
edittasarımıyla aynı sonuca ulaştırıyor
- Plan modundaki çoktan seçmeli
questionaracı, sistem prompt’unda doğal dille soru sordurmaktan daha kullanışsız grepveglob,bashile ikame edilebilir; nitekim model degrepveyargkomutlarını Bash içinde çalıştırıyor- Amaç,
Exploregibi salt okunur ajanların Bash kullanmasını engellemek olabilir - Bu da Bash komutunu çalıştırmadan yan etkilerini belirlemenin zorluğuna bağlanıyor
- Amaç,
todogenel olarak faydalı ama model TODO’ları kontrol etmeyi unutuyor
TUI ve dokümantasyon kalitesi
- OpenCode TUI, metin render işlemi için yaklaşık 1GB RAM kullanıyor
- Mesaj giriş alanında Shift+Enter ile satır sonu çalışmadı; mevcut sorun kaydı “benim makinemde çalışıyor” yanıtından sonra kapatıldı
- Uzun mesajlar otomatik satır kaydırıldığında giriş alanı ve imleç hareket etse de yeni satırdaki karakterler görünmeyebiliyor
- Akış sırasında metin seçilirse otomatik kaydırma seçimi bozuyor
Ctrl-C, çalışan komutu durdurmak yerine oturumu anında kapatıyor- Etkileşimli kabuk geleneğine göre
Ctrl-Ckomutu durdurmalı; çalışan komut yoksaCtrl-Doturumu kapatmalı
- Etkileşimli kabuk geleneğine göre
- Mac’teki Option+sağ/sol ok gibi yaygın kelime bazlı gezinme kısayolları desteklenmiyor
- Mesaj veya düşünme süreci uzadığında Markdown yeniden render gibi işlemler birkaç saniye sürebiliyor ve kare zaman karmaşıklığı gibi görünen bir performans sorunu var
- Girdi sorunları yüzünden mesajlar dış düzenleyicide yazılıp yapıştırılmak zorunda kaldı
- Dokümantasyon tutarsız ve insandan çok modelin okuyacağı şekilde yazılmış görünüyor
Uzak öncelikli bağlantı ve veri sızıntısı
- OpenCode varsayılan olarak uzak modellere bağlanıyor
- Dokümantasyonda yerel model ayarına dair basit bir örnek yok; ayar yanlış yapılırsa uzak modele bağlanılıyor
- Yerel model doğru belirtilse bile program çalıştıktan sonra etkileşimli olarak ayrıca seçilmesi gerekiyor; bu sırada uzak model ile yerel kabuk zaten bağlanmış oluyor
- Varsayılan model URL’si dağıtımın içine sabitlenmiyor; OpenCode ile ilişkili models.dev üzerinden indiriliyor
- İlgili kod
opencode/src/provider/provider.tsdosyasının 1684. satırında yer alıyor
- İlgili kod
- Yeni kurulmuş sistemde
opencodeçalıştırıp yalnızca bir karakter ve Enter girmek bile, kullanıcı ayarı olmadan uzak modelin yerel kabuğa bağlanmasına yol açabiliyor - İlk mesaj boş ya da belirsizse ajan modeli çoğu zaman mevcut dizinde glob yapıyor ve dosyaları okuyor; okunan veriler sonraki POST isteğine ekleniyor
İnternet erişimi ve sistem prompt’u
- OpenCode,
WebFetcharacını sağlıyor ve sistem prompt’u bunu kullanmasını açıkça söylüyor - Varsayılan prompt, kullanıcının verdiği mesaj veya yerel dosyalardaki URL’lerin kullanılmasına izin verirken, programlama desteğiyle ilgili URL olduğundan eminse URL üretmesine veya tahmin etmesine de belirsiz biçimde izin veriyor
- Bash için ağ sandbox’ı olmadığından,
WebFetch’ten daha büyük sorun modelincurl | bashgibi komutlar çalıştırmayacağını varsayan yapı
Bash izin filtresini aşma yolları
opencode.jsoniçindeki"bash": {"git *": "deny"}kuralıgit statusya daecho hello && git push --forcekomutlarını engelliyor- Uygulama, tree-sitter’ın Bash ve PowerShell gramerleriyle komutları AST’ye ayrıştırıyor, ardından komut düğümlerini dolaşıp ayarlardan gelen regex’lerle karşılaştırıyor
- Ancak metin tabanlı denetim, çeşitli dolaylı çalıştırma biçimlerini serbest bırakıyor
echo 'git clean -fdx .' | bashenv git status- alias ile
giti başka komut adı üzerinden bağlama /usr/bin/git status,$(which git) statusGIT=git && $GIT status- Base64 ile kodlanmış
git reset --hardkomutunu çözüp Bash’e aktarma - heredoc içindeki
git push --force - Python
subprocess.runilegit checkout .çalıştırma
- Model genelde kötü niyetli olmasa da, başarısızlığı ısrarla aşacak şekilde eğitildiğinden doğal olarak düşmanca girdiye benzer davranabiliyor
- Metin komut filtreleri güvenlik önlemi değil, yanlış bir güven hissi veriyor
Kalıcı izinler ve CWD istisnası
python3 -c 'print("hello")'içinAlwaysseçilirse tümpython3öneki kalıcı olarak izinli hale geliyor- Sonrasında Python ile SSH özel anahtarını okuyan bir komut da önceden onaylanmış sayılabiliyor
- İzinler diske yazılıyor ve sonraki oturumlarda da korunuyor
cd,chdir,popd,pushd,push-location,set-location, yan etkisiz varsayılan CWD istisna listesi içinde yer alıyor- Bu komutlar, tüm Bash komutlarını reddedecek şekilde ayarlansa bile izin denetimini açıkça atlıyor
Dosya erişim denetimindeki boşluklar
- Varsayılan ayar, OpenCode’un çalıştırıldığı dizin ile Git deposu arasında daha kısa olan yolun dışındaki dosya erişimini engellemeye çalışıyor
- Bash aracında tree-sitter AST dolaşılarak yol gibi görünen değerler çözümlenip denetleniyor
cat /tmp/logfileizin istiyorpython3 -c 'import shutil; shutil.rmtree("/")'ise denetlenmiyor
cargo, genel~/.cargoaltında serbestçe okuma, yazma ve çalıştırma yapabiliyor; ama model~/.cargo/registry/srciçindeki paket kaynağını doğrudan okumaya çalışırsa izin isteniyor- Dosyaya erişebilir kabul edilen komutlar sabit bir
FILESlistesi ile sınırlı- Bu listede
rm,cp,mv,mkdir,touch,chmod,chown,catve bazı PowerShell komutları var - Listede olmayan komutların dosyaya erişmediği varsayılıyor; dolayısıyla iletilen yollar da denetlenmiyor
- Bu listede
Yönlendirme ve izinli komutların birleşimi
echo "hello world!"içinAlwaysseçildiğinde daha sonraechoile dosya veya aygıt yazımı da izinli hale geliyor- GPIO ile ilgili
/sys/class/gpioyollarına yönlendiren komutlar da çalıştırılabiliyor
- GPIO ile ilgili
echo foo > bar.txtkomutunun AST’sinderedirection,commanddüğümünün çocuğu değil kardeş düğüm- Yol denetimi yalnızca
commandçocuklarına baktığı için yönlendirme hedefini denetlemiyor echodaFILESlistesinde olmadığından yol doğrulaması hiç başlamıyor
- Yol denetimi yalnızca
Kendi kendine yükseltme ve uzaktan kod çalıştırma örnekleri
- OpenCode’da birden çok kendi kendine yükseltme yolu var; curl tabanlı kurulumda
opencode upgradeçalıştırılırsahttps://opencode.ai/installyanıtı indirilip Bash standart girdisi üzerinden çalıştırılıyor - Bu, curl kurulum betiğinin kullanıldığı andaki riskten çok farklı olmasa da, üretimde uzaktaki betiği doğrudan çalıştırma örneği
- CVE-2026-22812 sırasında OpenCode, varsayılan HTTP sunucusunda şu özellikleri açığa çıkarıyordu
- Tamamen izin verici CORS başlıkları
- İstendiği gibi kabuk komutu çalıştıran bir POST API’si
- İstendiği gibi dosya okuyan bir GET API’si
- Kullanıcının ziyaret ettiği bir web sitesi, bilinen varsayılan porta istek göndererek kullanıcı yetkileri düzeyinde sistem erişimi elde edebiliyordu
- Geliştirme ekibi sunucuyu varsayılan olarak devre dışı bıraktı ve
opencode.aialanının makinede uzaktan kod çalıştırabilmesi için CORS istisnası gerektiğini söyledikten sonra takibi sürdürmedi; sorun kaydı stale bot tarafından kapatıldı - Ayrı bir sorun kaydı, kimlik doğrulama komutunun kullanıcının verdiği rastgele URL’den içerik çekip çalıştırdığını bildiriyordu; bu da yine stale bot tarafından kapatıldı
Bunun neden yalnızca Docker ile çözülemeyeceği
- Geliştirme bağımlılıklarını yeni bir makineye kurmayı zorlaştıracak kadar karmaşık hale getirip sonra Docker’a bel bağlayan yaklaşım istenmiyor
- Docker’ın kendisi de güvenlik sorunları yaratabiliyor
- root olarak çalışan güçlü bir servis oluşturuyor
ufwgüvenlik duvarında bilerek geçit açıyor
- Korunacak tüm veri konteynerin içindeyse ve içteki yerel kabuk internete bağlıysa, koruma kapsamı belirsizleşiyor
- Hedef, kök dosya sisteminin özyinelemeli silinmesini önlemekse Landlock, Seatbelt, Restricted Tokens gibi daha doğrudan işletim sistemi araçları kullanılabilir
- Kodlama ajanı güvenliği, ayrı bir konteynere devredilecek bir sorumluluk değil; bu, koşum ortamının birinci önceliği olmalı
- Git engellemesi komut metniyle değil,
gitçalıştırılabilir dosyasının kendisiyle yapılmalı .gitdizini salt okunur olmalı- Bash komutunu metinsel olarak temizlemeye çalışmak yerine yerel işletim sistemi izolasyonu kullanılmalı
- Git engellemesi komut metniyle değil,
Yerel LLM kullanım deneyimi
- Qwen3.6-27B gibi yerel modeller de frontier modeller gibi kod tabanının kararlılığını ve kavramsal tutarlılığını bozabiliyor; ancak üç fark var
- Akıllı görünürken aptalca davranan rahatsız edici vadi daha zayıf; sınırları daha net olduğu için etkileşimi ayarlamak daha kolay
- Ağırlık sayısı eğitim verisini aynen yeniden üretmeye yetmeyecek kadar az olduğundan, çıktının kirlenip kirlenmediğine dair değerlendirme farklılaşıyor
- Bulut sağlayıcısını desteklemek veya ona bağımlı olmak gerekmiyor
- Kod, belirtiler ve tahmini nedenler verilip ilgili kod okunduktan sonra çağrı yolu ve kod alıntısı istenen, girdiye dayalı arama işlerinde yararlı sonuçlar alındı
- Kapsam arama problemine indirgenirse modelin olgu uydurma eğilimi azalıyor
- Kod üretimi mimari planlamayı tekrar tekrar çökertiyor
- Birden fazla bileşenin paylaşması için tasarlanan süreçte, ortada değişken durumu taşıma gibi kestirme yollar seçiyor
- Sorun yalnızca kodu bizzat yazmamış olmak değil; kodu anlama becerisini de zedeliyor
- Model ağırlıklarındaki bilgiden doğrudan yanıt çekme yaklaşımı, trilyonlarca parametreli modellerde bile halüsinasyona yol açıyor
- LLM’lerin sıradan bir araç haline gelmesi için çevresindeki yazılıma gerçek sistem mühendisliği uygulanmalı ve güvenlik boşlukları kapatılmalı; bunu da insanların yapması gerekiyor
1 yorum
Hacker News yorumları
Bu yazı için daha iyi bir başlık muhtemelen “Düzeltilirse OpenCode’u iyileştirecek küçük can sıkıntıları” olurdu
AGENTS.mddosyasının her seferinde yeniden okunması ya da tarih değişikliği yüzünden prompt cache miss yaşanması katlanılabilir şeylerSıkıştırma ve budamanın düzgün çalışmaması sorununu Codex ve Claude’da da gördüm; varsayılan sistem promptu da tutarlılık için var, hoşunuza gitmiyorsa değiştirebilirsiniz
Kararlılık, performans ve bellek kullanımı da kötüleşti; eskiden OpenCode’u seviyordum ama iyi yazılmış bir yazılım olduğunu söylemek zor
Şimdi tamamen Pi ile değiştirdim; OpenCode’dan ders çıkarıp gereken yerlere daha ölçülü tasarım uygulayan epey yeni seçenek de var
Artık araç çağrısı budaması yapmıyoruz, ama sınırlı bir bağlam penceresinde aynı işi uzun süre sürdürmek için mevcut durumu özetlemek gerektiğinden sıkıştırma bir süre daha gerekli bir kötülük
Şu anda betada olan V2 içinde,
AGENTS.md, kullanılabilir teknolojiler gibi değişen sistem talimatlarını güncel tutarken cache miss'i olabildiğince önleyen yeni bir yöntem varhttps://x.com/kitlangton/status/2075749116760457346/video/1
Ayrı bir “Alarming Things” bölümünde “It’s Fucking Full of RCEs” adlı bir alt bölüm de var ve önceki bölümde ortaya çıkan sorunların dışında da çeşitli uzaktan kod çalıştırma açıkları bulunuyor
Ajan tarzı CLI'ların risklerini iyi özetlemiş, ama yalnızca OpenCode’a odaklanan başlık iki nedenle tuhaf
Birincisi, açık bir alternatif önermiyor. Sorunların çoğu temel seviyede olduğu için neredeyse baştan tasarlayıp yeniden yazmak gerekebilir; dolayısıyla sadece OpenCode için düzeltme önermek de yeterli olmaz, ama ortada hiç yapıcı öneri yok ve bu yüzden yazı fiilen “LLM kullanmayı bırakın” diyen bir metin gibi duruyor
İkincisi, “Alarming Things” kısmındaki başlıca sorunlar OpenCode’a özgü değil; Claude CLI'a ve muhtemelen diğer son teknoloji model sağlayıcılarının ajanlarına da uygulanıyor
Yine de daha iyi araçların en baştan yapılması çağrısını kayda geçirdiği için çok değerli; yer imi ekleyip genişçe paylaşmayı düşünüyorum, ama metin ne kadar iyiyse başlık ve odak da o kadar yanlış seçilmiş gibi geliyor
Özellikle
echo git | bashkomutunun hâlâ çalıştığından şikâyet etmesi saçma görünüyor“OpenCode’u bilmiyorsanız, bir insan yüzünü sonsuza dek ezen bir çizme hayal edin. Çizme TypeScript’ten yapılmış, yüz ise 1940'larda elektronik bilgisayarın icadından beri güvenlik ve sistem yazılımları hakkında öğrendiğimiz her şey” cümlesi, zoraki benzetme dalında Bulwer-Lytton ödülü adaylığı hak ediyor
Yazının üslubu gereğinden fazla öfkeli ve acımasız
Birçok noktaya genel olarak katılıyorum ama OpenCode’u “güvenlik duruşu ‘baba, ben eğileyim de vur’ seviyesinde olan turbo çöp bir palyaço arabası” diye niteleyip herkesin kullanmayı bırakmasını söylediği andan itibaren okumak istemedim
Bu yazılımı da sıradan insanlar yaptı; açık kaynağa bu şekilde saldırmanın ne zamandan beri normal karşılandığını bilmiyorum ve kendi yaptığım yazılım böyle değerlendirilse ne hissederdim diye düşündürüyor
Eski
comp.lang.lisptopluluğunda da fildişi kule standartlarını karşılamayan kod yazanlarla alay edip bundan keyif alan insanlar vardı; kimi gitti, kimi de bunu becerisini geliştirmek için gerekli bir azar sanıp madalya gibi taşıdıİlgili eski HN tartışması: https://news.ycombinator.com/item?id=587045
Bunun, isabet alan geliştiricilere ve bu davranışı normalleştiren kişilerin kendilerine ne kadar zararlı olduğunu anlamıyor gibiler
python3örneğine itiraz edebilirdi” kısmı komiktiMüşterimin teknoloji yığını nedeniyle Claude Code kullanıyorum, kişisel işlerimde de OpenCode’un belirli bir sürümünü kullandım; OpenCode çok daha iyi olduğu için bu yazı üzücü geldi
Şimdiye kadar görüp geçtiğim tuhaf davranışların hepsi yazıyla örtüşüyor ve nedenleri de açıklanıyor. Abartılı üslup ve duygusal olarak katılmadığım kısımlar dışında genel olarak doğru; başka bir çalıştırma aracı aramam gerekecek gibi
Pi’nin mimarisinin gerçekten daha iyi olup olmadığına ya da daha iyi alternatif önerilerine dair tavsiye isterim
Kusurlarına rağmen birçok aracı kullanmış biri olarak en yüksek üretkenliği OpenCode’da yaşadım
Yazıdaki şeylerin çoğu küçük can sıkıntıları ya da görüş ayrılıkları; özellikle komut filtrelemenin amacını temelden yanlış anlamış. Bu bir güvenlik önlemi değil, modelin davranışını yönlendiren bir mekanizma
Yazarı sanki OpenCode ile gerçekten bir şey üretmemiş gibi geliyor; kullandıysa da en önemli şey olan çıktı kalitesine hiç değinmemiş
Özellikle plan modunu kolayca kullanıp işleri hızlıca bitirebiliyorum
OpenCode'dan Pi'ye geçtikten sonra araç çağrısı performansı ciddi biçimde iyileşti ve hatalar da daha az gibi geldi
OpenCode'un https://openrouter.ai/apps/category/coding sayfasından da kaybolmuş gibi görünüyor
Yanlış hatırlamıyorsam birinde ayarlardan onay açılabiliyor, diğeri içinse eklenti gerekiyor
Bu davranış tedarik zinciri saldırısı riskini daha da artırıyor
Sadece metin gösteren bir TUI masaüstü uygulamasının, yerel uygulamaların yanı sıra tarayıcı tabanlı çoğu masaüstü uygulamasından daha ağır olması saçma; RAM, CPU, enerji ve batarya israfı yaratıyor
C++ Qt6 ile kendi yapay zeka çalıştırma aracı ve sohbet uygulamamı geliştiriyorum; alt ajanlar, kod farkları, terminal emülatörü, basit düzenleyici, Markdown önizleme, yarı saydam arka plan, kullanıcı temaları, izinler, MCP, Git entegrasyonu, dock sistemi ve proje sekmeleri olmasına rağmen diğer araçlardan daha hafif
Hâlâ birkaç hatayı giderip arayüzü sadeleştirerek cilalıyorum, bu yüzden henüz yayımlamadım: https://zeteo.krysoph.com/preview.html
OpenCode'un yorumları silmesinin sebebinin varsayılan sistem prompt'undaki "Use ABSOLUTELY NO COMMENTS" olduğunu şimdi öğrendim ve buna çok sinirlendim
Ancak bu sadece küçük bir rahatsızlık değil; güvenlik riski diğer çalıştırma araçları için de geçerli. Bu araçlar çok büyük miktarda veriye erişiyor, neredeyse her gün güncelleniyor ve vibe coding doğaları gereği içeri çektikleri sayısız npm bağımlılığını düzgün biçimde denetleyen kimsenin olmaması muhtemel
left-padbenzeri tek bir olay bile tüm tedarik zinciri için felakete dönüşebilirSistem prompt'una tarih ekleyip önbelleğin gece yarısında geçersiz kılınması makul bir karar; diğer çalıştırma araçlarının çoğu da aynı yöntemi kullanıyor
Tam tarih ve saat eklense sorumsuzluk olurdu, ama OpenCode bunu yapmıyor
Bunu, tarihi oturum başına bir kez ya da uzun süre çalışan oturumların geçmiş tarihte kalmasını önlemek için
opencodeikilisi her çalıştırıldığında yalnızca bir kez değerlendirerek kolayca çözmek mümkün