Skip to content

عیب‌یابی: الخدمة الخلدرة

الخدمة الخلدرة خیر تبدأ

"Triggerfish is already running"

تظهر این پیام عندما يكون ملف السجل مقفخیرً بواسطة عملية أخرى. روی Windows، يُكتشف این از طریق خطأ EBUSY / "os error 32" عندما يحاول كاتب الملف فتح ملف السجل.

الحل:

bash
triggerfish status    # تحقق مما إذا كانت آنجا نسخة تعمل فعخیرً
triggerfish stop      # یاقف النسخة الموجودة
triggerfish start     # ابدأ از جديد

إذا أبلغ triggerfish status أن الخدمة الخلدرة خیر تعمل لكنك خیر تزال تحصل روی این الخطأ، فإن عملية أخرى تحتفظ بملف السجل مفتوحاً. تحقق از العمليات المتبقية:

bash
# Linux
ps aux | grep triggerfish

# macOS
ps aux | grep triggerfish

# Windows
tasklist | findstr triggerfish

اقتل هر عمليات قديمة، ثم حاول مرة أخرى.

الازفذ 18789 یا 18790 قيد استفاده در واقع

تستبا Gateway روی الازفذ 18789 (WebSocket) وTidepool روی 18790 (A2UI). إذا شغل تطبيق آخر این الازافذ، ستفشل الخدمة الخلدرة در شروع.

اعثر روی ما يستخدم الازفذ:

bash
# Linux
ss -tlnp | grep 18789

# macOS
lsof -i :18789

# Windows
netstat -ano | findstr 18789

خیر يوجد ارائه‌دهنده LLM مكوَّن

إذا كان triggerfish.yaml يفتقد قسم models یا كان ارائه‌دهنده الأساسي بدون مفتاح API، تسجّل Gateway:

No LLM provider configured. Check triggerfish.yaml.

الحل: شغّل باالج راه‌اندازی یا كوّن به‌صورت دستی:

bash
triggerfish dive                    # إعداد تفاعلي
# یا
triggerfish config set models.primary.provider anthropic
triggerfish config set models.primary.model claude-sonnet-4-20250514
triggerfish config set-secret provider:anthropic:apiKey sk-ant-...

ملف پیکربندی غير موجود

تخرج الخدمة الخلدرة إذا لم يكن triggerfish.yaml موجوداً در المسار المتوقع. تختلف پیام الخطأ حسب البيئة:

  • تثبيت أصلي: يقترح تشغيل triggerfish dive
  • Docker: يقترح تركيب ملف پیکربندی بـ -v ./triggerfish.yaml:/data/triggerfish.yaml

تحقق از المسار:

bash
ls ~/.triggerfish/triggerfish.yaml      # أصلي
docker exec triggerfish ls /data/       # Docker

فشل حل رمزها

إذا كان تكوينك يشير به سر (secret:provider:anthropic:apiKey) غير موجود در سلسلة المفاتيح، تخرج الخدمة الخلدرة بخطأ يسمّي السر المفقود.

الحل:

bash
triggerfish config set-secret provider:anthropic:apiKey <your-key>

إدارة الخدمة

systemd: الخدمة الخلدرة تتوقف بعد تسجيل الخروج

به‌صورت پیش‌فرض، تتوقف خدمات systemd الخاصة بالمستخدم عند تسجيل خروج المستخدم. يُفعّل Triggerfish loginctl enable-linger أثناء نصب لازع این. إذا فشل تفعيل linger:

bash
# تحقق از حالة linger
loginctl show-user $USER | grep Linger

# فعّله (قد يتدرخواست sudo)
sudo loginctl enable-linger $USER

بدون linger، تعمل الخدمة الخلدرة فقط أثناء تسجيل دخولك.

systemd: فشل بدء الخدمة

تحقق از حالة الخدمة ودفتر اليومية:

bash
systemctl --user status triggerfish.service
journalctl --user -u triggerfish.service --no-pager -n 50

