/ الدليل / الملعب / Serena
● مجتمع oraios ⚡ فوري

Serena

بواسطة oraios · oraios/serena

تقوم سيرينا بتثبيت البحث الدلالي المدعوم من خادم اللغة والتحريرات الرمزية على وكيلك - لذا فإن إعادة التسمية/إعادة البناء/البحث عن المراجع تعمل فعليًا عبر قواعد تعليمات برمجية ضخمة.

سيرينا هي "IDE" لوكيلك. بدلاً من التقاط الملفات والصلاة، فإنه يستخدم واجهات LSP الخلفية الحقيقية لأكثر من 40 لغة للإجابة على الأسئلة على مستوى الرمز: "أين تسمى هذه الوظيفة؟"، "ما هو التسلسل الهرمي للنوع؟"، "أعد تسمية هذا الرمز في كل مكان يتم استخدامه فيه". ثم يقوم بعد ذلك بشحن أدوات تحرير رمزية حتى يتمكن الوكيل من استبدال نص الوظيفة، أو حذف رمز بأمان، أو إدراج رمز يتعلق بعقدة AST. يحافظ نظام الذاكرة على السياق عبر الجلسات، ويستأنف كلود من حيث توقف في الأسبوع الماضي.

لماذا تستخدمه

الميزات الأساسية

عرض مباشر

كيف يبدو في الممارسة

serena.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "serena-agent",
        "serena",
        "start-mcp-server",
        "--context=claude-desktop"
      ]
    }
  }
}

افتح Claude Desktop → Settings → Developer → Edit Config. أعد التشغيل بعد الحفظ.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "serena-agent",
        "serena",
        "start-mcp-server",
        "--context=claude-desktop"
      ]
    }
  }
}

يستخدم Cursor نفس مخطط mcpServers مثل Claude Desktop. إعدادات المشروع أولى من الإعدادات العامة.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "serena-agent",
        "serena",
        "start-mcp-server",
        "--context=claude-desktop"
      ]
    }
  }
}

انقر على أيقونة MCP Servers في شريط Cline الجانبي، ثم "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "serena": {
      "command": "uvx",
      "args": [
        "--from",
        "serena-agent",
        "serena",
        "start-mcp-server",
        "--context=claude-desktop"
      ]
    }
  }
}

نفس الصيغة مثل Claude Desktop. أعد تشغيل Windsurf لتطبيق التغييرات.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "serena",
      "command": "uvx",
      "args": [
        "--from",
        "serena-agent",
        "serena",
        "start-mcp-server",
        "--context=claude-desktop"
      ]
    }
  ]
}

يستخدم Continue مصفوفة من كائنات الخادم بدلاً من خريطة.

~/.config/zed/settings.json
{
  "context_servers": {
    "serena": {
      "command": {
        "path": "uvx",
        "args": [
          "--from",
          "serena-agent",
          "serena",
          "start-mcp-server",
          "--context=claude-desktop"
        ]
      }
    }
  }
}

أضف إلى context_servers. يعيد Zed التحميل تلقائيًا عند الحفظ.

claude mcp add serena -- uvx --from serena-agent serena start-mcp-server --context=claude-desktop

أمر من سطر واحد. تحقق باستخدام claude mcp list. احذف باستخدام claude mcp remove.

حالات الاستخدام

استخدامات عملية: Serena

ابحث عن كل المتصل بالوظيفة عبر قاعدة بيانات مكونة من مليون سطر

👤 المهندسون الذين يعملون في اتفاقيات إعادة الشراء الناضجة والكبيرة ⏱ ~10 min intermediate

متى تستخدمه: أنت بحاجة إلى قائمة كاملة وصحيحة من المتصلين — يعطي grep نتائج إيجابية كاذبة (التعليقات والسلاسل والوظائف ذات الأسماء المشابهة في نطاقات أخرى) ويفتقد الأحمال الزائدة.

المتطلبات الأساسية
  • تم تثبيت الأشعة فوق البنفسجية — حليقة -LsSf https://astral.sh/uv/install.sh | ش
  • تم افتتاح المشروع باللغة التي يدعمها برنامج LSP التابع لشركة Serena — تعمل معظم اللغات السائدة خارج الصندوق
