1 puan yazan GN⁺ 2025-02-10 | 1 yorum | WhatsApp'ta paylaş
  • Ghostwriter, reMarkable üzerinde kullanıcının el yazısıyla yazdıklarını izleyen; bir jest ya da ekran içeriğiyle tetiklendiğinde bunları Vision-LLM’e gönderen ve sonucu yeniden ekrana yazı veya çizim olarak çıkaran deneysel bir projedir
  • Çalıştırmak için OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY gibi API anahtarları gerekir; reMarkable2 ve reMarkable Paper Pro için ikili dosyalar indirilip cihaza kopyalandıktan sonra SSH üzerinden çalıştırılır
  • Varsayılan model claude-sonnet-4-0dır; --model gpt-4o-mini, --engine openai, --engine anthropic, --engine google, --engine-base-url gibi seçeneklerle model ve engine değiştirilebilir
  • Çıktı yöntemi hem SVG çizimini hem de sanal klavye tabanlı metin girişini destekler; --no-svg, --no-keyboard, --thinking, --web-search, --apply-segmentation gibi seçeneklerle davranış ayarlanır
  • Proje ekran yakalama, Vision-LLM çağrısı, araç kullanımı, görüntü segmentleri, değerlendirme betikleri ve reMarkable Paper Pro’nun uinput modülüne uyum gibi alanlara genişletilmiş olsa da bazı özellikler açıkça deneysel veya WIP durumundadır

Ghostwriter ne yapıyor

  • Ghostwriter, reMarkable üzerinde çalışan deneysel bir arayüzdür
    • Kullanıcı ekrana el yazısı veya çizim yazar/çizer
    • Parmağıyla belirli bir köşeye dokunarak ya da ekran içeriğiyle tetikler
    • Mevcut ekranı Vision-LLM’e gönderir ve model yanıtını tekrar ekrana çıkarır
  • Örnek olarak, kullanıcının el yazısıyla bir prompt girdiği ve GPT-4o’nun bir Chihuahua çizimi yaptığı bir vaka yer alır
  • Projenin amacı, el yazısı ile ekranın birleştiği bir ortamda çeşitli etkileşim biçimlerini keşfetmektir

Kurulum ve çalıştırma yöntemi

  • Çalıştırmadan önce reMarkable ortamında API anahtarlarının ayarlanması gerekir
    • OPENAI_API_KEY
    • ANTHROPIC_API_KEY
    • GOOGLE_API_KEY
  • Kurulum, yerel bilgisayarda cihaza özel ikili dosyayı indirip reMarkable’a kopyalama şeklindedir
    • reMarkable2: ghostwriter-rm2
    • reMarkable Paper Pro: ghostwriter-rmpp
  • Cihazda SSH ile bağlanıp çalıştırma izni verilir ve ./ghostwriter çalıştırılır
  • Varsayılan çalıştırma claude-sonnet-4-0 kullanır
    • ./ghostwriter
    • ./ghostwriter --model gpt-4o-mini
  • Arka planda çalıştırma örneği nohup ./ghostwriter --model gpt-4o-mini & şeklindedir
  • Açılışta otomatik çalıştırma TODO olarak bırakılmıştır

