דילוג לתוכן
  1. תיעוד/

שרת סוכן

תוכן עניינים

מה זה שרת הסוכן PocketHook?
#

שרת הסוכן הופך את PocketHook לעוזר AI מלא. במקום לכתוב לוגיקת תגובה בעצמך, אתה מחבר מודל שפה (Claude, GPT, Gemini וכו’) שמעבד הודעות, קורא לכלים ומחזיר תגובות PocketHook מובנות — כולל הפעלת קיצורים.

השרת רץ על המחשב שלך. הנתונים שלך נשארים אצלך.

זו נקודת התחלה. השרת מגיע עם סט כלים בסיסי ומתוכנן להרחבה על ידך. הוסף אינטגרציות משלך — אימייל, לוחות שנה, מסמכים, ממשקי API — והפוך אותו לשלך.

תכונות
#

  • מודלי שפה מרובי ספקים — Anthropic, OpenAI, GitHub Copilot, Google, Mistral, Groq, xAI, OpenRouter, Ollama (מקומי), LM Studio (מקומי)
  • אימות OAuth — GitHub Copilot ו-OpenAI Codex דרך קוד מכשיר / זרימת דפדפן
  • כלי סוכן — פקודות מעטפת, קריאת/כתיבת קבצים, רשימת תיקיות, חיפוש אינטרנט, גריפת אינטרנט, ניהול שרתי פיתוח
  • הפרדה בין תשתית למשתמש — קבצי התשתית (skills/, custom-tools/, config/) נשארים לקריאה בלבד. ההתאמות שלך חיות תחת data/user/ (מיומנויות, כלים מותאמים, הוראות, העדפות מוטפסות). עדכוני תשתית מגיעים בצורה נקייה מבלי לדרוס את העבודה שלך
  • העדפות משתמש מוטפסות — שמור ערכים כמו אפליקציית מפות מועדפת או דומיין מנהרה ב-data/user/prefs.json. הפנה אליהם במיומנויות כ-{{prefs.key}} והשרת מחליף אותם בעת הטעינה
  • משימות תכנות בקריאה אחת — הכלי-העל run_code_job יוצר משימת רקע מסוג prompt (מורצת על ידי ה-LLM שהגדרת) ושולח למשתמש את אישור הקבלה בצעד אחד, ומחליף את תבנית “respond + create-job” הנוטה לשגיאות
  • כלי פרוטוקול מוטפסים — שישה כלי respond_* ייעודיים (respond_text, respond_image, respond_buttons, respond_shortcut, respond_html, respond_sequence), בנוסף לכלי משימות מוטפסים (create_once_job, create_cron_job) וכלי סביבת עבודה מוטפסים (create_project, list_projects, delete_project). הסכמות דוחות כתובות URL פגומות, תחביר כפתורים שגוי ושילובי type/schedule לפני שהם מגיעים למכשיר
  • כותבים מוטפסים להתאמה אישיתcreate_user_skill ו-create_custom_tool בונים את ה-markdown של שכבת המשתמש עם frontmatter תקין, כך שהמטען תמיד מצליח לפענח אותם והסוכן לעולם לא כותב את הקבצים האלה ביד
  • משימות רקע — משימות חד-פעמיות או חוזרות עם ביטויי cron או מרווחים פשוטים
  • מיומנויות דינמיות — הגדר קיצורים וכללי התנהגות כקובצי .md. רק אינדקס קומפקטי נטען לפרומפט; התוכן המלא נמשך לפי דרישה דרך כלי load_skill
  • מיומנויות בניהול עצמי — הסוכן יכול ליצור, לערוך ולמחוק הגדרות מיומנויות (כתיבות נוחתות תמיד בשכבת המשתמש)
  • זיכרון סמנטי — חיפוש מבוסס וקטורים עם הטמעות (Ollama, LM Studio או OpenAI). זיכרונות מסווגים אוטומטית לממדים של אגף/חדר/אולם/סטטוס על ידי מודל השפה
  • גרף ידע — מאגר שלשות טמפורלי לעובדות עמידות עם ביטול אוטומטי. קשרים רב-ערכיים מתקיימים יחד; עובדות חד-ערכיות מוחלפות אוטומטית
  • שיטת PARA עם מפל סיום פרויקט — כל זיכרון מתויג בסטטוס (פרויקט, תחום, משאב, ארכיון). כשפרויקט מסתיים, קריאה בודדת של complete_project מארכבת את הוקטורים שלו, מבטלת כל שלשת תכנון הקשורה למזהה הפרויקט, ורושמת את הסיום — קריאה אחת במקום שלוש
  • אחזור היברידי — משלב חיפוש מילות מפתח FTS5 עם חיפוש סמנטי וקטורי באמצעות מיזוג דירוג הדדי
  • זיכרון לטווח ארוך — SQLite + חיפוש טקסט מלא FTS5 כגיבוי כאשר הזיכרון הסמנטי מושבת
  • ניהול שרתי פיתוח עם חוזה מנהרה — הפעלה, עצירה ורשימת שרתי פיתוח. כאשר מתבקש tunnel: true, השרת אוכף זאת לפני ההרצה ואחרי היציאה — שרת localhost בלתי נגיש לעולם לא נשאר רץ בשקט
  • חיטוי URL אוטומטי — אם הסוכן משאיר כתובת localhost בתגובה, כלי ה-respond_* כותבים אותה מחדש לכתובת המנהרה המתאימה כך שהטלפון שלך תמיד מקבל קישור נגיש
  • כלים מותאמים אישית — הסוכן יכול להתקין כלי CLI ולרשום אותם כיכולות חדשות
  • ניהול גרסאות — ניהול גרסאות git אוטומטי לקבצי מרחב העבודה; גיבויי הגדרות למיומנויות והרשאות
  • דשבורד אינטרנטי — סקירה חיה של משימות רקע, הניתנת להתאמה אישית לכל משתמש. /dashboard ו-/api/jobs אינם מאומתים בכוונה — הגבל גישה ברמת הרשת (Tailscale ACL, חומת אש, פרוקסי הפוך עם basic auth) או הגדר DASHBOARD=false אם אינך זקוק לזה
  • מנהור HTTPS — תמיכה מובנית ב-Tailscale, ngrok ו-Cloudflare Tunnel
  • שירות מערכת — התקנה כשירות מתמשך ב-macOS, Linux או Windows
  • הגבלת קצב — מגבלות בקשות לכל טוקן עם ספים ניתנים להגדרה

