
ستون حاوية على خادم واحد
صندوق معادن عارية واحد يشغل عشرات إلى مئات حاويات Hoody. يجعل KSM و BTRFS dedup التكلفة الإضافية قريبة من الصفر.
تريد لجنة من النماذج تراجع المدخل ذاته. خمس حاويات، خمسة مزوّدين مختلفين، خمسة آراء. إطار التنسيق المعتاد يخترع مئة سطر للتنسيق بينها. أنت لا تكتبها — كل وكيل يحصل على مسار أنبوب خاص به، والحَكَم يستدعي الخمسة بالتوازي عبر curl.
كل وكيل يعمل في حاويته الخاصة بمعالج نموذج خاص. كل واحد يبثّ حكمه إلى مسار أنبوب خاص به. عملية الحَكَم تستدعي المسارات الخمسة بالتوازي عبر curl — الأنبوب يحتفظ بكل حكم حتى يتصل الحَكَم، ثم يبثّ البايتات. لا ناقل رسائل، لا إطار تنسيق، لا رسم بياني للنداءات الراجعة.
خمس حاويات تُقلِع بالتوازي، كل واحدة بمعالج نموذج مختلف. الحَكَم يرسل POST بالتوجيه إلى نقطة نهاية الوكيل في كل حاوية دفعة واحدة.
بينما يفكّر النموذج، يضخّ الوكيل حكمه إلى pipe/agent-N باستخدام PUT. الأنبوب يحتفظ بالبايتات — بلا قرص، بلا وسيط — حتى يسحبها أحدهم عبر curl.
GET pipe/agent-1 وحتى pipe/agent-5 بأمر curl واحد لكلٍّ منها. الأنبوب يوجّه بايتات كل وكيل إلى الحَكَم بمجرد اتصال الطرفين.
الحَكَم يقرأ JSON من كل مسار، ويعدّ الأصوات، ويعيد الأغلبية. خمس حاويات، مسار HTTP واحد لكلٍّ منها، بلا SDK بينها.
#!/usr/bin/env bash
set -euo pipefail
PROMPT='مراجعة هذا الطلب من أجل قضايا الأمان'
AGENTS=(claude-sonnet gpt-4o gemini llama mixtral)
BASE=https://pipe.hoody.com/api/v1/pipe
# كل حاوية تبث حكمها إلى مسار خاص.
# خمس مسارات مروحة في واحد قاضي — بلا وسيط، بلا SDK.
for i in "$[!AGENTS[@]]"; do
N=$((i + 1))
curl -s -X POST "https://agent-$N.hoody.com/v1/run" \
-d "[\"prompt\": \"$PROMPT\", \"sink\": \"$BASE/agent-$N\"]" &
done
# اقرأ جميع خمسة أحكام بالتوازي.
VERDICTS=()
for i in 1 2 3 4 5; do
VERDICTS+=("$(curl -s "$BASE/agent-$i")")
done
wait
# عد — الأغلبية تفوز.
printf '%s\n' "$[VERDICTS[@]]" \
| jq -r .verdict \
| sort | uniq -c | sort -rn | head -1PUT يدفع كل حكم إلى الأعلى. GET يسحب كلًّا منها إلى الأسفل. الأنبوب هو السلك — البايتات تنتقل من الوكيل إلى الحَكَم بمجرد اتصال الطرفين، مع التعامل مع الضغط العكسي لكل مسار. لإضافة وكيل سادس تُقلِع حاوية سادسة وتضيف سطرًا سادسًا إلى الحلقة.
الآلية شكل واحد — خمس حاويات، خمسة مسارات، حَكَم واحد — لكن القيمة تُقرأ بشكل مختلف بحسب ما تحاول التغلّب عليه.
لا تحتاج إلى إطار تنسيق لإرسال توجيه إلى خمس واجهات API ومتوسّط الإجابات. حلقة bash بخمسة استدعاءات curl تفعل هذا. مجموعة الوكلاء كانت دومًا خمسة استدعاءات HTTP في معطف.
لإضافة وكيل: حاوية أخرى، مسار أنبوب آخر، سطر إضافي في جلب الحَكَم المتوازي. لإسقاط واحد: أوقف الحاوية، احذف السطر. لا شيء لإعادة ضبطه — لا ناقل رسائل، ولا رسم بياني للنداءات الراجعة، ولا ترحيل مخطط.
النماذج الرخيصة تبثّ أولًا؛ النماذج المكلفة تكمل فقط حين يكون الإجماع غير واضح. ولأن كل وكيل حاوية مستقلة بأنبوبها الخاص، يمكنك إنهاء اللوحة بمجرد توافق ثلاثة — بلا حالة مشتركة، ولا RPC للإلغاء، فقط أغلق الأنابيب.
كل وكيل يحصل على مسار. المسار هو السلك.
خمسة مزوّدي نماذج، خمس حاويات، خمسة مسارات HTTP — وحَكَم في عشرين سطرًا من bash. إطار التنسيق كان دومًا يتظاهر بأن HTTP غير موجود.
الحَكَم يقرأ كل مسار، ويعدّ الأصوات، ويعيد الأغلبية. لإضافة وكيل، أَقلِع حاوية وأضف مسارًا. لا يوجد ناقل رسائل لإعادة ضبطه.
كل إطار هنا يطرح مفهومه الخاص لـ"الوكيل" مع طريقة خاصة بالمزوّد ليتحدث وكيل إلى آخر. الأنبوب يختزل ذلك السطح إلى HTTP — مسار لكل وكيل، curl في الاتجاهين.
لا تحتاج إلى منسّق. تحتاج إلى خمس حاويات وخمسة مسارات أنبوب. الحَكَم عشرون سطرًا من bash.