Ugrás a tartalomra
  1. Dokumentáció/

Agent Server

Mi az a PocketHook Agent Server?
#

Az agent szerver teljes értékű AI asszisztenssé alakítja a PocketHook-ot. Ahelyett, hogy magad írnád a válaszlogikát, egy LLM-et (Claude, GPT, Gemini stb.) csatlakoztatsz, amely feldolgozza az üzeneteket, eszközöket hív és strukturált PocketHook válaszokat ad vissza — beleértve a Shortcuts triggereket.

A szerver a saját gépeden fut. Az adataid nálad maradnak.

Ez egy kiindulópont. A szerver alapvető eszközökkel érkezik, és úgy van tervezve, hogy te bővítsd. Add hozzá saját integrációidat — e-mail, naptárak, dokumentumok, API-k — és tedd a sajátoddá.

Funkciók
#

  • Több LLM szolgáltató — Anthropic, OpenAI, GitHub Copilot, Google, Mistral, Groq, xAI, OpenRouter, Ollama (helyi), LM Studio (helyi)
  • OAuth hitelesítés — GitHub Copilot és OpenAI Codex device code / böngésző flow-n keresztül
  • Agent eszközök — Shell parancsok, fájl olvasás/írás, könyvtárlista, webes keresés, webes adatgyűjtés, fejlesztői szerver kezelés
  • Framework / felhasználó szétválasztás — A framework fájljai (skills/, custom-tools/, config/) csak olvashatók maradnak. A testreszabásaid a data/user/ alatt élnek (készségek, egyéni eszközök, utasítások, típusos beállítások). A framework frissítései tisztán megérkeznek, anélkül hogy felülírnák a munkádat
  • Típusos felhasználói beállítások — Tárolj olyan értékeket, mint a kedvenc térkép-alkalmazásod vagy az alagút domain a data/user/prefs.json fájlban. Hivatkozz rájuk a készségekben {{prefs.key}} formában, és a szerver betöltéskor behelyettesíti őket
  • Programozási feladatok egy hívásban — A run_code_job meta-eszköz egy prompt típusú háttérfeladatot hoz létre (a konfigurált LLM futtatja) és egyetlen lépésben elküldi a felhasználónak a visszaigazolást, felváltva a hibára hajlamos „respond + create-job" mintát
  • Típusos protokoll-eszközök — Hat dedikált respond_* eszköz (respond_text, respond_image, respond_buttons, respond_shortcut, respond_html, respond_sequence), valamint típusos feladat-eszközök (create_once_job, create_cron_job) és típusos workspace-eszközök (create_project, list_projects, delete_project). A sémák visszautasítják a hibás URL-eket, a gomb-szintaxist és a type/schedule kombinációkat, mielőtt elérnék az eszközt
  • Típusos írók a testreszabáshoz — A create_user_skill és a create_custom_tool a felhasználói réteg markdown-ját helyes frontmatterrel állítja elő, így a betöltő mindig parszolja, és az agent soha nem írja kézzel ezeket a fájlokat
  • Háttérfeladatok — Egyszeri vagy ismétlődő feladatok cron kifejezésekkel vagy egyszerű intervallumokkal
  • Dinamikus készségek — Definiálj shortcuts-okat és viselkedési szabályokat .md fájlokként. Csak egy kompakt index töltődik be a promptba; a teljes tartalom igény szerint kerül betöltésre a load_skill eszközön keresztül
  • Önkezelő készségek — Az agent létrehozhat, szerkeszthet és törölhet készség-definíciókat (az írások mindig a felhasználói rétegbe kerülnek)
  • Szemantikus memória — Vektor-alapú keresés embeddinggel (Ollama, LM Studio vagy OpenAI). Az emlékeket az LLM automatikusan wing/room/hall/status dimenziókba sorolja
  • Tudásgráf — Temporális hármas-tároló tartós tényekhez automatikus érvénytelenítéssel. Többértékű kapcsolatok együtt léteznek; egyértékű tények automatikusan felülíródnak
  • PARA módszer projektzáró kaszkáddal — Minden emlék státusszal van jelölve (Projekt, Terület, Erőforrás, Archívum). Amikor egy projekt véget ér, egyetlen complete_project hívás archiválja a vektorait, érvényteleníti az összes tervezési hármast, amely a projekt slug-jához kötődik, és rögzíti a lezárást — egy hívás három helyett
  • Hibrid felidézés — Ötvözi az FTS5 kulcsszavas keresést a vektoros szemantikus kereséssel reciprocal rank fusion segítségével
  • Hosszú távú memória — SQLite + FTS5 teljes szöveges keresés tartalékként, amikor a szemantikus memória ki van kapcsolva
  • Fejlesztői szerver kezelés alagút-szerződéssel — Fejlesztői szerverek indítása, leállítása és listázása. Amikor a tunnel: true kérés megérkezik, a szerver ezt indítás előtt és utána is ellenőrzi — elérhetetlen localhost szerver soha nem marad csendben futva
  • Automatikus URL-szanitizáció — Ha az agent egy localhost URL-t hagy a válaszában, a respond_* eszközök átírják a hozzá tartozó alagút URL-re, így a telefonod mindig elérhető linket kap
  • Egyéni eszközök — Az agent CLI eszközöket telepíthet és új képességekként regisztrálhatja őket
  • Verziókezelés — Automatikus git verziókezelés workspace fájlokhoz; konfigurációs mentések készségekhez és jogosultságokhoz
  • Webes irányítópult — Háttérfeladatok élő áttekintése, felhasználónként testreszabható. A /dashboard és a /api/jobs szándékosan hitelesítetlenek — korlátozd a hozzáférést hálózati szinten (Tailscale ACL, tűzfal, reverse proxy basic authhal) vagy állítsd DASHBOARD=false értékre, ha nincs rá szükséged
  • HTTPS alagút — Beépített támogatás Tailscale, ngrok és Cloudflare Tunnel számára
  • Rendszerszolgáltatás — Telepítés állandó szolgáltatásként macOS-en, Linuxon vagy Windowson
  • Kéréskorlátozás — Tokenkénti korlátok konfigurálható küszöbértékekkel

