عن المشروع
# Weave Router
**نقطة نهاية واحدة. كل نموذج. دائمًا النموذج الصحيح.**
Weave Router هو وكيل جاهز للإدراج لـ Anthropic و OpenAI و Gemini يختار تلقائيًا أفضل نموذج لكل طلب. بدلاً من استخدام مطالبة قائمة على الحدس، يستخدم مُضمّن صغير على الجهاز مع مُقيّم عنقودي مستمد من ورقة بحث [Avengers-Pro](https://arxiv.org/abs/2508.12631) لتوجيه كل طلب إلى النموذج المناسب من مزودي الخدمة المُفعّلين لديك.
## الميزات الرئيسية
- **التوجيه لكل إجراء** — مُقيّم عنقودي يختار النموذج المناسب لكل طلب API صاعد، مع التوجيه لكل إجراء بدلاً من لكل دور.
- **يتحدث واجهة برمجة تطبيقات الجميع** — يدعم Anthropic Messages و OpenAI Chat Completions و Gemini native APIs، بما في ذلك البث والأدوات والرؤية.
- **يعرف النماذج مفتوحة المصدر أيضًا** — DeepSeek و Kimi و GLM و Qwen و Llama و Mistral عبر OpenRouter أو أي نقطة نهاية متوافقة مع OpenAI.
- **BYOK افتراضيًا** — مفاتيح المزودين تبقى على جهازك، مشفّرة عند التخزين.
- **قابل للملاحظة** — تتبع OTLP جاهز، قابل للعرض في لوحة تحكم Weave أو أي مجمّع متوافق مع OTLP مثل Honeycomb و Datadog و Grafana.
## البدء السريع
أسرع طريقة للبدء هي مع Weave Router المستضاف:
```bash
npx @weave-os/router
```
يطلب المُثبّت تحديد الأداة (Claude Code أو Codex أو opencode أو pi)، ثم يرشدك عبر النطاق (مستخدم مقابل مشروع)، ويحصل على مفتاح الموجّه، ويوصّل ملف الإعداد الصحيح. تشمل الخيارات الأخرى:
```bash
npx @weave-os/router --claude # تخطّي المنتقي، Claude Code
npx @weave-os/router --codex # تخطّي المنتقي، OpenAI Codex CLI
npx @weave-os/router --opencode # تخطّي المنتقي، opencode
npx @weave-os/router --pi # تخطّي المنتقي، pi + Loom UI
npx @weave-os/router --scope project # لكل مستودع، يلتزم settings.json
npx @weave-os/router --local # مستضافة ذاتيًا localhost:8080
npx @weave-os/router --base-url https://router.acme.internal
npx @weave-os/router@0.1.0 # تثبيت إصدار محدد
```
يتطلب Node ≥ 18. المرجع الكامل للأعلام في [install/npm/README.md](install/npm/README.md).
## الاستضافة الذاتية
لتشغيل الموجّه ولوحة التحكم على جهازك الخاص:
```bash
# 1. ضع مفتاح مزوّد. OpenRouter هو الأساس الموصى به.
echo "OPENROUTER_API_KEY=sk-or-v1-..." >> .env.local
# 2. عيّن كلمة مرور للوحة التحكم.
echo "ROUTER_ADMIN_PASSWORD=replace-with-a-strong-password" >> .env.local
# 3. شغّل Postgres + الموجّه على :8080 وزرع مفتاح rk_.
make full-setup
```
الموجّه يعمل على http://localhost:8080، ولوحة التحكم على http://localhost:8080/ui/، ومفتاح `rk_...` يُطبع في السجلات.
### أمثلة استدعاء API
```bash
# استدعِه مثل Anthropic
curl -sS http://localhost:8080/v1/messages \
-H "Authorization: Bearer rk_..." \
-d '{"model":"claude-sonnet-4-5","max_tokens":256,
"messages":[{"role":"user","content":"hi"}]}'
# ...أو مثل OpenAI
curl -sS http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer rk_..." \
-d '{"model":"gpt-4o-mini",
"messages":[{"role":"user","content":"hi"}]}'
# اطّلع على قرار التوجيه دون المرور عبر الوكيل
curl -sS http://localhost:8080/v1/route -H "Authorization: Bearer rk_..." -d '...'
```
## البنية المعمارية
الصناديق الرمادية فقط هي خارج جهازك. الموجّه والمُقيّم و Postgres ومفاتيح المزودين جميعها تبقى محلية؛ المطالبات تذهب من الموجّه مباشرة إلى المزوّد الذي قمت بإعداده، ولا تذهب أبدًا إلى Weave.
```mermaid
flowchart LR
client["Claude Code, Codex, opencode,<br/>pi, Cursor, your own app"]
router["Router :8080<br/>/v1/messages · /v1/chat/completions<br/>/v1beta/models · /v1/route"]
scorer["Cluster scorer<br/>in-process ONNX embedder"]
hmm["HMM policy sidecar :8093<br/>optional, make up-hmm"]
pg[("Postgres<br/>installations, rk_ keys,<br/>encrypted BYOK keys, usage")]
ui["Dashboard /ui<br/>selfhosted mode only"]
providers["Anthropic · OpenAI · Gemini<br/>OpenRouter and any<br/>OpenAI-compatible endpoint"]
otel["Your OTLP collector<br/>Honeycomb, Datadog, Grafana"]
client -->|"rk_… bearer token,<br/>streamed response back"| router
router -->|"embed and score the action"| scorer
router -.->|"ROUTER_DEFAULT_STRATEGY=hmm"| hmm
router -->|"auth, config, usage"| pg
pg --> ui
router -->|"provider key from env or BYOK"| providers
router -.->|"spans and usage logs"| otel
```
عمليات النشر متعددة النسخ تحتاج أيضًا إلى Pub/Sub (`PUBSUB_*`) لإبطال ذاكرة التخزين المؤقت؛ `docker compose` يشغّل المحاكي نيابة عنك.
## اختياري: HMM Policy Sidecar
الحزمة الافتراضية تستخدم المُقيّم العنقودي داخل العملية. لتشغيل سياسة HMM المجمّدة كحاوية مرافقة، أضف مفتاح Google API واستخدم الهدف الاختياري:
```bash
echo 'GOOGLE_API_KEY=...' >> .env.local
make up-hmm
```
هذا لا يغيّر الاستراتيجية الافتراضية. راجع [sidecars/hmm/README.md](sidecars/hmm/README.md) للتحقق من القطع الأثرية وتوافق التضمين واختيار HMM الصريح.
## تكامل الأدوات
**Claude Code.** شغّل `make install-cc` لتوصيل Claude Code بالموجّه المحلي المستضاف ذاتيًا (يُستدعى أيضًا تلقائيًا في نهاية `make full-setup`). للموجّه المستضاف، استخدم `npx @weave-os/router` أعلاه.
**Codex** (OpenAI CLI). `npx @weave-os/router --codex` يُعدّل `~/.codex/config.toml` (أو `<repo>/.codex/config.toml` مع `--scope project`) بكتلة `[model_providers.weave]` مُدارة ويضبط `model_provider = "weave"`. يحافظ المزوّد على تسجيل دخول ChatGPT OAuth الحالي لـ Codex بينما ينتقل مفتاح الموجّه في ترويسة HTTP باسم `X-Weave-Router-Key`.
## الترخيص
مرخّص بموجب Elastic License v2 (ELv2).
---
*بُني بواسطة [Weave](https://www.workweave.ai): منصة هندسة الذكاء رقم 1، يحبها Robinhood و PostHog و Reducto ومئات الآخرين.*
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.