v0.2.0 - إصدار Alpha

الانتباه هو كل ما يتعلق بالنماذج الكبيرة.
التركيز هو كل ما يتعلق بـ NIUMA.

في عام 2017، حدّد Attention is All You Need حقبة كاملة — كل ذكاء النموذج مبني على "الانتباه". بعد ثماني سنوات اكتشفنا: النماذج لا تعاني من نقص في آلية الانتباه، بل من نقص في وضع الانتباه في المكان الصحيح. كلما طال السياق كثرت الضوضاء، والمعلومات الحقيقية الحاسمة تتبدد. niuma_code يفعل شيئاً واحداً: طرح من السياق، وجمع في الانتباه — لضمان أن كل رمز من رموز النموذج يسقط في نقطة التركيز.

🔒
تشغيل محلي
البيانات لا تمر بأطراف ثالثة، الخصوصية تحت سيطرتك
🛡️
الخصوصية أولاً
مفتاح API يُخزّن محلياً، بيانات المحادثة لا تُرفع
📦
الإصدار 0.2.0 ألفا
تطوير مستمر مدفوع بالمجتمع
💬
دعم المجتمع
GitHub Issues — تواصل مباشر مع المطورين

شاهد كيف يعمل

تسجيل حي لوضع تنسيق IDE، اختبر تجربة niuma_code المركّزة في دقيقة واحدة

لماذا تختار niuma_code

ليس بديلاً عن Claude Code، بل أداة تكميلية تعزز تركيزه

⚙️

محادثة مستقلة عبر harness

الوضع الافتراضي، لا حاجة لأي أمر. يستكشف النموذج LLM بشكل مستقل ضمن حلقة الأدوات، يفكر ويبني أثناء التنفيذ بخطوات غير محددة حتى إنهاء المهمة.

  • حلقة أداة tool_use: يقرر النموذج LLM بشكل مستقل قراءة الملفات / تعديل الكود / تشغيل الأوامر حتى الإنجاز
  • إعادة محاولة تلقائية لأخطاء API، عرض متدفق + إلغاء ESC + ضغط تلقائي عند الطول الزائد
  • مناسب للمهام ذات الحدود الغامضة التي يصعب تفكيكها مسبقاً، يقرر النموذج متى ينتهي
🔁

تنسيق هندسي عبر loop

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

  • تخطيط ← تنفيذ ← تحقق ← إعادة المحاولة عند الفشل (3-strike، مع تغذية سبب الفشل لمنع التكرار)
  • بوابتان متعامدتان: MAX_ROUNDS=20 حد صلب للمهمة + MAX_RETRIES=3 تصحيح ذاتي لكل مهمة
  • كل دورة تستدعي harness داخلياً لخطوة واحدة، مناسب للمهام الهندسية القابلة للتفكيك والتحقق
🖥️

وضع TUI ملء الشاشة

واجهة ملء الشاشة مبنية على prompt_toolkit، مع تثبيت حقل الإدخال في الأسفل، يمكن إضافة رسائل جديدة أثناء تدفق إخراج النموذج LLM دون فقدانها.

  • 5 طبقات مشروطة: إعدادات النموذج، طابور الرسائل، تبديل السياق، إدارة المحادثة، تأكيد الصلاحيات
  • تظليل التحديد بسحب الماوس، التمرير بالعجلة، النسخ التلقائي بالزر الأيسر، Ctrl+عجلة لتكبير الخط
  • شريط حالة فوري: معاينة التفكير، عدّ رموز الإدخال/الإخراج، تقدّم الضغط وإلغاء ESC
💻

وضع تنسيق IDE

محرر كود ملء الشاشة، يُكتب سكربت التنسيق بصياغة Python الأصلية، لدمج استدعاءات LLM في تدفق سكربتي قابل للتحكم.

  • حقن دوال llm_call / llm_confirm / llm_judge لتنسيق تدفق استدعاءات LLM قابل للتحكم
  • F5 للمعاينة (تحليل AST ثابت لفك الخطوات)، F6 للتنفيذ (بدون مراقبة، صلاحيات الأدوات تُمنح تلقائياً)
  • تنفيذ في رمل آمن + اعتراض قائمة سوداء للاستيرادات الخطرة (os/subprocess/socket إلخ)، القائمة السوداء هي الضمانة الوحيدة لوضع عدم المراقبة؛ F6 يعيد استخدام سلسلة المحادثة الرئيسية للتشغيل الحقيقي
