العودة إلى المقالات
من الموجِّه إلى القالب: لماذا بنيتُ محرّك مستندات ثنائي اللغة لسير العمل المؤسسي
كاتبثنائي اللغةأدوات الذكاء الاصطناعيالمستنداتالسوقمفتوح المصدرالشركاتالخليج

من الموجِّه إلى القالب: لماذا بنيتُ محرّك مستندات ثنائي اللغة لسير العمل المؤسسي

أن تطلب من نموذج لغوي كتابة الاتفاقية نفسها كلّ أسبوع ضريبةٌ مدفوعة. katib يستبدل توليد المستند بتعبئة المتغيّرات — استهلاك أقلّ بمعدّل ١٠ إلى ١٠٠ ضعف، مخرَجٌ متطابق في كل مرّة، وثنائية لغة (إنجليزي + عربي) افتراضياً.

نُشر في 30 أبريل 2026 دقائق قراءة
جاسم النعيمي

جاسم النعيمي

باحث في التعاون مع الذكاء الاصطناعي

في المرّة الأولى التي لاحظتُ فيها النمط، كنتُ أُولِّد اتفاقية عدم الإفصاح نفسها للمرّة الثالثة خلال شهر. طرفٌ مقابلٌ جديد، قالبٌ نفسه، بنودٌ نفسها، تقابلٌ ثنائي اللغة نفسه. طلبتُ من Claude صياغتها. ألفا رمزٍ كمخرَجات، ومراجعةٌ واحدة، وأربعمئة رمزٍ إضافي. ملفّ PDF نظيف، ثمّ عشرون دقيقة أخرى في Word ليبدو جاهزاً للطباعة. بحلول نهاية العام كنتُ سأُكرّر هذا عشرات المرّات — عبر اتفاقيات عدم الإفصاح، ومذكّرات التفاهم، والفواتير الضريبية، وتحديثٍ لسيرةٍ ذاتية لم أعد قادراً على معالجته في Word.

كلّ طلبٍ مفرد بدا رخيصاً. المجموع لم يكن كذلك. وكلّ مخرَجٍ بدا قريباً من الصواب حتى يفتحه زميل، فيجد الأعمدة الثنائية منحرفة، أو فاصل الصفحة في غير موضعه، أو كتلة التوقيع منعكسةً بشكلٍ خاطئ في النسخة العربية.

هذه ضريبة المستندات. معظم الفرق المؤسسية تدفعها دون أن تُسمّيها. الحلّ ليس موجِّهاً أفضل. الحلّ أن نتوقّف عن استخدام الموجِّهات لتوليد المستندات أصلاً.

النمط الذي لا يتسع

ما يفعله معظم الناس اليوم حين يحتاجون إلى مستندٍ مؤسسي:

١. فتح Claude / ChatGPT / واجهة محادثة ٢. السؤال: "اكتب لي اتفاقية عدم إفصاح / فاتورة / تقرير تقدّم" ٣. دفع رموز عن كلّ كلمة يُنتجها النموذج ٤. القراءة، ثمّ التعديل، ثمّ طلب المراجعات، ثمّ دفع الرموز مجدّداً ٥. النسخ واللصق في Word أو Google Docs ٦. قضاء عشرين دقيقة في إصلاح التخطيط والخطوط وفواصل الصفحات والتوقيعات ٧. توليد نسخة عربية يدوياً، ثمّ إصلاحها، ثمّ عكس التخطيط، ثمّ رتق الفجوات الثنائية

المشكلة الجوهرية ليست في النموذج. النموذج بخير. المشكلة أنّك تستخدم أداةً توليديةً لإنتاج شيءٍ يجب أن يُملأ، لا أن يُولَّد.

اتفاقية عدم الإفصاح القياسية ٩٥٪ بنية و٥٪ متغيّرات. البنية نفسها في كلّ مرّة — التمهيد، التعريفات، بند السرية، المدّة، القانون الحاكم، التوقيعات. أمّا المتغيّرات فهي الأسماء والتواريخ والاختصاصات وحفنةٌ من البنود المتفاوض عليها. توليد البنية في كل تصيير يعني إعادة الدفع عن محتوى تملكه أصلاً.

ما الذي بنيتُه بدلاً من ذلك

katib محرّك مستنداتٍ مفتوح المصدر يقلب سير العمل.

