Ana içeriğe geç
  1. Dokümantasyon/

Agent Sunucu

PocketHook Agent Sunucu Nedir?
#

Agent sunucu, PocketHook’u tam bir yapay zeka asistanina donusturur. Yanit mantigi yazmak yerine, mesajlari isleyen, araclari cagiran ve yapilandirilmis PocketHook yanitlari donduren bir LLM (Claude, GPT, Gemini vb.) baglarsiniz — Shortcuts tetikleyicileri dahil.

Sunucu kendi makinenizde calisir. Verileriniz sizde kalir.

Bu bir baslangic noktasidir. Sunucu temel bir arac seti ile gelir ve sizin tarafinizdan genisletilmek uzere tasarlanmistir. Kendi entegrasyonlarinizi ekleyin — e-posta, takvimler, belgeler, API’ler — ve onu kendinize uyarlayin.

Ozellikler
#

  • Coklu saglayici LLM — Anthropic, OpenAI, GitHub Copilot, Google, Mistral, Groq, xAI, OpenRouter, Ollama (yerel), LM Studio (yerel)
  • OAuth kimlik dogrulama — GitHub Copilot ve OpenAI Codex, device code / tarayici akisi ile
  • Agent araclari — Kabuk komutlari, dosya okuma/yazma, dizin listeleme, web arama, web kazima, gelistirme sunucusu yonetimi
  • Cerceve / kullanici ayrimi — Cerceve dosyalari (skills/, custom-tools/, config/) salt okunur kalir. Ozellestirmeleriniz data/user/ altinda yasar (beceriler, ozel araclar, talimatlar, tipli tercihler). Cerceve guncellemeleri calismanizi bozmadan temiz bir sekilde iner
  • Tipli kullanici tercihleri — Tercih edilen haritalar uygulamaniz veya tunel alaniniz gibi degerleri data/user/prefs.json icinde saklayin. Becerilerde {{prefs.key}} olarak referans verin, sunucu yukleme sirasinda yerine koyar
  • Tek cagrida programlama gorevlerirun_code_job meta-araci, prompt tipinde bir arka plan isi (yapilandirdiginiz LLM tarafindan calistirilan) olusturur ve kullaniciya onayi tek adimda gonderir, hataya meyilli “respond + create-job” desenini degistirir
  • Tipli protokol araclari — Alti adanmis respond_* araci (respond_text, respond_image, respond_buttons, respond_shortcut, respond_html, respond_sequence), ayrica tipli is araclari (create_once_job, create_cron_job) ve tipli calisma alani araclari (create_project, list_projects, delete_project). Semalar bozuk URL’leri, dugme syntax’ini ve type/schedule kombinasyonlarini cihaza ulasmadan once reddeder
  • Ozellestirme icin tipli yazicilarcreate_user_skill ve create_custom_tool, kullanici katmani markdown’unu dogru frontmatter ile olusturur, boylece yukleyici onlari her zaman ayristirir ve agent bu dosyalari asla elle yazmaz
  • Arka plan gorevleri — Tek seferlik veya tekrarlayan gorevler, cron ifadeleri veya basit araliklar ile
  • Dinamik beceriler — Kisayollari ve davranis kurallarini .md dosyalari olarak tanimlayin. Prompt’a yalnizca kompakt bir indeks yuklenir; tam icerik load_skill araci ile talep uzerine alinir
  • Kendi kendini yoneten beceriler — Agent, beceri tanimlarini olusturabilir, duzenleyebilir ve silebilir (yazma islemleri her zaman kullanici katmanina duser)
  • Semantik bellek — Gomme vektorleri ile vektor tabanli arama (Ollama, LM Studio veya OpenAI). Anilar LLM tarafindan otomatik olarak wing/room/hall/status boyutlarina siniflandirilir
  • Bilgi grafi — Otomatik gecersiz kilma ile kalici gercekler icin zamansal uclu deposu. Coklu deger iliskileri bir arada var olur; tekil deger gercekleri otomatik olarak degistirilir
  • Proje sonu kademelendirmesiyle PARA yontemi — Her ani bir durum ile etiketlenir (Proje, Alan, Kaynak, Arsiv). Bir proje bittiginde, tek bir complete_project cagrisi vektorlerini arsivler, slug’ina bagli her planlama uclusunu gecersiz kilar ve tamamlanmayi kaydeder — uc cagri yerine bir
  • Hibrit geri cagirma — FTS5 anahtar kelime aramasini vektor semantik arama ile reciprocal rank fusion kullanarak birlestirir
  • Uzun sureli bellek — Semantik bellek devre disi oldugunda yedek olarak SQLite + FTS5 tam metin arama
  • Tunel sozlesmeli gelistirme sunucusu yonetimi — Gelistirme sunucularini baslat, durdur ve listele. tunnel: true istendiginde, sunucu bunu calismadan once ve surec olusturulduktan sonra zorunlu kilar — ulasilamaz bir localhost sunucusu asla sessizce calisir halde birakilmaz
  • Otomatik URL temizleme — Agent bir yanitta localhost URL’si birakirsa, respond_* araclari bunu eslesen tunel URL’sine yeniden yazar, boylece telefonunuz her zaman erisilebilir bir baglanti alir
  • Ozel araclar — Agent, CLI araclarini yukleyebilir ve bunlari yeni yetenekler olarak kaydedebilir
  • Versiyonlama — Calisma alani dosyalari icin otomatik git versiyonlama; beceriler ve izinler icin yapilandirma yedekleri
  • Web kontrol paneli — Arka plan gorevlerinin canli genel gorunumu, kullanici bazinda ozellestirilebilir. /dashboard ve /api/jobs tasarim geregi kimlik dogrulamasizdir — erisimi ag katmaninda kisitlayin (Tailscale ACL, guvenlik duvari, basic auth ile reverse proxy) veya ihtiyaciniz yoksa DASHBOARD=false olarak ayarlayin
  • HTTPS tunelleme — Tailscale, ngrok ve Cloudflare Tunnel icin yerlesik destek
  • Sistem hizmeti — macOS, Linux veya Windows’ta kalici hizmet olarak yukle
  • Istek sinirlamasi — Yapilandirabilir esiklerle token basina istek sinirlari

