رفتن به محتوا

پیکربندی

ZenCopy از همان روز اول بدون هیچ پیکربندی‌ای کار می‌کند. این صفحه برای وقتی است که بخواهید آن را بیشتر به سلیقهٔ خود درآورید. نیمهٔ اول دربارهٔ پنجرهٔ تنظیمات برای همه است؛ نیمهٔ دوم دربارهٔ فایل‌های پیکربندی برای کاربران حرفه‌ای.

آن را از منوی آیکون سینی سیستم یا آیکون چرخ‌دنده روی پنجرهٔ بازشو باز کنید. سه تب دارد: عمومی، هوش مصنوعی و پرامپت‌ها.

  • موقعیت پنجرهٔ بازشو — نتیجه‌ها در کدام گوشهٔ صفحه ظاهر شوند.
  • پوسته — روشن / تیره / مطابق سیستم.
  • اندازه متن — کوچک / استاندارد / بزرگ.
  • زبان نمایش — به‌طور پیش‌فرض از سیستم‌عامل شما پیروی می‌کند.
  • اجرا هنگام ورود — تا هر وقت رایانه روشن است، ZenCopy هم آماده باشد.
  • تأیید پیش از ارسال تصاویر و فایل‌ها — این‌که پیش از رفتن تصویرها یا فایل‌ها به هوش مصنوعی، یک بار پرسیده شود یا نه.

سرویس هوش مصنوعی (ارائه‌دهنده، مدل، کلید API) را این‌جا عوض می‌کنید. دکمهٔ آزمایش بی‌درنگ می‌گوید اتصال برقرار است یا نه.

این تب فیلد دربارهٔ شما را هم دارد. جایی است برای این‌که نقش و ترجیح‌هایتان را در چند جملهٔ ساده و به هر زبانی بنویسید.

مثال: «فروش. بیشتر ایمیل برای مشتری می‌نویسم — مؤدبانه اما نه خشک، اول نتیجه.»

وقتی این فیلد پر باشد، هر پرامپت نتیجه‌هایش را برای شما تنظیم می‌کند. توضیح‌ها هم‌سطح دانسته‌های شما می‌رسند و پیش‌نویس‌ها با لحن دلخواهتان برمی‌گردند. روی کارهای بی‌ربط هرگز اثری نمی‌گذارد و خود متن هم هیچ‌گاه در نتیجه‌ها ظاهر نمی‌شود.

فهرست «بعد از دو بار کپی چه اتفاقی بیفتد».

  • پرامپت‌های از پیش نصب‌شده را می‌توان باز کرد و خواند — همان‌ها نمونه‌های کارشده هم هستند.
  • ساختن یک پرامپت جدید چیزی جز یک نام و شرح کاری که می‌خواهید لازم ندارد. مثال: نام «خلاصهٔ ۳ خطی»، دستور «در ۳ خط خلاصه کن».
  • به نوشتن دستور مطمئن نیستید؟ خواسته‌تان را سرسری بنویسید و پیش‌نویس با هوش مصنوعی را فشار دهید — هوش مصنوعی پیکربندی‌شده‌تان آن را به دستوری درست‌وحسابی تبدیل می‌کند.
  • قوانین اجازه می‌دهد برای هر نوع محتوا (متن / تصویر / فایل‌ها) پرامپت جداگانه‌ای انتخاب کنید.

پرامپت‌هایی که می‌سازید قابل هم‌رسانی‌اند: برون‌بری آن را به‌صورت یک فایل می‌نویسد و گیرنده کافی است آن را در درون‌ریزی بچسباند یا فایل را انتخاب کند.

ترجیح می‌دهید کل کار را به یک هوش مصنوعی بسپارید؟ هر چت هوش مصنوعی می‌تواند یک پرامپت آماده برای وارد کردن برای شما بنویسد — این را جای‌گذاری کنید و جای خالی را پر کنید:

آدرس https://zencopy.app/llms-full.txt را بخوانید — مستندات کامل ZenCopy، شامل فرمت فایل پرامپت، متغیرهای الگو و نحوه کارکرد قوانین. سپس یک پرامپت ZenCopy بنویسید که کار زیر را انجام دهد: [آنچه می‌خواهید]. یک فایل پرامپت کامل (Markdown همراه با frontmatter) را در یک بلوک کد واحد خروجی دهید، آماده برای جای‌گذاری در تنظیمات ← پرامپت‌ها ← وارد کردن در ZenCopy. اگر پرامپت فقط در یک برنامه خاص یا در یک سایت خاص منطقی است، یک جمله اضافه کنید و به من بگویید کدام قانون را تنظیم کنم.

بلوک کد موجود در پاسخ مستقیماً به تنظیمات ← پرامپت‌ها ← وارد کردن می‌رود. برای سوالاتی که مستندات نمی‌توانند به آن‌ها پاسخ دهند («آیا ZenCopy اصلاً می‌تواند…؟»)، با یک کلیک سورس مربوطه بسته‌بندی می‌شود — نتیجه را به همان هوش مصنوعی بدهید.

فایل‌های پیکربندی (برای کاربران حرفه‌ای)

Section titled “فایل‌های پیکربندی (برای کاربران حرفه‌ای)”