Követelmények
#

  • Bun futtatókörnyezet
  • API kulcs vagy OAuth hitelesítő adatok az LLM szolgáltatódhoz
  • (Opcionális) Tailscale, ngrok vagy cloudflared HTTPS alagúthoz

Gyorsindítás
#

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

# Interaktív beállítás — válaszd ki a szolgáltatót, modellt, hitelesítési tokent, portot
bun run setup

# Szerver indítása + HTTPS alagút
bun run dev:tunnel

A beállítási varázsló végigvezet az LLM szolgáltató kiválasztásán, a hitelesítés konfigurálásán és az eszközjogosultságok beállításán.

Futtatás után másold a megjelenített URL-eket a PocketHook Beállításokba:

PocketHook BeállításURL
Server URLhttps://your-host
Health Check URLhttps://your-host/health
Polling URLhttps://your-host/jobs

Hogyan működik
#

  1. Üzenetet küldesz a PocketHook-ban
  2. A szerver továbbítja a választott LLM-nek a beszélgetési előzményekkel, felidézett emlékekkel és elérhető eszközökkel együtt
  3. Az LLM feldolgozza az üzenetet — shell parancsokat futtathat, fájlokat olvashat/írhat, kereshet a weben, háttérfeladatokat ütemezhet, tényeket jegyezhet meg vagy fejlesztői szervereket indíthat
  4. A válasz PocketHook formátumban érkezik vissza (msg + shortcut + data + url)
  5. A PocketHook megjeleníti az üzenetet és végrehajtja a Shortcuts-okat az eszközödön

Támogatott LLM szolgáltatók
#

