<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://thakicloud.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://thakicloud.github.io/" rel="alternate" type="text/html" /><updated>2026-06-24T08:34:06+09:00</updated><id>https://thakicloud.github.io/feed.xml</id><title type="html">Thaki Cloud Tech Blog | ThakiCloud | 다키클라우드 기술 블로그</title><subtitle>Thaki Cloud (ThakiCloud, 다키클라우드, thaki cloud, THAKI CLOUD, ثاكي كلاود)는 AI/ML Engineering, LLMOps, DevOps 분야의 최신 기술과 실무 경험을 공유하는 전문 기술 블로그입니다. 머신러닝 모델 운영, 쿠버네티스, 클라우드 인프라, AI 엔지니어링 커리어, 인공지능 기술 블로그, 다키클라우드 개발 팀의 깊이 있는 인사이트를 제공합니다. مدونة تقنية متخصصة في هندسة الذكاء الاصطناعي والحوسبة السحابية.</subtitle><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><entry xml:lang="ar"><title type="html">محاكيات أندرويد داخل حاويات - بناء مزرعة أجهزة قابلة للتكرار على Kubernetes باستخدام docker-android</title><link href="https://thakicloud.github.io/ar/dev/docker-android-k8s-emulator/" rel="alternate" type="text/html" title="محاكيات أندرويد داخل حاويات - بناء مزرعة أجهزة قابلة للتكرار على Kubernetes باستخدام docker-android" /><published>2026-06-24T00:00:00+09:00</published><updated>2026-06-24T00:00:00+09:00</updated><id>https://thakicloud.github.io/ar/dev/docker-android-k8s-emulator</id><content type="html" xml:base="https://thakicloud.github.io/ar/dev/docker-android-k8s-emulator/"><![CDATA[<pre><code class="language-mermaid">flowchart LR
    subgraph NODE["عقدة K8s مع KVM / Pod"]
      EMU["محاكي Android (QEMU + KVM، اختياري CUDA)"]
      KVM["/dev/kvm"]
    end
    KVM --&gt;|passthrough| EMU
    EMU --&gt; SVC["خدمة ADB"]
    SVC --&gt; CI["مزرعة CI"]
    SVC --&gt; SCRCPY["تحكم scrcpy عن بُعد"]
</code></pre>
<h2 id="نظرة-عامة">نظرة عامة</h2>

<p>اختبار تطبيق موبايل يستلزم أجهزة أندرويد. إدارة أسطول من الأجهزة الحقيقية عبء صيانة مُضنٍ، وتثبيت محاكٍ ثقيل على كل جهاز مطوّر يُفضي إلى اختلاف البيئات وضعف قابلية التكرار. تتضاعف هذه المشكلة حين تُريد إدراج اختبارات أندرويد في خط CI، إذ يحتاج كل عقدة بناء إلى إعداد محاكٍ متسق.</p>

<p>يحل <code class="language-plaintext highlighter-rouge">docker-android</code> (إصدار HQarroum) هذه المشكلة بالحاويات. يُغلّف محاكي أندرويد بتهيئة بسيطة، ويُشغّله بلا واجهة رسومية، ويُتيح ADB والتحكم بالشاشة عبر الشبكة. حاوية واحدة توفر بيئة أندرويد نظيفة ومتسقة في ثوانٍ، مما يجعلها مناسبة تماماً لـ CI/CD والاختبارات الآلية.</p>

<p>يتحقق هذا المقال من بنية docker-android ومتطلباته الفعلية وفق التوثيق، ثم يستعرض كيف تتعامل منصة Kubernetes مثل ThakiCloud مع هذا النوع من أحمال عمل الأجهزة. محاكاة أندرويد ليست في صميم منصتنا للذكاء الاصطناعي، لكن السؤال حول عزل الحاويات ذات الامتيازات التي تحتاج KVM passthrough وتسريع GPU يتقاطع مباشرة مع قدرات بنيتنا التحتية.</p>

<hr />

<h2 id="ما-هو-docker-android">ما هو docker-android</h2>

<p>يجمع docker-android الخاص بـ HQarroum بين محاكي أندرويد ودعم KVM و JRE 11 في صورة مدمجة مبنية على Alpine (الإصدار الحالي 1.1.0). النية التصميمية واضحة: كشف محاكي أندرويد كامل يمكن التحكم به عن بُعد بأقل بصمة برمجية ممكنة. تحتوي الصورة على المحاكي نفسه، وخادم ADB للوصول الخارجي، وQEMU مع libvirt.</p>

<p>الخصائص الرئيسية:</p>

<ul>
  <li><strong>بصمة بسيطة</strong>: مبنية على Alpine لتحسين الحجم. البناء بدون SDK أو محاكٍ ينتج صورة أصغر بكثير.</li>
  <li><strong>قابلية التخصيص</strong>: إصدار أندرويد ونوع الجهاز ونوع الصورة كلها قابلة للاختيار.</li>
  <li><strong>توجيه المنافذ مدمج</strong>: يُكشف المحاكي و ADB عبر واجهة شبكة الحاوية.</li>
  <li><strong>بلا واجهة رسومية</strong>: لا تحتاج إلى GUI، مما يجعلها مناسبة لمزارع CI. يمكن الوصول إلى الشاشة عن بُعد عبر <a href="https://github.com/Genymobile/scrcpy">scrcpy</a>.</li>
  <li><strong>قابلية التكرار</strong>: تُعاد صورة المحاكي إلى حالتها الأصلية عند كل إعادة تشغيل، فكل تشغيل يبدأ من حالة متطابقة.</li>
</ul>

<p>يُوضح الرسم البياني أعلاه نشراً افتراضياً لهذه الحاوية على ThakiCloud Kubernetes. يعمل المحاكي في pod على عقدة مُفعَّل فيها KVM مع تمرير <code class="language-plaintext highlighter-rouge">/dev/kvm</code>، ويُستخدم المتغير cuda حين يُحتاج تسريع GPU. يُكشف ADB كـ Service ليصل إليه مزرعة CI و scrcpy.</p>

<hr />

<h2 id="التثبيت-والتكامل">التثبيت والتكامل</h2>

<p>يجمع البناء الافتراضي Android SDK وأدوات المنصة والمحاكي في الصورة. تشغيل كل شيء باستخدام docker-compose:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># المحاكي الأساسي</span>
docker compose up android-emulator

<span class="c"># تسريع GPU</span>
docker compose up android-emulator-cuda

<span class="c"># تسريع GPU + Google Play Store</span>
docker compose up android-emulator-cuda-store
</code></pre></div></div>

<p>يمكن البناء مباشرة باستخدام Docker:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker build <span class="nt">-t</span> android-emulator <span class="nb">.</span>
</code></pre></div></div>

<p>بعد بناء الصورة، شغّل الحاوية مع تثبيت محرك KVM. استخدام صورة Play Store يستلزم مشاركة المحاكي والعميل لنفس <code class="language-plaintext highlighter-rouge">adbkey</code>؛ أنشئه بـ <code class="language-plaintext highlighter-rouge">adb keygen adbkey</code> وضعه في مجلد <code class="language-plaintext highlighter-rouge">./keys</code>.</p>

<p>يتباين حجم الصورة تبايناً كبيراً حسب متغير البناء. جدول المقارنة من توثيق المستودع:</p>

<table>
  <thead>
    <tr>
      <th>متغير البناء</th>
      <th>غير مضغوط</th>
      <th>مضغوط</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>API 33 + المحاكي</td>
      <td>5.84 GB</td>
      <td>1.97 GB</td>
    </tr>
    <tr>
      <td>API 32 + المحاكي</td>
      <td>5.89 GB</td>
      <td>1.93 GB</td>
    </tr>
    <tr>
      <td>API 28 + المحاكي</td>
      <td>4.29 GB</td>
      <td>1.46 GB</td>
    </tr>
    <tr>
      <td>بدون SDK أو محاكٍ</td>
      <td>414 MB</td>
      <td>138 MB</td>
    </tr>
  </tbody>
</table>

<p>الصور التي تتضمن المحاكي تتجاوز 1.5 GB حتى بعد الضغط. عند التوزيع على عقد كثيرة، يجب مراعاة عرض نطاق السجل وسعة قرص العقد.</p>

<hr />

<h2 id="التحقق-من-السلوك-الفعلي">التحقق من السلوك الفعلي</h2>

<p>لم يشمل هذا المقال التحقق من إقلاع الحاوية فعلياً. تسجيل أمين: فشل التحقق هنا (لا يوجد Docker daemon على المضيف، وmacOS لا يوفر <code class="language-plaintext highlighter-rouge">/dev/kvm</code>). يتطلب docker-android تسريع KVM للأجهزة، لذا التشغيل الفعلي ممكن فقط على مضيف Linux أو عقدة KVM تدعم المحاكاة الافتراضية المتداخلة.</p>

<p>ما أمكن التحقق منه استُقي مباشرة من توثيق المستودع. جدول مقارنة أحجام الصور أعلاه يعكس أرقاماً مُصرَّحاً بها في التوثيق؛ متغيرات البناء وأسماء خدمات compose ومتطلبات تثبيت KVM كلها مستندة إلى التوثيق. أرقام كوقت الإقلاع أو معدل معالجة الاختبارات التي لم نقسها لم نُدرجها. عند النشر الفعلي، بعد توفير عقد KVM، الإجراء الصحيح هو قياس وقت إقلاع الحاوية وزمن استجابة ADB والحد الأقصى لعدد المحاكيات المتزامنة مباشرة.</p>

<hr />

<h2 id="الآثار-على-منصة-thakicloud-k8s-aiml-saas">الآثار على منصة ThakiCloud K8s AI/ML SaaS</h2>

<p>docker-android ليس أداة ذكاء اصطناعي في حد ذاتها. لكن المتطلبات التشغيلية التي يكشف عنها تتقاطع بدقة مع ما تُتقنه ThakiCloud.</p>

<p>أولاً، <strong>عزل أحمال عمل مرور الأجهزة</strong>. المحاكي حاوية ذات امتيازات في جوهرها تتطلب <code class="language-plaintext highlighter-rouge">/dev/kvm</code>. تشغيل هذا النوع من أحمال العمل بأمان في بيئة Kubernetes متعددة المستأجرين يستلزم اختيار العقد بعناية والمكوّنات الإضافية للأجهزة وسياقات الأمان. تُجهّز ThakiCloud بالفعل وحدات GPU عبر مكوّنات الأجهزة الإضافية وKueue؛ يمكن التعامل مع KVM passthrough بالنمط ذاته.</p>

<p>ثانياً، <strong>مزارع الاختبار القابلة للتكرار</strong>. تغليف المحاكيات عديمة الواجهة الرسومية كحاويات يتيح توسيع البيئات النظيفة أفقياً عبر عدد العقد المطلوب. تشغيل اختبارات Appium UI متوازية كثيرة من خط CI/CD حالة استخدام نموذجية لجدولة وظائف Kubernetes.</p>

<p>ثالثاً، ونظرة إلى الأمد البعيد، يمتد هذا بشكل طبيعي نحو <strong>التحقق من أداء الذكاء الاصطناعي على الجهاز</strong>. التحقق من سلوك النماذج الخفيفة أو العوامل العاملة على أجهزة الموبايل على نطاق واسع يتطلب مزرعة أجهزة تنشئ بيئات أندرويد معزولة كثيرة وتُشغّل اختبارات الانحدار آلياً. هذا ليس اهتماماً محورياً لمنصتنا اليوم، لكن مع نضج قدرات تنظيم GPU والأجهزة متعددة المستأجرين لدينا، تغدو مزرعة QA للذكاء الاصطناعي على الموبايل من هذا النوع شيئاً يمكن تقديمه على البنية التحتية ذاتها.</p>

<p>باختصار، docker-android ليس منتجاً نبنيه، لكنه دراسة حالة جيدة في ترويض أحمال عمل الحاويات الثقيلة التي تجمع بين الامتياز ومرور الأجهزة وتسريع GPU على Kubernetes. هذه صورة ملموسة لقدرات تنظيم Kubernetes للأغراض العامة التي تُؤكد عليها ThakiCloud.</p>

<hr />

<h2 id="القيود-والاعتراضات">القيود والاعتراضات</h2>

<ul>
  <li><strong>اعتماديات ثقيلة</strong>: تسريع KVM للأجهزة غير قابل للتفاوض. في البيئات التي لا تدعم المحاكاة الافتراضية المتداخلة، يتدهور الأداء بشكل حاد أو لا يُقلع المحاكي أصلاً. اختيار عقدة السحابة يصبح قيداً صارماً.</li>
  <li><strong>تضخم الصورة</strong>: الصور التي تتضمن المحاكي تبلغ عدة GB حتى بعد الضغط. التوزيع عبر عقد كثيرة يُراكم تكاليف السجل والقرص.</li>
  <li><strong>البُعد عن صلة الذكاء الاصطناعي</strong>: بصراحة، هذه الأداة بعيدة عن أحمال عمل التدريب والاستدلال التي تمثل صميم منصتنا. للمؤسسات التي ليس لديها طلب اختبار موبايل، القيمة المباشرة محدودة. قيمة هذا المقال ليست في “المحاكي بحد ذاته” بل في “أنماط تشغيل حاويات مرور الأجهزة”.</li>
  <li><strong>أمن الحاويات ذات الامتيازات</strong>: الوصول إلى <code class="language-plaintext highlighter-rouge">/dev/kvm</code> وإعدادات الامتياز تُعقّد حدود أمان المستأجرين المتعددين. الحفاظ على عزل المستأجرين يستلزم مجمّعات عقد مخصصة وسياسات صارمة.</li>
</ul>

<p>docker-android أداة قوية لأتمتة اختبارات الموبايل، ومرجع مفيد لكيفية التعامل مع أحمال عمل الأجهزة على Kubernetes. حتى قبل اللحظة التي نحتاجها فيها مباشرة، أنماط التشغيل تستحق الإلمام بها مسبقاً.</p>

<hr />

<h2 id="المصادر">المصادر</h2>

<ul>
  <li>docker-android (HQarroum): <a href="https://github.com/HQarroum/docker-android">https://github.com/HQarroum/docker-android</a></li>
  <li>صورة Docker Hub: <code class="language-plaintext highlighter-rouge">halimqarroum/docker-android</code></li>
  <li>scrcpy (التحكم بالشاشة عن بُعد): <a href="https://github.com/Genymobile/scrcpy">https://github.com/Genymobile/scrcpy</a></li>
  <li>التغريدة الأصلية: <a href="https://x.com/hjguyhan/status/2069427245295493446">https://x.com/hjguyhan/status/2069427245295493446</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="dev" /><category term="docker" /><category term="android" /><category term="kubernetes" /><category term="kvm" /><category term="ci-cd" /><summary type="html"><![CDATA[يُغلّف docker-android محاكي أندرويد في حاوية واحدة ويُشغّله بلا واجهة رسومية. نتحقق من أحجام الصور ومتطلبات KVM وفق التوثيق الرسمي، ونستعرض كيفية تشغيل أحمال عمل مرور الأجهزة على منصة ThakiCloud Kubernetes.]]></summary></entry><entry xml:lang="ar"><title type="html">توجيه Claude Code إلى النماذج المحلية — بناء بنية تحتية للبرمجة على الخوادم الداخلية باستخدام claude-code-router</title><link href="https://thakicloud.github.io/ar/llmops/claude-code-router-onprem-routing/" rel="alternate" type="text/html" title="توجيه Claude Code إلى النماذج المحلية — بناء بنية تحتية للبرمجة على الخوادم الداخلية باستخدام claude-code-router" /><published>2026-06-24T00:00:00+09:00</published><updated>2026-06-24T00:00:00+09:00</updated><id>https://thakicloud.github.io/ar/llmops/claude-code-router-onprem-routing</id><content type="html" xml:base="https://thakicloud.github.io/ar/llmops/claude-code-router-onprem-routing/"><![CDATA[<pre><code class="language-mermaid">flowchart LR
    CC["Claude Code"] --&gt; CCR["وكيل claude-code-router"]
    CCR --&gt;|default| VLLM["vLLM داخلي (Qwen3 / DeepSeek)"]
    CCR --&gt;|background| OLLAMA["Ollama محلي"]
    CCR --&gt;|think| ANTH["Anthropic API"]
    CCR --&gt;|longContext| OR["OpenRouter"]
    VLLM --&gt; K8S["ThakiCloud K8s (Kueue + GPU)"]
</code></pre>

<h2 id="نظرة-عامة">نظرة عامة</h2>

<p>Claude Code أداة برمجة ذكية تعمل في سطر الأوامر. يقوم سلوكها الافتراضي على إرسال كل طلب إلى واجهة برمجة تطبيقات Anthropic، غير أن الطلبات لا تتساوى في ثقلها. التلخيص في الخلفية، والإكمال التلقائي القصير، وتحليل السياقات الطويلة، وإعادة الهيكلة التي تستدعي تفكيراً عميقاً — كل منها يحتاج إلى مستوى مختلف من النماذج. إرسال كل طلب عبر النموذج الأغلى يُراكم التكاليف بسرعة، بينما إرسال الكل عبر نموذج رخيص يُفسد الجودة.</p>

<p>يحل <code class="language-plaintext highlighter-rouge">claude-code-router</code> (اختصاراً CCR) هذه المعضلة بطبقة توجيه. يضع وكيلاً بين Claude Code وخلفيات النماذج، ويُفرِّع حركة المرور إلى مزودين ونماذج مختلفة بحسب نوع الطلب. انتشرت الأداة مؤخراً على وسائل التواصل الاجتماعي تحت عنوان استفزازي من قبيل “كيف تستخدم Claude Code مجاناً إلى الأبد”، لكن هذا المقال يتجاوز المبالغة ويركز على القيمة الحقيقية: توجيه النماذج والاستضافة الذاتية.</p>

<p>من منظور ThakiCloud، الجاذبية في CCR واضحة. نحن نُجدوِل وحدات GPU بـ Kueue على Kubernetes ونخدم النماذج المفتوحة بـ vLLM. تتيح CCR توجيه طلبات Claude Code إلى نقاط نهاية vLLM الداخلية، وهو ما يتطابق تماماً مع متطلب الأمان المتمثل في تشغيل أدوات إنتاجية المطورين دون إخراج الكود المصدري خارج المنظمة.</p>

<hr />

<h2 id="ما-الذي-يفعله-claude-code-router">ما الذي يفعله claude-code-router</h2>

<p>CCR خادم وكيل يستقبل الطلبات بصيغة رسائل Anthropic، ويحوِّلها اختيارياً إلى صيغة متوافقة مع OpenAI أو صيغة أخرى، ثم يُعيد توجيهها إلى المزود المُهيَّأ. لا يُعدِّل عميل Claude Code نفسه. تكفي إشارة متغيرات البيئة إلى CCR، وتتولى الأداة بعدها كل عمليات التوجيه.</p>

<p>القدرات الجوهرية:</p>

<ul>
  <li><strong>توجيه النماذج</strong>: يُخصِّص نماذج مختلفة لأنواع الطلبات — <code class="language-plaintext highlighter-rouge">default</code> و<code class="language-plaintext highlighter-rouge">background</code> و<code class="language-plaintext highlighter-rouge">think</code> و<code class="language-plaintext highlighter-rouge">longContext</code> و<code class="language-plaintext highlighter-rouge">webSearch</code> و<code class="language-plaintext highlighter-rouge">image</code> وغيرها.</li>
  <li><strong>دعم متعدد المزودين</strong>: يسجِّل خلفيات متعددة في آنٍ واحد — OpenRouter وDeepSeek وOllama وGemini وVolcengine وSiliconFlow وسواها.</li>
  <li><strong>محوِّلات الطلب والاستجابة</strong>: لكل مزود مواصفات API خاصة به؛ تمتص المحوِّلات هذه الاختلافات. المحوِّلات المدمجة تشمل <code class="language-plaintext highlighter-rouge">openrouter</code> و<code class="language-plaintext highlighter-rouge">deepseek</code> و<code class="language-plaintext highlighter-rouge">gemini</code> و<code class="language-plaintext highlighter-rouge">tooluse</code>.</li>
  <li><strong>تبديل النماذج الديناميكي</strong>: تغيير النموذج الفعَّال فور الحاجة داخل Claude Code بأمر <code class="language-plaintext highlighter-rouge">/model</code>.</li>
  <li><strong>إدارة النماذج عبر CLI</strong>: إدارة النماذج والمزودين من سطر الأوامر بـ <code class="language-plaintext highlighter-rouge">ccr model</code>.</li>
  <li><strong>الإعدادات المسبقة والمكونات الإضافية</strong>: تصدير الإعدادات كإعدادات مسبقة، وتثبيتها من سوق إلكتروني، وتوسيع الوظائف بمحوِّلات مخصصة.</li>
