سيرينا هي مجموعة أدوات وكيل ترميز قوية تحول نماذج اللغة الكبيرة (LLM) إلى وكيل كامل الوظائف يعمل مباشرة على قاعدة التعليمات البرمجية الخاصة بك.
تفاصيل مشروع سيرينا
نظرة عامة على المشروع
سيرينا هي مجموعة أدوات قوية لوكيل البرمجة الذكي، قادرة على تحويل نماذج اللغة الكبيرة (LLM) إلى وكلاء برمجة ذكية كاملة الوظائف، تعمل مباشرة على قاعدة التعليمات البرمجية الخاصة بك. تم تطوير هذا المشروع بواسطة Oraios AI وتم تقديمه كمصدر مفتوح لمجتمع المطورين.
الميزات الأساسية
🚀 القدرات الأساسية
- استرجاع التعليمات البرمجية الدلالية ووظائف التحرير: توفير قدرات مشابهة لـ IDE، واستخراج كيانات التعليمات البرمجية على مستوى الرموز والاستفادة من الهياكل العلائقية.
- مفتوح المصدر ومجاني بالكامل: تعزيز قدرات نماذج اللغة الكبيرة (LLM) الموجودة لديك دون أي تكلفة إضافية.
- طرق تكامل متعددة: دعم خادم MCP وإطار عمل Agno وتكامل إطار عمل الوكيل الذكي المخصص.
🔧 المزايا التقنية
- يعتمد على بروتوكول خادم اللغة (LSP): يوفر العديد من وظائف الاستعلام عن التعليمات البرمجية وتحريرها من خلال LSP المنفذ على نطاق واسع.
- فهم على مستوى الرموز: يعتمد على الفهم الرمزي للتعليمات البرمجية للاكتشاف والتحرير، تمامًا كما يفعل المطورون ذوو الخبرة باستخدام IDE.
- كفاءة ودقة عالية: حتى في المشاريع الكبيرة والمعقدة، يمكنه العثور بكفاءة على السياق الصحيح وتنفيذ العمليات الصحيحة.
لغات البرمجة المدعومة
دعم مباشر (جاهز للاستخدام)
- Python
- Java (ملاحظة: يبدأ ببطء، خاصة عند التشغيل الأول)
- TypeScript
يتم دعم هذه اللغات من خلال مكتبة خادم اللغة multilspy المستخدمة من قبل سيرينا.
طرق التكامل
1. بروتوكول سياق النموذج (MCP)
توفر سيرينا خادم MCP يمكن دمجه مع العملاء التاليين:
- Claude Desktop
- IDE (مثل VSCode و Cursor و IntelliJ)
- ملحقات (مثل Cline و Roo Code)
- Goose (يوفر تجربة CLI جيدة)
- والعديد من العملاء الآخرين، بما في ذلك تطبيق ChatGPT الذي سيتم دعمه قريبًا
2. إطار عمل Agno
من خلال Agno (إطار عمل الوكيل الذكي المستقل عن النموذج)، يمكن لسيرينا تحويل أي نموذج لغة كبير (LLM) تقريبًا إلى وكيل برمجة ذكي، يدعم:
- نماذج API المدفوعة التي تقدمها Google و OpenAI و Anthropic
- النماذج المجانية التي تقدمها Ollama و Together و Anyscale
3. إطار عمل الوكيل الذكي المخصص
يتم فصل تنفيذ أدوات سيرينا عن التعليمات البرمجية الخاصة بإطار العمل، مما يسهل تكييفها مع أي إطار عمل للوكيل الذكي.
حالات الاستخدام
يمكن استخدام سيرينا لأي مهمة برمجة، بما في ذلك:
- تحليل التعليمات البرمجية
- تخطيط المشروع
- تصميم مكونات جديدة
- إعادة هيكلة التعليمات البرمجية الحالية
- مهام البرمجة المستقلة الكاملة من التحليل الأولي إلى التنفيذ والاختبار، وأخيراً إلى إرسال نظام التحكم في الإصدار.
بداية سريعة
التثبيت الأساسي
- قم بتثبيت
uv
(راجع الوثائق الرسمية للحصول على تعليمات التثبيت) - استنساخ المستودع إلى
/path/to/serena
- انسخ
serena_config.template.yml
إلىserena_config.yml
واضبط الإعدادات - انسخ
myproject.template.yml
إلىmyproject.yml
واضبط الإعدادات الخاصة بالمشروع - إذا كنت بحاجة إلى تبديل المشاريع ديناميكيًا، فأضف جميع ملفات المشروع إلى قائمة
projects
فيserena_config.yml
تكامل Claude Desktop
- قم بإنشاء ملف تكوين المشروع
myproject.yml
- قم بتكوين خادم MCP في Claude Desktop:
- افتح File / Settings / Developer / MCP Servers / Edit Config
- في
claude_desktop_config.json
أضف:
{ "mcpServers": { "serena": { "command": "/abs/path/to/uv", "args": ["run", "--directory", "/abs/path/to/serena", "serena-mcp-server", "--project-file", "/abs/path/to/myproject.yml"] } } }
- احفظ التكوين وأعد تشغيل Claude Desktop
استخدام Goose CLI
- قم بتثبيت goose
- استخدم
goose configure
لإضافة ملحق - حدد "Command-line Extension"، وقم بتسميته "Serena"
- أضف الأمر:
/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml
- قم بتعطيل ملحق
developer
الافتراضي
استخدام Agno GUI
- قم بتنزيل كود agent-ui:
npx create-agent-ui@latest
- قم بتثبيت Serena:
uv pip install --all-extras -r pyproject.toml -e .
- انسخ
.env.example
إلى.env
واملأ مفتاح API - ابدأ تشغيل وكيل Agno:
uv run python scripts/agno_agent.py
- ابدأ تشغيل UI:
cd agent-ui && pnpm dev
الأدوات والتكوين
فئات الأدوات الرئيسية
- أدوات استرجاع التعليمات البرمجية الدلالية: البحث عن الرموز والمراجع ومقتطفات التعليمات البرمجية
- أدوات تحرير التعليمات البرمجية: إدراج واستبدال وحذف التعليمات البرمجية
- عمليات نظام الملفات: قراءة وإنشاء وإدراج الملفات والمجلدات
- تنفيذ Shell: تنفيذ أوامر shell
- إدارة المشاريع: تفعيل المشاريع، والتوجيه، وإدارة الذاكرة
اعتبارات السلامة
- عادة ما يوصى باستخدام جميع الأدوات لتوفير أقصى قيمة
- تسمح أداة
execute_shell_command
بتنفيذ تعليمات برمجية عشوائية، ويجب استخدامها بحذر - يمكن تعطيل أوامر معينة في ملف تكوين المشروع
- دعم وضع القراءة فقط (
read_only: true
)، يسمح فقط بالتحليل والاقتراحات، ولا يعدل قاعدة التعليمات البرمجية
مقارنة مع وكلاء البرمجة الذكية الآخرين
مقارنة بالوكلاء الذكيين القائمين على الاشتراك (Windsurf و Cursor و VSCode)
المزايا:
- لا توجد رسوم اشتراك
- لا يرتبط بـ IDE معين
- لا يرتبط بنموذج لغة كبير أو API معين
- يستخدم خادم اللغة لفهم التعليمات البرمجية على مستوى الرموز
- مفتوح المصدر وقاعدة التعليمات البرمجية صغيرة، سهلة التوسيع والتعديل
العيوب:
- لا يتم دمجه مباشرة في IDE، وفحص التعليمات البرمجية الجديدة ليس سلسًا مثل الأدوات المضمنة في IDE
مقارنة بالوكلاء الذكيين القائمين على API (Claude Code و Cline و Aider)
المزايا:
- يمكن استخدامه كخادم MCP، ولا يتطلب مفتاح API، وتجنب رسوم API
- هذه ميزة فريدة لسيرينا
أوجه التشابه:
- يمكن استخدام كلاهما كوكيل ذكي أساسي لـ API
- كلاهما قويان، والعيب الرئيسي هو رسوم API المحتملة العالية
مقارنة بخوادم MCP الأخرى
- على حد علمنا، لا توفر خوادم MCP الأخرى المتعلقة بالبرمجة (مثل DesktopCommander و codemcp) أدوات استرجاع التعليمات البرمجية الدلالية وتحريرها
- يعتمدون على التحليل النصي البحت
- إن تكامل سيرينا لخادم اللغة و MCP يجعلها فريدة وقوية في التعامل مع مهام البرمجة الصعبة في قواعد التعليمات البرمجية الكبيرة
التوجيه ونظام الذاكرة
التوجيه
- بشكل افتراضي، تنفذ سيرينا عملية التوجيه عند بدء التشغيل لأول مرة لمشروع ما
- الهدف هو تعريف سيرينا بالمشروع وتخزين الذاكرة لاستخدامها في التفاعلات المستقبلية
نظام الذاكرة
- يتم تخزين ملفات الذاكرة في
.serena/memories/
في دليل المشروع - يمكن للوكيل الذكي اختيار قراءة هذه الملفات
- يمكن للمستخدمين قراءة وتعديل ملفات الذاكرة حسب الحاجة، أو إضافة ملفات ذاكرة جديدة يدويًا
- يحسن نظام الذاكرة بشكل كبير تجربة المستخدم مع سيرينا
اقتراحات الاستخدام
اختيار النموذج
- يبدو أن الإصدار غير المفكر من Claude 3.7 يعمل بشكل أفضل من الإصدار المفكر
- أظهر Gemini أداءً جيدًا في التجارب الأولية، لكنه لا يدعم MCP حتى الآن
- Gemini رخيص نسبيًا ويمكنه التعامل مع أطوال سياق هائلة
أفضل الممارسات
- التحكم في الإصدار: من الأفضل البدء في مهام إنشاء التعليمات البرمجية من حالة git نظيفة
- تكوين Windows: قم بتعيين
git config --global core.autocrlf true
على Windows - هيكل التعليمات البرمجية: استخدم تعليمات برمجية جيدة التنظيم ومعيارية ومكتوبة
- الاختبار والتسجيل: قم بتضمين معلومات تسجيل مفصلة واختبارات ذات مغزى
- التخطيط أولاً: بالنسبة للمهام المعقدة، قم أولاً بوضع المفاهيم والتخطيط
- إدارة السياق: يمكن إنشاء ملخصات ومتابعة في محادثات جديدة للمهام الطويلة
قائمة الأدوات الكاملة
فيما يلي قائمة كاملة بجميع أدوات سيرينا:
activate_project
: تفعيل المشروع بالاسمcheck_onboarding_performed
: التحقق مما إذا كان قد تم تنفيذ التوجيهcreate_text_file
: إنشاء / الكتابة فوق ملف في دليل المشروعdelete_lines
: حذف نطاق من الأسطر في ملفdelete_memory
: حذف ذاكرة من تخزين الذاكرة الخاص بالمشروع في سيريناexecute_shell_command
: تنفيذ أمر shellfind_referencing_code_snippets
: البحث عن مقتطفات التعليمات البرمجية التي تشير إلى رمز في موقع معينfind_referencing_symbols
: البحث عن الرموز التي تشير إلى رمز في موقع معينfind_symbol
: تنفيذ بحث رمزي عالمي (أو محلي)get_active_project
: الحصول على اسم المشروع النشط حاليًاget_symbols_overview
: الحصول على نظرة عامة على الرموز ذات المستوى الأعلى في ملف أو دليلinsert_after_symbol
: إدراج محتوى بعد نهاية تعريف الرمزinsert_at_line
: إدراج محتوى في سطر معين من الملفinsert_before_symbol
: إدراج محتوى قبل بداية تعريف الرمزlist_dir
: سرد الملفات والمجلدات في دليلlist_memories
: سرد الذكريات في تخزين الذاكرةonboarding
: تنفيذ التوجيهprepare_for_new_conversation
: الاستعداد لمحادثة جديدةread_file
: قراءة ملف في دليل المشروعread_memory
: قراءة ذاكرة بالاسم المحددreplace_lines
: استبدال نطاق من الأسطر في ملف بمحتوى جديدreplace_symbol_body
: استبدال التعريف الكامل للرمزrestart_language_server
: إعادة تشغيل خادم اللغةsearch_for_pattern
: البحث عن نمط في المشروعsummarize_changes
: تقديم ملخص للتغييرات في قاعدة التعليمات البرمجيةthink_about_collected_information
: أداة تفكير، تستخدم للنظر في اكتمال المعلومات التي تم جمعهاthink_about_task_adherence
: أداة تفكير، تستخدم لتحديد ما إذا كان الوكيل الذكي لا يزال على المسار الصحيح للمهمة الحاليةthink_about_whether_you_are_done
: أداة تفكير، تستخدم لتحديد ما إذا كانت المهمة قد اكتملت حقًاwrite_memory
: كتابة ذاكرة مسماة في تخزين الذاكرة للرجوع إليها في المستقبل
ملخص
سيرينا هي مجموعة أدوات قوية ومفتوحة المصدر بالكامل لوكيل البرمجة الذكي، من خلال الفهم الدلالي للتعليمات البرمجية وطرق التكامل المتعددة، توفر للمطورين حلاً مجانيًا وقويًا لمساعد البرمجة بالذكاء الاصطناعي. سواء كان ذلك من خلال خادم MCP المدمج مع Claude Desktop، أو من خلال إطار عمل Agno باستخدام نماذج اللغة الكبيرة (LLM) المختلفة، يمكن لسيرينا تحسين كفاءة البرمجة وجودة التعليمات البرمجية بشكل كبير.