إسماعيل بن علا

CadQuery Agent

من النص أو الصورة إلى نموذج ثلاثي الأبعاد قابل للتعديل، محليًا

وكلاء ذكية · أكتوبر 2026 · قيد الإنجاز

صِف قطعة بالكلمات أو بصورة واحصل على نموذج ثلاثي الأبعاد قابل للتعديل.

التقنياتPythonFastAPICadQueryOllamaDockerThree.jsPodmanQwen2.5-Coder / Qwen2.5-VLpytest

CadQuery Agent — نظرة عامة

نظرة عامة

أدوات التحويل من النص إلى التصميم بمساعدة الحاسوب (CAD) تسلّمك عادةً شبكة مضلعات (mesh) لا يمكنك تعديلها، وكثيرًا ما ترسل أوامرك وصورك إلى نموذج مستضاف. أردت شيئًا مختلفًا: أداة تكتب كود Python حقيقيًا بلغة CadQuery، بحيث يبقى كل بُعد قابلًا للتعديل، وتعمل بالكامل على جهازي الخاص بنموذج مفتوح الأوزان.

بنيت CadQuery Studio، وهو منصة تشغيل محلية تحوّل وصفًا نصيًا أو صورة مرجعية أو كليهما إلى مصدر CadQuery ومعاينة ثلاثية الأبعاد تفاعلية وملفات STL/STEP. لا تتواصل إلا مع خادم نموذج على واجهة loopback (سواء Ollama أو خادم vLLM محلي)، وتُرفض عناوين URL لنقاط الوصول البعيدة أو المستضافة.

الجزء الصعب أن النموذج يكتب كودًا يُنفَّذ بعد ذلك. يمر كل نص برمجي أولًا بفحوصات ثابتة ثم يُشغَّل داخل حاوية معزولة عن الشبكة، للقراءة فقط، ومحدودة الموارد. ما زالت الهندسة المولَّدة تحتاج إلى مراجعة بشرية قبل التصنيع، لكن لأن المخرجات هي Python عادي وSTEP، فإن أي بُعد خاطئ يُصحَّح بسطر واحد بدل إعادة توليد كاملة.

السؤال

هل يستطيع نموذج محلي صغير توليد برامج تصميم بمساعدة الحاسوب (CAD) مفيدة وقابلة للتعديل، مع بقاء الكود المولَّد معزولًا وقابلًا للمراجعة وآمنًا للتنفيذ؟

أهم الميزات

كيف يعمل

  1. توجيه الأمر إلى النموذج المحلي

    يُرسَل النص والصورة الاختيارية إلى نموذج مفتوح الأوزان (مثل qwen2.5-coder أو qwen2.5vl) يُخدَّم على localhost، مع تعليمات بإرجاع كود Python بلغة CadQuery فقط يُسنِد جسمه النهائي إلى result.

  2. الفحوصات الثابتة

    يُحلَّل الكود المُرجَع بوحدة ast في Python ويُرفض إذا استورد أي شيء غير cadquery أو numpy، أو استدعى eval/exec/open، أو لم يبنِ cq.Workplane قط. تُعاد الأخطاء إلى النموذج في ما يصل إلى ثلاث محاولات.

  3. تصيير معزول

    تنفّذ حاوية عامل CadQuery/OpenCascade النص البرمجي المُتحقَّق منه بلا شبكة وبحدود موارد صارمة، ثم تصدّر الهندسة.

  4. المعاينة والمراجعة

    يعرض المتصفح النموذج ثلاثي الأبعاد ومصدره؛ وتتحول التغييرات بلغة طبيعية (Add part وChange وRemove part وEnhance) أو التعديلات المباشرة على الكود إلى مراجعات جديدة مُتحقَّق منها.

أمثلة

المدخل

Model output: import os result = os.getcwd()

المخرج

Rejected before execution: "import is not allowed: os" and "code must construct geometry with cq.Workplane(...)". The errors are appended to the prompt and the model is asked for a corrected script.

المدقق الثابت وهو يلتقط نصًا برمجيًا غير آمن، كما تختبره اختبارات المستودع.

المدخل

1. Create a 100 x 60 x 8 mm mounting plate. 2. Add four 6 mm holes, each 10 mm from the nearest corner. 3. Add a centered 24 mm diameter boss, 12 mm tall. 4. Cut an 8 mm through-hole through the boss and plate. 5. Add 3 mm fillets to the outside vertical edges.

المخرج

Five saved revisions, one per prompt, each with its own editable CadQuery source, 3D preview, and STL/STEP export. Selecting an earlier revision before the next prompt starts a new branch.

سير العمل خطوة بخطوة من ملف README لبناء قطعة أكثر تعقيدًا.

التقنيات المستخدمة

ما تعلمته

الحدود