تخطَّ إلى المحتوى
ططارق الوليديAI Developer Tools Directory

dsh-git-graph

تجريبييعمل محلياً ✓بدون اشتراك API

إضافة لـDeepSeek Harness تعرض فروع Git وتاريخ الالتزامات بصريًا، وتفتح جلسات معزولة عبر worktrees لتفادي تداخل العمل.

$dsh plugin --profile web add @linxin666/dsh-client-ui-git-graph@latest
💡

الاستخدام المثالي لهذه الأداة

تناسب مطورًا يشغل عدة جلسات DSH على مستودع واحد ويريد رؤية الفرع الحالي والتاريخ وإنشاء worktrees من الواجهة. تضيف وضوحًا لسياق كل جلسة وتحمي تبديل الفروع بحواجز مفهومة. لا تناسب من يعمل على تعديل بسيط بفرع واحد أو لا يريد telemetry خارجية.

التفاصيل والميزات المصورة

تعمل على مشروع واحد عبر أكثر من جلسة، ثم تكتشف أن جلسة فتحت فرعًا غير الذي تتوقعه أو أن تبديل الفرع سيؤثر في بقية العمل. dsh-git-graph يضيف إلى واجهة DeepSeek Harness محددًا للفروع، وسجلًا بصريًا للالتزامات، وإدارة لـGit worktrees لعزل الجلسات. قيمته أنه يجعل سياق Git مرئيًا قبل بدء الجلسة، ويقلل تبديل الفروع من الطرفية، من دون أن يحول Git إلى عملية تلقائية بلا ضوابط.

🧭 ما dsh-git-graph وكيف تعمل؟

هي إضافة Web GUI رسمية ضمن مستودع dsh-web وحزمتها المنشورة هي @linxin666/dsh-client-ui-git-graph. تتكون من جزء يعمل داخل host وينفذ أوامر Git على مساحات العمل المسجلة، وجزء React يظهر في متصفح DSH. في الجلسة الفارغة يظهر زر الفرع بجوار محدد مساحة العمل؛ منه تبحث عن فرع محلي، تبدله، تنشئ فرعًا جديدًا، تفتح Git Graph، أو تبدأ جلسة معزولة في worktree.

تدفق مساحة العمل إلى محدد الفرع ثم جلسة DSH جديدة
تدفق مساحة العمل إلى محدد الفرع ثم جلسة DSH جديدة
رسم توضيحي أصلي للمسار؛ ليس لقطة من واجهة المنتج.

🎯 كيف ستفيدك وما القيمة المضافة؟

لو كنت تطور بوابة دفع وفي الوقت نفسه تراجع التقارير، تستطيع فتح كل مهمة في worktree وفرع مستقل بدل أن تتشارك الجلسات مجلد العمل نفسه. قبل بدء جلسة جديدة ترى الفرع الحالي وحالة التغييرات، ويمكنك مراجعة تاريخ الدمج بصريًا. الفائدة العملية هي وضوح «أين ستعمل هذه الجلسة؟» قبل أن يبدأ الوكيل تعديل الملفات، مع حواجز تمنع بعض عمليات التبديل الخطرة. لا تلغي الأداة حاجتك لفهم Git أو مراجعة الفروقات قبل الدمج.

🌟 الميزات وطريقة استخدامها

1. اختيار الفرع أو إنشاء فرع قبل بدء الجلسة

يظهر محدد الفرع فقط في الجلسة الفارغة عندما تكون مساحة العمل مستودع Git مسجلًا. افتح القائمة للبحث بين الفروع المحلية؛ علامة الاختيار تبين الفرع الحالي. من أسفل القائمة تستطيع اختيار «Create and switch to new branch» لإنشاء فرع من HEAD الحالي ثم الانتقال إليه. بعد بدء جلسة نشطة يختفي هذا المحدد، لأن الإضافة لا تغير مجلد جلسة قائمة.

  • كيف تستخدمها: اختر مساحة العمل الرسمية أولًا، ثم اختر الفرع، وبعدها ابدأ الجلسة.
  • الفائدة: تعرف سياق الملفات الذي سيستلمه الوكيل قبل أن ترسل له المهمة.
  • قيد مهم: تبديل الفرع يتم على checkout الخاص بمساحة العمل، لذلك يؤثر في الجلسات الأخرى التي تستخدم مساحة العمل نفسها؛ استخدم worktree عند العمل المتوازي.

2. قراءة تاريخ المستودع في Git Graph

تفتح «Git Graph» من قائمة الفرع. اللوحة للقراءة فقط؛ تعرض أول 200 التزام ثم تزيد 100 عند «Load more». يرتب host السجل طوبولوجيًا عبر الفروع والوسوم والمراجع البعيدة، وتعرض اللوحة مسارات التفرع والدمج، أول سبعة أحرف من commit، عنوانه، المراجع، المؤلف والوقت النسبي.

  • كيف تستخدمها: افتح الرسم قبل الدمج أو عند البحث عن نقطة انفصال فرعين.
  • الفائدة: ترى علاقة الفروع والوسوم من داخل DSH بدل كتابة git log طويل أو الانتقال لأداة أخرى.
  • قيد مهم: اللوحة لا تنفذ merge أو rebase أو cherry-pick؛ وظيفتها قراءة التاريخ.