דרישות
#

  • סביבת ריצת Bun
  • מפתח API או אישורי OAuth לספק מודל השפה שלך
  • (אופציונלי) Tailscale, ngrok, או cloudflared למנהור HTTPS

התחלה מהירה
#

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

# הגדרה אינטראקטיבית — בחר ספק, מודל, טוקן אימות, פורט
bun run setup

# הפעל שרת + מנהרת HTTPS
bun run dev:tunnel

אשף ההגדרה ינחה אותך בבחירת ספק מודל שפה, הגדרת אימות והקמת הרשאות כלים.

לאחר ההפעלה, העתק את כתובות ה-URL המוצגות להגדרות PocketHook:

הגדרת PocketHookכתובת URL
כתובת שרתhttps://your-host
כתובת בדיקת תקינותhttps://your-host/health
כתובת סקירהhttps://your-host/jobs

איך זה עובד
#

  1. אתה שולח הודעה ב-PocketHook
  2. השרת מעביר אותה למודל השפה שבחרת עם היסטוריית שיחה, זיכרונות שנמשכו וכלים זמינים
  3. מודל השפה מעבד את ההודעה — הוא יכול להריץ פקודות מעטפת, לקרוא/לכתוב קבצים, לחפש באינטרנט, לתזמן משימות רקע, לזכור עובדות או להפעיל שרתי פיתוח
  4. התגובה מוחזרת בפורמט PocketHook (msg + shortcut + data + url)
  5. PocketHook מציג את ההודעה ומפעיל קיצורים על המכשיר שלך