تُكتب القوالب مرّةً واحدة، في الكود. مُؤرشفةٌ بإصدارات، مُختبَرة، حتميّة. كلّ تصيير يُنتج المخرَج نفسه، بايت ببايت. دور النموذج اللغوي يتقلّص من "اكتب المستند بأكمله" إلى "املأ هذه المتغيّرات الثمانية". تكلفة الرموز في كل تصيير تهبط من الآلاف إلى العشرات.

التحوّل يبدو هكذا:

محادثة مع نموذج لغويتصيير قالب katib
الرموز لكل تصيير٢٬٠٠٠–٥٬٠٠٠ (مخرجات)٥٠–٢٠٠ (متغيّرات فقط)
الحتميةنصٌّ جديد في كلّ مرّةمخرَجٌ متطابق في كل مرّة
دقّة التخطيطMarkdown ← تنظيف يدويPDF بحجم A4 جاهز للطباعة، فواصل صفحات صحيحة
دعم ثنائية اللغةترجمة لاحقة، وإصلاح الانعكاسالإنجليزية والعربية في القالب نفسه، RTL منعكس افتراضياً
التحكم بالإصداراتلا شيء — كلّ محادثة لمرّة واحدةكل قالب مُؤرشف بإصدار، كلّ تغيير مُسجَّل
إعادة الاستخدامنسخ ولصق من محادثاتٍ سابقةkatib render legal-nda --lang ar

قالبٌ واحد يُصيِّر المستند نفسه للعميل المئة بالتكلفة نفسها التي صُيِّر بها للعميل الأول.

قالب اتفاقية عدم إفصاح صُيِّر بـ katib — طباعةٌ بحجم A4 وتنسيقٌ منظَّمٌ للأقسام، ولوريم إيبسوم يملأ كلّ متغيّر. البنية ثابتة في الكود، ولا يتغيّر بين تصييرٍ وآخر إلا الحقول بين الأقواس.

ما الذي تعنيه "ثنائية اللغة افتراضياً" فعلياً

معظم أدوات PDF "ثنائية اللغة" تعمل هكذا: المحرّك يُصيِّر الإنجليزية، أنت تستبدل النصوص بالعربية، تُصلح التخطيط الذي انكسر، ثمّ تنشر ملفَّي PDF.

قوالب katib تحمل اللغتين كسطحٍ أوّليّ. كل قالب يُشحَن مع:

  • تصيير en.html وar.html، يحافظ عليهما مؤلّف القالب
  • تخطيط RTL سليم — الأعمدة العربية تتدفّق من اليمين إلى اليسار، كتل التوقيع تنعكس، الترويسات تُقلَب، الأرقام تُعرَّب
  • طباعة عربية تمرّ عبر مسار الخطوط المناسب (Cairo للنصّ الرقمي، IBM Plex Arabic للنصّ التحريري، 29LT Bukra للعرض حين يطلب القالب ذلك)
  • خيار واحد katib render <recipe> --lang ar يُنتج ملفّ PDF عربياً كاملاً — لا ترجمةً، بل تصييراً موازياً

القالب نفسه مُصيَّر بالإنجليزية والعربية — أرقام الأقسام تنعكس، النصّ يتدفّق من اليمين إلى اليسار، القوائم تُقلَب، العناوين تعود إلى الهامش الأيمن. قالبٌ واحد، تصييران متكافئان.

هذا أهمّ في الخليج منه في أيّ مكانٍ آخر. فريقُ ماليّةٍ في دبي يُصدر فواتير يحتاج النسختين في ٨٠٪ من الحالات. فريقٌ قانونيٌّ سعوديٌّ يصوغ مذكّرات تفاهم يَشحَنها ثنائية اللغة إلى الوزارة. الفاتورة الضريبية في الإمارات تخضع لمعايير الهيئة الاتحادية للضرائب (FTA)، والهيئة تشترط الثنائية في صيغة الفاتورة. التعامل مع العربية كفكرةٍ لاحقة يعني أنّ النسخة العربية هي التي تنكسر دائماً.

أربعٌ وأربعون حزمة، اليوم

السوق على jneaimi.com/katib يُتيح ٤٤ حزمة وأنا أكتب هذا. ١١ قالباً و٣٣ مكوّناً. القوالب تُغطّي سير العمل المؤسسي المتكرّر:

  • قانوني: اتفاقيات عدم الإفصاح، مذكّرات التفاهم، عقود الخدمات
  • ماليّ: فواتير ضريبية متوافقة مع الهيئة الاتحادية للضرائب الإماراتية، عروض الأسعار
  • تشغيلي: تقارير التقدّم، الملخّصات التنفيذية
  • شخصي: السير الذاتية، الصفحات التعريفية
  • تحريري: المقالات الطويلة، أغلفة الأخبار

