
بقلم: ليلى | محررة أدوات المطورين · صوت تحريري بإشراف بشري
بدلاً من التنقل بين أداة تصميم منفصلة وبيئة التطوير، يضع Airship لوحة تصميم لا نهائية أمام dev server الخاص بك مباشرةً — تختار عنصراً، تصف التغيير بالكلمات، وتراقب Claude Code أو Codex أو OpenCode تعدّل الكود في الملف المصدري فوراً. المشروع متاح مجاناً على GitHub وقابل للتشغيل دون إضافة أي إضافة أو تعديل على إعدادات مشروعك.
ما يميّز Airship عن غيره من المحررات البصرية أنه لا يلمس مشروعك من الداخل. لا plugin، ولا حزمة تُضاف إلى bundle، ولا حساب تُنشئه، ولا بيانات تغادر جهازك. الأداة تعمل كـ CLI يجلس أمام الـ server الذي تشغّله أنت، وتفتح المحرر البصري على المنفذ التالي المتاح. كل إطار معروض هو نافذة متصفح حقيقية — الهاتف يتصرف كهاتف مهما زمّت الصورة، وتستطيع أن تعدّل النسخة المحمولة والمكتبية في آنٍ واحد من ملف مصدر واحد.
البداية لا تتجاوز أمراً واحداً:
- شغّل تطبيقك كالمعتاد بأي أمر تفضّله (
pnpm devمثلاً)، إذ يعمل Airship مع Vite وNext.js وRemix وRails وأي إطار يخدم HTML عبر HTTP دون أي إضافات. - وجّه Airship إلى الـ server بالأمر
npx @airshiplabs/cli --target 3000، أو ثبّته مرة واحدة عبرnpm i -g @airshiplabs/cliثم استخدم الأمرairship --target 3000مباشرةً. - اختر الـ agent الذي تستخدمه أصلاً: Claude (الافتراضي)، أو Codex، أو OpenCode عبر الراية
--agent، وسيعيد Airship استخدام مفتاح المصادقة الذي لديك فعلاً — سواء كانANTHROPIC_API_KEYأوOPENAI_API_KEYأو غيرهما. - إن أردت أن تتولى Airship تشغيل الـ server بنفسها، أضف
--exec "pnpm dev"وستبدأه وتوقفه تلقائياً عند الخروج. - اضغط على أي عنصر في المحرر وسيعرف Airship الملف والسطر اللذين رسماه — صف التغيير، استعرض الـ diff، واضغط Undo إن لم يعجبك الناتج.
- إن ظهرت مشكلة، شغّل
airship doctorلفحص البيئة والـ agents والـ server دفعة واحدة.
الأداة تقدّم وضعَي عرض مختلفَين: canvas (الافتراضي) حيث يظهر تطبيقك على لوحة قابلة للتحريك بإطار لكل حجم جهاز، وinline حيث يجلس المحرر فوق صفحتك في نافذة واحدة. يمكن التبديل بينهما من شريط الأسفل في أي وقت، أو بإضافة ?__airship=inline إلى أي رابط للتجربة مرة واحدة دون تغيير التفضيل.
الـ agents الثلاثة ليست متكافئة، وAirship صريح في ذلك. Claude يعرض الكتابة كلمة بكلمة ويدعم استمرار المحادثات القديمة والتفرع منها ويعرض التكلفة بالدولار، كما يدعم خيارَي --max-turns و--max-budget للتحكم في الإنفاق. Codex يعطي الرد دفعة واحدة في النهاية ويستمر في المحادثات القديمة لكنه يبدأ تفرعاً جديداً، ويعرض التكلفة بالـ tokens لا بالدولار، ويوفر Sandbox حقيقياً على مستوى نظام التشغيل عند تمرير --safe. OpenCode — وهو تثبيت منفصل عبر brew install sst/tap/opencode أو npm i -g opencode-ai — يكتب كلمة بكلمة ويحتفظ بالتاريخ عند التفرع، لكنه يتجاهل --effort ويطلب تأكيداً قبل كل تعديل وأمر.
على صعيد الأمان، تعمل الأداة افتراضياً بدون sandbox وللـ agent صلاحية الكتابة في أي مكان على جهازك، وهو نفس ما يحدث حين تشغّله من Terminal مباشرةً. تمرير --safe يُقيّد النطاق: Codex يحصل على sandbox حقيقي يمنعه على مستوى نظام التشغيل من الكتابة خارج مجلد مشروعك وقطع الشبكة، بينما يعتمد Claude وOpenCode على فحص يدوي لكل أمر وتعديل — وهو فحص جيد لكنه ليس جداراً حقيقياً. الأداة تُقرّ بهذا صراحةً: إن كانت الضمانة الصارمة تهمك أكثر من اختيار الـ agent، شغّل airship --agent codex --safe.
الـ Undo ليس ملك الـ agent بل ملك Airship نفسها — تحتفظ بالنسخة السابقة من كل ملف لمّسته، ويعمل مع الثلاثة. استثناء واحد: Codex وOpenCode يحتاجان إلى مستودع Git لأن Undo يعتمد عليه، وAirship يُحذّرك من ذلك عند التشغيل.
لمن يعمل على monorepo تقع فيه التطبيقات تحت مسارات فرعية كـ apps/web، يأتي الخيار --cwd ليحدد جذر الـ app لا جذر المستودع، وهو ما يحتاجه Airship لتحويل المسارات التي يبلغ عنها الـ server إلى ملفات حقيقية على القرص. كذلك يكتشف Airship المنفذ تلقائياً إن لم تحدده، إذ يفحص أولاً ما في سكريبتات dev أو start أو serve، ثم يرجع إلى المنفذ الافتراضي للإطار بحسب الحزم المثبّتة: Next/Nuxt/Remix على 3000، Vite/SvelteKit على 5173، Angular على 4200، Astro على 4321، Parcel على 1234، Storybook على 6006، Gatsby على 8000، وEleventy على 8080.
الفكرة في جوهرها بسيطة لكنها جدية: الفجوة بين الماكَيت والكود مكلفة، وAirship تُغلقها بدون أن تفرض عليك أي شيء إضافي. إن كنت تستخدم Claude Code أو Codex أصلاً، فالتكلفة الحقيقية للتجربة هي أمر واحد في Terminal.







