Skip to content

הערות פלטפורמה ​

התנהגות, דרישות ומוזרויות ספציפיות לפלטפורמה.

macOS ​

מנהל שירות: launchd ​

Triggerfish נרשם כסוכן launchd ב:

~/Library/LaunchAgents/dev.triggerfish.agent.plist

ה-plist מוגדר עם RunAtLoad: true ו-KeepAlive: true, כך שה-daemon מתחיל בהתחברות ומתאתחל אם הוא קורס.

לכידת PATH ​

ה-plist של launchd לוכד את PATH של ה-shell שלכם בזמן ההתקנה. זה קריטי כי launchd אינו טוען את פרופיל ה-shell שלכם. אם אתם מתקינים תלויות שרת MCP (כמו npx, python) לאחר התקנת ה-daemon, בינאריים אלו לא יהיו ב-PATH של ה-daemon.

תיקון: התקינו מחדש את ה-daemon כדי לעדכן את ה-PATH הנלכד:

bash
triggerfish stop
triggerfish dive --install-daemon

הסגר ​

macOS מחיל דגל הסגר על בינאריים שהורדו. המתקין מנקה זאת עם xattr -cr, אבל אם הורדתם את הבינארי ידנית:

bash
xattr -cr /usr/local/bin/triggerfish

Keychain ​

סודות מאוחסנים ב-login keychain של macOS דרך CLI של security. אם Keychain Access נעול, פעולות סוד יכשלו עד שתפתחו אותו (בדרך כלל על ידי התחברות).

Homebrew Deno ​

אם אתם בונים מקוד מקור ו-Deno הותקן דרך Homebrew, ודאו שספריית bin של Homebrew נמצאת ב-PATH שלכם לפני הרצת סקריפט ההתקנה.


Linux ​

מנהל שירות: systemd (מצב משתמש) ​

ה-daemon רץ כשירות משתמש של systemd:

~/.config/systemd/user/triggerfish.service

Linger ​

כברירת מחדל, שירותי משתמש של systemd נעצרים כאשר המשתמש מתנתק. Triggerfish מפעיל linger בזמן ההתקנה:

bash
loginctl enable-linger $USER

אם זה נכשל (למשל מנהל המערכת שלכם השבית זאת), ה-daemon רץ רק כשאתם מחוברים. בשרתים שבהם אתם רוצים שה-daemon יתמיד, בקשו ממנהל המערכת להפעיל linger לחשבון שלכם.

PATH וסביבה ​

יחידת systemd לוכדת את ה-PATH שלכם ומגדירה DENO_DIR=~/.cache/deno. כמו macOS, שינויים ב-PATH לאחר ההתקנה דורשים התקנה מחדש של ה-daemon.

היחידה גם מגדירה Environment=PATH=... במפורש. אם ה-daemon לא מוצא בינאריים של שרתי MCP, זו הסיבה הסבירה ביותר.

Fedora Atomic / Silverblue / Bazzite ​

לשולחנות עבודה Fedora Atomic יש /home המקושר כ-symlink ל-/var/home. Triggerfish מטפל בזה אוטומטית בעת פענוח ספריית הבית, עוקב אחר symlinks כדי למצוא את הנתיב האמיתי.

דפדפנים שהותקנו ב-Flatpak מזוהים ומופעלים דרך סקריפט עטיפה שקורא ל-flatpak run.

שרתים ללא ממשק גרפי ​

בשרתים ללא סביבת שולחן עבודה, ייתכן ש-daemon GNOME Keyring / Secret Service אינו רץ. ראו פתרון בעיות סודות להוראות הגדרה.

SQLite FFI ​

ה-backend של אחסון SQLite משתמש ב-@db/sqlite, שטוען ספרייה מקורית דרך FFI. זה דורש הרשאת --allow-ffi של Deno (כלולה בבינארי המקומפל). בהפצות Linux מינימליות מסוימות, ספריית C המשותפת או תלויות קשורות עשויות להיות חסרות. התקינו את ספריות הפיתוח הבסיסיות אם אתם רואים שגיאות הקשורות ל-FFI.


Windows ​

מנהל שירות: Windows Service ​

Triggerfish מתקין כ-Windows Service בשם "Triggerfish". השירות ממומש על ידי עטיפת C# שמקומפלת במהלך ההתקנה באמצעות csc.exe מ-.NET Framework 4.x.

דרישות:

  • .NET Framework 4.x (מותקן ברוב מערכות Windows 10/11)
  • הרשאות מנהל מערכת להתקנת שירות
  • csc.exe נגיש בספריית .NET Framework

החלפת בינארי במהלך עדכונים ​

Windows אינו מאפשר דריסת קובץ הרצה שרץ כרגע. המעדכן:

  1. משנה שם הבינארי הרץ ל-triggerfish.exe.old
  2. מעתיק את הבינארי החדש לנתיב המקורי
  3. מאתחל מחדש את השירות
  4. מנקה את קובץ .old בהפעלה הבאה

אם שינוי השם או ההעתקה נכשלים, עצרו את השירות ידנית לפני העדכון.

תמיכת צבעי ANSI ​

Triggerfish מפעיל Virtual Terminal Processing לפלט קונסולה צבעוני. זה עובד ב-PowerShell מודרני וב-Windows Terminal. חלונות cmd.exe ישנים עשויים לא לרנדר צבעים נכון.

נעילת קבצים בלעדית ​

Windows משתמש בנעילות קבצים בלעדיות. אם ה-daemon רץ ואתם מנסים להפעיל מופע נוסף, נעילת קובץ הלוג מונעת זאת:

