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

Agent Sunucu

PocketHook Agent Sunucu Nedir?
#

Agent sunucu, PocketHook’u tam bir yapay zeka asistanına dönüştürür. Yanıt mantığı yazmak yerine, mesajları işleyen, araçları çağıran ve yapılandırılmış PocketHook yanıtları döndüren bir LLM (Claude, GPT, Gemini vb.) bağlarsınız — Shortcuts tetikleyicileri dahil.

Sunucu kendi makinenizde çalışır. Verileriniz sizde kalır.

Bu bir başlangıç noktasıdır. Sunucu temel bir araç seti ile gelir ve sizin tarafınızdan genişletilmek üzere tasarlanmıştır. Kendi entegrasyonlarınızı ekleyin — e-posta, takvimler, belgeler, API’ler — ve onu kendinize uyarlayın.

Özellikler
#

  • Çoklu sağlayıcı LLM — Anthropic, OpenAI, GitHub Copilot, Google, Mistral, Groq, xAI, OpenRouter, Ollama (yerel), LM Studio (yerel)
  • Hızlı model — Ana sohbet modelinizin yanında dahili yardımcılar (bellek sınıflandırma, varlık çıkarımı) için hafif bir ikincil model çalıştırın — maliyet ve gecikme üzerinde tam kontrol
  • Safari Uzantısı — Noter onaylı bir macOS Safari uzantısını eşleştirin, böylece agent seçtiğiniz izin seviyesinde gerçek tarayıcı oturumunuzda sekmeler açabilir, sayfaları inceleyebilir, tıklayabilir, formları doldurabilir ve ekran görüntüsü alabilir
  • OAuth kimlik doğrulama — GitHub Copilot ve OpenAI Codex, device code / tarayıcı akışı ile
  • Agent araçları — Kabuk komutları, dosya okuma/yazma, dizin listeleme, web arama, web kazıma, geliştirme sunucusu yönetimi
  • Çerçeve / kullanıcı ayrımı — Çerçeve dosyaları (skills/, custom-tools/, config/) salt okunur kalır. Özelleştirmeleriniz data/user/ altında yaşar (beceriler, özel araçlar, talimatlar, tipli tercihler). Çerçeve güncellemeleri çalışmanızı bozmadan temiz bir şekilde iner
  • Tipli kullanıcı tercihleri — Tercih edilen haritalar uygulamanız veya tünel alanınız gibi değerleri data/user/prefs.json içinde saklayın. Becerilerde {{prefs.key}} olarak referans verin, sunucu yükleme sırasında yerine koyar
  • Tek çağrıda programlama görevleri — run_code_job meta-aracı, prompt tipinde bir arka plan işi (yapılandırdığınız LLM tarafından çalıştırılan) oluşturur ve kullanıcıya onayı tek adımda gönderir, hataya meyilli “respond + create-job” desenini değiştirir
  • Tipli protokol araçları — Altı adanmış respond_* aracı (respond_text, respond_image, respond_buttons, respond_shortcut, respond_html, respond_sequence), ayrıca tipli iş araçları (create_once_job, create_cron_job) ve tipli çalışma alanı araçları (create_project, list_projects, delete_project). Şemalar bozuk URL’leri, düğme syntax’ını ve type/schedule kombinasyonlarını cihaza ulaşmadan önce reddeder
  • Özelleştirme için tipli yazıcılar — create_user_skill ve create_custom_tool, kullanıcı katmanı markdown’unu doğru frontmatter ile oluşturur, böylece yükleyici onları her zaman ayrıştırır ve agent bu dosyaları asla elle yazmaz
  • Arka plan görevleri — Tek seferlik veya tekrarlayan görevler, cron ifadeleri veya basit aralıklar ile
  • Dinamik beceriler — Kısayolları ve davranış kurallarını .md dosyaları olarak tanımlayın. Prompt’a yalnızca kompakt bir indeks yüklenir; tam içerik load_skill aracı ile talep üzerine alınır
  • Kendi kendini yöneten beceriler — Agent, beceri tanımlarını oluşturabilir, düzenleyebilir ve silebilir (yazma işlemleri her zaman kullanıcı katmanına düşer)
  • Semantik bellek — Gömme vektörleri ile vektör tabanlı arama (Ollama, LM Studio veya OpenAI). Anılar LLM tarafından otomatik olarak wing/room/hall/status boyutlarına sınıflandırılır
  • Bilgi grafı — Otomatik geçersiz kılma ile kalıcı gerçekler için zamansal üçlü deposu. Çoklu değer ilişkileri bir arada var olur; tekil değer gerçekleri otomatik olarak değiştirilir
  • Proje sonu kademelendirmesiyle PARA yöntemi — Her anı bir durum ile etiketlenir (Proje, Alan, Kaynak, Arşiv). Bir proje bittiğinde, tek bir complete_project çağrısı vektörlerini arşivler, slug’ına bağlı her planlama üçlüsünü geçersiz kılar ve tamamlanmayı kaydeder — üç çağrı yerine bir
  • Hibrit geri çağırma — FTS5 anahtar kelime aramasını vektör semantik arama ile reciprocal rank fusion kullanarak birleştirir
  • Uzun süreli bellek — Semantik bellek devre dışı olduğunda yedek olarak SQLite + FTS5 tam metin arama
  • Tünel sözleşmeli geliştirme sunucusu yönetimi — Geliştirme sunucularını başlat, durdur ve listele. tunnel: true istendiğinde, sunucu bunu çalışmadan önce ve süreç oluşturulduktan sonra zorunlu kılar — ulaşılamaz bir localhost sunucusu asla sessizce çalışır halde bırakılmaz
  • Otomatik URL temizleme — Agent bir yanıtta localhost URL’si bırakırsa, respond_* araçları bunu eşleşen tünel URL’sine yeniden yazar, böylece telefonunuz her zaman erişilebilir bir bağlantı alır
  • Özel araçlar — Agent, CLI araçlarını yükleyebilir ve bunları yeni yetenekler olarak kaydedebilir
  • Versiyonlama — Çalışma alanı dosyaları için otomatik git versiyonlama; beceriler ve izinler için yapılandırma yedekleri
  • Web kontrol paneli — Arka plan görevlerinin canlı genel görünümü, kullanıcı bazında özelleştirilebilir. /dashboard ve /api/jobs tasarım gereği kimlik doğrulamasızdır — erişimi ağ katmanında kısıtlayın (Tailscale ACL, güvenlik duvarı, basic auth ile reverse proxy) veya ihtiyacınız yoksa DASHBOARD=false olarak ayarlayın
  • HTTPS tünelleme — Tailscale, ngrok ve Cloudflare Tunnel için yerleşik destek
  • Sistem hizmeti — macOS, Linux veya Windows’ta kalıcı hizmet olarak yükle
  • İstek sınırlaması — Yapılandırılabilir eşiklerle token başına istek sınırları

