İçeriğe atla
ColliePWA

21/Documentation

Ses girişi ve Web Push

Düzenleyicideki mikrofon ve bir aracı sizi beklerken gelen bildirimler

Her iki özellik de varsayılan olarak devre dışıdır. Düzenleyicide bir mikrofon düğmesini ve bir ajan girdi beklediğinde tetiklenen tarayıcı bildirimlerini etkinleştirebilirsiniz.

Sesli girdi (isteğe bağlı)

Bir düzenleyicide mikrofon düğmesi ve Ayarlar → Ses içinde bir eller serbest anahtarı. Düğmeye dokunun, konuşun; transkript okuyup göndermeniz için ileti kutusuna gelir. Eller serbest açıkken sizin yerinize gönderilir; yazılan bir iletinin izlediği korumalı yanıt yolundan gider, asla bunun dışına çıkmaz. Kutu boş olduğu sürece mikrofon, sıranın sonundaki yuvarlak düğmenin yer alır; yazdığınız ilk karakter onu yeniden Gönder düğmesine dönüştürür. Bir iletiyi ya dikte edersiniz ya da yazarsınız; böylece alan genişliği için yarışan iki işlem yerine tek bir birincil işlem bulunur.

Siz konuşurken kaydedici tüm düzenleyiciyi, şeridi ve kutuyu kaplar ve yükseklik eklemez; böylece yukarıdaki ekran asla kaymaz. Tamam mikrofonun olduğu yerde durur ve klibi tamamlar. En uçtaki çöp kutusu onu siler ve klip transkribe edilirken de iptal etmeyi sürdürür. Konuştuğunuzda, iki saniyelik sessizlik klibi sizin yerinize tamamlar; bunu göstermek için Tamam etrafında bir halka kapanır ve yeniden konuşmak sayımı baştan başlatır. İlk kelimeden önce hiçbir şey klibi kendi kendine tamamlamaz.

Bir sağlayıcı kurana kadar mevcut değildir. collie stt setup komutunu çalıştırın veya Whistle kurulumunu yapın (aşağıda). Düğme çizilmez, telefondan ses çıkmaz, kimlik bilgisi tutulmaz, alt işlem çalışmaz. Devre dışı değil, mevcut değil. Dört sağlayıcı:

sağlayıcıne olduğu
openai-compatiblePOST /audio/transcriptions protokolünü konuşan herhangi bir uç nokta: genel OpenAI API'si, bir bulut Whisper klonu veya aynı makinede yerel bir motor (veri çıkışı olmayan seçenek) (aşağıda).
codexKısa ömürlü bir belirteç için zaten güvendiğiniz codex ikilisini ödünç alır. Yeni bir hesap ve yeni bir anahtar yoktur; ancak bir onay adımı içeren bir özel, desteklenmeyen uç noktası bulunur: terminalde yes yazarsınız veya Ayarlar'da Kabul ediyorum düğmesine dokunursunuz (aşağıda).
local-cliAna makinede zaten bulunan whisper-cli veya muesli-cli gibi bir transkripsiyon komutunu kayıt başına bir kez çalıştırır ve transkripti komutun stdout çıktısından okur. HTTP sunucusu gerekmez (aşağıda).
whistleCollie'nin kendi motoru, Whistle. Yapılandırılacak anahtar ve komut yoktur. 4 dakikaya kadar olan bir kayıt buna WAV dosyası olarak gider ve ses host üzerinde kalır. Bir telefon da karşıya yükleme olmadan Whistle'ı kendi üzerinde çalıştırabilir.

eşleme neden bir CLI işlemiyse kurulum da aynı nedenle bir CLI işlemidir: bu yüzey bir kimlik bilgisi kabul eder, bu yüzden host'un klavyesine aittir. Bir anahtar, bir uç nokta veya bir komut için web formu yoktur. İki istisna bunların hiçbirini almaz. Whistle hiçbir kimlik bilgisi tutmaz, seçtiğiniz hiçbir komutu çalıştırmaz ve host dışına hiçbir ses göndermez; bu nedenle yazma erişimi olan bir cihaz bunu Ayarlar'dan kurabilir (neden). Ayarlar → Ses → Host konuşması içinde ise yazma erişimi olan bir cihaz host'u Whistle, ChatGPT aboneliği (codex sağlayıcısı) ve Kapalı arasında değiştirebilir. ChatGPT yalnızca terminalin yazdırdığı onayın aynısından ve Kabul ediyorum üzerine dokunulduktan sonra gelir (aşağıda). Terminalde bir anahtar veya komutla kurduğunuz bir sağlayıcı ya da ortamınızın adlandırdığı bir sağlayıcı orada gösterilir ve uygulama içinden asla değiştirilmez. Bu ikisi için sayfa, Kopyala ve Tekrar kontrol et ile host üzerinde çalıştırılacak komutları gösterir, form içermez.

$ bin/collie stt setup
Which speech-to-text provider?
  openai-compatible  any endpoint that speaks POST /audio/transcriptions —
                     the public OpenAI API, or a local whisper.cpp / parakeet.cpp
                     server, which is the zero-egress choice and the one to prefer.
  codex              borrow your own `codex` sign-in. No new key, no new account —
                     and a private endpoint that may break without notice.
  local-cli          run a transcription command already on this machine, such as
                     whisper-cli or muesli-cli. Its stdout is the transcript.
provider [openai-compatible]:
The API base, INCLUDING its version prefix — the provider appends /audio/transcriptions.
  local  http://127.0.0.1:8080/v1     (whisper.cpp / parakeet.cpp — nothing leaves the host)
  cloud  https://api.openai.com/v1    (room audio leaves this machine)
