عن المشروع

Gateship هو بيئة تشغيل محلية لتسليم البرمجيات مخصصة لوكلاء البرمجة. يقوم المشغل بتحديد مهمة، ويمنحه Gateship مساحة عمل Git (worktree) معزولة، ويقوم بتشغيل عميل Claude Code أو Codex المحلي المختار، ويتحقق من أوامر القبول المكتوبة في المهمة، ويطلب من مراجع مستقل للقراءة فقط فحص التغيير، ثم يشحن النتيجة من خلال طلب سحب مدمج بنظام squash-merge. المنتج مصمم ليكون موجهاً للويب ومحلياً في المقام الأول: حيث يقوم Bun بتشغيل الواجهة على 127.0.0.1، ويقوم SQLite بتخزين حالة التشغيل والنشاط، ولا توجد ضغطات مفاتيح في الطرفية (terminal) أو جلسة tmux في مسار التنفيذ. المتطلبات والتعامل مع بيانات الاعتماد: يوصى بتثبيت Docker Desktop على Windows و macOS، أو Docker Engine مع إضافة Compose على Linux عند الحاجة إلى إمكانية نقل المضيف، وتتضمن الصورة أدوات CLI الخاصة بالمزود و GitHub. تتطلب التثبيتات الأصلية على macOS و Linux وجود Claude Code و/أو Codex CLI مع تسجيل دخول باشتراك، بالإضافة إلى GitHub CLI الموثق عبر gh auth login --web و gh auth setup-git. يتطلب Bun 1.2.3 أو أحدث فقط عند التشغيل من المصدر، ويجب أن يكون Git قادراً على إنشاء الفروع ومساحات العمل في المستودع المستهدف. يقوم Gateship بتنفيذ ملف claude أو codex الثنائي الخاص بالمشغل المسجل دخوله، ويمرر للأطفال الوكلاء بيئة مسموح بها، ولا يقرأ أبداً ملفات اعتماد المزود ولا يستخدم Agent SDK؛ ويستخدم شحن GitHub مخزن الاعتمادات المملوك لـ gh بدلاً من رمز وصول شخصي محيط. التثبيت والتحديث: يضع نص التثبيت gateship والاسم المستعار الأقصر gship في ~/.local/bin افتراضياً، مع إمكانية استخدام GATESHIP_INSTALL_DIR لتغيير الوجهة؛ وإعادة تشغيله تستبدل التثبيت الحالي، ويمكن لـ GATESHIP_VERSION تثبيت إصدار محدد. تستخدم عمليات بناء المصدر bun install --frozen-lockfile متبوعة بـ bun run build:release، ويمكن لـ Bun أيضاً تشغيل نقطة الدخول مباشرة للتطوير. يمكن للتثبيتات الأصلية اختيار تفعيل فحوصات التحديث في الإعدادات (معطلة افتراضياً)؛ حيث تتحقق العملية الجارية من الإصدارات الرسمية مرة واحدة يومياً على الأكثر، وتتحقق من التزام علامة الإصدار، وأصل المنصة الحالي، و SHA256SUMS.txt ومخرجات إصدار المرشح، ثم تسلم القيادة فقط عندما لا يكون هناك تشغيل غير طرفي أو تشخيص نشط. يتم إيقاف أي مرشح لا يعيد إصدار الإصدار والالتزام الدقيق، ويتم استعادة الثنائي السابق وإعادة تشغيله والتحقق منه. التطبيق التلقائي غير متاح في الحاويات ومخرجات المصدر، ويتم الإبلاغ عن السبب. البداية السريعة: يؤدي تشغيل gship من نسخة GitHub مستنسخة إلى بدء سطح التحكم المحلي وطباعة http://127.0.0.1:7777، ويقوم gship --port 8080 باختيار منفذ آخر. عند التحميل الأول، تتحقق واجهة الويب فقط من بيانات Git المحلية، ورابط origin ومرجع origin/main المحلي، ولا تقوم أبداً بجلب أو إنشاء مستودع بشكل ضمني. إذا كان الدليل فارغاً أو غير مكتمل، تظهر الأسطح التشغيلية أمر الاستعادة الدقيق بينما تظل الإعدادات متاحة لإعداد اشتراك الوكيل. اسم المشغل والمنطقة الزمنية IANA اختياريان ويتم تخزينهما فقط بعد حفظ صريح. لا يمكن للعملية الجارية تغيير دليل عملها الخاص، لذا يتطلب تغيير مسار المشروع إعادة تشغيل Gateship من النسخة المستنسخة المقصودة. واجهة برمجة تطبيقات الوكيل (Agent CLI): يمكن للوكلاء القادرين على استخدام Shell استخدام الخدمة الجارية من خلال واجهة إصدارية قابلة للقراءة آلياً بدلاً من بدء تشغيل آخر أو تحرير دليل .gship مباشرة: gship agent guide، gship agent operations، gship agent call status.get، ومكالمات مثل issues.get مع إدخال JSON. يصدر كل أمر وكيل كائن JSON واحد بدون مخرجات ANSI أو تقدم، ويشير علم URL إلى خدمة تعمل على منفذ مختلف. يتيح سير عمل المتصفح للمشغل وصف العمل وتكريره مع وكيل خارجي يستدعي أوامر Gateship المحددة، والحفاظ على موجز مشروع دائم كعملية تسليم بين الجلسات، ثم تفويض المهمة صراحةً. تقطع القرارات العمل وتنتظر الاهتمام، بينما يتم متابعة التقدم، ونصوص الوكيل العامة، وأسماء الأدوات، والتحقق والمراجعة عبر SSE؛ ويمكن لإشعارات المتصفح المحلية الوصول إلى المشغل خارج علامة التبويب. يمكن التبديل بين Claude و Codex دون فقدان حالة التشغيل الدائمة، وتعمل عناصر التحكم الصريحة كبديل حتمي. يعمل تشخيص React استشاري اختياري مقابل نسخة checkout ذات SHA دقيق ومعزول، يدوياً أو بجدول يومي أو أسبوعي بينما يكون المشروع خاملاً؛ ويمكن تجاهل النتيجة أو ترقيتها إلى مهمة غير معتمدة. تظل التشخيصات خارج بوابة التسليم، ولا تقوم أبداً بإصلاح أو اعتماد العمل تلقائياً، ولا يمكن لأي درجة تشخيصية منع الشحن. تحتفظ لوحة القياس بالنتائج، واهتمام البشر، وجولات التصحيح، وتوقفات المزود، ووقت الحائط، والتكلفة، وحقائق المزود أو النموذج كعناصر منفصلة، دون نموذج تقييم أو درجة اصطناعية. تدفق وقت التشغيل: تذهب مهمة المشغل إلى وكيل محادثة خارجي، ثم إلى أمر Gateship محدد، ثم إلى سجل تراكمي على remote main. يقوم Gateship بإنشاء مساحة عمل معزولة، ويشغل جلسة التنفيذ المختارة، ويتحقق من أوامر القبول، ويجري مراجعة مستقلة للقراءة فقط من خلال نفس المزود، مع محاولة إصلاح تلقائي واحد عند وجود نتائج، ثم يقوم بعمل commit و push، ويفتح طلب سحب، ويتم الدمج التلقائي (squash) بعد CI، ويحدث origin/main، ويحرر مساحة العمل المدارة النظيفة والفرع المحلي. تفشل المهمة التي لا تحتوي على أوامر تحقق في مرحلة ما قبل الطيران، وتعمل المراجعة كجلسة جديدة بقدرات قراءة فقط ميكانيكية. توزيع الحاويات: تعمل الصورة متعددة البنيات من خلال Docker Desktop على Windows و macOS و Docker Engine على Linux، مع متغيرات linux/amd64 و linux/arm64 تحت نفس علامة الإصدار، وتحتوي على الثنائي المجمع، و git، و GitHub CLI، و Claude Code CLI و Codex CLI. يتم تثبيت إصدارات CLI لكلا المزودين، ويتم تعطيل التحديثات الذاتية لـ Claude Code في جلسات الأطفال حتى لا تقوم عملية تشغيل باستبدال الملف التنفيذي بصمت خلف مراجعة سير العمل المسجلة. يقوم Compose بنشر المنفذ على loopback فقط، ويجعل نظام ملفات الصورة للقراءة فقط، ويوفر /tmp مؤقت، ويمنع تصعيد الامتيازات ويسقط قدرات Linux باستثناء تلك المطلوبة لربط المجلدات (bind mounts) مع uid مضيف مختلف. يتم توثيق المزود و GitHub داخل الحاوية عند التشغيل الأول ويستمران في وحدة تخزين حالة مسماة؛ وتظل قاعدة بيانات وقت التشغيل ومساحات العمل للمستودع المختار في دليل .gship الخاص بالمشروع على ربط المشاريع. إعادة إنشاء الحاوية من نفس الصورة ووحدة التخزين يعيد نفس حالة SQLite ومساحات العمل وتسجيلات الدخول. تتطلب إرشادات التحديث والاستعادة في README علامة صورة ذات إصدار مع ملخص manifest، وإيقاف الخدمة، ونسخ احتياطي لوحدة تخزين الحالة ودليل .gship، واستعادة الملخص السابق للتراجع؛ ويقوم gship doctor --json بالإبلاغ عن البنية، والصورة، وأذونات وحدة التخزين، و Git، و gh، و Claude، و Codex، وتسجيلات الدخول والاتصال المحلي كحالات بدون بيانات اعتماد. الأمان: يرتبط خادم HTTP بـ 127.0.0.1 فقط افتراضياً وتتطلب تغييرات المتصفح إضافياً طلباً من localhost من نفس الأصل؛ لا تحمل مسارات القراءة أي توثيق خاص بها، لذا فإن ربط loopback هو حدودها الوحيدة. تحتاج صورة الحاوية إلى تعيين متغير bind-host إلى 0.0.0.0 لكي يصل وكيل المنفذ المنشور في Docker إلى الخدمة، مما ينقل تلك الحدود إلى كيفية نشر المنفذ على المضيف؛ ونشر المنفذ على واجهة أخرى من شأنه تعريض كل مسار قراءة غير موثق. المنفذ قادر عمداً على الكتابة داخل مساحة العمل المعزولة، وفي الوضع الأصلي، يمتلك سلطة نظام الملفات للمستخدم الذي يشغل Gateship؛ بينما يقيده وضع الحاوية بالحاوية وعمليات الربط الصريحة الخاصة بها. يقيد المحلل والمراجع للقراءة فقط Claude بـ Read و Grep و Glob مع تعطيل MCP وأوامر slash، ويشغل Codex في صندوق الرمل الخاص به للقراءة فقط مع تعطيل تكوين المستخدم و MCP. يتلقى الأطفال من الوكيل و GitHub CLI قائمة بيضاء من البيئة، بينما تكون أوامر التحقق أوامر مشروع موثوقة وتحتفظ ببيئة الخدمة. لا يحتوي Gateship على حقل ويب أو SQLite لبيانات اعتماد المزود أو GitHub؛ هذا احتواء للعملية لمشغل واحد موثوق، وليس صندوق رمال أسرار متعدد المستأجرين. الحالة الدائمة والاستعادة: تعيش بيانات وصف التشغيل، واختيار المزود، والأحداث، وموجز المشروع الذي يحافظ عليه المشغل، ومعرف جلسة واحد لكل مزود في ملف SQLite تحت .gship؛ يخزن كل تشغيل المزود الخاص به، ومعرف الجلسة الأصلية ومسار مساحة العمل. عند إعادة تشغيل الخدمة، يصبح التشغيل الجاري غير المملوك مقاطعاً ويمكن استئنافه بدلاً من فقدان مساحة العمل أو بدء تشغيل مكرر بصمت. بعد دمج مؤكد، يقوم Gateship بإزالة مساحة العمل المدارة النظيفة، وفرعها المحلي، والمرجع القديم لتتبع البعيد؛ ويتم تحرير التشغيل الفاشل بنفس الطريقة، باستثناء أن الفرع الذي يحمل التزاماً مفقوداً من origin/main يتم الحفاظ عليه، جنباً إلى جنب مع مساحات العمل المتسخة والمخلفات غير المملوكة. يتم إعادة محاولة التنظيف عند بدء التشغيل. مصدر وقت التشغيل هو مرجع remote origin/main، الذي يتم جلبه قبل قبول التشغيل وبعد الدمج، ويتم ترك فرع main المحلي للمستخدم دون مساس عمداً. التطوير والمجتمع والترخيص: يتم بناء المشروع باستخدام Bun ويوفر أوامر لفحص الأنواع، والاختبارات، والتدقيق اللغوي (linting)، وتحليل الكود الميت، مع بوابة شحن تشغل المجموعة الكاملة قبل الإصدار. تتبع المساهمات دليل المساهمة، ومدونة قواعد السلوك، وسياسة الأمان، ويمكن لمستخدمي البيتا الخارجيين تقديم ملاحظات منقحة من خلال مسار تغذية راجعة موثق يقوم المسؤولون بفرزه يدوياً. تم إصدار Gateship بموجب ترخيص MIT.