Gereksinimler
#

  • Bun çalışma zamanı
  • LLM sağlayıcınız için API anahtarı veya OAuth kimlik bilgileri
  • (Opsiyonel) HTTPS tünelleme için Tailscale, ngrok veya cloudflared

Hızlı Başlangıç
#

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 sihirbazı sizi LLM sağlayıcı seçimi, kimlik doğrulama yapılandırması ve araç izinlerini ayarlama konusunda yönlendirecektir — Safari uzantısını yükleyip yüklemeyeceğiniz dahil (isteğe bağlı, atlanabilir, yalnızca macOS).

Komutların tam listesi için istediğiniz zaman bun run help çalıştırın, veya mevcut yapılandırmanızı tek bakışta görmek için bun run config çalıştırın (gizli bilgiler maskelenir).

Çalıştıktan sonra, görünen URL’leri PocketHook Ayarlarına kopyalayın:

PocketHook AyarıURL
Server URLhttps://your-host
Health Check URLhttps://your-host/health
Polling URLhttps://your-host/jobs

Nasıl Çalışır
#

  1. PocketHook’ta bir mesaj gönderirsiniz
  2. Sunucu, mesajı seçtiğiniz LLM’e konuşma geçmişi, hatırlanan anılar ve mevcut araçlarla birlikte iletir
  3. LLM mesajı işler — kabuk komutları çalıştırabilir, dosya okuyabilir/yazabilir, web’de arayabilir, arka plan görevleri planlayabilir, gerçekleri hatırlayabilir veya geliştirme sunucuları başlatabilir
  4. Yanıt PocketHook formatında döndürülür (msg + shortcut + data + url)
  5. PocketHook mesajı görüntüler ve cihazınızdaki tüm Shortcuts’ları çalıştırır

