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 adata/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.jsonfá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_jobmeta-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 atype/schedulekombinációkat, mielőtt elérnék az eszközt - Típusos írók a testreszabáshoz — A
create_user_skillés acreate_custom_toola 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
.mdfájlokként. Csak egy kompakt index töltődik be a promptba; a teljes tartalom igény szerint kerül betöltésre aload_skilleszkö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_projecthí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: trueké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
localhostURL-t hagy a válaszában, arespond_*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/jobsszá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ítsdDASHBOARD=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ás | URL |
|---|---|
| Server URL | https://your-host |
| Health Check URL | https://your-host/health |
| Polling URL | https://your-host/jobs |
Hogyan működik#
- Üzenetet küldesz a PocketHook-ban
- 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
- 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
- A válasz PocketHook formátumban érkezik vissza (
msg+shortcut+data+url) - 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és | Alapértelmezett modell |
|---|---|---|
| Anthropic | API kulcs | claude-sonnet-4-20250514 |
| OpenAI | API kulcs | gpt-4.1-mini |
| OpenAI Codex | OAuth | gpt-5.1-codex-mini |
| GitHub Copilot | OAuth | claude-sonnet-4 |
| Google (Gemini) | API kulcs | gemini-2.5-flash |
| Mistral | API kulcs | mistral-medium-latest |
| Groq | API kulcs | llama-3.3-70b-versatile |
| xAI (Grok) | API kulcs | grok-3-mini-fast |
| OpenRouter | API kulcs | anthropic/claude-sonnet-4 |
| Ollama (helyi) | Nincs | llama3.2 |
| LM Studio (helyi) | Nincs | qwen3.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_RECALLszabályozza, hány releváns emlék kerül a promptba minden körben - A munkamenetek lejárnak a
SESSION_TTL_MINUTESutá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_untilidő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:
- Archiválja a projekt vektorait (a Barcelonához kötődő eseményeket, döntéseket, kéréseket).
- É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). - 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 |
|---|---|---|
title | Igen | Olvasható név |
description | Igen | Egy mondat, amely az agentnek megjelenített készség-indexben szerepel |
shortcuts | Igen | A fájlban definiált shortcut nevek tömbje. Csak viselkedési szabályokat tartalmazó készségeknél használj []-t |
target | Nem | Hol futnak a shortcuts: device (alapértelmezett, iOS-re küldve) vagy mac (a szerveren fut) |
sync_app | Nem | Az 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:
- Az agent úgy dönt, hogy egy shortcut-ot futtatni kell (pl. “hozz létre egy jegyzetet a mai megbeszélés jegyzeteivel”)
- 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 - Ha a
sync_appbe 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 - 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 runcsak 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/jobsnyitottGETvé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ítsdDASHBOARD=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.htmlfájlt aworkspace/dashboard/-ban egyszerű testreszabásokhoz - Teljes projekt — Hozz létre keretrendszer projektet (Svelte, React, Vue stb.) a
workspace/dashboard/-ban, build kimenettel adist/-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:
- Telepíti a függőséget
- Létrehoz egy eszköz-definíciót (egy egyszerű
.mdfájl) - 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 agit revert HEADparancsot kézzel - Konfigurációs fájlok — A
config/agent-instructions.md,config/personality.md,skills/éspermissions.jsonmenté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, adata/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él | Hová kerül | Példa |
|---|---|---|
| Egy shortcut vagy viselkedési készség | data/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öz | data/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ék | data/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.mdfájlhoz - Jogosultságok konfigurálása — Futtasd a
bun run permissionsparancsot 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.tsfá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értelmezett | Leírás |
|---|---|---|
AUTH_TOKEN | (kötelező) | Megosztott titkos kulcs a PocketHook-kal |
LLM_API_KEY | (kötelező) | LLM szolgáltató API kulcs |
LLM_PROVIDER | anthropic | Szolgáltató neve |
LLM_MODEL | claude-sonnet-4-20250514 | Modell azonosító |
LLM_REASONING | off | Gondolkodá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 |
PORT | 3000 | Szerver port |
AGENT_NAME | PocketHook Assistant | Agent megjelenítési neve |
MAX_HISTORY | 50 | Üzenetek a rövid távú memóriában |
MAX_RECALL | 5 | Szemantikus felidézés által körönként visszaadott emlékek (csak ha VECTOR_MEMORY=true) |
SESSION_TTL_MINUTES | 60 | Munkamenet lejárata |
VECTOR_MEMORY | false | Szemantikus memória engedélyezése (embedding szolgáltató szükséges) |
EMBEDDING_PROVIDER | ollama | Embedding szolgáltató: ollama, lm-studio vagy openai |
EMBEDDING_MODEL | nomic-embed-text | Embedding modell neve |
EMBEDDING_URL | (auto) | Embedding API URL |
EMBEDDING_API_KEY | — | API kulcs OpenAI embeddingekhez |
LOG_LEVEL | info | Naplózási szint: debug, info, warn, error |
RATE_LIMIT_MAX | 30 | Maximum kérések száma ablakonként |
DASHBOARD | true | Webes 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
| Platform | Backend | Szolgáltatás helye |
|---|---|---|
| macOS | launchd | ~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist |
| Linux | systemd (user) | ~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service |
| Windows | NSSM | PocketHook-${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,*.pemblokkolva 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