DeepSeek Harness: الاستخدام الأول
آخر تحديث: 2026-08-31
استخدام DeepSeek Harness لأول مرة يشبه الجلوس في سيارة ذكية لأول مرة — لوحة القيادة تبدو معقدة، لكن بمجرد أن تعرف أين المقود والمسرّع، يمكنك بدء القيادة. يأخذك هذا الدرس من الصفر إلى أول محادثة مع DSH Agent.
📋 المتطلبات المسبقة: إكمال 02-install.md، تشغيل واجهة DSH Web UI بنجاح
1. ما ستتعلمه
- وظائف وتخطيط المناطق الأربع الرئيسية لواجهة الويب
- اختيار مساحة العمل والغرض منها
- التدفق الكامل لأول محادثة Agent
- عملية تنفيذ أدوات Agent والعرض المرئي
- آلية نوافذ الموافقة وسياسات الأمان
2. مقدمة واجهة الويب
(1) المناطق الأربع الرئيسية
تتكون واجهة DSH Web UI من أربع مناطق أساسية:

graph TB
subgraph DSH Web UI
A[يسار: قائمة الجلسات]
B[وسط: منطقة المحادثة]
C[يمين: لوحة الأدوات]
D[أعلى: شريط التحكم<br/>الوضع + النموذج + الإعدادات]
end
D --> B
A --> B
B --> C
| المنطقة | الموضع | الوظيفة |
|---|---|---|
| قائمة الجلسات | يسار | عرض الجلسات السابقة؛ دعم الإنشاء والبحث والحذف |
| منطقة المحادثة | وسط | منطقة التفاعل الرئيسية؛ إرسال الرسائل، عرض الردود ونتائج تنفيذ الأدوات |
| لوحة الأدوات | يمين | عرض تفاصيل استدعاءات الأدوات في الوقت الفعلي، إجراءات الموافقة، سجلات التنفيذ |
| شريط التحكم | أعلى | تبديل الوضع، اختيار النموذج، دخول الإعدادات |
(2) تفاصيل شريط التحكم العلوي
يحتوي شريط التحكم العلوي على:
┌──────────────────────────────────────────────────┐
│ [Standard ▼] [deepseek-chat ▼] ⚙️ 📋 ❓ │
└──────────────────────────────────────────────────┘
↑اختيار الوضع ↑اختيار النموذج ↑الإعدادات ↑السجلات ↑المساعدة
- اختيار الوضع: Standard / PTC / Minimal / Creative
- اختيار النموذج: نموذج LLM الحالي
- الإعدادات: مفتاح API، نقاط النهاية، سياسة Sandbox، إلخ
- السجلات: عرض سجلات الجلسة (عرض Trajectory)
- المساعدة: اختصارات لوحة المفاتيح، روابط التوثيق
(3) تفاصيل منطقة المحادثة
منطقة المحادثة هي منطقة التفاعل الأساسية. كل رسالة قد تحتوي على:
┌─────────────────────────────────────────┐
│ 👤 Alice │
│ ساعدني في تحليل بنية المشروع │
│ في الدليل الحالي │
├─────────────────────────────────────────┤
│ 🤖 Agent │
│ 🔍 استخدام أداة: search │
│ → البحث في /home/alice/project... │
│ ✅ وُجد 15 ملفًا │
│ │
│ هذا المشروع تطبيق Express.js. │
│ البنية الرئيسية: │
│ - src/routes/ — تعريفات المسارات │
│ - src/models/ — نماذج البيانات │
│ - src/middleware/ — الوسائط │
└─────────────────────────────────────────┘
3. اختيار مساحة العمل
(1) غرض مساحة العمل
مساحة العمل هي الدليل الجذر لعمليات Agent. جميع عمليات الملفات وأوامر Shell نسبية إليها:

