Codex worktree: نسخة عمل منفصلة لمهمة ثانية
Markdownنسخة عمل من Codex CLI 0.155.1: علامة worktree التجريبية، وHEAD المصدر، والتحقق من المجلد الجديد، والحفاظ على النتيجة، والإزالة الآمنة.
قراءة المقال كاملًا
النقطة الأساسية
في Codex CLI الإصدار 0.155.1، يمكنك إنشاء نسخة عمل منفصلة لمهمة ثانية باستخدام codex --enable worktrees --worktree. هذه الميزة تجريبية ومعطّلة افتراضيًا: إذا لم تكن قد فعّلتها مسبقًا، فسيرفض Codex البدء باستخدام --worktree من دون --enable worktrees. تُنشأ النسخة انطلاقًا من أحدث التزام في المشروع الأصلي (HEAD)، من دون التغييرات غير الملتزم بها، وتكون في حالة HEAD منفصلة، من دون إرفاق فرع مسمّى بها.
على سبيل المثال، أنت تستخدم Codex CLI لإعادة هيكلة إحدى الوحدات، ثم تظهر مهمة ثانية: كتابة اختبارات لوحدة أخرى. فتح جلسة ثانية في المجلد نفسه ينطوي على مخاطر، إذ يسهل الخلط بين تغييرات المهمة الأولى والثانية. تنشئ العلامة --worktree مجلدًا منفصلًا للمشروع نفسه من أجل المهمة الثانية، وتترك مجلد المهمة الأولى دون تغيير.
موارد عملية للعمل مع الوكلاء بالتوازي: وثائق Ailoot.
ما الذي تنشئه --worktree وما الملفات التي تدخل في النسخة
في مصطلحات Git، worktree هو مجلد عمل إضافي مرتبط بالمستودع نفسه: يشترك في سجل الالتزامات، لكن له مجموعة ملفاته الخاصة على القرص. في Codex CLI 0.155.1، تستخدم العلامة --worktree آلية Git هذه لبدء جلسة وكيل جديدة في مجلد منفصل، مع إبقاء المجلد الذي تجري فيه المهمة الأولى دون تغيير.
تحتوي نسخة العمل الجديدة على الملفات من الالتزام الذي يشير إليه HEAD في المشروع الأصلي عند بدء التشغيل، أي أحدث التزام، لا آخر مرة حفظت فيها ملفًا في المحرر. لا ينقل هذا الأمر التغييرات غير الملتزم بها ولا الملفات الجديدة. الحفظ في المحرر لا يعادل إجراء التزام في Git. إذا ظلّت في المجلد الأول تغييرات غير ملتزم بها عند بدء المهمة الثانية، فستبقى تلك التغييرات في ذلك المجلد وحده.
هذه ليست نسخة احتياطية للمستودع بأكمله، ولا عزلًا للكمبيوتر كله. إنها مجلد عمل ثانٍ للمشروع نفسه، مع إمكانية الوصول إلى الفرع نفسه وسجل الالتزامات نفسه. للاطلاع على آلية مشابهة في أداة أخرى، راجع Claude Code وgit worktree: المهام المتوازية.
التحضير: الإصدار، والثقة بالمشروع، ووجود التزام
تحقق من ثلاثة أمور قبل البدء. نفّذ الأوامر من مجلد المشروع الأصلي.
أولًا، تحقق من إصدار Codex CLI. تنطبق هذه التعليمات على الإصدار 0.155.1؛ أما الإصدارات الأخرى، فتحقق من سلوك العلامات فيها على نحو منفصل:
codex --version
ثانيًا، تحتاج إلى مشروع Git محلي يشير HEAD فيه إلى التزام موجود، أي يجب أن يحتوي المستودع على التزام واحد على الأقل. وإلا فلن يكون هناك ما تنشئ منه النسخة.
ثالثًا، يجب أن يكون المصدر موثوقًا: إذا وُسِم المشروع صراحةً بأنه غير موثوق، فسيفشل البدء باستخدام --worktree قبل إنشاء النسخة. إذا كنت تهيئ Codex CLI للتو، فالتعليمات الأساسية للتحضير موضحة في Codex (OpenAI): ما هو وكيف تبدأ استخدامه.
تحقق مسبقًا من قائمة نسخ العمل الموجودة لهذا المستودع. يمكنك استخدامها للمقارنة بعد بدء التشغيل:
git worktree list
تساعد المجلدات المنفصلة على إبقاء المهام متميزة. وللاطلاع على نهج عام للعمل مع وكيل، تفيد الموارد العملية في وثائق Ailoot.
الخطوات: بدء نسخة منفصلة لمهمة ثانية
فعّل الميزة التجريبية وابدأ جلسة بنسخة منفصلة
نفّذ الأمر من مجلد المشروع الأصلي، حيث تعمل بالفعل على المهمة الأولى.
codex --enable worktrees --worktreeالنتيجة المتوقعة: ينشئ Codex نسخة عمل جديدة للمشروع انطلاقًا من HEAD الحالي ويفتح فيها جلسة وكيل. تكون النسخة في حالة HEAD منفصلة، من دون إرفاق فرع مسمّى بها. هكذا تعمل العلامة في الإصدار 0.155.1.
اعرض نسخ العمل مجددًا في نافذة طرفية أخرى ضمن المشروع الأصلي
git worktree listالنتيجة المتوقعة: يحتوي الخرج على سطر إضافي يتضمن مسار النسخة الجديدة وعلامة HEAD منفصلة (أو فرعًا، إن وُجد). تعرض هذه القائمة أن Git سجّل النسخة، لكنها لا تؤكد أن الوكيل أكمل المهمة. للتأكد من وجود الملفات، افتح المجلد في المسار المدرج وتحقق من محتوياته.
كيفية التحقق من النتيجة والحفاظ على عملك
بعد اكتمال المهمة الثانية في النسخة الجديدة، عليك حفظ النتيجة ونقلها على نحو منفصل. لا يدمج الأمر --worktree التغييرات في الفرع الرئيسي ولا ينقل النتيجة تلقائيًا. تظل النسخة في حالة HEAD منفصلة، لذا فإن إجراء التزام بداخلها لا ينشئ، بحد ذاته، فرعًا جديدًا. إذا أردت الحفاظ على تلك الالتزامات، فأرفقها بفرع أو انقلها إلى المشروع الرئيسي قبل حذف مجلد النسخة.
لا تحذف مجلد النسخة قبل الحفاظ على النتيجة. التحقق من خلو مجلد العمل من التغييرات لا يغني عن الحفاظ على الالتزامات التي تحتاج إليها: فقد تظل غير مرتبطة بأي فرع.
إذا كنت تعمل على مهام في أدوات مختلفة في الوقت نفسه، فخطط مسبقًا لكيفية منعها من التداخل. يتناول Claude Code وCodex معًا العمل باستخدام وكيلين معًا.
إذا انقطع بدء التشغيل: أين تجد النسخة
قد يفشل البدء باستخدام --worktree لعدة أسباب:
- لم تُفعّل الميزة مسبقًا ولا يتضمن أمر التشغيل
--enable worktrees: سيرفض Codex البدء باستخدام العلامة--worktree؛ - أنت في المجلد الخطأ أو لا يوجد التزام: إذا لم يكن المجلد الحالي مستودع Git أو لم يحتوِ على أي التزامات بعد، فلن يكون هناك ما تنشئ منه النسخة؛
- وُسِم المشروع صراحةً بأنه مصدر غير موثوق: سيرفض Codex بدء جلسة باستخدام
--worktree. تأكد أولًا من أنك فتحت المشروع الصحيح. لا تغيّر حالة الثقة فيه تلقائيًا.
إذا لم تتمكن الجلسة من الارتباط بالنسخة التي أُنشئت للتو، مثلًا بسبب انقطاع العملية، فلن يُحذف مجلد العمل تلقائيًا. تحقق أولًا من قائمة نسخ العمل، وقبل حذف أي شيء، تأكد من عدم وجود جلسة Codex CLI ما زالت تستخدم هذه النسخة:
git worktree list
افتح المجلد واحفظ أي تغييرات تحتاج إليها قبل حذفه. قد تظل النسخة موجودة حتى إن لم يكتمل بدء جلسة الوكيل. إذا كانت النسخة موجودة ولم تعد بحاجة إليها، وتأكدت من عدم استخدام أي جلسة لها، فأزِلها يدويًا من المستودع الأصلي باستخدام git worktree remove مع تحديد مسار المجلد. لا تضف --force: إذا احتوت النسخة على ملفات غير ملتزم بها أو غير متتبعة، فسيرفض الأمر حذفها. إذا رفض الحذف، فتحقق من محتويات المجلد من دون تعطيل إجراء الحماية.
عند تحديث Codex CLI، تحقق مجددًا من الإصدار باستخدام codex --version، وكرر التحقق باستخدام git worktree list: فقد يختلف سلوك العلامات التجريبية بين الإصدارات.
المزيد من الموارد والأدوات: Ailoot.
المزيد من التفاصيل
أسئلة شائعة
هل تشمل شجرة العمل الثانية تعديلاتي غير المحفوظة أو غير المثبتة؟
لا. تبدأ من commit HEAD لمستودع المصدر في إصدار CLI الموضح. تبقى التغييرات غير المثبتة والملفات الجديدة في المجلد الأصلي؛ فمجرد حفظ الملف في المحرر لا ينقله.
هل من الآمن حذف شجرة عمل نظيفة برأس منفصل؟
قد يحتوي المجلد النظيف على commits بلا فرع مسمى. احفظها أو انقلها أولًا، وتحقق من عدم استخدام أي جلسة لشجرة العمل، ثم استخدم الإزالة العادية عبر Git worktree دون تجاوز الضمانات بالقوة.