Triggerfish is already running. Stop the existing instance first, or use 'triggerfish status' to check.

זיהוי זה ספציפי ל-Windows ומבוסס על EBUSY / "os error 32" בעת פתיחת קובץ הלוג.

אחסון סודות ​

Windows משתמש באחסון הקובץ המוצפן (AES-256-GCM) ב-~/.triggerfish/secrets.json. אין אינטגרציה עם Windows Credential Manager. התייחסו לקובץ secrets.key כרגיש.

הערות מתקין PowerShell ​

מתקין PowerShell (install.ps1):

  • מזהה ארכיטקטורת מעבד (x64/arm64)
  • מתקין ב-%LOCALAPPDATA%\Triggerfish
  • מוסיף את ספריית ההתקנה ל-PATH משתמש דרך registry
  • מקמפל את עטיפת שירות C#
  • רושם ומפעיל את Windows Service

אם המתקין נכשל בשלב קומפילציית השירות, עדיין ניתן להריץ Triggerfish ידנית:

powershell
triggerfish run    # מצב חזית

Docker ​

runtime קונטיינר ​

פריסת Docker תומכת גם ב-Docker וגם ב-Podman. הזיהוי אוטומטי, או הגדירו במפורש:

bash
TRIGGERFISH_CONTAINER_RUNTIME=podman

פרטי תמונה ​

  • בסיס: gcr.io/distroless/cc-debian12 (מינימלי, ללא shell)
  • גרסת debug: distroless:debug (כולל shell לפתרון בעיות)
  • רץ כ-UID 65534 (nonroot)
  • Init: true (העברת אותות PID 1 דרך tini)
  • מדיניות אתחול: unless-stopped

שמירת נתונים ​

כל הנתונים העמידים נמצאים בספריית /data בתוך הקונטיינר, מגובים על ידי Docker named volume:

/data/
  triggerfish.yaml        # תצורה
  secrets.json            # סודות מוצפנים
  secrets.key             # מפתח הצפנה
  SPINE.md                # זהות סוכן
  TRIGGER.md              # התנהגות טריגר
  data/triggerfish.db     # מסד נתונים SQLite
  logs/                   # קבצי לוג
  skills/                 # מיומנויות מותקנות
  workspace/              # מרחבי עבודה של סוכנים
  .deno/                  # מטמון plugin FFI של Deno

משתני סביבה ​

משתנהברירת מחדלמטרה
TRIGGERFISH_DATA_DIR/dataספריית נתונים בסיסית
TRIGGERFISH_CONFIG/data/triggerfish.yamlנתיב קובץ תצורה
TRIGGERFISH_DOCKERtrueמפעיל התנהגות ספציפית ל-Docker
DENO_DIR/data/.denoמטמון Deno (plugins FFI)
HOME/dataספריית בית למשתמש nonroot

סודות ב-Docker ​

קונטיינרים של Docker אינם יכולים לגשת ל-keychain של מערכת ההפעלה המארחת. אחסון הקובץ המוצפן משמש אוטומטית. מפתח ההצפנה (secrets.key) והנתונים המוצפנים (secrets.json) מאוחסנים ב-volume /data.

הערת אבטחה: כל מי שיש לו גישה ל-Docker volume יכול לקרוא את מפתח ההצפנה. אבטחו את ה-volume בהתאם. בייצור, שקלו שימוש ב-Docker secrets או מנהל סודות להזרקת המפתח בזמן ריצה.

פורטים ​

קובץ compose ממפה:

  • 18789 - Gateway WebSocket
  • 18790 - Tidepool A2UI

פורטים נוספים (WebChat על 8765, WhatsApp webhook על 8443) צריכים להתווסף לקובץ compose אם אתם מפעילים ערוצים אלו.

הרצת אשף ההגדרה ב-Docker ​

bash
# אם הקונטיינר רץ
docker exec -it triggerfish triggerfish dive

# אם הקונטיינר לא רץ (חד-פעמי)
docker run -it -v triggerfish-data:/data ghcr.io/greghavens/triggerfish:latest dive

עדכון ​

bash
# באמצעות סקריפט העטיפה
triggerfish update

# ידנית
docker compose pull
docker compose up -d

ניפוי באגים ​

השתמשו בגרסת debug של התמונה לפתרון בעיות:

yaml
# ב-docker-compose.yml
image: ghcr.io/greghavens/triggerfish:debug

זה כולל shell כדי שתוכלו להיכנס לקונטיינר:

bash
docker exec -it triggerfish /busybox/sh

Flatpak (דפדפן בלבד) ​

Triggerfish עצמו אינו רץ כ-Flatpak, אבל הוא יכול להשתמש בדפדפנים שהותקנו ב-Flatpak לאוטומציית דפדפן.

דפדפני Flatpak מזוהים ​

  • com.google.Chrome
  • org.chromium.Chromium
  • com.brave.Browser

כיצד זה עובד ​

Triggerfish יוצר סקריפט עטיפה זמני שקורא ל-flatpak run עם דגלי מצב headless, ואז מפעיל Chrome דרך הסקריפט. העטיפה נכתבת לספריית temp.

בעיות נפוצות ​

  • Flatpak לא מותקן. הבינארי חייב להיות ב-/usr/bin/flatpak או /usr/local/bin/flatpak.
  • ספריית temp אינה ניתנת לכתיבה. סקריפט העטיפה צריך להיכתב לדיסק לפני ביצוע.
  • התנגשויות ארגז חול Flatpak. חלק מבניות Flatpak Chrome מגבילות --remote-debugging-port. אם חיבור CDP נכשל, נסו התקנת Chrome מקומית במקום Flatpak.