یک پایگاه دانش خودبه‌روزرسان برای هوش مصنوعی ترمینال

من بیشتر روز خود را در ترمینال و با یک دستیار کدنویسی هوش مصنوعی می‌گذرانم.

من اغلب در طول یک جلسه، مشکلات سختی را حل می‌کنم. یک راه حل پیچیده یا یک تنظیمات پیکربندی خاص را پیدا می‌کنم. سپس تب را می‌بندم و آن دانش ناپدید می‌شود. یک ماه بعد، دقیقاً همان مشکل را دوباره حل می‌کنم.

من سیستمی ساختم تا دستیارم بتواند با استفاده از هوک‌های Claude Code، یادداشت‌های خودش را نگهداری کند.

این سیستم از سه بخش استفاده می‌کند:

  • جستجو در یک پایگاه دانش کوچک Markdown در هر پرامپت برای ارائه زمینه (context).
  • ثبت یادداشت‌های مفید هنگام پایان یک جلسه.
  • بارگذاری ایندکس هنگام شروع یک جلسه.

در اینجا نحوه ساخت آن بدون کند کردن جریان کاری‌تان آورده شده است.

۱. استفاده از UserPromptSubmit برای بازیابی اطلاعات

این هوک هر بار که یک پرامپت ارسال می‌کنید اجرا می‌شود. متن شما را دریافت می‌کند و می‌تواند قبل از پاسخ مدل، زمینه (context) را تزریق کند.

اجازه ندهید مدل تصمیم بگیرد که چه زمانی به یادداشت‌های شما نگاه کند. از یک جستجوی سریع مانند grep برای یافتن فایل‌های مرتبط استفاده کنید. فقط پنج مورد اول را تزریق کنید. این کار باعث می‌شود فرآیند زیر ۱۰۰ میلی‌ثانیه باقی بماند.

دو قانون برای هوک‌های جستجو:

  • ارزان نگه دارید. برای جستجوی اولیه به جای یک LLM از grep استفاده کنید.
  • سبک نگه دارید. فقط عناوین و مسیر فایل‌ها را تزریق کنید. اگر مدل به جزئیات بیشتری نیاز داشت، می‌تواند فایل را باز کند.

۲. اجتناب از هوک Stop برای کارهای سنگین

هوک Stop هر بار که دستیار پاسخ خود را تمام می‌کند، اجرا می‌شود. اگر یک کار طولانی را اینجا اجرا کنید، دستیار شما کند می‌شود. یک جلسه ۳۰ مرحله‌ای، ۳۰ کار سنگین را اجرا خواهد کرد.

در عوض، از SessionEnd استفاده کنید تا کل جلسه را یک‌بار ثبت کنید.

۳. حل محدودیت SessionEnd

SessionEnd غیرمسدودکننده (non-blocking) است. اگر یک کار پس‌زمینه طولانی را اینجا شروع کنید، ممکن است سیستم هنگام بستن جلسه، آن را متوقف کند.

راه حل، استفاده از دو هوک است:

  • SessionEnd: به سرعت مسیر متن گفتگو (transcript) را به یک فایل صف (queue) اضافه کنید.
  • SessionStart: آن صف را تخلیه کرده و کار سنگین ثبت را در پس‌زمینه اجرا کنید.

از آنجایی که جلسه بعدی فعال است، فرآیند پس‌زمینه زنده می‌ماند.

۴. جلوگیری از حلقه‌های بی‌نهایت

وقتی یک هوش مصنوعی بدون رابط کاربری (headless) را برای نوشتن یادداشت‌ها اجرا می‌کنید، محیط شما را به ارث می‌برد. این یعنی هوش مصنوعی جدید، هوک‌های خودش را فعال می‌کند. این کار یک حلقه از فراخوانی‌های بی‌پایان هوش مصنوعی ایجاد می‌کند.

همیشه یک محافظ بازگشتی (recursion guard) در بالای اسکریپت‌های خود اضافه کنید:

[ -n "$KB_CAPTURE" ] && exit 0

هنگام اجرای کار ثبت در پس‌زمینه، KB_CAPTURE=1 را تنظیم کنید.

خلاصه تنظیمات:

  • استفاده از UserPromptSubmit برای تزریق فوری زمینه.
  • استفاده از SessionEnd برای قرار دادن وظایف در صف.
  • استفاده از SessionStart برای اجرای کار اصلی.
  • استفاده از یک مدل ارزان برای خلاصه‌سازی یادداشت‌ها جهت صرفه‌جویی در هزینه.

صرفه‌جویی در حل مجدد یک مشکل، هزینه بسیاری از فرآیندهای ثبت را پوشش می‌دهد.

Source: https://dev.to/just_an_electron/a-self-updating-knowledge-base-for-my-terminal-ai-assistant-claude-code-hooks-28jb

Optional learning community: https://t.me/GyaanSetuAi