تخطَّ إلى المحتوى

الإعدادات والتخصيص

يعمل ZenCopy فور تثبيته دون ضبط أي شيء. هذه الصفحة لمن يريده أن يلائمه أكثر. النصف الأول، عن نافذة الإعدادات، موجّه للجميع؛ والنصف الثاني، عن ملفات الإعداد، موجّه للمستخدمين المتقدمين.

افتحها من قائمة أيقونة النظام، أو من أيقونة الترس في النافذة المنبثقة. تضم ثلاثة تبويبات: عام والذكاء الاصطناعي والموجّهات.

  • موضع النافذة المنبثقة — في أي زاوية من الشاشة تظهر النتائج.
  • المظهر — فاتح / داكن / يتبع النظام.
  • حجم النص — صغير / قياسي / كبير.
  • لغة الواجهة — تتبع نظام التشغيل افتراضيًا.
  • التشغيل عند تسجيل الدخول — ليكون ZenCopy جاهزًا كلما كان حاسوبك يعمل.
  • التأكيد قبل الإرسال — هل يُسأل مرة قبل إرسال الصور أو الملفات إلى الذكاء الاصطناعي.

هنا تغيّر خدمة الذكاء الاصطناعي (المزوّد والنموذج ومفتاح API). زر اختبار يخبرك فورًا هل الاتصال يعمل أم لا.

يضم التبويب أيضًا حقل نبذة عنك. وهو مكان تصف فيه دورك وتفضيلاتك في بضع جمل بسيطة وبأي لغة.

مثال: «مبيعات. أكتب غالبًا رسائل بريد للعملاء — مهذبة دون جمود، والخلاصة أولًا.»

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

قائمة «ما الذي يحدث بعد النسخ المزدوج».

  • الموجّهات المثبّتة مسبقًا يمكن فتحها وقراءتها — فهي تصلح أمثلة عملية أيضًا.
  • الموجّه الجديد لا يتطلب سوى اسم وما تريد إنجازه. مثلًا: الاسم «تلخيص في ثلاثة أسطر»، والتعليمات «لخِّص هذا في ثلاثة أسطر».
  • لست واثقًا من كتابة التعليمات؟ دوّن ما تريده ولو تقريبيًا واضغط صياغة بالذكاء الاصطناعي — يحوّله الذكاء الاصطناعي الذي أعددته إلى تعليمات سليمة الصياغة.
  • القواعد تتيح لك اختيار موجّه مختلف لكل نوع من المحتوى (نص / صورة / ملفات).

الموجّهات التي تبنيها قابلة للمشاركة: تصدير (.md) يكتب الموجّه ملفًا، والطرف المستقبِل يلصقه ببساطة في استيراد أو يختار الملف.

هل تفضل إسناد المهمة بأكملها إلى ذكاء اصطناعي؟ يمكن لأي محادثة ذكاء اصطناعي كتابة موجّه جاهز للاستيراد من أجلك — انسخ هذا واملأ الفراغ:

اقرأ https://zencopy.app/llms-full.txt — وثائق ZenCopy الكاملة، بما في ذلك تنسيق ملف الموجّه، ومتغيرات القالب، وكيفية عمل القواعد. ثم اكتب موجّه ZenCopy يقوم بما يلي: [ما تريده]. قم بإنتاج ملف موجّه كامل واحد (Markdown مع frontmatter) في كتلة برمجية واحدة، جاهز للصقه في إعدادات ← الموجّهات ← استيراد في ZenCopy. إذا كان الموجّه منطقيًا فقط في تطبيق معين أو على موقع معين، فأضف جملة واحدة تخبرني بالقاعدة التي يجب تعيينها.

تذهب الكتلة البرمجية في الرد مباشرة إلى إعدادات ← الموجّهات ← استيراد. بالنسبة للأسئلة التي لا تستطيع الوثائق الإجابة عليها (“هل يمكن لـ ZenCopy حتى أن يفعل…”)، بنقرة واحدة يتم حزم المصدر ذي الصلة — سلم النتيجة إلى نفس الذكاء الاصطناعي.

