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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

%APPDATA%\app.zencopy

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

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

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

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

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

{
"text": "zencopy-zen",
"rich_text": "zencopy-zen",
"image": "zencopy-explain",
"files": "zencopy-explain",
"overrides": [{ "when": { "app_name": "Slack", "min_chars": 200 }, "action": "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الاسم المُشار إليه من routing.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