أربعة قوالب من السوق مُصيَّرة جنباً إلى جنب — اتفاقية عدم إفصاح، فاتورة ضريبية، تقرير تقدّم، سيرة ذاتية. كلٌّ منها يُملأ بالطريقة نفسها: البنية هي القالب، والمتغيّرات بين الأقواس هي ما يتغيّر.

المكوّنات هي اللبنات التي تتألّف منها القوالب — ترويسات الرسائل، كتل التوقيع، كتل التوقيع متعدّدة الأطراف، الرسوم البيانية، الخطوط الزمنية، صفحات جداول المحتويات، تخطيطات العمودين، كتل الملخّصات التنفيذية، بطاقات الملخّصات المالية. هل تحتاج شكلَ تقريرٍ مخصّصاً تستخدمه شركتك؟ ركّبه من المكوّنات الموجودة في خمسين سطراً من YAML، وأرسله طلب سحبٍ إلى السوق ليُشحَن للجميع.

القوالب مُؤرشفة بإصدارات. المكوّنات مُؤرشفة بإصدارات. كلّ تثبيتٍ قابلٌ للتكرار. حزمةٌ تُثبّتها اليوم تُصيِّر المستند نفسه بعد عام.

تستطيع أن تبني قوالبك — وتُلبسها هويّتك البصرية

السوق يعرض ما هو مشحونٌ اليوم. لكنّ katib أداةٌ لصناعة القوالب والمكوّنات وملفّات الهويّة البصرية بقدر ما هو محرّك تصيير — وطبقة الهويّة تُغيّر طريقة تصيير كلّ مكوّن.

  • /katib component new <name> يفتح مُنشئاً يُساعدك الذكاء الاصطناعي على بناء لبنات جديدة — كتل توقيعٍ مخصّصة، رسومٌ بيانيةٌ لقطاعٍ بعينه، تخطيطاتٌ تستخدمها شركتك. أرسلها إلى السوق طلب سحب، أو احتفظ بها في ذاكرتك المحليّة.
  • /katib recipe new <name> يُهيكل قالباً جديداً بتركيب مكوّناتٍ موجودة. اكتب YAML، صَيِّر PDF.
  • ملفّات الهويّة البصرية ملفّات YAML تُحدّد الألوان والخطوط والشعار وبيانات المؤلِّف وخلفية الصفحة. مرِّر --brand acme فيُصيِّر كلّ مكوّنٍ بهويّة ACME. القالب نفسه، مظهرٌ مختلف — دون استنساخ القالب.

هذا يهمّ أكثر ممّا يبدو. شركةٌ استشاريةٌ تعمل مع عشرة عملاء تحتاج عشرة ملفّاتِ هويّة، لا عشرة فروعٍ من القالب. اتفاقية عدم الإفصاح نفسها تُصيَّر بشكلٍ للمكتب القانوني، وبشكلٍ آخر للعميل، وبشكلٍ ثالث للجهة المنظِّمة. الهويّات ملفّاتٌ لا فروع — ما لا تُحدّده يَرِث الإعداد الافتراضي للمجال، فتعمل التجاوزات الجزئية بسلاسة.

المعمارية باختصار

قطعتان. المحرّك يُنشَر على npm باسم @jasemal/katib. أمرٌ واحد يُثبّته: npx @jasemal/katib install. واعٍ بثنائية اللغة، واعٍ بالهويّة البصرية، يُنتج ملفّات PDF بجودة الطباعة عبر WeasyPrint — A4 افتراضياً، هوامش حقيقية، فواصل صفحاتٍ حقيقية، وربطٌ حرفيٌّ صحيحٌ للعربية عبر OpenType.

السوق على jneaimi.com/katib، يُقدَّم كمسارٍ فرعيّ لهذا الموقع. كتل الحزم على Cloudflare R2 (غير قابلة للتعديل، مُعنونة بالمحتوى حسب الإصدار). فهرس السجلّ على Postgres مُستضافٍ على Coolify. تثبيت حزمة سطرٌ واحد: katib pack install jneaimi/legal-nda. عند التثبيت تتّصل الأداة بالسجلّ عبر HTTPS، فتُنزِّل كتلة .katib-pack من R2 (نقل بياناتٍ مجاني)، وتكتبها إلى ذاكرتك المحليّة في طبقة المستخدم.