الخطوات
  1. افتح المشروع
    افتح /abs/path/to/repo مع سيرينا. تأكد من بناء فهرس LSP.✓ تم النسخ
    → تقوم سيرينا بالإبلاغ عن جذر المشروع وLSP الذي تم تحميله
  2. البحث عن مراجع الرمز
    ابحث عن كل موقع اتصال تابع لـ PaymentService.chargeCustomer. قم بتضمين الأحمال الزائدة والتجاوزات، واستبعاد الاختبارات.✓ تم النسخ
    → الملف الدقيق: قائمة الأسطر، لا توجد نتائج إيجابية كاذبة من التعليقات/السلاسل
  3. تلخيص التأثير
    تجميع مواقع الاتصال حسب الوحدة النمطية. بالنسبة لكل مجموعة، أخبرني بما يفعله المتصل بقيمة الإرجاع.✓ تم النسخ
    → سرد مجمع على الوحدات النمطية، وليس قائمة مسطحة

النتيجة: أنت تعرف بالضبط ما الذي سيمسه التغيير - قبل أن تلمسه.

المزالق
  • تحتاج بعض عمليات إعادة الشراء متعددة اللغات إلى LSPs متعددة — ابدأ تشغيل Serena لكل مشروع فرعي إذا كانت اللغات لا تشترك في الخادم
اجمعها مع: filesystem · github

إعادة تسمية رمز API العام دون فصل المعالين

👤 مشرفو المكتبة/الإطار ⏱ ~15 min intermediate

متى تستخدمه: أنت تقوم بإعادة تسمية وظيفة أو فئة يمكن استخدامها خارج الملف - تحتاج إلى إعادة تسمية دقيقة لـ LSP، وليس استبدال النص.

المتطلبات الأساسية
  • شجرة جيت نظيفة — حالة git نظيفة حتى تتمكن من مراجعة الفرق قبل الالتزام
الخطوات
  1. قم بتشغيل عملية إعادة التسمية الجافة
    أعد تسمية "getUser" إلى "fetchUserById" في src/api/users.ts. استخدم إعادة تسمية سيرينا الرمزية. قم بمعاينة الفرق - لا تطبقه بعد.✓ تم النسخ
    → معاينة الفرق عبر كل ملف متأثر
  2. قم بالمراجعة والتطبيق
    تطبيق إعادة التسمية. أخبرني بأي ملف وضعت سيرينا عليه علامة غامضة.✓ تم النسخ
    → تم تطبيق إعادة التسمية، قائمة الغموض (إن وجدت)
  3. قم بتشغيل الجناح
    قم بإجراء الاختبارات والإبلاغ عن حالات الفشل، مع التركيز على أي شيء يشير إلى الاسم القديم.✓ تم النسخ
    → الاختبارات باللون الأخضر، أو قائمة الفشل الدقيقة

النتيجة: تكون عملية إعادة التسمية نظيفة عبر الريبو، بما في ذلك عمليات إعادة التصدير العامة وبراميل Index.ts ومراجع JSDoc التي لا معنى لها.

المزالق
  • لم يتم اكتشاف الوصول الديناميكي (obj['getUser']) عن طريق إعادة تسمية LSP — بعد إعادة التسمية الرمزية، قم بإجراء grep واحد لسلسلة الاسم القديم؛ تظهر سيرينا كل ما لا يمكن حله بشكل ثابت
اجمعها مع: filesystem · git

استبدل نص الوظيفة دون إزعاج التعليمات البرمجية المحيطة

👤 يقوم المهندسون بإجراء تعديلات جراحية داخل ملفات كبيرة ⏱ ~10 min intermediate

متى تستخدمه: تريد إعادة كتابة تنفيذ "calculatePrice" مع الاحتفاظ بتوقيعه وJSDoc تمامًا. إن تجديد الملف بالكامل هو الأداة الخاطئة.

