05/Documentation
Dayanıklı aracılar (deneysel)
Kendi dayanıklı aracınızı telefonunuzda gösterin: hızlı başlangıç, collie durable attach ve sources.json, üç eylem, belirteçler, Collie'nin tuttuğu dosyalar ve sürümler
Deneysel. Kablo protokolü, SDK ve bu sayfa değişebilir veya bu özellik sonraki bir alt sürümde kaldırılabilir. Şu anda yalnızca Collie'nin kendi örnekleri kablo protokolünü konuşur. Çıkış, kalıp kalmayacağını neyin belirlediğini açıklar. Kalıcı bir araç bağlamazsanız Collie eskisi gibi görünür ve çalışır.
Pi Durable veya kablo protokolünü sunan herhangi bir programla kalıcı bir araç geliştirdiyseniz Collie bunu telefonunuzda gösterebilir. Herhangi bir UI kodu olmadan onay istemleri, geçmiş ve sohbet görünümü elde eder.
Durable agent, bir oturum kaynağı olabilir ve her görüşmesi bir oturumdur. Terimler Terminoloji içindedir. Collie hiçbir model anahtarı tutmaz: durable agent kendi API anahtarını veya bir ChatGPT oturum açmasını kullanır; Anthropic aboneliği ise üçüncü taraf bir teçhizat üzerinden kullanılamaz.
Hızlı başlangıç
On satırlık bir durable agent, bir collie durable attach ve telefonunuzda bir soru kartı.
Bu makinede çalışan Collie 1.22.0 veya sonraki bir sürüme ve telefonunuzun eşleşmiş olmasına (Yükleme) ihtiyacınız vardır.
Durable agent Linux veya macOS üzerinde, Node 22.19 veya üzeri ya da Bun 1.4 veya üzeri ile çalışır. SDK'yı durable agent'ınızın klasörüne kurun:
npm install @colliepwa/durable-sdk@experimental
# or
bun add @colliepwa/durable-sdk@experimentalPaket npm dist-tag experimental altında yayımlanır, asla latest altında yayımlanmaz ve ADR 0104 içindeki çıkışı izler: durable wire kaldırılırsa paket kullanımdan kaldırılır (ADR 0105).
SDK'nın Pi Durable girişi, Pi Durable 1.1.0 ve 1.2.0 ile test edilmiştir. Node 22.19, Pi Durable 1.2.0 için taban sürümdür.
Bu durable agent'ı hello.mjs olarak kaydedin. On satırdır:
import { openCollie } from "@colliepwa/durable-sdk";
const socket = process.env.COLLIE_DURABLE_SOCKET ?? `${process.env.XDG_RUNTIME_DIR}/hello/app.sock`;
const collie = await openCollie({ socket, hostName: "hello", caps: { asks: true } });
const pane = collie.workspace("hello", { title: "Hello" }).tab("main", { title: "Questions" }).pane("deploy", { title: "Deploy", harness: "hello" });
collie.ready();
console.log(`listening ${collie.address}`);
const options = [{ id: "yes", label: "Yes" }, { id: "no", label: "No" }];
const answer = await pane.ask({ kind: "choice", toolCallId: "deploy-1", itemId: "deploy-1", title: "Deploy to staging?", options });
console.log(`answer: ${answer.optionIds[0]}`);
await collie.close();node hello.mjs veya bun hello.mjs ile çalıştırın. listening /run/user/1000/hello/app.sock yazdırır ve bekler. Aynı durable agent, bir Collie klonunda examples/durable-member/hello.ts durumundadır.
Node üzerinde önce bir satır daha yazar: Node, durable agent soketine kimin bağlandığını okuyamaz, bu nedenle kullanıcınızın herhangi bir işlemi sorusunu yanıtlayabilir. Linux üzerindeki Bun bunu okuyabilir; durable agent'ın kendisinden veya başlattığı bir işlemden gelen yanıtı reddeder.
macOS üzerinde Node ile çalıştırın. Oradaki Bun, bu durable agent'ın ayarlamadığı callerCheck: "off" değerine ihtiyaç duyar. macOS üzerinde XDG_RUNTIME_DIR yoktur, bu nedenle önce COLLIE_DURABLE_SOCKET değerini mutlak bir yola ayarlayın.
İkinci bir terminalde bunu Collie'nize bağlayın, ardından Collie'nin yeni girişi okuması için yeniden başlatın:
collie durable attach hello --socket /run/user/1000/hello/app.sock
collie restartDurable agent'ınızın yazdırdığı yolu kullanın. Aynı adımda yeniden başlatmak için ilk komuta --restart ekleyin. --restart Collie köprüsünü yeniden başlatır: telefonunuz birkaç saniye içinde yeniden bağlanır ve terminal oturumlarınız çalışmaya devam eder.
Telefonunuzda Collie'yi açın. Durable agents bölümünde bir Experimental rozeti ve bekleyen bir soru ile birlikte tek bir satır, hello, gösterilir. Satıra dokunun: durable agent'ın görüşme listesinde açılır ve burada Deploy görüşmesi "Deploy to staging?" ile bekler. Açın ve Yes veya No seçeneğine dokunun. Durable agent yanıtınızı yazdırır ve çıkar.
Kendi durable agent'ınızı yazmak için Durable SDK ve Durable wire belgelerini okuyun.
Bir durable agent bağlayın
Her durable agent, sources.json içinde tek bir giriştir ve bunu collie durable attach yazar.
collie durable attach desk --socket /run/user/1000/desk/app.sock
export EDGE_TOKEN=your-32-byte-random-token-here
collie durable attach edge --url https://edge.example.com --token-env EDGE_TOKEN
collie restartWindows üzerinde yalnızca HTTPS biçimi kullanılabilir: attach --socket, çıkış kodu 2 ile işlemi reddeder ve özel bir soket Unix kullanıcı kimliklerine ihtiyaç duyduğu için --url ile --token-env kullanılması gerektiğini belirtir.
sources.json, yapılandırma klasöründe .env yanında yer alır: Herdr tarafından yönetilen bir kurulumda Herdr eklenti yapılandırma klasöründe (~/.config/herdr/plugins/config/herdr.collie/), aksi takdirde ~/.config/collie/ içindedir. attach, yazdığı yolu ekrana basar. Yukarıdaki iki komut bu dosyayı yazar:
[
{ "name": "desk", "kind": "durable", "socket": "/run/user/1000/desk/app.sock" },
{
"name": "edge",
"kind": "durable",
"url": "https://edge.example.com",
"token": "your-32-byte-random-token-here"
}
]| alan | içerdikleri |
|---|---|
name | Durable agent'ın telefondaki adı ve günlük klasörünün adı. 1 ila 32 karakter: bir harf veya rakamla başlayan küçük harfler, rakamlar ve kısa çizgiler. Dosya içinde benzersiz olmalıdır |
kind | durable, günümüzdeki tek tür |
socket | Durable agent'ın bu makinedeki özel Unix soketinin mutlak yolu. url ile birlikte kullanılmaz |
url | TLS arkasında dağıttığınız bir durable agent'ın adresi. socket ile birlikte kullanılmaz ve her zaman token ile kullanılır |
token | Collie'nin url hedefine gönderdiği bearer token. Yalnızca url (Belirteçler) ile kullanılır |
Köprü, dosyayı başlangıçta okur; bu nedenle bir girdi yeniden başlatmanın ardından geçerli olur. Terminalleriniz, durable agent'ların yanında eskisi gibi görünür ve çalışır.
Collie dosya konusunda katıdır, çünkü sessizce atladığı bir durable agent hiçbir zaman görünmez:
- Tabloda belirtilmeyen bir alan köprüyü durdurur. Hatalı bir
kind, kuralı ihlal eden bir ad, iki kez kullanılan bir ad, hemsockethemurl, ikisi de yoksa veyatokeniçermeyen birurliçin de durum aynıdır. - Hatalı bir dosya, başlangıçta köprüyü tek bir satırla durdurur. Satır
[bridge] FATAL:ile başlar ve girdiyi ve alanı adlandırır.collie logsbunu gösterir.attachvedetachde okuyamadıkları bir dosyanın üzerine yazmayı reddeder, böylece bir yazım hatası diğer girdilerinize asla mal olmaz. - Dosya
0600modunda tutulur.attachdosyayı bu şekilde yazar. Dosya daha geniş izinlere sahip olduğunda, köprü başlangıçta izinleri daraltır ve bunu günlüğünde belirtir. - Bir ad, terminal oturumunuzun adıyla aynı olamaz. Bu, çoğu kurulumda
defaultdeğeridir ve yalnızca durable çalıştıran bir örnektedefault, kendi durable agent'ının adıdır. Köprü başlangıçta durur ve girdiyi belirtir. - Bir durable agent, adını bir Herdr oturumuna karşı korur. Bir Herdr oturumu bir durable agent ile aynı ada sahip olduğunda, telefon durable agent'ı gösterir, bu Herdr oturumunu gizler ve günlük bunu bir kez belirtir.
attach soket yolunu, URL'yi ve belirteci aşağıdaki kurallara göre denetler. Elle yazılan bir girdi, köprü durable agent'a ulaştığında denetlenir: ihlal edilen bir kural, durable agent'ı nedeni ile birlikte erişilemez olarak gösterir.
Bir durable agent'a ulaşmanın iki yolu
| özel soket | belirteçli https | |
|---|---|---|
| Durable agent'ın çalıştığı yer | bu makine, kullanıcınız olarak | dağıttığınız herhangi bir yer |
| Diğerlerini dışarıda tutan şey | soket size aittir, kip 0600 | belirteç ve yalnızca belirteç |
| Telefonunuz olarak kimler işlem yapabilir | kullanıcınıza ait herhangi bir işlem | belirtece sahip olan herkes |
| Collie ne sıklıkla sorgular | bir telefon izlerken her 1 sn'de bir, aksi halde her 3 sn'de bir | bir telefon izlerken her 2 sn'de bir, aksi halde her 10 sn'de bir |
Soket aktarımı Linux ve macOS içindir. Windows'ta URL ve belirteç kullanın. Soket yolu mutlak ve en fazla 103 bayt olmalıdır. /tmp altında değil, $XDG_RUNTIME_DIR altında tutun: Linux üzerindeki Collie hizmeti özel bir /tmp ile çalışır.
Collie, bir sokete yalnızca yolun tamamı özel olduğunda bağlanır, çünkü soket bir belirteç taşımaz. Soket, grup veya diğer izinler olmaksızın size aittir. Klasörü 0700 modunda size aittir. Yolun hiçbir bölümü sembolik bağ değildir ve üzerindeki hiçbir klasör, /tmp gibi bir sticky dizin hariç, grup veya diğer kullanıcılar tarafından yazılabilir değildir. SDK, soketin klasörünü mevcut olmadığında 0700 moduyla oluşturur.
URL https:// ile başlamalıdır. Tek istisna, aynı makinedeki bir durable agent için bir bağlantı noktasıyla birlikte http://127.0.0.1:<port> veya http://localhost:<port> olmasıdır. Collie, başka herhangi bir http:// adresini reddeder, çünkü belirteç ağ üzerinden şifrelenmeden geçer.
Dikkat. https üzerinden belirteç tek kapıdır. Buna sahip olan herkes her konuşmayı okuyabilir ve her soruyu yanıtlayabilir; ana bilgisayar da metni görür. Bu yolla ulaşılan bir durable agent yalnızca Allow ve Deny seçeneklerini sunmalıdır, asla bir always-allow seçeneği sunmamalıdır.
Durable agent'lar için güvenlik, bir durable agent'ın ne yapabileceğini ve Collie'nin neyi günlüğe kaydettiğini belirtir.
https üzerinden yapılan her yoklama, ana bilgisayarınızın faturalandırabileceği bir istektir ve bir "nothing changed" yanıtı da sayılır. Hiçbir telefon açık olmadığında boşta yoklama her 10 saniyede bir çalışır, bu nedenle Collie günde 8.640 kez sorgular. Ana bilgisayarınızın planının buna ne kadar izin verdiğini kontrol edin.
Bir URL arkasındaki durable agent Collie aktarım protokolüne hizmet etmeli ve taşıyıcı belirteci denetlemelidir. Standart bir Pi Durable demosu ikisini de yapmaz, bu yüzden Collie onu olduğu gibi bağlayamaz.
Collie, barındırılan bir durable agent'ı yoklar. Bir telefon izlerken her 2 saniyede bir, aksi takdirde her 10 saniyede bir sorar. Her yoklama hazırda bekletilen bir Durable Object'i uyandırır, bu nedenle Collie izlerken barındırılan bir nesne uyanık kalır. Protokolde WebSocket yoktur, bu nedenle Durable Object'lerin hazırda bekletme ve WebSocket özellikleri burada işe yaramaz.
Cloudflare örneği askıya alınmıştır ve bir sürümün parçası değildir. experiments/durable-member-cloudflare/ içindedir.
Üç fiil
attach, detach ve list, sources.json dosyasını değiştirir veya okur; istenmedikçe hiçbir şeyi yeniden başlatmazlar.
collie durable attach <name> --socket <path> [--restart]
collie durable attach <name> --url <url> --token-env <VAR> [--restart]
collie durable detach <name> [--restart]
collie durable list| fiil | bayraklar | yazdırdığı içerik | çıkış kodu |
|---|---|---|---|
attach <name> | --socket <path> veya --token-env <VAR> ile --url <url>. --restart. Bir bayrak, değerini sonraki sözcük olarak veya = sonrasında alır | added <name> in <path> veya zaten mevcut bir ad için updated <name> in <path>. Ardından restart to apply: collie restart ve telefonunuzda açılacak URL | 0 yazıldı. 2 bir kullanım hatası veya bir kuralı ihlal eden bir yol, URL ya da belirteç. 1 dosya okunamıyor. --restart ile, yeniden başlatmanın kodu |
detach <name> | --restart | removed <name> from <path>, ardından restart to apply: collie restart | 0 kaldırıldı. 2 bir kullanım hatası. 3 bu adda kalıcı ajan yok. 1 dosya okunamıyor. --restart ile, yeniden başlatmanın kodu |
list | yok | Kalıcı ajan başına bir satır: adı, socket <path> veya url <url> (token set) ve durumu. Dosya boş veya eksik olduğunda no durable agents attached (<path>) | 0. 1 dosya okunamıyor |
Herhangi bir fiil olmadan veya bilinmeyen bir fiille collie durable, kullanımı yazdırır ve 2 koduyla çıkar. --restart ile, attach ve detach komutları collie restart ile aynı yeniden başlatmayı çalıştırır.
list, çalışan köprüye her bir girdiyi sorar ve bunun için en fazla 3 sn bekler:
| durum | anlamı |
|---|---|
loaded | Çalışan köprü bu girdiyi yükledi. Bu köprünün ifadesidir, kalıcı ajanın değil: kalıcı ajan yine de erişilemez olabilir. collie doctor kalıcı ajana sorar |
not loaded (restart to apply) | Köprü siz bağlamadan önce başlatıldı. collie restart komutunu çalıştırın |
refused (<status>) | Köprü, bir durum yerine bu HTTP durumuyla yanıt verdi |
bridge not answering | 3 sn içinde yanıt yok: Collie durduruldu veya meşgul. collie status çalışıp çalışmadığını gösterir |
Bir kalıcı ajan görünmediğinde, başarısız olan denetimi belirten collie doctor komutunu çalıştırın. En yaygın üç neden: henüz yüklenmemiş bir girdi (yeniden başlatın), gizli olmayan bir soket (socket-not-private) ve bir çökmeden kalan eski bir soket dosyasıdır (connection refused: silin ve kalıcı ajanı başlatın). Kalıcı ajanlar için sorun giderme kalıcı ajan durumlarını kapsar. Sorun giderme Collie'yi bir bütün olarak kapsar.
Belirteçler
Bir url girdisi kendi belirtecini taşır ve belirteç tüm geçittir.
openssl rand -hex 32Sonuç, 32 baytlık tabanın üzerinde, 64 onaltılık karakterdir.
Belirteci yukarıdaki gibi 32 rastgele bayt veya daha fazlası yapın ve kalıcı ajana da aynı değeri verin. attach, bunu --token-env bayrağının belirttiği değişkenden okur; böylece hiçbir komut satırında ve kabuk geçmişinde yer almaz. Bu değişken, attach komutunu çalıştırdığınızda ayarlanmış olmalıdır.
attach, değeri sources.json içine düz metin olarak kopyalar. Bu nedenle dosya da belirteç kadar gizlidir: Collie onu 0600 modunda tutar; yapılandırma klasörünün bir yedeği veya eşitlemesi belirteci de taşır. Collie belirteci her istekle birlikte gönderir ve asla yazdırmaz: list (token set) der.
| kural | |
|---|---|
| Belirteç | Kırpmadan sonra 32 ila 4096 bayt, boşluksuz yazdırılabilir ASCII |
| URL | https:// veya bir bağlantı noktasıyla http://127.0.0.1:<port> ya da http://localhost:<port>. En fazla 2048 bayt. Kullanıcı adı veya parola yok, sorgu yok, parça yok. Yalnızca kalıcı ajanın kök adresi: Collie /session/v1 kısmını kendisi ekler |
Belirtecin süresi dolmaz. Değiştirmek için attach komutunu aynı ad ve yeni belirteçle tekrar çalıştırın, ardından yeniden başlatın:
export EDGE_TOKEN=your-new-32-byte-random-token-here
collie durable attach edge --url https://edge.example.com --token-env EDGE_TOKEN
collie restartattach, updated edge yazdırır. Collie'yi yeniden başlatmadan önce kalıcı ajana yeni belirteci verin; aksi takdirde telefon kalıcı ajanın belirteci reddettiğini bildirir. Bir kalıcı ajan, dönüşüm sürerken ikinci bir belirteci kabul edebilir; böylece hiçbir taraf kilitli kalmaz. Park edilmiş Cloudflare örneği COLLIE_TOKEN ve bu ayarlanmışken COLLIE_TOKEN_NEXT alır (ADR 0103). Kalıcı ajanda yeni belirteci COLLIE_TOKEN_NEXT olarak ayarlayın, attach komutunu tekrar çalıştırıp Collie'yi yeniden başlatın, ardından değeri COLLIE_TOKEN konumuna taşıyın ve COLLIE_TOKEN_NEXT ayarını kaldırın.
Tek bir Collie içinde yalnız bir kalıcı ajan
Windows ana bilgisayarı veya barındırılan bir kalıcı ajan gibi uçbirimi olmayan bir örnek, kendi .env üzerinden tek bir kalıcı ajanı yönetebilir.
# a durable agent on this machine, as you
COLLIE_MUX=durable
COLLIE_DURABLE_SOCKET=/run/user/1000/durable/session.sock
# or a durable agent you deployed behind TLS
COLLIE_MUX=durable
COLLIE_DURABLE_URL=https://durable-member.example.com
COLLIE_DURABLE_TOKEN=your-32-byte-random-token-hereBöyle bir örnek, durable agent'ını default olarak adlandırır ve bu durable agent onun birincil oturumu olur. sources.json içindeki girdiler yine de onun yanında, başka adlar altında çalışmaya devam eder.
.env | config.toml | içerdikleri |
|---|---|---|
COLLIE_MUX=durable | [mux] mux | Bu örneği durable-only yapar |
COLLIE_DURABLE_SOCKET | [mux] durable_socket | Durable agent'ın özel soketi. URL ile birlikte kullanılmaz |
COLLIE_DURABLE_URL | [mux] durable_url | Durable agent'ın TLS arkasındaki adresi. Her zaman token ile birlikte |
COLLIE_DURABLE_TOKEN | [mux] durable_token | URL için taşıyıcı token. Bu token'ı içeren dosya 0600 modunda olmalıdır |
Soketi veya token'ı ile birlikte URL'yi ayarlayın, asla ikisini birden ayarlamayın. İkisinin de ayarlanması, token olmadan bir URL veya URL olmadan bir token bir yapılandırma hatasıdır: Collie başlar, günlükte hatayı belirtir ve durable agent'ı bu nedenle erişilemez olarak gösterir.
Eski bir sürüm, durable-only bir örneğin günlüklerini doğrudan <state>/durable/ içinde tutuyordu. Bu sürümün ilk başlangıcında, günlükte tek bir satırla birlikte bir defaya mahsus olmak üzere durable/default/ içine taşınırlar.
Token'ı değiştirmek için yenisini durable agent'a dağıtın, .env içinde ayarlayın ve collie restart komutunu çalıştırın. Durable-only bir örnek, bir crew yapısına ana bilgisayar adı altında katılır; bu nedenle liderle aynı ana bilgisayarı paylaştığında collie crew join <lead-address> --label durable ile ona bir ad verin.
sources.json içindeki tüm durable agent'ları bir süreliğine kapatmak için .env içinde COLLIE_PROGRAMS=off ayarlayın ve collie restart komutunu çalıştırın. Köprü daha sonra dosyayı yok sayar, tek bir satır günlüğe kaydeder ve durable agent içermeyen bir kurulum olarak çalışır; böylece telefonda Durable agents bölümü gösterilmez. collie doctor ve collie durable list, durable agent'ların kapalı olduğunu belirtir. Dosya olduğu gibi kalır: durable agent'ları geri getirmek için değişkeni kaldırın ve yeniden başlatın. Değişken, yukarıdaki eski ortam değişkeni biçimine dokunmaz.
Collie'nin bir durable agent'ın verilerini tuttuğu yer
Durable agent, konuşmalarının kaydını tutar. Collie ise durum klasöründe bir önbellek, alındılarını ve iletim belleğini tutar.
Durum klasörü ~/.local/state/collie/ dizinidir veya ayarlandığında COLLIE_STATE_DIR dizinidir. <program>, sources.json içindeki addır veya default olur. Her durable agent'ın klasörü 0700 modundadır ve her günlük 0600 modundadır.
| dosya | içerdikleri | ne kadar süreyle |
|---|---|---|
durable/<program>/<id>.jsonl | <id> konuşmanın base64url biçimindeki kimliği olmak üzere, Chat'in canlı bir konuşmaya ait kopyası | 8 MiB aşıldığında en yeni 2000 mesaja kırpılır. Tüm günlükler birlikte 256 MiB altında kalır: günlükte tek bir satır belirtilerek önce en eski konuşma silinir |
durable/<program>/<id>.cursor.json | Yeniden başlatmanın ardından oradan devam edebilmesi için Collie'nin okumayı bıraktığı yer | Günlüğü kadar süreyle |
answer-receipts.json | Bir telefonun gönderdiği her yanıt: istek kimliği, yanıtladığı kimlikler ve sonuç. Yazılan metin dahil değildir | Bir hafta, en fazla en yeni 1000 adet. İletilmekte olan bir yanıt en az bir gün kalır |
control-receipts.json | Her send, steer, stop ve belt eylemi: istek kimliği ve sonuç. Metin yalnızca özet olarak | Yukarıdaki gibi |
starter-receipts.json | Her başlatıcı dokunuşu ve açtığı konuşma | Yukarıdaki gibi |
durable-asks.json | Yeniden başlatmanın hiçbir şeyi iki kez iletmemesi için ana bilgisayara, durable agent'a ve araç çağrısına göre önceden iletilmiş sorular | Soru kapandıktan bir saat sonra. En fazla 2000 |
Chat'in hızlı açılmasının ve durable agent yavaşken çalışabilmesinin nedeni önbellektir. Kapanan bir konuşma her zaman durable agent üzerinden okunur, asla önbellekten okunmaz.
Bir durable agent, uzun bir konuşmanın yalnızca en yeni kısmını tutar. Bir konuşmanın başlangıcını Collie okumadan önce sildiyse, Chat onun yerine tek bir satır gösterir: "Daha eski mesajlar dışarıda bırakıldı: durable agent artık bunları tutmuyor." Telefonunuzda hiçbir şey kaybolmadı: Collie bu mesajlara hiçbir zaman sahip olmadı.
Telefonun gösterdiği
Kontrol panelinde bir Durable agents bölümü ve her durable agent için konuşmalarının bir listesi.
Her durable agent, Durable agents bölümünde adı, bir Experimental rozeti, çalışma zamanı ve burada mı yoksa başka bir yerde mi çalıştığı bilgisiyle bir satırdır. Sağ tarafta açık konuşmalarını ve size ihtiyaç duyulan renkte, sizden yanıt bekleyenleri sayar. Bir soru beklerken bu bölüm alanlarınızın yukarısına taşınır. Başlatılmakta olan veya erişilemeyen bir durable agent, sayıların yerine bu durumu belirtir. Reddedilen bir token ve reddedilen bir hat sürümü telefonda kendi ifadelerine sahiptir; collie doctor diğer tüm nedenleri belirtir.
Durable agent'ın konuşma listesini, bir mesajlaşma uygulamasının sohbet listesi gibi açmak için bir satıra dokunun. İlk önce sizden yanıt bekleyenler gelir, ardından diğer açık konuşmalar, sonra da Kapalı etiketi altındaki kapatılmış olanlar gelir. Açık olan bir konuşma Chat içinde açılır, kapatılmış olan ise salt okunur açılır. Bir durable agent merhaba mesajında neler yapabileceğini belirtir (asks, starters, send, steer, abort, rename, close, actions, history, reopen) ve telefon yalnızca belirttikleri için bir denetim çizer. Bir durable agent'ın ekranı yoktur, bu nedenle Terminal görünümü ve yazılan tuşları bulunmaz.
Bir durable agent'a gönderim yapıldığında, kuyrukta etiketi Collie'nin sıraya ilişkin kendi yorumudur. Collie, Pi'nin gelen kutusunda neyin beklediğini göstermez. Bir son tarihe kadar uyuyan bir görev, hiçbir zaman bekliyor olarak değil, boşta veya çalışıyor olarak gösterilir. Oturumlar daha fazla bilgi içerir.
Bir soru kartı, durable agent'ı adlandırır ve durable agent bir süre belirlediyse kalan süreyi gösterir. Durable agent içinde karara bağlanan veya zaman aşımına uğrayan bir soru, sohbette bir satır bırakır. Telefonda dayanıklı aracılar bunların her birini bir görselle gösterir.
Köprü üzerinden Gönderme ve Sorma
Bir durable agent'ın ekranı yoktur; bu nedenle Collie onun için hiçbir ekran okumaz. Bunun yerine köprü kendi durumunu okur. Bir durable agent, bir terminal bölmesiyle aynı Gönderme ve Sorma işlemlerini alır.
- Durum. Sıra, bölme durumundan gelir. Bir soru, en eski açık sorusundan gelir. Giriş kutusu her zaman boştur, çünkü bir durable agent'ın kutusu yoktur. Telefon bu durumu, bir terminal bölmesinde olduğu gibi aynı biçimde her bölmeyle birlikte alır.
- Bir gönderme.
POST /api/sendtelefondan bir istek kimliği alır. Köprü isteği diske yazar ve konuşmayı kilitler. Ardından metni, okuduğu sıra için durable agent'a bir kez gönderir. Yanıtı kanıttır ve makbuz aldığı istek kimliğini belirtir. Bir sıra sırasında durable agent metni o sıradan sonrası için saklar ve makbuzdaqueuedyazar. - Sonuçlar. Bir gönderme
sent, bir gerekçeylerefusedveyaunknownşeklinde sonuçlanır.unknown, durable agent'ın metni aldığını belirtmediği anlamına gelir. Tekrar göndermeden önce sohbeti okuyun. Durable agent bunu konuşmaya yazdığında göndermeeffectivehaline gelir.userögesi, o göndermenin istek kimliğini belirtir. Collie'nin okuyamadığı bir soru dahil olmak üzere herhangi bir soru açıkken düz gönderme reddedilir. Soruyu yanıtlayın veya Steer ya da Stop kullanın. Siz baktıktan sonra başlayan bir sıra göndermeyi reddeder ve durable agent'a hiçbir şey ulaşmaz. - Bir soru.
POST /api/ask/<id>bunu yanıtlar. Soru kimliği yalnızca tek kullanımlıktır. Yanıt, gördüğünüz sorunun karmasını taşır. Köprü bunu durable agent'ın şu anda listelediği soruyla karşılaştırır. İkisi farklı olduğunda durable agent'a hiçbir şey ulaşmaz. Yanıt, soruyu şu anki haliyle gösterir. Yanıt, durable agent'a kendi soru kimliğiyle gider. Hiçbir anahtar asla gönderilmez. Makbuzdachannel: programyazar ve karmayı saklar. - Kartta kalanlar. Bazı sorular tek bir dokunuşa sığmaz; bu nedenle durum bunları Collie'nin okuyamadığı bir soru olarak gösterir (
modal: unreadable). Bunları kendi kartında yanıtlarsınız. - Bir metin sorusu durable agent'ın kendi kartında kalır, çünkü yanıt yazdığınız bir satırdır. - Çoklu seçenek durable agent'ın kendi kartında kalır, çünkü yanıt birden fazla seçimdir. - Bir form durable agent'ın kendi kartında kalır, çünkü yanıt bir dizi alandır. - Always allow hiçbir zaman bir sözleşme seçeneği değildir. İzni bu sorudan sonra da devam eder. Bu nedenle durable agent'ın kartı önce ikinci bir dokunuş ister ve/api/asküzerinden tek bir dokunuş bu dokunuşu atlamamalıdır. - Sayaçlar.
collie doctorbu okumaları ve sonuçları tek bir satırda sayar,program.
Bu makinede telefon şu rotaları kullanır. Düz bir gönderme /api/send üzerinden gider ve soru kartına dokunma /api/ask üzerinden gider. Yazıcı, sonucu durable agent'ın sözleriyle başparmakta bildirir. Bir soru göndermeyi engellediğinde, kartına bir düğme gider. Bölmenin Recent sends listesi her makbuzu gösterir ve sıraya alınmış bir gönderme bunu belirtir. Steer ve Stop konuşmanın kendi rotalarında kalır, çünkü bir steer işlemi Gönderme Protokolü'nün bir parçası değildir. Bir crew member üzerindeki durable agent, tüm yazmalar için konuşmanın kendi rotalarını korur. Her rota, metin durable agent'a ulaşmadan önce sırayı denetler. Bir konuşmaya yapılan tüm yazmalar tek bir kilidi paylaşır. Bir gönderme çalışırken Steer ve kart yanıtı meşgul olarak reddedilir. Stop kilidi en fazla kendi zaman sınırına kadar bekler; böylece takılan bir gönderme Stop'ı hiçbir zaman engellemez.
Sürümler
Collie ve bir durable agent hello aşamasında bir hat sürümü üzerinde anlaşır ve bugün bir tane vardır: sürüm 1.
Collie 1..1 konuşur. Bir sürüm 2 çıktığında Collie, ondan sonraki bir alt sürüm boyunca sürüm 1'i kabul edecek ve bir sonraki alt sürüm bunu bırakacaktır. Bugün kabul edilecek önceki bir sürüm yoktur.
İki aralık uyuşmadığında Collie durable agent'tan başka bir şey okumaz. Günlüğüne, reddettiği her aralık için [durable] The durable agent speaks wire v2, this Collie speaks v1. Update Collie, or the agent's SDK. gibi bir satır eklenir. Telefonda durable agent'ın ana sayfası aynı cümleyi bir uyarı kutusunda gösterir ve gösterge panosundaki satırında Unreachable yerine Version mismatch yazar. collie doctor her iki aralığı da durable-hello satırında gösterir: incompatible: the durable agent speaks 2..3, this Collie speaks 1..1. Durable agent'ın her başlatılışında bir kez Collie, durable agent'ın uyuşmazlığı kendi tarafında günlüğe kaydedebilmesi için kendi sürümüyle birlikte bir hello de gönderir. Eski tarafı güncelleyin.
Çıkış
Özellik yalnızca bu deponun dışından biri onu kullanırsa kalır.
1.24.0 sürümüne kadar iki şeyden biri geçerli olmalıdır: hattı konuşan herkese açık bir depo bulunmalıdır ya da bir durable agent hakkında harici bir sorun veya tartışma bulunmalıdır. İkisi de yoksa durable kodu sürümden çıkarılıp experiments/ içine taşınır ve bu sayfa kaldırılır (ADR 0104). Kaldırıldığında, bir sources.json girdisi bir sürüm boyunca tek bir günlük satırıyla yok sayılır, soket durable agent'ınız için çalışmaya devam eder ve npm paketi silinmez, kullanımdan kaldırılır (ADR 0105).
Bu sayfayı GitHub üzerinde düzenleyin