SzolgáltatóHitelesítésAlapértelmezett modell
AnthropicAPI kulcsclaude-sonnet-4-20250514
OpenAIAPI kulcsgpt-4.1-mini
OpenAI CodexOAuthgpt-5.1-codex-mini
GitHub CopilotOAuthclaude-sonnet-4
Google (Gemini)API kulcsgemini-2.5-flash
MistralAPI kulcsmistral-medium-latest
GroqAPI kulcsllama-3.3-70b-versatile
xAI (Grok)API kulcsgrok-3-mini-fast
OpenRouterAPI kulcsanthropic/claude-sonnet-4
Ollama (helyi)Nincsllama3.2
LM Studio (helyi)Nincsqwen3.5-4b-mlx

Válts szolgáltatót bármikor a bun run switch paranccsal. Az Ollama és az LM Studio teljesen a gépeden fut — nincs szükség API kulcsra, semmilyen adat nem hagyja el a hálózatodat.

Memória
#

A memóriarendszer három rétegből áll, mindegyik más célt szolgál.

A szemantikus memória tervezése a MemPalace (memóriapalota architektúra, amely szárnyakba, folyosókba és szobákba rendezi az emlékeket) és Tiago Forte PARA módszerének (Projektek, Területek, Erőforrások, Archívum) ötleteit ötvözi a tudás-életciklus kezeléséhez.

Beszélgetési memória
#

SQLite FTS5 teljes szöveges kereséssel. Minden üzenet időbélyeggel és munkamenet-azonosítóval tárolódik.

  • Rövid távú — Az utolsó MAX_HISTORY üzenet memóriában tartva munkamenetenként
  • Hosszú távú — Minden üzenet SQLite-ban tárolva, FTS5 kulcsszó-illesztéssel kereshető
  • Felidézés körönként — Ha a szemantikus memória be van kapcsolva, a MAX_RECALL szabályozza, hány releváns emlék kerül a promptba minden körben
  • A munkamenetek lejárnak a SESSION_TTL_MINUTES után, de a hosszú távú memória örökké megmarad

Ezeket interaktívan a bun run memory paranccsal hangolhatod.

Szemantikus memória
#

VECTOR_MEMORY=true és embedding szolgáltató (Ollama, LM Studio vagy OpenAI) szükséges.

Minden emlék vektorként van beágyazva, és az LLM automatikusan négy dimenzióba sorolja:

  • Wing — Az entitás: user, person:john, project:blog, place:london
  • Room — A típus: facts, preferences, events, decisions, requests
  • Hall — A téma: personal, tech, health, travel, food, work
  • Status — PARA besorolás: project, area, resource, archive

Amikor kérdést teszel fel, az entitás-kinyerés a legrelevánsabb szárnyakra fókuszálja a vektoros keresést. Az eredmények az FTS5 kulcsszavas eredményekkel reciprocal rank fusion segítségével kerülnek összevonásra — így mindkét megközelítés legjobbját kapod.

Tudásgráf
#

Temporális hármas-tároló strukturált, tartós tényekhez:

  • Hármasok: (alany, állítmány, tárgy) valid_from / valid_until időbélyegekkel
  • Egyértékű állítmányok (lives_in, partner) automatikusan érvénytelenítik a régi értéket frissítéskor
  • Többértékű állítmányok (child, friend, hobby) érvénytelenítés nélkül együtt léteznek
  • A tudásgráf tényei a felidézett emlékek mellett minden beszélgetésbe bekerülnek

Amikor azt mondod az agentnek, hogy “Berlinbe költöztem”, érvényteleníti a régi lives_in hármast és újat hoz létre — automatikusan.

PARA életciklus
#

Minden emlék PARA státusszal van jelölve:

  • Projekt — Aktív, időkorlátos munka
  • Terület — Folyamatban lévő felelősségek
  • Erőforrás — Referencia anyag (listák, ajánlások, útmutatók)
  • Archívum — Befejezett vagy törölt projektek