از این‌جا به بعد، صحبت از ویرایش مستقیم فایل‌های متنی است. هر چیز ضروری از پنجرهٔ تنظیمات در دسترس است، پس اگر مایل نیستید، همین‌جا خواندن را متوقف کنید.

فایل‌ها از پوشهٔ پیکربندی برنامه، مخصوص هر کاربر، خوانده می‌شوند. مسیر دقیق هنگام راه‌اندازی در گزارش هم چاپ می‌شود:

%APPDATA%\app.zencopy

پیش‌فرض‌های قوانین درون خود برنامه تعبیه شده‌اند؛ rules.json همیشه فقط آن‌ها را بازنویسی می‌کند. فایل‌های پرامپت افزودنی‌اند: پرامپت‌های جدید تعریف می‌کنند و پرامپت‌های داخلی دست‌نخوردنی می‌مانند (فایل محلی‌ای که id یک پرامپت داخلی را ادعا کند نادیده گرفته می‌شود). ویرایش‌ها از راه‌اندازِ بعدی اعمال می‌شوند — نیازی به راه‌اندازی دوباره نیست.

ارائه‌دهنده‌ها به‌علاوهٔ نگاشت role ← مدل. خانهٔ اصلی این قالب فایل ai-sdk-catalog است — تمام فیلدها آن‌جا مستند شده‌اند (از جمله یک $schema برای اعتبارسنجی و تکمیل خودکار در ویرایشگر) و در examples/ پیکربندی‌هایی در سه اندازه آماده است. برای نقطه‌های شروع مخصوص ZenCopy (آنچه رابط تنظیمات می‌نویسد، Ollama محلی، role برای پرامپت‌ها) نمونه‌های آماده را ببینید.

یک الزام از خود ZenCopy است، نه از قالب فایل: roles باید همیشه شامل default باشد. هر پرامپتی که در frontmatter خود role دیگری مشخص نکرده باشد با آن اجرا می‌شود و آزمون اتصال در تنظیمات نیز به آن ping می‌فرستد.

کلیدهای API مستقیماً در همین فایل محلی نوشته می‌شوند (رابط تنظیمات هم همین قالب را می‌نویسد)؛ هرگز از دستگاه شما بیرون نمی‌روند. متغیرهای محیطی خوانده نمی‌شوند — برنامه‌های گرافیکی را سیستم‌عامل اجرا می‌کند نه شل شما، پس متغیرهایی که در .zshrc و مانند آن export شده‌اند اصلاً به آن‌ها نمی‌رسند. این فایل در هر بار خواندن با schema اعتبارسنجی می‌شود. یک ویرایش خراب، به‌صورت پیامی روشن در پنجرهٔ بازشو و ویرایشگر تنظیمات ظاهر می‌شود — هیچ چیزی بی‌صدا شکست نمی‌خورد.

کدام پرامپت کدام نوع برداشت را پردازش کند: یک نگاشت ساده و مسطح از 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 (همگی با پشتیبانی wildcard یعنی *)، ‏file_name (یک الگو با wildcard که نام هر فایل کپی‌شده باید با آن مطابقت داشته باشد، بدون حساسیت به بزرگی و کوچکی حروف — مثلاً *.pdf)، به‌علاوهٔ min_chars / max_chars.

در برداشت‌های image و files، خود محتوا به مدل فرستاده می‌شود (در هر برداشت جمعاً تا ۱۰ مگابایت). نوع فایل از محتوا تشخیص داده می‌شود، نه از نام: تصویرها، 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‏role کاتالوگ برای اجرا (پیش‌فرض: 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 }}fa

یک فیلتر مخصوص ZenCopy به نام language_name هم هست: ‏{{ locale | language_name }} به‌جای «fa» به «Persian» بسط می‌یابد که در یک پرامپت طبیعی‌تر خوانده می‌شود. برای دیدن مقدارهای واقعی، نمایش متغیرهای قالب را در تنظیمات فعال کنید — متغیرهای هر برداشت به‌صورت JSON در پنجرهٔ بازشو ظاهر می‌شوند.

پرامپت‌های ساده (یک نام و یک دستور) از پنجرهٔ تنظیمات هم ساخته می‌شوند؛ آنچه می‌نویسد دقیقاً همین قالب فایل است.

هم frontmatter مربوط به instructions و هم بدنه، قالب کامل LiquidJS هستند: شرط‌ها، حلقه‌ها و فیلترها همگی کار می‌کنند. یک پرامپت به‌تنهایی می‌تواند خود را با جایی که کپی از آن آمده تطبیق دهد:

---
id: context-aware
label: متناسب با بافت
---
{% if url contains "github.com" %}
این کد را بازبینی کن و بزرگ‌ترین ریسک آن را در یک مورد بگو:
{% elsif app_name == "Slack" %}
این رشته‌گفتگو را در ۲ خط خلاصه کن:
{% else %}
این را به زبان {{ locale }} توضیح بده:
{% endif %}
{{ text | truncate: 8000 }}

گزارش‌های ساخت‌یافته (اطلاعات محرمانه و محتوای کپی‌شده حذف می‌شوند) در حالت dev به ترمینال و در نسخهٔ release به فایلی چرخشی نوشته می‌شوند:

%LOCALAPPDATA%\app.zencopy\logs