Gereksinimler
#

  • Bun calisma zamani
  • LLM saglayiciniz icin API anahtari veya OAuth kimlik bilgileri
  • (Opsiyonel) HTTPS tunelleme icin Tailscale, ngrok veya cloudflared

Hizli Baslangic
#

git clone https://github.com/pockethook-app/pockethook-agent-server.git
cd pockethook-agent-server
bun install

# Etkilesimli kurulum — saglayici, model, kimlik dogrulama tokeni, port secimi
bun run setup

# Sunucu + HTTPS tuneli baslat
bun run dev:tunnel

Kurulum sihirbazi sizi LLM saglayici secimi, kimlik dogrulama yapilandirmasi ve arac izinlerini ayarlama konusunda yonlendirecektir.

Calistiktan sonra, gorunen URL’leri PocketHook Ayarlarina kopyalayin:

PocketHook AyariURL
Server URLhttps://your-host
Health Check URLhttps://your-host/health
Polling URLhttps://your-host/jobs

Nasil Calisir
#

  1. PocketHook’ta bir mesaj gonderirsiniz
  2. Sunucu, mesaji sectiginiz LLM’e konusma gecmisi, hatirlanan anilar ve mevcut araclarla birlikte iletir
  3. LLM mesaji isler — kabuk komutlari calistirabilir, dosya okuyabilir/yazabilir, web’de arayabilir, arka plan gorevleri planlayabilir, gercekleri hatırlayabilir veya gelistirme sunuculari baslatabilir
  4. Yanit PocketHook formatinda dondurilur (msg + shortcut + data + url)
  5. PocketHook mesaji goruntiler ve cihazinizdaki tum Shortcuts’lari calistirir

Desteklenen LLM Saglayicilari
#