Kullanım akışı ve CLI seçenekleri

  • Kullanıcı önce reMarkable’da ghostwriterı çalıştırır, ardından ekrana içerik çizer ve asistanı tetiklemek için sağ üst köşeye parmağıyla dokunur
  • İşleme sırasında SSH oturumunda dokunma algılama ve işlem günlükleri gösterilir; ekranda ilerleme göstergesi olarak noktalar çizildikten sonra yazılmış yanıt veya çizilmiş yanıt görünür
  • Model ve engine ile ilgili seçenekler
    • --model MODEL: Kullanılacak model; varsayılan claude-sonnet-4-0
    • --engine ENGINE: openai, anthropic, google arasından seçilir; modelden otomatik algılanabilir
    • --engine-api-key KEY: API anahtarını doğrudan belirtir
    • --engine-base-url URL: Özel API temel URL’sini belirtir
  • Davranışla ilgili seçenekler
    • --prompt PROMPT: Prompt dosyasını belirtir; varsayılan general.json
    • --trigger-corner CORNER: Dokunma tetikleme köşesini belirtir; varsayılan URdir ve UL, LR, LL de desteklenir
  • Araçlarla ilgili seçenekler
    • --no-svg: SVG çizim aracını devre dışı bırakır
    • --no-keyboard: Metin çıktısını devre dışı bırakır
    • --thinking: Anthropic’in thinking özelliğini etkinleştirir
    • --web-search: Anthropic’in web aramasını etkinleştirir
  • Test ve hata ayıklamayla ilgili seçenekler
    • --log-level LEVEL: info, debug, trace olarak ayarlanır
    • --no-loop: Bir kez çalıştırıp çıkar
    • --input-png FILE: Ekran görüntüsü yerine PNG dosyası kullanır
    • --output-file FILE: Çıktıyı kaydeder
    • --save-screenshot FILE: Ekran görüntüsünü kaydeder
    • --save-bitmap FILE: Render sonucunu kaydeder
    • --no-submit: Modele göndermez
    • --no-draw: Çıktıyı çizmez
    • --no-trigger: Dokunma tetiklemesini devre dışı bırakır
    • --apply-segmentation: Mekânsal algı için görüntü segmentleri ekler

Uygulama ve geliştirme iş akışı

  • Geliştirme ağırlıklı olarak Ubuntu üzerinde yapılmış, OSX’te de çalışmaktadır
  • Geliştirme akışı bağımlılıkların kurulması, reMarkable hedefi için cross-compile yapılması, scp ile cihaza aktarılması ve cihazda yeniden çalıştırılmasından oluşur
  • Cross-compile için Docker, Rust, cross-rs ve ARM target’ları kullanılır
    • reMarkable2 target’ı: armv7-unknown-linux-gnueabihf
    • reMarkable Paper Pro target’ı: aarch64-unknown-linux-gnu
  • Build sonrası aktarım süreci build.sh ile sarmalanmıştır
    • ./build.sh: reMarkable2 için build ve aktarım
    • ./build.sh rmpp: reMarkable Paper Pro için build ve aktarım
  • Release build’i, v2026.09.21-01 gibi bir tag main’e eklendiğinde GitHub Action’ın en yeni release’i oluşturması şeklindedir