🔌

توجيه متعدد المزودين

تُهيَّأ عدة نقاط نهاية API عبر settings.json، وتُوجَّه تلقائياً لكل نموذج إلى مزوِّده الصحيح، مع تبديل حر داخل نفس الجلسة.

  • يصرّح كل مزوِّد بـ base_url / api_key / قائمة الطرازات المدعومة
  • #tag أو /model لتبديل الطراز، والطلبات تصل تلقائياً لنقطة النهاية الصحيحة
  • ثلاث طبقات تكوينية متراكبة (مستوى المستخدم / مستوى المشروع / محلي بالمشروع)، الأخيرة تطغى على سابقتها
🗂️

سياقات متعددة متوازية

يُوسّع المحادثة الواحدة إلى N سياقات متوازية، يُدير كل منها تاريخاً وعداد رموز وحالة ضغط بشكل مستقل دون تداخل.

  • استبعاد LRU، الحد الافتراضي 5 (قابل للضبط بـ max_contexts)، الاستبعاد يعني أرشفة قابلة للاستعادة
  • تبديل مرئي عبر نافذة /context؛ عند المغادرة يُولَّد ملخص في الخلفية بشكل غير متزامن
  • /messages لاختيار وحدات المحادثة المتعددة: حذف / نقل / دمج ملخصات LLM
🕸️

خرائط معرفة الكود

يُحلّل بنية الكود عبر tree-sitter لبناء خرائط علاقات تعريفات الرموز والاستدعاءات والتبعيات، لتمكين النموذج LLM من التحديد الدقيق قبل قراءة الأسطر.

  • 4 أدوات بحث للقراءة فقط: تحديد الرمز، استعلام تبعيات الملف، الاستعلامات، الاستدعاءات
  • يُرجع مسار الملف:رقم السطر والتوقيع، ليحل محل البحث الكامل grep
  • إعادة بناء حسب الحاجة عبر عامل قرار ثلاثي، لتجنب التحليل الكامل عند كل تشغيل
🤖

بحث متوازٍ عبر وكلاء فرعيين

ينفّذ وكلاء فرعيون للقراءة فقط أدوات بحث متوازية في سياقات معزولة ثم يُعيد ملخصات، مع الحفاظ على نقاء السياق الرئيسي.

  • عدة وكلاء فرعيين ينفّذون أدوات قراءة فقط بشكل متوازٍ دون تداخل
  • بحث في سياقات معزولة، يُعيد ملخصات فقط دون تلوين المحادثة الرئيسية
  • ينتمي لنظام المحادثة المستقل الافتراضي، يُستدعى حسب الحاجة وليس كوضع مستقل
🧠

ذاكرة مدفوعة بالإدراك

ذاكرة دائمة مبنية على memory-palace، تُحوّل أحداث التشغيل إلى ذكريات في الوقت الحقيقي، وتُراكم التجارب عبر الجلسات.

  • 10 أنواع أحداث إدراكية: عين/جسد/لسان/أنف/نتيجة إلخ، تُكتب في الوقت الحقيقي وليس عند انتهاء المحادثة
  • ثلاثيات fact + ملخصات محادثة، بحث رباعي الطبقات + تراجع بايزي
  • استعلام تلقائي وحقن في system prompt في المحادثة التالية، مع موقع استدعاء مستقر
🎯

تتبع مكافآت الإدراك بالنتيجة

يتتبع دورة حياة أهداف المهمة بالكامل، ويحسب درجة المكافأة بناءً على جودة الإنجاز، وتُكتب كحدث إدراكي في الذاكرة بالوقت الحقيقي.

  • OutcomeTracker يحسب درجة مكافأة من 0.0 إلى 1.0 طوال دورة حياة المهمة
  • تترسّب درجة المكافأة كإشارة تقييم لإعادة استخدام الذاكرة
  • واحد من 10 أنواع أحداث إدراكية، مترابطة مع القراءة/الكتابة/استدعاء الأدوات