Amikor egy projekt befejeződik, az agent szemantikus hasonlóságot használ, hogy csak az adott projekt emlékeit archiválja, miközben megőrzi a referencia anyagot jövőbeli felhasználásra.

Projektzáró kaszkád
#

Mondd, hogy “Lemondom a barcelonai utamat”, és egyetlen eszközhívás mindent elintéz:

  1. Archiválja a projekt vektorait (a Barcelonához kötődő eseményeket, döntéseket, kéréseket).
  2. Érvénytelenít minden aktív tudásgráf-hármast, amelynek állítmánya megegyezik a projekt slug-jával (scheduled_visit_barcelona, planning_visit_barcelona, confirmed_visit_barcelona).
  3. Rögzíti a lezárást új hármasként: (user, "cancelled_visit_barcelona", "2026-04-15").

Az illesztés határérzékeny — egy másik, revisit_barcelona nevű projekt érintetlen marad. Az agentnek már nem kell három külön hívást megfelelő sorrendben összehangolnia, így a kisebb modellek is helyesen oldják meg.

Ha a VECTOR_MEMORY ki van kapcsolva vagy az embedding szolgáltató elérhetetlen, a rendszer hiba nélkül visszaáll FTS5-re.

Készségek
#

A készségek .md fájlok a skills/ könyvtárban, amelyek iOS Shortcuts-okat definiálnak, amiket az agent indíthat, és/vagy viselkedési szabályokat. Dinamikus betöltést használnak: csak egy kompakt index (cím, leírás, shortcut lista) kerül a rendszer promptba. Az agent igény szerint tölti be a teljes tartalmat a load_skill eszközön keresztül, alacsonyan tartva a token-felhasználást, ahogy több készséget adsz hozzá.

Minden készségfájl YAML frontmattert használ:

---
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 mezők
#

MezőKötelezőLeírás
titleIgenOlvasható név
descriptionIgenEgy mondat, amely az agentnek megjelenített készség-indexben szerepel
shortcutsIgenA fájlban definiált shortcut nevek tömbje. Csak viselkedési szabályokat tartalmazó készségeknél használj []-t
targetNemHol futnak a shortcuts: device (alapértelmezett, iOS-re küldve) vagy mac (a szerveren fut)
sync_appNemAz az alkalmazás, amelyet a szerveroldali futás után rövid időre megnyit a háttérben az iCloud szinkronizálás kiváltásához (pl. Notes, Calendar, Reminders). Hagyd ki vagy használd a none értéket az átugráshoz

A készségek lehetnek viselkedési szabályok shortcuts nélkül is (pl. “hogyan tervezz családi kirándulást”). Ezekhez használd a shortcuts: [] értéket.

Az agent kérésre készségeket hozhat létre és kezelhet — kérd meg, hogy “hozz létre egy készséget a lámpáim vezérléséhez” és megírja a .md fájlt helyetted. Az új és szerkesztett készségek mindig a felhasználói rétegedbe (data/user/skills/) kerülnek, így a framework frissítései soha nem írják felül őket. Lásd lent a Customizing your agent szakaszt.

Shortcuts futtatása a Mac szerveren
#

Amikor egy készségnél target: mac van beállítva, a shortcuts csendben a Mac szerveren futnak a shortcuts run CLI-n keresztül, nem pedig az iOS eszközre kerülnek elküldésre. Ez ideális iCloud-szinkronizált tartalmat létrehozó műveletekhez — jegyzetek, emlékeztetők, naptáreseményekhez — mert az eredmény automatikusan szinkronizálódik az összes eszközödre anélkül, hogy a PocketHook alkalmazásnak bármit is tennie kellene.