Özellik değişiklikleri ve deney kayıtları

  • 2024-10-06’da temel kavram kanıtı çalışır hale geldi
    • Matematik problemi 3 + 7 = için cevabı dolduran örnek çalıştı
    • “Draw a picture of a chihuahua. Use simple line-art” örneği çalıştı
    • SVG çıktısını rasterize edip çok sayıda nokta çizme yaklaşımı bazı durumlarda reMarkable’da iyi çalışmadı
  • 2024-10-07’de sağ üst dokunma tetikleyicisi ve durum göstergesi eklendi
    • Dokunulduğunda ekrana X çizilir, işleme sırasında X’e ek çizgiler çekilir
    • Kullanıcının bunu kendisinin silmesi gerekir
  • 2024-10-10’dan itibaren sanal klavye tabanlı metin girişi denemeleri başladı
    • reMarkable’ın her sayfasında büyük bir metin alanı bulunur ve biçimlendirme temel düzeydedir
    • rM-input-devices üzerinden sanal klavye oluşturup metin katmanına çıktı verme yöntemi doğrulandı
  • 2024-11-02’de draw_text ve draw_svg araçları sunulmaya başlandı
    • Tek bir genel asistan, klavye metniyle mi yoksa SVG çizimiyle mi yanıt vereceğine karar verir
  • 2024-11-07’de Claude/Anthropic desteği eklendi
    • OpenAI ile neredeyse aynı araç kullanımı ayarları kullanılabilir
    • Çizmeyi daha çok tercih ediyor gibi görünse de çizim ve mekânsal algının iyi olmadığı kaydedilmiştir
  • 2024-12-02’de temel görüntü segmenti adımı eklendi
    • Segment koordinatları Vision-LLM’e iletilerek dikkate alması sağlanır
    • O dönemde yalnızca Claude’a bağlıydı
    • Bir kutunun içine X koyma işi ve matematik cevabının konumlandırılmasında iyileşme örnekleri kaydedilmiştir
    • --apply-segmentation ile açıkça etkinleştirilmesi gerekir; --input-png veya --save-screenshot varsayımıyla PNG yeniden ayrıştırılır
  • 2024-12-15’te OpenAI ve Anthropic backend’leri için polimorfik engine katmanı ayrıldı
    • Engine ve model argüman olarak geçirilebilir hale geldi
    • Prompt ve araç tanımları prompts/ dizinine dışsallaştırılıp birleştirildi
  • 2024-12-25’te CLI sadeleştirildi ve genişletildi
    • Yalnızca -m gpt-4o-mini verildiğinde engine’in openai olduğu varsayılır
    • Groq kullanım örneği eklendi
    • gemini-2.0-flash-exp ve GOOGLE_API_KEY üzerinden Google Gemini desteği eklendi
  • 2025-05-10’da Anthropic’in thinking ve web_search özellikleri eklendi
    • Thinking yanıtı işlenir ancak ekrana gönderilmez
    • Web araması Anthropic’in sunucu tarafı özelliği olarak çalışır
    • Varsayılan olarak etkin değildir; ./ghostwriter --thinking --web-search ile çalıştırılır
  • 2025-09-21’de reMarkable Paper Pro ile ilgili düzeltmeler ve seçenek eklemeleri yapıldı
    • 3.20’de ekran çözünürlüğünün değişmesi nedeniyle ekran görüntüsünün düzgün alınmaması sorunu düzeltildi
    • Kullanıcı isteğiyle --no-svg eklendi
    • --trigger-corner LR gibi tetikleme köşesi belirtme özelliği eklendi

reMarkable Paper Pro ve uinput

  • 2025-03-03’te Ghostwriter reMarkable Paper Pro üzerinde de çalışır hale geldi
  • Ekran ve giriş yönteminin biraz farklı olması beklenen bir farktı
  • Beklenmedik sorun, reMarkable Paper Pro’da uinput kernel modülünün bulunmamasıydı
  • uinput modülü reMarkable/linux-imx-rm kullanılarak build edilip bundle’a eklendi
  • Ghostwriter, uinput modülü yüklü değilse yüklemeyi dener
  • Her reMarkable release’i genellikle yeni bir Linux sürümü kullandığı ve birbiriyle uyumlu olmayabileceği için bu bölüm büyük bir yük olarak kaydedilmiştir
  • 2025-04-26’da 3.16, 3.17, 3.18 için modüller hazırlandı
  • 2025-12-06 kaydında, güncelleme sonrasında rmpp Linux’un zaten yayımlanmış olduğu ve uinput modülünün de zaten mevcut olduğu, ancak yüklemenin yine de gerektiği belirtilmiştir