كيف تستخدم الوضعين بشكل جيد

لا تستطيع تحديد الخطوات وتريد التفكير أثناء التنفيذ؟ استخدم harness مباشرة. تستطيع سرد قائمة مهام قابلة للتحقق؟ استخدم /loop

🧭

مفتاح استخدام harness الجيد

لا يملك harness ركنة إعادة تخطيط، فكلما كانت البداية أوضح، كان الاستكشاف المستقل أدقّ.

متى تستخدمه: لديك فكرة عامة فقط ولا تستطيع تحديد خطوات، وتريد التنفيذ التدريجي. مثال: "ساعدني في التحقق من خطأ صفحة تسجيل الدخول وإصلاحه"
  • اذكر القيود دفعة واحدة: الهدف + الملفات/الدوال الممنوعة + معايير القبول، لا تغير المتطلبات في منتصف الطريق
  • الأنسب حين تكون الحدود غامضة لكن الهدف واضح؛ كلما كانت الخطوات أوضح، تقاربت أسرع
  • استخدم نقاط التحكم بحكمة: ESC للإيقاف الفوري، ضغط تلقائي للطول الزائد، إعادة محاولة تلقائية لأخطاء API
  • ادّعاؤه "الإنجاز" لا يعني الإنجاز الفعلي — بعد التعديلات الجوهرية شغّل اختبار/ترجمة للتأكيد بنفسك
🎯

مفتاح استخدام loop الجيد

نجاح التصحيح الذاتي في حلقة الرجوع يعتمد كلياً على "التحقق" — التصحيح 3-strike ذو معنى فقط حين يكون الهدف قابلاً للتحقق.

متى تستخدمه: المهمة قابلة للتفكيك إلى خطوات كل منها قابلة للتحقق من صحتها. مثال: "/loop أضف ترحيل الصفحات لواجهة user، شغّل py_compile بعد كل تعديل"
  • يجب أن يكون الهدف قابلاً للتفكيك إلى قائمة مهام بأوامر تحقق: "أكثر أناقة" غير قابل للتحقق، فحلقات الرجوع بلا جدوى
  • حدّد طريقة التحقق في الهدف مباشرة (مثل تشغيل py_compile / اختبار معين)، أعلى نسبة إصابة في التخطيط
  • عند فشل التصحيح 3 مرات غالباً ما تكون معلومات التحقق غير كافية: فكّك المهمة بتفصيل أدقّ، أكثر فعالية من إعادة المحاولة العنيدة
  • 3 إخفاقات لا توقّف التنفيذ بل تُسجَّل ثم يُتابَع، شاهد النتيجة الكاملة بانتظار علامة [!!] في الملخص

ابدأ في ثلاث خطوات

تنزيل وتهيئة وتشغيل، خلال ثوانٍ معدودة

01 تنزيل
⬇ تنزيل niuma.exe
Windows · بدون تثبيت · تشغيل مباشر
02 تهيئة
# ~/.niuma/settings.json
{
  "factories": [{
    "api_key": "your-key"
  }]
}
03 تشغيل
$ niuma.exe
🐂 niuma_code الإصدار 0.2.0 يعمل

المعاملات الكاملة في settings.json

مسار ملف التهيئة: ~/.niuma/settings.json