Hogyan működik:

  1. Az agent úgy dönt, hogy egy shortcut-ot futtatni kell (pl. “hozz létre egy jegyzetet a mai megbeszélés jegyzeteivel”)
  2. A szerver meghívja a shortcuts run "shortcutNév" parancsot, a JSON-ként az stdin-en átadott adatokkal, ugyanabban a wrapper-formátumban, amit a PocketHook iOS használ
  3. Ha a sync_app be van állítva, a szerver röviden megnyitja azt az alkalmazást a háttérben (open -gj -a Notes), hogy kényszerítse az iCloud szinkronizálást, majd 5 másodperc múlva bezárja
  4. A felhasználó megerősítő üzenetet kap a chatben; maga a shortcut nem kerül az eszközre

Követelmények:

  • A szervernek macOS-en kell futnia — a shortcuts run csak macOS-re elérhető. Más platformokon a szerver figyelmeztetést naplóz és visszaáll az eszközön történő futtatásra
  • A shortcut-nak telepítve kell lennie a Shortcuts.app-ban a Mac szerveren
  • A shortcut-nak Dictionary típusú bemenetet kell várnia (a PocketHook az adatokat { context, timestamp, app, data } formába csomagolja)

Mikor használd a target: mac-et:

  • iCloud-szinkronizált műveletek (Notes, Reminders, Calendar) — az eredmény úgyis eljut minden eszközre
  • Hosszan tartó feldolgozás, amelyet szeretnél az iOS eszközön kívül tartani
  • Minden shortcut, amelynek nem kell az iPhone felületével interakcióba lépnie

Mikor tartsd meg a target: device (alapértelmezett) értéket:

  • Olyan shortcuts, amelyek csak iPhone-on elérhető funkciókat igényelnek (kamera, pontos helymeghatározás, helyi alkalmazás-automatizációk)
  • Olyan shortcuts, amelyek interaktív bemenetet kérnek a felhasználótól
  • Olyan shortcuts, amelyek csak iOS-en elérhető alkalmazások App Intents-jeit használják

Háttérfeladatok
#

Kérd meg az agentet feladatok ütemezésére, és a többit elintézi:

  • “Ellenőrizd az időjárást minden reggel 8-kor és hozz létre egy jegyzetet”
  • “Futtasd ezt a szkriptet óránként”
  • “Emlékeztess, hogy ellenőrizzem az e-mailjeimet 30 perc múlva”

A feladatok támogatják a cron kifejezéseket (0 8 * * *) és egyszerű intervallumokat (30m, 1h, 2d). Az eredmények a PocketHook-ba kerülnek, amikor lekérdezi a /jobs végpontot.

Két végrehajtási típus:

  • Shell — Bash parancsot futtat, kimenetét rögzíti. Befejezéskor Shortcuts-ot indíthat
  • Prompt — AI agent dolgozza fel teljes eszközhozzáféréssel, a teljes PocketHook választ tárolja

Fejlesztői szerverek
#

Amikor az agent webes projektet hoz létre a workspace-ben (Hugo, Astro, Next.js, Flask, Go stb.), proaktívan felajánlja annak kiszolgálását:

  • Előnézet — Helyi fejlesztői szervert indít automatikusan hozzárendelt porton gyors megtekintésre
  • Nyilvános — Elindítja a szervert és HTTPS alagúton keresztül teszi elérhetővé bárhonnan

Az agent kezeli az életciklust: indítás, leállítás és futó szerverek listázása. Minden szerver kitakarítódik, amikor a fő szerver leáll.

Alagút-szerződés
#

Amikor az agent alagút-kitettséggel indít szervert, a futtatókörnyezet ezt kikényszeríti: ha egyetlen alagút-eszköz (Tailscale, ngrok, cloudflared) sincs telepítve, a szerver nem indul el. Ha az alagút beállítása a spawn után hiúsul meg, az árva folyamat leállításra kerül, és az agent kifejezetten értesítést kap — így visszatérhet előnézeti módba, vagy megkérhet, hogy telepíts egy alagutat. A visszaadott URL mindig az alagút URL-je, ha az alagút be van kapcsolva, azzal a megjegyzéssel, hogy a helyi URL csak a gazdagépen érhető el.