الأداة كلّها متعمَّدة فيما لا تفعله. لا واجهة محادثة. لا محرّر مرئي. لا لوحة تحكّم سحابية. وحدة العمل هي katib render، تُستدعى من سطر الأوامر أو من أداةٍ أخرى. تتعايش بسلاسةٍ مع Claude Code أو أيّ وكيلٍ ذكيّ آخر — الوكيلُ الذكيُّ يملأ المتغيّرات، وkatib يُصيِّر المستند.

ما الذي أخّر إطلاق هذا

بنيتُ المحرّك في فترةٍ مكثّفة. السوق استغرق وقتاً أطول قبل أن أفتحه — لا لأسبابٍ هندسية، بل بسبب معيار الجودة في النسخة العربية.

تصيير ملفّات PDF إنجليزية أنيقة من HTML مشكلةٌ محلولة. أمّا تصيير العربية الأنيقة — بتشكيلٍ صحيحٍ للحروف، وتعريبٍ للأرقام، وتدفّقٍ من اليمين إلى اليسار، ومكوّناتٍ منعكسةً طبيعياً — فمشكلةٌ مفتوحة. WeasyPrint يتولّى الكثير لكن ليس كلّ شيء. الطباعة العربية في ملفّات PDF بجودة الطباعة تتطلّب قراراتٍ ذات رأي حول الخطّ الذي يُشحَن مع كلّ قالب، وكيف تُترجَم علامات اللهجة إلى الطباعة، ومتى تُستخدَم الأرقام الغربية مقابل العربية، وكيف يُتعامَل مع المصطلحات الإنجليزية المُدرَجة داخل النصّ العربي.

كلّ اختصارٍ جرّبتُه ترك النسخة العربية أسوأ مظهراً من الإنجليزية. النسخة من katib التي شحنتُها هي التي توقّفتُ فيها عن محاولة الذكاء، وبنيتُ كلّ جانبٍ من القالب كما يجب.

ما الذي لا يحلّ محلّه

لا يحلّ محلّ موجِّهات النماذج اللغوية للمحتوى الجديد. إن كنتَ تحتاج خطاب تقديمٍ مخصّصاً لمنصبٍ فريد، اطلب من Claude صياغته — هذا ما صُمِّم له الذكاء التوليدي. وإن كنتَ تحتاج تدوينةً جديدة في موضوعٍ لم تتطرّق إليه، فاكتب موجِّهاً.

ولا يحلّ محلّ أتمتة المستندات الموجودة لديك إن وُجدت. إن كانت لدى شركتك منظومةٌ مكوّنةٌ من DocuSign + قوالب Word تعمل بشكلٍ ممتاز، احتفظ بها. katib مُصمَّم لسير العمل الذي لجأتَ فيه إلى نموذجٍ لغويّ كبديلٍ عن القوالب لأنّ بناء القوالب كان مُكلِّفاً.

يحلّ محلّ نمط الفشل المحدّد حين:

  • تُعيد توليد الشكل نفسه من المستند مراراً
  • تَتعثّر بمتطلَّب الإنجليزية + العربية في القوالب الحاليّة
  • تحتاج إلى PDF بجودة الطباعة، لا Markdown ولا Word
  • تتحمَّل وقت تنظيف التخطيط بوصفه ضريبةً على ممارسة العمل

إن انطبقت عليك ثلاثٌ من هذه الأربع، فkatib مبنيٌّ من أجلك.

كيف تجرّبه

أمران اثنان. المحرّك، ثمّ قالبٌ تجريبي:

npx @jasemal/katib install
katib pack install jneaimi/tutorial
katib render tutorial --lang ar

ملفّ PDF يصل إلى ~/Documents/katib/. افتحه. قارنه بآخر مستندٍ ثنائيّ اللغة وَلَّدتَه عبر نموذج لغوي.

تصفّح الكتالوج كاملاً على jneaimi.com/katib. الكود على GitHub. طلبات الإضافة إلى السوق مفتوحة — إن كان لدى فريقك شكلُ مستندٍ متكرّر، احزمه مرّةً وكُفَّ عن إعادة موجِّهه إلى الأبد.

ضريبة المستندات كانت دائماً اختياريّة. لم نكن قد بنينا البديل بعد.

احصل على مقالات جديدة

اشترك للحصول على أحدث الأبحاث والأطر المعرفية مباشرة في بريدك.

من الموجِّه إلى القالب: لماذا بنيتُ محرّك مستندات ثنائي اللغة لسير العمل المؤسسي