Eklenti Geliştirici Belgeleri
AnBoWork masaüstü uygulaması için eklentiler oluşturun: AI için yeni araçlar ekleyin, kendi panelinizi bir oturumun yanına yerleştirin, sistem bildirimleri gönderin, yeni dosya formatlarını ayrıştırın. Başlamak için bir manifest.json artı bir giriş komut dosyası yeterlidir.
01Genel Bakış
AnBoWork eklentisi sade bir Node.js programıdır. Kurulumdan sonra uygulama bunu bağımsız bir alt süreç olarak çatallar (saf Node, Electron API yok) ve süreçler arası mesajlar üzerinden onunla konuşur. Hiçbir SDK paketine gerek yoktur; tek ihtiyacınız olan process.on('message') ve process.send().
Bir eklentinin yapabileceği her şey manifest.json'de statik olarak bildirilir: kurulum öncesi onay sayfası ve pazar incelemesi, herhangi bir eklenti kodu çalıştırmadan eklentinin hangi araçları eklediğini ve hangi izinlere ihtiyaç duyduğunu söyleyebilir. Tüm kullanıcı arayüzü (araç çubuğu simgeleri, ayarlar, komut paleti, bağlam menüleri), bildirimden ana bilgisayar tarafından oluşturulur; eklenti kodu hiçbir zaman ana pencerenin içinde çalışmaz. Yalnızca sabitlenmiş görünümler ve kayan paneller kendi HTML'nizdir ve yalıtılmış korumalı alan sayfalarında çalışırlar.
Bir bakışta yetenekler
| Bildirim alanı | Yetenek | Kullanıcıların bunu nerede göreceği |
|---|---|---|
tools | Yapay zeka için çağrılabilir araçlar ekleyin | Yapay zeka, konuşma sırasında onları otomatik olarak arar; araç çağrıları oturumda gösterilir |
views | Kalıcı görünüm oturumun sağ kenar çubuğuna yerleştirildi | Oturum araç çubuğundaki ekstra bir simge sayfanızı sağda açar |
ui | Bağımsız kayan pencere | Eklenti listesindeki "⋯" menüsünden açıldı |
sessionAction | Oturum araç çubuğunda kalıcı eylem simgesi | Tek tıklamayla belirttiğiniz aracı çalıştırır |
configuration | Ayarlar sayfasındaki girişler | Ayarlar → Eklenti yapılandırması; değerler her çağrıda iletilir |
commands | Ctrl/Cmd+K komut paleti girişleri | Komut paleti |
keybindings | Genel klavye kısayolları | Bir tuş kombinasyonu bir komutu tetikler |
menus | Oturum içerik menüsü öğeleri | Oturum satırındaki "⋯" / sağ tıklama menüsü |
documentParsers | Giriş kutusuna bırakılan dosyaları ayrıştırma | Kullanıcı eşleşen bir dosyayı bıraktığında otomatik olarak çağrılır |
activationEvents | Uygulamayla birlikte başlayın | Görünmez; arka plan zamanlayıcılarına ihtiyaç duyan eklentiler için |
permissions | Gerekli izinleri bildirin | Ön yükleme izin sayfası |
02Hızlı Başlangıç
Minimal bir eklenti yalnızca iki dosyaya ihtiyaç duyar.
1. manifest.json yazın
2. Giriş komut dosyasını yazın
3. Uygulamaya yükleyin
Sağ üst köşedeki AnBoWork → üst çubuk "Araçlar" → "Eklentiler" → "Yerel olarak yükle" seçeneğini açın, ardından eklenti klasörünü (veya bir zip dosyasını) seçin. Bir izin sayfası, beyan edilen izinleri ve kurulumdan önce her aracı listeler; etkinleştirmek için onaylayın.
4. Deneyin
Herhangi bir oturumda yapay zekaya "eklentiden Alice'e merhaba demesini isteyin" deyin. Araç açıklamasına göre yapay zeka say_hello'yi aramaya karar verir ve çağrı ve sonucu oturumda görünür.
03Bildirim Alanları
| Alan | Tip | Gerekli | Tanım |
|---|---|---|---|
id | string | Evet | Ters etki alanı stili, ör. com.example.my-plugin. Yalnızca harfler, rakamlar, noktalar ve kısa çizgiler. Bir kez yaratıldığında değişmez; Aynı kimliğin tekrar yüklenmesi, yeniden yükleme olarak değerlendirilir. |
name | string | Evet | Eklenti adı. description ile birlikte modele bağlam olarak beslenir, dolayısıyla İngilizce önerilir. |
version | string | Evet | Anlamsal versiyon; pazar bunu güncellemeleri tespit etmek için kullanır. |
description | string | Evet | Eklentinin ne yaptığını açıklayan bir cümle (İngilizce). |
author | string | HAYIR | Yazar. |
readme | string | HAYIR | Pazar yeri ayrıntı sayfasında gösterilen uzun biçimli açıklama, Markdown'ı destekler. İçindeki görseller https URL olmalıdır; zip dosyasında paketlenen dosyalara yönelik göreceli yollar desteklenmez. |
icon | string | HAYIR | Pazar yeri listesinde ve ayrıntı sayfasında gösterilen simge — zip'te paketlenmiş bir dosyanın göreli yolu (ör. icon.png). En az 128×128 boyutunda, SVG değil, PNG olmalıdır. |
main | string | Evet | Eklenti klasörüne göre giriş komut dosyası. .. klasörden kaçışa izin verilmez. |
permissions | string[] | Evet | network / filesystem / notifications; boş bir dizi olabilir. Bkz. "İzin Modeli". |
tools | object[] | Evet | Araç bildirimleri; boş bir dizi olabilir. Bkz. "Araçlar ve Çağrı Protokolü". |
documentParsers | object[] | HAYIR | Dosya ayrıştırma özelliği. |
ui | object | HAYIR | Yüzen panel:{ entry, title } |
views | object[] | HAYIR | Yerleştirilmiş görünümler:{ id, title, icon, entry, width? } |
sessionAction | object | HAYIR | Araç çubuğu simgesi, eklenti başına en fazla bir tane. |
configuration | object[] | HAYIR | Ayar girişlerinin listesi. |
commands | object[] | HAYIR | Komut paleti girişleri. |
keybindings | object[] | HAYIR | Kısayollar. command, commands[]'deki bir girişin tool'sine referans vermelidir, aksi takdirde kurulum reddedilir. |
menus | object | HAYIR | Şimdilik yalnızca session/context konumu mevcut. |
activationEvents | string[] | HAYIR | Şimdilik sadece onStartupFinished. |
Metin için dil kuralları
Manifestteki metnin iki hedef kitlesi var. modeli için: name, description, tools[].description, tools[].parameters.*.description. Bunları İngilizce yazın; modeller İngilizce araç açıklamalarını anlar ve parametreleri daha güvenilir şekilde doldurur. Kişiler için: tools[].summary (izin sayfasında tek satırlık özet), ui.title, views[].title, sessionAction.tooltip, configuration[].label, commands[].title ve title, menus içinde. Bunları hedef kullanıcılarınızın dilinde yazın.
04İzin Modeli
permissions kodun gerçekte ne yaptığını dürüstçe yansıtmalıdır. Yükleme öncesi izin sayfası her birini listeler; böylece kullanıcılar yükleme yapıp yapmayacaklarına karar verebilir; Pazaryeri incelemesi aynı zamanda beyanı koda göre de kontrol eder.
| İzin | Ne zaman beyan edilmesi gerektiği | Ev sahibinin ona nasıl davrandığı |
|---|---|---|
filesystem | Kullanıcı dosyalarını okuma veya yazma (proje kodunu okuma, belge oluşturma, verileri ana klasörde saklama) | Kullanıcıya gösterilen bilgilendirilmiş onay. |
network | Herhangi bir ağ isteğinde bulunma (üçüncü taraf API'ler, indirmeler) | Kullanıcıya gösterilen bilgilendirilmiş onay. |
notifications | show_notification ters RPC aracılığıyla sistem bildirimleri gösteriliyor | Enforced: bildirim olmadan çağrıldığında host_error değeri döndürülür ve herhangi bir bildirim gösterilmez. |
filesystem ve network şu anda çalışma zamanı sanal alanı değil, izin düzeyi bildirimleridir: ana bilgisayar fs veya fetch'yi engellemez. İşte tam da bu nedenle beyanların dürüst olması gerekir. Eksik beyan edilen eklentiler, pazar incelemesinde reddedilir ve keşfedildiğinde kullanıcının güvenini kaybeder. Aşırı beyanda bulunmayın (kullanılmayan izinler kullanıcıların tereddüt etmesine neden olur).Gizlilik ve veriler
context.cwd kullanıcının proje klasörüdür ve kaynak kodu ve hassas konfigürasyonu içerebilir; araç argümanları kullanıcının konuşmasını içerebilir. Özellik gerektirmedikçe bu verileri ağ üzerinden göndermeyin ve gönderdiğinizde neyin kime gönderildiğini description ve summary'de belirtin. Eklentinin kendi kalıcı verilerini, kullanıcının ana klasörü altında, eklenti kimliğinin adını taşıyan bir dosyada saklayın, böylece kaldırma sırasında bulunması kolaydır.
05Araçlar ve Çağrı Protokolü
beyan
| Alan | Tanım |
|---|---|
name | Uygulamanın tamamında benzersiz olan, küçük harfler ve alt çizgilerle yazılan araç adı (yerleşik araçlar ve diğer eklenti araçlarının yanı sıra modele kayıtlıdır). |
description | Modelin açıklaması (İngilizce). Üç şeyi belirtin: aracın ne yaptığını, ne zaman çağrılması gerektiğini ve ne zaman çağrılmaması gerektiğini kullanıcının ne söylediğini. Bu, yapay zekanın eklentinizi kullanıp kullanmadığına ilişkin en önemli alandır. |
summary | İzin sayfasında gösterilen, insanlar tarafından okunabilen tek satırlık özet. İsteğe bağlıdır ancak şiddetle tavsiye edilir; aksi takdirde bunun yerine kısaltılmış bir açıklama gösterilir. |
parameters | Her özellikte description bulunan standart JSON Schema nesnesi. Model, bağımsız değişkenleri kendisi doldurur ve ana bilgisayar bunları ekstra doğrulamaya gerek kalmadan iletir; bu nedenle kodunuzdaki gerekli alanları kontrol edin. |
renderAs | İsteğe bağlı; şu anda yalnızca checklist: ana bilgisayar, çağrı bağımsız değişkenlerinden todos dizisini bir kontrol listesi kartı olarak işler, aşağıya bakın. |
tools[]'de belirtilen araç adlarını çağırabilir; burada sessionAction.tool, commands[].tool ve menus içindeki tool alanı yalnızca yükleme sırasında boş olmayan dizeler olarak kontrol edilir; toplantı sahibi, adın tools[]'de bildirildiğini not doğrulamaz ve düğme, kısayol veya menü öğesi tetiklendiğinde yine de bu ad altında bir çağrı gönderir. Yani tamamen kullanıcı arayüzü tarafından tetiklenen bir eylem, tools[]'de hiç görünmeden tamamen kendi index.js'nizde gerçekleştirilebilir - ancak bu durumda yapay zeka bunu asla göremez veya çağıramaz. Aynı eylemin hem tıklanarak hem de bir sohbet isteğine göre hareket eden yapay zeka tarafından tetiklenebilmesini istiyorsanız, aynı adı tools[]'da da bildirin, böylece her iki giriş noktası da bir işleyiciyi paylaşır; yalnızca kullanıcı arayüzü olarak kalması gerekiyorsa, bunu belirtmeden bırakın; yalnızca eksiksiz görünmesi için bir giriş eklemenize gerek yoktur.Mesaj protokolü
Toplantı sahibi call_tool gönderir; eklenti aynı requestId'yi taşıyan tool_result veya tool_error ile yanıt vermelidir. 30 saniye içinde yanıtlanmayan çağrı zaman aşımına uğrar ve model bir hata alır.
content yalnızca text ve image blokları kabul eder (base64 data artı mimeType olarak görüntü); diğer türler bırakılır. details modele hiçbir zaman beslenmeyen keyfi yapılandırılmış verilerdir; ana bilgisayar kullanıcı arayüzü oluşturma ve kendi yerleştirilmiş görünümleriniz içindir.
Dosya sonuçları: dosya kartları
Kontrol listesi oluşturma: renderAs kontrol listesi
İyi bir açıklama yazmak
Emir cümlesindeki tetikleyiciyi açıklayın ("Kullanıcı şunu istediğinde bunu ara...") ve hariç tutmaları belirtin ("Bunu şunun için çağırma..."). Sonuç bir dosya ise modelden, bunun oluşturulduğunu iddia etmek yerine, döndürülen dosya bağlantısına referans vermesini isteyin. Bağımsız değişkenler harici bir nesil API'ye iletilirse, bunların hangi dilde olması gerektiğini söyleyin. "Yapılacakları yönet" gibi tek satırlık ifadelerden kaçının; model, aracı ne zaman kullanacağını bilemeyecektir.
06Sabitlenmiş görünümler (görünümler)
Yerleştirilmiş görünüm, oturumun sağ kenar çubuğundaki kalıcı bir sayfadır: oturum araç çubuğunda fazladan bir simge görünür ve açıldığında HTML'niz sağda gösterilir. Sayfa durumu (kaydırma konumu, taslaklar), VS Code kenar çubuğu görünümüyle aynı anlambilimi kullanarak oturum değiştirme ve daraltma/genişlemeden sağ çıkar.
| Alan | Tanım |
|---|---|
id | Eklentinin içinde benzersiz. |
title | Simgeye ilişkin ipucu metni (insan tarafından okunabilir). |
icon | Ana makine izin verilenler listesinden seçim yapın: git-branch, checklist. Simgelerin uygulama genelinde tutarlı olmasını sağlar; özel görseller kabul edilmez. |
entry | Eklenti klasörüne göre HTML dosyası. |
width | Piksel cinsinden isteğe bağlı varsayılan panel genişliği, 240 - 640, varsayılan 360. Kullanıcılar yeniden boyutlandırmak için sürükleyebilir ve boyut hatırlanır. |
Sayfa çalışma zamanı
Sayfa bir korumalı alanda çalışır (sandbox + contextIsolation, Düğüm yok, ana uygulama verilerine erişim yok) ve window.pluginHost'deki birkaç yöntemle yalnızca kendi eklenti süreciyle konuşabilir. Kendi stillerinizi getirin; Aşağıdaki örnekte olduğu gibi uygulamanın aydınlık/karanlık düzeninin takip edilmesi önerilir.
Önerilen model: ilk yüklemede invoke() ile kendi sorgu araçlarınızdan birini çağırın ve details'de yapılandırılmış veri döndürmesini sağlayın; daha sonra eklenti sürecindeki her değişikliği yoklama yerine ui_push ile aktarın. Yapay zeka görüşmedeki verileri değiştirdiğinde panel hemen yenilenir.
07Yüzen panel (ui)
ui: { entry, title } kullanıcıların eklenti listesindeki "⋯" menüsünden açacağı bağımsız bir kayan pencere (900×700) bildirir; yaklaştıkça yok edilir. Sayfa ortamı ve window.pluginHost API, sabitlenmiş görünümlerle aynıdır ve ui_push hem kayan panele hem de sabitlenmiş görünümlere sunulur. Ara sıra açılan büyük panellere uygundur; Oturumun yanında kalması gereken içerik için views tuşunu kullanın.
08Oturum araç çubuğu simgesi (sessionAction)
Eklenti başına en fazla bir kalıcı simge. Tıklandığında boş argümanlarla tool çağrılır, dolayısıyla aracın parametreler olmadan anlamlı bir şey yapması gerekir.
| Alan | Tanım |
|---|---|
tool | Tıklandığında çağrılacak araç. |
icon | İzin verilenler listesine eklenen simge adı. |
tooltip | Metnin üzerine gelin. |
visibleTool | İsteğe bağlı. Ayarlandığında, oluşturmadan önce boş argümanlarla çağrılır ve sonuçtaki boolean details.visible simgenin gösterilip gösterilmeyeceğine karar verir. "Geçerli klasör bir git deposu mu?" gibi çalışma zamanı kontrolleri için kullanışlıdır. |
09Ayarlar (yapılandırma)
Bildirilen girişler, ayarlar sayfasındaki eklenti yapılandırması altında görünür. Ana bilgisayar, kullanıcı tarafından değiştirilen değerleri saklar ve çağrının yapay zekadan, araç çubuğu simgesinden veya panelinizden gelmesine bakılmaksızın bunları her call_tool'de (id ile anahtarlanır, defaultValue'ye geri dönerek) context.config olarak iletir. Bunları asla sormanıza gerek yok.
| type | Şu şekilde oluşturuldu: | varsayılanDeğer türü |
|---|---|---|
select | Tek seçenekli liste; seçenekler optionsTool'dan gelir | string |
boolean | Geçiş anahtarı | boolean |
string | Bulanıklaştırmaya dayalı metin girişi | string |
number | Sayı girişi | number |
10Komut paleti / kısayollar / içerik menüsü
Üçü de "boş argümanlarla bir aracı çağırmak" için farklı giriş noktalarıdır; bir eklenti birkaç tane bildirebilir.
| Alan | Şekil | Tanım |
|---|---|---|
commands | { tool, icon, title }[] | Ctrl/Cmd+K komut paletinde gösterilir ve kullanıcı onu aradıktan sonra tetiklenir. |
keybindings | { command, key }[] | command, commands[]'deki bir girişin tool'sine eşit olmalıdır. key, mod+shift+g gösterimini kullanır; burada mod, macOS'de Cmd ve başka yerde Ctrl'dir. Diğer kısayollarla olan çakışmalar statik olarak kontrol edilmediğinden alışılmadık kombinasyonlar seçin. |
menus | { "session/context": { tool, icon, title }[] } | Bir oturum satırındaki menüye eklendi. Şimdilik yalnızca bu konum mevcut. |
11Belge ayrıştırıcılar (documentParsers)
Kullanıcı giriş kutusuna bir dosya bıraktığında, ana bilgisayar MIME türüne göre etkin eklentiler tarafından bildirilen ayrıştırıcıları arar ve dosya içeriğini eşleşen toolName'ye base64 olarak iletir. Bu, AI'nın çağırmaya karar verdiği bir araç değildir, bu nedenle ayrıca ayrıştırıcı aracını tools altında listelemeyin, aksi takdirde AI tarafından çağrılabilir bir araç olarak ortaya çıkacaktır.
12Ters RPC (host_request)
Eklenti işleminin Electron API'si yoktur. Gerçek bir sistem yeteneğine ihtiyaç duyduğunda ana bilgisayara host_request gönderir ve ana bilgisayar host_response veya host_error ile yanıt verir. Bu kanal call_tool'den tamamen bağımsızdır; bunu bir alet çağrısı yaparken veya bir zamanlayıcıdan kullanabilirsiniz.
| capability | params | result | Önkoşul |
|---|---|---|---|
show_notification | { title, body?, viewId? } | { shown: true } / { shown: false, reason: "disabled" | "unsupported" } | notifications iznini gerektirir. Kullanıcı ayarlarda masaüstü bildirimlerini kapattığında hata yerine devre dışı ifadesini döndürür. viewId sabitlenmiş görünümlerinizden birini işaret ettiğinde, bildirime tıklamak uygulamayı öne çıkarır ve o görünümü genişletir. |
render_pdf | { outputPath, title, content } | {} | içerik Markdown'dur; ana bilgisayar, yerleşik oluşturucusu ile bir PDF'yi çıktıPath'e dönüştürür. |
13Yaşam döngüsü
| Sahne | Davranış |
|---|---|
| Başlangıç | Varsayılan olarak tembel: uygulamayla başlatılmadı, araçlarınızdan birine (AI, araç çubuğu simgesi, panel, komut, belge ayrıştırma) ilk çağrı yapıldığında çatallandı. activationEvents: ["onStartupFinished"] bildiren eklentiler, uygulamanın başlatılması tamamlandıktan hemen sonra başlar; bunu sıradan araç eklentileri için değil, yalnızca arka plan zamanlayıcılarına (hatırlatıcılar, yoklama) ihtiyaç duyan eklentiler için kullanın. |
| İkamet eden kişi | Süreç bir kez başlatıldığında canlı kalır ve araç çağrılarında yeniden kullanılır. Durumu bellekte önbelleğe alabilirsiniz, ancak herhangi bir zamanda yeniden başlatılabileceğini varsayın. |
| Kaza | İşlem beklenmedik bir şekilde sonlandırılırsa ana bilgisayar işlemi yeniden başlatır: hemen, ardından 5 ve 15 saniye sonra. Art arda 3 başarısızlıktan sonra "çöktü" olarak işaretlenir ve artık yeniden denenmez; kullanıcılar durumu eklenti sayfasında görür. Uçuş sırasında tüm dönüş hatalarını çağırır. |
| Devre dışı bırak / kaldır / yeniden yükle | İşlem sonlandırılır ve sabitlenmiş görünümler ve yüzen paneller yok edilir; yeniden yükleme tüm klasörü değiştirir. |
| Günlükler | stdout/stderr'niz, eklenti kimliği ön ekiyle uygulama günlük dosyasına yazılır. Düz console.log hata ayıklama için yeterlidir; bkz. "Hata Ayıklama ve SSS". |
ELECTRON_RUN_AS_NODE=1 ile başlar, cwd eklenti yükleme klasörüdür ve Node sürümü, uygulamayla birlikte verilen Electron ile eşleşir. Global olarak kurulu herhangi bir pakete güvenmeyin ve npx'nin var olduğunu varsaymayın.14Paketleme ve Yayınlama
Ambalajlama
Eklenti klasörünü arşiv kökündeki manifest.json ile sıkıştırın. Üçüncü taraf bağımlılıklarınız varsa, node_modules'in tamamını göndermek yerine ilk önce bunları esbuild/webpack ile tek bir dosyada paketleyin.
Pazarda yayınlama
AnBoWork → Araçlar → Eklentiler → "Pazaryeri" sekmesi → sağ üst köşedeki "Eklentiyi yayınla" seçeneğini seçin ve ardından zip dosyasını yükleyin. Gönderimler, bildirim bildiriminin kodla (özellikle izinlerle) eşleştiğini kontrol eden incelemeye girer. Onaylandıktan sonra, diğer kullanıcılar onu piyasada bulabilir ve yükleyebilir ve AI, gerekli gördüğünde kullanıcılar için doğrulanmış eklentileri otomatik olarak yükleyebilir.
Güncellemeler
version'yi artırın ve tekrar yayınlayın. Uygulama, yüklü sürümü Market sürümüyle karşılaştırır ve güncelleme ister; yeniden yükleme kullanıcının etkin durumunu ve ayar değerlerini korur.
15Tam örnek: Yapılacaklar Çeyreği
Gerçek, çalışan bir eklenti (kırpılmış): Yapay zeka yapılacak işleri ekleyip kaldırabilir, sağ kenar çubuğu gerçek zamanlı olarak yenilenen bir pano gösterir ve sistem bildirim hatırlatıcıları gönderebilir. Bu üçünün zincirlenmesi, araç protokolünü, sabitlenmiş görünüm itmelerini ve ters RPC'yi kapsar.
16Hata ayıklama ve SSS
| Belirti | Nedeni ve çözümü |
|---|---|
| Yükleme sırasında bildirim doğrulaması başarısız oluyor | Mesajda belirtilen her alanı "Bildirim Alanları" tablosuna göre kontrol edin: kimlik biçimi, ana/giriş .. içermemelidir, simge izin verilenler listesinde olmalıdır, tuş bağlamaları komutu komutlarda mevcut bir araca işaret etmelidir, genişlik 240 ile 640 arasındadır. |
| Yapay zeka asla aracımı çağırmaz | Neredeyse her zaman bir description sorunu: tetikleyici net değil veya İngilizce yazılmamış. Bkz. "İyi bir açıklama yazma". Ayrıca takım adının başka bir takımla çakışmadığını da kontrol edin. |
| Arama zaman aşımı (30 sn) | Giriş komut dosyası tool_result ile yanıt vermedi. Genellikle requestId geri yansımaz, type mesajı yanlış yazılır veya komut dosyası başlangıçta atılıp çıkılır. Uygulama günlüğünde [plugin:your-id] ön eki olan satırları arayın. |
| Eklenti durumu "çöktü" olarak görünüyor | Art arda 3 başarısız başlatma. Genellikle eksik bir paketin require'si; eklenti klasöründe node index.js komutunu çalıştırmak onu yeniden üretir. Düzelttikten sonra eklenti sayfasında eklentiyi kapatıp tekrar açın. |
| Panel boş açılıyor | Yanlış entry yolu veya sayfada bir JS hatası. Sayfa, Node'un require'si olmayan bir korumalı alanda çalışır; yalnızca window.pluginHost mevcuttur. |
| Bildirim görünmüyor | Sırayla kontrol edin: bildirimde notifications belirtilir; sonuç shown:false değildir (kullanıcı masaüstü bildirimlerini kapatmıştır); işletim sistemi AnBoWork'den gelen bildirimlere izin verir. |
| Ayar değerleri okunamıyor | Değerler params değil, message.context.config[id] cinsindendir. |
Günlük dosyası konumu
| İşletim Sistemi | Yol |
|---|---|
| macOS | ~/Library/Logs/AnBoWork/main.log |
| Windows | %USERPROFILE%\AppData\Roaming\AnBoWork\logs\main.log |