رابط CLI

CLI Hermes Agent یک رابط کاربری متنی کامل (TUI) است — نه یک رابط وب. ویژگی‌های آن شامل ویرایش چندخطی، تکمیل خودکار دستورات اسلش، تاریخچه مکالمه، قطع و هدایت مجدد، و خروجی ابزار پخش است. برای افرادی ساخته شده که در ترمینال زندگی می‌کنند.

یک دستور — hermes setup --portal — و آماده hermes chat هستید. Nous Portal را ببینید.

hermes setup --portal hermes chat Nous Portal

Hermes همچنین یک TUI مدرن با پوشش‌های modal، انتخاب ماوس و ورودی غیرمسدود ارائه می‌دهد. آن را با hermes --tui راه‌اندازی کنید — راهنمای TUI را ببینید.

hermes --tui TUI

اجرای CLI

# شروع یک نشست تعاملی (پیش‌فرض)
hermes
# حالت query تکی (غیرتعاملی)
hermes chat -q "Hello"
# با یک مدل خاص
hermes chat --model "anthropic/claude-sonnet-4"
# با یک ارائه‌دهنده خاص
hermes chat --provider nous        # استفاده از Nous Portal
hermes chat --provider openrouter  # اجبار OpenRouter
# با مجموعه ابزارهای خاص
hermes chat --toolsets "web,terminal,skills"
# شروع با یک یا چند مهارت پیش‌بارگذاری شده
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -q "open a draft PR"
# ادامه نشست‌های قبلی
hermes --continue             # ادامه آخرین نشست CLI (-c)
hermes --resume <session_id>  # ادامه یک نشست خاص بر اساس ID (-r)
# حالت verbose (خروجی دیباگ)
hermes chat --verbose
# Git worktree جداگانه (برای اجرای همزمان چندین عامل)
hermes -w                         # حالت تعاملی در worktree
hermes -w -z "Fix issue #123"     # query تکی در worktree

لایه‌بندی رابط

بنر CLI Hermes، جریان مکالمه و درخواست ورودی ثابت به جای متن هنری شکننده به صورت یک تصویر docs پایدار رندر می‌شوند.

بنر خوش‌آمدگویی مدل، backend ترمینال، دایرکتوری کاری، ابزارهای موجود و مهارت‌های نصب شده را در یک نگاه نشان می‌دهد.

خط وضعیت

یک خط وضعیت پایدار بالای ناحیه ورودی قرار دارد و به صورت بلادرنگ به‌روز می‌شود:

 ⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
عنصر توضیح
نام مدل مدل فعلی (اگر بیش از 26 کاراکتر باشد بریده می‌شود)
تعداد توکن توکن‌های زمینه استفاده شده / حداکثر پنجره زمینه
نوار زمینه شاخص پر شدن بصری با آستانه‌های رنگی
هزینه هزینه تخمینی نشست (یا n/a برای مدل‌های ناشناخته/رایگان)
🗜️ N تعداد فشرده‌سازی زمینه — چند بار نشست در حال اجرا به طور خودکار فشرده شده است. پس از اولین فشرده‌سازی ظاهر می‌شود.
▶ N وظایف پس‌زمینه فعال — چند وظیفه /background هنوز در نشست فعلی در حال اجرا هستند. هنگامی که حداقل یک وظیفه در حال اجرا است ظاهر می‌شود.
مدت زمان زمان سپری شده نشست
⚠ YOLO هشدار حالت YOLO — هنگامی که HERMES_YOLO_MODE فعال است نمایش داده می‌شود (چه hermes --yolo در راه‌اندازی چه /yolo در حین نشست). هشدار خط بنر را بازتاب می‌دهد تا فراموش نکنید در حالت تأیید خودکار هستید.

نوار بر عرض ترمینال تطبیق می‌یابد — لایه‌بندی کامل در ≥ 76 ستون، فشرده در 52–75، حداقل (مدل + مدت زمان، به اضافه نشان YOLO هنگام فعال بودن) زیر 52.

رنگ‌بندی زمینه:

رنگ آستانه معنی
سبز < 50% فضای زیاد
زرد 50–80% در حال پر شدن
نارنجی 80–95% نزدیک محدوده
قرمز ≥ 95% نزدیک سرریز — /compress را در نظر بگیرید

/compress

از /usage برای تفکیک جزئیات شامل هزینه‌ها به ازای هر دسته (توکن‌های ورودی در مقابل خروجی) استفاده کنید.

/usage

نمایش بازیابی نشست