الأسباب الشائعة:

  • نُقل الملف التندرذي یا حُذف. يحتوي ملف الوحدة روی مسار ثابت للملف التندرذي. أعد تثبيت الخدمة الخلدرة: triggerfish dive --install-daemon
  • مشاهر PATH. تلتقط وحدة systemd PATH الخاص بك وقت نصب. إذا ثبّتت ابزارها جديدة (مثل خوادم MCP) بعد تثبيت الخدمة الخلدرة، أعد تثبيت الخدمة الخلدرة لتحديث PATH.
  • DENO_DIR غير مضبوط. تضبط وحدة systemd DENO_DIR=~/.cache/deno. إذا لم يكن این المجلد قابخیرً للكتابة، ستفشل إضافات SQLite FFI در التحميل.

launchd: الخدمة الخلدرة خیر تبدأ عند تسجيل الدخول

تحقق از حالة plist:

bash
launchctl list | grep triggerfish
launchctl print gui/$(id -u)/dev.triggerfish.agent

إذا لم يكن plist محمَّخیرً:

bash
launchctl load ~/Library/LaunchAgents/dev.triggerfish.agent.plist

الأسباب الشائعة:

  • أُزيل plist یا تلف. أعد نصب: triggerfish dive --install-daemon
  • نُقل الملف التندرذي. يحتوي plist روی مسار ثابت. أعد نصب بعد نقل الملف التندرذي.
  • PATH وقت نصب. مثل systemd، يلتقط launchd PATH عند إنشاء plist. أعد نصب إذا أضفت ابزارها جديدة به PATH.

Windows: الخدمة خیر تبدأ

تحقق از حالة الخدمة:

powershell
sc query Triggerfish
Get-Service Triggerfish

الأسباب الشائعة:

  • الخدمة غير مُثبّتة. أعد نصب: شغّل المُثبّت كمسؤول.
  • تغيّر مسار الملف التندرذي. يحتوي مغلّف الخدمة روی مسار ثابت. أعد نصب.
  • فشل تتمام .NET أثناء نصب. يتدرخواست مغلّف خدمة C# csc.exe از .NET Framework 4.x.

الترقية تعطّل الخدمة الخلدرة

بعد تشغيل triggerfish update، تُعاد الخدمة الخلدرة به‌صورت خودکار. إذا لم تُعد:

  1. قد يكون الملف التندرذي القديم خیر يزال کار می‌کند. یاقفه به‌صورت دستی: triggerfish stop
  2. روی Windows، يُعاد تسمية الملف التندرذي القديم به .old. إذا فشلت إعادة التسمية، سيخطئ التحديث. یاقف الخدمة یاخیرً، ثم حدّث.

مشاهر ملف السجل

ملف السجل فارغ

تكتب الخدمة الخلدرة در ~/.triggerfish/logs/triggerfish.log. إذا كان الملف موجوداً لكنه فارغ:

  • قد تكون الخدمة الخلدرة بدأت للتو. انتظر لحظة.
  • مستوى السجل مضبوط روی quiet، الذي يسجّل فقط پیام‌ها مستوى ERROR. اضبطه روی normal یا verbose:
bash
triggerfish config set logging.level normal

السجخیرت مزعجة جداً

اضبط مستوى السجل روی quiet لرؤية الأخطاء فقط:

bash
triggerfish config set logging.level quiet

خريطة المستويات:

قيمة پیکربندیالحد الأدنى للمستوى المسجَّل
quietERROR فقط
normalINFO وما فوق
verboseDEBUG وما فوق
debugTRACE وما فوق (هر شيء)

تدوير السجخیرت

تُدوَّر السجخیرت به‌صورت خودکار عندما يتجاوز الملف الحالي 1 ميغابايت. يُحتفظ بما يصل به 10 ملفات مُدوَّرة:

triggerfish.log        # الحالي
triggerfish.1.log      # أحدث نسخة احتياطية
triggerfish.2.log      # ثاني أحدث
...
triggerfish.10.log     # الأقدم (يُحذف عند حدوث تدوير جديد)

خیر يوجد تدوير روی أساس الوقت، فقط روی أساس الحجم.