Desteklenen LLM Sağlayıcıları
#

SağlayıcıKimlik DoğrulamaVarsayılan Model
AnthropicAPI anahtarıclaude-sonnet-4-20250514
OpenAIAPI anahtarıgpt-4.1-mini
OpenAI CodexOAuthgpt-5.1-codex-mini
GitHub CopilotOAuthclaude-sonnet-4
Google (Gemini)API anahtarıgemini-2.5-flash
MistralAPI anahtarımistral-medium-latest
GroqAPI anahtarıllama-3.3-70b-versatile
xAI (Grok)API anahtarıgrok-3-mini-fast
OpenRouterAPI anahtarıanthropic/claude-sonnet-4
Ollama (yerel)Yokllama3.2
LM Studio (yerel)Yokqwen3.5-4b-mlx

Sağlayıcıları istediğiniz zaman bun run switch ile değiştirin. Ollama ve LM Studio tamamen kendi makinenizde çalışır — API anahtarı gerekmez, veriler ağınızdan çıkmaz.

Bellek
#

Bellek sistemi, her biri farklı bir amaca hizmet eden üç katmana sahiptir.

Semantik bellek tasarımı, MemPalace (anıları wing’lere, hall’lara ve room’lara organize eden bellek sarayı mimarisi) ve Tiago Forte’nin bilgi yaşam döngüsü yönetimi için PARA yöntemi (Projeler, Alanlar, Kaynaklar, Arşiv) fikirlerini birleştirir.

Konuşma belleği
#

FTS5 tam metin arama ile SQLite. Tüm mesajlar zaman damgaları ve oturum kimlikleri ile saklanır.

  • Kısa süreli — Oturum başına son MAX_HISTORY mesaj bellekte tutulur
  • Uzun süreli — Tüm mesajlar SQLite’ta saklanır, FTS5 anahtar kelime eşleşmesi ile aranabilir
  • Tur başına geri çağırma — Semantik bellek aktifken, MAX_RECALL her turda prompt’a enjekte edilen ilgili anıların sayısını kontrol eder
  • Oturumlar SESSION_TTL_MINUTES sonra sona erer, ancak uzun süreli bellek sonsuza kadar kalır

Bunları bun run memory ile etkileşimli olarak ayarlayın.

Semantik bellek
#

VECTOR_MEMORY=true ve bir gömme sağlayıcısı (Ollama, LM Studio veya OpenAI) gerektirir.

Her anı bir vektöre dönüştürülür ve LLM tarafından dört boyutta otomatik sınıflandırılır:

  • Wing — Varlık: user, person:john, project:blog, place:london
  • Room — Tür: facts, preferences, events, decisions, requests
  • Hall — Konu: personal, tech, health, travel, food, work
  • Status — PARA sınıflandırması: project, area, resource, archive

Bir soru sorduğunuzda, varlık çıkarımı vektör aramasını en ilgili wing’lere odaklar. Sonuçlar FTS5 sonuçları ile reciprocal rank fusion kullanılarak birleştirilir — böylece hem anahtar kelime hem de semantik eşleşmenin en iyisini alırsınız.

Bilgi grafı
#