</ul>

<p>يوضح الرسم أعلاه تدفق التوجيه في بيئة ThakiCloud. تذهب مهام البرمجة الاعتيادية (<code class="language-plaintext highlighter-rouge">default</code>) إلى Qwen3 أو DeepSeek التي يخدمها mجموعة vLLM الداخلية؛ المهام الخفيفة في الخلفية تذهب إلى نسخة Ollama محلية؛ مهام التفكير العميق تصل إلى واجهة برمجة Anthropic عند الضرورة فحسب؛ طلبات السياق الطويل تمر عبر OpenRouter. هكذا يتوافق طبيعة الطلب مع تكلفة النموذج.</p>

<hr />

<h2 id="التثبيت-والتكامل">التثبيت والتكامل</h2>

<p>CCR موزَّعة كحزمة npm عالمية. الأمر الفعلي للتثبيت وناتجه:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span> <span class="nt">-g</span> @musistudio/claude-code-router
</code></pre></div></div>

<p>التحقق من الإصدار بعد التثبيت:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>ccr version
claude-code-router version: 2.0.0
</code></pre></div></div>

<p>الأوامر المتاحة تظهر بـ <code class="language-plaintext highlighter-rouge">ccr -h</code>. جزء من الناتج الفعلي:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Usage: ccr [command] [preset-name]

Commands:
  start         Start server
  stop          Stop server
  restart       Restart server
  status        Show server status
  code          Execute claude command
  model         Interactive model selection and configuration
  preset        Manage presets (export, install, list, delete)
  install       Install preset from GitHub marketplace
  activate      Output environment variables for shell integration
  ui            Open the web UI in browser
  -v, version   Show version information
</code></pre></div></div>

<p>يوجد ملف الإعدادات في <code class="language-plaintext highlighter-rouge">~/.claude-code-router/config.json</code>. المقطعان الأساسيان هما مصفوفة <code class="language-plaintext highlighter-rouge">Providers</code> وكائن <code class="language-plaintext highlighter-rouge">Router</code>. مثال على إعداد يُسجِّل vLLM الداخلي لـ ThakiCloud ونسخة Ollama محلية معاً:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"LOG"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
  </span><span class="nl">"API_TIMEOUT_MS"</span><span class="p">:</span><span class="w"> </span><span class="mi">600000</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Providers"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_base_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://vllm.internal.thaki:8000/v1/chat/completions"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"internal"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"models"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"Qwen3-32B"</span><span class="p">,</span><span class="w"> </span><span class="s2">"deepseek-v3"</span><span class="p">]</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_base_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:11434/v1/chat/completions"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"models"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"qwen2.5-coder:latest"</span><span class="p">]</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">],</span><span class="w">
  </span><span class="nl">"Router"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"default"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm,Qwen3-32B"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"background"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama,qwen2.5-coder:latest"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"longContext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm,deepseek-v3"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>تشغيل الخادم وتوجيه Claude Code عبر CCR:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ccr start            <span class="c"># تشغيل خادم التوجيه</span>
ccr code <span class="s2">"..."</span>       <span class="c"># تنفيذ Claude Code عبر CCR</span>
<span class="c"># أو تطبيق متغيرات البيئة على مستوى الصدفة بأكملها</span>
<span class="nb">eval</span> <span class="s2">"</span><span class="si">$(</span>ccr activate<span class="si">)</span><span class="s2">"</span>
</code></pre></div></div>

<p>بمجرد ضبط <code class="language-plaintext highlighter-rouge">api_base_url</code> على نقطة نهاية داخلية، يتدفق ذلك الحركة المرورية إلى نسخة vLLM في مجموعتنا بدلاً من Anthropic. الكود والمحادثات لا تغادر المنظمة.</p>

<hr />

<h2 id="التحقق-من-السلوك-الفعلي">التحقق من السلوك الفعلي</h2>

<p>يتحقق هذا المقال من الأداة عبر التثبيت والتشغيل. اكتمل التثبيت العالمي عبر npm في أقل من ثانية؛ الإصدار هو 2.0.0؛ ويكشف CLI بالضبط الأوامر الموثَّقة — <code class="language-plaintext highlighter-rouge">start</code> و<code class="language-plaintext highlighter-rouge">stop</code> و<code class="language-plaintext highlighter-rouge">code</code> و<code class="language-plaintext highlighter-rouge">model</code> و<code class="language-plaintext highlighter-rouge">preset</code> و<code class="language-plaintext highlighter-rouge">ui</code> وغيرها. كل الناتج المقتبس أعلاه مأخوذ من بيئة محلية.</p>

<p>في المقابل، لم تُقَس جولات الاستدلال الفعلية على نقطة نهاية vLLM داخلية في هذه البيئة. يتطلب ذلك نقطة نهاية GPU فعَّالة ومفتاح API صالحاً، ولم يُخترَع أي رقم للتأخير أو معدل معالجة الرموز لملء الفراغ. جودة التوجيه وموثوقية استدعاء الأدوات تعتمدان اعتماداً كبيراً على النموذج الخلفي، لذا يتوجب على كل من يعتمد CCR في الإنتاج إجراء معايرة مباشرة على أعبائه الفعلية.</p>

<hr />

<h2 id="الانعكاسات-على-منصة-thakicloud-لـ-aiml-على-kubernetes">الانعكاسات على منصة ThakiCloud لـ AI/ML على Kubernetes</h2>

<p>نموذج توجيه CCR يتلاءم بشكل طبيعي مع البنية التحتية التي تُشغِّلها ThakiCloud بالفعل.</p>

<p><strong>أمن الكود.</strong> في البيئات الخاضعة للتنظيم — الخدمات المالية، والقطاع العام، والرعاية الصحية — حيث لا يمكن إخراج الكود المصدري والبيانات الداخلية من المنظمة، تتيح CCR ربط حركة مرور أداة البرمجة الذكية بنسخة vLLM داخلية. الحفاظ على قابلية استخدام Claude Code مع ضمان عدم وصول المحادثات والكود إلى API خارجية يُشكِّل ميزة تنافسية واضحة لمنصة AI على خوادم المنظمة.</p>

<p><strong>التحكم في التكاليف.</strong> التوجيه حسب المهمة هو توجيه حسب التكلفة. المهام ذات التكرار العالي والتعقيد المنخفض — كالإكمال التلقائي والتلخيص في الخلفية — تذهب إلى نموذج برمجة صغير مستضاف ذاتياً؛ المهام عالية المخاطرة كالتفكير في القرارات المعمارية تذهب إلى نموذج متميز. يُساهم جدولة GPU عبر Kueue وسلوك تحجيم vLLM في خفض تكاليف أوقات الخمول أيضاً.</p>

<p><strong>التوافق مع التشغيل متعدد المستأجرين.</strong> إعدادات المزودين والتوجيه في CCR تُدار في ملفات نصية وإعدادات مسبقة. نشر إعدادات مسبقة لكل مستأجر تربط فرقاً مختلفة بخلفيات ونماذج مختلفة يُطبِّق سياسات النماذج بصيغة كود — متسق مع توجه ThakiCloud في تحويل السياسات إلى كود.</p>

<p>خلاصة القول، CCR ليست منتجاً قائماً بذاته، لكنها حين تُقرَن بخلفية مستضافة ذاتياً تُنتِج قيمة محددة: أداة برمجة ذكية لا تُرسِل الكود خارج المنظمة قط. وهو ما يتطابق تماماً مع رسالة ThakiCloud المتمحورة حول الخوادم الداخلية والكفاءة في التكاليف والاستضافة الذاتية.</p>

<hr />

<h2 id="القيود-والحجج-المضادة">القيود والحجج المضادة</h2>

<p>طبقة التوجيه لا تحل كل المشكلات. ثمة نقاط تستحق فحصاً صادقاً.</p>

<ul>
  <li><strong>فجوة الجودة.</strong> قيمة التوجيه مرهونة بجودة النماذج الخلفية. في إعادة الهيكلة المعقدة متعددة الخطوات أو التنقيح الدقيق، لا تُجاري النماذج المفتوحة دائماً أفضل النماذج المغلقة. الحد الفاصل الذي ترسمه بين ما يذهب إلى أين هو ما يُحدد مستوى الجودة.</li>
  <li><strong>موثوقية استدعاء الأدوات.</strong> يعتمد Claude Code اعتماداً كبيراً على استدعاء الأدوات. بعض النماذج المفتوحة لا تلتزم باتساق بتنسيقات استدعاء الأدوات وتحتاج إلى تصحيح بالمحوِّلات؛ إذا انهار هذا المحور، ينهار حلقة الوكيل بأكملها.</li>
  <li><strong>عبء التشغيل.</strong> المزودون والمحوِّلات وقواعد التوجيه هي في نهاية المطاف عناصر تتطلب صيانة. حين تتغير مواصفات API لخلفية ما، يجب أن يواكب إعداد التوجيه ذلك التغيير.</li>
  <li><strong>فخ صياغة “المجاني”.</strong> بعض متغيرات CCR تُروِّج لحذف بيانات القياس أو إزالة ضمانات السلامة ضمن خطاب “المجاني”. هذا التوجه ليس ما يمكن لمنظمة أن توصي به من منظور الأمان أو شروط الخدمة. ما نستخلصه من هذه الأداة ليس الاستخدام المجاني بل التحكم — القدرة على تحديد أي طلبات تذهب إلى أي نماذج.</li>
</ul>

<p>CCR ليست خدعة سحرية لإلغاء التكاليف؛ هي آلية تحكم في التوجيه. حين يُقرَن هذا التحكم ببنية تحتية مستضافة ذاتياً، يغدو تحقيق مكاسب ذات معنى على محورين — الأمن والتكلفة — أمراً ممكناً.</p>

<hr />

<h2 id="المصادر">المصادر</h2>

<ul>
  <li>claude-code-router (musistudio): <a href="https://github.com/musistudio/claude-code-router">https://github.com/musistudio/claude-code-router</a></li>
  <li>حزمة npm: <code class="language-plaintext highlighter-rouge">@musistudio/claude-code-router</code> (الإصدار المُتحقَّق من تثبيته: 2.0.0)</li>
  <li>التغريدة الأصلية (RT): <a href="https://x.com/hjguyhan/status/2069431792688660982">https://x.com/hjguyhan/status/2069431792688660982</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="llmops" /><category term="claude-code" /><category term="model-routing" /><category term="on-premise" /><category term="vllm" /><category term="cost-optimization" /><summary type="html"><![CDATA[claude-code-router طبقة توجيه تُرسِل طلبات Claude Code إلى خلفيات نماذج مختلفة بحسب نوع المهمة. يستعرض هذا المقال تثبيتاً فعلياً للأداة والتحقق من سلوكها، ثم يشرح إعداداً لمنصة ThakiCloud على Kubernetes يخدم الكود بالكامل من vLLM المستضاف ذاتياً، مع إبقاء الكود المصدري داخل المنظمة والتحكم في التكاليف.]]></summary></entry><entry xml:lang="en"><title type="html">Android Emulators in Containers - Building a Reproducible Device Farm on K8s with docker-android</title><link href="https://thakicloud.github.io/en/dev/docker-android-k8s-emulator/" rel="alternate" type="text/html" title="Android Emulators in Containers - Building a Reproducible Device Farm on K8s with docker-android" /><published>2026-06-24T00:00:00+09:00</published><updated>2026-06-24T00:00:00+09:00</updated><id>https://thakicloud.github.io/en/dev/docker-android-k8s-emulator</id><content type="html" xml:base="https://thakicloud.github.io/en/dev/docker-android-k8s-emulator/"><![CDATA[<pre><code class="language-mermaid">flowchart LR
    subgraph NODE["KVM-enabled K8s node / Pod"]
      EMU["Android emulator (QEMU + KVM, optional CUDA)"]
      KVM["/dev/kvm"]
    end
    KVM --&gt;|passthrough| EMU
    EMU --&gt; SVC["ADB Service"]
    SVC --&gt; CI["CI farm"]
    SVC --&gt; SCRCPY["scrcpy remote control"]
</code></pre>
<h2 id="overview">Overview</h2>

<p>Testing a mobile app requires Android devices. Managing a fleet of physical handsets is a maintenance burden, and installing a heavy emulator locally on every developer’s machine leads to environment drift and poor reproducibility. Those problems multiply when you try to include Android tests in a CI pipeline, because every build node needs a consistent emulator setup.</p>

<p><code class="language-plaintext highlighter-rouge">docker-android</code> (the HQarroum edition) solves this with containers. It packages an Android emulator in a minimal configuration, runs it headlessly, and exposes ADB and screen control over the network. A single container gives you a clean, consistent Android environment in seconds, making it a natural fit for CI/CD and automated testing.</p>

<p>This post verifies docker-android’s architecture and real requirements against the project documentation, then examines how a Kubernetes platform like ThakiCloud can handle this class of device workload. Android emulation is not central to our AI/ML platform, but the question of how to isolate and run privileged containers that need KVM device passthrough and GPU acceleration maps directly onto our infrastructure capabilities.</p>

<hr />

<h2 id="what-docker-android-is">What docker-android Is</h2>

<p>HQarroum’s docker-android bundles an Android emulator, KVM support, and JRE 11 into a compact Alpine-based image (current version 1.1.0). The design intent is clear: expose a fully functional, remotely controllable Android emulator with the smallest possible software footprint. Inside the image live the emulator itself, an ADB server for external access, and QEMU with libvirt.</p>

<p>Key characteristics:</p>

<ul>
  <li><strong>Minimal footprint</strong>: Alpine-based for size optimization. Building without the SDK and emulator produces a much smaller image.</li>
  <li><strong>Configurable</strong>: Android version, device type, and image variant are all selectable.</li>
  <li><strong>Built-in port forwarding</strong>: Emulator and ADB are exposed through the container network interface.</li>
  <li><strong>Headless</strong>: No GUI required, making it suitable for CI farms. Screens can be accessed remotely via <a href="https://github.com/Genymobile/scrcpy">scrcpy</a>.</li>
  <li><strong>Reproducibility</strong>: The emulator image resets on every restart, so each run starts from an identical state.</li>
</ul>

<p>The diagram above shows a hypothetical deployment of this container on ThakiCloud Kubernetes. The emulator runs in a pod on a KVM-enabled node with <code class="language-plaintext highlighter-rouge">/dev/kvm</code> passed through; the cuda variant is used when GPU acceleration is needed. ADB is exposed as a Service so CI farms and scrcpy clients can reach it.</p>

<hr />

<h2 id="installation-and-integration">Installation and Integration</h2>

<p>The default build bundles the Android SDK, platform tools, and emulator into the image. Bringing everything up with docker-compose looks like this:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Basic emulator</span>
docker compose up android-emulator

<span class="c"># GPU acceleration</span>
docker compose up android-emulator-cuda

<span class="c"># GPU acceleration + Google Play Store</span>
docker compose up android-emulator-cuda-store
</code></pre></div></div>

<p>You can also build directly with Docker:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker build <span class="nt">-t</span> android-emulator <span class="nb">.</span>
</code></pre></div></div>

<p>After building the image, run the container with the KVM device mounted. Using a Play Store image requires the emulator and client to share the same <code class="language-plaintext highlighter-rouge">adbkey</code>; generate it with <code class="language-plaintext highlighter-rouge">adb keygen adbkey</code> and place it in the <code class="language-plaintext highlighter-rouge">./keys</code> directory.</p>

<p>Image size varies considerably by build variant. The comparison table from the repository documentation:</p>

<table>
  <thead>
    <tr>
      <th>Build variant</th>
      <th>Uncompressed</th>
      <th>Compressed</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>API 33 + emulator</td>
      <td>5.84 GB</td>
      <td>1.97 GB</td>
    </tr>
    <tr>
      <td>API 32 + emulator</td>
      <td>5.89 GB</td>
      <td>1.93 GB</td>
    </tr>
    <tr>
      <td>API 28 + emulator</td>
      <td>4.29 GB</td>
      <td>1.46 GB</td>
    </tr>
    <tr>
      <td>Without SDK/emulator</td>
      <td>414 MB</td>
      <td>138 MB</td>
    </tr>
  </tbody>
</table>

<p>Images that include the emulator are over 1.5 GB even compressed. When distributing across many nodes, registry bandwidth and node disk capacity both need to be factored in.</p>

<hr />

<h2 id="verifying-actual-behavior">Verifying Actual Behavior</h2>

<p>This post does not include a verified container boot. Honest record: could not boot here (no Docker daemon on the work host, and macOS provides no <code class="language-plaintext highlighter-rouge">/dev/kvm</code>). docker-android requires KVM hardware acceleration, so real operation is only possible on a Linux host or a KVM node with nested virtualization enabled.</p>

<p>What we could verify came directly from the repository documentation. The image size comparison table above reflects numbers stated in the docs; build variants, compose service names, and KVM mount requirements are all documentation-based. Figures such as boot time or test throughput that we could not measure are not included. In an actual deployment, once KVM nodes are available, the right procedure is to measure container boot time, ADB connection latency, and maximum concurrent emulator count directly.</p>

<hr />

<h2 id="implications-for-the-thakicloud-k8s-aiml-saas-platform">Implications for the ThakiCloud K8s AI/ML SaaS Platform</h2>

<p>docker-android is not an AI/ML tool in itself. But the operational requirements it surfaces overlap precisely with what ThakiCloud does well.</p>

<p>First, <strong>isolation of device-passthrough workloads</strong>. An emulator is essentially a privileged container that requires <code class="language-plaintext highlighter-rouge">/dev/kvm</code>. Running this class of workload safely in a multi-tenant Kubernetes environment demands careful node selection, device plugins, and security contexts. ThakiCloud already queues GPUs through device plugins and Kueue; KVM passthrough can be handled with the same pattern.</p>

<p>Second, <strong>reproducible test farms</strong>. Packaging headless emulators as containers lets you scale clean environments horizontally across as many nodes as you need. Running many parallel Appium UI tests from a CI/CD pipeline is a textbook use case for Kubernetes job scheduling.</p>

<p>Third, looking further ahead, this extends naturally to <strong>on-device AI validation</strong>. Verifying the behavior of lightweight models or agents running on mobile devices at scale requires a device farm that can spin up many isolated Android environments and run regression tests automatically. This is not a core concern for our platform today, but as our multi-tenant GPU and device orchestration capabilities mature, a mobile AI QA farm of this kind becomes something we could offer on the same infrastructure.</p>

<p>In short, docker-android is not a product we are building, but it is a good case study in taming heavy container workloads that mix privilege, device passthrough, and GPU acceleration on Kubernetes. That is a concrete illustration of the general-purpose K8s orchestration capabilities ThakiCloud emphasizes.</p>

<hr />

<h2 id="limitations-and-counterarguments">Limitations and Counterarguments</h2>