factoriesتهيئة API لعدة مزوّدين، يصرّح كل مزوّد بـ base_url / api_key / قائمة الطرازات المدعومة، مع توجيه تلقائي حسب اسم الطراز
💡 مثال كامل
{
  "factories": [
    {
      "base_url": "https://api.anthropic.com",  // نقطة نهاية Anthropic الرسمية
      "api_key": "sk-ant-xxx",                   // إلزامي، الحقول الثلاثة مطلوبة جميعها
      "options": ["claude-sonnet-4-6", "claude-opus-4-8"]  // الطرازات التي يدعمها هذا المزوّد
    },
    {
      "base_url": "https://your-proxy.example.com",  // نقطة نهاية وكيل متوافق مع Anthropic
      "api_key": "sk-proxy-xxx",
      "options": ["claude-sonnet-4-6"]  // الطرازات التي تدعمها هذه النقطة
    }
  ]
}
المعامل النوع القيمة الافتراضية الوصف
base_url string عنوان نقطة نهاية API (إلزامي)API endpoint URL (required)
api_key string مفتاح API (إلزامي)API key (required)
options string[] [] قائمة أسماء الطرازات التي يدعمها هذا المزوّد، مثل ["claude-sonnet-4-6", "claude-opus-4-8"]Supported model names for this provider
llmتهيئة الطراز ومستوى effort وميزانية التفكير وإدارة السياق
💡 مثال كامل
{
  "llm": {
    "default_model": "claude-sonnet-4-6",   // القيمة الافتراضية لتبديل /model
    "default_effort": "high",               // يحدد تفعيل thinking_budget_high
    "max_contexts": 5,                      // الحد الأعلى للسياقات المتوازية، استبعاد LRU عند التجاوز
    "resume_latest_context": true,          // استعادة آخر سياق نشط عند البدء
    "options": [                            // خريطة الطراز ← effort
      {"claude-sonnet-4-6": ["low", "medium", "high"]},
      {"claude-opus-4-8": ["low", "medium", "high", "max"]}
    ],
    "thinking_budget_low": "0",             // 0 = تعطيل التفكير الموسّع
    "thinking_budget_medium": "0",
    "thinking_budget_high": "10000",        // high effort تستخدم هذه الميزانية
    "thinking_budget_max": "20000"           // max effort تستخدم هذه الميزانية (أعمق استدلال)
  }
}
المعامل النوع القيمة الافتراضية الوصف
default_model string "claude-sonnet-4-6" الطراز الافتراضي (ثابت على مستوى الجلسة، قابل للتبديل عبر /model)Default model (fixed per session, switchable via /model)
default_effort string "high" مستوى effort الافتراضي (low/medium/high/max)، يتحكم في عمق ميزانية التفكيرDefault effort level — controls thinking budget depth
max_contexts integer 5 الحد الأعلى للسياقات النشطة، يُستبعد الأقدم عبر LRU عند التجاوز (مؤرشف وقابل للاستعادة عبر /context)Max active parallel contexts; LRU evicts the oldest when exceeded
resume_latest_context boolean true هل يستعيد آخر سياق نشط عند البدء؛ false = يبدأ بسياق فارغ في كل مرةResume last active context on startup; false = start fresh
options object[] [] تركيبات effort المدعومة لكل طراز، مثل [{"claude-sonnet-4-6": ["low","medium","high"]}]، تُستخدم للتحقق من تبديل /modelModel→effort mapping, used to validate /model switches
thinking_budget_low string/int "0" عدد رموز ميزانية التفكير لـ low effort (0 = تعطيل التفكير الموسّع)Thinking token budget for low effort (0 = disabled)
thinking_budget_medium string/int "0" عدد رموز ميزانية التفكير لـ medium effortThinking token budget for medium effort
thinking_budget_high string/int "10000" عدد رموز ميزانية التفكير لـ high effortThinking token budget for high effort
thinking_budget_max string/int "20000" عدد رموز ميزانية التفكير لـ max effort (أعمق استدلال)Thinking token budget for max effort (deepest reasoning)
envمتغيرات البيئة، تُكتب مباشرة في os.environ للتحكم في الشخصية والتصحيح والشبكة والصلاحيات
💡 مثال كامل
{
  "env": {
    "PERSONA_NAME": "niuma",              // اسم شخصية AI، يُحقن في system prompt
    "MODEL_BACKGROUND": "claude-haiku-4-5", // طراز المهام الخلفية (استخراج الذاكرة، الضغط، إلخ)
    "LANG": "zh",                        // لغة الواجهة (zh/en)، تتحكم أيضاً في لغة رد LLM
    "TEMPERATURE_ZERO": "true",            // ملاحظة: جميع القيم نصية
    "API_TIMEOUT": "30",                   // مهلة التوقف في التدفق (بالثواني)
    "API_ROUND_MAX": "120",                // الحد الأعلى لوقت الجدار للجولة الواحدة (بالثواني)
    "API_STALL_MAX_RETRIES": "10",        // عدد محاولات إعادة المحاولة عند توقف التدفق
    "PERMISSION_MODE": "auto",             // auto = قائمة بيضاء + تأكيد / manual = قائمة بيضاء فقط / skip = السماح الكامل
    "ALLOWED_TOOLS": ""                    // أدوات القائمة البيضاء (مفصولة بفواصل)، فارغ = الافتراضي المدمج
  }
}
المعامل النوع القيمة الافتراضية الوصف
PERSONA_NAME string "niuma" اسم شخصية AI، يُحقن في system prompt كاسم الدورPersona name injected into the system prompt
MODEL_BACKGROUND string "claude-haiku-4-5" طراز المهام الخلفية (استخراج الذاكرة، ضغط المحادثة، إلخ)Background model for memory extraction, compression, etc.
LANG string "en" لغة الواجهة (ar = العربية / en = الإنجليزية)، تتحكم أيضاً في لغة رد LLMUI language (ar/en), also controls LLM response language
TEMPERATURE_ZERO string(bool) "true" تثبيت temperature=0 (مخرجات حتمية)؛ false = استخدام درجة الحرارة الافتراضية للطرازFix temperature=0 for deterministic output; false = use model default
API_TIMEOUT string/int "30" عتبة توقف استجابة التدفق من API (بالثواني)، عند تجاوزها دون أحداث تُعتبر الاتصال شاذاًStreaming stall timeout in seconds — no events for this long triggers reconnect
API_ROUND_MAX string/int "120" الحد الأعلى لوقت الجدار للجولة الواحدة (بالثواني)، لمنع الاستجابات الطويلة التي تحتوي تفكيراً فقط من احتكار خيط العملWall-clock hard limit per turn in seconds — kills stale streams
API_STALL_MAX_RETRIES string/int "10" الحد الأعلى لمحاولات إعادة المحاولة عند توقف التدفقMax retries on stream stall before giving up
PERMISSION_MODE string "auto" وضع الصلاحيات: auto (قائمة بيضاء + تأكيد) / manual (قائمة بيضاء فقط) / skip (السماح الكامل)Permission mode: auto (whitelist+confirm) / manual (whitelist only) / skip (allow all)
ALLOWED_TOOLS string "" قائمة أدوات القائمة البيضاء (مفصولة بفواصل)، عند الفراغ تُستخدم القائمة الافتراضية (تشمل read_file, write_file, execute_bash إلخ)Comma-separated tool whitelist; empty = use built-in defaults
compactتهيئة ضغط السياق، الضغط التلقائي للحفاظ على المعلومات الجوهرية عند طول المحادثة
💡 مثال كامل
{
  "compact": {
    // ── ضغط متزامن أثناء المحادثة (يحجب الحلقة الرئيسية حتى اكتمال الضغط) ──
    "inline_trigger": 0.8,      // يُشغَّل عند وصول الرموز إلى 80% من MAX_TOKENS
    "inline_keep_ratio": 0.4,   // يُحتفظ بآخر 40% من الرسائل بعد الضغط

    // ── ضغط غير متزامن بعد الانتهاء من الرد (لا يحجب، يعمل بصمت في الخلفية) ──
    "idle_trigger": 0.5,        // يُشغَّل عند وصول الرموز إلى 50% من MAX_TOKENS
    "idle_keep_ratio": 0.4,     // يُحتفظ بآخر 40% من الرسائل بعد الضغط

    // ── الحد الأعلى لمخرجات ملخص LLM ──
    "max_summary_tokens": 4096  // العدد الأقصى للرموز في الملخص المُولّد
  }
}
المعامل النوع القيمة الافتراضية الوصف
inline_trigger float 0.8 عتبة تشغيل الضغط المتزامن أثناء المحادثة (نسبة من MAX_TOKENS)، عند بلوغها تُحجب الحلقة الرئيسية للضغطInline compression trigger ratio — blocks main loop when reached
inline_keep_ratio float 0.4 نسبة الرسائل الأخيرة المحتفظ بها بعد الضغط المتزامن (0.4 = 40%، والباقي يلخصه LLM)Ratio of recent messages kept after inline compression
idle_trigger float 0.5 عتبة تشغيل الضغط غير المتزامن بعد الرد (نسبة من MAX_TOKENS)، يُشغَّل في الخلفية دون حجبIdle compression trigger ratio — runs async after reply completes
idle_keep_ratio float 0.4 نسبة الرسائل الأخيرة المحتفظ بها بعد الضغط غير المتزامنRatio of recent messages kept after idle compression
max_summary_tokens integer 4096 الحد الأقصى لرموز مخرجات ملخص LLM (الحد الأعلى للملخص عند الضغط)Max output tokens for LLM-generated compression summaries
memory_palaceتهيئة LLM لقصر الذاكرة، مستقلة عن بلوك llm، تُحلّل بشكل منفصل
💡 مثال كامل
// الوضع الأساسي: استخراج بالقواعد فقط (بدون LLM، تكلفة صفرا)
{
  "memory_palace": {
    "enable_v9": false,        // تعطيل V9، التراجع إلى الوضع التقليدي V8
    "llm_enabled": false        // تعطيل تعزيز LLM
  }
}