Değerlendirme ve gelecek fikirleri

  • Temel değerlendirme sistemi tamamlanmış maddeler olarak düzenlenmiştir
    • Girdi için ekran görüntüsü seti oluşturma
    • Çeşitli kullanım senaryolarını temsil etme
    • Metin, SVG ve aksiyon biçiminde çıktı örnekleri oluşturma
    • Bazıları için insan veya ayrı bir Vision-LLM hakemiyle değerlendirme olasılığı da içerir
  • 2024-12-22’de run_eval.sh dahil olmak üzere değerlendirme sistemi genişletilmeye başlandı
    • O dönemde parametreler segment kullanımı ve Claude 3.5 Sonnet ya da ChatGPT 4o-mini seçimini hard-code eden yapıdaydı
    • İlk değerlendirme raporu dahil edildi
    • Nihai raporda 48 çalıştırma vardı ve maliyet yaklaşık $1 olarak kaydedildi
  • WIP maddeleri arasında prompt kütüphanesi bulunur
    • prompts/ içinde bir başlangıç noktası vardır
    • Araçların prompt üzerinden ayarlanabilir hale getirilmesi planlanır
    • TODO yönetimi için prompt örneğinde todoları bulup çıkarma ve add-todo.sh gibi dış komutları çalıştırma yöntemi yer alır
  • Gelecek fikirleri arasında ilk yapılandırma dosyası oluşturma, API anahtarı girme, otomatik başlatma ve otomatik kurtarma, PlantUML veya Mermaid tabanlı diyagram oluşturma, harici sorgulama, e-posta ya da Slack’e gönderme bulunur
  • Konuşma modu fikri de vardır
    • Tek ekranda tur bazlı ekran sürümleri izlenir
    • Orijinal girdi, model yanıtı ve yeni girdinin renklerle ayrılması önerilir
    • “Yeni prompt” ile “devam”ın farklı tetikleyicilere ayrılması yöntemi de dahil edilir
  • Yerel ağ Vision-LLM denemeleri de vardır
    • Ollama’nın OpenAI API uyumlu modu, llama3.2-vision araçları desteklemediği için başarısız oldu
    • Groq’un llama-3.2-vision modeli araçları destekler ancak ChatGPT, Claude ve Gemini kadar iyi olmadığı kaydedilmiştir
  • Ek fikirler arasında streaming LLM hizmeti ve kesinti, asenkron işleme, OpenAI responses API, MCP(Model Context Protocol) ve entegre web arayüzü bulunur

Başvurulan kaynaklar

  • Awesome reMarkable: reMarkable ile ilgili kaynaklar
  • reSnap: Ekran yakalama tabanlı
  • rmkit lamp: Ekrana çizim teknikleri için referans
  • resvg: SVG-to-PNG işleme
  • rM-input-devices: Klavye olmadan sanal giriş aygıtı oluşturma
  • reMarkableAI: OCR→OpenAI→PDF→Device yöntemiyle ilgili proje
  • rMAI: Ayrı uygulama biçiminde reMarkable-LLM arayüzü
  • Crazy Cow: reMarkable1 için metni kalem vuruşlarına dönüştüren araç