<ul>
  <li><strong>Heavy dependencies</strong>: KVM hardware acceleration is non-negotiable. In environments without nested virtualization support, performance degrades sharply or the emulator does not boot at all. Cloud node selection becomes a hard constraint.</li>
  <li><strong>Image bloat</strong>: Emulator-inclusive images are several GB even compressed. Distributing across many nodes accumulates real registry and disk costs.</li>
  <li><strong>Distance from AI/ML relevance</strong>: Honestly, this tool is far from the training and inference workloads at the core of our platform. For organizations with no mobile testing demand, the direct value is limited. The value of this post lies not in “the emulator itself” but in “the operational patterns for device-passthrough containers.”</li>
  <li><strong>Security of privileged containers</strong>: <code class="language-plaintext highlighter-rouge">/dev/kvm</code> access and privileged settings complicate multi-tenant security boundaries. Preserving tenant isolation requires dedicated node pools and strict policies.</li>
</ul>

<p>docker-android is a powerful tool for mobile test automation and a useful reference for how to handle device-class workloads on Kubernetes. Even before the moment we need it directly, the operational patterns are worth understanding in advance.</p>

<hr />

<h2 id="sources">Sources</h2>

<ul>
  <li>docker-android (HQarroum): <a href="https://github.com/HQarroum/docker-android">https://github.com/HQarroum/docker-android</a></li>
  <li>Docker Hub image: <code class="language-plaintext highlighter-rouge">halimqarroum/docker-android</code></li>
  <li>scrcpy (remote screen control): <a href="https://github.com/Genymobile/scrcpy">https://github.com/Genymobile/scrcpy</a></li>
  <li>Original tweet (RT): <a href="https://x.com/hjguyhan/status/2069427245295493446">https://x.com/hjguyhan/status/2069427245295493446</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="dev" /><category term="docker" /><category term="android" /><category term="kubernetes" /><category term="kvm" /><category term="ci-cd" /><summary type="html"><![CDATA[docker-android packages an Android emulator into a single container and runs it headlessly. We verify image sizes and KVM requirements against the official documentation, and explore what running device-passthrough workloads looks like on the ThakiCloud Kubernetes platform.]]></summary></entry><entry xml:lang="en"><title type="html">Routing Claude Code to On-Premise Models, Building an On-Prem Coding Infrastructure with claude-code-router</title><link href="https://thakicloud.github.io/en/llmops/claude-code-router-onprem-routing/" rel="alternate" type="text/html" title="Routing Claude Code to On-Premise Models, Building an On-Prem Coding Infrastructure with claude-code-router" /><published>2026-06-24T00:00:00+09:00</published><updated>2026-06-24T00:00:00+09:00</updated><id>https://thakicloud.github.io/en/llmops/claude-code-router-onprem-routing</id><content type="html" xml:base="https://thakicloud.github.io/en/llmops/claude-code-router-onprem-routing/"><![CDATA[<pre><code class="language-mermaid">flowchart LR
    CC["Claude Code"] --&gt; CCR["claude-code-router proxy"]
    CCR --&gt;|default| VLLM["In-house vLLM (Qwen3 / DeepSeek)"]
    CCR --&gt;|background| OLLAMA["Local Ollama"]
    CCR --&gt;|think| ANTH["Anthropic API"]
    CCR --&gt;|longContext| OR["OpenRouter"]
    VLLM --&gt; K8S["ThakiCloud K8s (Kueue + GPU)"]
</code></pre>

<h2 id="overview">Overview</h2>

<p>Claude Code is an agentic coding tool that runs in the terminal. By default it sends every request to Anthropic’s API, but not all requests carry the same weight. Background summarization, short autocompletion, long-context analysis, and deep-reasoning refactoring each call for a different model tier. Sending every request through the most expensive model causes costs to spiral; sending everything through a cheap model destroys quality.</p>

<p><code class="language-plaintext highlighter-rouge">claude-code-router</code> (CCR) solves this with a routing layer. It places a proxy between Claude Code and its model backends, splitting traffic across different providers and models based on request type. The tool recently circulated on social media under the inflammatory framing of “how to use Claude Code free forever,” but this post strips away the hype and focuses on the real value: model routing and self-hosting.</p>

<p>From ThakiCloud’s perspective, the appeal of CCR is straightforward. We queue GPUs with Kueue on Kubernetes and serve open models with vLLM. CCR lets us direct Claude Code requests to internal vLLM endpoints, which aligns precisely with the security requirement of running developer-productivity tooling without shipping source code outside the organization.</p>

<hr />

<h2 id="what-claude-code-router-does">What claude-code-router Does</h2>

<p>CCR is a proxy server that receives requests in Anthropic message format, optionally converts them to OpenAI-compatible format or another target format, and forwards them to a configured provider. It does not modify the Claude Code client itself. You point Claude Code at CCR via environment variables, and CCR takes over all routing from there.</p>

<p>Core capabilities:</p>

<ul>
  <li><strong>Model routing</strong>: Assigns different models to request types, <code class="language-plaintext highlighter-rouge">default</code>, <code class="language-plaintext highlighter-rouge">background</code>, <code class="language-plaintext highlighter-rouge">think</code>, <code class="language-plaintext highlighter-rouge">longContext</code>, <code class="language-plaintext highlighter-rouge">webSearch</code>, <code class="language-plaintext highlighter-rouge">image</code>, and others.</li>
  <li><strong>Multi-provider support</strong>: Registers multiple backends simultaneously, OpenRouter, DeepSeek, Ollama, Gemini, Volcengine, SiliconFlow, and more.</li>
  <li><strong>Request/response transformers</strong>: Each provider has its own API spec; transformers absorb the differences. Built-in transformers include <code class="language-plaintext highlighter-rouge">openrouter</code>, <code class="language-plaintext highlighter-rouge">deepseek</code>, <code class="language-plaintext highlighter-rouge">gemini</code>, and <code class="language-plaintext highlighter-rouge">tooluse</code>.</li>
  <li><strong>Dynamic model switching</strong>: Change the active model on the fly inside Claude Code with <code class="language-plaintext highlighter-rouge">/model</code>.</li>
  <li><strong>CLI model management</strong>: Manage models and providers from the terminal with <code class="language-plaintext highlighter-rouge">ccr model</code>.</li>
  <li><strong>Presets and plugins</strong>: Export configurations as presets, install them from a marketplace, and extend functionality with custom transformers.</li>
</ul>

<p>The diagram above illustrates the routing flow for a ThakiCloud environment. Routine coding (<code class="language-plaintext highlighter-rouge">default</code>) goes to Qwen3 or DeepSeek served by the internal vLLM cluster; lightweight background tasks go to a local Ollama instance; deep-reasoning tasks go to the Anthropic API only when necessary; long-context requests go through OpenRouter. This aligns request nature with model cost.</p>

<hr />

<h2 id="installation-and-integration">Installation and Integration</h2>

<p>CCR is distributed as a global npm package. The actual installation command and output:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span> <span class="nt">-g</span> @musistudio/claude-code-router
</code></pre></div></div>

<p>Version check after installation:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>ccr version
claude-code-router version: 2.0.0
</code></pre></div></div>

<p>Available commands are listed with <code class="language-plaintext highlighter-rouge">ccr -h</code>. A portion of the actual output:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Usage: ccr [command] [preset-name]

Commands:
  start         Start server
  stop          Stop server
  restart       Restart server
  status        Show server status
  code          Execute claude command
  model         Interactive model selection and configuration
  preset        Manage presets (export, install, list, delete)
  install       Install preset from GitHub marketplace
  activate      Output environment variables for shell integration
  ui            Open the web UI in browser
  -v, version   Show version information
</code></pre></div></div>

<p>The configuration file lives at <code class="language-plaintext highlighter-rouge">~/.claude-code-router/config.json</code>. The key sections are the <code class="language-plaintext highlighter-rouge">Providers</code> array and the <code class="language-plaintext highlighter-rouge">Router</code> object. Below is an example configuration that registers both ThakiCloud’s internal vLLM and a local Ollama instance:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"LOG"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
  </span><span class="nl">"API_TIMEOUT_MS"</span><span class="p">:</span><span class="w"> </span><span class="mi">600000</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Providers"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_base_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://vllm.internal.thaki:8000/v1/chat/completions"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"internal"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"models"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"Qwen3-32B"</span><span class="p">,</span><span class="w"> </span><span class="s2">"deepseek-v3"</span><span class="p">]</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_base_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:11434/v1/chat/completions"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"models"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"qwen2.5-coder:latest"</span><span class="p">]</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">],</span><span class="w">
  </span><span class="nl">"Router"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"default"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm,Qwen3-32B"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"background"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama,qwen2.5-coder:latest"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"longContext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm,deepseek-v3"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>Starting the server and routing Claude Code through CCR:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ccr start            <span class="c"># Start the router server</span>
ccr code <span class="s2">"..."</span>       <span class="c"># Run Claude Code via CCR</span>
<span class="c"># Or apply environment variables globally for the shell</span>
<span class="nb">eval</span> <span class="s2">"</span><span class="si">$(</span>ccr activate<span class="si">)</span><span class="s2">"</span>
</code></pre></div></div>

<p>The moment <code class="language-plaintext highlighter-rouge">api_base_url</code> points to an internal endpoint, that traffic flows to the vLLM instance in our cluster rather than to Anthropic. Code and prompts do not leave the organization.</p>

<hr />

<h2 id="verifying-actual-behavior">Verifying Actual Behavior</h2>

<p>This post verifies the router through installation and startup. The npm global install completed in under a second; the version is 2.0.0; and the CLI exposes exactly the commands documented, <code class="language-plaintext highlighter-rouge">start</code>, <code class="language-plaintext highlighter-rouge">stop</code>, <code class="language-plaintext highlighter-rouge">code</code>, <code class="language-plaintext highlighter-rouge">model</code>, <code class="language-plaintext highlighter-rouge">preset</code>, <code class="language-plaintext highlighter-rouge">ui</code>, and others. All output quoted above was captured locally.</p>

<p>That said, live inference round-trips to an internal vLLM endpoint were not measured in this environment. A valid GPU-serving endpoint and API key are required for that, and no latency or throughput figures were invented to fill the gap. Routing quality and tool-call reliability depend heavily on the backend model, so anyone adopting CCR in production must benchmark it against their own workloads directly.</p>

<hr />

<h2 id="implications-for-thakiclouds-k8s-aiml-saas-platform">Implications for ThakiCloud’s K8s AI/ML SaaS Platform</h2>

<p>CCR’s routing model fits naturally with the infrastructure ThakiCloud already operates.</p>

<p><strong>Code security.</strong> In regulated environments, financial services, public sector, healthcare, where source code and internal data cannot leave the organization, CCR lets you bind developer coding-agent traffic to an internal vLLM instance. Keeping the usability of Claude Code while ensuring prompts and code never reach an external API is a concrete differentiator for an on-premises AI platform.</p>

<p><strong>Cost control.</strong> Per-task routing is per-cost routing. High-frequency but low-complexity tasks, autocompletion and background summarization, go to a small, self-hosted coder model; high-stakes reasoning such as architecture decisions goes to a premium model. GPU queuing through Kueue and vLLM’s scaling behavior reduce idle-time costs as well.</p>

<p><strong>Multi-tenant operational alignment.</strong> CCR’s provider and router configuration is managed in text files and presets. Deploying per-tenant presets that bind different teams to different allowed backends enforces different model policies as code, consistent with ThakiCloud’s policy-as-code direction.</p>

<p>In summary, CCR is not a product in itself, but when combined with a self-hosted backend it creates a concrete value: a coding agent that never sends code outside the organization. That maps exactly to the on-premises, cost-efficient, self-hosting message ThakiCloud has consistently emphasized.</p>

<hr />

<h2 id="limitations-and-counterarguments">Limitations and Counterarguments</h2>

<p>A routing layer does not solve every problem. Several points deserve honest scrutiny.</p>

<ul>
  <li><strong>Quality gap.</strong> The value of routing depends on backend model quality. For complex multi-step refactoring or subtle debugging, open models do not always match top closed models. Where you draw the boundary of what goes where determines the quality of the result.</li>
  <li><strong>Tool-call reliability.</strong> Claude Code relies heavily on tool calls. Some open models do not consistently follow tool-call formats and require transformer correction; when that breaks, the entire agent loop can fail.</li>
  <li><strong>Operational overhead.</strong> Providers, transformers, and routing rules are maintenance targets. When a backend API spec changes, the router configuration must follow.</li>
  <li><strong>The “free” framing trap.</strong> Some variants of CCR emphasize telemetry removal or safety-guard removal as part of a “free” pitch. That direction is not something an organization can endorse from a security or terms-of-service standpoint. What we take from this tool is not free usage but control, the ability to decide which requests go to which models.</li>
</ul>

<p>CCR is not a cost-elimination magic trick; it is a routing control mechanism. When that control is combined with self-hosted infrastructure, meaningful gains on two axes, security and cost, become achievable.</p>

<hr />

<h2 id="sources">Sources</h2>

<ul>
  <li>claude-code-router (musistudio): <a href="https://github.com/musistudio/claude-code-router">https://github.com/musistudio/claude-code-router</a></li>
  <li>npm package: <code class="language-plaintext highlighter-rouge">@musistudio/claude-code-router</code> (installation-verified version 2.0.0)</li>
  <li>Original tweet (RT): <a href="https://x.com/hjguyhan/status/2069431792688660982">https://x.com/hjguyhan/status/2069431792688660982</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="llmops" /><category term="claude-code" /><category term="model-routing" /><category term="on-premise" /><category term="vllm" /><category term="cost-optimization" /><summary type="html"><![CDATA[claude-code-router is a routing layer that dispatches Claude Code requests to different model backends depending on task type. This post walks through an actual installation, verifies the tool's behavior, and outlines a configuration for ThakiCloud's K8s platform that serves code entirely from self-hosted vLLM, keeping source code in-house while controlling costs.]]></summary></entry><entry xml:lang="ko"><title type="html">Android 에뮬레이터를 컨테이너로 - docker-android로 K8s 위에 재현 가능한 디바이스 팜 만들기</title><link href="https://thakicloud.github.io/ko/dev/docker-android-k8s-emulator/" rel="alternate" type="text/html" title="Android 에뮬레이터를 컨테이너로 - docker-android로 K8s 위에 재현 가능한 디바이스 팜 만들기" /><published>2026-06-24T00:00:00+09:00</published><updated>2026-06-24T00:00:00+09:00</updated><id>https://thakicloud.github.io/ko/dev/docker-android-k8s-emulator</id><content type="html" xml:base="https://thakicloud.github.io/ko/dev/docker-android-k8s-emulator/"><![CDATA[<pre><code class="language-mermaid">flowchart LR
    subgraph NODE["KVM 활성 K8s 노드 / Pod"]
      EMU["Android 에뮬레이터 (QEMU + KVM, 옵션 CUDA)"]
      KVM["/dev/kvm"]
    end
    KVM --&gt;|passthrough| EMU
    EMU --&gt; SVC["ADB Service"]
    SVC --&gt; CI["CI 팜"]
    SVC --&gt; SCRCPY["scrcpy 원격 제어"]
</code></pre>
<h2 id="개요">개요</h2>

<p>모바일 앱을 테스트하려면 Android 디바이스가 필요합니다. 실제 단말을 여러 대 두는 방식은 관리가 번거롭고, 로컬에 무거운 에뮬레이터를 까는 방식은 환경이 사람마다 달라져 재현성이 떨어집니다. CI 파이프라인에 Android 테스트를 넣으려고 하면 이 문제는 더 커집니다. 빌드 노드마다 에뮬레이터를 일관되게 깔아야 하기 때문입니다.</p>

<p><code class="language-plaintext highlighter-rouge">docker-android</code>(HQarroum 버전)는 이 문제를 컨테이너로 풉니다. Android 에뮬레이터를 최소 구성으로 패키징해 헤드리스로 띄우고, ADB와 화면 제어를 네트워크 너머로 노출합니다. 컨테이너 한 개로 깨끗하고 일관된 Android 환경을 초 단위로 만들 수 있으므로, CI/CD와 자동화 테스트에 잘 맞습니다.</p>

<p>이 글에서는 docker-android의 구조와 실제 요구사항을 문서 기준으로 확인하고, ThakiCloud의 Kubernetes 플랫폼 관점에서 이런 디바이스 클래스 워크로드를 어떻게 다룰 수 있는지를 정리합니다. AI/ML이 주제인 우리 플랫폼에서 모바일 에뮬레이터가 곧장 핵심은 아니지만, KVM 디바이스 패스스루와 GPU 가속이 필요한 컨테이너 워크로드를 어떻게 격리해 운용하는가라는 질문은 우리 인프라 역량과 직접 닿아 있습니다.</p>

<hr />

<h2 id="docker-android는-무엇인가">docker-android는 무엇인가</h2>

<p>HQarroum의 docker-android는 Alpine 기반의 작은 이미지에 Android 에뮬레이터와 KVM 지원, 그리고 JRE 11을 묶은 프로젝트입니다(현재 버전 1.1.0). 설계 초점은 분명합니다. 네트워크로 원격 제어 가능한 완전한 Android 에뮬레이터를, 최소한의 소프트웨어만으로 노출하는 것입니다. 이미지 안에는 에뮬레이터, 외부에서 접속하기 위한 ADB 서버, 그리고 libvirt를 갖춘 QEMU만 들어갑니다.</p>

<p>주요 특징은 다음과 같습니다.</p>

<ul>
  <li><strong>최소 구성</strong>: Alpine 기반으로 크기를 최적화했습니다. SDK와 에뮬레이터를 빼고 빌드하면 이미지가 훨씬 작아집니다.</li>
  <li><strong>커스터마이즈</strong>: Android 버전, 디바이스 타입, 이미지 종류를 선택할 수 있습니다.</li>
  <li><strong>포트 포워딩 내장</strong>: 에뮬레이터와 ADB를 컨테이너 네트워크 인터페이스로 노출합니다.</li>
  <li><strong>헤드리스</strong>: GUI 없이 동작하므로 CI 팜에 적합합니다. <a href="https://github.com/Genymobile/scrcpy">scrcpy</a>로 화면을 원격 제어할 수 있습니다.</li>
  <li><strong>재현성</strong>: 에뮬레이터 이미지는 재시작할 때마다 초기화됩니다. 매번 같은 상태에서 시작한다는 뜻입니다.</li>
</ul>

<p>위 다이어그램은 이 컨테이너를 ThakiCloud Kubernetes에 배치한 가정 구성입니다. KVM이 활성화된 노드의 파드에 에뮬레이터를 띄우고, <code class="language-plaintext highlighter-rouge">/dev/kvm</code>을 패스스루하며, GPU 가속이 필요하면 cuda 변형을 사용합니다. ADB는 Service로 노출해 CI 팜과 scrcpy가 접근합니다.</p>

<hr />

<h2 id="설치-및-통합">설치 및 통합</h2>

<p>기본 빌드는 Android SDK, 플랫폼 도구, 에뮬레이터를 이미지에 함께 묶습니다. docker-compose로 띄우는 방법은 아래와 같습니다.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 기본 에뮬레이터</span>
docker compose up android-emulator

<span class="c"># GPU 가속</span>
docker compose up android-emulator-cuda

<span class="c"># GPU 가속 + Google Play Store</span>
docker compose up android-emulator-cuda-store
</code></pre></div></div>

<p>docker만 사용해 직접 빌드할 수도 있습니다.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker build <span class="nt">-t</span> android-emulator <span class="nb">.</span>
</code></pre></div></div>

<p>이미지를 빌드한 뒤에는 KVM 드라이브를 마운트해 컨테이너를 실행합니다. Play Store 이미지를 쓰려면 에뮬레이터와 클라이언트가 같은 adbkey를 공유해야 하며, <code class="language-plaintext highlighter-rouge">adb keygen adbkey</code>로 키를 생성해 <code class="language-plaintext highlighter-rouge">./keys</code> 디렉터리에 넣습니다.</p>

<p>이미지 크기는 빌드 변형에 따라 크게 달라집니다. 저장소 문서에 명시된 비교표는 다음과 같습니다.</p>