رسم لمسارات Git والمراجع وعناوين الالتزامات
رسم لمسارات Git والمراجع وعناوين الالتزامات
رسم توضيحي للبيانات التي تعرضها اللوحة؛ القيم مثال وليست سجلًا حقيقيًا.

3. حواجز قبل تبديل الفروع

قبل تنفيذ git switch --no-guess تفحص الإضافة حالات قد تجعل الانتقال غير آمن أو غير ممكن. ترفض التبديل عند وجود تعارضات غير محلولة، أو merge/rebase/cherry-pick/revert/bisect جارٍ، أو عندما يكون الفرع الهدف مستخدمًا في worktree آخر. كما تعرض ملفات متتبعة أو غير متتبعة قد تُستبدل، وتتحقق من صحة اسم الفرع ووجوده.

  • كيف تستخدمها: إذا رفضت العملية، اقرأ السبب والملفات المذكورة وعالجها في Git قبل المحاولة.
  • الفائدة: تحصل على رسالة مفهومة بدل أن يغير الوكيل السياق أو يكرر أمرًا فاشلًا.
  • قيد مهم: الحواجز لا تحفظ تغييراتك تلقائيًا ولا تنشئ commit أو stash نيابة عنك.
بوابة فحص التعارضات وعمليات Git قبل تبديل الفرع
بوابة فحص التعارضات وعمليات Git قبل تبديل الفرع
رسم قرار مبسط مبني على رموز الأخطاء الموثقة في الكود.

4. عزل الجلسات باستخدام Git worktrees

من قائمة الفرع اختر «Start a new session in a worktree». سمِّ مساحة العمل وحدد الفرع الأساس؛ ينشئ host مجلدًا تحت $DSH_HOME/worktrees/<repo-key>/<name>/ وفرعًا جديدًا باسم wt/<name>، ثم يسجل المجلد كمساحة عمل ويفتح جلسة جديدة فيه. يظل checkout الأساسي كما هو. شاشة الإدارة تعرض كل worktree والفرع وcommit، وتمنع حذف checkout الأساسي. إذا كان worktree متسخًا ترفض الحذف أول مرة وتطلب تأكيدًا صريحًا للقوة.

  • كيف تستخدمها: أنشئ worktree لكل مهمة متوازية، ثم ادمجها لاحقًا بأسلوب Git المعتاد.
  • الفائدة: تعمل جلسة الدفع وجلسة التقارير على ملفات منفصلة، مع مشاركة تاريخ المستودع.
  • قيد مهم: حذف worktree لا يحذف فرعه افتراضيًا؛ يوجد خيار مستقل لذلك. الجلسة الحالية لا تنتقل إلى worktree جديد لأن مسارها ثابت.
شجرة توضح عزل ثلاث جلسات في Git worktrees مستقلة
شجرة توضح عزل ثلاث جلسات في Git worktrees مستقلة
رسم توضيحي لعلاقة المستودع بالجلسات المعزولة.

🪜 مثال استخدام خطوة بخطوة

مثال توضيحي لم أنفذه: لديك فرع main مستقر، وتريد إصلاح تسجيل الدخول وإضافة تقرير جديد بالتوازي. في جلسة فارغة اختر مساحة المشروع، ثم اختر «Start a new session in a worktree» وأنشئ fix-login من main. كررها باسم reports. ستظهر مساحتا عمل على الفرعين wt/fix-login وwt/reports. اطلب من كل جلسة تنفيذ مهمتها واختبارها. افتح Git Graph لمراجعة موقع الالتزامات، ثم نفذ الدمج أو Pull Request بالطريقة التي تعتمدها. لا تفعل Auto-isolation قبل فهم مكان إنشاء المجلدات وطريقة تنظيفها.

⚖️ ماذا تضيف مقارنة بالطريقة اليدوية؟

يدويًامع dsh-git-graph
تنفذ git branch وgit switch في الطرفيةتبحث وتختار من واجهة الجلسة الفارغة
تقرأ git log --graph كنصترى المسارات والمراجع في لوحة داخل DSH
تنشئ worktree ومجلده ومساحة DSH يدويًاتنشئه وتفتح جلسة مرتبطة في خطوة واحدة
تفسر رسائل Git المتنوعة بنفسكتحصل على أسباب رفض مصنفة ورسائل قابلة للقراءة

هذه مقارنة في طريقة العمل وليست قياسًا موثقًا لتوفير الوقت. الطرفية أبسط إن كنت تنفذ تعديلًا صغيرًا على فرع واحد.

⚙️ الإعدادات المهمة

توجد ثلاثة إعدادات في بطاقة الحزمة، وكلها قابلة للتغيير أثناء التشغيل:

  • autoIsolate: معطل افتراضيًا. عند تفعيله يجعل «New Session» لمساحة Git ينشئ worktree تلقائيًا.
  • autoBaseline: قيمته الافتراضية current لاستخدام HEAD الحالي؛ ويمكن اختيار default لمحاولة استخدام الفرع الافتراضي البعيد origin/HEAD مع fallback.
  • agentTool: معطل افتراضيًا. عند تفعيله يسجل أداة git_worktree التي تسمح للنموذج بإنشاء worktrees وعرضها وحذفها ضمن المستودع المسجل.

