📻 AgentRadio
الوعي السلبي للتعاون متعدد الوكلاء في المهام طويلة الأمد — أربعة وكلاء برمجة يواصلون العمل بينما يستمعون
English |
简体中文 |
Español |
日本語 |
한국어 |
العربية
امنح أربعة وكلاء برمجة قناة راديو مشتركة. يقتسمون العمل، ويتفاوضون على الخطة، ويواصلون بثّ
اكتشافاتهم أثناء عملهم — لأن الاستماع يعمل كمهمة في الخلفية بدلاً من أن يسرق دورًا كاملاً.
يحتوي هذا المستودع على الشيفرة والبيانات اللازمة لإعادة إنتاج تجارب البحث
AgentRadio: Passive Awareness for Long-Horizon Multi-Agent Collaboration
(
arXiv:2607.28430).
☁️ تفضّل النسخة المنتَج؟ ← Coral Code
Coral Code هي النسخة المنتَج من AgentRadio.
يحصل المستخدمون الجدد على رصيد مجاني بقيمة 30 دولارًا.
### 🏆 بروتوكول واحد، أربعة وكلاء — بزيادة 29.8 نقطة على الوكيل المفرد
| التهيئة | ما الذي تضيفه | الدقة (Opus 4.6) | الدقة (DeepSeek V4 Pro) |
|---|---|:---:|:---:|
| **B0** وكيل مفرد | — | 32.3 % | 29.0 % |
| **B1** أفضل ستة تشغيلات مفردة | ميزانية 6× بلا تنسيق | 37.9 % | 31.4 % |
| **L1** أربعة وكلاء + تقسيم | تقسيم العمل | 39.5 % | 31.4 % |
| **L2** + تفاوض | تخطيط مشترك + مراجعة متبادلة (استقبال حاجب) | 51.6 % | 39.5 % |
| **L3** + وعي سلبي (**AgentRadio**) | `wait_for_mention` في الخلفية | **62.1 %** | **50.8 %** |
الانتقال من L2 إلى L3 يغيّر فقط نمط التواصل. فهو يربح 15 مهمة ويخسر 2 مع Opus 4.6
(اختبار مكنمار الدقيق، p = 0.0023)، ويربح 17 ويخسر 3 مع DeepSeek (p = 0.0026). أربعة وكلاء من
Opus 4.6 تحت AgentRadio (62.1 %) يتفوقون على أقوى نتيجة لوكيل مفرد في لوحة الصدارة، وهي
Claude Code مع الإصدار الأحدث Opus 4.8 (57.2 %).
← النتائج الكاملة · البحث · شغّلها بنفسك
## 📣 الأخبار
## 💡 لماذا AgentRadio
- التواصل لم يعد يكلّف خطوة عمل — تعمل
wait_for_mention كمهمة في خلفية الـ harness،
فتظهر رسالة الزميل عند حدّ الخطوة التالية بدلاً من استهلاك دور كامل. لم يعد على الوكيل أن يختار
بين العمل والاستماع.
- التصحيح في منتصف التنفيذ — في الأنظمة الحاجبة لا يصل الاكتشاف إلى الزميل قبل حدّ المرحلة
التالية. أما مع الوعي السلبي فيصل فورًا، فيدمجه الزميل في المهمة الجارية بالفعل.
- بلا تعديل على الـ harness — كل ما يلزم هو القدرة على تشغيل أمر صدفة في الخلفية، وهو ما
توفّره بالفعل بيئات البرمجة الشائعة. يأتي AgentRadio كخادم رسائل مستقل بالإضافة إلى ثلاثة
سكربتات صدفة خفيفة.
- بلا استدعاءات إضافية للنموذج — المراقِب عملية نظام تشغيل عادية وليس خطوة وكيل. الرموز
(tokens) الإضافية الوحيدة التي يدفعها الوكيل هي الرسائل التي تظهر فعليًا.
- مستقل عن النموذج — البروتوكول نفسه والموجّهات وسكربتات الإقلاع تعمل على Claude Opus 4.6
وعلى DeepSeek-V4-Pro عبر وسيط ترجمة LiteLLM.
- سُلّم استئصال نظيف — يعزل التسلسل B0 ← L1 ← L2 ← L3 أثر تقسيم العمل والتفاوض والوعي
السلبي طبقةً طبقة، بإعدادات harness متطابقة.
## 🧩 كيف يعمل
### العمليات الأولية الثلاث
يوفّر AgentRadio ثلاث عمليات لكل وكيل:
| العملية الأولية | السلوك |
|---|---|
| `create_thread(name, participants)` | يفتح محادثة مسمّاة على خادم الرسائل ويعيد معرّفها. |
| `send_message(thread, content, mentions)` | يضيف رسالة إلى خيط ويعود فورًا، سواء أكان أحد يستمع أم لا. ويمكنه الإشارة إلى وكلاء بعينهم بعلامة @. |
| `wait_for_mention(timeout)` | يحجب التنفيذ حتى تصل رسالة تُشير إلى المُستدعي، ثم يعيدها مع لقطة كاملة لكل الخيوط، فلا يحتاج المُستدعي إلى قراءة ثانية لإعادة بناء السياق. |
لا تتخذ هذه الطبقة موقفًا بشأن
متى يستمع الوكيل. فموضع تشغيل
wait_for_mention هو درجة
الحرية الوحيدة التي تفصل بين نمطي التواصل:
- في المقدمة ← استقبال حاجب. يتوقف الوكيل عن العمل كي يستمع، فكل رسالة يسمعها تكلّفه
خطوة عمل. وهذا هو خط الأساس L2.
- مهمة في الخلفية ← وعي سلبي. يواصل الوكيل العمل، وتظهر أي إشارة عند حدّ الخطوة
التالية دون إنفاق أي خطوة على الاستماع. وهذا هو L3، أي AgentRadio الكامل.
كل ما عدا ذلك — العمليات الأولية والخيوط والبروتوكول — يبقى ثابتًا. وهذا الفارق بمقدار «بِت واحد»
هو تحديدًا ما تعزله التجارب.
### بروتوكول المراحل الخمس
ينفّذ أربعة وكلاء بروتوكولًا ثابتًا لتقسيم العمل والتفاوض. ويؤدي agent-1 دورًا إضافيًا بوصفه
المُجمِّع: فهو يفتح خيوط التخطيط وسجل العمل والإجابة النهائية، ويتحكم بكل انتقال — إذ لا
تنتهي أي مرحلة إلا بعد أن يجمع موافقة صريحة من كل وكيل.
- P1 · الاستكشاف — يبدأ كل وكيل مراقِبه في الخلفية، ويستكشف المستودع باستقلالية، ويصوغ
الأسئلة الفرعية التي يراها. ولا يُرسَل شيء في هذه المرحلة.
- P2 · التقسيم — يفتح المُجمِّع خيط تخطيط. يجمع الوكلاء اكتشافاتهم، ويتفاوضون على تقسيم
الأسئلة الفرعية، ويراجعونه حتى يوافق الجميع.
- P3 · التنفيذ — يعمل كل وكيل على أسئلته الفرعية. ويؤدي أي اكتشاف إلى نشر فوري في سجل
العمل: اكتشاف يمسّ زميلًا، أو تناقض مع الخطة المتفق عليها، أو عقبة، أو طريق مسدود تم التخلي عنه.
- P4 · المراجعة — يبثّ كل وكيل اكتشافاته مع الأدلة في خيط نتائجه الخاص. وينشر المراجعون
التعارضات الواقعية والأدلة الضعيفة والملاحظات غير المذكورة، ويمكنهم إعادة سؤال فرعي إلى P3.
- P5 · التسليم — يؤلّف المُجمِّع الإجابة النهائية من النتائج المعتمدة، ويبثّ المسودة لجولة
موافقات أخيرة، ثم يسلّمها.
في الاستقبال الحاجب تُنفَّذ المراحل الخمس نفسها دون تغيير، لكن التشارك الحي في P3 يختفي: فسماع
رسالة يكلّف انتظارًا في المقدمة، فيصمت الوكلاء أثناء العمل، ولا يمكن لاكتشاف أن يصل إلى زميل قبل P4.
## 🗂️ بنية المستودع
```
data/qa/ 124 SWE-Atlas QnA tasks (harbor dataset scale-ai/swe-atlas-qna)
multi_agent/
coral_multi_agent.py L2 adapter: division + negotiation (blocking receive)
coral_multi_agent_ablation.py L1 adapter: division only
coral_multi_agent_passive.py L3 adapter: full AgentRadio (passive awareness)
startup.sh / startup_ablation.sh / startup_passive.sh
per-agent bootstrap + protocol prompts (CLAUDE.md)
coral-agent*.toml message-server agent definitions
passive_scripts/ MCP-over-HTTP shell primitives (create_thread /
send_message / wait_for_mention / read_resource)
coral-server.jar message server (download from Releases, see below)
monitor_coral_log.sh live thread/message monitor for running containers
run_config/qa/
claude-token OAuth token helper
full_run.sh B0 baseline batch runner (all 124 tasks)
run_passive_multi_agent.sh L3 batch runner
verify_local.py rubric verifier (LLM judge), run locally on a trial dir
```
يحتوي كل مجلد مهمة تحت data/qa/ على التعليمات، وبيئة التنفيذ المثبّتة، ومجموعة معايير
التقييم التي يستخدمها المدقّق.
---
## 📦 الإعداد
تُنفَّذ التشغيلات داخل حاويات Docker على
Modal، بتنسيق من
Harbor. مهمة واحدة = حاوية واحدة تُشغّل خادم
الرسائل بالإضافة إلى أربعة وكلاء Claude Code.
### 1. Docker Desktop
ثبّته من https://www.docker.com/products/docker-desktop/ وتحقّق منه بالأمر docker run hello-world.
### 2. uv
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
### 3. Harbor (مثبّت على 0.6.4)
إصدارات Harbor الأحدث (0.7 فما فوق) تتضمّن تغييرات كاسرة في الواجهة البرمجية تجعل هذه المحوِّلات
تفشل. ثبّت الإصدارات:
| المكوّن | الإصدار الصالح |
|-----------|-----------------|
| harbor | **0.6.4** |
| modal | **1.4.2** |
```bash
uv tool uninstall harbor 2>/dev/null || true
uv tool install 'harbor[modal]==0.6.4'
harbor --version # must show 0.6.4
```
### 4. Modal
```bash
pip install 'modal==1.4.2'
modal --version # must show 1.4.2
modal setup # opens browser to log in
```
### 5. Claude Code
```bash
curl -fsSL https://claude.ai/install.sh | sh
claude --version
```
تحتاج إلى اشتراك Claude Max للوكلاء. ويحتاج المدقّق إضافةً إلى مفتاح واجهة برمجة من Anthropic.
### 6. ملف JAR الخاص بخادم الرسائل
يُستضاف ملف JAR بحجم 106 ميغابايت بوصفه أثرًا مجهول المصدر (فهو أكبر من أن يوضع في مستودع git).
المعامل confirm=t يتخطى صفحة فحص الملفات الكبيرة كي يحصل curl على الملف الثنائي مباشرة:
```bash
curl -L -o multi_agent/coral-server.jar \
"https://drive.usercontent.google.com/download?id=17b40_1kXFrAC0pnN8w_7PPY13O7pYVke&export=download&confirm=t"
```
ترفع المحوِّلات هذا الملف إلى كل حاوية مهمة. ولا يلزم تشغيل أي شيء محليًا، ومن ثمّ لا حاجة إلى JDK محلي.
### 7. مساعد الرمز المميّز وملف .env
```bash
cp run_config/qa/claude-token ~/.local/bin/claude-token
chmod +x ~/.local/bin/claude-token
cp .env.example .env # then fill in your Anthropic API key
```
### قبل كل تشغيل: جدّد رمز OAuth
يتناوب رمز OAuth الخاص بـ Claude Code. وتحصل كل حاوية على لقطة ثابتة عند الإقلاع، والرمز المنتهي
يُنهي الوكلاء الأربعة جميعًا بخطأ 401 في منتصف التشغيل. جدّده قبل كل جلسة:
```bash
claude /login # opens browser
security find-generic-password -s "Claude Code-credentials" -w | python3 -c "
import json, sys, os
data = json.loads(sys.stdin.read())
oauth = data.get('claudeAiOauth', {})
with open(os.path.expanduser('~/.claude/.credentials.json'), 'w') as f:
json.dump({'claudeAiOauth': oauth}, f, indent=2)
print(f'Token refreshed. Expires at: {oauth.get(\"expiresAt\")}')
"
~/.local/bin/claude-token --check
source .env
```
---
## ⚡ تشغيل التهيئات الأربع
تُنفَّذ كل الأوامر من جذر المستودع بعد source .env. ومعرّفات المهام هي أسماء المجلدات تحت
data/qa/ (كرّر -i للتجميع، أو احذفه كليًا لتشغيل المهام الـ 124 جميعها).
والمعامل -n هو عدد المهام المتزامنة (مهمة واحدة = أربعة وكلاء في L1–L3).
### B0 — وكيل مفرد (خط الأساس)
```bash
source .env
harbor run \
-p ./data/qa \
-a claude-code \
-m "anthropic/claude-opus-4-6" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "baseline-ba998" \
-y
```
### L1 — أربعة وكلاء + تقسيم العمل
يستكشف agent-1 لفترة وجيزة، ثم يقسّم السؤال، ويحلّ كل وكيل نصيبه باستقلالية. وتُدمج الإجابات دون مراجعة.
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.coral_multi_agent_ablation:CoralMultiAgentAblation' \
-m "anthropic/claude-opus-4-6" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "division-ba998" \
-y
```
### L2 — + تفاوض (استقبال حاجب)
البروتوكول الكامل بمراحله الخمس — استكشاف مشترك، وتقسيم متفاوض عليه حتى الإجماع، وتنفيذ حيّ،
ومراجعة متبادلة، وتسليم مُجمَّع — لكن مع تشغيل wait_for_mention في المقدمة، فيتوقف
الوكلاء عن العمل كي يستمعوا.
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.coral_multi_agent:CoralMultiAgent' \
-m "anthropic/claude-opus-4-6" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "divneg-ba998" \
-y
```
### L3 — + وعي سلبي (AgentRadio الكامل)
البروتوكول نفسه، لكن wait_for_mention يعمل بوصفه مهمة في الخلفية: يواصل الوكلاء
العمل وتظهر الرسائل بين الخطوات. ولا يحصل Claude Code على أي إعداد MCP — إذ يمرّ كل التواصل عبر
أغلفة الصدفة الخفيفة في passive_scripts/.
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.coral_multi_agent_passive:CoralMultiAgentPassive' \
-m "anthropic/claude-opus-4-6" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "passive-ba998" \
-y
```
يغلّف run_config/qa/run_passive_multi_agent.sh الأمر نفسه بوصفه مشغّلًا دفعيًا، بوظيفة
harbor واحدة لكل معرّف مهمة.
---
## 🔀 التشغيل باستخدام DeepSeek-V4-Pro
يمكن تشغيل التهيئات متعددة الوكلاء (L1–L3) بوكلاء DeepSeek-V4-Pro بدلاً من Opus 4.6، بما
يعيد إنتاج عمود DeepSeek في جدول النتائج. البروتوكول والموجّهات وسكربتات الإقلاع وحارس الاستئناف
كلها متطابقة، ولا يتغيّر سوى الواجهة الخلفية للنموذج.
لا يتحدث Claude Code سوى واجهة Anthropic Messages، بينما يُقدَّم DeepSeek عبر OpenRouter (المتوافقة
مع OpenAI فقط). ونجسر بينهما بـوسيط ترجمة LiteLLM مُستضاف مرة واحدة على Modal. ولا تثبّت
حاويات المهام أي شيء — إذ توجّه ANTHROPIC_BASE_URL فقط إلى العنوان العام للوسيط.
أما مدقّق معايير التقييم فلم يتغيّر: فهو ما زال يستخدم حَكَم Anthropic لديك
(OPENAI_API_KEY / EVAL_MODEL). و DeepSeek هو الواجهة الخلفية للوكيل فقط.
### إعداد الوسيط لمرة واحدة
```bash
# 1. An OpenRouter API key with deepseek-v4-pro access (https://openrouter.ai/keys)
# is stored as a Modal secret — it never leaves your Modal account.
modal secret create openrouter-deepseek OPENROUTER_API_KEY=sk-or-...
# 2. Deploy the proxy. This prints your personal URL.
modal deploy multi_agent/deepseek_litellm_modal.py
# -> https://--deepseek-litellm-proxy-serve.modal.run
# 3. Put that URL in .env so the adapters can find it:
echo 'export AGENTRADIO_PROXY_URL=https://--deepseek-litellm-proxy-serve.modal.run' >> .env
source .env
```
يبقى الوسيط دافئًا (min_containers=1)؛ ولا تُعِد نشره إلا بعد تعديله. ولإيقاف الفوترة
عند الخمول: modal app stop deepseek-litellm-proxy (ويعيده أمر modal deploy لاحقًا).
### L1 / L2 / L3 مع DeepSeek
مطابقة لأوامر Opus أعلاه، لكن مسار الاستيراد يشير إلى محوِّل DeepSeek، ويوجّه
-m "deepseek-v4-pro" الطلبات عبر الوسيط. ويجب أن يكون source .env قد صدّر
AGENTRADIO_PROXY_URL. أما معرّفات المهام والتجميع بـ -i فيعملان تمامًا كما سبق.
#### DeepSeek B0 — وكيل مفرد (خط الأساس)
يستخدم خط أساس DeepSeek صنفًا فرعيًا خفيفًا من وكيل claude-code المدمج (يفرض نقطة نهاية
الوسيط ويتخلّص من رمز OAuth الذي كان الوكيل المدمج سيعيد إصداره)، ولذلك يأخذ
--agent-import-path بدلاً من -a claude-code.
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.claude_code_deepseek:ClaudeCodeDeepseek' \
-m "deepseek-v4-pro" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "deepseek-baseline-ba998" \
-y
```
#### DeepSeek L1 — تقسيم فقط
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.coral_multi_agent_ablation_deepseek:CoralMultiAgentAblationDeepseek' \
-m "deepseek-v4-pro" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "deepseek-division-ba998" \
-y
```
#### DeepSeek L2 — + تفاوض
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.coral_multi_agent_deepseek:CoralMultiAgentDeepseek' \
-m "deepseek-v4-pro" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "deepseek-divneg-ba998" \
-y
```
#### DeepSeek L3 — + وعي سلبي
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor run \
-p ./data/qa \
--agent-import-path='multi_agent.coral_multi_agent_passive_deepseek:CoralMultiAgentPassiveDeepseek' \
-m "deepseek-v4-pro" \
-e modal -k 1 -n 1 \
-i "task-6905333b74f22949d97ba998" \
--ak reasoning_effort=high \
-o results/qa/ \
--job-name "deepseek-passive-ba998" \
-y
```
يوجد حَقن الوسيط المشترك (الذي يبدّل الواجهة الخلفية للنموذج مع وراثة كل منطق تعدّد الوكلاء
وسكربتات الإقلاع وحارس الاستئناف) في multi_agent/deepseek_proxy.py؛ أما الصنف الفرعي
لخط الأساس B0 فهو multi_agent/claude_code_deepseek.py.
### استئناف وظيفة أُلغيت أو أخفقت
```bash
source .env
export PYTHONPATH="$(pwd):${PYTHONPATH:-}"
harbor job resume -p results/qa/ -f CancelledError -f RuntimeError
```
### المراقبة الحيّة (اختياري، في طرفية منفصلة)
```bash
bash multi_agent/monitor_coral_log.sh # renders coral://state from the running container
```
---
## 🧪 التقييم
تكتب كل تجربة إجابة الفريق في <trial>/agent/answer.txt. قيّمها بحَكَم النموذج اللغوي
الخاص بالمعيار:
```bash
source .env
python3 verify_local.py
# e.g.
python3 verify_local.py task-6905333b74f22949d97ba998 \
results/qa/divneg-ba998/task-6905333b74f22949d97ba998__XXXXX
```
يكتب هذا الأمر <trial>/verifier/reward.txt (ويكون 1 فقط عندما تجتاز كل المعايير)
وevaluation_results.json (الدرجات لكل معيار). ونفّذ pip install openai إن لم تكن مثبتة.
### بنية مخرجات التجربة
```
task-xxx__randomId/
├── config.json / result.json / trial.log
├── agent/
│ ├── answer.txt # final answer (written by agent-1)
│ ├── coral-server.log # threads and messages
│ └── agent-{1..4}-claude-code.txt
└── verifier/
├── reward.txt
└── evaluation_results.json
```
---
## 📊 النتائج
النتائج الكاملة على SWE-Atlas QnA (124 مهمة، 1,306 معايير تقييم). تعطي صفوف الفئات عدد المهام
المحلولة، مع حجم الفئة بين قوسين. وداخل كل عمود نموذج، تستخدم جميع التهيئات الـ harness والإعدادات
نفسها.
B0 = وكيل Claude Code مفرد · L1 = 4× Claude Code + تقسيم العمل ·
L2 = L1 + تفاوض · L3 = L2 + وعي سلبي (AgentRadio).
**Opus 4.6**
| | B0 | L1 | L2 | L3 |
|---|:---:|:---:|:---:|:---:|
| البنية وتصميم الأنظمة (44) | 15 | 13 | 24 | **30** |
| تحليل السبب الجذري (37) | 9 | 16 | 18 | **20** |
| التعرّف على قاعدة الشيفرة (28) | 11 | 12 | 14 | **18** |
| الأمن (11) | 4 | **7** | **7** | **7** |
| تكامل الواجهات والمكتبات (4) | 1 | 1 | 1 | **2** |
| **المهام المحلولة (124)** | 40 | 49 | 64 | **77** |
| **دقة المهام (%)** | 32.3 | 39.5 | 51.6 | **62.1** |
| **معدل اجتياز المعايير (%)** | 84.2 | 86.1 | 91.3 | **93.1** |
**DeepSeek V4 Pro**
| | B0 | L1 | L2 | L3 |
|---|:---:|:---:|:---:|:---:|
| البنية وتصميم الأنظمة (44) | 14 | 13 | 17 | **24** |
| تحليل السبب الجذري (37) | 11 | 13 | 15 | **18** |
| التعرّف على قاعدة الشيفرة (28) | 7 | 8 | 10 | **13** |
| الأمن (11) | 4 | 4 | 6 | **7** |
| تكامل الواجهات والمكتبات (4) | 0 | 0 | 1 | **1** |
| **المهام المحلولة (124)** | 36 | 39 | 49 | **63** |
| **دقة المهام (%)** | 29.0 | 31.4 | 39.5 | **50.8** |
| **معدل اجتياز المعايير (%)** | 81.2 | 83.7 | 85.9 | **90.2** |
L3 مقابل L2، اختبار مكنمار الدقيق على نتائج المهام المزدوجة — Opus 4.6: يربح 15 ويخسر 2،
p = 0.0023. و DeepSeek V4 Pro: يربح 17 ويخسر 3، p = 0.0026.
يُظهر التحليل على مستوى معايير التقييم أن مكسب الوعي السلبي يتزايد مع صعوبة المهمة، وهو ما يتسق
مع كون التصحيح في منتصف الطريق هو الآلية الكامنة وراءه.
---
## 🛠️ حلّ المشكلات
- أخطاء 401 في منتصف التشغيل — انتهت صلاحية لقطة رمز OAuth. جدّدها (انظر أعلاه) ثم نفّذ
harbor job resume -p results/qa/<job-name> -f NonZeroAgentExitCodeError.
-
claude: not found في coral-server.log — تصدّر سكربتات الإقلاع
PATH="$HOME/.local/bin:$PATH"؛ تحقّق من أن Claude Code قد ثُبّت داخل الحاوية.
- المهام المبنية على Alpine — تستخدم بعض المهام صور Alpine؛ وتكتشف المحوِّلات ذلك تلقائيًا
وتثبّت JDK متوافقًا مع Alpine.
- فحص التواصل —
grep "sent message\|created thread" <trial>/agent/coral-server.log | sed 's/\x1b\[[0-9;]*m//g'
---
## 🙏 شكر وتقدير
بيانات المهام مأخوذة من معيار
SWE-Atlas QnA
(مجموعة بيانات harbor باسم
scale-ai/swe-atlas-qna) من Scale AI. وتُنسَّق التشغيلات
بواسطة
Harbor على
Modal.
---
## 📚 الاستشهاد
```bibtex
@misc{ren2026agentradio,
title = {AgentRadio: Passive Awareness for Long-Horizon Multi-Agent Collaboration},
author = {Xinxing Ren and Qianbo Zang and Ziyan Wang and Caelum Forder and
Suman Deb and Peter Carroll and Zekun Guo},
year = {2026},
eprint = {2607.28430},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2607.28430}
}
```
---
## 📄 الرخصة
---
طُوِّر في Coral AI Labs، و SnT — جامعة لوكسمبورغ، وكينغز كوليدج لندن، وجامعة هَل.