<table>
  <thead>
    <tr>
      <th>빌드 변형</th>
      <th>압축 해제</th>
      <th>압축</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>API 33 + 에뮬레이터</td>
      <td>5.84 GB</td>
      <td>1.97 GB</td>
    </tr>
    <tr>
      <td>API 32 + 에뮬레이터</td>
      <td>5.89 GB</td>
      <td>1.93 GB</td>
    </tr>
    <tr>
      <td>API 28 + 에뮬레이터</td>
      <td>4.29 GB</td>
      <td>1.46 GB</td>
    </tr>
    <tr>
      <td>SDK·에뮬레이터 제외</td>
      <td>414 MB</td>
      <td>138 MB</td>
    </tr>
  </tbody>
</table>

<p>에뮬레이터를 포함한 이미지는 압축 기준으로도 1.5GB 이상입니다. 다수의 노드에 분산 배포할 때는 레지스트리 대역폭과 노드 디스크를 함께 고려해야 합니다.</p>

<hr />

<h2 id="실제-동작-확인">실제 동작 확인</h2>

<p>이번 글에서는 컨테이너의 실제 부팅까지는 검증하지 못했습니다. 정직하게 기록합니다. 재현 시도 중 실패: 작업 호스트에 Docker 데몬이 없고, macOS는 <code class="language-plaintext highlighter-rouge">/dev/kvm</code>을 제공하지 않아 에뮬레이터 컨테이너가 부팅되지 않습니다. docker-android는 KVM 하드웨어 가속을 요구하므로, 실제 구동은 Linux 호스트 또는 중첩 가상화를 지원하는 KVM 노드에서만 가능합니다.</p>

<p>대신 검증 가능한 사실은 저장소 문서에서 직접 확인했습니다. 위 이미지 크기 비교표는 문서에 명시된 실제 수치이며, 빌드 변형과 compose 서비스 이름, KVM 마운트 요구사항도 문서 기준입니다. 측정하지 못한 부팅 시간이나 테스트 처리량 같은 수치는 만들어 넣지 않았습니다. 실제 도입 단계에서는 KVM 노드를 확보한 뒤 컨테이너 부팅 시간, ADB 연결 지연, 동시 실행 가능한 에뮬레이터 수를 직접 측정하는 절차가 필요합니다.</p>

<hr />

<h2 id="thakicloud-k8s-aiml-saas-플랫폼-적용-및-시사점">ThakiCloud K8s AI/ML SaaS 플랫폼 적용 및 시사점</h2>

<p>docker-android 자체는 AI/ML 도구가 아닙니다. 그러나 이 프로젝트가 드러내는 운영 요구사항은 ThakiCloud가 잘하는 영역과 정확히 겹칩니다.</p>

<p>첫째, <strong>디바이스 패스스루 워크로드의 격리</strong>입니다. 에뮬레이터는 <code class="language-plaintext highlighter-rouge">/dev/kvm</code>을 요구하는 특권 컨테이너에 가깝습니다. K8s에서 이런 디바이스 클래스 워크로드를 멀티테넌트 환경에서 안전하게 격리하려면, 노드 선택, 디바이스 플러그인, 보안 컨텍스트를 신중히 다뤄야 합니다. ThakiCloud는 이미 GPU를 device plugin과 Kueue로 큐잉하고 있으며, KVM 패스스루도 같은 패턴으로 다룰 수 있습니다.</p>

<p>둘째, <strong>재현 가능한 테스트 팜</strong>입니다. 헤드리스 에뮬레이터를 컨테이너로 묶으면, 깨끗한 환경을 노드 수만큼 수평 확장할 수 있습니다. CI/CD에서 Appium UI 테스트를 다수 병렬로 돌리는 구성은 K8s 잡 스케줄링의 전형적인 사용처입니다.</p>

<p>셋째, 더 멀리 보면 <strong>온디바이스 AI 검증</strong>으로 확장할 수 있습니다. 모바일에서 동작하는 경량 모델이나 에이전트의 동작을 자동화로 검증하려면, 격리된 Android 환경을 다수 띄워 회귀 테스트를 돌리는 디바이스 팜이 유용합니다. 현재 우리 플랫폼의 핵심은 아니지만, 멀티테넌트 GPU·디바이스 오케스트레이션 역량이 성숙해지면 이런 모바일 AI QA 팜도 같은 인프라 위에서 제공 가능한 형태로 확장할 수 있습니다.</p>

<p>요약하면, docker-android는 그 자체로 우리 제품은 아니지만 “특권·디바이스·GPU 가속이 얽힌 무거운 컨테이너 워크로드를 K8s에서 어떻게 길들이는가”라는 좋은 사례입니다. 이는 ThakiCloud가 강조하는 범용 K8s 오케스트레이션 역량을 보여 주는 구체적인 그림입니다.</p>

<hr />

<h2 id="한계-및-반론">한계 및 반론</h2>

<ul>
  <li><strong>무거운 의존성</strong>: KVM 하드웨어 가속은 협상 대상이 아닙니다. 중첩 가상화를 지원하지 않는 환경에서는 성능이 급격히 떨어지거나 아예 부팅되지 않습니다. 클라우드 노드 선택이 곧 제약이 됩니다.</li>
  <li><strong>이미지 비대</strong>: 에뮬레이터 포함 이미지는 압축해도 수 GB입니다. 노드 다수에 분산하면 레지스트리와 디스크 비용이 누적됩니다.</li>
  <li><strong>AI/ML 적합성의 거리</strong>: 솔직히 이 도구는 우리 플랫폼의 핵심 워크로드인 학습·추론과는 거리가 있습니다. 모바일 테스트 수요가 없는 조직에는 직접적인 가치가 작습니다. 이 글의 가치는 “에뮬레이터 그 자체”가 아니라 “디바이스 패스스루 컨테이너의 운영 패턴”에 있습니다.</li>
  <li><strong>특권 컨테이너의 보안</strong>: <code class="language-plaintext highlighter-rouge">/dev/kvm</code> 접근과 특권 설정은 멀티테넌트 보안 경계를 복잡하게 만듭니다. 테넌트 격리를 깨지 않으려면 전용 노드 풀과 엄격한 정책이 필요합니다.</li>
</ul>

<p>결론적으로 docker-android는 모바일 테스트 자동화에 강력한 도구이며, 동시에 K8s에서 디바이스 클래스 워크로드를 다루는 방법을 보여 주는 교본입니다. 우리에게 직접 필요한 순간이 오기 전이라도, 그 운영 패턴은 미리 익혀 둘 가치가 있습니다.</p>

<hr />

<h2 id="출처">출처</h2>

<ul>
  <li>docker-android (HQarroum): <a href="https://github.com/HQarroum/docker-android">https://github.com/HQarroum/docker-android</a></li>
  <li>Docker Hub 이미지: <code class="language-plaintext highlighter-rouge">halimqarroum/docker-android</code></li>
  <li>scrcpy (원격 화면 제어): <a href="https://github.com/Genymobile/scrcpy">https://github.com/Genymobile/scrcpy</a></li>
  <li>원 트윗(RT): <a href="https://x.com/hjguyhan/status/2069427245295493446">https://x.com/hjguyhan/status/2069427245295493446</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="dev" /><category term="docker" /><category term="android" /><category term="kubernetes" /><category term="kvm" /><category term="ci-cd" /><summary type="html"><![CDATA[docker-android는 Android 에뮬레이터를 단일 컨테이너로 패키징해 헤드리스로 띄우는 오픈소스 프로젝트입니다. 이미지 크기와 KVM 요구사항을 실제 문서 기준으로 확인하고, ThakiCloud K8s 플랫폼에서 디바이스 패스스루 워크로드를 운용하는 관점을 정리합니다.]]></summary></entry><entry xml:lang="ko"><title type="html">Claude Code를 사내 모델로 라우팅하기 - claude-code-router로 온프렘 코딩 인프라 구축</title><link href="https://thakicloud.github.io/ko/llmops/claude-code-router-onprem-routing/" rel="alternate" type="text/html" title="Claude Code를 사내 모델로 라우팅하기 - claude-code-router로 온프렘 코딩 인프라 구축" /><published>2026-06-24T00:00:00+09:00</published><updated>2026-06-24T00:00:00+09:00</updated><id>https://thakicloud.github.io/ko/llmops/claude-code-router-onprem-routing</id><content type="html" xml:base="https://thakicloud.github.io/ko/llmops/claude-code-router-onprem-routing/"><![CDATA[<pre><code class="language-mermaid">flowchart LR
    CC["Claude Code"] --&gt; CCR["claude-code-router 프록시"]
    CCR --&gt;|default| VLLM["사내 vLLM (Qwen3 / DeepSeek)"]
    CCR --&gt;|background| OLLAMA["로컬 Ollama"]
    CCR --&gt;|think| ANTH["Anthropic API"]
    CCR --&gt;|longContext| OR["OpenRouter"]
    VLLM --&gt; K8S["ThakiCloud K8s (Kueue + GPU)"]
</code></pre>

<h2 id="개요">개요</h2>

<p>Claude Code는 터미널에서 동작하는 에이전트형 코딩 도구입니다. 기본 동작은 Anthropic의 API로 요청을 보내는 것이지만, 모든 요청이 같은 무게를 갖지는 않습니다. 백그라운드 요약, 짧은 자동완성, 긴 컨텍스트 분석, 깊은 추론이 필요한 리팩터링은 서로 다른 모델 등급을 요구합니다. 모든 요청을 가장 비싼 모델로 처리하면 비용이 빠르게 누적되고, 반대로 모든 요청을 값싼 모델로 처리하면 품질이 무너집니다.</p>

<p><code class="language-plaintext highlighter-rouge">claude-code-router</code>(이하 CCR)는 이 문제를 라우팅 계층으로 해결합니다. Claude Code와 모델 백엔드 사이에 프록시를 두고, 요청 종류에 따라 서로 다른 제공자와 모델로 트래픽을 분기합니다. 최근 소셜에서는 “Claude Code를 영원히 무료로 쓰는 방법”이라는 자극적인 표현으로 이 도구의 변형판이 회자되었지만, 이 글에서는 과장된 프레이밍을 걷어내고 실제 가치인 모델 라우팅과 자체 호스팅 관점에 집중합니다.</p>

<p>ThakiCloud의 관점에서 CCR이 흥미로운 이유는 분명합니다. 우리는 K8s 위에서 Kueue로 GPU를 큐잉하고 vLLM으로 오픈 모델을 서빙합니다. CCR을 사용하면 Claude Code의 요청을 사내 vLLM 엔드포인트로 보낼 수 있고, 이는 소스 코드를 외부로 내보내지 않으면서 개발 생산성 도구를 운용한다는 보안 요구와 정확히 맞물립니다.</p>

<hr />

<h2 id="claude-code-router는-무엇인가">claude-code-router는 무엇인가</h2>

<p>CCR은 Anthropic 메시지 형식의 요청을 받아 OpenAI 호환 형식 등으로 변환한 뒤, 설정된 제공자로 전달하는 프록시 서버입니다. Claude Code 클라이언트 자체는 수정하지 않습니다. 환경 변수로 Claude Code가 CCR을 바라보게 만들면, 그 뒤의 라우팅은 전부 CCR이 담당합니다.</p>

<p>핵심 기능은 다음과 같습니다.</p>

<ul>
  <li><strong>모델 라우팅</strong>: <code class="language-plaintext highlighter-rouge">default</code>, <code class="language-plaintext highlighter-rouge">background</code>, <code class="language-plaintext highlighter-rouge">think</code>, <code class="language-plaintext highlighter-rouge">longContext</code>, <code class="language-plaintext highlighter-rouge">webSearch</code>, <code class="language-plaintext highlighter-rouge">image</code> 등 요청 유형별로 다른 모델을 지정합니다.</li>
  <li><strong>멀티 제공자 지원</strong>: OpenRouter, DeepSeek, Ollama, Gemini, Volcengine, SiliconFlow 등 다양한 백엔드를 동시에 등록합니다.</li>
  <li><strong>요청/응답 변환(transformer)</strong>: 제공자마다 다른 API 규격을 transformer가 흡수합니다. <code class="language-plaintext highlighter-rouge">openrouter</code>, <code class="language-plaintext highlighter-rouge">deepseek</code>, <code class="language-plaintext highlighter-rouge">gemini</code>, <code class="language-plaintext highlighter-rouge">tooluse</code> 같은 변환기가 내장되어 있습니다.</li>
  <li><strong>동적 모델 전환</strong>: Claude Code 안에서 <code class="language-plaintext highlighter-rouge">/model</code> 명령으로 즉시 모델을 바꿉니다.</li>
  <li><strong>CLI 모델 관리</strong>: <code class="language-plaintext highlighter-rouge">ccr model</code>로 터미널에서 모델과 제공자를 관리합니다.</li>
  <li><strong>프리셋과 플러그인</strong>: 설정을 프리셋으로 내보내고 마켓플레이스에서 설치하며, 커스텀 transformer로 기능을 확장합니다.</li>
</ul>

<p>위 다이어그램은 ThakiCloud 환경을 가정한 라우팅 흐름입니다. 일상적인 코딩(<code class="language-plaintext highlighter-rouge">default</code>)은 사내 vLLM이 서빙하는 Qwen3 또는 DeepSeek로, 가벼운 백그라운드 작업은 로컬 Ollama로, 깊은 추론이 필요한 경우에만 Anthropic API로, 긴 컨텍스트는 OpenRouter 경유 모델로 보냅니다. 이렇게 하면 요청의 성격과 모델의 비용을 맞출 수 있습니다.</p>

<hr />

<h2 id="설치-및-통합">설치 및 통합</h2>

<p>CCR은 npm 글로벌 패키지로 배포됩니다. 실제로 설치한 명령과 출력은 아래와 같습니다.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span> <span class="nt">-g</span> @musistudio/claude-code-router
</code></pre></div></div>

<p>설치 후 버전을 확인했습니다.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>ccr version
claude-code-router version: 2.0.0
</code></pre></div></div>

<p>사용 가능한 명령은 <code class="language-plaintext highlighter-rouge">ccr -h</code>로 확인할 수 있습니다. 실제 출력의 일부입니다.</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Usage: ccr [command] [preset-name]

Commands:
  start         Start server
  stop          Stop server
  restart       Restart server
  status        Show server status
  code          Execute claude command
  model         Interactive model selection and configuration
  preset        Manage presets (export, install, list, delete)
  install       Install preset from GitHub marketplace
  activate      Output environment variables for shell integration
  ui            Open the web UI in browser
  -v, version   Show version information
</code></pre></div></div>

<p>설정 파일은 <code class="language-plaintext highlighter-rouge">~/.claude-code-router/config.json</code>에 둡니다. 핵심은 <code class="language-plaintext highlighter-rouge">Providers</code> 배열과 <code class="language-plaintext highlighter-rouge">Router</code> 객체입니다. ThakiCloud 사내 vLLM과 로컬 Ollama를 함께 등록한 예시 구성입니다.</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"LOG"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
  </span><span class="nl">"API_TIMEOUT_MS"</span><span class="p">:</span><span class="w"> </span><span class="mi">600000</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Providers"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_base_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://vllm.internal.thaki:8000/v1/chat/completions"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"internal"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"models"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"Qwen3-32B"</span><span class="p">,</span><span class="w"> </span><span class="s2">"deepseek-v3"</span><span class="p">]</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="p">{</span><span class="w">
      </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_base_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:11434/v1/chat/completions"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"api_key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama"</span><span class="p">,</span><span class="w">
      </span><span class="nl">"models"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"qwen2.5-coder:latest"</span><span class="p">]</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">],</span><span class="w">
  </span><span class="nl">"Router"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"default"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm,Qwen3-32B"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"background"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ollama,qwen2.5-coder:latest"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"longContext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"thaki-vllm,deepseek-v3"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>서버를 띄우고 Claude Code를 CCR로 보내는 흐름은 다음과 같습니다.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ccr start            <span class="c"># 라우터 서버 기동</span>
ccr code <span class="s2">"..."</span>       <span class="c"># CCR를 경유해 Claude Code 실행</span>
<span class="c"># 또는 셸 전역으로 환경 변수 적용</span>
<span class="nb">eval</span> <span class="s2">"</span><span class="si">$(</span>ccr activate<span class="si">)</span><span class="s2">"</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">api_base_url</code>을 사내 엔드포인트로 지정한 순간, 해당 트래픽은 Anthropic이 아니라 우리 클러스터의 vLLM으로 흐릅니다. 즉 코드와 프롬프트가 외부로 나가지 않습니다.</p>

<hr />

<h2 id="실제-동작-확인">실제 동작 확인</h2>

<p>이번 글에서는 라우터 자체의 설치와 기동까지를 실제로 검증했습니다. npm 글로벌 설치는 1초 내에 끝났고, 버전은 2.0.0, CLI는 <code class="language-plaintext highlighter-rouge">start</code>/<code class="language-plaintext highlighter-rouge">stop</code>/<code class="language-plaintext highlighter-rouge">code</code>/<code class="language-plaintext highlighter-rouge">model</code>/<code class="language-plaintext highlighter-rouge">preset</code>/<code class="language-plaintext highlighter-rouge">ui</code> 등 문서에 명시된 명령을 그대로 노출했습니다. 위에 인용한 출력은 모두 로컬에서 캡처한 실제 결과입니다.</p>

<p>다만 사내 vLLM 엔드포인트로의 실제 추론 왕복은 이 환경에서 측정하지 않았습니다. 유효한 GPU 서빙 엔드포인트와 API 키가 필요하기 때문이며, 검증되지 않은 지연 시간이나 토큰 처리량 수치를 만들어 넣지 않기 위해 의도적으로 비웠습니다. 라우팅 품질과 도구 호출(tool use) 신뢰도는 백엔드 모델에 크게 좌우되므로, 실제 도입 시에는 우리 워크로드로 직접 벤치마크하는 단계가 반드시 필요합니다.</p>

<hr />

<h2 id="thakicloud-k8s-aiml-saas-플랫폼-적용-및-시사점">ThakiCloud K8s AI/ML SaaS 플랫폼 적용 및 시사점</h2>

<p>CCR의 라우팅 모델은 ThakiCloud가 이미 운용하는 인프라와 자연스럽게 맞물립니다.</p>

<p>첫째, <strong>코드 보안</strong>입니다. 금융, 공공, 의료처럼 소스 코드와 내부 데이터의 외부 반출이 제한되는 고객 환경에서, 개발자가 쓰는 코딩 에이전트의 트래픽을 사내 vLLM으로 묶을 수 있습니다. Claude Code의 사용성을 유지하면서도 프롬프트와 코드가 외부 API로 나가지 않는 구성은, 온프레미스 AI 플랫폼의 명확한 차별점입니다.</p>

<p>둘째, <strong>비용 통제</strong>입니다. 작업별 라우팅은 곧 비용별 라우팅입니다. 자동완성과 백그라운드 요약처럼 빈도가 높지만 난도가 낮은 요청은 자체 서빙하는 소형 코더 모델로, 아키텍처 결정 같은 고난도 추론만 상위 모델로 보내면, 단가가 높은 모델 사용량을 실제로 필요한 곳으로 좁힐 수 있습니다. Kueue로 GPU를 큐잉하고 vLLM의 스케일 동작을 활용하면, 유휴 시간대의 비용도 함께 줄어듭니다.</p>

<p>셋째, <strong>멀티테넌트 운영과의 정합성</strong>입니다. CCR의 제공자/라우터 설정은 텍스트 파일과 프리셋으로 관리됩니다. 테넌트별로 허용 백엔드와 모델을 다르게 묶은 프리셋을 배포하면, 팀마다 다른 모델 정책을 코드로 강제할 수 있습니다. 이는 우리가 추구하는 정책의 코드화 방향과 같습니다.</p>

<p>정리하면 CCR은 그 자체로 제품은 아니지만, 자체 서빙 백엔드와 결합될 때 “외부에 코드를 내보내지 않는 코딩 에이전트”라는 구체적인 가치를 만들어 냅니다. 이는 ThakiCloud가 강조해 온 온프렘, 비용 효율, self-hosting 메시지와 정확히 일치합니다.</p>

<hr />

<h2 id="한계-및-반론">한계 및 반론</h2>