Yapılandırılmış, kalıcı gerçekler için zamansal üçlü deposu:

  • Üçlüler: (subject, predicate, object) ile valid_from / valid_until zaman damgaları
  • Tekil değerli yüklemler (lives_in, partner) güncellemede eski değeri otomatik geçersiz kılar
  • Çoklu değerli yüklemler (child, friend, hobby) geçersiz kılma olmadan bir arada var olur
  • Bilgi grafı gerçekleri, hatırlanan anılarla birlikte her konuşmaya enjekte edilir

Agent’a “Berlin’e taşındım” dediğinizde, eski lives_in üçlüsünü geçersiz kılar ve yenisini oluşturur — otomatik olarak.

PARA yaşam döngüsü
#

Her anı bir PARA statüsü ile etiketlenir:

  • Proje — Aktif, zaman sınırlı çalışma
  • Alan — Devam eden sorumluluklar
  • Kaynak — Referans materyali (listeler, öneriler, kılavuzlar)
  • Arşiv — Tamamlanmış veya iptal edilmiş projeler

Bir proje tamamlandığında, agent yalnızca o projenin anılarını arşivlemek için semantik benzerlik kullanır ve referans materyalini gelecekteki kullanım için korur.

Proje sonu kademelendirmesi
#

“Barcelona gezimi iptal ediyorum” deyin ve tek bir araç çağrısı her şeyi halletsin:

  1. Projenin vektörlerini arşivler (Barcelona’ya bağlı olaylar, kararlar, istekler).
  2. Yüklemi proje slug’ıyla eşleşen her aktif bilgi-grafı üçlüsünü geçersiz kılar (scheduled_visit_barcelona, planning_visit_barcelona, confirmed_visit_barcelona).
  3. Tamamlanmayı yeni bir üçlü olarak kaydeder: (user, "cancelled_visit_barcelona", "2026-04-15").

Eşleştirme sınır duyarlıdır — revisit_barcelona adlı farklı bir proje dokunulmadan kalır. Agent artık üç ayrı çağrıyı doğru sırada orkestre etmek zorunda değil, bu yüzden daha küçük modeller de bunu doğru yapar.

VECTOR_MEMORY devre dışı ise veya gömme sağlayıcısı ulaşılabilir değilse, sistem hatasız olarak yalnızca FTS5’e geçer.

Beceriler
#

Beceriler, skills/ içindeki .md dosyalarıdır ve agentin tetikleyebileceği iOS Shortcuts’ları ve/veya davranış kurallarını tanımlar. Dinamik yükleme kullanırlar: sistem prompt’una yalnızca kompakt bir indeks (başlık, açıklama, kısayol listesi) enjekte edilir. Agent, tam içeriği load_skill aracı ile talep üzerine yükler ve daha fazla beceri ekledikçe token kullanımını düşük tutar.

Her beceri dosyası YAML frontmatter kullanır:

---
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 alanları
#

AlanGerekliAçıklama
titleEvetİnsan tarafından okunabilir ad
descriptionEvetAgent’a gösterilen beceriler indeksinde kullanılan tek cümle
shortcutsEvetDosyada tanımlanan kısayol adlarının dizisi. Yalnızca davranış içeren beceriler için [] kullanın
targetHayırShortcuts’ların nerede çalıştırılacağı: device (varsayılan, iOS’a gönderilir) veya mac (sunucuda çalıştırılır)
sync_appHayırSunucu tarafında çalıştırmanın ardından iCloud senkronizasyonunu tetiklemek için arka planda kısa süreliğine açılacak uygulama (örnek Notes, Calendar, Reminders). Atlamak için boş bırakın veya none kullanın

Beceriler ayrıca Shortcuts olmadan davranış kuralları da olabilir (örneğin, “aile tatili nasıl planlanır”). Bunlar için shortcuts: [] kullanın.

Agent, istendiğinde becerileri oluşturabilir ve yönetebilir — “ışıklarımı kontrol etmek için bir beceri oluştur” deyin ve sizin için .md dosyasını yazacaktır. Yeni ve düzenlenmiş beceriler her zaman kullanıcı katmanınıza (data/user/skills/) düşer, böylece çerçeve güncellemeleri onları asla üzerine yazmaz. Aşağıdaki Agent’ınızı özelleştirme bölümüne bakın.