ספקי מודלי שפה נתמכים
#

ספקאימותמודל ברירת מחדל
Anthropicמפתח APIclaude-sonnet-4-20250514
OpenAIמפתח APIgpt-4.1-mini
OpenAI CodexOAuthgpt-5.1-codex-mini
GitHub CopilotOAuthclaude-sonnet-4
Google (Gemini)מפתח APIgemini-2.5-flash
Mistralמפתח APImistral-medium-latest
Groqמפתח APIllama-3.3-70b-versatile
xAI (Grok)מפתח APIgrok-3-mini-fast
OpenRouterמפתח APIanthropic/claude-sonnet-4
Ollama (מקומי)ללאllama3.2
LM Studio (מקומי)ללאqwen3.5-4b-mlx

החלף ספקים בכל עת עם bun run switch. Ollama ו-LM Studio רצים לחלוטין על המחשב שלך — אין צורך במפתח API, שום נתון לא עוזב את הרשת שלך.

זיכרון
#

מערכת הזיכרון כוללת שלוש שכבות, כל אחת משרתת מטרה שונה.

עיצוב הזיכרון הסמנטי משלב רעיונות מ-MemPalace (ארכיטקטורת ארמון זיכרון המארגנת זיכרונות לאגפים, אולמות וחדרים) ושיטת PARA של Tiago Forte (פרויקטים, תחומים, משאבים, ארכיון) לניהול מחזור חיי ידע.

זיכרון שיחה
#

SQLite עם חיפוש טקסט מלא FTS5. כל ההודעות נשמרות עם חותמות זמן ומזהי הפעלה.

  • לטווח קצרMAX_HISTORY ההודעות האחרונות נשמרות בזיכרון לכל הפעלה
  • לטווח ארוך — כל ההודעות נשמרות ב-SQLite, ניתנות לחיפוש דרך התאמת מילות מפתח FTS5
  • שליפה לכל תור — כשהזיכרון הסמנטי פעיל, MAX_RECALL שולט בכמה זיכרונות רלוונטיים מוזרקים לפרומפט בכל תור
  • הפעלות פגות לאחר SESSION_TTL_MINUTES, אבל הזיכרון לטווח ארוך נשמר לנצח

כוון את הערכים האלה באופן אינטראקטיבי עם bun run memory.

זיכרון סמנטי
#

דורש VECTOR_MEMORY=true וספק הטמעות (Ollama, LM Studio או OpenAI).

כל זיכרון מוטמע כוקטור ומסווג אוטומטית על ידי מודל השפה לארבעה ממדים:

  • אגף — הישות: user, person:john, project:blog, place:london
  • חדר — הסוג: facts, preferences, events, decisions, requests
  • אולם — הנושא: personal, tech, health, travel, food, work
  • סטטוס — סיווג PARA: project, area, resource, archive

כשאתה שואל שאלה, חילוץ ישויות מתמקד בחיפוש הוקטורי באגפים הרלוונטיים ביותר. התוצאות ממוזגות עם תוצאות מילות מפתח FTS5 באמצעות מיזוג דירוג הדדי — כך שאתה מקבל את המיטב משני סוגי ההתאמה: מילות מפתח וסמנטי.

גרף ידע
#

מאגר שלשות טמפורלי לעובדות מובנות ועמידות:

  • שלשות: (נושא, פרדיקט, מושא) עם חותמות זמן valid_from / valid_until
  • פרדיקטים חד-ערכיים (lives_in, partner) מבטלים אוטומטית את הערך הישן בעדכון
  • פרדיקטים רב-ערכיים (child, friend, hobby) מתקיימים יחד ללא ביטול
  • עובדות גרף הידע מוזרקות יחד עם זיכרונות שנמשכו בכל שיחה

כשאתה אומר לסוכן “עברתי לברלין”, הוא מבטל את שלשת lives_in הישנה ויוצר חדשה — אוטומטית.

מחזור חיי PARA
#