الخطوات
  1. استهدف الرمز
    في src/billing/pricing.ts، ابحث عن "حساب السعر". أرني النص الحالي فقط (وليس التوقيع أو المستند).✓ تم النسخ
    → مقتطف للجسم فقط
  2. استبدل الجسم
    استبدل النص فقط بإصدار يتعامل مع حالة الإعفاء من الضرائب. احتفظ بالتوقيع وJSDoc سليمين.✓ تم النسخ
    → يتم استخدام أداة استبدال الجسم الخاصة بسيرينا. التوقيع دون تغيير في الفرق

النتيجة: اختلاف بسيط وقابل للمراجعة - لا توجد مسافات بيضاء عرضية/تغيير في التنسيق.

المزالق
  • يعود الوكيل إلى كتابة الملف بالكامل — توجيه صراحة إلى "استخدام الاستبدال الرمزي لسيرينا، وليس ملف write_file"
اجمعها مع: filesystem

على متن الطائرة إلى قاعدة بيانات غير مألوفة في غضون ساعة

👤 الموظفون الجدد أو المقاولون أو المساهمين في OSS ⏱ ~60 min beginner

متى تستخدمه: لقد قمت للتو باستنساخ 500 ملف من الريبو وتحتاج إلى خريطة ذهنية قبل أن تتمكن من المساهمة.

الخطوات
  1. احصل على الهندسة المعمارية
    افتح هذا الريبو مع سيرينا. أنشئ خريطة: الوحدات عالية المستوى وصادراتها العامة ونقطة الدخول الرئيسية. احفظ في ذاكرة سيرينا باسم "arch_overview".✓ تم النسخ
    → نظرة عامة منظمة؛ تم إنشاء مذكرة الذاكرة
  2. اتبع طلب المستخدم
    تتبع ما يحدث عندما يقوم المستخدم بالضغط على POST /orders. اطلعني على كل ملف بالترتيب.✓ تم النسخ
    → طلب → معالج → خدمة → مسار الريبو، مع عمليات البحث المرجعية لسيرينا
  3. لاحظ مسكتك
    احفظ أي أنماط تبدو غير عادية (زخارف مخصصة، ثوابت سحرية) في الذاكرة باسم "مسكتك".✓ تم النسخ
    → ملاحظة الذاكرة المحفوظة للجلسة القادمة

النتيجة: في الجلسة التالية، يعرف كلود الخريطة بالفعل - دون أي تكلفة لإعادة الصعود.

اجمعها مع: filesystem · github

التركيبات

اجمعها مع خوادم MCP أخرى لتحقيق نتائج x10

serena + filesystem

Serena للتنقل مع مراعاة الرموز + نظام الملفات للإدخال/الإخراج التعسفي

استخدم Serena للعثور على وحدة المصادقة، ثم نظام الملفات لكتابة ملف README جديد لهذا المجلد.✓ تم النسخ
serena + github

إعادة البناء محليًا مع سيرينا؛ ادفع فرعًا وافتح PR عبر GitHub MCP

أعد تسمية ApiClient → HttpClient باستخدام Serena، ثم افتح PR بعنوان "refactor(api): rename ApiClient".✓ تم النسخ
serena + git

قم بمراجعة الفرق الذي أنتجته سيرينا قبل الالتزام

أرني git diff بعد إعادة تسمية سيرينا. أي شيء مريب، أبلغ عنه قبل أن نلتزم به.✓ تم النسخ
serena + context7

عامل إعادة البناء المتوافق مع المكتبة — Serena للتحركات المحلية، وContext7 لمطابقة واجهات برمجة التطبيقات v-next

قم بترحيل هذا الملف إلى أنماط Next.js 15. استخدم context7 لواجهات برمجة التطبيقات الجديدة وسيرينا لتطبيق التغييرات بشكل رمزي.✓ تم النسخ

الأدوات

ما يوفره هذا الـ MCP