Biztonsági hálóként minden respond_* eszköz utófeldolgozza a saját üzenetét: minden localhost vagy 127.0.0.1 URL, amely becsúszik egy válaszba, automatikusan a hozzá tartozó alagút URL-re íródik át, ha egy kezelt szervernek van ilyen. Amikor nem tud átírni, figyelmeztetést kapsz a naplókban egy megszakadt link helyett a telefonodon.

Irányítópult
#

A beépített webes irányítópult a /dashboard címen mutatja a háttérfeladatok élő áttekintését.

Szándékosan hitelesítetlen. Mind a /dashboard, mind a /api/jobs nyitott GET végpontok — bárki, aki eléri a hostot, listázhatja a feladatokat. Korlátozd a hozzáférést hálózati szinten (Tailscale ACL, tűzfal, reverse proxy basic authhal), vagy állítsd DASHBOARD=false értékre, ha nincs rá szükséged. A PocketHook iOS alkalmazás nem használja ezeket a végpontokat.

Teljesen testreszabható:

  • Gyors szerkesztés — Helyezz el egy dashboard.html fájlt a workspace/dashboard/-ban egyszerű testreszabásokhoz
  • Teljes projekt — Hozz létre keretrendszer projektet (Svelte, React, Vue stb.) a workspace/dashboard/-ban, build kimenettel a dist/-be

Kérd meg az agentet az irányítópultod testreszabására, és a többit elintézi — minden felhasználó egyedi, személyre szabott irányítópultot kap.

Egyéni eszközök
#

Az agent CLI eszközöket telepíthet és új képességekként regisztrálhatja őket — a szerver kódjának módosítása nélkül bővíti önmagát.

Például mondd, hogy “telepítsd a Playwrightot és használd képernyőképek készítésére”. Az agent:

  1. Telepíti a függőséget
  2. Létrehoz egy eszköz-definíciót (egy egyszerű .md fájl)
  3. A jövőbeli beszélgetésekben használja az új eszközt

Az egyéni eszközök menet közben újratöltődnek — nincs szükség újraindításra. Töröld a .md fájlt az eszköz eltávolításához.

Verziókezelés
#

Minden felhasználói adat automatikusan verziókezelt:

  • Workspace fájlok — Helyi git repóval nyomon követve a workspace/-on belül. Minden írás auto-commitot hoz létre. Kérd az agentet, hogy “vonja vissza az utolsó változtatást” vagy használd a git revert HEAD parancsot kézzel
  • Konfigurációs fájlok — A config/agent-instructions.md, config/personality.md, skills/ és permissions.json mentésre kerül minden módosítás előtt. Fájlonként legfeljebb 20 verzió

A Git opcionális — ha nincs telepítve, a workspace változások nem verziókezeltek. A konfigurációs mentések mindig működnek.

Customizing your agent
#

Az agent szerver minimális framework-alappal érkezik, és elvárja, hogy a saját testreszabásodat erre rétegezd. A futtatókörnyezet elkülönítve tartja a kettőt, hogy a framework frissítései soha ne zavarják meg a munkádat.

Framework és felhasználó
#

pockethook-agent-server/
├── skills/                      # framework-szállított készségek (csak olvasható)
├── custom-tools/                # fenntartva a framework-szállított eszközöknek (csak olvasható)
├── config/
│   ├── agent-instructions.md    # framework agent utasításai (csak olvasható)
│   └── personality.md           # framework személyiség (csak olvasható)
└── data/user/                   # A TE testreszabásod itt él (git-ignorált)
    ├── skills/                  # saját készségeid (fájlnév alapján felülírják az alapot)
    ├── custom-tools/            # általad telepített egyéni eszközök
    ├── instructions.md          # az agent utasításokhoz adott kiegészítéseid
    └── prefs.json               # {{prefs.key}} néven hivatkozott típusos értékek