SaglayiciKimlik DogrulamaVarsayilan Model
AnthropicAPI anahtariclaude-sonnet-4-20250514
OpenAIAPI anahtarigpt-4.1-mini
OpenAI CodexOAuthgpt-5.1-codex-mini
GitHub CopilotOAuthclaude-sonnet-4
Google (Gemini)API anahtarigemini-2.5-flash
MistralAPI anahtarimistral-medium-latest
GroqAPI anahtarillama-3.3-70b-versatile
xAI (Grok)API anahtarigrok-3-mini-fast
OpenRouterAPI anahtarianthropic/claude-sonnet-4
Ollama (yerel)Yokllama3.2
LM Studio (yerel)Yokqwen3.5-4b-mlx

Saglayicilari istediginiz zaman bun run switch ile degistirin. Ollama ve LM Studio tamamen kendi makinenizde calisir — API anahtari gerekmez, veriler aginizdan cikmaz.

Bellek
#

Bellek sistemi, her biri farkli bir amaca hizmet eden uc katmana sahiptir.

Semantik bellek tasarimi, MemPalace (anilari wing’lere, hall’lara ve room’lara organize eden bellek sarayi mimarisi) ve Tiago Forte’nin bilgi yasam dongusu yonetimi icin PARA yontemi (Projeler, Alanlar, Kaynaklar, Arsiv) fikirlerini birlestirir.

Konusma bellegi
#

FTS5 tam metin arama ile SQLite. Tum mesajlar zaman damgalari ve oturum kimlikleri ile saklanir.

  • Kisa sureli — Oturum basina son MAX_HISTORY mesaj bellekte tutulur
  • Uzun sureli — Tum mesajlar SQLite’ta saklanir, FTS5 anahtar kelime eslesmesi ile aranabilir
  • Tur basina geri cagirma — Semantik bellek aktifken, MAX_RECALL her turda prompt’a enjekte edilen ilgili anilarin sayisini kontrol eder
  • Oturumlar SESSION_TTL_MINUTES sonra sona erer, ancak uzun sureli bellek sonsuza kadar kalir

Bunlari bun run memory ile etkilesimli olarak ayarlayin.

Semantik bellek
#

VECTOR_MEMORY=true ve bir gomme saglayicisi (Ollama, LM Studio veya OpenAI) gerektirir.

Her ani bir vektore donusturulur ve LLM tarafindan dort boyutta otomatik siniflandirilir:

  • Wing — Varlik: user, person:john, project:blog, place:london
  • Room — Tur: facts, preferences, events, decisions, requests
  • Hall — Konu: personal, tech, health, travel, food, work
  • Status — PARA siniflandirmasi: project, area, resource, archive

Bir soru sordugunuzda, varlik cikarimi vektor aramasini en ilgili wing’lere odaklar. Sonuclar FTS5 sonuclari ile reciprocal rank fusion kullanilarak birlestirilir — boylece hem anahtar kelime hem de semantik eslesmenin en iyisini alirsiniz.

Bilgi grafi
#

Yapilandirilmis, kalici gercekler icin zamansal uclu deposu:

  • Ucluler: (subject, predicate, object) ile valid_from / valid_until zaman damgalari
  • Tekil degerli yuklemler (lives_in, partner) guncellemede eski degeri otomatik gecersiz kilar
  • Coklu degerli yuklemler (child, friend, hobby) gecersiz kilma olmadan bir arada var olur
  • Bilgi grafi gercekleri, hatirlanan anilarla birlikte her konusmaya enjekte edilir

Agente “Berlin’e tasindim” dediginizde, eski lives_in uclusunu gecersiz kilar ve yenisini olusturur — otomatik olarak.

PARA yasam dongusu
#

Her ani bir PARA statusu ile etiketlenir:

  • Proje — Aktif, zaman sinirli calisma
  • Alan — Devam eden sorumluluklar
  • Kaynak — Referans materyali (listeler, oneriler, kilavuzlar)
  • Arsiv — Tamamlanmis veya iptal edilmis projeler

