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ştirmelerinizdata/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.jsoniç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_jobmeta-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ı vetype/schedulekombinasyonlarını cihaza ulaşmadan önce reddeder - Özelleştirme için tipli yazıcılar —
create_user_skillvecreate_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ı
.mddosyaları olarak tanımlayın. Prompt’a yalnızca kompakt bir indeks yüklenir; tam içerikload_skillaracı 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: trueistendiğ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
localhostURL’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.
/dashboardve/api/jobstasarı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 yoksaDASHBOARD=falseolarak 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 URL | https://your-host |
| Health Check URL | https://your-host/health |
| Polling URL | https://your-host/jobs |
Nasıl Çalışır#
- PocketHook’ta bir mesaj gönderirsiniz
- Sunucu, mesajı seçtiğiniz LLM’e konuşma geçmişi, hatırlanan anılar ve mevcut araçlarla birlikte iletir
- 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
- Yanıt PocketHook formatında döndürülür (
msg+shortcut+data+url) - 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ğrulama | Varsayılan Model |
|---|---|---|
| Anthropic | API anahtarı | claude-sonnet-4-20250514 |
| OpenAI | API anahtarı | gpt-4.1-mini |
| OpenAI Codex | OAuth | gpt-5.1-codex-mini |
| GitHub Copilot | OAuth | claude-sonnet-4 |
| Google (Gemini) | API anahtarı | gemini-2.5-flash |
| Mistral | API anahtarı | mistral-medium-latest |
| Groq | API anahtarı | llama-3.3-70b-versatile |
| xAI (Grok) | API anahtarı | grok-3-mini-fast |
| OpenRouter | API anahtarı | anthropic/claude-sonnet-4 |
| Ollama (yerel) | Yok | llama3.2 |
| LM Studio (yerel) | Yok | qwen3.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_HISTORYmesaj 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_RECALLher turda prompt’a enjekte edilen ilgili anıların sayısını kontrol eder - Oturumlar
SESSION_TTL_MINUTESsonra 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)ilevalid_from/valid_untilzaman 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:
- Projenin vektörlerini arşivler (Barcelona’ya bağlı olaylar, kararlar, istekler).
- 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). - 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ı#
| Alan | Gerekli | Açıklama |
|---|---|---|
title | Evet | İnsan tarafından okunabilir ad |
description | Evet | Agent’a gösterilen beceriler indeksinde kullanılan tek cümle |
shortcuts | Evet | Dosyada tanımlanan kısayol adlarının dizisi. Yalnızca davranış içeren beceriler için [] kullanın |
target | Hayır | Shortcuts’ların nerede çalıştırılacağı: device (varsayılan, iOS’a gönderilir) veya mac (sunucuda çalıştırılır) |
sync_app | Hayır | Sunucu 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:
- Agent bir Shortcut’ın çalıştırılması gerektiğine karar verir (örnek “bugünkü toplantı notlarıyla bir not oluştur”)
- 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 - Eğer
sync_appayarlanmış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 - 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 runyalnı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
/dashboardhem de/api/jobsaçıkGETuç 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 yoksaDASHBOARD=falseolarak ayarlayın. PocketHook iOS uygulaması bu uç noktaları kullanmaz.
Tamamen özelleştirilebilir:
- Hızlı düzenleme — Basit özelleştirmeler için
workspace/dashboard/içinedashboard.htmlyerleştirin - Tam proje —
workspace/dashboard/içindedist/‘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:
- Bağımlılığı yükleyecek
- Bir araç tanımı oluşturacak (basit bir
.mddosyası) - 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 veyagit revert HEADkomutunu manuel kullanın - Yapılandırma dosyaları —
config/agent-instructions.md,config/personality.md,skills/vepermissions.jsonher 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 istiyorsunuz | Nereye gider | Örnek |
|---|---|---|
| Bir kısayol veya davranış becerisi | data/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ğer | data/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.mddosyası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.tsdosyası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şken | Varsayılan | Açıklama |
|---|---|---|
AUTH_TOKEN | (gerekli) | PocketHook ile paylaşılan gizli anahtar |
LLM_API_KEY | (gerekli) | LLM sağlayıcı API anahtarı |
LLM_PROVIDER | anthropic | Sağlayıcı adı |
LLM_MODEL | claude-sonnet-4-20250514 | Model ID |
LLM_REASONING | off | Akı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 |
PORT | 3000 | Sunucu portu |
AGENT_NAME | PocketHook Assistant | Agent görüntüleme adı |
MAX_HISTORY | 50 | Kısa süreli bellekteki mesajlar |
MAX_RECALL | 5 | Semantik geri çağırma ile her turda dönen anılar (yalnızca VECTOR_MEMORY=true olduğunda) |
SESSION_TTL_MINUTES | 60 | Oturum süresi dolumu |
VECTOR_MEMORY | false | Semantik belleği etkinleştir (gömme sağlayıcısı gerektirir) |
EMBEDDING_PROVIDER | ollama | Gömme sağlayıcısı: ollama, lm-studio veya openai |
EMBEDDING_MODEL | nomic-embed-text | Gömme modeli adı |
EMBEDDING_URL | (otomatik) | Gömme API URL’si |
EMBEDDING_API_KEY | — | OpenAI gömmeleri için API anahtarı |
LOG_LEVEL | info | Log seviyesi: debug, info, warn, error |
RATE_LIMIT_MAX | 30 | Pencere başına maksimum istek |
DASHBOARD | true | Web 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_MODEL | ana ile aynı | Hızlı model için sağlayıcı/model (dahili yardımcılar) |
SAFARI_PERMISSION_LEVEL | confirm | Safari uzantısı tıklama politikası: confirm, autonomous veya readonly |
SAFARI_CAPTURES_BASE_URL | yalnızca yerel | Safari 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
| Platform | Arka Uç | Servis konumu |
|---|---|---|
| macOS | launchd | ~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist |
| Linux | systemd (kullanıcı) | ~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service |
| Windows | NSSM | PocketHook-${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,*.pemagent erişiminden engellenir - Otomatik versiyonlama — Tüm çalışma alanı değişiklikleri kolay geri alma için git ile izlenir