CadQuery Agent
من النص أو الصورة إلى نموذج ثلاثي الأبعاد قابل للتعديل، محليًا
صِف قطعة بالكلمات أو بصورة واحصل على نموذج ثلاثي الأبعاد قابل للتعديل.
التقنياتPython
FastAPICadQuery
Ollama
Docker
Three.js
PodmanQwen2.5-Coder / Qwen2.5-VL
pytest

نظرة عامة
أدوات التحويل من النص إلى التصميم بمساعدة الحاسوب (CAD) تسلّمك عادةً شبكة مضلعات (mesh) لا يمكنك تعديلها، وكثيرًا ما ترسل أوامرك وصورك إلى نموذج مستضاف. أردت شيئًا مختلفًا: أداة تكتب كود Python حقيقيًا بلغة CadQuery، بحيث يبقى كل بُعد قابلًا للتعديل، وتعمل بالكامل على جهازي الخاص بنموذج مفتوح الأوزان.
بنيت CadQuery Studio، وهو منصة تشغيل محلية تحوّل وصفًا نصيًا أو صورة مرجعية أو كليهما إلى مصدر CadQuery ومعاينة ثلاثية الأبعاد تفاعلية وملفات STL/STEP. لا تتواصل إلا مع خادم نموذج على واجهة loopback (سواء Ollama أو خادم vLLM محلي)، وتُرفض عناوين URL لنقاط الوصول البعيدة أو المستضافة.
الجزء الصعب أن النموذج يكتب كودًا يُنفَّذ بعد ذلك. يمر كل نص برمجي أولًا بفحوصات ثابتة ثم يُشغَّل داخل حاوية معزولة عن الشبكة، للقراءة فقط، ومحدودة الموارد. ما زالت الهندسة المولَّدة تحتاج إلى مراجعة بشرية قبل التصنيع، لكن لأن المخرجات هي Python عادي وSTEP، فإن أي بُعد خاطئ يُصحَّح بسطر واحد بدل إعادة توليد كاملة.
السؤال
هل يستطيع نموذج محلي صغير توليد برامج تصميم بمساعدة الحاسوب (CAD) مفيدة وقابلة للتعديل، مع بقاء الكود المولَّد معزولًا وقابلًا للمراجعة وآمنًا للتنفيذ؟
أهم الميزات
- يقبل أمرًا نصيًا، أو صورة مرجعية بصيغة PNG/JPEG/WebP مع نص، أو كليهما، عبر نقطة وصول دردشة محلية متوافقة مع واجهة OpenAI.
- يفحص كل نص برمجي مولَّد فحصًا ثابتًا قبل التنفيذ، فيمنع الاستيرادات غير التابعة لـ CadQuery، والوصول إلى الملفات والشبكة، وتنفيذ الكود الديناميكي.
- يشغّل الكود في عامل (worker) داخل Docker أو Podman بدون صلاحيات الجذر، بلا شبكة، وبنظام ملفات للقراءة فقط، مع إسقاط صلاحيات Linux، وحدود على المعالج والذاكرة والعمليات والوقت.
- يعرض معاينة Three.js تفاعلية إلى جانب مصدر Python الكامل القابل للتعديل، مع تنزيل STL وSTEP.
- يحفظ كل مشروع على هيئة مراجعات غير قابلة للتغيير، بحيث يمكن بناء الجسم أمرًا بعد أمر، ويمكن لأي مراجعة أقدم أن تصبح أساسًا لفرع جديد.
- يطلب من النموذج تلقائيًا إصلاح بعض أخطاء التشغيل في CadQuery، ولا تستبدل أي خطوة فاشلة آخر مراجعة صالحة أبدًا.
كيف يعمل
توجيه الأمر إلى النموذج المحلي
يُرسَل النص والصورة الاختيارية إلى نموذج مفتوح الأوزان (مثل qwen2.5-coder أو qwen2.5vl) يُخدَّم على localhost، مع تعليمات بإرجاع كود Python بلغة CadQuery فقط يُسنِد جسمه النهائي إلى result.
الفحوصات الثابتة
يُحلَّل الكود المُرجَع بوحدة ast في Python ويُرفض إذا استورد أي شيء غير cadquery أو numpy، أو استدعى eval/exec/open، أو لم يبنِ cq.Workplane قط. تُعاد الأخطاء إلى النموذج في ما يصل إلى ثلاث محاولات.
تصيير معزول
تنفّذ حاوية عامل CadQuery/OpenCascade النص البرمجي المُتحقَّق منه بلا شبكة وبحدود موارد صارمة، ثم تصدّر الهندسة.
المعاينة والمراجعة
يعرض المتصفح النموذج ثلاثي الأبعاد ومصدره؛ وتتحول التغييرات بلغة طبيعية (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.
التقنيات المستخدمة
الوكيل والتحقق ومنطق المشروع
واجهة HTTP محلية وخلفية الاستوديو على الويب
كود تصميم بارامتري قابل للتعديل وتصدير
يخدّم النماذج مفتوحة الأوزان على loopback
عامل تصيير معزول وبلا شبكة
معاينة ثلاثية الأبعاد تفاعلية في المتصفح
بديل بدون صلاحيات الجذر للعامل
نماذج النص والرؤية المحلية الموصى بها
اختبارات مقابل نقطة وصول محلية محاكاة
ما تعلمته
- الكود المولَّد يحتاج إلى فحوصات ثابتة صريحة وعزل أثناء التشغيل قبل تنفيذه
- المصدر القابل للتعديل وصيغ التصدير القياسية للتصميم بمساعدة الحاسوب تجعل أخطاء النموذج قابلة للتصحيح بدل أن تكون غامضة
الحدود
- المقاصد الميكانيكية المعقدة والأبعاد المستنتَجة من الصور ما زالت تتطلب مراجعة بشرية