Bir proje tamamlandiginda, agent yalnizca o projenin anilarini arsivlemek icin semantik benzerlik kullanir ve referans materyalini gelecekteki kullanim icin korur.

Proje sonu kademelendirmesi
#

“Barcelona gezimi iptal ediyorum” deyin ve tek bir arac cagrisi her seyi halletsin:

  1. Projenin vektorlerini arsivler (Barcelona’ya bagli olaylar, kararlar, istekler).
  2. Yuklemi proje slug’iyla eslesen her aktif bilgi-grafi uclusunu gecersiz kilar (scheduled_visit_barcelona, planning_visit_barcelona, confirmed_visit_barcelona).
  3. Tamamlanmayi yeni bir uclu olarak kaydeder: (user, "cancelled_visit_barcelona", "2026-04-15").

Eslestirme sinir duyarlidir — revisit_barcelona adli farkli bir proje dokunulmadan kalir. Agent artik uc ayri cagriyi dogru sirada orkestre etmek zorunda degil, bu yuzden daha kucuk modeller de bunu dogru yapar.

VECTOR_MEMORY devre disi ise veya gomme saglayicisi ulasilabilir degilse, sistem hatasiz olarak yalnizca FTS5’e gecer.

Beceriler
#

Beceriler, skills/ icindeki .md dosyalaridir ve agentin tetikleyebilecegi iOS Shortcuts’lari ve/veya davranis kurallarini tanimlar. Dinamik yukleme kullanirlar: sistem prompt’una yalnizca kompakt bir indeks (baslik, aciklama, kisayol listesi) enjekte edilir. Agent, tam icerigi load_skill araci ile talep uzerine yukler ve daha fazla beceri ekledikce token kullanimini dusuk tutar.

Her beceri dosyasi YAML frontmatter kullanir:

---
title: Notes
description: Create notes on the user's device with a title and body
shortcuts: [newNote]
target: mac
sync_app: Notes
---

### New Note

Shortcut name: `newNote`

Creates a new note on the user's device.

Data fields:
- title (string, required): Note title
- content (string, required): Note body

Frontmatter alanlari
#

AlanGerekliAciklama
titleEvetInsan tarafindan okunabilir ad
descriptionEvetAgente gosterilen beceriler indeksinde kullanilan tek cumle
shortcutsEvetDosyada tanimlanan kisayol adlarinin dizisi. Yalnizca davranis iceren beceriler icin [] kullanin
targetHayirShortcuts’larin nerede calistirilacagi: device (varsayilan, iOS’a gonderilir) veya mac (sunucuda calistirilir)
sync_appHayirSunucu tarafinda calistirmanin ardindan iCloud senkronizasyonunu tetiklemek icin arka planda kisa sureligine acilacak uygulama (ornek Notes, Calendar, Reminders). Atlamak icin bos birakin veya none kullanin

Beceriler ayrica Shortcuts olmadan davranis kurallari da olabilir (ornegin, “aile tatili nasil planlanir”). Bunlar icin shortcuts: [] kullanin.

Agent, istendiginde becerileri olusturabilir ve yonetebilir — “isiklanimi kontrol etmek icin bir beceri olustur” deyin ve sizin icin .md dosyasini yazacaktir. Yeni ve duzenlenmis beceriler her zaman kullanici katmaniniza (data/user/skills/) duser, boylece cerceve guncellemeleri onlari asla uzerine yazmaz. Asagidaki Customizing your agent bolumune bakin.

Mac sunucusunda Shortcuts calistirma
#

Bir beceri target: mac degerine sahip oldugunda, Shortcuts iOS cihazina gonderilmek yerine shortcuts run CLI’si araciligiyla Mac sunucusunda sessizce calisir. Bu, iCloud ile senkronize icerik olusturan eylemler icin idealdir — notlar, hatirlatmalar, takvim etkinlikleri — cunku sonuc, PocketHook uygulamasinin bir sey yapmasina gerek kalmadan otomatik olarak tum cihazlariniza senkronize edilir.

