- استفاده از Hermes
- رابط CLI
رابط 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..."
# خودتان اضافه کنید!
ورودی چندخطی
دو روش برای وارد کردن پیامهای چندخطی وجود دارد:
Alt+Enter،Ctrl+JیاShift+Enter— یک خط جدید درج میکند- ادامه با 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 مستقیماً برای خط جدید استفاده کنید.
قطع عامل
میتوانید در هر لحظه عامل را قطع کنید:
- یک پیام جدید + Enter تایپ کنید در حالی که عامل در حال کار است — آن را قطع میکند و دستورالعملهای جدید شما را پردازش میکند
Ctrl+C— عملیات فعلی را قطع کنید (دو بار در عرض 2 ثانیه فشار دهید تا اجبار خروج شود)- دستورات ترمینال در حال اجرا فوراً کشته میشوند (SIGTERM، سپس پس از 1 ثانیه SIGKILL)
- پیامهای متعدد تایپ شده در حین قطع در یک درخواست ترکیب میشوند
حالت ورودی اشغال
کلید پیکربندی 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 ذخیره میشوند. پایگاه داده نگهداری میکند:
- فراداده نشست (ID، عنوان، مهرهای زمانی، شمارندههای توکن)
- تاریخچه پیامها
- lineage در نشستهای فشرده شده/بازیابی شده
- فهرستهای جستجوی متن کامل که توسط
session_searchاستفاده میشوند
برخی از 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 ایجاد میکند:
- مکالمه جداگانه — عامل پسزمینه هیچ دانشی از تاریخچه نشست فعلی شما ندارد. فقط درخواستی که ارائه میدهید را دریافت میکند.
- پیکربندی یکسان — عامل پسزمینه مدل، ارائهدهنده، مجموعه ابزارها، تنظیمات استدلال و مدل fallback شما را از نشست فعلی به ارث میبرد.
- غیرمسدود — نشست پیشزمینه شما کاملاً تعاملی باقی میماند. میتوانید چت کنید، دستورات اجرا کنید یا حتی وظایف پسزمینه بیشتری شروع کنید.
- وظایف متعدد — میتوانید چندین وظیفه پسزمینه را همزمان اجرا کنید. هر کدام یک ID شمارهگذاری شده دریافت میکند.
نتایج
هنگامی که یک وظیفه پسزمینه تمام میشود، نتیجه به صورت یک پنل در ترمینال شما ظاهر میشود:
╭─ ⚕ 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 در تنظیمات فعال باشد، زنگ ترمینال هنگام اتمام وظیفه به صدا در میآید.
موارد استفاده
- تحقیق طولانیمدت — “/background research the latest developments in quantum error correction” در حالی که روی کد کار میکنید
- پردازش فایل — “/background analyze all Python files in this repo and list any security issues” در حالی که یک مکالمه را ادامه میدهید
- تحقیقات موازی — چندین وظیفه پسزمینه شروع کنید تا زوایای مختلف را همزمان بررسی کنید
نشستهای پسزمینه در تاریخچه مکالمه اصلی شما ظاهر نمیشوند. آنها نشستهای مستقل با شناسه وظیفه خاص خود (مثلاً bg_143022_a1b2c3) هستند.
حالت ساکت
به طور پیشفرض، CLI در حالت ساکت اجرا میشود که:
- لاگهای verbose ابزارها را سرکوب میکند
- بازخورد متحرک سبک kawaii را فعال میکند
- خروجی را تمیز و کاربرپسند نگه میدارد
برای خروجی دیباگ:
hermes chat --verbose