ابدأ بالإعدادات الافتراضية. فعّل agentTool فقط إذا أردت منح الوكيل قدرة مباشرة على إدارة worktrees وتفهم أثر الحذف.

🚀 التثبيت والبدء

الإصدار المتحقق منه 0.4.2. يتطلب DSH 0.1.7-rc.2 أو أحدث، وNode.js 22.19 ضمن السلسلة 22 أو Node 24+. أمر التثبيت الموصى به من README:

dsh plugin --profile web add @linxin666/dsh-client-ui-git-graph@latest

أعد تشغيل dsh web أو ملف التعريف المقابل، ثم حدّث الصفحة. افتح مساحة عمل تحتوي مستودع Git وجلسة فارغة؛ يجب أن يظهر زر الفرع قرب محدد مساحة العمل. إذا كان اسم ملف التعريف مختلفًا فاستبدل web. لم أشغّل الأمر هنا. الإزالة:

dsh plugin --profile web remove @linxin666/dsh-client-ui-git-graph

للتطوير من المستودع يستخدم README clone وبناء monorepo ثم link: إلى packages/dsh-git-graph؛ لا تستخدم صيغة github: مباشرة لأن الحزمة ليست في جذر المستودع.

🔗 التوافق واللغة والنشاط

الإضافة مخصصة لواجهة DeepSeek Harness Web ولا توثق دعم Claude Code أو Codex أو Cursor. واجهتها المضمنة تحتوي قاموسين فقط: الإنجليزية والصينية المبسطة؛ الرسوم العربية في هذه البطاقة شرح خارجي وليست تعريبًا للمنتج. package.json يثبت React 18 كـpeer ويحدد DSH 0.1.7-rc.2+.

نشر npm الإصدار 0.4.2 في 24 سبتمبر 2026، وآخر commit ظهر لمسار الحزمة عند الفحص كان في 25 سبتمبر 2026 الساعة 02:22 UTC. هذا يدل على نشاط حديث، لكنه لا يضمن الاستقرار.

💰 التكلفة والتشغيل المحلي

الكود تحت ترخيص Apache-2.0، والحزمة لا تتطلب API مدفوعًا خاصًا بها. عمليات Git تعمل في host المحلي على مساحات DSH المسجلة. لكن تكلفة النموذج الذي تستخدمه داخل DSH منفصلة، وقد يتصل DSH نفسه بخدمة نموذج خارجية بحسب إعدادك. عند الفحص كان مستودع dsh-web الكامل يملك 7,998 نجمة و549 تفرعًا؛ هذه أرقام المستودع الجامع وليست تقييمًا أو عدد مستخدمي هذه الإضافة وحدها.

🔐 الخصوصية والصلاحيات والأمان

يحتاج host إلى تنفيذ أوامر Git وقراءة حالة المستودعات المسجلة، وإنشاء مجلدات worktree وحذفها عند طلبك. مسارات /git/* تقبل المسارات المسجلة فقط بعد فحص realpath، وتقيّد العملاء باتصال loopback، وتستخدم ملف تعريف جهاز مقترن عند إضافة remote web UI. هذا يقلل الوصول العشوائي لكنه لا يلغي خطر أوامر Git على عملك.

يرسل الجزء المتصفح heartbeat مجهولًا مرة يوميًا إلى dsh-market.com: معرف UUID عشوائي من localStorage، واسم الحزمة، والإصدار، وقناة التثبيت. تقول الوثائق إن الخادم يخزن hash مملحًا ولا يخزن عناوين IP، ويحتفظ بالأحداث 400 يوم. لا يرسل محتوى مستودعك ضمن هذا heartbeat وفق العقد الموثق. إذا كانت سياسة مشروعك تمنع أي telemetry خارجية، فهذه نقطة يجب تقييمها قبل التثبيت.

⚠️ الحدود ومتى لا تستخدمها

الإضافة مرتبطة بسطح DSH Web وإصدارات RC سريعة التغير؛ يذكر README أن تغير خدمات SDK قد يعطل Auto-isolation بأمان ويعيد السلوك الرسمي. تبديل فرع مساحة العمل يؤثر في كل جلساتها، لذلك لا تستخدمه بالتوازي من دون worktrees. الرسم للقراءة ولا يحل محل مراجعة diff أو PR. كما أن تمكين agentTool يوسع صلاحية النموذج من القراءة إلى إنشاء وحذف worktrees؛ أبقه مغلقًا ما لم تحتجه.

📚 المصادر وتاريخ التحقق

تحققت في 25 سبتمبر 2026 من README الخاص بالحزمة، package.json، لوحة Git Graph، أنواع البيانات والحواجز، إعدادات الصلاحيات، عقد telemetry، ترخيص الحزمة، وسجل npm. لم أختبر التثبيت أو عمليات Git على مشروع فعلي.