Nasil calisir:

  1. Agent bir Shortcut’in calistirilmasi gerektigine karar verir (ornek “bugunku toplanti notlariyla bir not olustur”)
  2. Sunucu, verileri stdin uzerinden JSON olarak geciren shortcuts run "shortcutName" komutunu cagirir ve PocketHook iOS’un kullandigi ayni sarmalayici bicimi kullanir
  3. Eger sync_app ayarlanmissa, sunucu bu uygulamayi iCloud senkronizasyonunu zorlamak icin kisa sureligine arka planda acar (open -gj -a Notes) ve 5 saniye sonra kapatir
  4. Kullanici sohbette bir onay mesaji alir; Shortcut’in kendisi cihaza gonderilmez

Gereksinimler:

  • Sunucu macOS uzerinde calistirilmalidir — shortcuts run yalnizca macOS icindir. Diger platformlarda sunucu bir uyari kaydeder ve cihazda calistirmaya geri doner
  • Shortcut, sunucu Mac’indeki Shortcuts.app’te yuklu olmalidir
  • Shortcut, giris olarak bir Dictionary beklemelidir (PocketHook verileri { context, timestamp, app, data } icinde sarmalar)

target: mac ne zaman kullanilir:

  • iCloud ile senkronize eylemler (Notes, Reminders, Calendar) — sonuc zaten her cihaza ulasir
  • iOS cihazindan uzak tutmak istediginiz uzun suren islemler
  • iPhone’un UI’si ile etkilesmesi gerekmeyen herhangi bir Shortcut

target: device (varsayilan) ne zaman kullanilir:

  • iPhone’a ozgu ozelliklere (kamera, hassas konum, yerel uygulama otomasyonlari) ihtiyac duyan Shortcuts
  • Kullanicidan etkilesimli giris isteyen Shortcuts
  • Yalnizca iOS’a ozgu uygulamalardan App Intents kullanan Shortcuts

Arka Plan Gorevleri
#

Agenttan gorevleri planlamasini isteyin, gerisini o halledecektir:

  • “Her sabah saat 8’de havayi kontrol et ve bir not olustur”
  • “Bu betigi her saat calistir”
  • “30 dakika icinde e-postami kontrol etmemi hatirla”

Gorevler cron ifadelerini (0 8 * * *) ve basit araliklari (30m, 1h, 2d) destekler. Sonuclar, PocketHook /jobs ucunu yokladiginda teslim edilir.

Iki yurutme turu:

  • Shell — Bir bash komutu calistirir, ciktiyi yakalar. Tamamlandiginda bir Shortcut tetikleyebilir
  • Prompt — Tam arac erisimi ile AI agentti tarafindan islenir, tam PocketHook yanitini saklar

Gelistirme Sunuculari
#

Agent, calisma alaninda bir web projesi olusturdugunda (Hugo, Astro, Next.js, Flask, Go vb.), proaktif olarak sunmayi onerir:

  • Onizleme — Hizli goruntulemek icin otomatik atanmis bir portta yerel gelistirme sunucusu baslatir
  • Herkese acik — Sunucuyu baslatir ve her yerden erisilebilir olmasi icin HTTPS tuneli araciligiyla ifsa eder

Agent yasam dongusunu yonetir: baslat, durdur ve calisan sunuculari listele. Ana sunucu durdugunda tum sunucular temizlenir.

Tunel sozlesmesi
#

Agent, tunel maruziyeti istenen bir sunucuyu baslattiginda, calisma zamani bunu zorunlu kilar: hicbir tunel araci (Tailscale, ngrok, cloudflared) yuklu degilse, sunucu baslamayi reddeder. Surec olusturulduktan sonra tunel kurulumu basarisiz olursa, yetim surec durdurulur ve agent acikca bilgilendirilir — boylece onizleme moduna geri donebilir veya sizden bir tunel yuklemenizi isteyebilir. Tunel acikken dondurulen URL her zaman tunel URL’sidir, yerel URL’nin yalnizca ana bilgisayara ozgu oldugu notuyla.