# مساحة العمل تحدد "مجال رؤية" Agent
/home/alice/project ← Agent يمكنه رؤية الملفات في هذا الدليل فقط
├── src/
├── package.json
└── README.md
(2) اختيار مساحة العمل
عند أول تشغيل، يطلب منك DSH اختيار مساحة عمل:
📂 اختر مساحة العمل
┌──────────────────────────────────────┐
│ ○ /home/alice/project │
│ ○ /home/alice/another-repo │
│ ● أدخل مسارًا مخصصًا... │
└──────────────────────────────────────┘
يمكنك أيضًا التبديل في أي وقت من الإعدادات:
# تعيين مساحة العمل مسبقًا عبر متغير بيئة
export DSH_WORKSPACE="/home/alice/my-project"
# أو في واجهة الويب: الإعدادات → مساحة العمل → تغيير
(3) مساحة العمل و Sandbox
تعمل مساحة العمل مع آلية Sandbox لتحديد نطاق عمليات Agent:
graph TB
W[مساحة العمل /home/alice/project] -->|مسموح| A1[قراءة الملفات]
W -->|مسموح| A2[تعديل الملفات]
W -->|مسموح| A3[تنفيذ الأوامر]
OUT[خارج مساحة العمل /etc/passwd] -->|مرفوض| B1[قراءة]
OUT -->|مرفوض| B2[تعديل]
4. المحادثة الأولى
(1) دع Agent يحلل مستودعًا
بعد اكتمال اختيار مساحة العمل، نرسل رسالتنا الأولى:

Placeholder for user input
عملية الرد الكاملة للـ Agent:
🤖 Agent: سأساعدك في تحليل هذا المشروع.
🔍 استخدام أداة: search
→ نمط: *
→ المسار: /home/alice/project
→ أقصى عمق: 3
🔍 استخدام أداة: file_edit (قراءة)
→ الملف: package.json
→ الإجراء: قراءة
📊 نتائج التحليل:
1. حزمة التقنيات:
- بيئة التشغيل: Node.js 20.x
- الإطار: Express 4.18
- قاعدة البيانات: PostgreSQL (pg 8.12)
- الاختبار: Jest 29.x
2. بنية الدليل:
src/
├── routes/ — 8 ملفات مسارات
├── models/ — 5 نماذج بيانات
├── middleware/ — 3 وسائط
└── utils/ — دوال مساعدة
3. اقتراحات:
- تعريفات أنواع TypeScript مفقودة
- يُنصح بإضافة طبقة src/services/ لفصل منطق الأعمال
(2) عملية تنفيذ أدوات Agent
يتم عرض كل استدعاء أداة في الوقت الفعلي في لوحة الأدوات على اليمين:

│ │
│ 🔍 search │
│ ├─ الحالة: ✅ مكتمل │
│ ├─ المدة: 0.3ث │
│ └─ الملفات الموجودة: 23 │
│ │
│ 📄 file_edit (قراءة) │
│ ├─ الحالة: ✅ مكتمل │
│ ├─ المدة: 0.1ث │
│ └─ الملف: package.json (1.2KB) │
│ │
│ 📊 إجمالي الأدوات: 2 │
│ 📊 إجمالي الوقت: 0.4ث │
└──────────────────────────────────────┘
(3) مسار تنفيذ الأدوات
يمر كل استدعاء أداة بثلاث مراحل:
graph LR
A[pre-execute<br/>التحقق من المعاملات<br/>فحص الصلاحيات] --> B[execute<br/>التنفيذ الفعلي]
B --> C[post-execute<br/>معالجة النتائج<br/>تسجيل السجلات]
// كود زائف لمسار تنفيذ الأدوات
async function executeTool(tool, params) {
// 1. pre-execute: التحقق + الموافقة
await preExecute(tool, params);
// 2. execute: التنفيذ الفعلي
const result = await tool.execute(params);
// 3. post-execute: تسجيل السجلات
await postExecute(tool, params, result);
return result;
}
5. آلية نوافذ الموافقة
(1) لماذا الحاجة للموافقة
يمتلك Agent قدرات تشغيلية قوية (تعديل الملفات، تنفيذ الأوامر)، لكن العمليات غير السليمة قد تسبب أضرارًا. آلية الموافقة تتيح للمستخدمين التأكيد قبل أن ينفذ Agent عمليات خطيرة.