// الوضع الكامل: استخراج مع تعزيز LLM (الحقول الثلاثة مطلوبة جميعها، وإلا التراجع للقواعد فقط)
{
  "memory_palace": {
    "enable_v9": true,
    "llm_enabled": true,       // عند التفعيل يجب تعبئة الحقول الثلاثة أدناه
    "base_url": "https://api.anthropic.com",
    "api_key": "sk-ant-xxx",
    "model": "claude-haiku-4-5"    // يُنصح بgunakan طراز خفيف لتوفير الرموز
  }
}
المعامل النوع القيمة الافتراضية الوصف
enable_v9 boolean true تفعيل طبقة ذاكرة V9 (ذاكرة مدفوعة بالاستيعاب)، false = التراجع إلى الوضع التقليدي V8Enable V9 perception-driven memory; false = legacy V8 mode
llm_enabled boolean false تفعيل تعزيز LLM لاستخراج الذاكرة (true = استخدام LLM لاستخراج حقائق أعلى جودة، false = وضع القواعد فقط)Enable LLM-enhanced memory extraction; false = rule-based only
base_url string "" نقطة نهاية API لذاكرة LLM (الحقول الثلاثة base_url/api_key/model مطلوبة جميعها، وإلا التراجع للقواعد فقط)Memory LLM API endpoint (all three fields required, or falls back to rule-based)
api_key string "" مفتاح API لذاكرة LLMMemory LLM API key
model string "" اسم الطراز المستخدم في ذاكرة LLM (يُنصح بطراز خفيف مثل haiku)Model for memory LLM (recommend a lightweight model like haiku)
memory_qualityعتبة بوابة جودة الذاكرة، التحكم في تصفية الكتابة ودقة الاستدعاء
💡 مثال كامل
{
  "memory_quality": {
    "min_store_importance": 0.4,  // بوابة الكتابة: لا تُخزَّن الحقائق بأهمية أقل من هذه القيمة
    "min_recall_score": 0.35,     // بوابة الاستدعاء: لا تُحقَّن في prompt إذا كانت الدرجة أقل من هذه القيمة
    "dedup_threshold": 0.3        // عتبة إزالة التكرار: تشابه Jaccard أعلى من هذه القيمة يُconsider مكرراً
  }
}
المعامل النوع القيمة الافتراضية الوصف
min_store_importance float 0.4 بوابة الكتابة: لا تُخزَّن الحقائق بأهمية ذاتية أقل من هذه القيمة، مصادر الضوضاء منخفضة القيمة (0.4 يحجب "الذكر العشوائي"، ويحتفظ بـ "خطأ/مشكلة" فأعلى)Write gate: facts scoring below this importance are discarded at extraction
min_recall_score float 0.35 بوابة الاستدعاء: لا تُحقَّن في prompt الذكريات بدرجة استدعاء أقل من هذه القيمة، تصفية الضوضاء منخفضة الصلةRecall gate: memories scoring below this are not injected into the prompt
dedup_threshold float 0.3 عتبة إزالة التكرار: تشابه أحرف Jaccard أعلى من هذه القيمة يُعتبر مكرراً، والاحتفاظ بالأحدثDedup threshold: Jaccard similarity above this = duplicate, keeps newest