الأداةالمدخلاتمتى تستدعيهاالتكلفة
find_symbol name: str, scope?: str حدد موقع فئة/وظيفة/var بالاسم بدقة LSP free (local)
find_references symbol: ref جميع المتصلين/استخدامات الرمز؛ أفضل بكثير من grep free
get_symbols_overview path: str الخطوط العريضة للملف/الوحدة قبل تحديد ما يجب قراءته free
rename_symbol symbol: ref, new_name: str, dryRun?: bool إعادة تسمية آمنة عبر المشروع بأكمله free
replace_symbol_body symbol: ref, new_body: str قم بتبديل نص الوظيفة/الطريقة في مكانه دون لمس التوقيع free
insert_before_symbol / insert_after_symbol symbol: ref, code: str قم بإضافة أدوات تزيين أو استيراد أو إعلانات شقيقة مرتبطة بعقدة AST free
move_file / move_dir src: str, dst: str قم بنقل التعليمات البرمجية والسماح لمزود الخدمة LSP بإصلاح كل مستورد free
write_memory / read_memory key: str, value?: str استمرار سياق المشروع (خريطة الهندسة المعمارية، مسكتك) عبر الجلسات free
search_pattern regex: str, path: str الإجراء الاحتياطي عندما لا يكون الهدف رمزًا مسمى (سلسلة حرفية، أنماط) free

التكلفة والحدود

تكلفة التشغيل

حصة API
لا شيء - LSP المحلي
الرموز لكل استدعاء
صغير - تقوم Serena بإرجاع مقتطفات ذات نطاق رمزي، وليس ملفات كاملة
التكلفة المالية
حر
نصيحة
تفضل get_symbols_overview + find_symbol على read_text_file في الملفات الكبيرة - فأنت تنفق 10x أقل من الرموز المميزة وتحصل على إشارة أفضل

الأمان

الصلاحيات والأسرار ونطاق الأثر

تخزين بيانات الاعتماد: لا شيء - كل شيء يعمل محليًا
نقل البيانات الخارجي: لا شيء افتراضيا. تستطيع سيرينا تشغيل أوامر الصدفة (تعطيل)؛ قم بمراجعة قائمة الأدوات قبل منح حق الوصول للكتابة في Claude.
لا تمنح أبدًا: Access to directories outside your project

استكشاف الأخطاء

الأخطاء الشائعة وحلولها

فشل LSP في البدء / لم يتم العثور على أي رموز

تحقق من تثبيت خادم اللغة للغة المشروع (على سبيل المثال، pyright لـ Python، وtypescript-language-server لـ TS). تسرد سجلات Serena اسم LSP الذي تستخدمه.

تحقق: Run Serena in verbose mode; confirm LSP handshake succeeded
إعادة تسمية تخطي بعض الملفات

يعني عادةً أن الملفات ليست موجودة في مساحة عمل LSP. تأكد من أن جذر المشروع هو جذر monorepo، وليس حزمة فرعية.

تحقق: Ask Serena to list its workspace roots
يعود العامل إلى عمليات كتابة الملفات الأولية بدلاً من أدوات Serena

ضع قاعدة واضحة في CLAUDE.md: 'بالنسبة للعمليات الرمزية، استخدم دائمًا أدوات سيرينا؛ لا تكتب أبدًا ملفًا على ملفات .py/.ts الموجودة

تحقق: Re-run the task; inspect tool_use calls in the trace
uvx: لم يتم العثور على الأمر

قم بتثبيت الأشعة فوق البنفسجية أولاً: curl -LsSf https://astral.sh/uv/install.sh | ش؛ ثم أعد فتح المحطة الخاصة بك

تحقق: uvx --version

البدائل

Serena مقابل البدائل

البديلمتى تستخدمهاالمقايضة
JetBrains MCPأنت تعيش بالفعل في JetBrains IDE وتريد أن يقوم الوكيل بتشغيل أدوات إعادة البناء الخاصة بهيتطلب عملية IDE مفتوحة. أثقل
filesystemلا تحتاج إلى الوعي بالرموز — فقط قم بقراءة/كتابة الملفاتلا يوجد بحث دلالي أو إعادة تسمية آمنة
mcp-language-serverتريد غلافًا أصغر لـ LSP فقط، وليس ذاكرة Serena + طبقة الغلافعدد أقل من الأدوات عالية المستوى؛ تقوم بتكوين سير العمل بنفسك

المزيد

الموارد

📖 اقرأ ملف README الرسمي على GitHub

🐙 تصفح القضايا المفتوحة

🔍 تصفح أكثر من 400 خادم MCP و Skills