ملفات الإعداد (للمستخدمين المتقدمين)

Section titled “ملفات الإعداد (للمستخدمين المتقدمين)”

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

تُقرأ الملفات من دليل إعدادات التطبيق الخاص بكل مستخدم. ويُطبع المسار الدقيق أيضًا في السجل عند بدء التشغيل:

%APPDATA%\app.zencopy

الإعدادات الافتراضية للقواعد مضمّنة في التطبيق؛ وملف rules.json لا يفعل سوى تجاوزها. أما ملفات الموجّهات فهي إضافية: تعرّف موجّهات جديدة، والموجّهات المضمّنة لا تُمس (أي ملف محلي يدّعي id موجّه مضمّن يُتجاهل). التعديلات تسري عند التشغيل التالي — دون حاجة إلى إعادة تشغيل.

المزوّدون إضافة إلى ربط role ← model. موطن صيغة الملف هو ai-sdk-catalog — كل حقل موثّق هناك (بما في ذلك $schema للتحقق والإكمال التلقائي في المحرر)، ويضم examples/ إعدادات بثلاثة أحجام. ولنقاط انطلاق بنكهة ZenCopy (ما تكتبه واجهة الإعدادات، وOllama المحلي، والأدوار للموجّهات)، راجع الوصفات.

هناك متطلب واحد يخص ZenCopy نفسه وليس تنسيق الملف: يجب أن يحتوي roles دائمًا على default. كل موجّه يعمل به ما لم يسمِّ الـ frontmatter الخاص به role آخر، واختبار الاتصال في الإعدادات يرسل ping إليه.

تُوضع مفاتيح API مباشرة في هذا الملف المحلي (واجهة الإعدادات تكتب الصيغة نفسها)؛ ولا تغادر جهازك أبدًا. متغيرات البيئة لا تُقرأ — فتطبيقات الواجهة الرسومية يشغّلها نظام التشغيل لا الـ shell الخاص بك، لذا لا تصلها المتغيرات المصدَّرة في .zshrc وأشباهه. يُتحقق من الملف وفق المخطط عند كل قراءة. وأي تعديل معطوب يظهر رسالة واضحة في النافذة المنبثقة وفي محرر الإعدادات — لا شيء يفشل بصمت.

أي موجّه يتولى أي نوع من الالتقاط: خريطة مسطّحة kind ← prompt إضافة إلى قائمة overrides اختيارية أعلى أولوية (أول تطابق يفوز). الأنواع الثلاثة هي text وimage وfiles (تُعامل النسخة المنسّقة على أنها text)؛ وافتراضيًا يوجَّه النص إلى تلخيص، وتوجَّه الصور والملفات إلى «شرح». الخريطة المسطّحة قابلة للتحرير داخل التطبيق (الإعدادات ← الموجّهات ← القواعد)، فلا تحتاج إلى لمس هذا الملف إلا من أجل overrides.

{
"text": "zencopy-summarize",
"image": "zencopy-explain",
"files": "zencopy-explain",
"overrides": [{ "when": { "app_name": "Slack", "min_chars": 200 }, "prompt": "summarize" }]
}

شروط when: هي kind (أحد الأنواع الثلاثة، بمطابقة تامة) وapp_name وexec_name وwindow_title وurl (وكلها تدعم البدل *)، وfile_name (بدل يجب أن يطابق اسم كل ملف منسوخ، دون اعتبار لحالة الأحرف — مثل *.pdf)، إضافة إلى min_chars / max_chars.

