تخطَّ إلى المحتوى

لمستخدمي Cursor

Cursor يحرِّر الملف.
Maguyva ترى المستودع.

Cursor هو المحرِّر. في المستودع الأحادي، ما يزال الوكيل يحتاج إلى خريطة توضّح أي ملف يهم. تفهرس Maguyva قاعدة الكود لديك وتعيدها عبر MCP (دلاليًا، وAST، ورسم بيانيًا، ونصيًا)، لذا يعيد سؤال «أين تحدث المصادقة» تدفق المصادقة الفعلي، لا سبع نسخ اختبارية وهمية.

خطة Free: 3 مستودعات, حتى 50 ألف سطر مُفهرَس من المستودع، بلا بطاقة.

Cursor يحرِّر ما تشير إليه. Maguyva تخبر الوكيل بالملف الذي يجب الإشارة إليه.

ما تقوم به كل طبقة

أربع قطع. لكل واحدة مهمتها.

‏// المحرِّر

Cursor

حيث تكتب الكود فعليًا.

‏// السياق اليدوي

إشارات @ + التثبيت

السياق اليدوي يفوز، إلى أن يكبر المستودع.

‏// قاعدة الكود

Maguyva

حقائق تلقائية عن قاعدة الكود عبر MCP.

Cursor هو المحرِّر. استخدمه.

بيئة التطوير ليست هي المشكلة. الإكمال التلقائي عبر Tab في Cursor، وedit-with-AI، والتحرير متعدد الملفات، و.cursor/rules كلها ممتازة، وأنت بالفعل تستخدمها من أجل:

  • الاقتراحات المضمَّنة وedit-with-AI في الملف المفتوح.
  • التحرير متعدد الملفات حين يكون التغيير محليًا.
  • .cursor/rules لأعراف المستودع وضوابط الأسلوب.
  • إشارات @ لسحب ملف محدَّد إلى السياق.

واصل فعل ذلك. لا شيء منه يختفي.

لكن في مستودع أحادي حقيقي (TypeScript بتبعيات مساحة العمل، وخدمات Python، وحزم مختلطة) ينهار سياق الوكيل بمجرد أن يخرج الملف المعني عن رادارك بالفعل.

إصلاحات يدوية جرّبتها من قبل، وأين تتعطّل

أربعة إصلاحات يدوية، مقترنة بنمط تعطّلها. اليسار = ما تفعله اليوم. اليمين = أين يتعطّل.

// the fix

‏// ثبِّت الملفات

تُشير بـ@ إلى الملفات الثلاثة التي تظن أنها مهمة. يحرِّر Cursor بدقة داخلها.

// where it breaks

‏// التثبيت تخمين

يعمل التثبيت حين تعرف مسبقًا أي الملفات معنيّة. الغاية الكاملة من أدوات السياق هي إظهار الملفات التي لم تكن تعرف أن تثبِّتها.

// the fix

‏// الصق المقتطفات

تلصق 200 سطر من حزمة أخرى في المحادثة لتمنح الوكيل سياقًا كافيًا.

// where it breaks

‏// الكود المُلصَق يصبح قديمًا

المقتطف الذي ألصقته الساعة 9 صباحًا لا يعكس عملية rebase التي أنجزها زميلك الساعة 11 صباحًا. الوكيل يحرِّر على نسخة وهمية من الحزمة.

// the fix

‏// اكتب وثيقة سياق

تكتب ملف .cursor/rules أو وثيقة معمارية بصيغة markdown. تكون صحيحة اليوم.

// where it breaks

‏// الوثائق تنحرف أسرع من الكود

أي شيء تكتبه يدويًا ينحرف عن الواقع. الكود هو مصدر الحقيقة. وثيقة تشرح طبقة قائمة الانتظار تكون صحيحة لأسبوع، ثم خاطئة إلى الأبد.

// the fix

‏// أبقِ ملفات القواعد

تضيف .cursor/rules للتسمية والـlint وأوامر البناء. ممتاز للسلوك.

// where it breaks

‏// القواعد ≠ الفهرس