Bir guvenlik agi olarak, her respond_* araci kendi mesajini son islemden gecirir: bir yanita sizan herhangi bir localhost veya 127.0.0.1 URL’si, yonetilen bir sunucunun tunel URL’si oldugunda otomatik olarak eslesen tunel URL’sine yeniden yazilir. Yeniden yazamadiginda, telefonunuzda bozuk bir baglanti yerine loglarda bir uyari alirsiniz.

Kontrol Paneli
#

/dashboard adresindeki yerlesik web kontrol paneli, arka plan gorevlerinin canli genel gorunumunu gosterir.

Tasarim geregi kimlik dogrulamasiz. Hem /dashboard hem de /api/jobs acik GET ucnoktalaridir — host’a erisebilen herkes isleri listeleyebilir. Erisimi ag katmaninda kisitlayin (Tailscale ACL, guvenlik duvari, basic auth ile reverse proxy) veya ihtiyaciniz yoksa DASHBOARD=false olarak ayarlayin. PocketHook iOS uygulamasi bu ucnoktalari kullanmaz.

Tamamen ozellestirilebilir:

  • Hizli duzenleme — Basit ozelletirmeler icin workspace/dashboard/ icine dashboard.html yerlestirin
  • Tam projeworkspace/dashboard/ icinde dist/‘e derleme ciktisi ile bir cerceve projesi (Svelte, React, Vue vb.) olusturun

Agenttan kontrol panelinizi ozellestirmesini isteyin, gerisini halledecektir — her kullanici benzersiz, kisisellesmis bir kontrol paneli alir.

Ozel Araclar
#

Agent, CLI araclarini yukleyebilir ve bunlari yeni yetenekler olarak kaydedebilir — sunucu kodunu degistirmeden kendini genisletir.

Ornegin, “Playwright’i yukle ve ekran goruntusu almak icin kullan” deyin. Agent:

  1. Bagimliligi yukleyecek
  2. Bir arac tanimi olusturacak (basit bir .md dosyasi)
  3. Yeni araci gelecekteki konusmalarda kullanacak

Ozel araclar aninda yeniden yuklenir — yeniden baslatma gerekmez. Bir araci kaldirmak icin .md dosyasini silin.

Versiyonlama
#

Tum kullanici verileri otomatik olarak versiyonlanir:

  • Calisma alani dosyalariworkspace/ icindeki yerel git reposu ile izlenir. Her yazma otomatik commit olusturur. Agenttan “son degisikligi geri al” isteyin veya git revert HEAD komutunu manuel kullanin
  • Yapilandirma dosyalariconfig/agent-instructions.md, config/personality.md, skills/ ve permissions.json her degisiklikten once yedeklenir. Dosya basina 20 versiyona kadar

Git opsiyoneldir — yuklu degilse, calisma alani degisiklikleri versiyonlanmaz. Yapilandirma yedekleri her zaman calisir.

Agent’inizi ozellestirme
#

Agent sunucu minimal bir cerceve tabaniyla gelir ve kendi ozellestirmenizi uzerine katmanizi bekler. Calisma zamani ikisini ayri tutar, boylece cerceve guncellemeleri calismanizi asla bozmaz.

Cerceve vs kullanici
#

pockethook-agent-server/
├── skills/                      # cerceve ile gelen beceriler (salt okunur)
├── custom-tools/                # cerceve ile gelen araclar icin ayrilmistir (salt okunur)
├── config/
│   ├── agent-instructions.md    # cerceve agent talimatlari (salt okunur)
│   └── personality.md           # cerceve kisiligi (salt okunur)
└── data/user/                   # SIZIN ozellestirmeniz burada yasar (git-ignored)
    ├── skills/                  # kendi becerileriniz (dosya adiyla tabani ezer)
    ├── custom-tools/            # yuklediginiz ozel araclar
    ├── instructions.md          # agent talimatlarina eklemeleriniz
    └── prefs.json               # {{prefs.key}} olarak referans verilen tipli degerler

