
بقلم: ليلى | محررة أدوات المطورين · صوت تحريري بإشراف بشري
بعد أسبوعين من العمل مع أدوات الكود بالذكاء الاصطناعي، يجد معظم المطورين أنفسهم أمام عشرات المحادثات المجهولة الهوية: Claude Code يحفظ كل جلسة كملف JSONL بلا عنوان في ~/.claude/projects/ مرتّباً حسب المجلد، Cursor CLI يدفن كل محادثة داخل مجلد باسم hash عشوائي في ~/.cursor/chats/، Kiro CLI يكدّسها في مجلد مسطّح واحد هو ~/.kiro/sessions/cli/، وCodex يرتّبها بالتاريخ تحت ~/.codex/sessions/. النتيجة: أربعة أنظمة تخزين مختلفة، ولا طريقة موحّدة للعثور على المحادثة التي تحتاجها.
Wallfacer أداة مفتوحة المصدر بترخيص MIT تعالج هذه الفوضى تحديداً. تفهرس الجلسات من الأنظمة الأربعة في قاعدة SQLite محلية مستقلة على ~/.local/share/wallfacer/، وتعمل بمبدأ القراءة الصارفة — لا تلمس ملفات أي agent أصلاً. إذا حذفت قاعدة بياناتها كاملاً، لا تفقد سوى البيانات الوصفية التي أضفتها أنت، والمحادثات الأصلية تبقى سليمة. المزامنة تدريجية incremental وتعمل تلقائياً قبل كل أمر، فتظل سريعة حتى مع مئات الجلسات.
الأداة ليست مجرد قائمة بحث — هي ثنائية واحدة بواجهتين تقرآن من نفس قاعدة البيانات ذاتها. كتابة wallfacer وحدها تفتح TUI تفاعلياً يملأ الشاشة: قائمة الجلسات على اليسار مع عمود لكل من المشروع والوسوم والمجلد والعمر والـ agent، ولوحة تفاصيل على اليمين. عند الشاشات الأضيق من 100 عمود تختفي لوحة التفاصيل وتأخذ القائمة العرض كاملاً. أي subcommand بعد الاسم يُشغّل CLI مباشرةً للسكريبتات والأوامر السريعة — ما تُعلّمه في المتصفح يظهر فوراً في wallfacer list --tag، والعكس صحيح.
إليك ما تستطيع فعله بالأداة فعلياً:
- عرض موحّد لكل الجلسات من كل agent: جلسات Claude Code وCursor CLI وKiro CLI وCodex مرتّبة حسب الحداثة في قائمة واحدة. عمود AGENT يوضّح مصدر كل جلسة، وخيار
--agentيقبل بحثاً جزئياً غير حساس لحالة الأحرف — اكتبkiroأوcursorوتحصل على ما تريد. الجلسات التي بدأتها خارج Wallfacer تُلتقط تلقائياً دون أي استيراد يدوي. - التنظيم الكامل بعناوين ووسوم ومشاريع: أعِد تسمية أي جلسة، أضِف عليها وسوم tags، وصنّفها ضمن مشروع project. كل هذا يُخزَّن في SQLite بمعزل تام عن ملفات الـ agent الأصلية. البحث يشمل العناوين والطلبات الأولى ومسارات المجلدات والمشاريع والوسوم معاً.
- الاستئناف والإطلاق بمرجع مرن: ابدأ جلسة جديدة —
wallfacer new ~/work/api --title "Fix flaky auth tests"— أو استأنف قديمة بـwallfacer resume "fix flaky auth tests". المرجع<ref>يقبل بادئة ID مثل5f2أو عنواناً كاملاً. إذا كان المرجع غامضاً تعرض الأداة المرشحين بدل التخمين. في TUI، ضغطnيبدأ جلسة جديدة مع اختيار الـ agent أولاً — Claude Code محدد مسبقاً، وخطوة الاختيار تُتخطى إذا كان هناك adapter واحد فقط. - الحذف الآمن مع نقل المجموعة كاملة: الأمر
rmيرسل الجلسة إلى سلة المحذوفات، والحذف الدائم يتطلب--purgeصراحةً. الأهم: للـ agents التي تفرّق جلسة واحدة على ملفات متعددة — Kiro CLI يكتب transcript ومعرّفاً جانبياً sidecar وسجل طلبات ومجلداً مؤقتاً، وCursor CLI يقسم المحادثة بين مجلدها ونسخة transcript في المشروع — تنتقل المجموعة كلها معاً فلا تبقى بقايا في منتقي الجلسات الخاص بالـ agent. - مخرجات مناسبة للسكريبتات مع تحديثات صامتة: كل subcommand يدعم
--json. إشعارات الإصدار الجديد تتحقق مرة واحدة يومياً من GitHub وتظهر فقط في footer المتصفح أو على stderr — لا تدخل أبداً في مخرجات JSON أو الـ pipes. المتغيرWALLFACER_NO_UPDATE_CHECK=1يوقف هذا كلياً. - قابلية التوسع عبر adapter interface: الأنظمة الأربعة الحالية مبنية كـ adapters قابلة للتبديل. opencode مدرج في خارطة الطريق، وإضافة agents جديدة موثّقة في
docs/adding-an-agent.md.
التثبيت عبر Homebrew على macOS أو Linux:
brew tap pradipta/wallfacer https://github.com/pradipta/wallfacerbrew install pradipta/wallfacer/wallfacer
أو عبر Go مباشرة (يتطلب Go 1.22 أو أحدث): go install github.com/pradipta/wallfacer@latest. ملفات ثنائية جاهزة متاحة في صفحة الإصدارات.
خارطة الطريق تضم: إعداد agent مفضّل افتراضي بدل التحديد اليدوي في كل مرة، والبحث النصي الكامل عبر SQLite FTS5، وأمر wallfacer restore لاستعادة المحذوفات من CLI، وتصدير نصوص الجلسات إلى Markdown، وإحصاءات الاستخدام حسب المشروع والأسبوع وحجم التخزين على القرص، وتطبيق desktop بشريط جانبي ومحطة طرفية مدمجة باستخدام Wails وxterm.js فوق نفس الـ internals المكتوبة بـ Go. الاسم مستعار من رواية The Dark Forest لليو ثيشين — الـ Wallfacers أشخاص موكَل إليهم تنفيذ خطط بالغة التعقيد لا يستطيع أحد تتبّع خيوطها. التشابه مع إدارة عشرات المحادثات المتوازية مع أدوات AI ليس مصادفة.