כל זיכרון מתויג בסטטוס PARA:

  • פרויקט — עבודה פעילה ומוגבלת בזמן
  • תחום — אחריויות מתמשכות
  • משאב — חומר עיון (רשימות, המלצות, מדריכים)
  • ארכיון — פרויקטים שהושלמו או בוטלו

כשפרויקט מסתיים, הסוכן משתמש בדמיון סמנטי כדי לארכב רק את הזיכרונות של אותו פרויקט תוך שמירה על חומר עיון לשימוש עתידי.

מפל סיום פרויקט
#

אמור “אני מבטל את הטיול שלי לברצלונה” וקריאת כלי בודדת מטפלת בהכל:

  1. מארכבת את הוקטורים של הפרויקט (אירועים, החלטות, בקשות הקשורות לברצלונה).
  2. מבטלת כל שלשה פעילה בגרף הידע שהפרדיקט שלה תואם את מזהה הפרויקט (scheduled_visit_barcelona, planning_visit_barcelona, confirmed_visit_barcelona).
  3. רושמת את הסיום כשלשה חדשה: (user, "cancelled_visit_barcelona", "2026-04-15").

ההתאמה מודעת לגבולות — פרויקט אחר בשם revisit_barcelona נשאר ללא פגיעה. הסוכן כבר לא צריך לתזמר שלוש קריאות נפרדות בסדר הנכון, כך שגם מודלים קטנים יותר מצליחים בזה.

אם VECTOR_MEMORY מושבת או שספק ההטמעות לא זמין, המערכת חוזרת ל-FTS5 בלבד ללא שגיאות.

מיומנויות
#

מיומנויות הן קובצי .md ב-skills/ שמגדירים קיצורי iOS שהסוכן יכול להפעיל ו/או כללי התנהגות. הן משתמשות בטעינה דינמית: רק אינדקס קומפקטי (כותרת, תיאור, רשימת קיצורים) מוזרק לפרומפט המערכת. הסוכן טוען תוכן מלא לפי דרישה דרך כלי load_skill, ושומר על צריכת טוקנים נמוכה ככל שמוסיפים מיומנויות.

כל קובץ מיומנות משתמש ב-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

שדות frontmatter
#

שדהחובהתיאור
titleכןשם קריא לבני אדם
descriptionכןמשפט אחד המשמש באינדקס המיומנויות המוצג לסוכן
shortcutsכןמערך של שמות קיצורים המוגדרים בקובץ. השתמש ב-[] עבור מיומנויות התנהגות בלבד
targetלאהיכן הקיצורים מבוצעים: device (ברירת מחדל, נשלח ל-iOS) או mac (רץ על השרת)
sync_appלאאפליקציה שיש לפתוח לרגע ברקע לאחר ביצוע בצד השרת כדי להפעיל סנכרון iCloud (למשל Notes, Calendar, Reminders). השמט או השתמש ב-none כדי לדלג

מיומנויות יכולות להיות גם כללי התנהגות ללא קיצורים (למשל, “איך לתכנן טיול משפחתי”). השתמש ב-shortcuts: [] עבור אלה.

הסוכן יכול ליצור ולנהל מיומנויות כשמבקשים — בקש ממנו “צור מיומנות לשליטה באורות שלי” והוא יכתוב את קובץ .md בשבילך. מיומנויות חדשות וערוכות תמיד נוחתות בשכבת המשתמש שלך (data/user/skills/), כך שעדכוני תשתית לעולם לא ידרסו אותן. ראה את סעיף Customizing your agent למטה.

הרצת קיצורים על שרת ה-Mac
#

כאשר למיומנות יש target: mac, הקיצורים רצים בשקט על שרת ה-Mac דרך ה-CLI shortcuts run במקום להישלח למכשיר ה-iOS. זה אידיאלי לפעולות היוצרות תוכן מסונכרן ל-iCloud — פתקים, תזכורות, אירועי יומן — כי התוצאה מסתנכרנת אוטומטית לכל המכשירים שלך מבלי שאפליקציית PocketHook צריכה לעשות כלום.

