أدوات البرمجة بسطر الأوامر
جديداستخدم Shannon كنموذج يعمل خلف Claude Code وCodex CLI وأدوات سطر الأوامر الأخرى للوكلاء.
تحتاج أداة البرمجة إلى ثلاثة إعدادات لتعمل مع Shannon: عنوان base URL لـ API، ومفتاح API الخاص بك، ومعرّف نموذج Shannon. تعطي هذه الصفحة الإعدادات الدقيقة لـ Claude Code وCodex CLI، وتشرح كيف يُحتسب نموذج البرمجة shannon-coder-1، وتسرد الأخطاء التي تصادفها هذه الأدوات.
نقطة النهاية التي تستخدمها كل أداة
| الأداة | نقطة النهاية | عنوان base URL المطلوب ضبطه | ملاحظة |
|---|---|---|---|
| Claude Code | POST /v1/messagesPOST /v1/messages/count_tokens | https://api.shannon-ai.com | تضيف الأداة /v1/messages إلى base URL بنفسها. |
| Codex CLI | POST /v1/responses | https://api.shannon-ai.com/v1 | تضيف الأداة /responses إلى base URL. |
| أدوات وكلاء أخرى تتحدث بصيغة دردشة OpenAI | POST /v1/chat/completions | https://api.shannon-ai.com/v1 | اضبط عنوان base URL والمفتاح ومعرّف نموذج Shannon في إعدادات الأداة نفسها. |
تقبل نقاط النهاية الثلاث مفتاح API نفسه، بصيغة Authorization: Bearer أو x-api-key. وتُقبل الترويسات anthropic-version وanthropic-beta وopenai-beta التي ترسلها هذه الأدوات.
اختيار نموذج Shannon
يجب أن يسمّي كل طلب معرّف نموذج تنشره Shannon. ترسل أداة البرمجة اسم نموذجها الافتراضي الخاص ما لم تخبرها بغير ذلك، والاسم الذي لا تنشره Shannon يُجاب عنه بـ 400 والرسالة unknown model: <name>. لا يُربط أي اسم آخر بنموذج Shannon، لذا اضبط النموذج في الأداة قبل الطلب الأول.
يسرد GET /v1/models كل معرّف مع نافذة سياقه. ولا يحتاج مفتاحاً. النماذج والأسعار
| النموذج | يُحتسب على أنه | ما يقدمه |
|---|---|---|
shannon-coder-1 | استدعاء واحد لكل طلب على /v1/messages و/v1/chat/completions. وبالـ tokens على /v1/responses. | نموذج البرمجة. إدخال نص، واستدعاءات أدوات، ونافذة سياق من 131,072 token. |
shannon-1.6-liteshannon-1.6-pro | Tokens من رصيدك. | نماذج عامة مع استدعاءات الأدوات. يناسب shannon-1.6-lite طلبات الخلفية القصيرة التي ترسلها الأداة. |
| النماذج المفتوحة الأوزان المستضافة | Tokens من رصيدك، مع احتساب المدخلات المخبأة بنسبة 25% من سعر المدخلات. | استدعاءات الأدوات، والتخزين المؤقت للمطالبات للجلسات الطويلة، وأعداد دقيقة من /v1/messages/count_tokens. |
توجّه أدوات البرمجة النموذج بتوجيهات نظام طويلة. تطبّق توجيهات النظام النماذج shannon-coder-1 وshannon-1.6-lite وshannon-1.6-pro وshannon-2-lite وshannon-2-pro والنماذج المفتوحة الأوزان المستضافة، لذا اختر واحداً منها لأداة البرمجة.
Claude Code
يقرأ Claude Code اتصاله من متغيرات البيئة. اضبطها في الصدفة (shell) التي تشغّله، أو في الكتلة env من ~/.claude/settings.json لإبقائها في كل جلسة.
# Install Claude Code
npm install -g @anthropic-ai/claude-code
# Where to send requests, and your Shannon API key
export ANTHROPIC_BASE_URL=https://api.shannon-ai.com
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
# Shannon model ids: the session model, and the model behind each built-in name
export ANTHROPIC_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_OPUS_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_SONNET_MODEL=shannon-coder-1
export ANTHROPIC_DEFAULT_HAIKU_MODEL=shannon-1.6-lite
# The context window of the session model
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=131072
claude {
"env": {
"ANTHROPIC_BASE_URL": "https://api.shannon-ai.com",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "shannon-coder-1",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "shannon-1.6-lite",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "131072"
}
} | المتغير | الوصف |
|---|---|
ANTHROPIC_BASE_URL | العنوان الذي يرسل إليه Claude Code طلباته. استخدم العنوان من دون /v1. |
ANTHROPIC_AUTH_TOKEN | مفتاح Shannon API الخاص بك، يُرسل كـ Authorization: Bearer. ويعمل ANTHROPIC_API_KEY أيضاً: فهو يرسل المفتاح كـ x-api-key، ويطلب Claude Code الموافقة عليه مرة واحدة. |
ANTHROPIC_MODEL | نموذج الجلسة. يضبط claude --model <id> و/model <id> الشيء نفسه. |
ANTHROPIC_DEFAULT_HAIKU_MODEL | النموذج المخصص لطلبات الخلفية مثل عناوين الجلسات، ولأي شيء يطلب haiku. |
ANTHROPIC_DEFAULT_SONNET_MODEL | النموذج المستخدم عندما يطلب وكيل فرعي أو أمر sonnet. |
ANTHROPIC_DEFAULT_OPUS_MODEL | النموذج المستخدم عندما يطلب وكيل فرعي أو أمر opus. |
CLAUDE_CODE_MAX_CONTEXT_TOKENS | نافذة السياق التي يفترضها Claude Code للنموذج. استخدم قيمة context_window التي يعرضها GET /v1/models للمعرّف الذي اخترته. |
- اضبط المتغيرات الثلاثة
ANTHROPIC_DEFAULT_…_MODELكلها. تطلب الوكلاء الفرعيون وبعض الأوامر نموذجاً باسمه المضمّن، ويجب أن يُحل كل اسم إلى معرّف Shannon. - يوجّه المثال طلبات الخلفية إلى
shannon-1.6-lite، وهو يُحتسب بالـ tokens. فلا تستهلك عناوين الجلسات والطلبات المشابهة استدعاءات Coder. - يسأل Claude Code الخدمة
POST /v1/messages/count_tokensعن حجم السياق. تحسب نقطة النهاية للنماذج المفتوحة الأوزان المستضافة. ومع معرّف Shannon تجيب بـ400؛ ويعتبر Claude Code عدّ tokens اختيارياً ويقدّر الحجم بنفسه. عدّ الـ tokens
للتحقق من العنوان والمفتاح ومعرّف النموذج قبل تشغيل الأداة، أرسل طلباً واحداً يدوياً:
curl https://api.shannon-ai.com/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"max_tokens": 16,
"messages": [{"role": "user", "content": "Say OK."}]
}' Codex CLI
يتحدث Codex CLI إلى Responses API. صِف Shannon كمزوّد نماذج في ~/.codex/config.toml، واختر هناك معرّف نموذج Shannon، وضع مفتاح API في متغير البيئة الذي يسميه المزوّد.
model = "shannon-coder-1"
model_provider = "shannon"
model_context_window = 131072
[model_providers.shannon]
name = "Shannon"
base_url = "https://api.shannon-ai.com/v1"
env_key = "SHANNON_API_KEY"
wire_api = "responses" # Install Codex CLI
npm install -g @openai/codex
# Your Shannon API key, under the name given as env_key
export SHANNON_API_KEY=YOUR_API_KEY
# Start it; --model selects another Shannon id for one run
codex
codex --model shannon-1.6-pro | المفتاح | الوصف |
|---|---|
model | معرّف نموذج Shannon. يضبطه codex --model <id> لتشغيل واحد. |
model_provider | اسم كتلة المزوّد المراد استخدامها، وهنا shannon. |
base_url | عنوان API مع /v1. |
env_key | اسم متغير البيئة الذي يحمل مفتاح Shannon API الخاص بك. |
wire_api | responses: يتحدث Codex إلى POST /v1/responses. |
model_context_window | نافذة سياق النموذج، حتى يضغط Codex الجلسة الطويلة في الوقت المناسب. استخدم قيمة context_window التي يعرضها GET /v1/models. |
- لا يحتفظ
/v1/responsesبأي محادثة على الخادم: كل طلب يحمل المحادثة فيinput. ويُقبلprevious_response_idللتوافق. - تُعرض أدوات الدوال (
type: "function") على النموذج في/v1/responses. - على
/v1/responsesيُحتسبshannon-coder-1بالـ tokens من رصيدك، لا باستدعاءات Coder.
الفحص نفسه لنقطة نهاية Responses:
curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-1.6-lite",
"input": "Say OK."
}' نموذج البرمجة وطريقة احتسابه
shannon-coder-1 هو نموذج Shannon لوكلاء البرمجة. يعرضه GET /v1/models بنافذة سياق من 131,072 token ومع استدعاءات الأدوات والاستدلال وإدخال النص. ويُحتسب بإحدى طريقتين، بحسب نقطة النهاية التي تستخدمها الأداة.
| نقطة النهاية | تكلفة الطلب | يُؤخذ من |
|---|---|---|
/v1/messages | 1 استدعاء لكل طلب | حصة استدعاءات Coder في خطتك. لا تُخصم أي tokens من رصيدك. |
/v1/chat/completions | 1 استدعاء لكل طلب | حصة استدعاءات Coder في خطتك. لا تُخصم أي tokens من رصيدك. |
/v1/responses | Tokens، بسعر $8.00 لكل 1M | رصيدك، مثل أي نموذج آخر. ولا تُستخدم حصة الاستدعاءات. |
الاستدعاء هو طلب واحد، مهما كان حجمه. ويُحتسب عند قبول الطلب، قبل أن يجيب النموذج. ترسل جلسة الوكيل طلباً واحداً لكل خطوة تتخذها، لذا تستهلك المهمة الطويلة استدعاءات كثيرة. وتعتمد الحصة على خطتك وتبدأ من جديد كل 4 ساعات، عند 00:00 و04:00 و08:00 و12:00 و16:00 و20:00 UTC.
| الخطة | الاستدعاءات لكل نافذة من 4 ساعات |
|---|---|
| Free | 3 |
| Plus | 20 |
| Standard | 40 |
| Pro | 60 |
تعرض صفحة الخطط الأرقام الحالية. الخطط
عند استنفاد استدعاءات نافذة ما، يُجاب عن الطلب بـ 429. وعلى /v1/messages يأتي الخطأ نفسه بشكل Anthropic.
{
"error": {
"type": "rate_limit_error",
"message": "Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan"
}
} {
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan"
}
} تجاوز السياق
عندما تكون المحادثة أكبر من نافذة سياق النموذج، يجيب /v1/chat/completions و/v1/messages بـ 400 والنوع invalid_request_error والرمز context_length_exceeded ورسالة تبدأ بـ prompt is too long. تقرأ أدوات البرمجة هذا الخطأ لضغط الجلسة وإعادة إرسال الطلب. وتنتجه النماذج shannon-coder-1 وshannon-1.6-lite وshannon-1.6-pro.
{
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "prompt is too long: 140211 tokens > 131072 maximum",
"param": null
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"code": "context_length_exceeded",
"message": "prompt is too long: 140211 tokens > 131072 maximum",
"param": null
}
} الرسالة هي prompt is too long: <sent> tokens > <limit> maximum. وعندما لا يُعرف الرقمان تكون prompt is too long. Please compact the conversation and try again.
في البث تكون الحالة 200 بالفعل، لذا يصل الخطأ كحدث ثم يُغلق البث بالطريقة المعتادة:
data: {"error":{"message":"prompt is too long: 140211 tokens > 131072 maximum","type":"invalid_request_error","code":"context_length_exceeded","param":null}}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","created":…,"model":"shannon-coder-1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{…}}
data: [DONE] event: error
data: {"type":"error","error":{"type":"invalid_request_error","message":"prompt is too long: 140211 tokens > 131072 maximum"}}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{…}}
event: message_stop
data: {"type":"message_stop"} ما يمكن أن تعتمد عليه حلقة الوكيل
| الموضوع | السلوك |
|---|---|
| مخططات الأدوات | تعريفات الأدوات تُؤخذ كما ترسلها الأداة. في shannon-coder-1 وshannon-1.6-*، تُحذف من ما يقرؤه النموذج كلمات JSON Schema المفتاحية التي لا يستخدمها، مثل $schema و$ref وadditionalProperties وdefault وtitle، وتُقرأ oneOf على أنها anyOf. ولا يُرفض أي طلب بسببها. |
| وسائط استدعاء الأداة | في البث، تصل وسائط استدعاء الأداة كاملة في دلتا واحدة: tool_calls[].function.arguments أو input_json_delta.partial_json أو response.function_call_arguments.delta. |
| نهاية دور الأداة | عند انتهاء الدور تظهر القيمة finish_reason: "tool_calls" في واجهة Chat Completions، والقيمة stop_reason: "tool_use" في واجهة Messages. |
| إبقاء الاتصال حياً | أثناء عمل النموذج، يرسل /v1/messages الحدث event: ping ويرسل /v1/chat/completions سطر التعليق : ping كل 15 ثانية. |
| إيقاف طلب | إغلاق الاتصال يوقف البث. أما الدور نفسه فيستمر حتى نهايته ويُحتسب. |
استكشاف الأخطاء
| العَرَض | السبب | الحل |
|---|---|---|
400 مع unknown model: claude-… أو unknown model: gpt-… | أرسلت الأداة اسم نموذجها الافتراضي الخاص. لا تُخدَم إلا معرّفات Shannon المنشورة، ولا يُربط أي اسم آخر بأحدها. | اختر معرّف Shannon: ANTHROPIC_MODEL والمتغيرات الثلاثة ANTHROPIC_DEFAULT_…_MODEL في Claude Code، وmodel في إعداد Codex. |
400 مع unknown model: ودون اسم، من Codex CLI | لم يسمِّ الطلب أي نموذج. ويحتاج /v1/responses إلى واحد. | اضبط model في ~/.codex/config.toml أو مرّر --model. |
401 مع Missing authentication أو Invalid API key | لم يصل المفتاح إلى API، أو أنه ليس مفتاحاً حالياً. مفتاح Shannon يبدأ بـ sk-. | تحقق من أن المتغير مضبوط في الصدفة (shell) التي تشغّل الأداة. انسخ المفتاح مرة أخرى من المفاتيح والاستخدام. |
404 في كل طلب | في عنوان base URL شرطة /v1 زائدة أو ناقصة بالنسبة إلى الأداة. | Claude Code: العنوان من دون /v1. Codex CLI: العنوان مع /v1. |
429 مع Shannon Coder call quota reached | استُنفدت استدعاءات Coder في نافذة الـ 4 ساعات الحالية. | انتظر النافذة التالية، أو انتقل إلى خطة بعدد استدعاءات أكبر، أو اختر نموذجاً يُحتسب بالـ tokens. |
429 مع Quota exceeded | رصيدك لا يغطي الطلب. | أضف رصيداً، أو انتظر المخصصات اليومية لخطتك عند 00:00 UTC. |
400 مع prompt is too long | المحادثة أكبر من نافذة سياق النموذج. | اضغط الجلسة (/compact في الأداتين). وأخبر الأداة بنافذة سياق النموذج لتضغط في وقت أبكر. |
| يعرض Claude Code أرقام سياق تقريبية | يحسب /v1/messages/count_tokens للنماذج المفتوحة الأوزان المستضافة. ومع معرّف Shannon يجيب بـ 400، ويقدّر Claude Code الحجم بنفسه. | لا شيء يحتاج إصلاحاً. اختر نموذجاً مفتوح الأوزان مستضافاً إن أردت أعداداً دقيقة. |
| لقطة الشاشة الملصوقة لا تؤخذ في الحسبان | يقبل shannon-coder-1 إدخال نص. | اختر نموذجاً يقبل الصور لتلك الجلسة. |
مفتاحك ورصيدك في صفحة المفاتيح والاستخدام. المفاتيح والاستخدام