Mac sunucusunda Shortcuts çalıştırma
#

Bir beceri target: mac değerine sahip olduğunda, Shortcuts iOS cihazına gönderilmek yerine shortcuts run CLI’si aracılığıyla Mac sunucusunda sessizce çalışır. Bu, iCloud ile senkronize içerik oluşturan eylemler için idealdir — notlar, hatırlatmalar, takvim etkinlikleri — çünkü sonuç, PocketHook uygulamasının bir şey yapmasına gerek kalmadan otomatik olarak tüm cihazlarınıza senkronize edilir.

Nasıl çalışır:

  1. Agent bir Shortcut’ın çalıştırılması gerektiğine karar verir (örnek “bugünkü toplantı notlarıyla bir not oluştur”)
  2. Sunucu, verileri stdin üzerinden JSON olarak geçiren shortcuts run "shortcutName" komutunu çağırır ve PocketHook iOS’un kullandığı aynı sarmalayıcı biçimi kullanır
  3. Eğer sync_app ayarlanmışsa, sunucu bu uygulamayı iCloud senkronizasyonunu zorlamak için kısa süreliğine arka planda açar (open -gj -a Notes) ve 5 saniye sonra kapatır
  4. Kullanıcı sohbette bir onay mesajı alır; Shortcut’ın kendisi cihaza gönderilmez

Gereksinimler:

  • Sunucu macOS üzerinde çalıştırılmalıdır — shortcuts run yalnızca macOS içindir. Diğer platformlarda sunucu bir uyarı kaydeder ve cihazda çalıştırmaya geri döner
  • Shortcut, sunucu Mac’indeki Shortcuts.app’te yüklü olmalıdır
  • Shortcut, girdi olarak bir Dictionary beklemelidir (PocketHook verileri { context, timestamp, app, data } içinde sarmalar)

target: mac ne zaman kullanılır:

  • iCloud ile senkronize eylemler (Notes, Reminders, Calendar) — sonuç zaten her cihaza ulaşır
  • iOS cihazından uzak tutmak istediğiniz uzun süren işlemler
  • iPhone’un UI’si ile etkileşmesi gerekmeyen herhangi bir Shortcut

target: device (varsayılan) ne zaman kullanılır:

  • iPhone’a özgü özelliklere (kamera, hassas konum, yerel uygulama otomasyonları) ihtiyaç duyan Shortcuts
  • Kullanıcıdan etkileşimli girdi isteyen Shortcuts
  • Yalnızca iOS’a özgü uygulamalardan App Intents kullanan Shortcuts

Arka Plan Görevleri
#

Agent’tan görevleri planlamasını isteyin, gerisini o halledecektir:

  • “Her sabah saat 8’de havayı kontrol et ve bir not oluştur”
  • “Bu betiği her saat çalıştır”
  • “30 dakika içinde e-postamı kontrol etmemi hatırlat”

Görevler cron ifadelerini (0 8 * * *) ve basit aralıkları (30m, 1h, 2d) destekler. Sonuçlar, PocketHook /jobs ucunu yokladığında teslim edilir.

İki yürütme türü:

  • Shell — Bir bash komutu çalıştırır, çıktıyı yakalar. Tamamlandığında bir Shortcut tetikleyebilir
  • Prompt — Tam araç erişimi ile AI agent tarafından işlenir, tam PocketHook yanıtını saklar

Geliştirme Sunucuları
#

Agent, çalışma alanında bir web projesi oluşturduğunda (Hugo, Astro, Next.js, Flask, Go vb.), proaktif olarak sunmayı önerir:

  • Önizleme — Hızlı görüntülemek için otomatik atanmış bir portta yerel geliştirme sunucusu başlatır
  • Herkese açık — Sunucuyu başlatır ve her yerden erişilebilir olması için HTTPS tüneli aracılığıyla ifşa eder

Agent yaşam döngüsünü yönetir: başlat, durdur ve çalışan sunucuları listele. Ana sunucu durduğunda tüm sunucular temizlenir.