base URL: http://127.0.0.1:8080/v1
The model the endpoint understands. Empty takes Collie's default, gpt-transcribe.
model [gpt-transcribe]: whisper-1
API key [none]:
The language you speak, as a two-letter ISO-639-1 code — en, de, tr, ja.
LEAVE IT EMPTY to let the model detect it, which is what you want if you mix languages in one
sentence. Name one only if short clips keep coming back in a language you did not speak: a few
seconds of accented audio is too little for the model to detect from, and it guesses.
spoken language [auto-detect]: en
✓ speech-to-text configured — /home/you/.local/state/collie/stt.json (owner-only)
  Live immediately — no restart needed. The bridge re-reads this file per request.
  Check it end to end with `collie stt test`.

Yukarıdaki her sorunun bir bayrağı vardır (--provider · --url · --model · --key · --lang); bu sayede bir yapılandırma çalıştırması terminal gerektirmez. Anahtarı boş bırakmak desteklenen bir moddur; anahtarsız bir uç nokta boş bir başlık yerine hiç Authorization başlığı olmadan aranır.

Konuşulan dil yalnızca tek bir hata durumu için ayarlanmaya değerdir. Boş bırakıldığında (varsayılan değer) model dili kendisi tespit eder; bir cümlede iki dili karıştıran birinin ihtiyacı olan da budur. kısa ses kayıtları ısrarla konuşmadığınız bir dilde dönüyorsa bu değeri ayarlayın: aksanlı birkaç saniyelik ses algılama için çok kısadır ve model tahminde bulunur. İki harfli bir kod veya Collie'nin sizin için daralttığı bölgesel bir etiket (en-GB → en). Yalnızca openai-compatible sağlayıcısında çalışır; codex uç noktası dil kabul etmez ve collie stt status aksini düşünmenize izin vermek yerine bunu açıkça belirtir.

Uzun bir kayıt uzun bir süre alır. Tek bir klip için tarayıcının bütçesi sabit bir sayı değil, o klibin boyutunun bir fonksiyonudur. Kesintisiz 256 kb/s karşıya yükleme varsayar ve üzerine köprünün kendi sağlayıcı zaman aşımını ekler; böylece 8 MiB maksimum boyut için altı dakikanın biraz altında bir süre tanınır. Collie'nin kaydetmeyi kabul ettiği bir klip, beklemeyi kabul ettiği bir kliptir. Karşıya yükleme sürerken Collie yoklamayı ve bağlantı başlığını yükseltmeyi durdurur: kendi sesinizin telefonun karşıya yükleme bant genişliğini doldurması bir kesinti değildir ve öyle bildirilmemelidir.

Bir kayıt beş dakikada durur. Whistle çalıştıran bir host dört dakika alır; çünkü telefon ona sıkıştırılmış klibin yaklaşık dört katı boyutunda bir WAV dosyası gönderir. Kaydedici, geçerli olan sınırı gösterir.

Çalıştı mı? stt test, telefonun kaydedebileceği her kapsayıcı için bir kez olmak üzere gerçek sağlayıcı üzerinden saniyenin beşte biri kadar üretilmiş bir sessizlik gönderir:

$ bin/collie stt test
provider: openai-compatible (http://127.0.0.1:8080/v1, model whisper-1, language en)
sending:  0.2 s of generated silence as audio/wav (the setup probe) … ✓ 214 ms
  transcript: (empty) — expected from silence, and the empty answer still proves the pipeline.
sending:  0.2 s of generated silence as audio/webm;codecs=opus (Chrome, Android, Firefox) … ✓ 198 ms
sending:  0.2 s of generated silence as audio/mp4 (Safari, iOS) … ✓ 190 ms

Host üzerinde Whistle varken stt test tek bir klip (16 kHz WAV) gönderir ve webm ile mp4'ün atlandığını belirtir; çünkü telefon kaydını o sağlayıcıya göndermeden önce 16 kHz WAV biçimine dönüştürür.

Boş bir döküm geçer: sessizlik boşluğa dönüştürülür ve asıl test edilen gidiş-dönüş sürecidir. Başarısız olursa hata, türünü belirtir (yetkilendirme, uç nokta, yanıt biçimi). Ardından Collie'yi telefonda yeniden yükleyin: mesaj kutusunun yanında bir mikrofon yer alır. collie stt status neyin yapılandırıldığını ve her ayarın nereden geldiğini belirtir (dosya veya onun yerine geçen bir ortam değişkeni); collie stt off ise stt.json girdisini kaldırır ve düğme yeniden kaybolur, her iki durumda da yeniden başlatma gerekmez.

Whistle: telefonunuzda veya host'unuzda sesten metne dönüştürme

Whistle, Cactus Compute tarafından geliştirilen küçük bir konuşma modelidir. Dosya 16.9 MB boyutundadır ve lisansı Apache-2.0'dır. İngilizce, Almanca, Fransızca, İspanyolca, İtalyanca, Felemenkçe ve Lehçe bilir; dili kendisi tespit eder. Hesaba, anahtara ve ek programa ihtiyaç duymaz. Collie onu çalıştıran motoru barındırır; bu sayede Linux, macOS, Windows ve NixOS üzerinde çalışır.

Whistle iki yerde çalışabilir. Telefon başına siz seçersiniz.

MotorKelimelerin üretildiği yerŞu durumda seçin
HostCollie'yi çalıştıran bilgisayarda, Collie'nin kendi ikilisinin kısa ömürlü bir alt işleminde.Telefon zayıf veya eski. Kayıt WAV dosyası olarak yüklenir ve bir klip bir iki saniye sürer.
Bu telefonTelefonun tarayıcısında, bir worker içinde.Telefon yeni. Yükleme yapılmaz, bu nedenle ses telefondan asla çıkmaz ve model telefona yüklendikten sonra çevrimdışı çalışır.

Her iki motor da aynı modeli okur. Ana makine tek bir kopya tutar. Whistle'ı bizzat çalıştırmak isteyen bir telefon, modeli internetten değil doğrudan ana makineden kopyalar. Yeni bir telefonda bir klip yaklaşık bir saniye sürer.

Ayarlar üzerinden kurun. Yazma erişimi olan bir cihaza ihtiyacınız var (eşlendi sahibi bir cihaz). Salt okunur bir cihaz "Yazma erişimi olan bir cihaz bunu ayarlayabilir." uyarısını görür ve indirmeyi başlatamaz.

Ayarlar → Ses, altında iki sayfa bulunan tek bir sayfadır:

  • Ses kullanımda olanı en başa koyar. En üstteki kart, neyin yapılandırıldığını başlık olarak taşır: ana makinenizin çalıştırdığı komut, örneğin altında Model ggml-base.bin ve Ana makinenizdeki kendi komutunuz bulunan whisper-cli; bir konuşma hizmetinin modeli, örneğin api.groq.com adresinde bir konuşma hizmeti ile birlikte whisper-large-v3; Model ca52876 ve Bu telefonda ya da Ana makinenizde ile birlikte Cactus Compute tarafından geliştirilen Whistle; veya Ana makinenizdeki Codex aracılığıyla ile birlikte ChatGPT aboneliği (OpenAI). Komut eski whistle-stt sarmalayıcısıysa kart bunu belirtir ve Ana Makine Konuşması'nı açan Dahili Whistle'a geç seçeneğini sunar. Ardından neye dayandığını belirten durum gelir; örneğin "Hazır. Whistle ca52876 bu telefonda mevcut." veya "Hazır değil. Ana makinenizde Codex oturumu kapalı.", Ses bilgisinin nereye gittiği ve nasıl Kur olduğu (Ayarlar'dan hangi cihaz tarafından ve ne zaman, ya da ana makinedeki bir terminalde). Kartın altında eller serbest anahtarı bulunur. Diğer her şey tek bir satırın arkasındadır: Konuşmanın çalışma şeklini değiştir. Konuşma çalıştığı sürece bu satır her ziyarette kapalıdır. Çalışmadığı sürece (hiçbir şey kurulmamış, duraklatılmış bir telefon, yanıt vermeyen bir ana makine seçeneği) açık durur ve en üstteki kart tek bir eylem taşır: Bu telefonda konuşmayı kur, Geri yükle veya Düzelt. Açıldığında, cihaz başına saklanan bu telefonun kendi seçimini gösterir: Bu telefonda (Önerilen olarak işaretli) veya Ana makinenizde (ajanlarınızı çalıştıran bilgisayar). Kullanımdaki seçimin kalın bir kenarlığı, bir renk tonu ve bir Kullanımda rozeti bulunur; ikisi arasında geçiş yapmak sayfadaki hiçbir şeyi kaydırmaz. Ardından ana makinenin ne kullandığını gösteren bir satır, beş seçeneğin tümünü açan bir satır ve model için bir satır gelir. Her seçeneğin hakkında beş gerçeği listeleyen bir bilgi düğmesi vardır: sesin nereye gittiği, çevrimdışı çalışıp çalışmadığı, maliyeti, hangi kurulumu gerektirdiği ve ne kadar hızlı olduğu. Bilgi düğmesine dokunmak hiçbir şeyi seçmez.
  • Ana bilgisayar konuşması ana makinenin beş seçeneğini listeler. Whistle ve kendi komutunuz sesi makinelerinizde tutar. Bir konuşma hizmeti ve ChatGPT aboneliği ise sesi ana makinenizin dışına gönderir. Kapalı, bunların altında tek başına durur. Buradaki bir değişiklik, ana makineyle eşleştirilmiş her cihaz için geçerlidir. Sesi yerine geçtiği seçenekten daha uzağa gönderen bir seçim önce onay ister; bir geri adım dokunulduğu anda iletilir. Her seçeneğin Nasıl kurulur bölümü vardır: numaralı adımlar, kopyalanacak komutlar ve uygulamanın işlem yapabileceği yerlerde uygulamanın kendi düğmeleri. Bir sonraki adım Sonraki olarak işaretlenir. Yalnızca çalışmadığı durumlarda kullanımda olan seçenek için kendiliğinden açıktır. Kullanımdaki seçenek ayrıca neyin yapılandırıldığını da belirtir; örneğin "Yapılandırıldı: whisper-cli, model ggml-base.bin".
  • Whistle modeli geliştiriciyi, Cactus Compute'u, lisansı belirtir ve Hugging Face'teki model sayfasına bağlantı verir. Ana makinedeki kopyayı ve bu telefondaki kopyayı, her birini kendi durumuyla gösterir.

Whistle kurulumunu yapmak için:

  1. Konuşmanın henüz çalışmadığı bir telefonda, Ses üzerindeki üst kartta Bu telefonda konuşmayı kur öğesine dokunun. Tek bir dokunuş tüm süreci tamamlar: sunucuda eksikse sunucu modeli indirir, bu telefon modeli sunucudan kopyalar ve Bu telefonda seçilir. Tek bir çubuk ilerlemeyi gösterir ve hangi adımın çalıştığını belirtir: "Sunucunuza indiriliyor…" veya "Bu telefona kopyalanıyor…". Bir adım başarısız olursa işlem orada durur, nedenini açıklar ve Tekrar deneyin seçeneğini sunar. Salt okunur bir cihaz kopyalama yapabilir, çünkü kopyalama bir okuma işlemidir; ancak sunucudan indirme talebinde bulunamaz. Aynı iki adım Konuşmanın çalışma şeklini değiştir altında da yer alır: kopyası olmayan bir telefonda Kur (16,9 MB) veya sunucu modele zaten sahip olduğunda Bu telefona kopyala.
  2. Veya Whistle modeli sayfasını açıp Sunucuya indir (16,9 MB) öğesine dokunun. Bir çubuk ilerlemeyi gösterir. Başarısız olursa sayfa nedenini belirtir. Tekrar deneyin öğesine dokunun. Model mevcut olduğunda sayfa, modelin sürümünü (Hugging Face revizyonunun ilk yedi karakteri ve bu revizyona bir bağlantı) ve boyutunu listeler. Ayrıntılar, kısa bir sağlama toplamını ve sunucunun modeli ne zaman indirdiğini gösterir.
  3. Sunucu üzerinden dikte için Ana bilgisayar konuşması sayfasını açıp Sunucunuzda Whistle seçeneğini, ardından Tüm cihazlar için değiştir seçeneğini belirleyin. Veya altındaki Nasıl kurulur öğesini açıp Sunucuda kullan seçeneğine dokunun. Terminalde bir anahtar veya komutla başka bir sağlayıcı ayarladıysanız sayfa bunu gösterir ve seçenek sunmaz. Whistle adımları bu durumda sunucuda collie stt off, ardından collie stt whistle --host ile başlar.
  4. Bu telefonun kopyasında Whistle modeli sürümü belirtir ve Bu telefondan kaldır seçeneğini sunar. Ayrıca tarayıcının kopyayı tutmayı kabul edip etmediğini ("Tutuldu") veya alan azaldığında temizleyebileceğini de belirtir. Sunucu daha sonra daha yeni bir model alırsa kopya bunu bildirir ve Güncelle seçeneğini sunar.
  5. Ses üzerinde Konuşmanın çalışma şeklini değiştir sayfasını açın ve Bu telefonda veya Ana makinenizde seçeneğini belirleyin. Bu telefonda, telefonda bir kopya bulunana kadar devre dışıdır. Ana makinenizde, sunucunun konuşma seçeneği olmadığı sürece kapalıdır. Seçimin altındaki satır, sunucunun ne kullandığını belirtir.
  6. Modeli sunucudan kaldırmak için Whistle modeli üzerinde Sunucudan kaldır öğesine dokunun ve onaylayın. Whistle sunucu motoruysa siz tekrar indirene kadar sunucudaki konuşma durur.

Kim değiştirdi. Eşlenmiş bir cihaz sunucunun seçeneğini Ayarlar'dan değiştirdiğinde, sunucu bu cihazın adını ve zamanı yazar. Ses ve Ana bilgisayar konuşması ardından zaman bilgisiyle birlikte "Son değiştiren: Pixel 8" yazar. Terminalde yapılan bir değişiklik bunu temizler.

Veya terminalde kurun.

$ bin/collie stt whistle                 # fetch the model once
$ bin/collie stt whistle --host          # also make Whistle this host's engine
$ bin/collie stt whistle --from <path>   # use a copy you already have, same hash check
$ bin/collie stt whistle --remove        # remove the model, and the host engine if it is Whistle
$ bin/collie stt status                  # shows the model line

--host, bilerek kurduğunuz bir sağlayıcının yerini almadan önce sorar. --yes, terminal içermeyen bir çalıştırma için bu soruyu yanıtlar. Soru indirmeden önce gelir, bu nedenle reddedilen bir çalıştırma hiçbir şey getirmez. --remove, başka türdeki bir sağlayıcıya dokunmaz. collie stt off sağlayıcıyı kaldırır ve modelin kaldığını bildirir. collie doctor, sunucudaki model bu sürümün kabul ettiği model olmadığında uyarır. Motor yeniden başlatma gerekmeden anında devreye girer. collie stt test ile kontrol edin.

Ne indirilir ve nereden indirilir. Sunucu, whistle.cact dosyasını sabitlenmiş tek bir Hugging Face adresinden çeker, CDN yönlendirmelerini takip eder (en fazla beş, yalnızca HTTPS ve asla yerel veya özel bir adrese değil) ve dosyayı yalnızca sha256 değeri bu sürümün taşıdığı bir karmayla eşleştiğinde tutar. Bir uyuşmazlık dosyayı siler ve her iki karmayı da bildirir. İndirme sınırı 32 MiB'dir ve 10 dakikalık bir süre sınırına sahiptir. Dosya, durum klasörünün whistle klasöründe bulunur. Motor kodu (yaklaşık 1 MB), her Collie sürümünün bir parçasıdır ve Collie'nin kendi dosyalarından gelir.

Hiçbir şey kendiliğinden indirilmez. Yükleme sırasında değil, güncelleme sırasında değil, bir motor seçtiğinizde değil. Model, bir kullanıcı Host'a indir, Kur öğesine dokunduğunda veya collie stt whistle komutunu çalıştırdığında gelir. Bir telefon, modeli yalnızca sahibi Kur, Bu telefona kopyala veya Geri yükle öğesine dokunduğunda sunucudan kopyalar; başka hiçbir yerden kopyalamaz. Sunucu, modeli aynı anda en fazla iki telefona gönderir. Üçüncüsü "birazdan tekrar deneyin" uyarısı alır.

Sınırlar. Sunucu motoru en fazla 4 dakikalık bir kaydı kabul eder; çünkü bir WAV dosyası sıkıştırılmış klibin yaklaşık dört katı boyutundadır ve karşıya yükleme sınırı 8 MiB olarak kalır. Kaydedici bu sınırı gösterir. Telefon motoru en fazla 5 dakikayı kabul eder. Sunucu alt sürecinin, klibin uzunluğunun yarısı kadar (en az 60 saniye ve en fazla 3 dakika) bir süre sınırı vardır ve sunucuda aynı anda en fazla iki klip çalışır. Bir telefonun model için boş alana (dosya boyutunun iki katını ister) ve güvenli bir bağlantıya (tailscale serve tarafından sağlanan HTTPS gibi) ihtiyacı vardır.

Telefon bunu yapamadığında. Bir klipte Bu telefonda başarısız olursa, ses ekranı nedenini belirtir ve yalnızca sunucuda çalışan bir konuşma sağlayıcısı varken Sunucuya gönder seçeneğini sunar. Klip, siz Sunucuya gönder öğesine dokunana veya klibi atana kadar başarısız durumda bellekte kalır. Collie klibi hiçbir zaman kendi kendine göndermez; çünkü sesin yerel kalmasını amaçlayan bir motor seçtiniz. Bir oturumda iki motor çökmesi, siz uygulamayı yeniden yükleyene kadar Bu telefonda seçeneğini kapatır.

Telefondaki kopya silindiğinde. Bir tarayıcı, yer açmak için kopyayı temizleyebilir. Tercih bu telefonda kalır ve dikte duraklatılır: Ses, "Dictation is paused" iletisini gösterir ve modeli ana makineden tekrar kopyalayan Geri yükle seçeneğini sunar. Mikrofon kaydetmeye devam eder ve ses klibi yukarıda belirtildiği gibi Sunucuya gönder ile telefonda kalır. Collie kendi kendine ana makineye geçiş yapmaz. Ana makineyi kullanmak için Ana makinenizde seçeneğini belirleyin.

Tarayıcılar. Bu telefon, konuşma worker bileşenine kendi güvenlik politikasını atayan bir tarayıcı gerektirir. Android üzerindeki Chrome test edilmiştir. WebKit, bir WebKit derlemesinde test edilmiştir. iPhone üzerindeki Safari henüz bir cihazda doğrulanmamıştır. Çalıştıramayan bir tarayıcı, Bu telefonda seçeneğini nedeni ile birlikte kapalı gösterir ve Ana makinenizde kullanılabilir durumda kalır.

Eski sarmalayıcıyı kullandıysanız. Bu sayfanın önceki sürümleri, yerel bir çalıştırıcı çevresinde bir local-cli sarmalayıcısı (ffmpeg ve jq) gösteriyordu. Bu kurulum kullanımdan kaldırıldı, ancak elinizdeki mevcut kuruluma dokunulmaz ve çalışmaya devam eder. Yerleşik motora geçmek için bin/collie stt whistle --host --yes komutunu çalıştırın ya da önce collie stt off, ardından bin/collie stt whistle --host komutunu yürütün. Sarmalayıcıyı tutmaya devam da edebilirsiniz. Model dosyası kendi başına yeniden kullanılmaz. İndirmeyi atlamak için dosyayı --from <path> ile iletin.

Bu motorun güvenlik boyutu ve Ayarlar üzerinden kuruluma neden izin verildiği, Güvenlik ve ADR 0096 bölümlerindedir.

Kapsayıcı desteği sağlayıcıya özeldir

Telefon hiçbir zaman WAV kaydetmez. Chrome, Android ve Firefox'ta WebM kapsayıcısı içinde Opus; Safari ve iOS'ta ise MP4 kapsayıcısı içinde AAC kaydeder ve bu baytları olduğu gibi gönderir. WAV deşifre eden bir sağlayıcı her ikisine de 400 yanıtı verebilir ve bu durumda stt test sorunsuz görünürken her dikte "refused" hatasıyla başarısız olur. stt test komutunun üç klibi de göndermesinin nedeni budur: ret durumu telefonda değil, kurulum sırasında tespit edilir.

Bir örnek durum; 2026-09-01 tarihinde OpenRouter'ın POST /v1/audio/transcriptions modeline karşı doğrulandı:

biçimmistralai/voxtral-small-24b-2507-sttopenai/whisper-large-v3-turbo
wavevetevet
ogg/opusevetevet
webm/opushayır, 400evet
mp4/m4a AAChayır, 400evet

Geçici çözüm anahtarda değil modeldedir: Aynı OpenRouter anahtarını dördünü de kabul eden openai/whisper-large-v3-turbo modeline yönlendirin.

bin/collie stt setup --provider openai-compatible \
  --url https://openrouter.ai/api/v1 --model openai/whisper-large-v3-turbo --key <key>

Reddedilen bir deşifre işlemi artık yukarı akış durum kodunu ve hangi kapsayıcıyla gönderildiğini belirtir; böylece telefondaki hata sağlayıcının hangi biçimi reddettiğini yazar. (#148, teşekkürler @drewbitt)

Sıfır dışa aktarım: Kendi motorunuza yönlendirin

openai-compatible sağlayıcısının tercih edilme nedeni: Yerel bir temel URL verin ve hiçbir oda sesi ana makineden asla ayrılmaz. İki motor OpenAI uyumlu bir deşifre uç noktası sunar: whisper.cpp ile paketlenen server ve mudler/parakeet.cpp (MIT). Kendi talimatlarına göre birini derleyin veya kurun, loopback üzerinde çalıştırın ve --url yapılandırmasını buna yönlendirin:

bin/collie stt setup --provider openai-compatible --url http://127.0.0.1:8080/v1

Bütün entegrasyon bundan ibarettir: Collie hangi motorun yanıt verdiği konusunda bir ayrım yapmaz.

Mistral Voxtral için ayrı bir destek gerekmez ve bu sözleşmeyi konuşan başka hiçbir şey de yapmaz; bağlantı noktasının amacı budur. vLLM açık ağırlıklı Voxtral modellerini /v1/audio/transcriptions üzerinden sunar, bu nedenle yerel bir model diğer tüm motorlarla aynı --url değerindedir. Barındırılan modeller ise Mistral'in kendi temelinde aynı istektir:

bin/collie stt setup --provider openai-compatible \
  --url https://api.mistral.ai/v1 --model voxtral-mini-latest --key <key> --lang en

Voxtral Mini Transcribe 13 dili kapsar ve Collie'nin zaten gönderdiği aynı ISO-639-1 language alanını kabul eder. Güvenmeden önce collie stt test ile test edin; "OpenAI uyumlu" her uç noktanın kendisi için öne sürdüğü bir iddiadır ve bu eylem bunu denetlemek için vardır.

codex sağlayıcısı: Neyi kabul ediyorsunuz

collie stt setup --provider codex bir onay bloğu yazdırır ve siz yes yazana kadar durur, çünkü dürüst açıklama şudur: Kayıtlar, sizin oturumuyla yetkilendirilen bir belgelenmemiş, desteklenmeyen ChatGPT uç noktası adresine gider; bu nedenle ChatGPT hesabınız hız sınırına ve yasaklanma riskine maruz kalır ve önceden bildirilmeksizin bozulabilir.

Collie bu uç noktaya önce kendi adıyla istek gönderir. Yalnızca bu dürüst kimlik reddedilirse Codex CLI başlıklarına geri döner ve bu geri dönüş yapılandırmaya yazılır, collie stt status komutunun size geri okuduğu tek bir kelimede görünür. Collie ~/.codex/auth.json bilgisini asla okumaz veya depolamaz; zaten güvendiğiniz ikili dosya buna dokunan tek şey olarak kalır.

Ayarlar içinden de seçebilirsiniz. Yazma erişimi olan bir cihazda Ayarlar → Ses → Host konuşması sayfasını açın. Sayfa, ana makinenin şu anda ne kullandığını gösterir. ChatGPT aboneliği için kaydedilen kimliği de gösterir: honest ya da alternatif gerektiğinde codex-cli. ChatGPT aboneliği satırı, yalnızca ana makinede codex kurulu olduğunda ve ChatGPT ile oturum açıldığında açıktır. Collie durumu öğrenmek için codex login status sorgusunu yürütür. Aksi takdirde satır nedenini tek bir cümleyle belirtir ve Nasıl kurulur simgesi bir sonraki adımı işaret eder: ana makineye Codex kurun, codex login ile oturum açın, ardından ChatGPT aboneliğini kullanın öğesine dokunun. Satıra dokunun; bir sayfa, değişikliğin ana makineyle eşleştirilen her cihaz için geçerli olduğunu belirten bir satırın altında aynı onay metnini kelimesi kelimesine görüntüler. Siz Kabul ediyorum öğesine dokunana kadar ana makineye hiçbir şey gönderilmez. Ardından ana makine, collie stt setup ile aynı araştırmayı (önce dürüst kimlik) yürütür ve aynı yapılandırmayı yazar. Araştırma başarısız olursa hiçbir şey yazılmaz ve sayfa nedenini belirtir. Aynı sayfadaki Kapalı sağlayıcıyı kaldırır. Terminal aynı şekilde çalışmaya devam eder.

Kendi komutunuzu çalıştırın: local-cli sağlayıcısı

local-cli zaten sahip olduğunuz bir transkripsiyon komutunu, arada bir HTTP sunucusu olmadan, kayıt başına bir kez çalıştırır:

bin/collie stt setup --provider local-cli \
  --command /Applications/Muesli.app/Contents/MacOS/muesli-cli --args transcribe
bin/collie stt test

Collie kaydı özel bir geçici dosyaya yazar ve <command> [args…] <file> komutunu çalıştırır. Dosyanın yolu her zaman son argümandır. Komutun kırpılmış stdout çıktısı transkripttir.

ayarbayrakortam değişkenine olduğu
command--commandCOLLIE_STT_COMMANDMutlak bir yol veya PATH üzerindeki bir ad.
args--argsyokDosya yolundan önceki argümanlar.

Yalın bir ad setup çalıştırdığınızda aranır ve tam yol kaydedilir. Servis kısa bir PATH ile çalışır, bu nedenle kabuğunuzun bulduğu bir ad orada çözümlenmeyebilir. ./whisper-cli gibi göreli bir yol reddedilir.

--args boşluklarla ayrılmış sözcükler alır. Bunları hiçbir kabuk okumaz, bu nedenle tırnak işaretleri yazıldığı gibi korunur. Boşluk içeren bir argüman bunun yerine JSON biçimini gerektirir:

bin/collie stt setup --provider local-cli --command whisper-cli \
  --args '["-m", "/srv/my models/ggml-base.bin", "-nt"]'

Komutun yapması gerekenler:

  • Kullanıcınızın çalıştırabileceği normal bir dosya olun. Collie onu izlediği için buna işaret eden bir symlink uygundur. collie stt setup başka her şeyi reddeder ve collie stt status neyin yanlış olduğunu belirtir.
  • 0 durumuyla çıkın ve transkripti stdout'a yazdırın. Başka herhangi bir durum dikteyi başarısız kılar.
  • 60 saniye içinde tamamlanın. Collie ardından onu ve başlattığı her süreci SIGKILL ile sonlandırır.
  • stdout'a en fazla 256 KiB yazdırın. Collie daha fazlasını yazdırdığı anda süreci sonlandırır.
  • Çalışır durumda hiçbir şey bırakmayın. Komut çıktığında Collie, komutun başlattığı ve hâlen orada bulunan tüm süreçleri sonlandırır. Ayakta kalması gereken bir yardımcı, örneğin setsid ile kendi oturumunu başlatmalıdır.

Windows'ta Collie, komutun tüm süreç ağacını aynı anlarda sonlandırır ve sorunsuz bir çıkıştan sonra komutun başlattığı ve hâlen çalışmakta olan tüm süreçleri sonlandırır. Geriye bir durum kalır: zaten çıkmış bir yardımcı tarafından başlatılan bir süreç komuttan daha uzun süre yaşayabilir.

Komutu aynı anda en fazla iki dikte çalıştırır. Üçüncüsü, telefonun zaten bildiği "meşgul" yanıtını alır ve Collie onun için hiçbir şey başlatmaz.

Boş bir stdout telefonda bir hatadır, çünkü kutuya konacak hiçbir şey yoktur. collie stt test bunu bir başarı sayar, çünkü klipleri sessizliktir.

Not. Komut, bridge'in kendi kullanıcısı olarak, o kullanıcının haklarıyla, dikte başına bir kez çalışır. Kabuk, stdin ve COLLIE_* ortam değişkeni almaz. stderr çıktısı asla okunmaz ve telefon komut satırını veya bir yolu asla görmez; yalnızca komutun başarısız olduğunu ve çıkış durumunu görür.

Geçici dosya yalnızca kullanıcınızın açabileceği bir klasörde durur ve Collie her çalıştırmadan sonra onu siler. Bridge'in kendisi çalıştırma ortasında sonlandırıldıysa, sonraki bridge başlangıcı bir saatlik olduklarında bu klasörleri kaldırır. Sesin bir sonraki durağı komuta bağlıdır: yerel bir motor sesi ana makinede tutar.

Yukarıdakilerin tümünün mantığı (bunun neden iki kez reddedildiği, neyin değiştiği ve bağlantı noktasının neden böyle göründüğü) ADR 0029 içinde açıklanmıştır.

Web Push (isteğe bağlı)

Varsayılan olarak devre dışıdır. Kurulum üç adım gerektirir. Gönderici kütüphanesi (web-push) derleme sırasında isteğe bağlı bir bağımlılık olarak dahil edilir:

collie push-keys     # 1. generate + write the VAPID keys
collie restart       # 2. Collie reads them at start
#                      3. on your phone: Settings → Alerts

push-keys komutu anahtar çiftini üretir ve 600 dosya moduyla COLLIE_VAPID_PUBLIC ve COLLIE_VAPID_PRIVATE dosyalarını etkin .env dizinine yazar; bu dizin ikili kurulumda ~/.config/collie/.env, Herdr kurulumunda ise Herdr'ın eklenti yapılandırma dizinidir.

RFC 8292 subject talebini ayarlamak için bir iletişim URI'sini argüman olarak iletin:

collie push-keys mailto:you@example.com

Herdr tarafından yönetilen kurulumlarda her iki adım da eylem olarak mevcuttur (herdr plugin action invoke push-keys --plugin herdr.collie ve restart). Herdr eylemleri konumsal argümanları kabul etmez; bu nedenle bir subject ayarlamak, komutun doğrudan kabukta çalıştırılmasını gerektirir.

Anahtar işleme ayrıntıları:

--force değerini iletmediğiniz sürece komut mevcut anahtarların üzerine yazmayı reddeder. Anahtarların değiştirilmesi tüm geçerli abonelikleri geçersiz kılar ve bildirimleri yeniden alabilmesi için her cihazın tekrar abone olmasını gerektirir. Mevcut bir yapılandırmada bir subject argümanı sağlamak yalnızca iletişim adresini günceller ve geçerli anahtarları korur.

Not. 0.8.0 sürümünden önceki Herdr sürümlerinde eylemler, ilk eklenti kurulumu sırasında önbelleğe alınan kümede sabit kalır (ADR 0006). push-keys ve push-test eylemleri, siz herdr plugin install komutunu çalıştırana kadar görünmez. Bunun yerine doğrudan bash scripts/collie-ctl.sh push-keys komutunu çalıştırın. Sarmalayıcı betik, komutu doğrudan ikili dosyaya iletir.

Abone olunan tüm cihazlar genelinde iletim yolunu test edin:

collie push-test                     # or: push-test "Title" "Body"

İletim bir ila iki saniye sürer. Komut anında iletmenin (push) devre dışı olduğunu bildirirse, oluşturulan anahtarları yüklemesi için hizmeti yeniden başlatın. Abone olunmuş cihaz olmadığını bildirirse telefon tarayıcısında 3. adımı tamamlayın.

Web Push güvenli bir bağlam (HTTPS) gerektirir. Bu, tailscale serve (MagicDNS sertifikaları) veya TLS sonlandıran harici bir ters proxy (Varyant C) tarafından sağlanır. Düz HTTP kurulumları (COLLIE_SERVE_MODE=http) güvenli bir bağlama sahip değildir ve tarayıcı Ayarlar'daki abonelik denetimlerini devre dışı bırakır.

Collie, bir aracı blocked veya done durumuna girdiğinde gövdeye aracı iletisini yerleştirerek bildirimler gönderir. Bildirimi seçmek, web kullanıcı arayüzünde doğrudan ilgili aracıya gider.

Collie'nin gönderdiği uyarılar

Her biri Ayarlar → Uyarılar → Şu durumda bildir altında kendi anahtarına sahip beş tür.

UyarıTetiklenme zamanıVarsayılan
Girdi gerekiyorbir ajan sizi bekliyoraçık
Tamamlandıbir ajan görevini tamamlarkapalı
Uygulama güncellemeleridaha yeni bir Collie sürümü mevcutaçık
Makine yükü yüksek kalıyorbir makinenin CPU'su, belleği veya en dolu diski kendisi için belirlediğiniz bir kuralın üzerinde kaldığındaaçık
Önbellek soğumak üzerebir panelin prompt önbelleğinin süresi yaklaşık beş dakika içinde dolacakkapalı

Finished, bir agent çalışır durumdan boşta durumuna geçtiğinde tetiklenir; bu nedenle durdurduğunuz bir agent da tamamlanmış sayılır.

Makine yükü, bir makinenin sayfasında bir kural belirleyene kadar hiçbir şey göndermez. Anahtar tüm kuralları aynı anda kapatır. Bir değer yükselip yüksek kaldığında her defasında bir bildirim gönderilir ve bir dokunuş o makinenin Durum görünümünü açar. Bkz. Makineler.

Her cihaz bir uyarının başlığını kendi dil dilinde gösterir; güncellendiğinden beri Collie'yi açmamış bir cihazda ise İngilizce gösterilir. Gövde köprünün yazdığı şekilde kalır.

Her anahtar bridge genelindedir. Bir anlık bildirim abone olunan her cihaza dağıtılır, bu nedenle cihaz başına ayarlanacak bir şey yoktur.

Önbellek uyarısı, o panelin kendi ayarlarından aynı anda tek bir panel için de açılabilir: paneli açın, ⋮ simgesine dokunun, ardından Panel ayarları seçeneğine dokunun. Bu paneller Ayarlar'daki genel anahtarın altında, her birinin yanında bir Kaldır düğmesiyle listelenir.

İki durum birbirini geçersiz kılmak yerine birbirine eklenir. Genel anahtar açık veya panel bu listede olduğunda panele uyarı verilir; bu nedenle genel anahtarı kapatmak, manuel olarak izlediğiniz bir paneli susturmaz.

İzlenen bir bölme sıcak döngü başına bir kez uyarılır. Ajanın bir sonraki isteği son tarihi öteler ve aynı bölme yalnızca bundan sonra yeniden uyarılabilir. Sessiz saatler geçerlidir: ertelenmiş bir köprü hiçbir şey göndermez ve bu pencere içinde sona eren bir erteleme yine de uyarır. Zaten soğuk olan bir bölme asla uyarılmaz; buna süre varken bir /model geçişinin soğuttuğu bölmeler de dahildir.

COLLIE_CACHE_WARN_SECONDS pencereyi kaydırır, varsayılan 300 saniyedir (configure.md).

Not. Bu uyarı için prompt önbelleği okuması gerekir, bu nedenle yalnızca önbellek geri sayımı gösteren panelleri kapsar: harness'ın Collie tarafından okunabilen bir döküm tutması ve ajanın en az bir tur tamamlamış olması gerekir. Bir panelin fiilen uyarı verdiği pencere, yapılandırılan saniye veya o panelin kendi önbellek ömrünün yarısıdır (hangisi daha kısaysa). Bir saatlik Claude önbelleği 300 saniyelik pencerenin tamamını korur. Beş dakikalık bir önbellek (Codex, OpenCode, pi ve omp), bunun yerine soğumadan yaklaşık iki buçuk dakika önce uyarır.

Ana ekrana yeniden yüklemeler ve service-worker sıfırlamaları her zaman bir HTTP 410 döndürmeden yeni uç noktalar oluşturduğundan, eski abonelikler zamanla birikebilir. Bir cihaz yeniden kaydolduğunda Collie kaydı günceller. Depolanan uç noktaları doğrudan görüntüleyebilir ve silebilirsiniz:

# one line per device: service, since, user agent, endpoint tail
bin/collie push list
bin/collie push forget <substring>   # or: push forget --all

Bir durable agent kaynaklı bildirimler

Kalıcı bir ajanın soru kartı telefonunuza bildirim gönderebilir ve Collie bir kalıcı ajanın kaç bildirim yapacağını sınırlar.

Bildirimde "Permission needed in" ve panele verdiğiniz ad yazar. Soru için kalıcı ajanın kendi başlığını asla taşımaz. Kalıcı bir ajan kendi sözcüklerini seçebilir: başlığı (en fazla 60 karakter) iki nokta üst üste işaretinden sonra panel adınızı takip eder ve satırı (en fazla 120 karakter) gövdeyi oluşturur. Sözcükler bildirimin ne söylediğini değiştirir, ne sıklıkla gönderildiğini asla değiştirmez.

Üst sınırSınırSınır aşıldı
Tek bir bölmeDakikada 3 bildirimSoru telefonda gösterilir ve bildirim göndermez
Tek bir makinede tek bir durable agentDakikada 10 bildirimAynısı
Tek bir makinede tek bir durable agentSaatte 30 bildirimTek bir özet bildirimi, ardından o kalıcı ajandan bir saat boyunca bildirim gelmez

Özet bildiriminde, host yerine makinenin adı gelecek şekilde "A durable agent on {host} is raising many asks" yazar. Bir ekipte üyenin adını belirtir. Girdi gerekiyor anahtarı ve erteleme de özeti engeller. Bir üst sınır hiçbir soruyu gizlemez: her açık soru telefonda kalır.

Collie bir soruyu bir kez bildirir. Her birini makine, kalıcı ajan ve araç çağrısına göre hatırlar; bu sayede yeniden başlayan ve aynı soruyu tekrar soran bir kalıcı ajan bunu telefonda gösterir ve ikinci bir bildirim göndermez. Bir soru kapatıldıktan bir saat sonra unutulur. Bellek, durum klasöründeki durable-asks.json dosyasıdır. Bir ekipte lider bu kuralları çalıştırır ve o dosyayı tutar; üye ise kendi soruları için bildirim göndermez (ADR 0100).

Bu sayfayı GitHub üzerinde düzenleyin

The rest of the documentation