A felhasználói testreszabást dedikált típusos eszközök írják (create_user_skill, create_custom_tool), így az eredményül kapott fájlok mindig megfelelnek a betöltő formátumának. A write eszköz emellett elutasít minden skills/, custom-tools/ vagy config/ alatti útvonalat, és átirányítja az agentet a data/user/* alá — így a közvetlen fájlszerkesztések is a felhasználói rétegben kötnek ki.

Megjegyzés az alap custom-tools/ könyvtárról. Ma csak egy sablont (_example.md) tartalmaz, amelyet a betöltő figyelmen kívül hagy — minden eszköz, amelyet az agent telepít neked, a data/user/custom-tools/ mappába kerül. A könyvtár fenntartva van, hogy a jövőbeli framework-kiadások opcionális beépített eszközöket szállíthassanak anélkül, hogy felülírnák a saját telepítéseidet. Amikor ez megtörténik, a felhasználói rétegedben lévő fájljaid továbbra is nyernek eszköznév-ütközés esetén, így nincs semmi migrálnivaló.

Négy módja a testreszabásnak
#

Amit változtatni szeretnélHová kerülPélda
Egy shortcut vagy viselkedési készségdata/user/skills/<név>.md“Hozz létre egy készséget az edzéseim rögzítésére”
Egy agent képességként csomagolt CLI eszközdata/user/custom-tools/<név>.md“Telepítsd az ffmpeg-et és engedd használnom konverziókhoz”
Globális szabály (“mindig angolul válaszolj”, “soha ne használj táblázatot”)data/user/instructions.md“Mostantól mindig foglald össze a cikkeket 3 pontban”
A készségek által hivatkozott típusos alapértékdata/user/prefs.json“Az alapértelmezett útvonal-kiindulópontom Madrid”{"routeOrigin": "Madrid"}

Soha nem kell ezeket a fájlokat kézzel írnod. Csak mondd meg az agentnek, mit szeretnél, és ő automatikusan kiválasztja a megfelelő réteget.

Típusos beállítások {{prefs.*}} szintaxissal
#

Tegyük fel, hogy egy útvonal-tervező készséget írsz, amelynek tudnia kell az alapértelmezett kiindulópontodat. Ahelyett, hogy a „Madrid"-ot bekódolnád a készségbe, hivatkozz a beállításra:

- **Kiindulópont**: {{prefs.routeOrigin}}, hacsak a felhasználó meg nem ad más kezdőpontot.

És tárold az értéket a data/user/prefs.json fájlban:

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

A szerver a készség betöltésekor helyettesíti a helyőrzőket. Beágyazott kulcsok ({{prefs.tunnel.domain}}) is működnek. Az ismeretlen kulcsok érintetlenek maradnak, így az elgépelések láthatók maradnak.

A framework-alap közvetlen szerkesztése
#

Ha saját magad üzemeltetsz és magát a framework-öt szeretnéd finomhangolni, közvetlenül szerkesztheted a config/agent-instructions.md, config/personality.md fájlokat, illetve a skills/ vagy a custom-tools/ könyvtárakat — a szerver nem akadályoz meg, ha fájlszerkesztőt használsz. De az agent nem ír ezekre a helyekre egy beszélgetésből. És a framework frissítései felülírják a szerkesztéseidet. Bármihez, amit meg akarsz tartani, használd inkább a felhasználói réteget.

A szerver bővítése
#

  • Egyéni eszközök — Kérd az agentet CLI eszközök telepítésére; automatikusan a data/user/custom-tools/ mappába kerülnek
  • Készségek hozzáadása — Kérd az agentet, hogy hozzon létre egy készséget; a fájl a data/user/skills/ mappába kerül
  • Viselkedés módosítása — Kérd az agentet, hogy alkalmazzon globális szabályt; hozzáfűzi a data/user/instructions.md fájlhoz
  • Jogosultságok konfigurálása — Futtasd a bun run permissions parancsot az agent által használható eszközök szabályozásához
  • Beépített eszközök hozzáadása — Implementálj új eszközfunkciókat a src/tools.ts fájlban mélyebb integrációkhoz (a szerver forkolását igényli)

Konfiguráció
#

Minden beállítás a .env fájlban tárolódik (a bun run setup hozza létre). Kulcsfontosságú opciók:

VáltozóAlapértelmezettLeírás
AUTH_TOKEN(kötelező)Megosztott titkos kulcs a PocketHook-kal
LLM_API_KEY(kötelező)LLM szolgáltató API kulcs
LLM_PROVIDERanthropicSzolgáltató neve
LLM_MODELclaude-sonnet-4-20250514Modell azonosító
LLM_REASONINGoffGondolkodási szint: off, minimal, low, medium, high, xhigh. A magasabb szintek rejtett gondolkodási tokeneket adnak hozzá (lassabb + drágább). Az ezt nem támogató modellek figyelmen kívül hagyják
PORT3000Szerver port
AGENT_NAMEPocketHook AssistantAgent megjelenítési neve
MAX_HISTORY50Üzenetek a rövid távú memóriában
MAX_RECALL5Szemantikus felidézés által körönként visszaadott emlékek (csak ha VECTOR_MEMORY=true)
SESSION_TTL_MINUTES60Munkamenet lejárata
VECTOR_MEMORYfalseSzemantikus memória engedélyezése (embedding szolgáltató szükséges)
EMBEDDING_PROVIDERollamaEmbedding szolgáltató: ollama, lm-studio vagy openai
EMBEDDING_MODELnomic-embed-textEmbedding modell neve
EMBEDDING_URL(auto)Embedding API URL
EMBEDDING_API_KEYAPI kulcs OpenAI embeddingekhez
LOG_LEVELinfoNaplózási szint: debug, info, warn, error
RATE_LIMIT_MAX30Maximum kérések száma ablakonként
DASHBOARDtrueWebes irányítópult engedélyezése (/dashboard útvonal)
INSTANCE_NAME(a projekt könyvtár alapneve, a pockethook- előtag eltávolításával)A rendszerszolgáltatás címkéjéhez, naplókönyvtárhoz és folyamategyezéshez használt utótag. Állítsd be explicit módon, ha több verziót futtatsz ugyanazon a gépen

A teljes konfigurációs referenciát a GitHub repozitóriumban találod.

Futtatás szolgáltatásként
#

Telepítsd állandó szolgáltatásként, amely automatikusan indul:

bun run service install
PlatformBackendSzolgáltatás helye
macOSlaunchd~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist
Linuxsystemd (user)~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service
WindowsNSSMPocketHook-${PascalCase(INSTANCE_NAME)} a Windows szolgáltatáskezelőben

Az INSTANCE_NAME alapértelmezés szerint a projekt könyvtár alapneve, a pockethook- előtag eltávolításával (pl. egy pockethook-agent-server/ könyvtárban lévő példányból agent-server lesz). Állítsd be explicit módon, hogy több példányt is futtathass ugyanazon a gépen ütközések nélkül — minden példány saját data/ könyvtárral és naplókkal rendelkezik.

Kezelés: bun run service status, restart, stop vagy uninstall.

Biztonság
#

  • HTTPS kötelező — A PocketHook HTTPS-t követel meg minden URL-hez
  • Bearer token hitelesítés — Megosztott titkos kulcs az alkalmazás és a szerver között
  • Kéréskorlátozás — Tokenkénti korlátok megakadályozzák a visszaélést
  • Elszigetelt eszközök — Shell parancsok és fájlhozzáférés jogosultságokkal korlátozva
  • Blokkolt minták — Veszélyes parancsok (sudo, rm -rf /) alapértelmezetten blokkolva
  • Munkakönyvtár határ — Az agent nem léphet ki a kijelölt könyvtárából
  • Védett érzékeny fájlok.env, .git, *.key, *.pem blokkolva az agent hozzáférése elől
  • Automatikus verziókezelés — Minden workspace változás git-tel nyomon követve az egyszerű visszaállítás érdekében