Kullanici ozellestirmesi adanmis tipli araclar (create_user_skill, create_custom_tool) ile yazilir, boylece elde edilen dosyalar her zaman yukleyicinin formatiyla eslesir. write araci ayrica skills/, custom-tools/ veya config/ altindaki herhangi bir yolu reddeder ve agent’i data/user/* dizinine yonlendirir — boylece dogrudan dosya duzenlemeleri bile kullanici katmaninda biter.

Taban custom-tools/ dizini hakkinda not. Bugun yalnizca yukleyicinin yok saydigi bir sablon (_example.md) icerir — agent’in sizin icin yukledigi her arac data/user/custom-tools/ dizinine gider. Dizin, gelecekteki cerceve surumlerinin yuklemelerinizi bozmadan opsiyonel yerlesik araclar sunabilmesi icin ayrilmistir. Bu oldugunda, kullanici katmani dosyalariniz hala arac adi catismalarinda kazanir, bu yuzden tasinacak bir sey yoktur.

Dort ozellestirme yolu
#

Ne degistirmek istiyorsunuzNereye giderOrnek
Bir kisayol veya davranis becerisidata/user/skills/<name>.md“Antrenmanlarimi kaydetmek icin bir beceri olustur”
Agent yetenegi olarak sarilmis bir CLI aracidata/user/custom-tools/<name>.md“ffmpeg’i yukle ve donusumler icin kullanmama izin ver”
Global bir kural (“her zaman Ingilizce yanitla”, “asla tablo kullanma”)data/user/instructions.md“Bundan boyle makaleleri her zaman 3 madde olarak ozetle”
Beceriler tarafindan referans verilen tipli varsayilan degerdata/user/prefs.json“Varsayilan rota baslangicim Madrid”{"routeOrigin": "Madrid"}

Bu dosyalari asla elle yazmaniz gerekmez. Sadece agent’a ne istediginizi soyleyin, dogru katmani otomatik olarak secer.

{{prefs.*}} ile tipli tercihler
#

Diyelim ki varsayilan baslangic noktanizi bilmesi gereken bir rota planlayici becerisi yaziyorsunuz. “Madrid"i beceriye sabit kodlamak yerine, tercihi referans alin:

- **Baslangic noktasi**: {{prefs.routeOrigin}}, kullanici farkli bir baslangic belirtmedigi surece.

Ve degeri data/user/prefs.json icinde saklayin:

{
  "routeOrigin": "Madrid, Spain",
  "preferredMapsApp": "apple",
  "tunnel": { "domain": "my-host.ts.net" }
}

Sunucu, beceri yuklendiginde yer tutucularin yerine koyar. Ic ice anahtarlar ({{prefs.tunnel.domain}}) da calisir. Bilinmeyen anahtarlar dokunulmadan birakilir, boylece yazim hatalari gorunur kalir.

Cerceve tabanini dogrudan duzenleme
#

Kendiniz barindiriyorsaniz ve cercevenin kendisini degistirmek istiyorsaniz, config/agent-instructions.md, config/personality.md, skills/ veya custom-tools/ dosyalarini dogrudan duzenleyebilirsiniz — bir dosya editoru kullandiginizda sunucu sizi durdurmaz. Ancak agent bir konusmadan bu yollara yazmaz. Ve cerceve guncellemeleri duzenlemelerinizin uzerine yazar. Saklamak istediginiz her sey icin kullanici katmanini tercih edin.

Sunucuyu Genisletme
#

  • Ozel araclar — Agent’tan CLI araclari yuklemesini isteyin; otomatik olarak data/user/custom-tools/ dizinine inerler
  • Beceri ekleme — Agent’tan bir beceri olusturmasini isteyin; dosya data/user/skills/ dizinine gider
  • Davranis degistirme — Agent’tan global bir kural uygulamasini isteyin; data/user/instructions.md dosyasina ekler
  • Izin yapilandirma — Agentin hangi araclari kullanabilecegini kontrol etmek icin bun run permissions calistirin
  • Yerlesik arac ekleme — Daha derin entegrasyonlar icin src/tools.ts dosyasinda yeni arac fonksiyonlari uygulayin (sunucuyu fork etmeyi gerektirir)

Yapilandirma
#

Tum ayarlar .env dosyasinda saklanir (bun run setup ile olusturulur). Temel secenekler:

DegiskenVarsayilanAciklama
AUTH_TOKEN(gerekli)PocketHook ile paylasilan gizli anahtar
LLM_API_KEY(gerekli)LLM saglayici API anahtari
LLM_PROVIDERanthropicSaglayici adi
LLM_MODELclaude-sonnet-4-20250514Model ID
LLM_REASONINGoffAkil yurutme cabasi: off, minimal, low, medium, high, xhigh. Daha yuksek seviyeler gizli dusunme tokenleri ekler (daha yavas + daha pahali). Desteklemeyen modeller tarafindan yok sayilir
PORT3000Sunucu portu
AGENT_NAMEPocketHook AssistantAgent goruntuleme adi
MAX_HISTORY50Kisa sureli bellekteki mesajlar
MAX_RECALL5Semantik geri cagirma ile her turda donen anilar (yalnizca VECTOR_MEMORY=true oldugunda)
SESSION_TTL_MINUTES60Oturum suresi dolumu
VECTOR_MEMORYfalseSemantik bellegi etkinlestir (gomme saglayicisi gerektirir)
EMBEDDING_PROVIDERollamaGomme saglayicisi: ollama, lm-studio veya openai
EMBEDDING_MODELnomic-embed-textGomme modeli adi
EMBEDDING_URL(otomatik)Gomme API URL’si
EMBEDDING_API_KEYOpenAI gommeleri icin API anahtari
LOG_LEVELinfoLog seviyesi: debug, info, warn, error
RATE_LIMIT_MAX30Pencere basina maksimum istek
DASHBOARDtrueWeb kontrol panelini etkinlestir (/dashboard rotasi)
INSTANCE_NAME(proje dizini adi, pockethook- cikartilarak)Sistem servis etiketi, log dizini ve surec eslestirmesi icin kullanilan sonek. Ayni makinede birden fazla checkout calistirirken acikca ayarlayin

Tam yapilandirma referansi icin GitHub deposuna bakin.

Hizmet Olarak Calistirma
#

Otomatik olarak baslayan kalici bir hizmet olarak yukleyin:

bun run service install
PlatformArka UcServis konumu
macOSlaunchd~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist
Linuxsystemd (kullanici)~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service
WindowsNSSMPocketHook-${PascalCase(INSTANCE_NAME)} Windows Service Manager’da

INSTANCE_NAME varsayilan olarak proje dizini adi pockethook- onekinin cikartilmasiyla olusur (ornegin, pockethook-agent-server/ icindeki bir checkout agent-server olur). Ayni makinede birden fazla checkout’u carpisma olmadan calistirmak icin acikca ayarlayin — her ornegin kendi data/ ve loglari olur.

bun run service status, restart, stop veya uninstall ile yonetin.

Guvenlik
#

  • HTTPS gerekli — PocketHook tum URL’ler icin HTTPS’i zorunlu kilar
  • Bearer token kimlik dogrulama — Uygulama ve sunucu arasinda paylasilan gizli anahtar
  • Istek sinirlamasi — Token basina sinirlar kotuye kullanimı onler
  • Korumalı araclar — Kabuk komutlari ve dosya erisimi izinlerle sinirlandirilir
  • Engellenen desenler — Tehlikeli komutlar (sudo, rm -rf /) varsayilan olarak engellenir
  • Calisma dizini siniri — Agent, belirlenmis dizininden cikamaz
  • Hassas dosyalar korunur.env, .git, *.key, *.pem agent erisininden engellenir
  • Otomatik versiyonlama — Tum calisma alani degisiklikleri kolay geri alma icin git ile izlenir