هنگام بازیابی یک نشست قبلی (hermes -c یا hermes --resume <id>)، یک پنل “مکالمه قبلی” بین بنر و درخواست ورودی ظاهر می‌شود و خلاصه فشرده‌ای از تاریخچه مکالمه را نشان می‌دهد. جزئیات و پیکربندی را در Sessions — Conversation Recap on Resume ببینید.

hermes -c hermes --resume <id> Sessions — Conversation Recap on Resume

میانبرهای صفحه‌کلید

کلید عمل
Enter ارسال پیام
Alt+Enter، Ctrl+J یا Shift+Enter خط جدید (ورودی چندخطی). Shift+Enter نیاز به ترمینالی دارد که آن را از Enter متمایز کند — در زیر ببینید. در Windows Terminal، Alt+Enter توسط ترمینال ثبت می‌شود (تغییر حالت تمام صفحه)؛ از Ctrl+Enter یا Ctrl+J به جای آن استفاده کنید.
Alt+V چسباندن تصویر از کلیپ‌بورد وقتی ترمینال پشتیبانی می‌کند
Ctrl+V چسباندن متن و به طور فرصت‌طلبانه پیوست تصاویر کلیپ‌بورد
Ctrl+B شروع/توقف ضبط صدا وقتی حالت صدا فعال است (voice.record_key، پیش‌فرض: ctrl+b)
Ctrl+G باز کردن بافر ورودی فعلی در $EDITOR (vim/nvim/nano/VS Code و غیره). ذخیره و خروج برای ارسال متن ویرایش شده به عنوان درخواست بعدی — ایده‌آل برای درخواست‌های طولانی چندپاراگرافی.
Ctrl+X Ctrl+E اتصال جایگزین سبک Emacs برای ویرایشگر خارجی (رفتار مشابه Ctrl+G).
Ctrl+C قطع عامل (دو فشار در عرض 2 ثانیه برای اجبار خروج)
Ctrl+D خروج
Ctrl+Z تعلیق Hermes به پس‌زمینه (فقط Unix). fg را در shell اجرا کنید تا ادامه یابد.
Tab پذیرش پیشنهاد خودکار (متن شبح) یا تکمیل خودکار دستورات اسلش

پیش‌نمایش چسباندن چندخطی

هنگامی که یک بلوک چندخطی می‌چسبانید، CLI یک پیش‌نمایش فشرده تک‌خطی منعکس می‌کند ([pasted: 47 lines, 1,842 chars — press Enter to send]) به جای ریختن کل محتوا در scrollback. محتوای کامل همان چیزی است که ارسال می‌شود؛ این فقط صیقل نمایشی است.

حذف Markdown در پاسخ‌های نهایی