1 yorum

 
GN⁺ 2025-02-10
Hacker News yorumları
  • Projeyi yapan kişiyim. Hâlâ devam eden bir çalışma; en büyük farkındalığım, görsel modellerin uzamsal algı sınırları oldu
    Kabaca bir değerlendirme örneği https://github.com/awwaiid/ghostwriter/blob/main/evaluation_... adresinde var
    Sırada yaml+shell script tabanlı bir ajan framework'ü/aracıyla geliştirmeye ve çıkarmaya devam etmek, önceden bölümlere ayırma gibi uzamsal algı yöntemlerini daha fazla araştırmak ve çok sayıda nokta yerine gerçek kalem vuruşları gönderen bir reSvg backend'i yazmak var

    • Gerçekten harika. Aklıma yalnızca “süssüz, sıra tabanlı” bir kullanım değil, daha işbirlikçi bir kullanım biçimi geliyor
      Örneğin sözcükler, basit matematik ve diyagramların karıştığı notlar yazarken önemli bir ifadenin altını çizerseniz “cihaz” kenar boşluğunda o ifadeyi genişletebilir
      Cihaz bir diyagram çizerken ben araya girip bir kısmını silip düzelttiğimde, bunu anlayıp değişiklik yapması da mümkün görünüyor
      El yazısı tanımadan elde edilen metin, kalem vuruşu jestleri, küçük bir ikon dili ve LLM birleştiğinde, mevcut alışkanlıklara sıkışmış bizlerin hemen aklına getirmekte zorlanacağı yeni kullanıcı etkileşimi paradigmaları açılacak gibi
      Böyle bir şeyden yakında “tüm demoların anası” türünde bir an çıkabilir gibi görünüyor; ama UX tasarımcısı olmadığım için bunu net hayal etmek zor, belki de bunu yapan kişi başarabilir
    • Etkisi gerçekten harika. Pratikte nasıl kullanılacağını düşündüğünü merak ediyorum
      Ürün açısından, stylus'ı her durdurduğunda sürekli yanıt yazmaya çalışmaması için LLM'den yanıt isteme modunu kolayca açıp kapatabilmek gerekecek gibi
      Bir süre eskiz çizip düşündükten sonra sohbeti yeniden başlatmak isteyebilirsin; belirli sayfalarda LLM'i açıp diğer sayfalarda kapatmak da isteyebilirsin
      Cihaza SSH erişimi için ne tür bir jailbreak gerektiğini de merak ediyorum
  • reMarkable tabletler için uygulamaların hack'lenerek yapıldığını görmek gerçekten güzel
    Daha önce küçük bir reMarkable uygulaması yapıp burada paylaşmıştım: https://digest.ferrucc.io/

    • Böyle şeyler gördükçe Remarkable 2 uygulama geliştirme denemek istiyorum. Önerebileceğiniz kaynak var mı merak ediyorum
      Resmî geliştirici sitesini buldum: https://developer.remarkable.com/documentation
    • Harika. Yaratıcı hack'lerle reMarkable özelliklerinin arttığını görmek güzel
      Uygulamaya baktım; reMarkable için geliştirirken en zorlandığın şeyin ne olduğunu merak ediyorum
  • Keşke reMarkable tabletler biraz daha az kapalı olsaydı
    En sevdiğim donanımlardan biri, bu yüzden daha fazla uygulama olmasını isterdim

    • Kapalı mı? SSH ile bağlanırsan bir shell elde edebiliyorsun. iPad buna izin verdiğinde tekrar konuşalım derim
  • Bunu birkaç aydır hayata geçirmek istiyordum; gerçekten çok iyi yapılmış

    • Hâlâ devam eden bir çalışma ama öğrenmek ve ilham almak için çok eğlenceli bir proje
      Biraz Rust da var; cihaz kısıtlarıyla boğuşma, çeşitli LLM API normalizasyonları, uzamsal görsel LLM eğitimi gibi şeyler de işin içinde
    • Bir ara goMarkableStream'i bir MCP sunucusuna dönüştürmek istemiştim
      Ekranı alabiliyordum ama “hack” olmadan yanıtı geri yazamıyordum
  • Bu hafta sonu denemeyi düşünüyorum
    Yapılacaklar listesi yazınca PDF'i e-postayla gönderip LLM'e vererek görevleri otomatik oluşturma fikrim vardı; bu, o hedefe gerçek zamanlı olarak çok daha iyi ulaşmanın yolunu açıyor

    • Birkaç ay önce Claude ve rMPP ile bir kavram kanıtı yaptığımda epey iyi çalışmıştı
      “Bir gün yapmak istiyorum ama belirli bir zamanı yok; gerçek takvimle çakışmayacak bir zaman seç” gibi muğlak zamanlama isteklerini de işledi
      Neredeyse hiç prompt gerekmiyordu ama workflow pek iyi değildi; sonunda PDF'i e-postayla gönderme yöntemine kalmıştı
      Tekrar bakmam gerekecek gibi, ama zaten oluşturulan görevleri görmezden geldiğim için motivasyonum kalmamıştı
    • İstersen yardımcı olabilirim. Şimdiye kadar bunu gerçekten çalıştıran kişi sayısı bir civarında gibi görünüyor
      reMarkable Discord sunucusundayım: https://discord.gg/u3P9sDW. https://github.com/reHackable/awesome-reMarkable içinde de bağlantısı var
      Rust binary'si olduğu için kurulum kolay olmalı. Teoride :)
  • Android tabanlı Onyx Boox e-kitap okuyucularda da mümkün olur mu merak ediyorum

    • reMarkable'ın kısıtları yüzünden ekran görüntüsü alıp tescilli çizim uygulamasıyla etkileşmek için giriş olayları enjekte etme yolunu kullandım
      Android'de uygun izinler varsa uygulamalar arası ekran görüntüsü mümkün olabilir gibi, ama çizim olayı enjekte etmeyi bilmiyorum
      Başka bir yol özel bir uygulama yapmak. Az önce bir Apple Pencil aldım ve bu konsepti web uygulamasına taşımayı düşünüyorum; şu ana kadar şaşırtıcı derecede iyi çalışıyor
      Yine de düzgün bir çözüm olacaksa bu ajanın mevcut uygulamalarla etkileşmesi daha iyi olur gibi
  • El yazısı girişi LLM ile birleştirmek, çok daha doğal bir workflow sağlayan harika bir kullanım örneği
    Dağınık el yazısını ne kadar iyi işlediğini ve kişisel notlarla ince ayar yapılırsa tanımanın zamanla iyileşip iyileşmeyeceğini merak ediyorum

    • Birkaç ay önce Remarkable Paper Pro ve Claude ile denedim, epey iyi çalıştı
      El yazım oldukça berbat olmasına rağmen, yapmak istediğim işi ve kabaca ya da belirli zamanı yazınca takvime eklenebilecek bir ical oluşturdu
    • Genelde ben kendi el yazımı okuyabiliyorsam model de okuyabiliyor. O kısım sorun olmadı
      Asıl sorun daha çok uzamsal algı. Bir kutunun içine güvenilir biçimde X çizmek bile zor; tic-tac-toe ya da noktaları birleştirme oyunları daha da zor
  • Güzel. Birkaç vektör difüzyon modeli de var; model bir şey çizmeye karar verirse bunu araç çağrısıyla böyle bir modele bırakmak nasıl olur diye düşünüyorum
    O zaman koordinat aralığını ve prompt'u belirleyebilirsin

    • İki nedeni var. Biri, henüz o noktaya gelememiş olmam; ikincisi de… aslında tek neden bu
      Önerebileceğin, mümkünse barındırılan API'si olan bir model var mı merak ediyorum
  • PDF makaleleri okumak için reMarkable'ın 11 inç boyutunun yeterli olup olmadığını merak ediyorum
    13 inç Sony DPT 2. nesil kullanıyorum ve görüntüleme için mükemmel. Yine de bu tür projeler yüzünden reMarkable ürünleri beni çekmeye devam ediyor

    • Remarkable 2 ile makale okudum ama yazıyı rahat okumak için biraz küçüktü
      Aktif okuma yaptığım için renkli vurgulama olmaması da eksik geldi. Not ekleme özellikleri harika
      Şu anda makale incelemeye iPad'deki Zotero uygulamasında devam ediyorum
    • Yakın zamanda reMarkable Pro tablet aldım ve bu sayede Sony DPT-S1 ile reMarkable 2'den geçiş yapabildim
      reMarkable 2, hack'lenebilirliği iyi olduğu için fena değildi; ama Pro'nun ekran boyutu ve renk özellikleri onu harika bir alternatif yaptı
    • PDF için ancak idare eder düzeyde
  • Boox tablet kullanıyorum; aslında e-ink ekranlı tam bir Android tablet olduğu için böyle bir özellik için biçilmiş kaftan gibi
    5 yıl kadar sonra mobil donanımın böyle şeyleri yerel çalıştırma olarak destekleyip destekleyemeyeceğini de merak ediyorum