(2) ▶ مثال 2
عندما يريد Agent تعديل ملف، تعرض واجهة الويب نافذة موافقة:
┌─ ⚠️ الموافقة مطلوبة ───────────────────┐
│ │
│ Agent يريد: │
│ 📝 تعديل ملف: src/index.ts │
│ │
│ التغييرات: │
│ - سطر 12: إضافة عبارة import │
│ - سطر 45: تعديل معالج الأخطاء │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ✅ سماح │ │ 🔁 دائمًا│ │ ❌ رفض │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────┘
معاني الخيارات الثلاثة:
| الخيار | المعنى | حالة الاستخدام |
|---|---|---|
| سماح | السماح هذه المرة؛ لا يزال يتطلب موافقة في المرة القادمة | عملية لمرة واحدة |
| دائمًا | السماح دائمًا بهذا النوع من العمليات؛ لا مزيد من النوافذ المنبثقة | أنواع عمليات موثوقة |
| رفض | رفض هذه العملية | عمليات غير مرغوب فيها |
(3) إعداد سياسة الموافقة
يمكنك تعيين سياسات الموافقة مسبقًا في الإعدادات:
# dsh.config.yaml
approval:
# قراءة الملفات: السماح دائمًا
file_read: always
# تعديل الملفات: تتطلب موافقة
file_edit: ask
# أوامر Shell: بناءً على مستوى الخطورة
shell:
safe_commands: always # ls, cat, grep, إلخ
unsafe_commands: ask # rm, chmod, sudo, إلخ
dangerous_commands: deny # rm -rf /, dd, إلخ
# عمليات البحث: السماح دائمًا
search: always
(4) علاقة وضع Sandbox بالموافقة
| وضع Sandbox | سلوك الموافقة | مستوى المخاطر |
|---|---|---|
| strict | جميع العمليات تتطلب موافقة | 🟢 آمن |
| permissive | العمليات الخطيرة فقط تتطلب موافقة | 🟡 متوسط |
| off | بدون موافقة؛ Agent يعمل بحرية | 🔴 مخاطر عالية |
# تعيين وضع Sandbox
export DSH_SANDBOX=strict # الأكثر أمانًا
export DSH_SANDBOX=permissive # الافتراضي
export DSH_SANDBOX=off # غير موصى به
6. تطبيق عملي: تفاعل Agent كامل
(1) وصف السيناريو
تريد Alice أن يقوم Agent بإضافة نقطة نهاية فحص الصحة لمشروعها.