איך זה עובד:

  1. הסוכן מחליט שקיצור צריך לרוץ (למשל “צור פתק עם הערות הפגישה של היום”)
  2. השרת מפעיל shortcuts run "shortcutName" עם הנתונים המועברים כ-JSON דרך stdin, תוך שימוש באותו פורמט עטיפה שבו משתמש PocketHook iOS
  3. אם sync_app מוגדר, השרת פותח לרגע את האפליקציה הזו ברקע (open -gj -a Notes) כדי לכפות סנכרון iCloud, ואז סוגר אותה לאחר 5 שניות
  4. המשתמש מקבל הודעת אישור בצ’אט; הקיצור עצמו אינו נשלח למכשיר

דרישות:

  • השרת חייב לרוץ על macOSshortcuts run זמין רק ב-macOS. בפלטפורמות אחרות, השרת רושם אזהרה וחוזר להרצה במכשיר
  • הקיצור חייב להיות מותקן ב-Shortcuts.app על שרת ה-Mac
  • הקיצור צריך לצפות ל-Dictionary כקלט (PocketHook עוטף את הנתונים ב-{ context, timestamp, app, data })

מתי להשתמש ב-target: mac:

  • פעולות מסונכרנות ל-iCloud (Notes, Reminders, Calendar) — התוצאה מגיעה ממילא לכל מכשיר
  • עיבוד ארוך שברצונך להרחיק ממכשיר ה-iOS
  • כל קיצור שאינו צריך לאינטראקציה עם ממשק המשתמש של ה-iPhone

מתי להשאיר את target: device (ברירת מחדל):

  • קיצורים הזקוקים לתכונות הייחודיות ל-iPhone (מצלמה, מיקום מדויק, אוטומציות אפליקציה מקומיות)
  • קיצורים המבקשים מהמשתמש קלט אינטראקטיבי
  • קיצורים המשתמשים ב-App Intents מאפליקציות ייחודיות ל-iOS

משימות רקע
#

בקש מהסוכן לתזמן משימות והוא יטפל בשאר:

  • “בדוק את מזג האוויר כל בוקר בשמונה וצור הערה”
  • “הרץ את הסקריפט הזה כל שעה”
  • “הזכר לי לבדוק את המייל שלי בעוד 30 דקות”

משימות תומכות בביטויי cron (0 8 * * *) ומרווחים פשוטים (30m, 1h, 2d). תוצאות מועברות ל-PocketHook כשהוא סוקר את נקודת הקצה /jobs.

שני סוגי ביצוע:

  • מעטפת — מריץ פקודת bash, לוכד פלט. יכול להפעיל קיצור בסיום
  • פרומפט — מעובד על ידי סוכן ה-AI עם גישה מלאה לכלים, שומר את תגובת PocketHook המלאה

שרתי פיתוח
#

כשהסוכן יוצר פרויקט אינטרנט במרחב העבודה (Hugo, Astro, Next.js, Flask, Go וכו’), הוא מציע באופן יזום להגיש אותו:

  • תצוגה מקדימה — מפעיל שרת פיתוח מקומי על פורט שמוקצה אוטומטית לצפייה מהירה
  • ציבורי — מפעיל את השרת וחושף אותו דרך מנהרת HTTPS כך שהוא נגיש מכל מקום

הסוכן מנהל את מחזור החיים: הפעלה, עצירה ורשימת שרתים פעילים. כל השרתים מנוקים כשהשרת הראשי נעצר.

חוזה מנהרה
#

כאשר הסוכן מפעיל שרת עם חשיפת מנהרה מבוקשת, זמן הריצה אוכף זאת: אם לא מותקן כלי מנהרה (Tailscale, ngrok, cloudflared), השרת מסרב להתחיל. אם הקמת המנהרה נכשלת לאחר היציאה, תהליך היתום נעצר והסוכן מקבל הודעה מפורשת — כדי שיוכל לחזור למצב תצוגה מקדימה או לבקש ממך להתקין מנהרה. ה-URL המוחזר הוא תמיד ה-URL של המנהרה כשהמנהור פעיל, עם הערה שה-URL המקומי מוגבל למארח.