جميع الأوامر المتاحة

استخدم الأوامر ذات الشرطة المائلة للعمليات السريعة

الأمر الوصف
/ide الدخول إلى محرر التعليمات البرمجية بملء الشاشة
/context إدارة السياقات المتعددة (new/rename/switch/del)
/help عرض معلومات المساعدة
/copy نسخ آخر رد إلى الحافظة
/resume متابعة المهام غير المكتملة
/clear مسح سياق المحادثة
/restart إعادة تشغيل niuma
/model عرض/تبديل الطراز
/quit الخروج من البرنامج

أوامر #tag السريعة

استخدم #الوسم للحقن السريع للتعليمات المحددة مسبقاً، تعريف واحد استخدامات متعددة

💡

ما هو #tag

الوسوم المخصصة هي أوامر سريعة يحددها المستخدم، استخدم #اسم_الوسم في الإدخال ليتوسع إلى نص مُعرَّف مسبقاً.

  • إدخال #ar يتوسع تلقائياً إلى "الرد بالعربية"
  • يدعم أي وسم مخصص، غير حساس لحالة الأحرف
  • يمكن وضع الوسم في أي موضع من الإدخال، ويُزال تلقائياً بعد التحليل
  • يُلحق النص الموسع بنهاية الإدخال ليفهمه LLM
