DeepSeek Harness: دعم الوسائط المتعددة
آخر تحديث: 2026-08-31
النص هو مجرد طريقة واحدة لـ Agent لفهم العالم — الصور والصوت والفيديو هي لغة العالم الحقيقي. دعم DSH للوسائط المتعددة يتيح لـ Agent ليس فقط "قراءة الكود" بل أيضًا "رؤية الواجهات" و"سماع التعليقات" و"مشاهدة الفيديو"، موسعًا بشكل كبير حدود إدراك Agent.
📋 المتطلبات المسبقة: إكمال 06-tools.md، إلمام بأساسيات نظام الأدوات
1. ما ستتعلمه
- نظرة عامة على بنية الوسائط المتعددة في DSH
- طرق معالجة إدخال الصور
- حالة دعم إدخال الصوت/الفيديو
- تكامل أدوات الوسائط المتعددة
- آليات إرفاق وتحليل الملفات
2. نظرة عامة على بنية الوسائط المتعددة
(1) تدفق بيانات الوسائط المتعددة
graph TB
subgraph مصادر الإدخال
IMG[صور<br/>PNG/JPG/WebP]
AUD[صوت<br/>MP3/WAV]
VID[فيديو<br/>MP4/WebM]
DOC[مستندات<br/>PDF/CSV]
end
subgraph معالجة DSH
PARSE[محلل المرفقات]
ENCODE[ترميز الوسائط المتعددة]
LLM[استدلال LLM متعدد الوسائط]
end
subgraph المخرجات
TEXT[رد نصي]
TOOL[استدعاءات أدوات]
end
IMG --> PARSE
AUD --> PARSE
VID --> PARSE
DOC --> PARSE
PARSE --> ENCODE
ENCODE --> LLM
LLM --> TEXT
LLM --> TOOL
(2) مصفوفة دعم الوسائط المتعددة
| نوع الإدخال | دعم التنسيق | الاستقرار | الحجم الأقصى | ملاحظات |
|---|---|---|---|---|
| صور | PNG، JPG، WebP، GIF | ✅ مستقر | 20ميغابايت/صورة | قدرة الوسائط المتعددة الأكثر نضجًا |
| صوت | MP3، WAV، OGG | ⚠️ تجريبي | 50ميغابايت | يتطلب نموذجًا يدعم الصوت |
| فيديو | MP4، WebM | ⚠️ تجريبي | 100ميغابايت | تحليل استخراج إطار بإطار |
| مستندات | PDF، CSV، XLSX | ✅ مستقر | 50ميغابايت | استخراج نص + هيكلة |
(3) متطلبات النموذج
تعتمد ميزات الوسائط المتعددة على قدرات LLM متعددة الوسائط:
| النموذج | صور | صوت | فيديو | مستندات |
|---|---|---|---|---|
| deepseek-chat | ✅ | ❌ | ❌ | ✅ |
| gpt-4o | ✅ | ✅ | ✅ | ✅ |
| gpt-4-vision | ✅ | ❌ | ❌ | ✅ |
| claude-3.5-sonnet | ✅ | ❌ | ❌ | ✅ |
3. معالجة إدخال الصور
(1) إضافة صور في واجهة الويب
في منطقة محادثة واجهة الويب، يمكنك إضافة صور بالسحب أو اللصق:
┌─ منطقة المحادثة ──────────────────────────────┐
│ │
│ 👤 Alice: │
│ 📎 [screenshot.png] [ui-mockup.jpg] │
│ أي من تصميمي واجهة المستخدم هذين أفضل؟ │
│ │
│ [إرسال] │
└───────────────────────────────────────────┘
العمليات المدعومة:
- سحب وإفلات الصور في منطقة المحادثة
- لصق صور من الحافظة (Ctrl+V)
- النقر على زر المرفق لاختيار الملفات
- حد أقصى 5 صور لكل رسالة
(2) إضافة صور في وضع سطر الأوامر
▶ مثال 1: إرفاق صور في وضع سطر الأوامر
# تشغيل سطر الأوامر مع صورة مرفقة
dsh cli --attach ./screenshot.png
# استخدام أمر /attach خلال المحادثة
> /attach ./ui-mockup.jpg
> ما الخطأ في واجهة المستخدم هذه؟
# إرفاق صور متعددة
> /attach ./before.png ./after.png
> ما الفرق بين هاتين النسختين؟
(3) إرفاق صور عبر SDK
▶ مثال 2: إرسال صور باستخدام Python SDK
from dsh import DSHClient
client = DSHClient(base_url="http://127.0.0.1:3080")
session = client.create_session(workspace="/home/alice/project")
# إرفاق صورة واحدة
response = session.send(
"ما الخطأ في لقطة شاشة واجهة المستخدم هذه؟",
images=["./screenshot.png"]
)
print(response.content)
# إرفاق صور متعددة للمقارنة
response = session.send(
"قارن بين التصميمين، أيهما أفضل؟",
images=["./design-a.png", "./design-b.png"]
)
(4) تحليل الصور عمليًا
▶ مثال 3: تحليل خطأ في واجهة المستخدم
👤 Alice: [يُرفق error-page-screenshot.png]
ما الخطأ في صفحة الخطأ هذه؟ ساعدني في إصلاحها
🤖 Agent:
🔍 تحليل الصورة...
أرى المشاكل التالية:
1. نص رسالة الخطأ يفيض عن حدود الحاوية
2. زر "إعادة المحاولة" مقطوع، يعرض النصف فقط
3. لون الخلفية غير متسق مع مواصفات التصميم (يجب أن يكون #f5f5f5، وليس أبيض)
📝 استخدام أداة: file_edit (تعديل)
→ المسار: src/pages/ErrorPage.tsx
→ إصلاح 1: إضافة text-overflow: ellipsis
→ إصلاح 2: تعديل هامش الزر
→ إصلاح 3: تغيير لون الخلفية
⚠️ الموافقة مطلوبة: تعديل ملف src/pages/ErrorPage.tsx
(5) قيود معالجة الصور
| القيد | الوصف |
|---|---|
| الحد الأقصى لكل صورة | 20ميغابايت |
| الحد الأقصى لكل رسالة | 5 صور |
| الدقة | يُوصى بألا تتجاوز 4096×4096 |
| GIF المتحركة | يُستخدم الإطار الأول فقط |
| تحويل التنسيق | يُحوَّل تلقائيًا للتنسيق المدعوم من النموذج |
4. إدخال الصوت/الفيديو
(1) إدخال الصوت (تجريبي)
يتطلب إدخال الصوت نموذجًا يدعم فهم الصوت (مثل GPT-4o):
▶ مثال 4: إرسال صوت عبر SDK
# إرسال ملف صوتي
response = session.send(
"انقل هذا الصوت ولخّص النقاط الرئيسية",
audio=["./meeting-recording.mp3"]
)
print(response.content)
# نتائج نقل الصوت والملخص...
(2) إدخال الفيديو (تجريبي)
يستخدم معالجة الفيديو استراتيجية استخراج الإطارات:
graph LR
VID[ملف فيديو] --> EXTRACT[استخراج إطارات<br/>1 إطار/ثانية] --> SELECT[اختيار إطارات رئيسية<br/>كشف تغيير المشهد] --> ENCODE[ترميز متعدد الإطارات] --> LLM[تحليل LLM]
▶ مثال 5: إرسال فيديو عبر SDK
# إرسال ملف فيديو
response = session.send(
"حلل فيديو العرض هذا، اذكر الميزات المعروضة",
video=["./demo.mp4"]
)
print(response.content)
# 1. ميزة تسجيل الدخول (0:00-0:15)
# 2. عرض لوحة المعلومات (0:15-0:45)
# ...
(3) القيود الحالية
ميزات الصوت والفيديو لا تزال في المرحلة التجريبية:
| القيد | صوت | فيديو |
|---|---|---|
| المدة القصوى | 10 دقائق | 5 دقائق |
| الحجم الأقصى | 50ميغابايت | 100ميغابايت |
| متطلب النموذج | GPT-4o إلخ | GPT-4o إلخ |
| استخراج الإطارات | — | 1 إطار/ثانية، حد أقصى 300 إطار |
| الاستقرار | ⚠️ قد تنتهي المهلة | ⚠️ قد تنتهي المهلة |
5. مرفقات المستندات والتحليل
(1) تنسيقات المستندات المدعومة
| التنسيق | طريقة التحليل | المخرجات |
|---|---|---|
| استخراج نص + OCR | نص منظم | |
| CSV | تحليل الصفوف والأعمدة | بيانات جدولية |
| XLSX | تحليل أوراق العمل | بيانات جدولية |
| DOCX | استخراج نص | نص منظم |
| Markdown | قراءة مباشرة | نص خام |
▶ مثال 6: إرفاق ملف PDF
# تحليل مستند PDF
response = session.send(
"لخّص النقاط الأساسية لهذا المستند التقني",
files=["./api-specification.pdf"]
)
print(response.content)
(2) تحليل بيانات CSV
▶ مثال 7: تحليل بيانات CSV
# تحليل بيانات CSV
response = session.send(
"حلل بيانات المبيعات هذه، ابحث عن الاتجاهات والقيم الشاذة",
files=["./sales-2026.csv"]
)
print(response.content)
# نتائج تحليل البيانات...
يمكن لـ Agent أيضًا المعالجة الإضافية باستخدام الأدوات:
🤖 Agent:
📊 تحليل بيانات CSV...
→ الصفوف: 12,450
→ الأعمدة: 8
→ نطاق التاريخ: 2026-01 إلى 2026-08
النتائج الرئيسية:
1. متوسط نمو شهري 12%، لكن مارس انخفض 8% (يشتبه موسمية)
2. أفضل 3 منتجات تشكل 65% من إجمالي الإيرادات
3. معدل الاحتفاظ بالعملاء انخفض من 72% إلى 68%
🔧 استخدام أداة: shell
→ الأمر: python3 -c "import pandas; ..."
→ توليد تصور...
6. تكامل أدوات الوسائط المتعددة
(1) تنسيق الوسائط المتعددة مع الأدوات
يمكن لـ Agent دمج إدخال الوسائط المتعددة مع استدعاءات الأدوات:
graph TB
INPUT[إدخال وسائط متعددة] --> AGENT[تحليل Agent]
AGENT -->|صورة → كود| FE[file_edit]
AGENT -->|فيديو → نص برمجي| SH[shell]
AGENT -->|مستند → قاعدة بيانات| DB[database.query]
▶ مثال 8: تنسيق صورة + أداة
👤 Bob: [يُرفق api-response-screenshot.png]
تنسيق استجابة API هذا خاطئ، ساعدني في التحقق من الكود
🤖 Agent:
🔍 تحليل لقطة الشاشة...
→ التنسيق المتوقع: { data: [...], meta: {...} }
→ التنسيق الفعلي: { results: [...] }
🔍 استخدام أداة: search
→ النمط: "results"
→ النوع: محتوى
→ وُجد في: src/api/handlers.ts:45
📝 استخدام أداة: file_edit (قراءة)
→ قراءة src/api/handlers.ts
📝 استخدام أداة: file_edit (تعديل)
→ إصلاح تنسيق الاستجابة في السطر 45-52
→ تغيير "results" إلى "data"، إضافة حقل "meta"
(2) معالجة دفعية للصور
▶ مثال 9: صور دفعية + تعديل ملفات
import glob
screenshots = glob.glob("./screenshots/*.png")
response = session.send(
"راجع جميع لقطات الشاشة، ابحث عن صفحات بمشاكل واجهة مستخدم، وأصلحها واحدة تلو الأخرى",
images=screenshots[:5] # حد أقصى 5 صور
)
(3) استدلال تسلسلي للوسائط المتعددة
👤 Alice: [يُرفق architecture-diagram.png]
أنشئ إعداد Docker Compose بناءً على مخطط البنية هذا
🤖 Agent:
🔍 تحليل مخطط البنية...
→ حُددت 4 خدمات: API، Worker، Database، Cache
→ الاتصالات: API → Database، API → Cache، Worker → Database
📝 استخدام أداة: file_edit (إنشاء)
→ إنشاء docker-compose.yml
→ 4 خدمات مع شبكة مناسبة
✅ تم توليد إعداد Docker Compose، بما في ذلك:
- api-service (Express.js، منفذ 3000)
- worker-service (Node.js، مهام خلفية)
- postgres (PostgreSQL 16، وحدة تخزين محملة)
- redis (Redis 7، طبقة تخزين مؤقت)
7. الإعداد والتحسين
(1) إعداد الوسائط المتعددة
# dsh.config.yaml
multimodal:
# إعدادات الصور
images:
max_size_mb: 20
max_per_message: 5
resize_large: true # تغيير حجم الصور الكبيرة تلقائيًا
max_resolution: [4096, 4096]
# إعدادات الصوت
audio:
max_duration_minutes: 10
max_size_mb: 50
transcription_model: "whisper-1"
# إعدادات الفيديو
video:
max_duration_minutes: 5
max_size_mb: 100
frame_rate: 1 # إطارات لكل ثانية للاستخراج
max_frames: 300
# إعدادات المستندات
documents:
max_size_mb: 50
pdf_ocr_enabled: true
csv_max_rows: 100000
(2) تحسين الأداء
إدخال الوسائط المتعددة يزيد استهلاك الرموز ووقت الاستجابة:
| استراتيجية التحسين | الوصف | التأثير |
|---|---|---|
| ضغط الصور | ضغط بدقة مناسبة قبل الرفع | تقليل 50-80% من رموز الصور |
| اختيار الإطارات الرئيسية | إرسال الإطارات الرئيسية فقط للفيديو | تقليل 90% من إطارات الفيديو |
| استخراج النص | تفضيل استخراج النص على OCR لملفات PDF | أسرع وأدق |
| إرسال دفعي | إرسال أعداد كبيرة من الصور على دفعات | تجنب انتهاء المهلة |
❓ أسئلة شائعة
📖 ملخص
- وسائط DSH المتعددة تدعم الصور (مستقرة)، الصوت/الفيديو (تجريبي)، المستندات (مستقرة)
- إدخال الصور: سحب/لصق في واجهة الويب،
/attachفي سطر الأوامر، معاملimagesفي SDK - الصوت/الفيديو يتطلب نماذج LLM تدعم الوسائط المتعددة
- تحليل المستندات يدعم PDF، CSV، XLSX، إلخ
- تنسيق الوسائط المتعددة + الأدوات: صورة→إصلاح كود، مستند→تحليل بيانات
- ملف الإعداد يمكنه تعديل حدود الحجم ومعدل الإطارات وتبديل OCR، إلخ
- الوسائط المتعددة تزيد استهلاك الرموز؛ انتبه لاستراتيجيات التحسين
📝 تمارين
1. ⭐ أساسي: ارفع لقطة شاشة لواجهة مستخدم في واجهة الويب واجعل Agent يصف محتوى لقطة الشاشة. سجّل نتائج تحليل Agent والأدوات المستخدمة.
2. ⭐⭐ متوسط: ارفع ملف بيانات CSV واجعل Agent يحلل البيانات ويقترح تصورات. استخدم SDK لكتابة نص لهذه العملية.
3. ⭐⭐⭐ تحدٍ: صمم سير عمل وسائط متعددة — ارفع صورة تصميم واجهة مستخدم، اجعل Agent يُولد كود واجهة أمامية مقابل بناءً على التصميم، ثم التقط لقطة شاشة لمقارنة النتيجة المُولدة مع التصميم الأصلي. سجّل سلسلة استدعاءات الأدوات الكاملة.