כרשת ביטחון, כל כלי respond_* מעבד את ההודעה שלו לאחר ההפעלה: כל כתובת localhost או 127.0.0.1 שמתגנבת לתגובה נכתבת מחדש אוטומטית לכתובת המנהרה המתאימה כאשר לשרת מנוהל יש אחת. כשלא ניתן לכתוב מחדש, אתה מקבל אזהרה בלוגים במקום קישור שבור בטלפון.

דשבורד
#

הדשבורד המובנה ב-/dashboard מציג סקירה חיה של משימות רקע.

לא מאומת בכוונה. גם /dashboard וגם /api/jobs הם נקודות קצה GET פתוחות — כל מי שיכול להגיע למארח יכול להציג את המשימות. הגבל גישה ברמת הרשת (Tailscale ACL, חומת אש, פרוקסי הפוך עם basic auth) או הגדר DASHBOARD=false אם אינך זקוק לזה. אפליקציית PocketHook ל-iOS לא משתמשת בנקודות הקצה האלה.

הוא ניתן להתאמה אישית מלאה:

  • עריכה מהירה — הנח קובץ dashboard.html ב-workspace/dashboard/ להתאמות פשוטות
  • פרויקט מלא — צור פרויקט framework (Svelte, React, Vue וכו’) ב-workspace/dashboard/ עם פלט בנייה ל-dist/

בקש מהסוכן להתאים את הדשבורד שלך והוא יטפל בשאר — כל משתמש מקבל דשבורד ייחודי ומותאם אישית.

כלים מותאמים אישית
#

הסוכן יכול להתקין כלי CLI ולרשום אותם כיכולות חדשות — מרחיב את עצמו מבלי לשנות את קוד השרת.

לדוגמה, אמור “התקן את Playwright והשתמש בו כדי לצלם מסכים”. הסוכן:

  1. יתקין את התלות
  2. ייצור הגדרת כלי (קובץ .md פשוט)
  3. ישתמש בכלי החדש בשיחות עתידיות

כלים מותאמים אישית נטענים מחדש מיידית — אין צורך בהפעלה מחדש. מחק את קובץ .md כדי להסיר כלי.

ניהול גרסאות
#

כל נתוני המשתמש מנוהלים בגרסאות אוטומטית:

  • קבצי מרחב עבודה — עוקבים עם מאגר git מקומי בתוך workspace/. כל כתיבה יוצרת commit אוטומטי. בקש מהסוכן “בטל את השינוי האחרון” או השתמש ב-git revert HEAD ידנית
  • קבצי הגדרותconfig/agent-instructions.md, config/personality.md, skills/ ו-permissions.json מגובים לפני כל שינוי. עד 20 גרסאות לכל קובץ

Git אופציונלי — אם הוא לא מותקן, שינויי מרחב העבודה אינם מנוהלים בגרסאות. גיבויי הגדרות תמיד עובדים.

התאמה אישית של הסוכן שלך
#

שרת הסוכן מגיע עם בסיס תשתית מינימלי ומצפה ממך להניח את ההתאמה האישית שלך מעל. זמן הריצה שומר על השניים נפרדים כך שעדכוני תשתית לעולם לא ימחקו את העבודה שלך.

תשתית מול משתמש
#

pockethook-agent-server/
├── skills/                      # מיומנויות משוגרות עם התשתית (לקריאה בלבד)
├── custom-tools/                # שמור לכלים משוגרים עם התשתית (לקריאה בלבד)
├── config/
│   ├── agent-instructions.md    # הוראות סוכן התשתית (לקריאה בלבד)
│   └── personality.md           # אישיות התשתית (לקריאה בלבד)
└── data/user/                   # ההתאמה שלך חיה כאן (לא נעקב ב-git)
    ├── skills/                  # המיומנויות שלך (דורס את הבסיס לפי שם קובץ)
    ├── custom-tools/            # הכלים המותאמים אישית שהתקנת
    ├── instructions.md          # התוספות שלך להוראות הסוכן
    └── prefs.json               # ערכים מוטפסים שמפנים אליהם כ-{{prefs.key}}

