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. Ozellestirmelerinizdata/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.jsonicinde saklayin. Becerilerde{{prefs.key}}olarak referans verin, sunucu yukleme sirasinda yerine koyar - Tek cagrida programlama gorevleri —
run_code_jobmeta-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 vetype/schedulekombinasyonlarini cihaza ulasmadan once reddeder - Ozellestirme icin tipli yazicilar —
create_user_skillvecreate_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
.mddosyalari olarak tanimlayin. Prompt’a yalnizca kompakt bir indeks yuklenir; tam icerikload_skillaraci 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_projectcagrisi 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: trueistendiginde, 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
localhostURL’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.
/dashboardve/api/jobstasarim geregi kimlik dogrulamasizdir — erisimi ag katmaninda kisitlayin (Tailscale ACL, guvenlik duvari, basic auth ile reverse proxy) veya ihtiyaciniz yoksaDASHBOARD=falseolarak 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 Ayari | URL |
|---|---|
| Server URL | https://your-host |
| Health Check URL | https://your-host/health |
| Polling URL | https://your-host/jobs |
Nasil Calisir#
- PocketHook’ta bir mesaj gonderirsiniz
- Sunucu, mesaji sectiginiz LLM’e konusma gecmisi, hatirlanan anilar ve mevcut araclarla birlikte iletir
- LLM mesaji isler — kabuk komutlari calistirabilir, dosya okuyabilir/yazabilir, web’de arayabilir, arka plan gorevleri planlayabilir, gercekleri hatırlayabilir veya gelistirme sunuculari baslatabilir
- Yanit PocketHook formatinda dondurilur (
msg+shortcut+data+url) - PocketHook mesaji goruntiler ve cihazinizdaki tum Shortcuts’lari calistirir
Desteklenen LLM Saglayicilari#
| Saglayici | Kimlik Dogrulama | Varsayilan Model |
|---|---|---|
| Anthropic | API anahtari | claude-sonnet-4-20250514 |
| OpenAI | API anahtari | gpt-4.1-mini |
| OpenAI Codex | OAuth | gpt-5.1-codex-mini |
| GitHub Copilot | OAuth | claude-sonnet-4 |
| Google (Gemini) | API anahtari | gemini-2.5-flash |
| Mistral | API anahtari | mistral-medium-latest |
| Groq | API anahtari | llama-3.3-70b-versatile |
| xAI (Grok) | API anahtari | grok-3-mini-fast |
| OpenRouter | API anahtari | anthropic/claude-sonnet-4 |
| Ollama (yerel) | Yok | llama3.2 |
| LM Studio (yerel) | Yok | qwen3.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_HISTORYmesaj bellekte tutulur - Uzun sureli — Tum mesajlar SQLite’ta saklanir, FTS5 anahtar kelime eslesmesi ile aranabilir
- Tur basina geri cagirma — Semantik bellek aktifken,
MAX_RECALLher turda prompt’a enjekte edilen ilgili anilarin sayisini kontrol eder - Oturumlar
SESSION_TTL_MINUTESsonra 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)ilevalid_from/valid_untilzaman 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:
- Projenin vektorlerini arsivler (Barcelona’ya bagli olaylar, kararlar, istekler).
- Yuklemi proje slug’iyla eslesen her aktif bilgi-grafi uclusunu gecersiz kilar (
scheduled_visit_barcelona,planning_visit_barcelona,confirmed_visit_barcelona). - 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#
| Alan | Gerekli | Aciklama |
|---|---|---|
title | Evet | Insan tarafindan okunabilir ad |
description | Evet | Agente gosterilen beceriler indeksinde kullanilan tek cumle |
shortcuts | Evet | Dosyada tanimlanan kisayol adlarinin dizisi. Yalnizca davranis iceren beceriler icin [] kullanin |
target | Hayir | Shortcuts’larin nerede calistirilacagi: device (varsayilan, iOS’a gonderilir) veya mac (sunucuda calistirilir) |
sync_app | Hayir | Sunucu 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:
- Agent bir Shortcut’in calistirilmasi gerektigine karar verir (ornek “bugunku toplanti notlariyla bir not olustur”)
- Sunucu, verileri stdin uzerinden JSON olarak geciren
shortcuts run "shortcutName"komutunu cagirir ve PocketHook iOS’un kullandigi ayni sarmalayici bicimi kullanir - Eger
sync_appayarlanmissa, sunucu bu uygulamayi iCloud senkronizasyonunu zorlamak icin kisa sureligine arka planda acar (open -gj -a Notes) ve 5 saniye sonra kapatir - Kullanici sohbette bir onay mesaji alir; Shortcut’in kendisi cihaza gonderilmez
Gereksinimler:
- Sunucu macOS uzerinde calistirilmalidir —
shortcuts runyalnizca 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
/dashboardhem de/api/jobsacikGETucnoktalaridir — host’a erisebilen herkes isleri listeleyebilir. Erisimi ag katmaninda kisitlayin (Tailscale ACL, guvenlik duvari, basic auth ile reverse proxy) veya ihtiyaciniz yoksaDASHBOARD=falseolarak ayarlayin. PocketHook iOS uygulamasi bu ucnoktalari kullanmaz.
Tamamen ozellestirilebilir:
- Hizli duzenleme — Basit ozelletirmeler icin
workspace/dashboard/icinedashboard.htmlyerlestirin - Tam proje —
workspace/dashboard/icindedist/‘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:
- Bagimliligi yukleyecek
- Bir arac tanimi olusturacak (basit bir
.mddosyasi) - 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 dosyalari —
workspace/icindeki yerel git reposu ile izlenir. Her yazma otomatik commit olusturur. Agenttan “son degisikligi geri al” isteyin veyagit revert HEADkomutunu manuel kullanin - Yapilandirma dosyalari —
config/agent-instructions.md,config/personality.md,skills/vepermissions.jsonher 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 aracdata/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 istiyorsunuz | Nereye gider | Ornek |
|---|---|---|
| Bir kisayol veya davranis becerisi | data/user/skills/<name>.md | “Antrenmanlarimi kaydetmek icin bir beceri olustur” |
| Agent yetenegi olarak sarilmis bir CLI araci | data/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 deger | data/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.mddosyasina ekler - Izin yapilandirma — Agentin hangi araclari kullanabilecegini kontrol etmek icin
bun run permissionscalistirin - Yerlesik arac ekleme — Daha derin entegrasyonlar icin
src/tools.tsdosyasinda yeni arac fonksiyonlari uygulayin (sunucuyu fork etmeyi gerektirir)
Yapilandirma#
Tum ayarlar .env dosyasinda saklanir (bun run setup ile olusturulur). Temel secenekler:
| Degisken | Varsayilan | Aciklama |
|---|---|---|
AUTH_TOKEN | (gerekli) | PocketHook ile paylasilan gizli anahtar |
LLM_API_KEY | (gerekli) | LLM saglayici API anahtari |
LLM_PROVIDER | anthropic | Saglayici adi |
LLM_MODEL | claude-sonnet-4-20250514 | Model ID |
LLM_REASONING | off | Akil yurutme cabasi: off, minimal, low, medium, high, xhigh. Daha yuksek seviyeler gizli dusunme tokenleri ekler (daha yavas + daha pahali). Desteklemeyen modeller tarafindan yok sayilir |
PORT | 3000 | Sunucu portu |
AGENT_NAME | PocketHook Assistant | Agent goruntuleme adi |
MAX_HISTORY | 50 | Kisa sureli bellekteki mesajlar |
MAX_RECALL | 5 | Semantik geri cagirma ile her turda donen anilar (yalnizca VECTOR_MEMORY=true oldugunda) |
SESSION_TTL_MINUTES | 60 | Oturum suresi dolumu |
VECTOR_MEMORY | false | Semantik bellegi etkinlestir (gomme saglayicisi gerektirir) |
EMBEDDING_PROVIDER | ollama | Gomme saglayicisi: ollama, lm-studio veya openai |
EMBEDDING_MODEL | nomic-embed-text | Gomme modeli adi |
EMBEDDING_URL | (otomatik) | Gomme API URL’si |
EMBEDDING_API_KEY | — | OpenAI gommeleri icin API anahtari |
LOG_LEVEL | info | Log seviyesi: debug, info, warn, error |
RATE_LIMIT_MAX | 30 | Pencere basina maksimum istek |
DASHBOARD | true | Web 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
| Platform | Arka Uc | Servis konumu |
|---|---|---|
| macOS | launchd | ~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist |
| Linux | systemd (kullanici) | ~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service |
| Windows | NSSM | PocketHook-${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,*.pemagent erisininden engellenir - Otomatik versiyonlama — Tum calisma alani degisiklikleri kolay geri alma icin git ile izlenir