מה זה שרת הסוכן 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 |
איך זה עובד#
- אתה שולח הודעה ב-PocketHook
- השרת מעביר אותה למודל השפה שבחרת עם היסטוריית שיחה, זיכרונות שנמשכו וכלים זמינים
- מודל השפה מעבד את ההודעה — הוא יכול להריץ פקודות מעטפת, לקרוא/לכתוב קבצים, לחפש באינטרנט, לתזמן משימות רקע, לזכור עובדות או להפעיל שרתי פיתוח
- התגובה מוחזרת בפורמט PocketHook (
msg+shortcut+data+url) - PocketHook מציג את ההודעה ומפעיל קיצורים על המכשיר שלך
ספקי מודלי שפה נתמכים#
| ספק | אימות | מודל ברירת מחדל |
|---|---|---|
| Anthropic | מפתח API | claude-sonnet-4-20250514 |
| OpenAI | מפתח API | gpt-4.1-mini |
| OpenAI Codex | OAuth | gpt-5.1-codex-mini |
| GitHub Copilot | OAuth | claude-sonnet-4 |
| Google (Gemini) | מפתח API | gemini-2.5-flash |
| Mistral | מפתח API | mistral-medium-latest |
| Groq | מפתח API | llama-3.3-70b-versatile |
| xAI (Grok) | מפתח API | grok-3-mini-fast |
| OpenRouter | מפתח API | anthropic/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:
- פרויקט — עבודה פעילה ומוגבלת בזמן
- תחום — אחריויות מתמשכות
- משאב — חומר עיון (רשימות, המלצות, מדריכים)
- ארכיון — פרויקטים שהושלמו או בוטלו
כשפרויקט מסתיים, הסוכן משתמש בדמיון סמנטי כדי לארכב רק את הזיכרונות של אותו פרויקט תוך שמירה על חומר עיון לשימוש עתידי.
מפל סיום פרויקט#
אמור “אני מבטל את הטיול שלי לברצלונה” וקריאת כלי בודדת מטפלת בהכל:
- מארכבת את הוקטורים של הפרויקט (אירועים, החלטות, בקשות הקשורות לברצלונה).
- מבטלת כל שלשה פעילה בגרף הידע שהפרדיקט שלה תואם את מזהה הפרויקט (
scheduled_visit_barcelona,planning_visit_barcelona,confirmed_visit_barcelona). - רושמת את הסיום כשלשה חדשה:
(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 צריכה לעשות כלום.
איך זה עובד:
- הסוכן מחליט שקיצור צריך לרוץ (למשל “צור פתק עם הערות הפגישה של היום”)
- השרת מפעיל
shortcuts run "shortcutName"עם הנתונים המועברים כ-JSON דרך stdin, תוך שימוש באותו פורמט עטיפה שבו משתמש PocketHook iOS - אם
sync_appמוגדר, השרת פותח לרגע את האפליקציה הזו ברקע (open -gj -a Notes) כדי לכפות סנכרון iCloud, ואז סוגר אותה לאחר 5 שניות - המשתמש מקבל הודעת אישור בצ’אט; הקיצור עצמו אינו נשלח למכשיר
דרישות:
- השרת חייב לרוץ על macOS —
shortcuts 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 והשתמש בו כדי לצלם מסכים”. הסוכן:
- יתקין את התלות
- ייצור הגדרת כלי (קובץ
.mdפשוט) - ישתמש בכלי החדש בשיחות עתידיות
כלים מותאמים אישית נטענים מחדש מיידית — אין צורך בהפעלה מחדש. מחק את קובץ .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_PROVIDER | anthropic | שם הספק |
LLM_MODEL | claude-sonnet-4-20250514 | מזהה מודל |
LLM_REASONING | off | מאמץ הסקה: off, minimal, low, medium, high, xhigh. רמות גבוהות יותר מוסיפות טוקני חשיבה נסתרים (איטי יותר + יקר יותר). מודלים שאינם תומכים בכך מתעלמים מהערך |
PORT | 3000 | פורט שרת |
AGENT_NAME | PocketHook Assistant | שם תצוגת הסוכן |
MAX_HISTORY | 50 | הודעות בזיכרון לטווח קצר |
MAX_RECALL | 5 | זיכרונות שמוחזרים לכל תור על ידי שליפה סמנטית (רק כאשר VECTOR_MEMORY=true) |
SESSION_TTL_MINUTES | 60 | פקיעת הפעלה |
VECTOR_MEMORY | false | הפעל זיכרון סמנטי (דורש ספק הטמעות) |
EMBEDDING_PROVIDER | ollama | ספק הטמעות: ollama, lm-studio או openai |
EMBEDDING_MODEL | nomic-embed-text | שם מודל הטמעות |
EMBEDDING_URL | (אוטומטי) | כתובת API להטמעות |
EMBEDDING_API_KEY | — | מפתח API להטמעות OpenAI |
LOG_LEVEL | info | רמת לוג: debug, info, warn, error |
RATE_LIMIT_MAX | 30 | מקסימום בקשות לכל חלון |
DASHBOARD | true | הפעל דשבורד אינטרנטי (נתיב /dashboard) |
INSTANCE_NAME | (שם תיקיית הפרויקט, עם הסרת pockethook-) | סיומת המשמשת לתווית שירות המערכת, ספריית הלוגים והתאמת תהליכים. הגדר במפורש כשמריצים מספר עותקים על אותה מכונה |
ראה את מדריך ההגדרות המלא במאגר GitHub.
הפעלה כשירות#
התקן כשירות מתמשך שמתחיל אוטומטית:
bun run service install
| פלטפורמה | מנוע | מיקום השירות |
|---|---|---|
| macOS | launchd | ~/Library/LaunchAgents/com.pockethook.${INSTANCE_NAME}.plist |
| Linux | systemd (משתמש) | ~/.config/systemd/user/pockethook-${INSTANCE_NAME}.service |
| Windows | NSSM | PocketHook-${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 לשחזור קל