<p>라우터를 도입한다고 모든 문제가 풀리지는 않습니다. 냉정하게 볼 지점이 여럿 있습니다.</p>

<ul>
  <li><strong>품질 격차</strong>: 라우팅의 가치는 백엔드 모델의 품질에 종속됩니다. 복잡한 멀티스텝 리팩터링이나 미묘한 디버깅에서 오픈 모델이 상위 폐쇄 모델을 항상 따라잡지는 못합니다. 무엇을 어디로 보낼지의 경계 설정이 품질을 좌우합니다.</li>
  <li><strong>도구 호출 신뢰도</strong>: Claude Code는 도구 호출에 크게 의존합니다. 일부 오픈 모델은 도구 호출 포맷을 일관되게 따르지 못해 transformer 보정이 필요하며, 이 부분이 깨지면 에이전트 루프 전체가 흔들립니다.</li>
  <li><strong>운영 부담</strong>: 제공자, transformer, 라우팅 규칙은 결국 유지보수 대상입니다. 백엔드 API 규격이 바뀌면 라우터 설정도 따라가야 합니다.</li>
  <li><strong>“무료” 프레이밍의 함정</strong>: 일부 변형판은 텔레메트리 제거나 안전 가드 제거를 내세우며 “무료”를 강조합니다. 이런 방향은 보안과 약관 측면에서 회사가 권장할 수 없습니다. 우리가 취하는 가치는 무료가 아니라 통제권입니다. 어떤 요청을 어떤 모델로 보낼지를 우리가 정한다는 점입니다.</li>
</ul>

<p>결론적으로 CCR은 “비용을 줄이는 마법”이 아니라 “라우팅이라는 통제 장치”입니다. 그 통제권을 자체 서빙 인프라와 결합할 때, 보안과 비용이라는 두 축에서 의미 있는 이득을 얻을 수 있습니다.</p>

<hr />

<h2 id="출처">출처</h2>

<ul>
  <li>claude-code-router (musistudio): <a href="https://github.com/musistudio/claude-code-router">https://github.com/musistudio/claude-code-router</a></li>
  <li>npm 패키지: <code class="language-plaintext highlighter-rouge">@musistudio/claude-code-router</code> (설치 검증 버전 2.0.0)</li>
  <li>원 트윗(RT): <a href="https://x.com/hjguyhan/status/2069431792688660982">https://x.com/hjguyhan/status/2069431792688660982</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="llmops" /><category term="claude-code" /><category term="model-routing" /><category term="on-premise" /><category term="vllm" /><category term="cost-optimization" /><summary type="html"><![CDATA[claude-code-router는 Claude Code의 요청을 작업 종류별로 서로 다른 모델 백엔드로 보내는 라우팅 계층입니다. 실제로 설치해 동작을 확인하고, ThakiCloud K8s 플랫폼에서 자체 vLLM 서빙으로 코드 외부 반출 없이 비용을 통제하는 구성을 정리합니다.]]></summary></entry><entry xml:lang="ar"><title type="html">Sakana Fugu: عصر التنسيق حيث تقود النماذج النماذج</title><link href="https://thakicloud.github.io/ar/agentops/sakana-fugu-orchestration-model/" rel="alternate" type="text/html" title="Sakana Fugu: عصر التنسيق حيث تقود النماذج النماذج" /><published>2026-06-23T00:00:00+09:00</published><updated>2026-06-23T00:00:00+09:00</updated><id>https://thakicloud.github.io/ar/agentops/sakana-fugu-orchestration-model</id><content type="html" xml:base="https://thakicloud.github.io/ar/agentops/sakana-fugu-orchestration-model/"><![CDATA[<h2 id="نظرة-عامة">نظرة عامة</h2>

<p>على مدار السنوات الماضية، قامت قفزات الذكاء الاصطناعي في مجملها على قوة الحجم: تدريب نماذج أضخم على بيانات أوفر، والتنافس بنموذج أحادي ضخم. غير أن المشكلات الحقيقية الصعبة تستدعي معرفةً ومهاراتٍ متنوعة تتخطى بمراحل أي معيار مقاييس منفرد. تحديد النموذج الأنسب لكل مهمة، والفصل بين التخطيط والتنفيذ، والجمع بين نقاط قوة نماذج مختلفة – الذكاء الجمعي – يبرز بوصفه محور المنافسة القادمة.</p>

<p>في الثاني والعشرين من يونيو 2026، أطلقت Sakana AI ومقرها طوكيو منتجَها <strong>Sakana Fugu</strong> مستهدفةً هذا التحول بدقة. Fugu نظام وكلاء متعدد يُنسق نماذج LLM متعددة ديناميكيًا، بينما تظهر للمستخدم على شكل واجهة برمجة نموذج واحد. الجانب اللافت أن Fugu بحد ذاته “نموذج لغوي مُدرَّب على استدعاء نماذج أخرى.” نموذج يقود نماذج.</p>

<p>يحلل هذا المقال بنية Fugu من منظور ThakiCloud، مشغِّل منصات الوكلاء متعددي المستأجرين. نفحص لماذا يمثل تغليف التنسيق داخل نموذج واحد خيارًا تصميميًا ذا قيمة، وكيف ينبغي قراءة مقاييس الأداء المُعلنة ذاتيًا، وأي تناقضات تكمن في منطق تسويق المنتج القاضي بأنه يقلص التبعية للبائع.</p>

<hr />

<h2 id="ما-هذه-التقنية">ما هذه التقنية</h2>

<p>Sakana Fugu نظام وكلاء متعدد يتصرف كنموذج واحد. حين يرسل المستخدم طلبًا إلى نقطة نهاية واحدة، يقرر Fugu بنفسه كيفية التعامل معه: الطلبات البسيطة يعالجها مباشرة، أما الأعمال الأكثر تعقيدًا فيُوجِّهها إلى فريق من النماذج المتخصصة المُنسَّقة. اختيار النماذج والتفويض والتحقق والتوليف كلها تجري داخليًا، فلا تطفو تعقيدات نظام الوكلاء المتعدد على سطح كود المستخدم.</p>

<p><img src="/assets/images/sakana-fugu-orchestration-model-diagram.png" alt="بنية تنسيق Sakana Fugu: خلف واجهة برمجية واحدة، يُنسق Fugu ديناميكيًا مجموعة وكلاء" /></p>

<p>هذا ممكن لأن Fugu ليس مجموعة قواعد توجيه، بل <strong>نموذج لغوي مُدرَّب على التنسيق ذاته</strong>. يتخصص Fugu في فهم متى يُفوِّض، وكيف تتواصل الوكلاء، وكيف يُدمج نواتجها في إجابة واحدة موثوقة. يستند هذا النهج إلى ورقتَي بحث نشرتهما Sakana AI في ICLR 2026: TRINITY (arXiv:2512.04695) التي تُقدم منسقًا تطوريًا لنماذج LLM، وConductor (arXiv:2512.04388) التي تدرس تعلُّم تنسيق الوكلاء باللغة الطبيعية.</p>

<p>تفصيل تصميمي يستحق الإشارة: يمكن لـ Fugu <strong>استدعاء نُسَخه الخاصة بصورة تكرارية</strong> داخل مجموعة الوكلاء. من الخارج تستدعي نموذجًا واحدًا، ومن الداخل منظومة متخصصة منسقة هي التي تؤدي العمل. صُممت مجموعة الوكلاء لتكون قابلة للاستبدال بهدف معلن هو تقليص الاعتماد على مزود بعينه.</p>

<hr />

<h2 id="البنية-المعمارية-نظام-بيئي-تعاوني-خلف-واجهة-برمجية-واحدة">البنية المعمارية: نظام بيئي تعاوني خلف واجهة برمجية واحدة</h2>

<p>الادعاء المحوري لـ Fugu هو أن “نموذج التنسيق هو الحدود التالية.” منذ تأسيسها، أكدت Sakana AI أن أقوى أنظمة الذكاء الاصطناعي ستكون أنظمة بيئية تعاونية لا نماذج ضخمة معزولة. Fugu هو التجسيد المنتجي لهذا الاعتقاد.</p>

<p>تقنيًا، يعالج Fugu أربع مراحل داخلية ضمن استدعاء واجهة برمجية واحد:</p>

<ul>
  <li><strong>الاختيار (Selection)</strong>: يقرأ طبيعة الطلب ويحدد ما إذا كان سيتولاه مباشرة أم يستعين بنماذج متخصصة.</li>
  <li><strong>التفويض (Delegation)</strong>: يفصل التخطيط عن التنفيذ ويوزع المهام الفرعية على الوكلاء المناسبين.</li>
  <li><strong>التحقق (Verification)</strong>: يراجع ناتج كل وكيل داخليًا.</li>
  <li><strong>التوليف (Synthesis)</strong>: يدمج النتائج في إجابة واحدة متسقة.</li>
</ul>

<p>كل هذا يجري خلف سطر واحد من واجهة برمجية متوافقة مع OpenAI. يتناقض ذلك مع أطر الوكلاء التقليدية التي تُلقي على عاتق المطور تعقيداتٍ من تعريف الرسوم البيانية وتوجيه الرسائل وإدارة الحالة. Fugu محاولة لاستيعاب تلك التعقيدات داخل أوزان النموذج. بالمقارنة مع بنية فرق الوكلاء متعددة الأدوار التي تديرها ThakiCloud فعلًا، يخطو Fugu خطوة إضافية: يجعل المُنسِّق نموذجًا مُدرَّبًا لا شفرة برمجية مكتوبة يدويًا.</p>

<p>تمتلك Sakana AI سوابق تؤيد هذا الاتجاه؛ إذ حل ALE-Agent المنسق البرمجي في المرتبة الحادية والعشرين في مسابقة برمجة شارك فيها ألف خبير بشري. Fugu يمتد من تلك التجربة إلى منتج تنسيق للأغراض العامة.</p>

<hr />

<h2 id="النموذجان-fugu-وfugu-ultra">النموذجان: Fugu وFugu Ultra</h2>

<p>عند الإطلاق، يتوفر Fugu بنموذجين مُصمَّمَين لأحجام عمل مختلفة، ويُمكن الوصول إليهما عبر واجهة برمجية واحدة متوافقة مع OpenAI.</p>

<p><strong>Fugu (الأساسي)</strong> يوازن بين الأداء وانخفاض زمن الاستجابة. يناسب افتراضيًا الخدمات التفاعلية كمساعدة البرمجة ومراجعة الكود وروبوتات المحادثة. يمكن للفرق ذات متطلبات البيانات والخصوصية والامتثال استثناء وكلاء بعينهم من المجموعة. هذه القدرة على الاستثناء ذات قيمة للصناعات المُنظَّمة والعملاء الخاضعين لمتطلبات سيادة البيانات.</p>

<p><strong>Fugu Ultra</strong> مُضبَّط لتعظيم جودة الإجابة في المسائل الصعبة متعددة الخطوات. يستعين بمجموعة أعمق من الوكلاء المتخصصين حين تتقدم الدقة والعمق. أفاد مستخدمون أوائل باستخدامهم Fugu Ultra في مهام كثيفة الاستخدام كأبحاث الذكاء الاصطناعي وإعادة استنساخ الأوراق البحثية وتحليل الأمن السيبراني والبحث في الأدبيات والبراءات.</p>

<p>الفصل بين النموذجين هو آلية تعرض المفاضلة بين التكلفة والجودة للمستخدم. التنسيق ينطوي بطبيعته على استدعاءات نماذج متعددة، فاستعمال مجموعة أعمق يرفع زمن الاستجابة والتكلفة معًا. Fugu يعرض هذه المفاضلة على شكل خطين منتجيين.</p>

<hr />

<h2 id="كيف-تقرأ-معايير-الأداء">كيف تقرأ معايير الأداء</h2>

<p>أعلنت Sakana AI أن Fugu Ultra يُجاري نماذج رائدة كـ Fable 5 وMythos Preview من Anthropic في معايير الأداء الصعبة لمجالات الهندسة والعلوم والاستدلال. هذا الادعاء يستوجب قراءة متأنية.</p>

<p>أولًا، <strong>جميع نتائج خط الأساس باستثناء نتائج Fugu نفسه مصدرها تقارير مزودي النماذج أنفسهم</strong>، لا مقارنة مستقلة خاضعة لشروط موحدة. ثانيًا، أهداف المقارنة – Fable 5 وMythos Preview – غير متاحة للعموم <strong>وغير مدرجة في مجموعة وكلاء Fugu</strong>. أي أن Fugu يدّعي اقتراب أدائه من نموذجين لا يستدعيهما داخليًا. ثالثًا، استُخدم mini-swe-agent scaffolding في تقييم مهام عائلة SWE، ونوع الـ scaffolding يؤثر تأثيرًا ماديًا في النتائج، فلا يمكن اعتبارها مقارنةً في ظروف متكافئة.</p>

<p>في المرحلة الراهنة، تظل قضية “تكافؤ Fugu Ultra مع النماذج الحدية” <strong>ادعاءً قائمًا على تقارير ذاتية</strong>. الأرقام التفصيلية مُجمَّعة في التقرير التقني لـ Sakana AI (github.com/SakanaAI/fugu)، لكن ريثما تتراكم عمليات التحقق المستقلة، التمييز بين الأرقام التسويقية والأداء المُتحقَّق منه أمر لازم. لا يستشهد هذا المقال بأرقام فردية غير مُتحقَّق منها، بل يُسجِّل طبيعة الادعاءات فحسب.</p>

<hr />

<h2 id="الانعكاسات-على-منصة-thakicloud-للذكاء-الاصطناعي-وتعلم-الآلة-على-k8s">الانعكاسات على منصة ThakiCloud للذكاء الاصطناعي وتعلم الآلة على K8s</h2>

<p>التساؤلات التي يطرحها Fugu تتقاطع مع استراتيجية منصة ThakiCloud بدقة. تُشغِّل ThakiCloud وكلاء متعددي المستأجرين في بيئات عملاء متنوعة، وتدير سحابة عمليات وكلاء تُسمى Praxis فوق K8s وجدولة GPU القائمة على Kueue وخدمة vLLM. الأطروحة التي يسعى Fugu لإثباتها – أن “طبقة التنسيق نفسها تصبح منتجًا” – تتجه في الاتجاه ذاته الذي نسلكه.</p>

<p>جوهر المسألة <strong>التحوط ضد التبعية للبائع</strong>. استشهدت Sakana AI بمخاطر الاعتماد على مزود واحد مبررًا لإطلاق Fugu. كما أظهرت قضية ضوابط التصدير المتعلقة بنماذج Fable وMythos من Anthropic، قد تتغير حدود الوصول إلى واجهة برمجية بعينها بين عشية وضحاها جراء التحولات التنظيمية أو السياسات الدبلوماسية. في قطاعات حساسة كالحكومة والمال والبنية التحتية، الاعتماد على واجهة برمجية لشركة واحدة ثغرة حقيقية. هذا المنطق هو ذاته الذي دفع ThakiCloud للتأكيد على التوطين الكامل والاستضافة الذاتية.</p>

<p>من منظور ThakiCloud، يتيح تصميم Fugu استخدامين: الأول هو قيمته بوصفه <strong>تطبيقًا مرجعيًا لأنماط التنسيق</strong>؛ فبنية التوجيه الديناميكي للنماذج المفتوحة المُستضافة ذاتيًا على K8s – بالجمع بين نماذج البرمجة والاستدلال والتخصص الحقلي حسب طبيعة المهمة – فكرة قابلة للتطبيق مباشرة على عمليات وكلاء Praxis. الثاني هو <strong>الامتثال القائم على الاستثناء</strong>: إمكانية استثناء وكلاء بعينهم من المجموعة ترتبط بشكل طبيعي بسياسات تقييد النماذج المسموح بها لكل مستأجر في البيئة متعددة المستأجرين.</p>

<p>غير أن نقاط التمايز التي تمتلكها ThakiCloud عن Fugu واضحة. Fugu واجهة برمجية مغلقة، بينما تقدم ThakiCloud مسارًا <strong>لاستضافة طبقة التنسيق ذاتيًا داخل بيئة العميل</strong>. للعملاء المحليين الذين يجب عليهم معالجة متطلبات السيادة وكفاءة التكلفة والأمن القومي، يُعدّ خيار “وضع التنسيق داخل مجموعتنا الخاصة” فارقًا حاسمًا. ضبط نموذج مفتوح بمستوى Qwen3 لحقل متخصص ثم استضافة طبقة التنسيق ذاتيًا فوقه قادر على تحقيق قدرة تنافسية وافية بتكلفة خدمة أقل.</p>

<hr />

<h2 id="القيود-والحجج-المضادة">القيود والحجج المضادة</h2>

<p>Fugu منتج جدير بالاهتمام، لكن منطقه التسويقي يحمل نقاطًا تستحق التدقيق.</p>

<p>أكبر التناقضات أنه <strong>يخلق تبعية جديدة بينما يدّعي تقليص التبعية للبائع</strong>. Fugu واجهة برمجية تجارية مغلقة، وليس نموذجًا مفتوح الأوزان. منتج أُطلق على خلفية أن الاعتماد على مزود واحد خطرٌ يستوجب بدوره الاعتماد على مزود واحد جديد هو Sakana AI. وحقيقة عدم توفر Fugu في الاتحاد الأوروبي/المنطقة الاقتصادية الأوروبية عند الإطلاق تُثبت أن هذا المنتج هو الآخر رهينٌ بالتنظيم والسياسات الإقليمية. التحوط الحقيقي ضد التبعية للبائع لا يتحقق إلا باستضافة ذاتية للتنسيق.</p>

<p>ثانيًا، <strong>التكلفة وزمن الاستجابة غير قابلَين للتنبؤ</strong>. بنية تستدعي فيها نموذج نماذجَ أخرى – وأحيانًا نفسه بصورة تكرارية – تجعل التنبؤ بعدد استدعاءات النماذج التي يُطلقها طلب واحد داخليًا أمرًا عسيرًا. أوضاع كـ Fugu Ultra التي تستعين بمجموعات أعمق قد ترفع الجودة لكنها ترفع التكلفة وزمن الاستجابة بالقدر ذاته. للفرق الإنتاجية المُلزَمة بإدارة اتفاقيات مستوى الخدمة والميزانيات، كيفية التحكم في هذه العدم القدرة على التنبؤ هي التحدي المحوري.</p>

<p>ثالثًا، <strong>التحقق وتصحيح الأخطاء أصعب</strong>. كون مسار التفويض الداخلي مطمورًا في أوزان النموذج ميزة لسهولة الاستخدام، لكنه يعني أن تتبع الحكم الذي أصدره وكيل بعينه حين تخرج إجابة خاطئة أمر عسير. في البيئات التشغيلية التي تُولي الاهتمامَ لقابلية المراقبة، يُشكّل هذا الغموض عبئًا.</p>

<p>رابعًا، وكما أُشير سابقًا، <strong>ادعاءات الأداء لا تزال في مرحلة الإعلان الذاتي</strong>. أهداف المقارنة نماذج غير منشورة لا تُضمَّن في المجموعة، وخطوط الأساس تقارير ذاتية للمزودين. تأجيل الحكم حتى تتراكم عمليات إعادة الاستنساخ والتحقق المستقلة هو الموقف العقلاني.</p>

<p>رغم هذه التحفظات، يظل التساؤل الذي يطرحه Fugu – “هل يمكن أن يكون التنسيق قدرة مكتسبة بالتدريب لا شفرة مكتوبة يدويًا؟” – تساؤلًا سيواجهه كل مشغّل منصة وكلاء متعددة. تعتزم ThakiCloud الإجابة عن هذا التساؤل بـ <strong>تنسيق قابل للاستضافة الذاتية وللمراقبة</strong> بوصفه ميزةً تمايزية.</p>

<hr />

<h2 id="المصادر">المصادر</h2>

