Obsidian / AI eklentisinin veri yolu
Resmi materyaller ve sabit kaynaklarla onaylayınObsidian×AI eklentisinin mevcut konumu
Neler yapılabilir ve tehlikeli olabilir [2026]
Bu sayfa Japonca aslından makine çevirisiyle hazırlanmıştır. Japonca aslını okuyun
Notun hangi bölümü, hangi özellik üzerinden nereye aktarılıyor? Copilot, Smart Connections ve Text Generator için sabitlenen sürümleri inceleyip belgelerden öğrenilenlerle gerçek iletişimde doğrulanmamış noktaları karşılaştırıyoruz.
Seçmeden önce modele, bağlama, dizine ve ek işlevlere bakın
"Yerel destek" kelimesi tek başına tüm eklentinin hedefini belirlemez. Modele iletilen notların alıntıları, bir dizinin nerede yapılacağı, web arama ve belge dönüştürme hizmetleri ve teşhis ve güncelleme onayı ayrı ayrı kontrol edilir.
- Modelsağlayıcı・endpoint・agent
- Referans bağlamıSeçimler, alıntılar, şablonlar
- Dizin ve aramaYerel veya başka bir sunucu
- Ek işlevWeb, belge dönüştürme, teşhis, güncelleme
Bu diyagram resmi materyalleri okumak için bir organizasyondur. Bu gerçek bir iletişim kaydı değildir. Karşılaştırma, sabit malzemelerin ve kaynakların bir onayıdır ve yapılandırma ekranının çalışmasını veya gerçek taleplerin ve sağlayıcıların operasyon denetimini içermez.
İlk olarak, aşağıdaki tabloda kullandığınız fonksiyonun yolunu kontrol edin. Tablodaki "kaynak", koddan okunan sabitleri ve dalları ve "kaynak açıklaması", README ve kılavuzun açıklamasını temsil eder.
3'in sabit sürümünü hedef ve ayarlarla karşılaştırın
| Sabit versiyon | Belgede gösterilen rota | Bağlam ve indeks | Tuşların ve ayarların onaylanması | Henüz doğrulanmamış noktalar |
|---|---|---|---|---|
| Copilot 4.0.12 | Sağlayıcının açıklaması:barındırılan Brevilabs ve kurumsal sağlayıcıdır. Cloud BYOK belirtilen sağlayıcı/uç noktadır ve Yerel BYOK yerel uç noktadır. Opencode, Claude ve Codex'in de kendi rotaları vardır. Q03 | Seçilen notlardan alıntılar model bağlamına gider. Miyo'nun dizini ve arama hedefi ayrı bir ortamda yerel/uzaktır. Web araması, belge dönüştürme ve proje bağlamı için ek rotayı kontrol edin. Q03/ Q05 | Kaynak: SecretStorage bulunup bulunmadığını kontrol eden getter; enableMiyo=false ve activeBackend=opencode gibi başlangıç sabitleri. Gerçek saklama davranışı ve güncel GUI doğrulanmadı. Q07 / Q08 / Q09 | Gerçek yük, dizin hedefi, terminal anahtar depolama ve şifreleme, arka uç tutma, öğrenme dışı politika ile uyumluluk. Kendi kendine seçilen tanılama ZIP yüklemesi genellikle istekten ayırt edilir. |
| Akıllı Bağlantılar 4.7.2 | Sağlayıcının açıklaması: Yerleşik yerel gömme modeli için kılavuz. API anahtarını gerektirmeyen bir dizinin nasıl oluşturulacağını açıklar. Q10/Q11 | README, etkinleştirmeden sonra Vault için dizin oluşturulduğunu belirtir. Ayarların ve modelin bazı bölümleri dış bileşenlere bağlıdır. Tüm yapılandırmaların veri yollarını eksiksiz incelemedik. | Kaynak: İlk kılavuza verilen bir GET to GitHub en son sürüm ve URL var. Yerel gömme açıklamasından, tam bir iletişim olmadığı belirlenemez. Q12/Q13 | Gerçek indeks, model edinimi, tüm bağımlılık, gerçek iletişim ve yük, alternatif model, anahtar depolama, genel telemetri/tutma. |
| Metin Oluşturucu 0.8.7 | Kaynak başlangıç değeri:OpenAI Sohbet (Langchain), https://api.openai.com/v1, anahtar boş. Ollama sağlayıcısı set basePath'i alır. Q15/Q23/Q24 | includeClipboard=true ile bir değer alabilen bir dal. İlk şablon başlık・starredBlocks・tg_selection'dır. Gerçek istemde yer alan değerin ayrı olarak kontrol edilmesi gerekir. Q15/Q17 | Kaynak başlangıç değeri:encrypt_keys=false. Şifrelenemiyorsa/geçersizse, sabit bir önek + giriş anahtarı döndüren bir daldır. Düz anahtar alanı boş olsa bile, şifrelendiği belirlenemez. Q15 / Q19 / Q20 / Q21 / Q22 | Gerçek yük, güncel GUI, terminal şifreleme sonuçları, tam işlevli iletişim, faturalandırma ve yanıt kalitesi ve genel telemetri/tutma. |
BYOK, kendi anahtarlarını ve uç noktalarını kullanan bir yöntemdir. " "Kendi anahtarınızı kullanın" ve "işlem sadece terminalde kalacak" farklı koşullardır.
Copilot: Bir model seçseniz bile, ek işlevlerin yolu ayrı kalacaktır
Kılavuzun sabit sürümü barındırılan, Cloud BYOK, Local BYOK, opencode, Claude ve Codex işleme hedeflerine ayrılmıştır. Örneğin, Yerel BYOK modeli yerel bir uç nokta olarak açıklansa bile, kullanılan beceri ve proje bağlamına bağlı olarak başka bir hizmet dahil olabilir. Q03
Ayrı not referansları ve Miyo dizinleri
Temsilcinin notu okuduğuna ve gerekli parçayı seçim modelinin istemine koyduğuna dair bir açıklama var. " "Sadece Temsilci Sohbetini açarak Vault'in tamamını yükleme" davranışı açıklanmadı. Miyo'nun yerel bir bağlantısı ve uzak bir sunucu bağlantısı vardır ve dizin ve arama hedefi ayrı ayrı seçilir. Aramada bulunan alıntı, modelin bağlamına da uyar. Sadece yerel dizini kullanarak, alıntının model sağlayıcısına geçmediği söylenemez. Q03/Q05
Belge işleme tek tip değildir. Belgeye göre, Ajan Sohbeti'nin Miyo işlemi yerel CLI tarafından yapılır, Hızlı Sohbet bağlantı hedefi Miyo hizmetini kullanır ve uzaksa o sunucu tarafından işlenir. Web, YouTube ve ikili dosyaları kullanan kaydedilmiş proje bağlamı, barındırılan proje hizmetini kullanabilir ve bu, Miyo'nun seçiminden farklı bir rotadır. Q03
Self-Host Modunun iletişimi engellemesi garanti edilmez
Kılavuz, Self-Host Mode içinde bile bulutun devre dışı kalmadığını açıkça belirtir. Seçilen Claude, Codex, bulut modeli veya arama sağlayıcısına veri gönderen yollar devam eder. Bu ayarlar, kullanmak istediğiniz her özelliğin veriyi kabul ettiğiniz bir yerde işleyip işlemediğini kontrol etmek içindir. Q04
Anahtar alıcı, başlangıç sabiti ve teşhis politikası kendi başlarına okunur
KeychainService confirmed'in kapsamı, app.secretStorage'in varlığını veya yokluğunu kontrol eden bir alıcıdır ve değilse bir hataya neden olur. Bu, anahtarı gerçekten kaydetmenin veya işletim sisteminin şifrelemesini doğrulama kaydının bir sonucu değildir. enableMiyo=false, enableMiyoSearchSkill=false, activeBackend=opencode, debugFullFrames=true kaynaktaki başlangıç değerleridir ve taşınan ayarların veya okuyucu GUI'sinin değerini göstermez. Q07 / Q08 / Q09
README, barındırılan isteğin rastgele UUID'sini ve okuyucunun yüklemeyi seçtiği tanılama ZIP'sini açıklar. ZIP'in 60 gün sonra silinmesi, geçici işlenmesi, saklanmaması ve barındırılan isteklerin öğrenilmemesi sağlayıcısı tarafından açıklanan politikadır. Burada arka ucun çalışmasını denetlemedik. Teşhis ZIP'inin yalnızca debugFullFrames=true'den otomatik olarak gönderileceğini belirlemek de imkansızdır. Q02
Smart Connections: Yerel gömme ve tüm iletişimlerin varlığı veya yokluğu açıklaması
README, yerleşik yerel modelin Vault için dizin oluşturduğunu ve API anahtarı gerektirmediğini belirtir. Bu, ilgili notları bulma mekanizmasının açıklaması olarak okunabilir; ancak bu karşılaştırmada modeli çalıştırmadık, gerçek dizin oluşturma sürecini veya ağ iletişimini gözlemlemedik. README’deki gizlilik, çevrimdışı çalışma ve mobil kullanım açıklamalarını da sağlayıcının beyanları olarak ele alıyoruz. Q10 / Q11
Buna karşılık, kendi src/main.js kodunda initialize sonrasındaki güncelleme kontrolü, GitHub latest-release adresine GET isteği zamanlar. İlk kullanıcının StoryModal bileşenine smartconnections.app içindeki URL aktarılır. Bu, ağ iletişimiyle ilgili kod yolunun incelemesidir. StoryModal uygulaması bağımlılık tarafındadır; URL öğesinin gerçekten yüklenip yüklenmediği veya hangi payload değerlerinin aktarıldığı doğrulanmadı. Q12 / Q13
Bazı modeller, ayarlar, HTTP vb. Akıllı Ortam/jsbrains ile ilgili harici paketlere atıfta bulunur. Tek başına bu aralıkta, "tüm işlevlerin terminalde olduğu", "telemetri olmadığı" ve "notların her zaman gönderileceği" belirlenemez. Yerel dizinin açıklamasını, güncelleme onay kodunu ve onaylanmamış bağımlılığı ve gerçek iletişimi ayırırsanız, incelenecek ek nesneyi görebilirsiniz. Q14
Metin Oluşturucu: Bağlam önerilerini ve anahtar depolama dallarını kontrol edin
Panoyu ve gerçek istemi alabilecek ayarlar farklıdır
Sabit sürümün başlangıç ayarı includeClipboard=true'e sahiptir ve bağlam oluşturucu, değer doğruysa panoyu alabilecek bir dalına sahiptir. Öte yandan, alıntılanan ilk şablondaki title, starredBlocks ve tg_selection pano yer tutucu değildir. Q15/ Q17
Çözümlenmiş değer şablona, ön maddeye, bağlam seçeneklerine ve seçime bağlı olarak değişir. Mevcut değerler listesini gerçek istekteki değerler olarak aynı şekilde ele almayın. Bu kod onayı "pano her zaman gönderilir" veya "tüm Vault her zaman gönderilir" sonucuna gelmez. Q17/Q18
Düz anahtar alanındaki boş karakterler şifreleme kanıtı değildir
Başlangıç değeri encrypt_keys=false'dir. Kaydetirken düz anahtar sütununu boşaltma işlemi ve sırla ilgili başka bir alan hazırlama işlemi vardır. Şifreleme kullanılamadığında veya encrypt_keys devre dışı bırakıldığında, getEncryptedKey sabit öneki ve giriş anahtarını birbirine bağlayan bir değer döndürür. Alan adı şifrelenmiş/karmalanmış içerse bile, tek başına şifrelenmiş baytlar olduğu belirlenemez. Q15 / Q19 / Q20 / Q21 / Q22
anahtarı girilmediğinden, bu terminalin gerçek depolama ve safeStorage işleminin içeriği doğrulanmadı. Anahtarlar içeren yapılandırma dosyalarını ve tanılama kayıtlarını paylaşmadan önce yalnızca düz sütuna değil, aynı zamanda kaydedilen diğer değerlere de bakmanız gerekir.
İlk sağlayıcıyı ve yerel yazışmayı ayrı ayrı seçin
Kaynağın ilk sağlayıcısı OpenAI Sohbet (Langchain) ve uç nokta https://api.openai.com/v1'dir. Ollama sağlayıcısının set basePath'i alan bir uygulaması vardır. Tek başına yerel uyumlu bir sağlayıcı olması, diğer işlevler için işlem hedefi veya tam iletişim olmadığını kanıtlamaz. Q15 / Q23 / Q24
Ekli istek, otomatik öneriler, eğik çizgi önerileri, JavaScript yürütme, alıntılanan başlangıç değerinde KAPALI. Bunlar aynı zamanda mevcut GUI'nin gerçek ölçümleri değildir. Lütfen kullanmak istediğiniz şablonu ve ortamınızdaki kayıtlı ayarları kontrol edin. Q15/Q16
Kullanımınıza göre kontrol etmeniz gereken ayarlara karar verin
| Ne yapmak istiyorsun | Hedef onaylanacak | Sadece bu karşılaştırmayla anlayamadığınız şey |
|---|---|---|
| Notları bulut modeliyle işlemek | model/sağlayıcı/uç nokta, seçim, alıntı, şablon, aracı/Kullanılacak beceri | Gerçek yük, sağlayıcı işlemi, faturalandırma, yanıt kalitesi |
| Yerel olarak bir dizin yapmak istiyorum | gömme/indeks işleme hedefi, uzak sunucu ayarı, arka sahne modeli, model edinimi ve ek işlevler | Tüm fonksiyonların iletişim durdurma, tüm bağımlı rotalar, terminaldeki gerçek dizin |
| Anahtarları kaydetme ve paylaşma kapsamını bilmek istiyorum | Kaydedilecek alanlar, şifrelenemeyen dallar ve günlüklerin/tanılamaların/ayarların nerede paylaşılacağı | Gerçek depolama baytlarına ve terminalin arka uçta saklanması ve silinmesine uygunluk |
Ayarları değiştirdikten sonraki durum, bu tablodaki gerçek ölçümün sonucu değildir. Not defterinizi kullanmadan önce, hangi işlevleri kullanacağınıza ve hangi verilere geçeceğine karar vermek için bir okuma yöntemi olarak kullanın.
Sık sorulan sorular
Yerel bir model seçersem, herhangi bir eklenti iletişim kurmaz mı?
Akıllı Bağlantılar dışarıya notlar gönderir mi?
Text Generator'da includeClipboard=true, panonun gönderilmesi gerektiği anlamına mı geliyor?
Kaydedilen verilerin api_key'i boşsa, anahtar şifrelenmiş mi?
Bu makale AI yanıt kalitesini, ücretleri ve iPhone davranışını karşılaştırıyor mu?
Temelin onaylanmış sürümü ve orijinal metni
Aşağıdaki, 30 Eylül 2026'da 14:25 UTC'de kaydedilen resmi sürüm ve sabit taahhüttür. " O sırada onaylanan sürümdür ve gelecekte en son sürümü garanti etmez. Minimum Obsidian manifesto değeridir. Gerçek terminalin çalışması Mobil uyumlu bayraktan çıkarılmamaktadır.
- Copilot 4.0.12 · minimum Obsidian 1.11.4 · serbıra · 8c56781c43
- Akıllı Bağlantılar 4.7.2 · minimum Obsidian 1.8.7 · yayın · 92e8d56c66
- Metin Oluşturucu 0.8.7 · minimum Obsidian 1.6.0 · yayın · 4b9ddf8767
Resmi kayıt defteri de 2db5da29e67e7600176c8c9450fd1c36c3a6831b'i taahhüt etmek için düzeltildi. 24 teklifi, 14 dosyası ve 579 satırı için orijinal dosyanın bayt/SHA256, satır aralığı ve alıntısı ile eşleştiğini doğruladık. Materyalin sabit sürümünün tekrarlanabilirliğini doğrulamak için bir kontroldür ve bir çalışma zamanı gizlilik kimlik doğrulaması değildir.
JSON ile 24'in sabit fiyat tekliflerini ve onay aralığını okuyun
Ana açıklama ve kod teklifi
Orijinal İngilizce metin ve kod sabit taahhüt kapsamındadır. Tablodaki Q numarasından GitHub'in orijinal metnine geçebilirsiniz.
Copilot · docs/copilot-plus-and-self-host.md · Q03
Sabit işlemenin orijinal metnini açın
75:
76: | Model source | How access works | Who processes the prompt |
77: | --------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------- |
78: | **Copilot-hosted** | Lite, Plus, or included Supporter access | Brevilabs and the enterprise model provider used for that model |
79: | **Cloud BYOK** | Your API key under BYOK | The provider and endpoint you configured |
80: | **Local BYOK** | Ollama, LM Studio, or another local OpenAI-compatible endpoint | Your local endpoint |
81: | **opencode-reported model** | Authentication managed by opencode | The provider behind that opencode model |
82: | **Claude** | Claude Code login or environment | Anthropic under your Claude account |
83: | **Codex** | Codex CLI login through `codex-acp` | OpenAI under your Codex or ChatGPT account |
84:
85: A Claude or ChatGPT subscription is not an API key. Use the Claude or Codex Agent Chat setup for those subscriptions. Use BYOK only when you have API access or an OpenAI-compatible endpoint.
86:
87: ## Understand service data routes
88:
89: The selected model is only one possible route. A feature may call another service for the part of the task you asked it to perform:
90:
91: - A **Copilot-hosted Skill** sends the search query, URL, or document needed by that Skill to Brevilabs.
92: - **Plus document processing** sends the supported document to Copilot's hosted processor.
93: - In **Agent Chat**, **Miyo document processing** runs through the local Miyo CLI, so PDF and EPUB parsing stays on this computer even when search uses a remote Miyo server.
94: - In **Quick Chat**, **Miyo document processing** uses the connected Miyo service. A configured remote Miyo server processes the document there rather than on this computer.
95: - Saved **project context** that needs web, YouTube, or binary-file conversion can use Copilot's hosted project service. The Miyo Document Processor choice does not change that project route.
96: - An agent can read a local note and include relevant text in the prompt sent to the selected model. Opening Agent Chat alone does not upload the whole vault.
97:
98: For a workflow that does not send task content to Brevilabs, use direct Markdown context, local tools or local Miyo, and a local model. Disable Copilot's cloud-backed Skills for every agent you use. Do not add web pages, YouTube links, or binary files as saved project context when their hosted conversion is outside your intended boundary.
99:
100: The [privacy policy](https://www.obsidiancopilot.com/en/privacy) describes how Copilot's hosted requests are processed. Your model provider and Miyo server have their own boundaries and terms.Copilot · docs/copilot-plus-and-self-host.md · Q04
Sabit işlemenin orijinal metnini açın
103:
104: Supporter and eligible legacy licenses can open **Settings → Copilot → Self-Host** and enable **Self-Host Mode**.
105:
106: When it is on, Copilot:
107:
108: - Lets you supply Firecrawl, Perplexity, Parallel, or Exa credentials for web search.
109: - With OpenCode selected, routes Agent Chat web searches through that selected provider while keeping its API key inside Obsidian. This does not require Obsidian's command line interface.
110: - Disables OpenCode's native web-search and web-fetch tools so they cannot bypass the selected route. Full-page fetching through OpenCode is unavailable until the self-host providers share a supported fetch interface.
111: - Lets you supply a Supadata key for YouTube transcripts.
112: - Directs you to BYOK for local or self-hosted model endpoints.
113: - Flags and sorts cloud agents and models below local or self-hosted choices.
114:
115: It does not disable the cloud. Claude, Codex, Copilot-hosted models, cloud BYOK providers, Firecrawl, Perplexity, Parallel, Exa, and Supadata can still send data to their services when you select them. The warnings make those routes visible so you can decide.
116:
117: You do not need Self-Host Mode to use a local BYOK model or local Miyo. Those are available independently.Copilot · src/services/keychainService.ts · Q09
Sabit işlemenin orijinal metnini açın
239: /** Whether the OS keychain is available in this Obsidian version. */
240: // DESIGN NOTE — intentionally only checks for the `secretStorage` object,
241: // not individual methods (`getSecret`/`setSecret`/`listSecrets`). Obsidian
242: // ships SecretStorage as a single API surface (1.11.4); there is no
243: // released version where the object exists but methods are missing.
244: // Capability-probing each method would add branching for a partial-API
245: // world that does not exist. If a future review flags this again, point
246: // them at this note.
247: isAvailable(): boolean {
248: return !!this.app.secretStorage;
249: }
250:
251: /** Get the current vault namespace ID. */
252: getVaultId(): string {
253: return this.vaultId;
254: }
255:
256: /**
257: * Set the vault namespace ID from persisted settings.
258: * Reason: called during load to replace the path-derived fallback with the
259: * stable persisted ID, so vault renames don't orphan keychain entries.
260: */
261: setVaultId(id: string): void {
262: this.vaultId = id;
263: }
264:
265: /**
266: * Access SecretStorage with a runtime guard.
267: * Reason: replaces scattered non-null assertions with a single guard
268: * that produces a clear error when keychain is unavailable.
269: */
270: private get storage(): SecretStorage {
271: if (!this.app.secretStorage) {
272: throw new Error("OS keychain (SecretStorage) is not available.");
273: }
274: return this.app.secretStorage;Akıllı Bağlantılar · src/main.js · Q13
Sabit işlemenin orijinal metnini açın
144: async check_for_updates() {
145: if (await this.is_new_plugin_version(this.manifest.version)) {
146: // console.log("opening release notes modal");
147: try {
148: this.ReleaseNotesView.open(this.app.workspace, this.manifest.version);
149: } catch (error) {
150: console.error('Failed to open ReleaseNotesView', error);
151: }
152: await this.set_last_known_version(this.manifest.version);
153: }
154: window.setTimeout(this.check_for_update.bind(this), 3000);
155: }
156:
157: async check_for_update() {
158: try {
159: const { json: response } = await requestUrl({
160: url: "https://api.github.com/repos/brianpetro/obsidian-smart-connections/releases/latest",
161: method: "GET",
162: headers: {
163: "Content-Type": "application/json",
164: },
165: contentType: "application/json",
166: });
167: const latest_release = response.tag_name;
168: if (latest_release !== this.manifest.version) {
169: if (!this.update_available || this.latest_release_version !== latest_release) {Metin Oluşturucu · src/default-settings.ts · Q15
Sabit işlemenin orijinal metnini açın
4: const DEFAULT_SETTINGS: TextGeneratorSettings = {
5: version: pkg.version as any,
6: endpoint: "https://api.openai.com/v1",
7: models: [],
8: api_key: "",
9: encrypt_keys: false,
10: selectedProvider: "OpenAI Chat (Langchain)",
11: max_tokens: 5000,
12: temperature: 0.7,
13: frequency_penalty: 0.5,
14: showStatusBar: true,
15: outputToBlockQuote: false,
16: freeCursorOnStreaming: false,
17: allowJavascriptRun: false,
18: experiment: false,
19: promptsPath: "textgenerator/templates",
20: textGenPath: "textgenerator/",
21: prefix: "\n\n",
22: tgSelectionLimiter: "^\\*\\*\\*",
23: stream: true,
24: context: {
25: customInstructEnabled: true,
26: includeClipboard: true,
27: customInstruct: `Title: {{title}}
28:
29: Starred Blocks: {{starredBlocks}}
30:
31: {{tg_selection}}`,
32:
33: contextTemplate: `Title: {{title}}
34:
35: Starred Blocks: {{starredBlocks}}
36:
37: {{tg_selection}}`,
38: },
39: requestTimeout: 300000,
40: options: {Metin Oluşturucu · src/scope/context-manager.ts · Q17
Sabit işlemenin orijinal metnini açın
355: {},
356: this.getFrontmatter(this.getMetaData(templatePath)),
357: contextObj.frontmatter
358: );
359:
360: if (contextOptions.includeClipboard)
361: try {
362: blocks["clipboard"] = await this.getClipboard();
363: } catch {
364: // empty
365: }
366:
367: const options = {
368: selection,
369: selections,
370: ...blocks["frontmatter"],
371: ...blocks["headings"],
372: content: ctnt,
373: context,
374: ...blocks,Metin Oluşturucu · src/main.ts · Q20
Sabit işlemenin orijinal metnini açın
664: encryptAllKeys() {
665: // check if user have LLMProviderOptionsKeysHashed object (upgrading from older version)
666: this.settings.LLMProviderOptionsKeysHashed ??= {};
667:
668: const keyList: string[] = [];
669:
670: this.settings.api_key_encrypted = this.getEncryptedKey(
671: this.settings.api_key
672: );
673:
674: // get all secret keys
675: Object.entries(this.settings?.LLMProviderOptions).forEach(([key1, l1]) => {
676: if (typeof l1 != "object") return;
677: Object.entries(l1).forEach(([key2, l2]) => {
678: if (key2.toLowerCase().includes("key") && typeof l2 == "string") {
679: keyList.push(`${key1}.${key2}`);
680: }
681: });
682: });
683:
684: keyList.forEach((pth) => {
685: const keyval =
686: (get(this.settings?.LLMProviderOptions, pth) as never as string) || "";
687:
688: const encrypted = this.getEncryptedKey(keyval);
689: this.settings.LLMProviderOptionsKeysHashed[pth] = encrypted;
690: });
691: }
692:
693: removeApikeys(settings: typeof this.settings): typeof this.settings {
694: const LLMProviderOptions = JSON.parse(
695: JSON.stringify(settings?.LLMProviderOptions)
696: ) as typeof this.settings.LLMProviderOptions;
697:
698: // get all secret keys
699: Object.entries(LLMProviderOptions).forEach(([key1, l1]) => {
700: if (typeof l1 != "object") return;
701: Object.entries(l1).forEach(([key2, l2]) => {
702: if (key2.toLowerCase().includes("key") && typeof l2 == "string") {
703: set(LLMProviderOptions, `${key1}.${key2}`, "");
704: }
705: });
706: });
707:
708: return {
709: ...settings,
710: api_key: "",
711: LLMProviderOptions,
712: };Metin Oluşturucu · src/main.ts · Q21
Sabit işlemenin orijinal metnini açın
742: getEncryptedKey(apiKey: string) {
743: if (!safeStorage?.isEncryptionAvailable() || !this.settings.encrypt_keys) {
744: return `${DecryptKeyPrefix}${apiKey}`;
745: }
746:
747: return safeStorage.encryptString(apiKey) as Buffer;
748: }
749: Metin Oluşturucu · src/constants.ts · Q22
Sabit işlemenin orijinal metnini açın
35: custom_header: true,
36: };
37:
38: export const DecryptKeyPrefix = "__@#key_prefix#@__";
39: Bu karşılaştırmada ne doğrulanmadı
Eklenti kurulumu, etkinleştirme, ayar arayüzü, üretim, model/API çağrıları, gerçek anahtarlar, gönderilen paketler, tüm bağımlılıkların ağ denetimi ve sağlayıcı tarafındaki saklama, eğitim ve silme politikalarına uyum doğrulanmadı. SimpleMemo giriş, teslim ve yapay zekâ etiketleme; eşitleme, cihazlara göre davranış, hız, üretkenlik, trafik ve yapay zekâ atıf etkileri de kapsam dışıdır.
SimpleMemo Developer tarafından yazıldı. YURIKA, K.K. tarafından işletilen bu sitenin malzeme karşılaştırmasında, Obsidian'nin resmi sertifikası veya her bir eklentinin gizlilik sertifikası değildir.