(2) ▶ مثال 2
👤 Alice: أنشئ health.ts تحت src/routes/، أضف نقطة نهاية GET /health
تُرجع { status: "ok", timestamp: Date.now() }
🤖 Agent: سأنشئ نقطة نهاية فحص الصحة لك.
📝 استخدام أداة: file_edit
→ الإجراء: إنشاء
→ المسار: src/routes/health.ts
→ المحتوى:
import { Router } from 'express';
const router = Router();
router.get('/health', (_req, res) => {
res.json({ status: 'ok', timestamp: Date.now() });
});
export default router;
⚠️ الموافقة مطلوبة: إنشاء ملف src/routes/health.ts
→ [Alice نقر سماح]
✅ تم إنشاء الملف: src/routes/health.ts
الآن نحتاج لتسجيل هذا المسار في app.ts:
📝 استخدام أداة: file_edit
→ الإجراء: تعديل
→ المسار: src/app.ts
→ التغييرات:
+ import healthRouter from './routes/health';
+ app.use('/health', healthRouter);
⚠️ الموافقة مطلوبة: تعديل ملف src/app.ts
→ [Alice نقر سماح]
✅ تم تعديل الملف: src/app.ts
تم! أُضيفت نقطة نهاية فحص الصحة. اختبرها على GET /health.
(3) ▶ مثال 3
┌─ لوحة الأدوات ────────────────────────┐
│ 📝 file_edit (إنشاء) │
│ ├─ المسار: src/routes/health.ts │
│ ├─ الحالة: ✅ موافق عليه ومكتمل │
│ └─ المدة: 0.2ث │
│ │
│ 📝 file_edit (تعديل) │
│ ├─ المسار: src/app.ts │
│ ├─ التغييرات: +2 سطر │
│ ├─ الحالة: ✅ موافق عليه ومكتمل │
│ └─ المدة: 0.1ث │
└──────────────────────────────────────┘
7. إدارة الجلسات
(1) إنشاء جلسة جديدة
قائمة الجلسات اليسرى → انقر زر + → جلسة جديدة
تُسمى الجلسات تلقائيًا (بناءً على محتوى أول محادثة)، أو يمكن إعادة تسميتها يدويًا.

(2) تبديل الجلسات
انقر جلسات مختلفة في قائمة الجلسات اليسرى للتبديل. كل جلسة لها بشكل مستقل:
- سجل المحادثات
- إعدادات مساحة العمل
- سجلات تنفيذ الأدوات
(3) استمرار الجلسات
سجلات جلسات DSH تستخدم وضع الإلحاق فقط:

// كل SessionEvent يُحفظ تلقائيًا
interface SessionEvent {
type: 'user_message' | 'agent_message' | 'tool_call' | 'tool_result' | 'approval';
timestamp: number;
data: Record<string, unknown>;
}
بعد إغلاق المتصفح، لا تُفقد بيانات الجلسة — فقط أعد فتح واجهة الويب لاستعادتها.

❓ أسئلة شائعة
always في الإعدادات، أو بدّل إلى وضع Sandbox permissive. لا نوصي باستخدام وضع off في بيئات غير معزولة.📖 ملخص
- واجهة الويب تتكون من أربعة أجزاء: قائمة الجلسات، منطقة المحادثة، لوحة الأدوات، وشريط التحكم
- مساحة العمل تحدد نطاق عمليات Agent؛ يجب اختيار واحدة عند أول استخدام
- Agent ينفذ عمليات فعلية عبر الأدوات (search، file_edit، إلخ)، معروضة بصريًا في لوحة الأدوات
- آلية الموافقة تحمي المستخدمين من العمليات غير المقصودة: سماح / دائمًا / رفض بثلاثة مستويات
- وضع Sandbox يتحكم في صرامة الموافقة: strict / permissive / off
- الجلسات تُحفظ تلقائيًا؛ البيانات لا تُفقد عند إغلاق المتصفح
📝 تمارين
1. ⭐ أساسي: شغّل واجهة DSH Web UI، اختر مساحة عمل، وأرسل لـ Agent "ساعدني في عرض محتوى package.json الخاص بالمشروع". سجّل الأدوات التي استخدمها Agent.
2. ⭐⭐ متوسط: اطلب من Agent إنشاء ملف hello-dsh.txt في مساحة العمل بمحتوى "Hello, DSH!". راقب نافذة الموافقة المنبثقة، جرّب كل من السماح والرفض، وسجّل السلوكيات المختلفة اللاحقة.
3. ⭐⭐⭐ تحدٍ: اضبط وضع Sandbox permissive واطلب من Agent إكمال ثلاث عمليات في وقت واحد: 1) إنشاء ملف جديد؛ 2) تعديل ملف موجود؛ 3) تنفيذ أمر Shell ls -la. سجّل أي العمليات أثارت نوافذ موافقة وأيها لم يفعل، وحلل السبب.