<ul>
  <li>Sakana AI, “Sakana Fugu: One Model to Command Them All”, 2026-06-22, <a href="https://sakana.ai/fugu-release/">sakana.ai/fugu-release</a></li>
  <li>Sakana Fugu Technical Report, Fugu Team, Sakana AI, 2026, <a href="https://github.com/SakanaAI/fugu/blob/main/Fugu_technical_report.pdf">github.com/SakanaAI/fugu</a></li>
  <li>Xu et al., “TRINITY: An Evolved LLM Coordinator”, ICLR 2026, <a href="https://arxiv.org/abs/2512.04695">arXiv:2512.04695</a></li>
  <li>Nielsen et al., “Learning to Orchestrate Agents in Natural Language with the Conductor”, ICLR 2026, <a href="https://arxiv.org/abs/2512.04388">arXiv:2512.04388</a></li>
  <li>THE DECODER, “Sakana AI’s Fugu orchestrates multiple LLMs to match Anthropic’s Fable and Mythos benchmarks”, 2026-06-22, <a href="https://the-decoder.com/sakana-ais-fugu-orchestrates-multiple-llms-to-match-anthropics-fable-and-mythos-benchmarks/">the-decoder.com</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="agentops" /><category term="sakana-ai" /><category term="multi-agent" /><category term="orchestration" /><category term="llm-routing" /><category term="vendor-lock-in" /><summary type="html"><![CDATA[Fugu الذي أصدرته Sakana AI هو نظام تنسيق يُحكم التنسيق الديناميكي بين نماذج LLM متعددة بينما يبدو للمستخدم كواجهة برمجة نموذج واحد. نحلل هنا لماذا تكتسب هذه البنية أهمية من منظور منصات الوكلاء المتعددة، وما تعنيه بالنسبة لعمليات الوكلاء متعددة المستأجرين في ThakiCloud.]]></summary></entry><entry xml:lang="ar"><title type="html">شراكة Micron-Anthropic: الذاكرة تصبح ساحة المعركة في بنية AI التحتية</title><link href="https://thakicloud.github.io/ar/news/micron-anthropic-ai-memory-infrastructure/" rel="alternate" type="text/html" title="شراكة Micron-Anthropic: الذاكرة تصبح ساحة المعركة في بنية AI التحتية" /><published>2026-06-23T00:00:00+09:00</published><updated>2026-06-23T00:00:00+09:00</updated><id>https://thakicloud.github.io/ar/news/micron-anthropic-ai-memory-infrastructure</id><content type="html" xml:base="https://thakicloud.github.io/ar/news/micron-anthropic-ai-memory-infrastructure/"><![CDATA[<h2 id="نظرة-عامة">نظرة عامة</h2>

<p>يتحول مركز الثقل في سباق الذكاء الاصطناعي من النماذج إلى البنية التحتية، ومن الحوسبة داخل تلك البنية إلى الذاكرة. نمت قدرة معالجة GPU بسرعة، غير أن العائق العملي الحقيقي لاستدلال نماذج اللغة الكبيرة بات يتمثل في مدى سرعة تزويد تلك المعالجات بالبيانات، أي عرضة النطاق الترددي للذاكرة.</p>

<p>في 22 يونيو 2026، أعلنت شركة الذاكرة أشباه الموصلات Micron وشركة الذكاء الاصطناعي Anthropic عن شراكة استراتيجية. تتجاوز هذه الشراكة بكثير مجرد عقد توريد مكونات؛ إذ تجمع عقد توريد متعدد السنوات، والتصميم المشترك لبنية الذاكرة والتخزين لأعباء عمل الذكاء الاصطناعي، والاستثمار في حقوق الملكية، في تحالف شامل واحد. تشير هذه الشراكة إلى أن الذاكرة لم تعد مكونًا سلبيًا، بل أصبحت متغيرًا فاعلًا في تصميم أنظمة الذكاء الاصطناعي.</p>

<p>يقرأ هذا المقال الشراكة من منظور <strong>التقنية التحتية</strong> لا ردود فعل سوق الأسهم. يتناول سبب تحوّل الذاكرة إلى ساحة معركة في بنية الذكاء الاصطناعي التحتية، وما يغيره التصميم المشترك للذاكرة والتخزين، والانعكاسات على ThakiCloud بوصفها مشغّلة لمنصة خدمة AI/ML مستندة إلى K8s.</p>

<hr />

<h2 id="ما-الذي-جرى">ما الذي جرى</h2>

<p>يتضمن صميم الشراكة المُعلَنة ثلاثة محاور.</p>

<p><strong>أولًا، عقد توريد متعدد السنوات.</strong> ستوفر Micron لـAnthropic ذاكرة النطاق الترددي العالي (HBM)، وذاكرة DRAM، وأقراص الحالة الصلبة (SSD)، وهي المنتجات الرئيسية لمراكز البيانات. يُعدّ هذا عقدًا طويل الأمد لضمان حجوم توريد مستقرة، لا عملية شراء لمرة واحدة.</p>

<p><strong>ثانيًا، التصميم المشترك لبنية الذاكرة والتخزين.</strong> اتفقت الشركتان على تصميم بنيتَي ذاكرة وتخزين مُحسَّنتَين لأعباء عمل الذكاء الاصطناعي معًا. بعبارة أخرى، هذا تعاون لمواءمة تهيئة الذاكرة ومسارات البيانات مع أنماط تدريب النماذج والاستدلال لدى Anthropic. هذا الجانب هو ما يُميّز الصفقة بوضوح عن مجرد عقد توريد عادي.</p>

<p><strong>ثالثًا، الاستثمار الاستراتيجي في حقوق الملكية.</strong> ضخّت Micron استثمارًا استراتيجيًا في جولة تمويل Series H لشركة Anthropic، دون الإفصاح عن مبلغ الاستثمار. من خلال هذه الجولة، قُيِّمت Anthropic بنحو 965 مليار دولار [تقديري]، لتصبح أعلى شركة ذكاء اصطناعي خاصة قيمةً، مع مشاركة Samsung وSK hynix وAltimeter Capital وSequoia وAmazon وفقًا للتقارير. يتضمن الاتفاق أيضًا نشر Claude عبر عمليات Micron الداخلية.</p>

<p>ارتفع سهم Micron قرابة 5.5% مباشرة عقب الإعلان. غير أن محور هذا المقال ليس سعر السهم، بل الانعكاسات التقنية التي يحملها هذا التحالف لتصميم بنية الذكاء الاصطناعي التحتية.</p>

<hr />

<h2 id="لماذا-تُعدّ-الذاكرة-عائق-البنية-التحتية-للذكاء-الاصطناعي">لماذا تُعدّ الذاكرة عائق البنية التحتية للذكاء الاصطناعي</h2>

<p>يُعدّ الاستدلال في نماذج اللغة الكبيرة عملًا مقيَّدًا بالذاكرة في جوهره. في كل مرة يُولَّد فيها رمز (token)، يجب قراءة المجموعة الكاملة لأوزان النموذج من الذاكرة. مهما بلغت سرعة وحدات المعالجة، فإن GPU ستقف مكتوفة تنتظر البيانات إن لم تُسَدَّ بالأوزان بسرعة كافية. لذا تتحدد إنتاجية الاستدلال في الغالب بعرضة النطاق الترددي للذاكرة لا بطاقة المعالجة.</p>

<p><img src="/assets/images/micron-anthropic-ai-memory-infrastructure-diagram.png" alt="التسلسل الهرمي لذاكرة خادم استدلال الذكاء الاصطناعي: تقع ذاكرة HBM الأقرب إلى GPU وهي أسرع نقطة عنق زجاجة" /></p>

<p>يتضح التسلسل الهرمي لذاكرة خادم استدلال الذكاء الاصطناعي في المخطط أعلاه.</p>

<ul>
  <li><strong>HBM (ذاكرة النطاق الترددي العالي)</strong>: الذاكرة فائقة السرعة الأقرب إلى GPU. توفر نطاقًا تردديًا يبلغ تيرابايتات في الثانية، وتحتضن أوزان النموذج النشطة وذاكرة KV cache. تُعدّ HBM عنق الزجاجة المباشر لإنتاجية الاستدلال.</li>
  <li><strong>DRAM (ذاكرة النظام)</strong>: طاقتها أكبر من HBM لكنها أبطأ. تُستخدم لتبادل الأوزان التي لا تتسع لها HBM أو لحفظ سياقات أطول.</li>
  <li><strong>SSD (التخزين)</strong>: الأبطأ لكن الأكبر طاقةً. تحتضن نقاط تفتيش النموذج والبيانات الباردة وحصة متنامية من إلغاء تحميل KV cache.</li>
</ul>

<p>حين توفّر شركة واحدة التسلسل الهرمي بأكمله، يغدو تحسين حركة البيانات عبر كل الطبقات ممكنًا وفق فلسفة تصميم متسقة. كون Micron تغطي HBM وDRAM وSSD هو الأصل الاستراتيجي المحوري في هذه الشراكة.</p>

<hr />

<h2 id="ما-الذي-يغيره-التصميم-المشترك-للذاكرة-والتخزين">ما الذي يغيره التصميم المشترك للذاكرة والتخزين</h2>

<p>حتى الآن، كانت الذاكرة تُشترى في معظم الأحيان كسلعة وفق مواصفات قياسية. الجانب اللافت في هذه الشراكة هو أن Micron وAnthropic ستُصمّمان معًا <strong>بنية ذاكرة وتخزين مُفصَّلة لأعباء عمل الذكاء الاصطناعي</strong>. يُلمّح ذلك إلى تحولات عدة.</p>

<p>أولًا، يمكن أن تنعكس أنماط الوصول إلى البيانات في الاستدلال والتدريب مباشرةً على تصميم الذاكرة. على سبيل المثال، مسارات إلغاء تحميل KV cache بكفاءة من HBM إلى DRAM أو SSD، والبنى التي تُقلص تكلفة العبور بين طبقات التسلسل الهرمي للذاكرة في معالجة السياق الطويل، هي مسائل تحلّ بشكل أفضل حين يصمّمها معًا مزود النموذج ومزود الذاكرة.</p>

<p>ثانيًا، تُظهر الشراكة أن بنية الذكاء الاصطناعي التحتية تتجه نحو <strong>التكامل الرأسي</strong> بصورة متزايدة. إنها إشارة إلى أن شركات الذكاء الاصطناعي الرائدة تسعى إلى تأمين ليس GPU فحسب، بل الذاكرة أيضًا على مستوى سلسلة التوريد ومرحلة التصميم. مشاركة شركات ذاكرة كـSamsung وSK hynix في جولة Series H ذاتها تُقرأ في السياق نفسه. قدرة توريد الذاكرة تتحول إلى جزء من القدرة التنافسية في الذكاء الاصطناعي.</p>

<hr />

<h2 id="منظور-منصة-thakicloud-k8s-aiml-saas">منظور منصة ThakiCloud K8s AI/ML SaaS</h2>

<p>هذه صفقة بين شركات كبرى، لكنها تحمل دروسًا مباشرة لـThakiCloud بوصفها مشغّلة لمنصة خدمة AI/ML مستندة إلى K8s.</p>

<p>أولًا، يتأكد من جديد أن <strong>الذاكرة هي نقطة الانطلاق لتحسين تكاليف الخدمة</strong>. تُشغّل ThakiCloud الاستدلال متعدد المستأجرين فوق جدولة GPU المستندة إلى vLLM وKueue. في هذه البيئة، الرافعة الأكثر فاعلية لزيادة الإنتاجية هي في الغالب استخدام الذاكرة لا المعالجة. إدارة KV cache واستراتيجيات الدفعات وتوزيع النماذج المُعيَّر وفق طاقة HBM هي التقنيات المحورية لمعالجة طلبات متزامنة أكثر على GPU ذاتها. سبب استقطاب تقنيات كـPagedAttention في vLLM للاهتمام يعود في نهاية المطاف إلى كفاءة الذاكرة.</p>

<p>ثانيًا، ثمة <strong>اقتصاديات البنية التحتية للذكاء الاصطناعي على الموقع المحلي</strong>. توجّه الشركات الرائدة نحو تأمين الذاكرة أصلًا استراتيجيًا يُبرز بصورة متناقضة قيمة الاستضافة الذاتية على الموقع المحلي. حين يُخدَّم النموذج على GPU وذاكرة يمتلكها العميل، تتحدد التكلفة الإجمالية للملكية (TCO) بالقدرة على ضبط التسلسل الهرمي للذاكرة وفق عبء العمل. تستطيع ThakiCloud تقديم تكاليف استدلال أكثر قابلية للتنبؤ وكفاءة مقارنةً بالاعتماد على API السحابية، وذلك بتحسين توزيع النموذج وتهيئة الذاكرة ضمن مجموعات العملاء.</p>

<p>ثالثًا، هناك <strong>منظور السيادة وسلسلة التوريد</strong>. كون الذاكرة قد أصبحت ساحة معركة في منافسة الذكاء الاصطناعي يدفع إلى إعادة التفكير في هشاشة البنى التي يعتمد فيها العملاء المحليون في آنٍ واحد على سحابة خارجية وسلسلة توريد خارجية. الطلب على الاحتفاظ بالبيانات والبنية التحتية داخليًا عبر الاستضافة المحلية والذاتية يتعزز في هذا السياق، ولا سيما في المجالات الخاضعة لمتطلبات الأمن القومي أو التنظيم.</p>

<hr />

<h2 id="تحفظات-وحجج-مضادة">تحفظات وحجج مضادة</h2>

<p>لتجنب الإفراط في تأويل هذه الشراكة، تستحق بعض النقاط الإشارة.</p>

<p>أولًا، ما زال قدر وافر من المعلومات المتاحة للعموم في مستوى <strong>البيان الصحفي</strong>. لم يُكشف عن المخرجات التقنية التي سيثمر عنها التصميم المشترك لبنية الذاكرة والتخزين، ولا عن مبالغ الاستثمار وحجوم التوريد. لذا يحتاج الأثر الفعلي للشراكة إلى تأكيد عبر منتجات وبيانات مستقبلية؛ والتقييم في هذه المرحلة أقرب إلى تفسير اتجاه.</p>

<p>ثانيًا، من الأهمية بمكان <strong>التمييز بين الدوافع التجارية والمالية والمعنى التقني</strong>. الاستثمار في حقوق الملكية ونشر Claude داخليًا آليتان لتعزيز الروابط التجارية، ولا تضمنان بذاتهما تقدمًا في تكنولوجيا الذاكرة. أرقام كتقييم 965 مليار دولار [تقديري] أو نسبة ارتفاع السهم تعكس توقعات السوق ولا تتصل مباشرةً بأداء البنية التحتية.</p>

<p>ثالثًا، رغم صحة فرضية أن عرضة النطاق الترددي للذاكرة هي عنق الزجاجة بشكل عام عبر أعباء عمل الاستدلال، فإنها <strong>لا تنطبق بالدرجة ذاتها في جميع الحالات</strong>. مع النماذج الأصغر أو الإنتاجية العالية للدفعات أو المراحل المكثفة حوسبيًا، قد تكون الحوسبة هي عنق الزجاجة. يجب تجنب التبسيط القائل بأن “المزيد من الذاكرة يحل كل شيء”؛ قياس عنق الزجاجة تجريبيًا لكل عبء عمل والاستجابة وفقًا لذلك هو المنهج الصحيح.</p>

<p>خلاصة القول، تُعدّ شراكة Micron-Anthropic إشارة ذات معنى إلى أن المنافسة في بنية الذكاء الاصطناعي التحتية تتوسع لتتجاوز الحوسبة نحو التسلسل الهرمي للذاكرة بأكمله. تعتزم ThakiCloud توظيف هذا الاتجاه أساسًا لتعزيز نقاط قوتنا في الخدمة الموفرة للذاكرة واقتصاديات الاستضافة المحلية.</p>

<hr />

<h2 id="المصادر">المصادر</h2>

<ul>
  <li>Micron Technology, “Micron and Anthropic Announce Strategic Agreement to Scale Next-Generation AI Infrastructure”, 2026-06-22, <a href="https://investors.micron.com/news-releases/news-release-details/micron-and-anthropic-announce-strategic-agreement-scale-next">investors.micron.com</a></li>
  <li>Yahoo Finance, “Micron and Anthropic Announce Strategic Agreement to Scale Next-Generation AI Infrastructure”, 2026-06-22, <a href="https://finance.yahoo.com/technology/ai/articles/micron-anthropic-announce-strategic-agreement-130000301.html">finance.yahoo.com</a></li>
  <li>Crypto Briefing, “Micron signs supply agreement with Anthropic AI, invests in Series H round”, 2026-06-22, <a href="https://cryptobriefing.com/micron-anthropic-supply-agreement-series-h/">cryptobriefing.com</a></li>
</ul>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="news" /><category term="micron" /><category term="anthropic" /><category term="hbm" /><category term="ai-infrastructure" /><category term="memory" /><summary type="html"><![CDATA[ستوفر Micron لشركة Anthropic ذواكر HBM وDRAM وأقراص SSD، وستشاركها في تصميم بنية ذاكرة أعباء عمل الذكاء الاصطناعي، وقد استثمرت في جولة Series H. يحلل هذا المقال لماذا تُعدّ عرضة النطاق الترددي للذاكرة العائقَ الحقيقي في استدلال LLM، وما تعنيه هذه الشراكة من منظور بنية الذكاء الاصطناعي على الموقع المحلي.]]></summary></entry><entry xml:lang="ar"><title type="html">تحليل المستندات بمستوى SOTA باستخدام نموذج بحجم 0.9B: تجربة عملية مع PaddleOCR-VL على النصوص العربية والكورية</title><link href="https://thakicloud.github.io/ar/research/paddleocr-vl-09b-multilingual-document-parsing/" rel="alternate" type="text/html" title="تحليل المستندات بمستوى SOTA باستخدام نموذج بحجم 0.9B: تجربة عملية مع PaddleOCR-VL على النصوص العربية والكورية" /><published>2026-06-23T00:00:00+09:00</published><updated>2026-06-23T00:00:00+09:00</updated><id>https://thakicloud.github.io/ar/research/paddleocr-vl-09b-multilingual-document-parsing</id><content type="html" xml:base="https://thakicloud.github.io/ar/research/paddleocr-vl-09b-multilingual-document-parsing/"><![CDATA[<p><img src="/assets/images/paddleocr-vl-09b-multilingual-document-parsing-hero.png" alt="تصوير مجرد يوضح تحول المستندات الشفافة إلى شبكة منظمة من العقد" />
<em>تعبير تجريدي عن مسار تحويل المستندات إلى بيانات منظمة.</em></p>

<blockquote>
  <p>📄 <strong>المراجعة المتعمقة الكاملة (DOCX)</strong>: <a href="https://drive.google.com/file/d/1aFDms1DJR0iMABZcOX3kxPw23SSlOchT/view">نزّل المراجعة التفصيلية من Google Drive</a>.</p>
</blockquote>

<h2 id="نظرة-عامة">نظرة عامة</h2>

<p>تحليل المستندات، أي تحويلها إلى بنية قابلة للقراءة آلياً، بات أكثر أهمية في عصر RAG والعوامل الذكية. فالصفحة الواحدة من PDF قد تجمع نصاً سردياً وجداول ومعادلات ومخططات وتخطيطاً متعدد الأعمدة، وعلى النموذج أن يفك هذا التشابك بترتيب قراءة دقيق حتى تستطيع النماذج اللغوية الكبيرة الاستفادة منه. حتى وقت قريب، كان هذا الميدان حكراً على النماذج متعددة الوسائط العملاقة كـ GPT-4o وGemini 2.5 Pro، أو على أدوات المعالجة الأنبوبية الثقيلة.</p>

<p><strong>PaddleOCR-VL</strong> الصادر عن فريق PaddlePaddle (Baidu) يزعزع هذه المعادلة. فنموذجه الأساسي PaddleOCR-VL-0.9B لا يتجاوز 960 مليون معامل، نموذج رؤية-لغة بالغ الصغر، غير أنه يُفيد بأداء متصدر في تحليل المستندات على مستوى الصفحة كاملاً، وكذلك في التعرف على المكونات الفردية. الرخصة Apache-2.0 تتيح الاستخدام التجاري بحرية، ويشهد النموذج إقبالاً واسعاً على Hugging Face إذ تجاوز عدد التنزيلات 120,000 مرة.</p>