CLI حصارکشی‌های verbose markdown و بسته‌بندی‌های **bold**/*italic* را از پاسخ‌های نهایی عامل حذف می‌کند تا به جای سورس خام به صورت متن ترمینال خوانا رندر شوند. بلوک‌های کد و لیست‌ها حفظ می‌شوند. این بر پلتفرم‌های gateway یا نتایج ابزار تأثیر نمی‌گذارد — آن‌ها markdown خود را برای رندر بومی حفظ می‌کنند.

**bold** *italic*

دستورات اسلش

/ را تایپ کنید تا لیست کشویی تکمیل خودکار نمایش داده شود. Hermes مجموعه بزرگی از دستورات اسلش CLI، دستورات مهارت پویا و دستورات سریع تعریف شده توسط کاربر را پشتیبانی می‌کند.

نمونه‌های رایج:

دستور توضیح
/help نمایش راهنمای دستورات
/model نمایش یا تغییر مدل فعلی
/tools فهرست ابزارهای موجود فعلی
/skills browse مرور هاب مهارت‌ها و مهارت‌های اختیاری رسمی
/background اجرای یک درخواست در یک نشست پس‌زمینه جداگانه
/skin نمایش یا تعویض اسکین فعال CLI
/voice on فعال‌سازی حالت صدای CLI (Ctrl+B برای ضبط)
/voice tts تغییر پخش گفتاری برای پاسخ‌های Hermes
/reasoning high افزایش تلاش استدلال
/title My Session نام‌گذاری نشست فعلی
/status نمایش اطلاعات نشست — مدل/پروفایل/توکن‌ها/مدت زمان — به همراه بلوک خلاصه نشست محلی (شمارش نوبت‌های اخیر، ابزارهای پرکاربرد، فایل‌های لمس شده، آخرین درخواست کاربر + پاسخ دستیار). محاسبه محلی خالص؛ بدون فراخوانی LLM.
/sessions باز کردن یک انتخابگر نشست تعاملی درست در CLI کلاسیک (همان سطحی که TUI استفاده می‌کند). برای فیلتر تایپ کنید، کلیدهای جهت‌نما برای پیمایش، Enter برای بازیابی.

برای فهرست کامل CLI داخلی و پیام‌رسانی، مرجع دستورات اسلش را ببینید.

مرجع دستورات اسلش

برای راه‌اندازی، ارائه‌دهندگان، تنظیم سکوت و استفاده از صدای پیام‌رسانی/Discord، حالت صدا را ببینید.

حالت صدا

دستورات حساس به حروف نیستند — /HELP دقیقاً مانند /help کار می‌کند. مهارت‌های نصب شده نیز به طور خودکار به دستورات اسلش تبدیل می‌شوند.

دستورات سریع

می‌توانید دستورات سفارشی تعریف کنید که دستورات shell را بدون فراخوانی LLM فوراً اجرا می‌کنند. این‌ها هم در CLI و هم در پلتفرم‌های پیام‌رسانی (Telegram، Discord و غیره) کار می‌کنند.

# ~/.hermes/config.yaml
quick_commands:
  status:
    type: exec
    command: systemctl status hermes-agent
  gpu:
    type: exec
    command: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader
  restart:
    type: alias
    target: /gateway restart

سپس /status، /gpu یا /restart را در هر چت تایپ کنید. نمونه‌های بیشتر را در راهنمای پیکربندی ببینید.

راهنمای پیکربندی

پیش‌بارگذاری مهارت‌ها در راه‌اندازی

اگر از قبل می‌دانید کدام مهارت‌ها را برای نشست فعال می‌خواهید، آن‌ها را در زمان راه‌اندازی ارسال کنید:

hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -s github-auth

Hermes هر مهارت نام‌گذاری شده را قبل از اولین نوبت در درخواست نشست بارگذاری می‌کند. همان پرچم در حالت تعاملی و query تکی کار می‌کند.

دستورات اسلش مهارت

هر مهارت نصب شده در ~/.hermes/skills/ به طور خودکار به عنوان یک دستور اسلش ثبت می‌شود. نام مهارت به دستور تبدیل می‌شود:

~/.hermes/skills/

/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
# فقط نام مهارت آن را بارگذاری می‌کند و به عامل اجازه می‌دهد بپرسد چه نیاز دارید:
/excalidraw

شخصیت‌ها

یک شخصیت از پیش تعریف شده تنظیم کنید تا لحن عامل را تغییر دهید:

/personality pirate
/personality kawaii
/personality concise

شخصیت‌های داخلی شامل: helpful، concise، technical، creative، teacher، kawaii، catgirl، pirate، shakespeare، surfer، noir، uwu، philosopher، hype هستند.

همچنین می‌توانید شخصیت‌های سفارشی در ~/.hermes/config.yaml تعریف کنید:

personalities:
  helpful: "You are a helpful, friendly AI assistant."
  kawaii: "You are a kawaii assistant! Use cute expressions..."
  pirate: "Arrr! Ye be talkin' to Captain Hermes..."
  # خودتان اضافه کنید!

ورودی چندخطی

دو روش برای وارد کردن پیام‌های چندخطی وجود دارد:

  1. Alt+Enter، Ctrl+J یا Shift+Enter — یک خط جدید درج می‌کند
  2. ادامه با backslash — خطی را با \ پایان دهید تا ادامه یابد:
❯ Write a function that:\
  1. Takes a list of numbers\
  2. Returns the sum

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

سازگاری Shift+Enter

بیشتر ترمینال‌ها به طور پیش‌فرض همان دنباله بایت را برای Enter و Shift+Enter ارسال می‌کنند، بنابراین برنامه‌ها نمی‌توانند آن‌ها را متمایز کنند. Hermes فقط Shift+Enter را زمانی تشخیص می‌دهد که ترمینال یک دنباله متمایز از طریق پروتکل صفحه‌کلید Kitty یا حالت modifyOtherKeys xterm ارسال کند.

ترمینال وضعیت
Kitty، foot، WezTerm، Ghostty Shift+Enter متمایز به طور پیش‌فرض فعال
iTerm2 (اخیر)، Alacritty، ترمینال VS Code، Warp پشتیبانی می‌شود وقتی پروتکل Kitty در تنظیمات فعال شود
Windows Terminal Preview 1.25+ پشتیبانی می‌شود وقتی پروتکل Kitty در تنظیمات فعال شود
macOS Terminal.app، Windows Terminal پایدار پشتیبانی نمی‌شود — Shift+Enter از Enter غیرقابل تشخیص است

جایی که ترمینال نمی‌تواند آن‌ها را متمایز کند، Alt+Enter و Ctrl+J همچنان همه جا کار می‌کنند. به طور خاص در Windows Terminal، Alt+Enter توسط ترمینال ثبت می‌شود (تمام صفحه را تغییر می‌دهد) و هرگز به Hermes نمی‌رسد — از Ctrl+Enter (به عنوان Ctrl+J ارسال می‌شود) یا Ctrl+J مستقیماً برای خط جدید استفاده کنید.

قطع عامل

می‌توانید در هر لحظه عامل را قطع کنید:

حالت ورودی اشغال

کلید پیکربندی display.busy_input_mode کنترل می‌کند وقتی Enter را در حین کار عامل فشار می‌دهید چه اتفاقی می‌افتد:

حالت رفتار
“interrupt” (پیش‌فرض) پیام شما عملیات فعلی را قطع می‌کند و فوراً پردازش می‌شود
“queue” پیام شما به طور خاموش در صف قرار می‌گیرد و پس از اتمام عامل به عنوان نوبت بعدی ارسال می‌شود
“steer” پیام شما از طریق /steer به اجرای فعلی تزریق می‌شود و پس از فراخوانی بعدی به عامل می‌رسد — بدون قطع، بدون نوبت جدید
# ~/.hermes/config.yaml
display:
  busy_input_mode: "steer"   # یا "queue" یا "interrupt" (پیش‌فرض)

حالت “queue” زمانی مفید است که می‌خواهید پیام‌های پیگیری را بدون لغو تصادفی کار در حال انجام آماده کنید. حالت “steer” زمانی مفید است که می‌خواهید عامل را بدون قطع در حین اجرای وظیفه هدایت کنید — مثلاً “در واقع، تست‌ها را هم بررسی کن” در حالی که هنوز در حال ویرایش کد است. مقادیر ناشناخته به “interrupt” بازمی‌گردند.

“steer” دو fallback خودکار دارد: اگر عامل هنوز شروع نکرده، یا اگر تصاویر پیوست شده باشند، پیام به رفتار “queue” بازمی‌گردد تا چیزی از دست نرود.

همچنین می‌توانید آن را در CLI تغییر دهید:

/busy queue
/busy steer
/busy interrupt
/busy status

اولین باری که Enter را در حالی که Hermes در حال کار است فشار می‌دهید، Hermes یک یادآوری یک‌خطی چاپ می‌کند که دکمه /busy را توضیح می‌دهد (“(tip) Your message interrupted the current run…”). فقط یک بار در هر نصب فعال می‌شود — یک پرچم در config.yaml زیر onboarding.seen.busy_input_prompt آن را قفل می‌کند. آن کلید را حذف کنید تا نکته را دوباره ببینید.

تعلیق به پس‌زمینه

در سیستم‌های Unix، Ctrl+Z را فشار دهید تا Hermes را به پس‌زمینه تعلیق دهید — دقیقاً مانند هر فرآیند ترمینالی. Shell تأییدی چاپ می‌کند:

Hermes Agent has been suspended. Run `fg` to bring Hermes Agent back.

fg را در shell خود تایپ کنید تا نشست دقیقاً از جایی که متوقف شدید ادامه یابد. این در Windows پشتیبانی نمی‌شود.

نمایش پیشرفت ابزار

CLI بازخورد متحرک را در حین کار عامل نشان می‌دهد:

انیمیشن فکر کردن (در حین فراخوانی‌های API):

  ◜ (。•́︿•̀。) pondering... (1.2s)
  ◠ (⊙_⊙) contemplating... (2.4s)
  ✧٩(ˊᗜˋ*)و✧ got it! (3.1s)

فید اجرای ابزار:

  ┊ 💻 terminal `ls -la` (0.3s)
  ┊ 🔍 web_search (1.2s)
  ┊ 📄 web_extract (2.1s)

با /verbose بین حالت‌های نمایش چرخش کنید: off → new → all → verbose. این دستور همچنین می‌تواند برای پلتفرم‌های پیام‌رسانی فعال شود — پیکربندی را ببینید.

پیکربندی

طول پیش‌نمایش ابزار

کلید پیکربندی display.tool_preview_length حداکثر تعداد کاراکترهای نمایش داده شده در خطوط پیش‌نمایش فراخوانی ابزار (مثلاً مسیرهای فایل، دستورات ترمینال) را کنترل می‌کند. پیش‌فرض 0 است، به این معنی که محدودیتی وجود ندارد — مسیرها و دستورات کامل نمایش داده می‌شوند.

# ~/.hermes/config.yaml
display:
  tool_preview_length: 80   # پیش‌نمایش ابزار را به 80 کاراکتر بریده کنید (0 = بدون محدودیت)

این در ترمینال‌های باریک یا وقتی آرگومان‌های ابزار شامل مسیرهای فایل بسیار طولانی هستند مفید است.

مدیریت نشست

بازیابی نشست‌ها

هنگام خروج از یک نشست CLI، یک دستور بازیابی چاپ می‌شود:

Resume this session with:  hermes --resume 20260225_143052_a1b2c3
Session:        20260225_143052_a1b2c3
Duration:       12m 34s
Messages:       28 (5 user, 18 tool calls)

گزینه‌های بازیابی:

hermes --continue                          # ادامه آخرین نشست CLI
hermes -c                                  # شکل کوتاه
hermes -c "my project"                     # ادامه یک نشست نام‌گذاری شده (آخرین در lineage)
hermes --resume 20260225_143052_a1b2c3     # ادامه یک نشست خاص بر اساس ID
hermes --resume "refactoring auth"         # بازیابی بر اساس عنوان
hermes -r 20260225_143052_a1b2c3           # شکل کوتاه

بازیابی تاریخچه کامل مکالمه را از SQLite بازیابی می‌کند. عامل تمام پیام‌های قبلی، فراخوانی‌های ابزار و پاسخ‌ها را می‌بیند — دقیقاً مانند اینکه هرگز نرفته باشید.

از /title My Session Name در داخل چت برای نام‌گذاری نشست فعلی، یا hermes sessions rename <id> <title> از خط فرمان استفاده کنید. از hermes sessions list برای مرور نشست‌های گذشته استفاده کنید.

ذخیره‌سازی نشست

نشست‌های CLI در پایگاه داده SQLite وضعیت Hermes در ~/.hermes/state.db ذخیره می‌شوند. پایگاه داده نگهداری می‌کند:

برخی از adapterهای پیام‌رسانی همچنین فایل‌های رونوشت به ازای هر پلتفرم را در کنار پایگاه داده نگهداری می‌کنند، اما خود CLI از فروشگاه نشست SQLite بازیابی می‌کند.

فشرده‌سازی زمینه

مکالمات طولانی هنگام نزدیک شدن به محدودیت‌های زمینه به طور خودکار خلاصه می‌شوند:

# در ~/.hermes/config.yaml
compression:
  enabled: true
  threshold: 0.50    # به طور پیش‌فرض در 50% محدودیت زمینه فشرده کنید
# مدل خلاصه‌سازی در auxiliary پیکربندی می‌شود:
auxiliary:
  compression:
    model: ""  # خالی بگذارید تا از مدل چت اصلی استفاده شود (پیش‌فرض). یا یک مدل ارزان سریع ثابت کنید، مثلاً "google/gemini-3-flash-preview".

هنگامی که فشرده‌سازی فعال می‌شود، نوبت‌های میانی خلاصه می‌شوند در حالی که 3 نوبت اول و 20 نوبت آخر همیشه حفظ می‌شوند.

نشست‌های پس‌زمینه

یک درخواست را در یک نشست پس‌زمینه جداگانه اجرا کنید در حالی که به استفاده از CLI برای کارهای دیگر ادامه می‌دهید:

/background Analyze the logs in /var/log and summarize any errors from today

Hermes فوراً وظیفه را تأیید می‌کند و درخواست را به شما بازمی‌گرداند:

🔄 Background task #1 started: "Analyze the logs in /var/log and summarize..."
   Task ID: bg_143022_a1b2c3

نحوه عملکرد

هر درخواست /background یک نشست عامل کاملاً جداگانه را در یک نخ daemon ایجاد می‌کند:

نتایج

هنگامی که یک وظیفه پس‌زمینه تمام می‌شود، نتیجه به صورت یک پنل در ترمینال شما ظاهر می‌شود:

╭─ ⚕ Hermes (background #1) ──────────────────────────────────╮
│ Found 3 errors in syslog from today:                         │
│ 1. OOM killer invoked at 03:22 — killed process nginx        │
│ 2. Disk I/O error on /dev/sda1 at 07:15                      │
│ 3. Failed SSH login attempts from 192.168.1.50 at 14:30      │
╰──────────────────────────────────────────────────────────────╯

اگر وظیفه خطا دهد، به جای آن اعلان خطا مشاهده خواهید کرد. اگر display.bell_on_complete در تنظیمات فعال باشد، زنگ ترمینال هنگام اتمام وظیفه به صدا در می‌آید.

موارد استفاده

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

حالت ساکت

به طور پیش‌فرض، CLI در حالت ساکت اجرا می‌شود که:

برای خروجی دیباگ:

hermes chat --verbose

ویرایش این صفحه