.cursor/rules هو المكان الصحيح لـ“شغِّل دائمًا pnpm tsc -b قبل الالتزامات”. إنه ليس فهرسًا قابلًا للاستعلام عن كل رمز وملف وموقع استدعاء في مستودعك الأحادي.

Maguyva هي الطبقة التي تكمن تحت

ليست بديلًا عن Cursor. طبقة سياق المستودع التي تتصل بدعم MCP في Cursor.

  • دلالي + AST + رسم بياني + نصي بحث بالمعنى، أو البنية، أو التبعية، أو النص الحرفي. كل نتيجة تُرجع مسار ملف ورقم سطر.
  • عابر للحزم افتراضيًا مواقع الاستدعاء والمستوردون عبر كل حزمة في المستودع الأحادي، لا الحزمة المفتوحة حاليًا فقط.
  • واعٍ بالفرع ترى Maguyva نسخة الكود التي يحرِّرها Cursor.
  • مكمِّلة لا منافِسة.cursor/rules تواصل أداء مهمتها. إشارات @ تواصل أداء مهمتها. Maguyva تسدّ الثغرة التي لا تسدّها هي.

Cursor يحرِّر الملف الذي تشير إليه.

Maguyva تخبر الوكيل بالملف الذي يجب الإشارة إليه.

ثلاثة تدفقات عمل في المستودع الأحادي

عابر للحزم، وعابر للغات. مؤسَّس على الرسم البياني الفعلي للاستدعاءات، لا على grep الخاصة بـCursor.

// workflow 01

إيجاد تدفق المصادقة عبر الحزم، بلا تثبيت أي شيء

cursor> أين تحدث المصادقة في هذا المستودع الأحادي؟

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       middleware
  packages/api/src/auth/jwt.ts:88           token verify
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  rbac gate

 4 نقاط دخول عبر 4 حزم، مرتَّبة حسب كثافة مواقع الاستدعاء.
[exit 0]

لم تثبِّت ملفًا. لم تلصق مقتطفًا. لدى الوكيل الملفات الأربعة المهمة، بالترتيب الصحيح، ويمكنه إجراء تعديل مؤسَّس.

// workflow 02

إيجاد التنفيذ الحقيقي، لا البديل الاختباري

cursor> كيف تتعامل normalizePhoneNumber مع E.164؟

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← التنفيذ الحقيقي
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← بديل اختباري
[exit 0]

الأسماء تكذب. المحاكيات تحجب الكود الحقيقي. تُرتِّب Maguyva التنفيذ الحقيقي فوق محاكي الاختبار، عبر كل حزمة.

// workflow 03

تحقّق من نطاق التأثير قبل إعادة الهيكلة

cursor> ما الذي يستدعي QueueDispatcher.publish عبر المستودع الأحادي؟

graph::callers(QueueDispatcher.publish)
  3 في packages/billing/*
  1 في packages/audit/*
  1 في packages/notifications/*
  1 في services/python-worker/*  ← عابر للغات عبر بديل gRPC
[exit 0]

عابر للحزم، وعابر للغات عندما يكون لديك مستودع متعدد اللغات، تظهر مواقع الاستدعاء ضمن السياق. الفرق مؤسَّس على مستوردين حقيقيين، لا على grep الخاصة بـCursor.

الإعداد مع Cursor

ثلاث خطوات. خطة Free: 3 مستودعات, حتى 50 ألف سطر مُفهرَس من المستودع، بلا بطاقة.

  1. // step 01

    افهرس مستودعًا على maguyva.ai

    اختر المستودع الأحادي الذي شعرت فيه بأكبر ألم في السياق.

  2. // step 02

    أضف Maguyva كخادم MCP في إعدادات Cursor

    // ~/.cursor/mcp.json
    {
      "mcpServers": {
        "maguyva": {
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer <your-key>"
          }
        }
      }
    }
  3. // step 03

    اطرح سؤالًا واحدًا تعرف إجابته مسبقًا

    لا تبدأ بشركتك بأكملها. ابدأ بمستودع واحد وسؤال واحد يمكن التحقق منه، مثل «ما الذي يستدعي formatInvoice عبر الحزم؟»