התאמת המשתמש נכתבת באמצעות כלים מוטפסים ייעודיים (create_user_skill, create_custom_tool) כך שהקבצים שנוצרים תמיד תואמים לפורמט של המטען. כלי write גם דוחה כל נתיב תחת skills/, custom-tools/ או config/ ומפנה את הסוכן ל-data/user/* — כך שאפילו עריכות קבצים ישירות מסתיימות בשכבת המשתמש.

הערה לגבי ספריית custom-tools/ הבסיסית. היום היא מכילה רק תבנית (_example.md) שהמטען מתעלם ממנה — כל כלי שהסוכן מתקין בשבילך הולך ל-data/user/custom-tools/. הספרייה שמורה כדי שגרסאות תשתית עתידיות יוכלו לשגר כלים מובנים אופציונליים מבלי למחוק את ההתקנות שלך. כשזה יקרה, קבצי שכבת המשתמש שלך עדיין ינצחו בהתנגשות שם כלי, כך שאין מה להעביר.

ארבע דרכים להתאמה אישית
#

מה אתה רוצה לשנותלאן זה הולךדוגמה
קיצור או מיומנות התנהגותdata/user/skills/<name>.md“צור מיומנות לתעד את האימונים שלי”
כלי CLI עטוף כיכולת סוכןdata/user/custom-tools/<name>.md“התקן ffmpeg ותן לי להשתמש בו להמרות”
כלל גלובלי (“תמיד ענה באנגלית”, “לעולם אל תשתמש בטבלאות”)data/user/instructions.md“מעכשיו, תמיד סכם מאמרים ב-3 תבליטים”
ערך ברירת מחדל מוטפס שמופנה על ידי מיומנויותdata/user/prefs.json“מוצא המסלול המוגדר כברירת מחדל הוא מדריד”{"routeOrigin": "Madrid"}

אתה אף פעם לא צריך לכתוב את הקבצים האלה ביד. פשוט תגיד לסוכן מה אתה רוצה והוא בוחר את השכבה הנכונה אוטומטית.

העדפות מוטפסות עם {{prefs.*}}
#

נניח שאתה כותב מיומנות מתכנן מסלולים שצריכה לדעת את נקודת ההתחלה המוגדרת כברירת מחדל שלך. במקום לקבוע “מדריד” באופן קשיח במיומנות, הפנה להעדפה:

- **נקודת התחלה**: {{prefs.routeOrigin}}, אלא אם המשתמש מציין מוצא אחר.

ושמור את הערך ב-data/user/prefs.json:

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

השרת מחליף מציינים כאשר המיומנות נטענת. מפתחות מקוננים ({{prefs.tunnel.domain}}) עובדים גם. מפתחות לא ידועים נשארים ללא שינוי כך שטעויות הקלדה נשארות גלויות.

עריכה ישירה של בסיס התשתית
#

אם אתה מארח בעצמך ורוצה לשנות את התשתית עצמה, אתה יכול לערוך את config/agent-instructions.md, config/personality.md, skills/, או custom-tools/ ישירות — השרת לא עוצר אותך כשאתה משתמש בעורך קבצים. אבל הסוכן לא יכתוב לנתיבים האלה משיחה. ועדכוני תשתית ידרסו את העריכות שלך. העדף את שכבת המשתמש לכל דבר שאתה רוצה לשמור.

הרחבת השרת
#

  • כלים מותאמים אישית — בקש מהסוכן להתקין כלי CLI; הם נוחתים ב-data/user/custom-tools/ אוטומטית
  • הוסף מיומנויות — בקש מהסוכן ליצור מיומנות; הקובץ הולך ל-data/user/skills/
  • שנה התנהגות — בקש מהסוכן להחיל כלל גלובלי; הוא מוסיף אותו ל-data/user/instructions.md
  • הגדר הרשאות — הרץ bun run permissions כדי לשלוט באילו כלים הסוכן יכול להשתמש
  • הוסף כלים מובנים — מימש פונקציות כלים חדשות ב-src/tools.ts לאינטגרציות עמוקות יותר (דורש פיצול של השרת)

הגדרות
#

כל ההגדרות מאוחסנות ב-.env (נוצר על ידי bun run setup). אפשרויות מרכזיות:

משתנהברירת מחדלתיאור
AUTH_TOKEN(נדרש)סוד משותף עם PocketHook
LLM_API_KEY(נדרש)מפתח API של ספק מודל השפה
LLM_PROVIDERanthropicשם הספק
LLM_MODELclaude-sonnet-4-20250514מזהה מודל
LLM_REASONINGoffמאמץ הסקה: off, minimal, low, medium, high, xhigh. רמות גבוהות יותר מוסיפות טוקני חשיבה נסתרים (איטי יותר + יקר יותר). מודלים שאינם תומכים בכך מתעלמים מהערך
PORT3000פורט שרת
AGENT_NAMEPocketHook Assistantשם תצוגת הסוכן
MAX_HISTORY50הודעות בזיכרון לטווח קצר
MAX_RECALL5זיכרונות שמוחזרים לכל תור על ידי שליפה סמנטית (רק כאשר VECTOR_MEMORY=true)
SESSION_TTL_MINUTES60פקיעת הפעלה
VECTOR_MEMORYfalseהפעל זיכרון סמנטי (דורש ספק הטמעות)
EMBEDDING_PROVIDERollamaספק הטמעות: ollama, lm-studio או openai
EMBEDDING_MODELnomic-embed-textשם מודל הטמעות
EMBEDDING_URL(אוטומטי)כתובת API להטמעות
EMBEDDING_API_KEYמפתח API להטמעות OpenAI
LOG_LEVELinfoרמת לוג: debug, info, warn, error
RATE_LIMIT_MAX30מקסימום בקשות לכל חלון
DASHBOARDtrueהפעל דשבורד אינטרנטי (נתיב /dashboard)
INSTANCE_NAME(שם תיקיית הפרויקט, עם הסרת pockethook-)סיומת המשמשת לתווית שירות המערכת, ספריית הלוגים והתאמת תהליכים. הגדר במפורש כשמריצים מספר עותקים על אותה מכונה

ראה את מדריך ההגדרות המלא במאגר GitHub.

הפעלה כשירות
#

התקן כשירות מתמשך שמתחיל אוטומטית:

bun run service install
פלטפורמהמנועמיקום השירות
macOSlaunchd~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist
Linuxsystemd (משתמש)~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service
WindowsNSSMPocketHook-${PascalCase(INSTANCE_NAME)} ב-Windows Service Manager

INSTANCE_NAME כברירת מחדל הוא שם תיקיית הפרויקט עם הסרת הקידומת pockethook- (למשל, עותק ב-pockethook-agent-server/ הופך ל-agent-server). הגדר אותו במפורש כדי להריץ מספר עותקים על אותה מכונה ללא התנגשויות — לכל מופע יש data/ ולוגים משלו.

נהל עם bun run service status, restart, stop או uninstall.

אבטחה
#

  • HTTPS נדרש — PocketHook אוכף HTTPS לכל כתובות ה-URL
  • אימות טוקן Bearer — סוד משותף בין האפליקציה לשרת
  • הגבלת קצב — מגבלות לכל טוקן מונעות ניצול לרעה
  • כלים מבודדים — פקודות מעטפת וגישה לקבצים מוגבלות על ידי הרשאות
  • דפוסים חסומים — פקודות מסוכנות (sudo, rm -rf /) חסומות כברירת מחדל
  • גבול ספריית עבודה — הסוכן לא יכול לצאת מהספרייה המיועדת לו
  • הגנה על קבצים רגישים.env, .git, *.key, *.pem חסומים מגישת הסוכן
  • ניהול גרסאות אוטומטי — כל שינויי מרחב העבודה נעקבים ב-git לשחזור קל