Co je PocketHook Agent Server?#
Agentní server promění PocketHook v plnohodnotného AI asistenta. Místo toho, abyste sami psali logiku odpovědí, připojíte LLM (Claude, GPT, Gemini atd.), který zpracovává zprávy, volá nástroje a vrací strukturované odpovědi PocketHook — včetně spouštěčů Zkratek.
Server běží na vašem vlastním počítači. Vaše data zůstávají u vás.
Toto je výchozí bod. Server se dodává se základní sadou nástrojů a je navržen tak, abyste ho rozšiřovali. Přidejte vlastní integrace — e-mail, kalendáře, dokumenty, API — a přizpůsobte si ho.
Funkce#
- Více poskytovatelů LLM — Anthropic, OpenAI, GitHub Copilot, Google, Mistral, Groq, xAI, OpenRouter, Ollama (lokální), LM Studio (lokální)
- Rychlý model — Spusťte odlehčený sekundární model pro interní pomocné úlohy (klasifikace paměti, extrakce entit) souběžně s vaším hlavním modelem pro chat — plná kontrola nad náklady a latencí
- Rozšíření Safari — Spárujte notarizované rozšíření Safari pro macOS, aby agent mohl otevírat panely, prohlížet stránky, klikat, vyplňovat formuláře a pořizovat snímky obrazovky ve vaší skutečné relaci prohlížeče, na úrovni oprávnění, kterou zvolíte
- OAuth autentizace — GitHub Copilot a OpenAI Codex přes device code / browser flow
- Agentní nástroje — Příkazy shellu, čtení/zápis souborů, výpis adresářů, webové vyhledávání, web scraping, správa vývojových serverů
- Rozdělení framework / uživatel — Soubory frameworku (
skills/,custom-tools/,config/) zůstávají pouze pro čtení. Vaše úpravy žijí vdata/user/(dovednosti, vlastní nástroje, instrukce, typované preference). Aktualizace frameworku se instalují čistě, aniž by přepisovaly vaši práci - Typované uživatelské preference — Ukládejte hodnoty jako preferovanou mapovou aplikaci nebo doménu tunelu do
data/user/prefs.json. Odkazujte na ně v dovednostech jako{{prefs.key}}a server je při načtení nahradí - Programovací úlohy jedním voláním — Meta-nástroj
run_code_jobvytvoří úlohu na pozadí typu prompt (spouštěnou vaším nakonfigurovaným LLM) a jedním krokem pošle uživateli potvrzení, čímž nahrazuje chybový vzor „respond + create-job" - Typované protokolové nástroje — Šest dedikovaných nástrojů
respond_*(respond_text,respond_image,respond_buttons,respond_shortcut,respond_html,respond_sequence), plus typované nástroje úloh (create_once_job,create_cron_job) a typované nástroje pracovního prostoru (create_project,list_projects,delete_project). Schémata odmítají špatně formátované URL, syntaxi tlačítek a kombinacetype/scheduledříve, než se dostanou na zařízení - Typované zapisovače pro přizpůsobení —
create_user_skillacreate_custom_toolsestavují markdown uživatelské vrstvy se správným frontmatterem, takže loader je vždy parsuje a agent tyto soubory nikdy nepíše ručně - Úlohy na pozadí — Jednorázové nebo opakované úlohy s cron výrazy nebo jednoduchými intervaly
- Dynamické dovednosti — Definujte zkratky a pravidla chování jako
.mdsoubory. Do promptu se načte pouze kompaktní index; plný obsah se načítá na vyžádání přes nástrojload_skill - Samosprávné dovednosti — Agent může vytvářet, upravovat a mazat definice dovedností (zápisy vždy míří do uživatelské vrstvy)
- Sémantická paměť — Vektorové vyhledávání s embeddingy (Ollama, LM Studio nebo OpenAI). Vzpomínky jsou automaticky klasifikovány LLM do dimenzí wing/room/hall/status
- Znalostní graf — Temporální úložiště trojic pro trvalé fakty s automatickou invalidací. Vícehodnotové vztahy koexistují; jednohodnotové fakty se automaticky nahrazují
- Metoda PARA s kaskádou ukončení projektu — Každá vzpomínka je označena statusem (Projekt, Oblast, Zdroj, Archiv). Když projekt skončí, jediné volání
complete_projectarchivuje jeho vektory, invaliduje všechny plánovací trojice spojené s jeho slugem a zaznamená dokončení — jedno volání místo tří - Hybridní vybavování — Kombinuje klíčové slovo vyhledávání FTS5 s vektorovým sémantickým vyhledáváním pomocí reciprocal rank fusion
- Dlouhodobá paměť — SQLite + fulltextové vyhledávání FTS5 jako záložní řešení, když je sémantická paměť vypnuta
- Správa vývojových serverů s kontraktem tunelu — Spouštění, zastavování a výpis vývojových serverů. Když je požadováno
tunnel: true, server to vynucuje před startem i po spawnu — nedostupný localhost server nikdy neběží potichu - Automatická sanitizace URL — Pokud agent nechá v odpovědi URL
localhost, nástrojerespond_*ji přepíšou na odpovídající URL tunelu, aby váš telefon vždy dostal dostupný odkaz - Vlastní nástroje — Agent může instalovat CLI nástroje a registrovat je jako nové schopnosti
- Verzování — Automatické git verzování pro soubory workspace; zálohy konfigurace pro dovednosti a oprávnění
- Webový dashboard — Živý přehled úloh na pozadí, přizpůsobitelný pro každého uživatele.
/dashboarda/api/jobsjsou záměrně neautentizované — omezte přístup na úrovni sítě (Tailscale ACL, firewall, reverse proxy s basic auth) nebo nastavteDASHBOARD=false, pokud je nepotřebujete - HTTPS tunelování — Vestavěná podpora pro Tailscale, ngrok a Cloudflare Tunnel
- Systémová služba — Instalace jako trvalá služba na macOS, Linux nebo Windows
- Omezování požadavků — Limity na token s konfigurovatelnými prahy
Požadavky#
- Runtime Bun
- API klíč nebo OAuth přihlašovací údaje pro vašeho poskytovatele LLM
- (Volitelně) Tailscale, ngrok nebo cloudflared pro HTTPS tunelování
Rychlý start#
git clone https://github.com/pockethook-app/pockethook-agent-server.git
cd pockethook-agent-server
bun install
# Interaktivní nastavení — volba poskytovatele, modelu, autentizačního tokenu, portu
bun run setup
# Spuštění serveru + HTTPS tunelu
bun run dev:tunnel
Průvodce nastavením vás provede výběrem poskytovatele LLM, konfigurací autentizace a nastavením oprávnění nástrojů — včetně volby, zda nainstalovat rozšíření Safari (volitelné, lze přeskočit, pouze macOS).
Kdykoli spusťte bun run help pro úplný seznam příkazů, nebo bun run config pro rychlý přehled aktuální konfigurace (citlivé údaje jsou skryté).
Po spuštění zkopírujte zobrazené URL do Nastavení PocketHook:
| Nastavení PocketHook | URL |
|---|---|
| Server URL | https://your-host |
| Health Check URL | https://your-host/health |
| Polling URL | https://your-host/jobs |
Jak to funguje#
- Odešlete zprávu v PocketHook
- Server ji přepošle vašemu zvolenému LLM s historií konverzace, vybavenými vzpomínkami a dostupnými nástroji
- LLM zprávu zpracuje — může spouštět příkazy shellu, číst/zapisovat soubory, prohledávat web, plánovat úlohy na pozadí, pamatovat si fakty nebo spouštět vývojové servery
- Odpověď je vrácena ve formátu PocketHook (
msg+shortcut+data+url) - PocketHook zobrazí zprávu a provede případné Zkratky na vašem zařízení
Podporovaní poskytovatelé LLM#
| Poskytovatel | Autentizace | Výchozí model |
|---|---|---|
| Anthropic | API klíč | claude-sonnet-4-20250514 |
| OpenAI | API klíč | gpt-4.1-mini |
| OpenAI Codex | OAuth | gpt-5.1-codex-mini |
| GitHub Copilot | OAuth | claude-sonnet-4 |
| Google (Gemini) | API klíč | gemini-2.5-flash |
| Mistral | API klíč | mistral-medium-latest |
| Groq | API klíč | llama-3.3-70b-versatile |
| xAI (Grok) | API klíč | grok-3-mini-fast |
| OpenRouter | API klíč | anthropic/claude-sonnet-4 |
| Ollama (lokální) | Žádný | llama3.2 |
| LM Studio (lokální) | Žádný | qwen3.5-4b-mlx |
Přepněte poskytovatele kdykoli pomocí bun run switch. Ollama a LM Studio běží zcela na vašem počítači — nepotřebujete API klíč, žádná data neopustí vaši síť.
Paměť#
Systém paměti má tři vrstvy, z nichž každá slouží jinému účelu.
Design sémantické paměti kombinuje myšlenky z MemPalace (architektura paměťového paláce, která organizuje vzpomínky do křídel, chodeb a pokojů) a metody PARA od Tiaga Forte (Projekty, Oblasti, Zdroje, Archiv) pro správu životního cyklu znalostí.
Konverzační paměť#
SQLite s fulltextovým vyhledáváním FTS5. Všechny zprávy jsou ukládány s časovými razítky a identifikátory relací.
- Krátkodobá — Posledních
MAX_HISTORYzpráv uchovávaných v paměti na relaci - Dlouhodobá — Všechny zprávy uložené v SQLite, prohledávatelné přes FTS5 párování klíčových slov
- Vybavování za tah — Když je sémantická paměť zapnuta,
MAX_RECALLurčuje, kolik relevantních vzpomínek se vkládá do promptu při každém tahu - Relace vyprší po
SESSION_TTL_MINUTES, ale dlouhodobá paměť přetrvává navždy
Tyto hodnoty laďte interaktivně příkazem bun run memory.
Sémantická paměť#
Vyžaduje VECTOR_MEMORY=true a poskytovatele embeddingů (Ollama, LM Studio nebo OpenAI).
Každá vzpomínka je vložena jako vektor a automaticky klasifikována LLM do čtyř dimenzí:
- Wing — Entita:
user,person:john,project:blog,place:london - Room — Typ:
facts,preferences,events,decisions,requests - Hall — Téma:
personal,tech,health,travel,food,work - Status — PARA klasifikace:
project,area,resource,archive
Když položíte otázku, extrakce entit zaměří vektorové vyhledávání na nejrelevantnější křídla. Výsledky jsou sloučeny s FTS5 výsledky klíčových slov pomocí reciprocal rank fusion — takže získáte to nejlepší z obou přístupů.
Znalostní graf#
Temporální úložiště trojic pro strukturované, trvalé fakty:
- Trojice:
(subjekt, predikát, objekt)s časovými razítkyvalid_from/valid_until - Jednohodnotové predikáty (
lives_in,partner) automaticky invalidují starou hodnotu při aktualizaci - Vícehodnotové predikáty (
child,friend,hobby) koexistují bez invalidace - Fakty ze znalostního grafu jsou vkládány společně s vybavenými vzpomínkami do každé konverzace
Když agentovi řeknete „Přestěhoval jsem se do Berlína", invaliduje starou trojici lives_in a vytvoří novou — automaticky.
PARA životní cyklus#
Každá vzpomínka je označena PARA statusem:
- Projekt — Aktivní, časově omezená práce
- Oblast — Probíhající odpovědnosti
- Zdroj — Referenční materiál (seznamy, doporučení, návody)
- Archiv — Dokončené nebo zrušené projekty
Když je projekt dokončen, agent použije sémantickou podobnost k archivaci pouze vzpomínek daného projektu, přičemž zachová referenční materiál pro budoucí použití.
Kaskáda ukončení projektu#
Řekněte „Ruším cestu do Barcelony" a jediné volání nástroje zařídí vše:
- Archivuje vektory projektu (události, rozhodnutí, požadavky spojené s Barcelonou).
- Invaliduje každou aktivní trojici znalostního grafu, jejíž predikát odpovídá slugu projektu (
scheduled_visit_barcelona,planning_visit_barcelona,confirmed_visit_barcelona). - Zaznamená dokončení jako novou trojici:
(user, "cancelled_visit_barcelona", "2026-04-15").
Porovnávání respektuje hranice slov — jiný projekt s názvem revisit_barcelona zůstane nedotčený. Agent již nemusí orchestrovat tři oddělená volání ve správném pořadí, takže to zvládnou i menší modely.
Pokud je VECTOR_MEMORY vypnuto nebo je poskytovatel embeddingů nedostupný, systém se přepne na FTS5 bez chyb.
Dovednosti#
Dovednosti jsou .md soubory v adresáři skills/, které definují iOS Zkratky, které agent může spouštět, a/nebo pravidla chování. Používají dynamické načítání: do systémového promptu se vkládá pouze kompaktní index (název, popis, seznam zkratek). Agent načítá plný obsah na vyžádání přes nástroj load_skill, čímž udržuje nízkou spotřebu tokenů při přidávání dalších dovedností.
Každý soubor dovednosti používá YAML frontmatter:
---
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
Pole frontmatteru#
| Pole | Povinné | Popis |
|---|---|---|
title | Ano | Čitelný název |
description | Ano | Jedna věta použitá v indexu dovedností zobrazeném agentovi |
shortcuts | Ano | Pole názvů zkratek definovaných v souboru. Pro dovednosti obsahující pouze pravidla chování použijte [] |
target | Ne | Kde se zkratky vykonávají: device (výchozí, odesláno do iOS) nebo mac (spouští se na serveru) |
sync_app | Ne | Aplikace, která se po vykonání na straně serveru krátce otevře na pozadí, aby spustila synchronizaci iCloud (např. Notes, Calendar, Reminders). Vynechte nebo použijte none pro přeskočení |
Dovednosti mohou být také pravidla chování bez zkratek (např. „jak naplánovat rodinný výlet"). Pro tyto použijte shortcuts: [].
Agent může vytvářet a spravovat dovednosti na vyžádání — požádejte ho o „vytvoř dovednost pro ovládání mých světel" a napíše .md soubor za vás. Nové a upravené dovednosti vždy míří do vaší uživatelské vrstvy (data/user/skills/), takže aktualizace frameworku je nikdy nepřepíší. Viz sekci Customizing your agent níže.
Spouštění zkratek na Mac serveru#
Když má dovednost target: mac, zkratky běží tiše na Mac serveru přes CLI shortcuts run, místo aby byly odesílány na zařízení iOS. To je ideální pro akce, které vytvářejí obsah synchronizovaný s iCloud — poznámky, připomenutí, události kalendáře — protože výsledek se automaticky synchronizuje na všechna vaše zařízení, aniž by aplikace PocketHook musela cokoli dělat.
Jak to funguje:
- Agent rozhodne, že se má zkratka spustit (např. „vytvoř poznámku s dnešními poznámkami ze schůzky")
- Server zavolá
shortcuts run "názevZkratky"s daty předanými jako JSON na stdin, ve stejném obalovém formátu, jaký používá PocketHook iOS - Pokud je
sync_appnastaveno, server na chvíli otevře tuto aplikaci na pozadí (open -gj -a Notes), aby vynutil synchronizaci iCloud, a po 5 sekundách ji zavře - Uživatel obdrží potvrzovací zprávu v chatu; samotná zkratka není odeslána na zařízení
Požadavky:
- Server musí běžet na macOS —
shortcuts runje pouze pro macOS. Na jiných platformách server zaloguje varování a vrátí se k vykonání na zařízení - Zkratka musí být nainstalovaná v Shortcuts.app na Mac serveru
- Zkratka by měla očekávat Dictionary jako vstup (PocketHook zabalí data do
{ context, timestamp, app, data })
Kdy použít target: mac:
- Akce synchronizované s iCloud (Notes, Reminders, Calendar) — výsledek se stejně dostane na každé zařízení
- Dlouhotrvající zpracování, které chcete držet mimo iOS zařízení
- Jakákoli zkratka, která nepotřebuje interagovat s uživatelským rozhraním iPhonu
Kdy ponechat target: device (výchozí):
- Zkratky, které potřebují funkce dostupné pouze na iPhonu (kamera, přesná poloha, lokální automatizace aplikací)
- Zkratky, které žádají uživatele o interaktivní vstup
- Zkratky používající App Intents z aplikací dostupných pouze na iOS
Úlohy na pozadí#
Požádejte agenta o naplánování úloh a zbytek zvládne sám:
- „Kontroluj počasí každé ráno v 8 a vytvoř poznámku"
- „Spouštěj tento skript každou hodinu"
- „Připomeň mi zkontrolovat e-mail za 30 minut"
Úlohy podporují cron výrazy (0 8 * * *) a jednoduché intervaly (30m, 1h, 2d). Výsledky jsou doručeny do PocketHook, když dotazuje koncový bod /jobs.
Dva typy provádění:
- Shell — Spustí bash příkaz, zachytí výstup. Může spustit Zkratku po dokončení
- Prompt — Zpracován AI agentem s plným přístupem k nástrojům, uloží kompletní odpověď PocketHook
Vývojové servery#
Když agent vytvoří webový projekt v workspace (Hugo, Astro, Next.js, Flask, Go atd.), proaktivně nabídne jeho servírování:
- Náhled — Spustí lokální vývojový server na automaticky přiděleném portu pro rychlé zobrazení
- Veřejný — Spustí server a vystaví ho přes HTTPS tunel, aby byl přístupný odkudkoli
Agent spravuje životní cyklus: spouštění, zastavování a výpis běžících serverů. Všechny servery se uklidí při zastavení hlavního serveru.
Kontrakt tunelu#
Když agent spouští server s požadavkem na expozici přes tunel, runtime to vynucuje: pokud není nainstalovaný žádný tunelovací nástroj (Tailscale, ngrok, cloudflared), server odmítne start. Pokud nastavení tunelu selže po spawnu, osiřelý proces je zastaven a agent dostane explicitní informaci — tak, aby se mohl vrátit do režimu náhledu nebo vás požádat o instalaci tunelu. Vrácené URL je vždy URL tunelu, když je tunelování zapnuto, s poznámkou, že lokální URL je dostupné pouze hostiteli.
Jako pojistka každý nástroj respond_* zpětně zpracovává svou zprávu: jakékoli URL localhost nebo 127.0.0.1, které se do odpovědi vkrade, je automaticky přepsáno na odpovídající URL tunelu, když spravovaný server nějaké má. Když přepsat nejde, dostanete varování v logu namísto rozbitého odkazu na telefonu.
Dashboard#
Vestavěný webový dashboard na /dashboard zobrazuje živý přehled úloh na pozadí.
Záměrně neautentizovaný.
/dashboardi/api/jobsjsou otevřenéGETendpointy — kdokoli, kdo se dostane na hostitele, může vypsat úlohy. Omezte přístup na úrovni sítě (Tailscale ACL, firewall, reverse proxy s basic auth) nebo nastavteDASHBOARD=false, pokud je nepotřebujete. iOS aplikace PocketHook tyto endpointy nepoužívá.
Je plně přizpůsobitelný:
- Rychlá úprava — Umístěte soubor
dashboard.htmldoworkspace/dashboard/pro jednoduché úpravy - Plný projekt — Vytvořte projekt s frameworkem (Svelte, React, Vue atd.) ve
workspace/dashboard/s výstupem sestavení dodist/
Požádejte agenta o přizpůsobení vašeho dashboardu a zbytek zvládne sám — každý uživatel dostane unikátní, personalizovaný dashboard.
Vlastní nástroje#
Agent může instalovat CLI nástroje a registrovat je jako nové schopnosti — rozšiřuje se sám bez úpravy kódu serveru.
Například řekněte „nainstaluj Playwright a použij ho k pořizování snímků obrazovky". Agent:
- Nainstaluje závislost
- Vytvoří definici nástroje (jednoduchý
.mdsoubor) - Použije nový nástroj v budoucích konverzacích
Vlastní nástroje se načítají za běhu — restart není potřeba. Smažte .md soubor pro odebrání nástroje.
Verzování#
Všechna uživatelská data jsou automaticky verzována:
- Soubory workspace — Sledovány lokálním git repozitářem uvnitř
workspace/. Každý zápis vytvoří auto-commit. Požádejte agenta o „vrať zpět poslední změnu" nebo použijtegit revert HEADručně - Konfigurační soubory —
config/agent-instructions.md,config/personality.md,skills/apermissions.jsonjsou zálohovány před každou úpravou. Až 20 verzí na soubor
Git je volitelný — pokud není nainstalován, změny workspace nejsou verzovány. Zálohy konfigurace fungují vždy.
Customizing your agent#
Agentní server se dodává s minimální základnou frameworku a očekává, že si na ni navrstvíte vlastní úpravy. Runtime udržuje obě vrstvy oddělené, aby aktualizace frameworku nikdy nepřepsaly vaši práci.
Framework vs uživatel#
pockethook-agent-server/
├── skills/ # dovednosti dodávané frameworkem (pouze pro čtení)
├── custom-tools/ # rezervováno pro nástroje dodávané frameworkem (pouze pro čtení)
├── config/
│ ├── agent-instructions.md # instrukce agenta z frameworku (pouze pro čtení)
│ └── personality.md # osobnost z frameworku (pouze pro čtení)
└── data/user/ # VAŠE úpravy žijí zde (ignorováno gitem)
├── skills/ # vaše vlastní dovednosti (přepíší základ podle názvu souboru)
├── custom-tools/ # vaše nainstalované vlastní nástroje
├── instructions.md # vaše doplňky k instrukcím agenta
└── prefs.json # typované hodnoty referencované jako {{prefs.key}}
Uživatelské úpravy se zapisují přes dedikované typované nástroje (create_user_skill, create_custom_tool), takže výsledné soubory vždy odpovídají formátu loaderu. Nástroj write také odmítá jakoukoli cestu pod skills/, custom-tools/ nebo config/ a přesměrovává agenta do data/user/* — takže i přímé úpravy souborů končí v uživatelské vrstvě.
Poznámka k základnímu adresáři
custom-tools/. Dnes obsahuje pouze šablonu (_example.md), kterou loader ignoruje — každý nástroj, který agent nainstaluje, míří dodata/user/custom-tools/. Adresář je rezervován, aby budoucí verze frameworku mohly dodávat volitelné vestavěné nástroje bez přepsání vašich instalací. Až k tomu dojde, vaše soubory v uživatelské vrstvě stále vyhrávají při kolizi názvů, takže není co migrovat.
Čtyři způsoby přizpůsobení#
| Co chcete změnit | Kam to patří | Příklad |
|---|---|---|
| Zkratka nebo dovednost s pravidlem chování | data/user/skills/<nazev>.md | „Vytvoř dovednost pro zaznamenávání mých tréninků" |
| CLI nástroj zabalený jako schopnost agenta | data/user/custom-tools/<nazev>.md | „Nainstaluj ffmpeg a dovol mi ho používat pro konverze" |
| Globální pravidlo („vždy odpovídej česky", „nikdy nepoužívej tabulky") | data/user/instructions.md | „Od teď vždy shrnuj články ve 3 odrážkách" |
| Typovaná výchozí hodnota referencovaná dovednostmi | data/user/prefs.json | „Moje výchozí výchozí místo trasy je Madrid" → {"routeOrigin": "Madrid"} |
Tyto soubory nikdy nemusíte psát ručně. Stačí říct agentovi, co chcete, a on sám vybere správnou vrstvu.
Typované preference s {{prefs.*}}#
Dejme tomu, že píšete dovednost plánovače trasy, která potřebuje znát váš výchozí bod. Místo abyste do dovednosti natvrdo napsali „Madrid", odkažte na preferenci:
- **Výchozí bod**: {{prefs.routeOrigin}}, pokud uživatel neurčí jiný počátek.
A uložte hodnotu do data/user/prefs.json:
{
"routeOrigin": "Madrid, Španělsko",
"preferredMapsApp": "apple",
"tunnel": { "domain": "my-host.ts.net" }
}
Server nahrazuje placeholdery při načtení dovednosti. Vnořené klíče ({{prefs.tunnel.domain}}) fungují také. Neznámé klíče zůstanou nedotčené, aby překlepy zůstaly viditelné.
Úprava základny frameworku přímo#
Pokud si server hostujete sami a chcete upravit samotný framework, můžete editovat config/agent-instructions.md, config/personality.md, skills/ nebo custom-tools/ přímo — server vás nezastaví, když použijete editor souborů. Ale agent do těchto cest z konverzace nezapíše. A aktualizace frameworku vaše úpravy přepíšou. Pro cokoli, co chcete zachovat, preferujte uživatelskou vrstvu.
Rozšíření serveru#
- Vlastní nástroje — Požádejte agenta o instalaci CLI nástrojů; automaticky míří do
data/user/custom-tools/ - Přidejte dovednosti — Požádejte agenta o vytvoření dovednosti; soubor míří do
data/user/skills/ - Změňte chování — Požádejte agenta o aplikaci globálního pravidla; připojí ho do
data/user/instructions.md - Konfigurujte oprávnění — Spusťte
bun run permissionspro kontrolu, které nástroje agent může používat - Přidejte vestavěné nástroje — Implementujte nové funkce nástrojů v
src/tools.tspro hlubší integrace (vyžaduje fork serveru)
Konfigurace#
Všechna nastavení jsou uložena v .env (vytvořeno pomocí bun run setup). Klíčové možnosti:
| Proměnná | Výchozí | Popis |
|---|---|---|
AUTH_TOKEN | (povinný) | Sdílený tajný klíč s PocketHook |
LLM_API_KEY | (povinný) | API klíč poskytovatele LLM |
LLM_PROVIDER | anthropic | Název poskytovatele |
LLM_MODEL | claude-sonnet-4-20250514 | ID modelu |
LLM_REASONING | off | Úroveň uvažování: off, minimal, low, medium, high, xhigh. Vyšší úrovně přidávají skryté tokeny myšlení (pomalejší + dražší). Ignorováno modely, které to nepodporují |
PORT | 3000 | Port serveru |
AGENT_NAME | PocketHook Assistant | Zobrazovaný název agenta |
MAX_HISTORY | 50 | Zprávy v krátkodobé paměti |
MAX_RECALL | 5 | Vzpomínky vrácené za tah sémantickým vybavováním (pouze když VECTOR_MEMORY=true) |
SESSION_TTL_MINUTES | 60 | Expirace relace |
VECTOR_MEMORY | false | Povolit sémantickou paměť (vyžaduje poskytovatele embeddingů) |
EMBEDDING_PROVIDER | ollama | Poskytovatel embeddingů: ollama, lm-studio nebo openai |
EMBEDDING_MODEL | nomic-embed-text | Název modelu embeddingů |
EMBEDDING_URL | (auto) | URL API embeddingů |
EMBEDDING_API_KEY | — | API klíč pro OpenAI embeddingy |
LOG_LEVEL | info | Úroveň logování: debug, info, warn, error |
RATE_LIMIT_MAX | 30 | Maximální počet požadavků za okno |
DASHBOARD | true | Povolit webový dashboard (cesta /dashboard) |
INSTANCE_NAME | (název adresáře projektu, s odstraněným prefixem pockethook-) | Sufix používaný pro označení systémové služby, adresář logů a párování procesu. Nastavte explicitně, když na stejném počítači běží více kopií |
LLM_QUICK_PROVIDER / LLM_QUICK_MODEL | stejné jako hlavní | Poskytovatel/model pro rychlý model (interní pomocné úlohy) |
SAFARI_PERMISSION_LEVEL | confirm | Politika klikání rozšíření Safari: confirm, autonomous, nebo readonly |
SAFARI_CAPTURES_BASE_URL | pouze lokální | Veřejná základní URL pro poskytování zachycených stránek Safari aplikaci |
Kompletní referenci konfigurace najdete v GitHub repozitáři.
Spuštění jako služba#
Nainstalujte jako trvalou službu, která se spouští automaticky:
bun run service install
| Platforma | Backend | Umístění služby |
|---|---|---|
| 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)} ve Správci služeb Windows |
INSTANCE_NAME se ve výchozím nastavení odvozuje z názvu adresáře projektu s odstraněným prefixem pockethook- (např. kopie v pockethook-agent-server/ se stane agent-server). Nastavte ho explicitně pro spuštění více kopií na stejném počítači bez kolizí — každá instance si zachovává vlastní data/ a logy.
Spravujte pomocí bun run service status, restart, stop nebo uninstall.
Bezpečnost#
- Vyžadováno HTTPS — PocketHook vyžaduje HTTPS pro všechny URL
- Bearer token autentizace — Sdílený tajný klíč mezi aplikací a serverem
- Omezování požadavků — Limity na token brání zneužití
- Izolované nástroje — Příkazy shellu a přístup k souborům omezeny oprávněními
- Blokované vzory — Nebezpečné příkazy (
sudo,rm -rf /) blokované ve výchozím nastavení - Hranice pracovního adresáře — Agent nemůže opustit svůj určený adresář
- Chráněné citlivé soubory —
.env,.git,*.key,*.pemblokovány před přístupem agenta - Automatické verzování — Všechny změny workspace jsou sledovány gitem pro snadný návrat