Tünel sözleşmesi
#

Agent, tünel maruziyeti istenen bir sunucuyu başlattığında, çalışma zamanı bunu zorunlu kılar: hiçbir tünel aracı (Tailscale, ngrok, cloudflared) yüklü değilse, sunucu başlamayı reddeder. Süreç oluşturulduktan sonra tünel kurulumu başarısız olursa, yetim süreç durdurulur ve agent açıkça bilgilendirilir — böylece önizleme moduna geri dönebilir veya sizden bir tünel yüklemenizi isteyebilir. Tünel açıkken döndürülen URL her zaman tünel URL’sidir, yerel URL’nin yalnızca ana bilgisayara özgü olduğu notuyla.

Bir güvenlik ağı olarak, her respond_* aracı kendi mesajını son işlemden geçirir: bir yanıta sızan herhangi bir localhost veya 127.0.0.1 URL’si, yönetilen bir sunucunun tünel URL’si olduğunda otomatik olarak eşleşen tünel URL’sine yeniden yazılır. Yeniden yazamadığında, telefonunuzda bozuk bir bağlantı yerine loglarda bir uyarı alırsınız.

Kontrol Paneli
#

/dashboard adresindeki yerleşik web kontrol paneli, arka plan görevlerinin canlı genel görünümünü gösterir.

Tasarım gereği kimlik doğrulamasız. Hem /dashboard hem de /api/jobs açık GET uç noktalarıdır — host’a erişebilen herkes işleri listeleyebilir. Erişimi ağ katmanında kısıtlayın (Tailscale ACL, güvenlik duvarı, basic auth ile reverse proxy) veya ihtiyacınız yoksa DASHBOARD=false olarak ayarlayın. PocketHook iOS uygulaması bu uç noktaları kullanmaz.

Tamamen özelleştirilebilir:

  • Hızlı düzenleme — Basit özelleştirmeler için workspace/dashboard/ içine dashboard.html yerleştirin
  • Tam proje — workspace/dashboard/ içinde dist/‘e derleme çıktısı ile bir çerçeve projesi (Svelte, React, Vue vb.) oluşturun

Agent’tan kontrol panelinizi özelleştirmesini isteyin, gerisini halledecektir — her kullanıcı benzersiz, kişiselleşmiş bir kontrol paneli alır.

Özel Araçlar
#

Agent, CLI araçlarını yükleyebilir ve bunları yeni yetenekler olarak kaydedebilir — sunucu kodunu değiştirmeden kendini genişletir.

Örneğin, “Playwright’ı yükle ve ekran görüntüsü almak için kullan” deyin. Agent:

  1. Bağımlılığı yükleyecek
  2. Bir araç tanımı oluşturacak (basit bir .md dosyası)
  3. Yeni aracı gelecekteki konuşmalarda kullanacak

Özel araçlar anında yeniden yüklenir — yeniden başlatma gerekmez. Bir aracı kaldırmak için .md dosyasını silin.

Versiyonlama
#

Tüm kullanıcı verileri otomatik olarak versiyonlanır:

  • Çalışma alanı dosyaları — workspace/ içindeki yerel git reposu ile izlenir. Her yazma otomatik commit oluşturur. Agent’tan “son değişikliği geri al” isteyin veya git revert HEAD komutunu manuel kullanın
  • Yapılandırma dosyaları — config/agent-instructions.md, config/personality.md, skills/ ve permissions.json her değişiklikten önce yedeklenir. Dosya başına 20 versiyona kadar

Git opsiyoneldir — yüklü değilse, çalışma alanı değişiklikleri versiyonlanmaz. Yapılandırma yedekleri her zaman çalışır.

Agent’ınızı özelleştirme
#

Agent sunucu minimal bir çerçeve tabanıyla gelir ve kendi özelleştirmenizi üzerine katmanızı bekler. Çalışma zamanı ikisini ayrı tutar, böylece çerçeve güncellemeleri çalışmanızı asla bozmaz.