في التقاطات image وfiles، يُرسل المحتوى نفسه إلى النموذج (حتى 10 م.ب. إجمالًا لكل التقاط). أنواع الملفات تُكتشف من المحتوى لا من الأسماء: الصور وملفات PDF والصوت تُرفق كما هي، بينما تصبح الملفات النصية (Markdown والشيفرة المصدرية وCSV …) نصَّ الالتقاط نفسه ({{ text }}) وتُعامل تمامًا كما لو نسخت محتوياتها. تصبح مستندات Office (Word وExcel وPowerPoint) نصًا أيضًا: يتم استخراج محتواها وإرساله، بينما لا يتم إرسال تصميمها وصورها. ترميزات الأحرف تُكتشف تلقائيًا، مع تحويل الصيغ القديمة مثل Shift_JIS وUTF-16. وأي شيء آخر يُرفض مع رسالة واضحة. تُرسل المسارات الكاملة مع المحتويات ليتمكن النموذج من التمييز بين الملفات ومعرفة مواضعها. ولأن المرفقات الثنائية قد تكلّف أكثر من النص، تسأل النافذة المنبثقة قبل إرسالها (الملفات النصية تعمل دون سؤال) — ويمكن إيقاف التأكيد في مكانه أو من الإعدادات.

ملف واحد = موجّه واحد: frontmatter بصيغة YAML + نص الموجّه بصيغة Liquid. والملف الواحد نفسه هو صيغة المشاركة — الإعدادات ← الموجّهات ← استيراد يقبله نصًا ملصوقًا أو ملفًا مختارًا.

---
id: summarize
label: تلخيص
role: default
instructions: أنت مساعد موجز.
---
لخِّص في ثلاثة أسطر بلغة {{ locale }}:
{{ text }}
الـ frontmatterالمعنى
idالاسم المُشار إليه من rules.json (افتراضيًا: اسم الملف) — البادئة zencopy- محجوزة للموجّهات المثبتة مسبقًا
labelيُعرض في النافذة المنبثقة
roleدور الـ catalog الذي يُشغَّل به (افتراضيًا: default)
instructionsموجّه النظام (قالب Liquid)

متغيرات القالب، مع أمثلة قيمها لفقرة نُسخت في متصفح:

المتغيرمثال
{{ text }}النص المنسوخ (نسخ HTML المنسّقة تصبح Markdown)
{{ markup }}مصدر HTML/RTF لنسخة منسّقة
{{ format }}html (أو rtf؛ فارغ للنسخ العادية)
{{ file_name }}report.pdf (اسم أول ملف منسوخ)
{{ file_names }}اسم كل ملف منسوخ، كل اسم في سطر
{{ file_paths }}المسار الكامل لكل ملف منسوخ، كل مسار في سطر
{{ app_name }}Safari
{{ exec_name }}Safari / chrome.exe
{{ exec_path }}/Applications/Safari.app/Contents/MacOS/Safari
{{ window_title }}الأسعار – Example
{{ url }}https://example.com/pricing (المتصفحات فقط)
{{ process_id }}8123
{{ now }}2026-07-08 20:15:00
{{ locale }}ar

يوجد أيضًا مرشِّح language_name خاص بـ ZenCopy: يتوسّع {{ locale | language_name }} إلى “Arabic” بدل “ar”، فيُقرأ داخل الموجّه قراءة طبيعية. ولرؤية القيم الفعلية، فعِّل عرض متغيرات القالب من الإعدادات — فتظهر متغيرات كل التقاط في النافذة المنبثقة بصيغة JSON.

الموجّهات البسيطة (اسم وتعليمات) يمكن إنشاؤها أيضًا من نافذة الإعدادات؛ وما تكتبه هو هذه الصيغة من الملفات بالضبط.

كل من frontmatter الخاص بـ instructions والنص الأساسي قالبان كاملان بصيغة LiquidJS: الشروط والحلقات والمرشّحات كلها تعمل. ويمكن لموجّه واحد أن يتكيف بحسب مصدر النسخ:

---
id: context-aware
label: حسب السياق
---
{% if url contains "github.com" %}
راجع هذه الشيفرة وأشر إلى أكبر خطر واحد فيها:
{% elsif app_name == "Slack" %}
لخِّص سلسلة المحادثة هذه في سطرين:
{% else %}
اشرح هذا بلغة {{ locale }}:
{% endif %}
{{ text | truncate: 8000 }}

السجلات المنظّمة (مع حجب الأسرار والمحتوى المنسوخ) تذهب إلى الطرفية في وضع التطوير، وإلى ملف دوّار في الإصدار النهائي:

%LOCALAPPDATA%\app.zencopy\logs