مثال: #ar التعقيد الزمني لفرز الفقاعات → 【الرد بالعربية】 التعقيد الزمني لفرز الفقاعات
⚙️

نوعا الوسوم

وسوم النظام تتحكم في نمط السلوك، الوسوم المخصصة تحقن التعليمات المحددة مسبقاً، يكملان بعضهما دون تعارض.

  • #plan_mode — إجبار التحليل فقط دون التنفيذ (أعلى أولوية)
  • #skip_mode — تخطي جميع الصلاحيات، تنفيذ الأدوات مباشرة
  • #مخصص — أي أمر سريع يحدده المستخدم
  • عند إدخال plan_mode و skip_mode معاً، يُؤخذ بـ plan_mode
📋

إدارة أوامر /tag

من خلال أوامر /tag يمكنك إضافة وتعديل وحذف وعرض الوسوم المخصصة.

  • /tag — فتح لوحة إدارة الوسوم (TUI) أو عرض قائمة الوسوم (CLI)
  • /tag add <name> <text> — إضافة وسم جديد
  • /tag mod <name> <text> — تعديل وسم موجود
  • /tag rm <name> — حذف وسم
  • /tag ls — عرض جميع الوسوم
🎯

سيناريوهات الاستخدام النموذجية

غلّف التعليمات الشائعة كوسوم لرفع كفاءة المحادثة.

  • #ar — إجبار الرد بالعربية
  • #fix — تعليمات قياسية لإصلاح خطأ برمجي
  • #review — متطلبات مراجعة الكود القياسية
  • #explain — شرح تفصيلي لمنطق الكود
الاستخدام المركب: #plan_mode #ar حلل عنق الزجاجة في أداء هذه الدالة
💾

التخزين والتهيئة

تُخزَّن الوسوم في ملف JSON، في نفس مستوى settings.json.

  • موقع التخزين: ~/.niuma/custom_tags.json
  • صيغة بسيطة من أزواج مفتاح-قيمة، المفتاح يُحَول تلقائياً إلى أحرف صغيرة
  • كتابة ذرية، متوافقة مع Windows
مثال على الملف:
{
  "ar": "الرد بالعربية",
  "fix": "fix the bug"
}
🔄

سير التحليل

يمر الإدخال بثلاث قنوات لضمان أن فهم LLM واستدعاء الذاكرة وتخزين الاستيعاب يحصل كل منها على حاجته.

  • raw_input — الإدخال الخام، لتخزين التتبع
  • llm_input — بعد توسيع الوسوم، ليفهمه LLM
  • filter_input — بعد إزالة بادئة الوسم، لاستدعاء الذاكرة
  • لا تتلوث قاعدة الذاكرة بالوسوم، استدعاء أدق