<p>في ThakiCloud نشغّل فعلياً بنية تحتية للاستدلال متعدد المستأجرين ومعالجة المستندات على منصة AI/ML SaaS مبنية على Kubernetes. لهذا لم نكتفِ بمراجعة النموذج نظرياً، بل ثبّتناه وأجرينا عليه استدلالاً فعلياً على مستندات تجمع الكورية والإنجليزية والعربية. نوضح هنا ما إذا كان النموذج الصغير جديراً بالاستخدام الفعلي، وأين يناسب منصتنا.</p>

<h2 id="ما-هذه-التقنية">ما هذه التقنية؟</h2>

<p>الفكرة المحورية في PaddleOCR-VL أنها لا تعتمد على نموذج ضخم واحد من البداية للنهاية يعالج كل شيء. فالأسلوب الشامل يعتمد على فك ترميز ذاتي الانحدار الطويل الذي يرفع تكلفة الكمون والذاكرة، ويُضخّم الهلوسة وعدم الاستقرار في التخطيطات المتعددة الأعمدة والمختلطة. عوضاً عن ذلك، تفصل PaddleOCR-VL المهمة إلى مرحلتين.</p>

<p><img src="/assets/images/paddleocr-vl-09b-multilingual-document-parsing-diagram.png" alt="مخطط توضيحي لخط أنابيب PaddleOCR-VL ثنائي المراحل" />
<em>البنية ثنائية المراحل التي تفصل تحليل التخطيط عن التعرف على المكونات.</em></p>

<p><strong>المرحلة الأولى، تحليل التخطيط (PP-DocLayoutV2)</strong>: نموذج خفيف متخصص يرصد المناطق الدلالية في المستند ويصنّفها ويتنبأ بترتيب القراءة. يستخدم RT-DETR للكشف عن الكائنات، وشبكة مؤشر مكوّنة من ست طبقات محوّلة للتنبؤ بترتيب القراءة. بفصل استدلال التخطيط عن نموذج الرؤية-اللغة الثقيل، تحقق النماذج نتائج مستقرة حتى في التخطيطات متعددة الأعمدة.</p>

<p><strong>المرحلة الثانية، التعرف على المكونات (PaddleOCR-VL-0.9B)</strong>: تتلقى هذه المرحلة المناطق التي رصدتها المرحلة الأولى وتتعرف بدقة على النص والجداول والمعادلات والمخططات. تتبع البنية نمط LLaVA مع مشفّر بصري ذي دقة ديناميكية على غرار NaViT (مُهيَّأ من نموذج الرؤية Keye-VL) لمعالجة الصور بأي دقة دون تشويه. يربط مُسقِط MLP مزدوج الطبقات مع تفعيل GELU (بحجم دمج 2) السمات البصرية بفضاء تضمينات النموذج اللغوي، فيما يعمل المُفكِّك ERNIE-4.5-0.3B المعزز بـ 3D-RoPE مُفكِّكاً. اختيار نموذج لغوي صغير مقصود: كلما صغر المُفكِّك تسارع فك الترميز رمزاً بعد رمز.</p>

<p>تُكمل وحدة مُعالجة لاحقة خفيفة الدورة بدمج مخرجات المرحلتين في Markdown وJSON منظّمَين. يدعم النموذج 109 لغة تشمل الكورية واليابانية والعربية والسيريلية والديفانغاري (الهندية) إضافة إلى الأبجديات اللاتينية.</p>

<h2 id="التثبيت-والتكامل">التثبيت والتكامل</h2>

<p>لنُجرِ التثبيت بأنفسنا. البيئة: MacBook بمعالج Apple Silicon (macOS، معالج مركزي فقط، بلا تسريع GPU)، Python 3.12.8. تعمل PaddleOCR-VL فوق منظومة PaddlePaddle، فنثبّت الحزمتين التاليتين:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># التثبيت في البيئة الافتراضية المشتركة (.venv) وفق قواعد python-runtime</span>
<span class="nv">VIRTUAL_ENV</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PWD</span><span class="s2">/.venv"</span> uv pip <span class="nb">install </span>paddlepaddle paddleocr
<span class="c"># الإصدارات المثبتة: paddlepaddle==3.3.1, paddleocr==3.7.0</span>
</code></pre></div></div>

<p>عند المحاولة الأولى للاستدلال ظهر الخطأ التالي:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RuntimeError: A dependency error occurred during pipeline creation.
Please refer to the installation documentation to ensure all required dependencies are installed.
</code></pre></div></div>

<p>يتطلب خط أنابيب PaddleOCR-VL تبعيات إضافية خاصة بتحليل المستندات. حلّينا الأمر بسطر واحد:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">VIRTUAL_ENV</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PWD</span><span class="s2">/.venv"</span> uv pip <span class="nb">install</span> <span class="s2">"paddleocr[doc-parser]"</span>
</code></pre></div></div>

<p>شيفرة الاستدلال نفسها مختصرة؛ يقوم خط الأنابيب بتنزيل النماذج اللازمة تلقائياً:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">paddleocr</span> <span class="kn">import</span> <span class="n">PaddleOCRVL</span>

<span class="n">pipe</span> <span class="o">=</span> <span class="nc">PaddleOCRVL</span><span class="p">()</span>                 <span class="c1"># تنزيل النموذج تلقائياً عند الاستدعاء الأول
</span><span class="n">out</span> <span class="o">=</span> <span class="n">pipe</span><span class="p">.</span><span class="nf">predict</span><span class="p">(</span><span class="sh">"</span><span class="s">sample_doc.png</span><span class="sh">"</span><span class="p">)</span> <span class="c1"># صورة المستند ← مخرجات منظمة
</span><span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">out</span><span class="p">:</span>
    <span class="n">res</span><span class="p">.</span><span class="nf">save_to_markdown</span><span class="p">(</span><span class="n">save_path</span><span class="o">=</span><span class="sh">"</span><span class="s">paddleocr_out</span><span class="sh">"</span><span class="p">)</span>
</code></pre></div></div>

<p>ثمة نقطة جديرة بالإشارة: اختارت <code class="language-plaintext highlighter-rouge">paddleocr==3.7.0</code> تلقائياً <strong>PP-DocLayoutV3</strong> نموذجاً للتخطيط، و<strong>PaddleOCR-VL-1.6-0.9B</strong> نموذجاً للتعرف. بمعنى أن الحزمة لا تجلب الإصدار الأوّلي الوارد في الورقة البحثية (2510.14528)، بل نموذج 1.6 المحدَّث ونموذج تخطيط أحدث. رقم “96.33% SOTA على OmniDocBench” الذي انتشر على تويتر ينتمي تحديداً إلى PaddleOCR-VL-1.6 (وفق OmniDocBench v1.6)، وهو مختلف عن الأرقام الأولية التي أوردتها الورقة البحثية. سنوضح هذا التمييز لاحقاً.</p>

<h2 id="نتائج-التجربة-الفعلية">نتائج التجربة الفعلية</h2>

<p>أنشأنا صورة اصطناعية تجمع الكورية والإنجليزية والعربية وأرقاماً ومعادلات بسيطة لاستخدامها في الاختبار، مستوحاة من فواتير ThakiCloud وتقارير التكاليف في صفحة واحدة. القياسات الفعلية في بيئة المعالج المركزي:</p>

<ul>
  <li>تهيئة النموذج (الاستدعاء الأول، شاملاً التنزيل): <strong>74.7 ثانية</strong></li>
  <li>الاستدلال (predict): <strong>32.65 ثانية / صفحة واحدة</strong></li>
  <li>الوقت الإجمالي (من الاستيراد حتى الحفظ): 137.4 ثانية</li>
  <li>سجل بنية المُفكِّك: GQA (انتباه مجمّع الاستعلامات)، num_heads 16 / num_key_value_heads 2</li>
</ul>

<p>كانت مخرجات Markdown للتعرف على النحو التالي:</p>

<div class="language-markdown highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gu">## ThakiCloud Document Intelligence</span>
Kubernetes AI/ML SaaS Platform - Invoice No. 2026-0623
타키클라우드 멀티테넌트 추론 비용 보고서
GPU hours: 1,284 Total: $9,640.00
E = mc^2 sum_{i=1}^{n} x_i
</code></pre></div></div>