Çerçeve vs kullanıcı
#

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

Kullanıcı özelleştirmesi adanmış tipli araçlar (create_user_skill, create_custom_tool) ile yazılır, böylece elde edilen dosyalar her zaman yükleyicinin formatıyla eşleşir. write aracı ayrıca skills/, custom-tools/ veya config/ altındaki herhangi bir yolu reddeder ve agent’ı data/user/* dizinine yönlendirir — böylece doğrudan dosya düzenlemeleri bile kullanıcı katmanında biter.

Taban custom-tools/ dizini hakkında not. Bugün yalnızca yükleyicinin yok saydığı bir şablon (_example.md) içerir — agent’ın sizin için yüklediği her araç data/user/custom-tools/ dizinine gider. Dizin, gelecekteki çerçeve sürümlerinin yüklemelerinizi bozmadan opsiyonel yerleşik araçlar sunabilmesi için ayrılmıştır. Bu olduğunda, kullanıcı katmanı dosyalarınız hâlâ araç adı çatışmalarında kazanır, bu yüzden taşınacak bir şey yoktur.

Dört özelleştirme yolu
#

Ne değiştirmek istiyorsunuzNereye giderÖrnek
Bir kısayol veya davranış becerisidata/user/skills/<name>.md“Antrenmanlarımı kaydetmek için bir beceri oluştur”
Agent yeteneği olarak sarılmış bir CLI aracıdata/user/custom-tools/<name>.md“ffmpeg’i yükle ve dönüşümler için kullanmama izin ver”
Global bir kural (“her zaman İngilizce yanıtla”, “asla tablo kullanma”)data/user/instructions.md“Bundan böyle makaleleri her zaman 3 madde olarak özetle”
Beceriler tarafından referans verilen tipli varsayılan değerdata/user/prefs.json“Varsayılan rota başlangıcım Madrid” → {"routeOrigin": "Madrid"}

Bu dosyaları asla elle yazmanız gerekmez. Sadece agent’a ne istediğinizi söyleyin, doğru katmanı otomatik olarak seçer.

{{prefs.*}} ile tipli tercihler
#

Diyelim ki varsayılan başlangıç noktanızı bilmesi gereken bir rota planlayıcı becerisi yazıyorsunuz. “Madrid"i beceriye sabit kodlamak yerine, tercihi referans alın:

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

Ve değeri data/user/prefs.json içinde saklayın:

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

Sunucu, beceri yüklendiğinde yer tutucuların yerine koyar. İç içe anahtarlar ({{prefs.tunnel.domain}}) da çalışır. Bilinmeyen anahtarlar dokunulmadan bırakılır, böylece yazım hataları görünür kalır.

Çerçeve tabanını doğrudan düzenleme
#

Kendiniz barındırıyorsanız ve çerçevenin kendisini değiştirmek istiyorsanız, config/agent-instructions.md, config/personality.md, skills/ veya custom-tools/ dosyalarını doğrudan düzenleyebilirsiniz — bir dosya editörü kullandığınızda sunucu sizi durdurmaz. Ancak agent bir konuşmadan bu yollara yazmaz. Ve çerçeve güncellemeleri düzenlemelerinizin üzerine yazar. Saklamak istediğiniz her şey için kullanıcı katmanını tercih edin.

Sunucuyu Genişletme
#

  • Özel araçlar — Agent’tan CLI araçları yüklemesini isteyin; otomatik olarak data/user/custom-tools/ dizinine inerler
  • Beceri ekleme — Agent’tan bir beceri oluşturmasını isteyin; dosya data/user/skills/ dizinine gider
  • Davranış değiştirme — Agent’tan global bir kural uygulamasını isteyin; data/user/instructions.md dosyasına ekler
  • İzin yapılandırma — Agentin hangi araçları kullanabileceğini kontrol etmek için bun run permissions çalıştırın
  • Yerleşik araç ekleme — Daha derin entegrasyonlar için src/tools.ts dosyasında yeni araç fonksiyonları uygulayın (sunucuyu fork etmeyi gerektirir)

Yapılandırma
#

Tüm ayarlar .env dosyasında saklanır (bun run setup ile oluşturulur). Temel seçenekler:

DeğişkenVarsayılanAçıklama
AUTH_TOKEN(gerekli)PocketHook ile paylaşılan gizli anahtar
LLM_API_KEY(gerekli)LLM sağlayıcı API anahtarı
LLM_PROVIDERanthropicSağlayıcı adı
LLM_MODELclaude-sonnet-4-20250514Model ID
LLM_REASONINGoffAkıl yürütme çabası: off, minimal, low, medium, high, xhigh. Daha yüksek seviyeler gizli düşünme tokenleri ekler (daha yavaş + daha pahalı). Desteklemeyen modeller tarafından yok sayılır
PORT3000Sunucu portu
AGENT_NAMEPocketHook AssistantAgent görüntüleme adı
MAX_HISTORY50Kısa süreli bellekteki mesajlar
MAX_RECALL5Semantik geri çağırma ile her turda dönen anılar (yalnızca VECTOR_MEMORY=true olduğunda)
SESSION_TTL_MINUTES60Oturum süresi dolumu
VECTOR_MEMORYfalseSemantik belleği etkinleştir (gömme sağlayıcısı gerektirir)
EMBEDDING_PROVIDERollamaGömme sağlayıcısı: ollama, lm-studio veya openai
EMBEDDING_MODELnomic-embed-textGömme modeli adı
EMBEDDING_URL(otomatik)Gömme API URL’si
EMBEDDING_API_KEY—OpenAI gömmeleri için API anahtarı
LOG_LEVELinfoLog seviyesi: debug, info, warn, error
RATE_LIMIT_MAX30Pencere başına maksimum istek
DASHBOARDtrueWeb kontrol panelini etkinleştir (/dashboard rotası)
INSTANCE_NAME(proje dizini adı, pockethook- çıkartılarak)Sistem servis etiketi, log dizini ve süreç eşleştirmesi için kullanılan sonek. Aynı makinede birden fazla checkout çalıştırırken açıkça ayarlayın
LLM_QUICK_PROVIDER / LLM_QUICK_MODELana ile aynıHızlı model için sağlayıcı/model (dahili yardımcılar)
SAFARI_PERMISSION_LEVELconfirmSafari uzantısı tıklama politikası: confirm, autonomous veya readonly
SAFARI_CAPTURES_BASE_URLyalnızca yerelSafari sayfa yakalamalarını uygulamaya sunmak için genel temel URL

Tam yapılandırma referansı için GitHub deposuna bakın.

Hizmet Olarak Çalıştırma
#

Otomatik olarak başlayan kalıcı bir hizmet olarak yükleyin:

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

INSTANCE_NAME varsayılan olarak proje dizini adı pockethook- önekinin çıkartılmasıyla oluşur (örneğin, pockethook-agent-server/ içindeki bir checkout agent-server olur). Aynı makinede birden fazla checkout’u çarpışma olmadan çalıştırmak için açıkça ayarlayın — her örneğin kendi data/ ve logları olur.

bun run service status, restart, stop veya uninstall ile yönetin.

Güvenlik
#

  • HTTPS gerekli — PocketHook tüm URL’ler için HTTPS’i zorunlu kılar
  • Bearer token kimlik doğrulama — Uygulama ve sunucu arasında paylaşılan gizli anahtar
  • İstek sınırlaması — Token başına sınırlar kötüye kullanımı önler
  • Korumalı araçlar — Kabuk komutları ve dosya erişimi izinlerle sınırlandırılır
  • Engellenen desenler — Tehlikeli komutlar (sudo, rm -rf /) varsayılan olarak engellenir
  • Çalışma dizini sınırı — Agent, belirlenmiş dizininden çıkamaz
  • Hassas dosyalar korunur — .env, .git, *.key, *.pem agent erişiminden engellenir
  • Otomatik versiyonlama — Tüm çalışma alanı değişiklikleri kolay geri alma için git ile izlenir