<p>اللافت أن النموذج التقط العنوان الإنجليزي بوصفه ترويساً في Markdown (<code class="language-plaintext highlighter-rouge">##</code>)، وتعرّف بدقة على الجملة الكورية “타키클라우드 멀티테넌트 추론 비용 보고서”، وقرأ الأرقام والرموز النقدية ($9,640.00، GPU hours 1,284) دون أخطاء. جودة التعرف على الكورية مستقرة بشكل لافت لنموذج بهذا الحجم.</p>

<p>ثمة ملاحظة أمينة تستحق التسجيل: السطر العربي في صورتنا الاصطناعية لم يُحوَّل إلى نص، بل صُنِّف كمنطقة صورة. هذا ليس قصوراً في النموذج بل مشكلة في صورة الاختبار؛ إذ أن الرسم باستخدام PIL للعربية لم يعالج صحيح التشكيل واتصال الحروف وثنائية الاتجاه، فخرجت الحروف منفصلة، فاعتبرتها مرحلة التخطيط عنصراً مرسوماً. مسافة التحرير التي تُفيد بها الورقة للتعرف على الأسطر العربية هي 0.122 وهي منخفضة كافياً، ما يعني أن نتائج مختلفة ستظهر مع مستندات عربية حقيقية. هذه التجربة بحد ذاتها تمنحنا درساً تشغيلياً: جودة المعالجة الأولية والرسم تحدد جودة المخرجات.</p>

<p>فيما يلي الأرقام التي أوردتها الورقة البحثية من المعايير العامة. المخطط أدناه يعرض مسافات التحرير لعدد من اللغات من مجموع 109 لغة (الأقل كلما كان أفضل):</p>

<p><img src="/assets/images/paddleocr-vl-09b-multilingual-document-parsing-results.png" alt="مخطط مسافة التحرير لتعرف PaddleOCR-VL على النص متعدد اللغات" />
<em>إبراز الكورية والعربية، وهما السوقان الرئيسيتان لـ ThakiCloud. المصدر: arXiv:2510.14528.</em></p>

<p>الكورية عند 0.052 والعربية عند 0.122، كلتا اللغتين المستهدفتين تُظهران مسافات تحرير جيدة. على صعيد الأداء الشامل على مستوى الصفحة، تُشير الورقة البحثية إلى أن النموذج حقق 92.86 في المجموع على OmniDocBench v1.5، متفوقاً على MinerU2.5-1.2B (90.67) الذي يليه مباشرة.</p>

<p><img src="/assets/images/paddleocr-vl-09b-multilingual-document-parsing-bench.png" alt="مخطط مقارنة الدرجات الإجمالية على OmniDocBench v1.5" />
<em>نموذج 0.9B يتفوق على نموذج 1.2B في الدرجة الإجمالية. المصدر: arXiv:2510.14528 Table 2.</em></p>

<p>عند الاستشهاد بالأرقام لا بد من توضيح الإصدار. الورقة البحثية (2510.14528) أفادت بـ 92.86 على OmniDocBench v1.5؛ والإصدار اللاحق PaddleOCR-VL-1.5 أفاد بـ 94.5% على v1.5، فيما أفاد PaddleOCR-VL-1.6 بـ 96.33% على v1.6 كرقم [تقديري] (أرقام الإصدارات اللاحقة مستندة إلى تقارير منفصلة). الرقم 96.33% الذي ظهر على تويتر ينتمي إلى أحدث إصدار 1.6. كذلك تجدر الإشارة إلى أن سرعة الاستدلال المقاسة في الورقة تمت على NVIDIA A100 واحد بمعالجة دُفعية لـ 512 مستنداً باستخدام محركات خدمة عالية الأداء كـ vLLM وSGLang وFastDeploy. قياسنا لـ 32.65 ثانية/صفحة على المعالج المركزي هو رقم مرجعي لبيئة بلا تسريع، ولا يعكس الإنتاجية في بيئة الإنتاج.</p>

<h2 id="دلالات-التطبيق-على-منصة-thakicloud-k8s-aiml-saas">دلالات التطبيق على منصة ThakiCloud K8s AI/ML SaaS</h2>

<p>جاذبية هذا النموذج لا تكمن فقط في ارتفاع درجاته، بل في <strong>سهولة تشغيله لصغر حجمه</strong>. من منظور منظومة ThakiCloud:</p>

<ul>
  <li><strong>خدمة متعددة المستأجرين بتكلفة منخفضة</strong>: نموذج 0.9B يعمل على بطاقة GPU واحدة من الفئة الاستهلاكية أو الاقتصادية. نشره فوق جدولة GPU المستندة إلى Kueue ومحركات الخدمة vLLM وSGLang يتيح تشغيل نقاط نهاية منفصلة لتحليل مستندات كل مستأجر بتكلفة معقولة، مع التحكم الكامل في التكلفة عبر الاستدلال ذاتي الاستضافة بدلاً من دفع رسوم رمزية لنموذج ضخم.</li>
  <li><strong>سيادة البيانات والتشغيل المحلي</strong>: المستندات كثيراً ما تحوي معلومات حساسة كفواتير وعقود وسجلات طبية ومالية يصعب إرسالها خارجياً. الاستضافة الذاتية لنموذج Apache-2.0 تتيح تقديم استخبارات المستندات دون إرسال البيانات إلى واجهات برمجية خارجية، بما يتوافق مع اشتراطات عزل الشبكة وقيود تصدير البيانات في القطاعات الحكومية والمالية.</li>
  <li><strong>تعدد اللغات يعني ملاءمة السوق</strong>: يصدر مدونة ThakiCloud بالكورية والإنجليزية والعربية. من موقعنا المُطِل على السوقين الكوري والشرق أوسطي، معالجة الكورية (0.052) والعربية (0.122) بنموذج واحد بشكل موثوق يترجم مباشرة إلى ميزة تنافسية ويُقلل الحاجة إلى محركات OCR مختلفة لكل سوق.</li>
  <li><strong>طرف المدخلات في خط أنابيب RAG</strong>: مخرجات Markdown وJSON المنظّمة تتغذى مباشرة في فهرسة RAG واستدعاءات أدوات الوكلاء. النص المحافظ على تخطيطه وترتيب قراءته يرفع جودة القطع ويُسهم مباشرة في دقة الاسترجاع.</li>
</ul>

<p>في مرحلة أكثر نضجاً، يمكن فصل نموذج التخطيط من المرحلة الأولى عن نموذج التعرف من المرحلة الثانية كخدمتين مستقلتين: التخطيط على عقد المعالج المركزي، والتعرف بنموذج الرؤية-اللغة على عقد GPU. البنية المنفصلة على مرحلتين تُيسّر جدولة الموارد غير المتجانسة في بيئة Kubernetes.</p>

<h2 id="القيود-والاعتراضات">القيود والاعتراضات</h2>

<p>لا يصح الاكتفاء بالإيجابيات. إليك نقاط الضعف بناءً على القياس الفعلي والأدبيات:</p>

<ul>
  <li><strong>بطء على المعالج المركزي</strong>: 32.65 ثانية/صفحة التي قسناها غير مناسبة لمعالجة المستندات بكميات كبيرة. الاستخدام الفعلي يستلزم GPU ومحركات خدمة كـ vLLM وSGLang، وإنتاجيات الورقة المُبهرة تستند إلى بيئة دُفعية على A100.</li>
  <li><strong>تبعيات البنية الثنائية</strong>: تحتاج إلى إدارة نموذجَي التخطيط والتعرف معاً، مما يزيد تكلفة النشر وإدارة توافق الإصدارات مقارنة بنموذج واحد. في الواقع تجلب الحزمة بشكل افتراضي PP-DocLayoutV3 + PaddleOCR-VL-1.6، وهذا التوليف قد يتغير بمرور الوقت.</li>
  <li><strong>أرقام SOTA مرتبطة بإصدار محدد</strong>: 96.33% هو رقم الإصدار 1.6 على OmniDocBench v1.6، وليس العنوان الرئيسي للورقة الأساسية التي اقترحت 0.9B. الاستشهاد دون توضيح الإصدار والمعيار يُفضي إلى التضليل.</li>
  <li><strong>الاعتماد على جودة المعالجة الأولية</strong>: كما أظهر اختبارنا العربي، جودة رسم الصورة ودقتها وتشكيل حروفها تحدد النتيجة. في خطوط الأنابيب الإنتاجية، مرحلة توحيد المدخلات لا تقل أهمية عن اختيار النموذج.</li>
  <li><strong>ضعف التعرف على الجداول</strong>: أشارت الورقة البحثية نفسها إلى أن TEDS الخاصة بالجداول الإنجليزية على OmniDocBench v1.0 (88.0) منخفضة نسبياً (مع تفسير بتأثير أخطاء التعليق). المستندات الغنية بالجداول تستلزم تحققاً منفصلاً.</li>
</ul>

<p>خلاصة القول، PaddleOCR-VL خيار مُغرٍ جداً بوصفه نموذج تحليل مستندات “صغيراً لكن قوياً” لاستخبارات المستندات ذاتية الاستضافة. غير أن استخراج قيمته الحقيقية في الإنتاج يتطلب معالجة ثلاثة تحديات تشغيلية معاً: خدمة GPU، وتثبيت الإصدارات، ومعالجة المدخلات الأولية.</p>

<h2 id="المصادر">المصادر</h2>

<ul>
  <li>ورقة PaddleOCR-VL البحثية (arXiv:2510.14528): <a href="https://arxiv.org/abs/2510.14528">Boosting Multilingual Document Parsing via a 0.9B Ultra-Compact Vision-Language Model</a></li>
  <li>بطاقة النموذج على Hugging Face: <a href="https://huggingface.co/PaddlePaddle/PaddleOCR-VL">PaddlePaddle/PaddleOCR-VL</a></li>
  <li>الكود المصدري: <a href="https://github.com/PaddlePaddle/PaddleOCR">github.com/PaddlePaddle/PaddleOCR</a></li>
  <li>أُجريت التجارب الواردة في هذا المقال على بيئة ThakiCloud (macOS، معالج مركزي) مباشرة، وأرقام المعايير المُستشهد بها مستقاة من الورقة البحثية المذكورة أعلاه.</li>
</ul>

<blockquote>
  <p>📄 <strong>المراجعة المتعمقة الكاملة (DOCX)</strong>: <a href="https://drive.google.com/file/d/1aFDms1DJR0iMABZcOX3kxPw23SSlOchT/view">نزّل المراجعة التفصيلية من Google Drive</a>.</p>
</blockquote>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="research" /><category term="paddleocr-vl" /><category term="document-parsing" /><category term="vision-language-model" /><category term="ocr" /><category term="multilingual" /><category term="on-premise" /><summary type="html"><![CDATA[أجرينا تثبيتاً فعلياً لنموذج PaddleOCR-VL متعدد اللغات بحجم 0.9B الذي أطلقه PaddlePaddle، واختبرناه على مستندات تجمع بين الكورية والإنجليزية والعربية. نستعرض هنا البنية ثنائية المراحل، وأداء النموذج متعدد اللغات، وما يعنيه ذلك لمنصة استخبارات المستندات متعددة المستأجرين في ThakiCloud.]]></summary></entry><entry xml:lang="ar"><title type="html">حفنة من بيانات البشر تكفي: تثبيت سياسات القيادة المُدرَّبة بالـ self-play على البشر عبر التنظيم</title><link href="https://thakicloud.github.io/ar/research/spiced-self-play-human-driving/" rel="alternate" type="text/html" title="حفنة من بيانات البشر تكفي: تثبيت سياسات القيادة المُدرَّبة بالـ self-play على البشر عبر التنظيم" /><published>2026-06-23T00:00:00+09:00</published><updated>2026-06-23T00:00:00+09:00</updated><id>https://thakicloud.github.io/ar/research/spiced-self-play-human-driving</id><content type="html" xml:base="https://thakicloud.github.io/ar/research/spiced-self-play-human-driving/"><![CDATA[<h2 id="نظرة-عامة">نظرة عامة</h2>

<p>مع جعل المحاكاة توليد الخبرة شبه مجاني، يزداد سؤال واحد حدّة: كم من بيانات البشر، وبأي شكل، يستحق الاستخدام فعلًا؟ في تعلّم سياسات القيادة يرتبط هذا السؤال مباشرة بالتكلفة. فجمع عروض القيادة البشرية على نطاق واسع مكلف وبطيء، بينما الـ self-play داخل محاكٍ رخيص وغير محدود تقريبًا.</p>

<p>ورقة من جامعة نيويورك وبرينستون ومتعاونين بعنوان “Human-like autonomy emerges from self-play and a pinch of human data” (arXiv:2606.19370، يونيو 2026) تقدّم إجابة واضحة. كما يقول العنوان، حفنة تكفي. وعمليًا، فإن 30 دقيقة فقط من بيانات القيادة البشرية، أي أقل بـ 2500 مرة من التعلّم بالتقليد، تُنتج سياسة أكثر توافقًا مع البشر. ويكتمل التدريب بأكمله في 15 ساعة على GPU استهلاكي واحد.</p>

<p>لا يكتفي هذا المقال بعرض نتيجة في مجال القيادة. فمن منظور منصّة مثل ThakiCloud، التي يجب أن تدرّب وتُحاذي وكلاء كثيرين في بيئة متعددة المستأجرين، نتفحّص لماذا يتوافق هذا التصميم، أي “إبقاء الخبرة التركيبية الرخيصة محرّكًا رئيسيًا وتطبيق الإشارة البشرية المكلفة فقط كمرساة تنظيم صغيرة”، توافقًا جيدًا مع نموذج التكلفة لدينا.</p>

<blockquote>
  <p>📄 <strong>المراجعة المتعمقة الكاملة (DOCX)</strong>: <a href="https://drive.google.com/file/d/1S-KQPZXuUHgNtQAoLpN7-C6HtSclrnY4/view">نزّل المراجعة التفصيلية من Google Drive</a>.</p>
</blockquote>

<h2 id="ما-هذا-البحث">ما هذا البحث</h2>

<p>يستطيع التعلّم المعزّز بالـ self-play النقي تدريب سياسات قيادة دون أي بيانات بشرية. وتظهر المشكلة حين تكون المكافأة فقط “صِل إلى الوجهة بأمان”. فتحت مكافأة متفرّقة كهذه، تتقارب السياسة نحو أعراف فعّالة لكنها غريبة عن البشر. فإن كان الوصول إلى الهدف بالرجوع للخلف أو جانبيًا أو حتى بعكس السير لا يخالف المكافأة، فسيفعل النموذج ذلك بسرور، لأن ملء المكافأة هو كل ما يهم.</p>

<p>كانت المعالجات السابقة تعني هندسة المكافآت بعناية أو نشر التعشية النطاقية. وكلاهما كثيف العمل وهشّ. تقلب هذه الورقة الفكرة. فبدل استخدام بيانات البشر كإشارة تعلّم رئيسية، تحوّل سياسة مرساة بالاستنساخ السلوكي (BC) إلى حدّ تنظيم. تبقى المكافأة بسيطة ومتفرّقة (+1 لبلوغ الهدف، -1 للاصطدام أو الخروج عن الطريق، و0 فيما عدا ذلك)، ويُضاف حدّ KL نحو سياسة المرساة إلى خسارة PPO. وتتحكّم λ في القوة؛ وحين تكون λ صفرًا يُختزل الأمر إلى self-play صرف دون تنظيم.</p>

<p>البنية الكاملة موضّحة أدناه. محرّك self-play رخيص هو القوة الدافعة الرئيسية، ومرساة بشرية مدتها 30 دقيقة تسحب السياسة بلطف نحو البشر عبر خيط رفيع من تنظيم KL.</p>

<p><img src="/assets/images/spiced-self-play-human-driving-diagram.png" alt="معمارية spiced self-play: محرّك self-play ومرساة بشرية يندمجان عبر تنظيم KL على المسار لتعلّم سياسة متوافقة مع البشر، تُقيَّم في ثلاث بيئات" /></p>

<p>يستحق قرار تصميمي واحد التأكيد. فحدّ KL هذا يسحب السياسة نحو المرساة لا على توزيع البيانات المسجّلة دون اتصال (offline) بل على الحالات التي تزورها السياسة فعلًا، وهو تنظيم على المسار (on-policy). فإن نظّمت فقط على توزيع BC غير المتصل، لا تستطيع منع السياسة من الانحراف عن توزيع الحالة في الحلقة المغلقة الذي تراه عمليًا. أما KL على المسار فيستدعي المرساة عند نقطة انزياح التوزيع تلك بالضبط. يبدو الأمر طفيفًا لكنه يحكم استقرار الحلقة المغلقة.</p>

<p>تُدرَّب سياسة المرساة نفسها بالـ BC على مسارات سيارة القيادة الذاتية فقط. فمسارات المركبات المحيطة مُعاد بناؤها بواسطة طبقة إدراك، لذا فهي مشوّشة وجودة قيادتها غير مضمونة؛ ولذا تُستخدم أنظف إشارة فقط، أي مسار المركبة الذاتية. يُنتج كل سيناريو نحو 9 ثوانٍ من البيانات، فتبلغ 200 سيناريو نحو 30 دقيقة. ولادعاء “أقل بـ 2500 مرة” اشتقاق صريح: 200 سيناريو في 9 ثوانٍ تساوي 30 دقيقة، بينما مجموعة Waymo الكاملة بنحو 500,000 سيناريو في 9 ثوانٍ تساوي نحو 75,000 دقيقة، أي نسبة حوالي 0.0004.</p>

<h2 id="المنهجية-الأساسية-من-إشارة-رئيسية-إلى-مرساة">المنهجية الأساسية: من إشارة رئيسية إلى مرساة</h2>

<p>هيكل المنهجية نظيف. الخسارة هي حدّ تدرّج السياسة المقصوص (clipped surrogate) في PPO مضافًا إليه خسارة القيمة ومكافأة الإنتروبيا، مع حدّ تنظيم KL فوقها. وهو أقرب إلى تركيب دقيق لمكوّنات معروفة جيدًا منه إلى خوارزمية جديدة.</p>

<p>تكمن المساهمة الحقيقية لا في الجدّة الخوارزمية بل في نظافة القياس التي أتاحتها البنية التحتية. وسّع الباحثون خبرة الـ self-play إلى 20 مليار انتقال على المحاكي عالي الإنتاجية GPUDrive، وهو ما يعادل نحو 63 عامًا من القيادة البشرية. كانت الأعمال السابقة مقيّدة بسرعة المحاكي (نحو 2000 خطوة في الثانية) عند 140 مليون انتقال ونحو 5 أيام تدريب، فلم يتبقَّ مجال لدراسة توسيع كمية بيانات البشر كمحور مستقل. وبإزالة عنق زجاجة الإنتاجية عبر GPUDrive، أصبحت تجربة التوسيع المنفصل لـ”كمية الـ self-play” و”كمية بيانات البشر” ممكنة لأول مرة.</p>

<p>يكشف هذا الفصل عدم تماثل مثير للاهتمام. فانتقالات الـ self-play تُوسَّع حتى 20 مليارًا، بينما بيانات البشر قريبة من التشبّع عند 30 دقيقة. واستخدام مرساة مدتها 30 ساعة لا يغيّر إلا قليلًا. تتسطّح المنفعة الحدّية للبيانات البشرية الإضافية بسرعة، وهذا هو الأساس التجريبي لرسالة أن حفنة تكفي.</p>

<h2 id="النتائج-التجريبية-الفعلية">النتائج التجريبية الفعلية</h2>

<p>مجموعة البيانات هي Waymo Open Motion Dataset (WOMD). ولأجل تقييم human-replay الذي يقيس التوافق البشري، تُرشَّح السيناريوهات لرفع إشارة التفاعل. فمن بين 10,000 سيناريو تحقّق محجوزة، يُسجَّل مسار المركبة الذاتية بحسب مقدار تقاطعه مع مسارات الوكلاء الآخرين، مع الإبقاء على أعلى 200 مشهد تفاعلي فقط مثل الاندماج والإفساح والتقاطعات المزدحمة التي تتطلب تنسيقًا حقيقيًا.</p>

<p>تُلخَّص النتائج الأساسية في المخطط أدناه. كل رقم مُبلَّغ عنه في الورقة؛ ولا شيء مُختلَق.</p>

<p><img src="/assets/images/spiced-self-play-human-driving-results.png" alt="مقارنة معدل الاصطدام بخطأ ذاتي: spiced self-play (30 دقيقة بيانات بشرية) 0.65%، وSMART-tiny-CLSFT (Waymo الكامل، 52 يومًا) 1.6%، وself-play النقي 2.1%" /></p>

<p>النقاط الأساسية كما يلي.</p>

<ul>
  <li>يحقّق spiced self-play معدل اصطدام بخطأ ذاتي بين 0.6% و0.7% ببيانات بين 30 دقيقة و3 ساعات. ومقارنة بخط الأساس للتعلّم بالتقليد SMART-tiny-CLSFT (1.6%، مُدرَّب على مجموعة Waymo الكاملة، نحو 52 يومًا من البيانات)، يمثّل ذلك تحسّنًا بنحو 2.5 مرة.</li>
  <li>بلغ معدل الاصطدام بخطأ ذاتي لـ self-play النقي دون تنظيم 2.1%. وإضافة حفنة من المرساة فقط جعلته أكثر أمانًا بنحو 3.5 مرة.</li>
  <li>يتجنّب التقييم التباهي بمقياس واحد. فهو ينظر إلى النتيجة ومعدل الإكمال ومعدل الاصطدام ومعدل الاصطدام بخطأ ذاتي وشدّة الاصطدام Δv عبر ثلاث بيئات: self-play (يتشارك جميع الوكلاء السياسة)، وhuman-replay (المركبة الذاتية فقط هي السياسة، والبقية تعيد تشغيل السجلات)، وIDM (الآخرون قائمون على قواعد وتفاعليون).</li>
</ul>

<p>يختلف الاتساق الداخلي أيضًا. فيُبقي spiced self-play معدل الاصطدام دون 1.5% في بيئة الـ self-play وفي cross-play مع سجلات البشر، بينما يرتفع خط أساس التعلّم بالتقليد إلى نحو 6% في بيئة الـ self-play، مُظهرًا اتساقًا أضعف. ويوضّح الباحثون أن عدم استقرارية بيئة الـ self-play، أي توزيع شريك متغيّر يتحوّل فيه خصم شبه عشوائي ابتداءً إلى كفء تدريجيًا، تساعد فعلًا على التقارب نحو أعراف متبادلة متّسقة.</p>

<p>لكن ليست كل الصورة وردية. فمقياس Waymo Open Sim Agent Challenge (WOSAC) الميتا للواقعية التوزيعية يرتفع من 0.68 لـ self-play النقي إلى 0.725 للنسخة المُنظَّمة، لكن المكسب صغير نسبةً إلى التحسّن الدرامي في الأمان وغير حسّاس تقريبًا للبيانات المضافة. فقد تكون السياسة آمنة وأقل شبهًا بالبشر توزيعيًا في الوقت ذاته، وهي نقطة نعود إليها أدناه.</p>

<h2 id="التطبيق-على-منصّة-thakicloud-للـ-aiml-saas-على-k8s">التطبيق على منصّة ThakiCloud للـ AI/ML SaaS على K8s</h2>

<p>القيادة بحد ذاتها ليست مجال ThakiCloud المباشر. ومع ذلك تنتقل الدروس المنهجية لهذه الورقة بشكل شبه مباشر إلى بنيتنا متعددة الوكلاء والتعلّم المعزّز والمحاذاة.</p>

<p>أولًا، مبدأ “بيانات البشر كمرساة خفيفة لا كإشارة رئيسية” يتوافق مع نموذج تكلفة حلقات الـ self-harness وتطوّر الوكلاء لدينا. فـ ThakiCloud تُشغّل أصلًا نمط “ابدأ رخيصًا، وارتقِ إلى المكلف فقط عبر المراجعة والتحقّق”: تشغيل عمّال منخفضي التكلفة أولًا والترقية إلى نموذج أعلى طبقة فقط عند رصد فشل متكرر. وتدعم هذه الورقة كميًّا النسخة المعزّزة من ذلك النمط، حيث الخبرة التركيبية الرخيصة هي المحرّك الرئيسي والعروض البشرية المكلفة مجرّد مرساة تنظيم صغيرة. ويمكننا استعارتها كمعيار لـ”كم نستطيع تقليل وسم البشر مع الحفاظ على المحاذاة” في تدريب وضبط أسطول وكلائنا.</p>

<p>ثانيًا، فكرة تنظيم KL على المسار لها إمكان قوي للدمج مع بوّابة التحقّق fan-out لدينا. فيمكننا إطلاق عمّال كثيرين بحرية كالـ self-play، ثم تثبيتهم بمجموعة صغيرة من المسارات الذهبية المعتمدة بشريًا تحت تنظيم KL لكبح الانحراف نحو أعراف غريبة مثل الهلوسة أو انحراف التنسيق. والمفتاح هو تطبيق التنظيم لا على مجموعة ذهبية ثابتة غير متصلة بل على الحالات التي يزورها العمّال فعلًا، وهي بنية تستحق إثبات مفهوم على منصّتنا.</p>

<p>ثالثًا، عدم التماثل بين مقاييس الأمان والواقعية التوزيعية تحذير لتصميم تقييمنا. فالتباهي بالجودة بنتيجة إجمالية واحدة يُخفي الركود على محاور أخرى كالواقعية التوزيعية. ينبغي أن تملك الشيفرة البوّابات، لكن المعيار يجب أن يكون منظومة تقييم متعددة الطبقات تقيس الأمان والواقعية والاتساق على حدة بدل رقم واحد.</p>

<p>أخيرًا، ثمة نقطة فخر واضحة. فبنية تكلفة قوامها 15 ساعة على GPU استهلاكي واحد تشير إلى الاتجاه ذاته الذي أكّدته ThakiCloud: التشغيل في الموقع وكفاءة التكلفة والاستضافة الذاتية. وهذا يعني أن تجارب المحاذاة كهذه يمكن إعادة إنتاجها وتشغيلها بتكلفة معقولة على مكدّس K8s لدينا، بجدولة وحدات GPU عبر Kueue والخدمة عبر vLLM، دون خط أنابيب ضخم لبيانات البشر.</p>

<h2 id="الحدود-والاعتراضات">الحدود والاعتراضات</h2>

<p>إنه عمل علمي تجريبي رصين، لكن بقراءة نقدية تبقى ثلاثة توتّرات.</p>

<p>أكبر نقطة ضعف أن ادعاء التعميم يستند إلى مجال واحد، القيادة. فالخاتمة تلمّح مرارًا إلى أن “الدروس قد تتعمّم خارج القيادة”، لكن كل التجارب على بيانات قيادة Waymo. ولا يوجد تحقّق في مجالات أخرى يتحقّق فيها الافتراض “المحاكاة رخيصة ومقياس السلوك المرغوب واضح”، مثل التفاوض أو الألعاب التعاونية أو الروبوتات. وهو يقصر عن العمومية التي توحي بها كلمة “emerges” في العنوان.</p>

<p>ثانيًا، عدم التماثل بين مكاسب الواقعية التوزيعية ومكاسب الأمان غير مُفسَّر بالكامل. فانتقال مقياس WOSAC الميتا من 0.68 إلى 0.725 متواضع بجانب التحسّن الكبير في معدل الاصطدام، وهو غير حسّاس لمزيد من البيانات. فقد تكون السياسة آمنة وأقل شبهًا بالبشر توزيعيًا، وهو ما يتوتّر مع العنوان القوي “human-like autonomy emerges”. وعدم مواجهة المتن لهذه الفجوة مباشرة يترك مجالًا للمبالغة في الادعاء.</p>

<p>ثالثًا، الحدّ في أصعب سيناريوهات التنسيق محجوز في قسم الحدود. فيعترف الباحثون أنفسهم بانخفاض الأداء على أصعب 200 سيناريو تفاعلي. فإن كانت أعلى كثافة من الاندماجات والتقاطعات، حيث يكون الأمان أهم، هي الأضعف، فإن هذا الضعف يستحق أن يجلس بجانب النتيجة الرئيسية بدل تأجيله. وعلاوة على ذلك، فإن تحليل حساسية قوة التنظيم λ ضعيف، وثمة فحص غير كافٍ لما إذا كانت سياسة مرساة واحدة تلتقط تنوّع القيادة البشرية.</p>

<p>باختصار، الجوهر ليس خوارزمية جديدة بل توسيع فكرة قائمة بنظافة على محاكٍ عالي الإنتاجية لتثبيت “حفنة من بيانات البشر تكفي”. وقابلية إعادة الإنتاج والتقييم متعدد الطبقات والمقارنة الأمينة مع الأعمال السابقة نقاط قوة؛ وادعاء التعميم أحادي المجال وركود الواقعية التوزيعية نقاط ضعف. وبالنسبة لمنصّة مثل منصّتنا، يُقرأ كحجة مقنعة لنموذج تكلفة يحافظ على المحاذاة مع تقليل الإشارة البشرية المكلفة.</p>

<h2 id="المصادر">المصادر</h2>

<ul>
  <li>الورقة: Human-like autonomy emerges from self-play and a pinch of human data (arXiv:2606.19370)، <a href="https://arxiv.org/abs/2606.19370">https://arxiv.org/abs/2606.19370</a></li>
  <li>Hugging Face Papers: <a href="https://hf.co/papers/2606.19370">https://hf.co/papers/2606.19370</a></li>
  <li>صفحة المشروع (مقاطع فيديو والمصدر الكامل): <a href="https://spiced-self-play.com/">https://spiced-self-play.com/</a></li>
</ul>

<blockquote>
  <p>📄 <strong>المراجعة المتعمقة الكاملة (DOCX)</strong>: <a href="https://drive.google.com/file/d/1S-KQPZXuUHgNtQAoLpN7-C6HtSclrnY4/view">نزّل المراجعة التفصيلية من Google Drive</a>.</p>
</blockquote>]]></content><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;&quot;Seoul, Korea&quot;, &quot;email&quot;=&gt;&quot;info@thakicloud.co.kr&quot;, &quot;uri&quot;=&gt;nil, &quot;home&quot;=&gt;nil, &quot;links&quot;=&gt;[{&quot;label&quot;=&gt;&quot;Website&quot;, &quot;icon&quot;=&gt;&quot;fas fa-fw fa-link&quot;, &quot;url&quot;=&gt;&quot;https://thakicloud.co.kr&quot;}, {&quot;label&quot;=&gt;&quot;GitHub&quot;, &quot;icon&quot;=&gt;&quot;fab fa-fw fa-github&quot;, &quot;url&quot;=&gt;&quot;https://github.com/thakicloud&quot;}]}</name><email>info@thakicloud.co.kr</email></author><category term="research" /><category term="self-play" /><category term="reinforcement-learning" /><category term="human-AI-coordination" /><category term="behavioral-cloning" /><category term="KL-regularization" /><category term="autonomous-driving" /><category term="GPUDrive" /><category term="arxiv-2606.19370" /><category term="data-efficiency" /><category term="alignment" /><summary type="html"><![CDATA[الـ self-play النقي سريع لكنه يتقارب نحو أعراف قيادة غير متوافقة مع البشر. الورقة arXiv:2606.19370 تُضيف بيانات البشر لا كإشارة رئيسية بل كمرساة تنظيم خفيفة مدتها 30 دقيقة، فتحقق سياسة أكثر أمانًا ببيانات أقل 2500 مرة من التعلّم بالتقليد.]]></summary></entry></feed>