TUI

TUI رابط مدرن Hermes است — یک رابط متنی مبتنی بر همان Runtime پایتونی که CLI کلاسیک از آن استفاده می‌کند. همان عامل، همان نشست‌ها، همان دستورات اسلش؛ رابطی تمیزتر و پاسخگوتر برای تعامل با آن‌ها.

CLI کلاسیک

روش پیشنهادی برای اجرای تعاملی Hermes است.

راه‌اندازی

# راه‌اندازی TUI
hermes --tui
# ادامه آخرین نشست TUI (به آخرین نشست کلاسیک بازمی‌گردد)
hermes --tui -c
hermes --tui --continue
# ادامه یک نشست خاص بر اساس ID یا عنوان
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"
# اجرای مستقیم از سورس — مرحله پیش‌ساخت را رد می‌کند (برای مشارکت‌کنندگان TUI)
hermes --tui --dev

همچنین می‌توانید آن را از طریق متغیر محیطی فعال کنید:

export HERMES_TUI=1
hermes          # حالا از TUI استفاده می‌کند
hermes chat     # یکسان

یا آن را به عنوان پیش‌فرض پایدار در ~/.hermes/config.yaml تنظیم کنید:

display:
  interface: tui   # "cli" (پیش‌فرض) یا "tui"

با display.interface: tui، یک hermes ساده (و hermes chat) TUI را راه‌اندازی می‌کند. پرچم‌های صریح همیشه اولویت دارند — hermes --cli را برای بازگشت به REPL کلاسیک در یک فراخوانی اجرا کنید، یا hermes --tui / HERMES_TUI=1 برای اجبار TUI وقتی پیش‌فرض تنظیمات cli است.

CLI کلاسیک همچنان پیش‌فرض ارسال شده است. هر چیزی که در رابط CLI مستند شده — دستورات اسلش، دستورات سریع، پیش‌بارگذاری مهارت‌ها، شخصیت‌ها، ورودی چندخطی، وقفه‌ها — به یک شکل در TUI کار می‌کند.

رابط CLI

چرا TUI

skins و personalities یکسانی اعمال می‌شوند. در حین نشست با /skin ares، /personality pirate تعویض کنید و رابط کاربری فوراً بازرندر می‌شود. لیست کامل کلیدهای قابل تنظیم و اینکه کدام‌ها برای کلاسیک در مقابل TUI اعمال می‌شوند را در Skins & Themes ببینید — TUI پالت بنر، رنگ‌های رابط کاربری، گلیف/رنگ درخواست، نمایش نشست، منوی تکمیل خودکار، پس‌زمینه انتخاب، tool_prefix و help_header را رعایت می‌کند.

skins personalities Skins & Themes

بخش‌های قابل جمع‌بندی بنر

بنر راه‌اندازی TUI اطلاعات Runtime را در چهار بخش قابل جمع‌بندی گروه‌بندی می‌کند، هر کدام با یک / در کنار عنوان بخش رندر می‌شوند:

بخش حالت پیش‌فرض
ابزارها باز
مهارت‌ها جمع‌شده
درخواست سیستم جمع‌شده
سرورهای MCP جمع‌شده

روی هر نقطه‌ای از عنوان بخش (یا / آن) کلیک کنید تا آن را تغییر دهید. لیست ابزارها به طور پیش‌فرض باز است زیرا بخشی است که بیشترین بررسی را در شروع نشست دارد؛ مهارت‌ها، درخواست سیستم و سرورهای MCP به طور پیش‌فرض جمع می‌شوند تا بنر حتی وقتی ده‌ها مهارت نصب کرده‌اید یا سرورهای MCP زیادی متصل کرده‌اید فشرده بماند. حالت مربوط به نمونه بنر محلی است، بنابراین راه‌اندازی بعدی به پیش‌فرض‌ها بازمی‌گردد.

پیش‌نیازها

hermes doctor

در اولین راه‌اندازی Hermes وابستگی‌های Node TUI را در ui-tui/node_modules نصب می‌کند (یک‌باره، چند ثانیه). راه‌اندازی‌های بعدی سریع هستند. اگر نسخه جدید Hermes را بکشید، بسته TUI هنگامی که سورس‌ها جدیدتر از dist هستند به طور خودکار بازساخته می‌شود.

ui-tui/node_modules

پیش‌ساخت خارجی

توزیع‌هایی که بسته پیش‌ساخت شده ارائه می‌دهند (Nix، بسته‌های سیستم) می‌توانند Hermes را به آن اشاره دهند:

export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --tui

پوشه باید dist/entry.js را شامل شود.

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

میانبرهای صفحه‌کلید دقیقاً با CLI کلاسیک مطابقت دارند. تنها تفاوت‌های رفتاری:

/terminal-setup

دستورات اسلش

همه دستورات اسلش بدون تغییر کار می‌کنند. چند مورد متعلق به TUI هستند — خروجی غنی‌تری تولید می‌کنند یا به جای پنل‌های درون‌خطی به صورت پوشش رندر می‌شوند:

دستور رفتار TUI
/help پوشش با دستورات دسته‌بندی شده، قابل پیمایش با کلیدهای جهت‌نما
/sessions (یا /switch) سوئیچگر نشست زنده — لیست نشست‌های باز TUI، تعویض بین آن‌ها، بستن آن‌ها، یا شروع یکی دیگر
/model انتخابگر مدل مودال گروه‌بندی شده بر اساس ارائه‌دهنده، با نکات هزینه
/skin پیش‌نمایش زنده — تغییر موضوع در حین مرور اعمال می‌شود
/details تغییر جزئیات verbose فراخوانی ابزار (سراسری یا به ازای هر بخش)
/usage پنل غنی توکن / هزینه / زمینه
/agents (یا /tasks) پوشش قابلیت مشاهده — درخت subagent زنده با کنترل‌های kill/pause، خلاصه هزینه / توکن / فایل به ازای هر شاخه، تاریخچه نوبت به نوبت
/reload ~/.hermes/.env را دوباره در فرآیند TUI در حال اجرا می‌خواند تا کلیدهای API جدید اضافه شده بدون راه‌اندازی مجدد اعمال شوند
/mouse [on|off|toggle|wheel|buttons|all] یک پیش‌تنظیم ردیابی ماوس را در زمان اجرا انتخاب کنید (همچنین در display.mouse_tracking config.yaml ذخیره می‌شود). wheel (1000+1006) اسکرول چرخ اسکرول را بدون رویدادهای hover که باعث می‌شود tmux “No image in clipboard” را روی ردیف درخواست اسپم کند، حفظ می‌کند؛ buttons کشیدن برای انتخاب را اضافه می‌کند؛ all پیش‌فرض با رابط کاربری مبتنی بر hover است.

هر دستور اسلش دیگری (شامل مهارت‌های نصب شده، دستورات سریع و تغییردهنده‌های شخصیت) دقیقاً مانند CLI کلاسیک کار می‌کند. مرجع دستورات اسلش را ببینید.

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

سوئیچگر نشست زنده

از سوئیچگر نشست زنده استفاده کنید وقتی می‌خواهید یک ترمینال به عنوان ارسال‌کننده برای چندین نشست TUI عمل کند. فقط نشست‌هایی را فهرست می‌کند که در حال حاضر در این فرآیند TUI زنده هستند؛ نشست‌های بسته شده رونوشت‌های ذخیره شده باقی می‌مانند و همچنان قابل بازگشایی با /resume یا hermes --tui --resume <id-or-title> هستند.

آن را با هر یک از این روش‌ها باز کنید:

داخل سوئیچگر:

رندر ریاضی LaTeX

پایپلاین markdown TUI ریاضیات LaTeX را به صورت inline رندر می‌کند: $E = mc^2$ و $$\frac{a}{b}$$ به جای منبع TeX خام به صورت ریاضیات قالب‌بندی شده Unicode رندر می‌شوند. برای ریاضیات inline و block کار می‌کند؛ نحو پشتیبانی نشده به نمایش TeX تحت کد wrap شده بازمی‌گردد تا قابل کپی باشد.

این همیشه فعال است — چیزی برای پیکربندی وجود ندارد. CLI کلاسیک TeX خام را حفظ می‌کند.

تشخیص ترمینال روشن

TUI به طور خودکار ترمینال‌های روشن را تشخیص می‌دهد و مطابقاً به موضوع روشن تعویض می‌کند. تشخیص در سه لایه کار می‌کند:

  1. متغیر محیطی HERMES_TUI_THEME — بالاترین اولویت. مقادیر: light، dark، یا یک هگز پس‌زمینه ۶ کاراکتری خام (مثلاً ffffff، 1a1a2e).
  2. متغیر محیطی COLORFGBG — نکته کلاسیک “رنگ پس‌زمینه من چیست؟” که توسط ترمینال‌های مشتق از xterm استفاده می‌شود.
  3. کاوش پس‌زمینه ترمینال از طریق OSC 11 — روی ترمینال‌های مدرن (Ghostty، Warp، iTerm2، WezTerm، Kitty) کار می‌کند که COLORFGBG را تنظیم نمی‌کنند.

اگر می‌خواهید موضوع روشن را صرف نظر از ترمینال به طور دائم داشته باشید:

export HERMES_TUI_THEME=light

استایل‌های نشانگر اشغال

نشانگر اشغال خط وضعیت قابل اتصال است — پیش‌فرض پالت چهره کاوایی Hermes را هر ۲.۵ ثانیه در حین کار عامل می‌چرخاند. استایل متفاوتی را از طریق تنظیمات یا دستور /indicator انتخاب کنید:

display:
  tui_status_indicator: kaomoji   # kaomoji | emoji | unicode | ascii

یا در حین نشست: /indicator emoji و غیره. استایل‌ها با عرض گلیف‌های مطابق ارائه می‌شوند تا بقیه خط وضعیت هنگام چرخش تکان نخورد.

بازیابی خودکار

به طور پیش‌فرض، hermes --tui در هر راه‌اندازی یک نشست جدید شروع می‌کند. برای اتصال مجدد خودکار به آخرین نشست TUI (مفید وقتی ترمینال یا اتصال SSH شما به طور غیرمنتظره قطع می‌شود)، فعال کنید:

export HERMES_TUI_RESUME=1          # آخرین نشست TUI
# یا:
export HERMES_TUI_RESUME=<session-id>   # نشست خاص

متغیر را unset کنید یا به صورت صریح --resume <id> را برای override در هر راه‌اندازی ارسال کنید.

خط وضعیت

خط وضعیت TUI وضعیت عامل را به صورت بلادرنگ ردیابی می‌کند:

وضعیت معنی
starting agent… شناسه نشست زنده است؛ ابزارها و مهارت‌ها هنوز آنلاین می‌شوند. می‌توانید تایپ کنید — پیام‌ها در صف قرار می‌گیرند و هنگام آماده شدن ارسال می‌شوند.
ready عامل بیکار است، ورودی می‌پذیرد.
thinking…/running… عامل در حال استدلال یا اجرای یک ابزار است.
interrupted نوبت فعلی لغو شد؛ دوباره Enter را فشار دهید تا ارسال شود.
forging session…/resuming… اتصال اولیه یا handshake --resume.

رنگ‌ها و آستانه‌های خط وضعیت به ازای هر skin با CLI کلاسیک مشترک هستند — سفارشی‌سازی را در Skins ببینید.

Skins

خط وضعیت همچنین نمایش می‌دهد:

پیکربندی

TUI تمام پیکربندی استاندارد Hermes را رعایت می‌کند: ~/.hermes/config.yaml، پروفایل‌ها، شخصیت‌ها، اسکین‌ها، دستورات سریع، مجموعه اعتبارنامه‌ها، ارائه‌دهندگان حافظه، فعال‌سازی ابزار/مهارت. هیچ فایل پیکربندی مخصوص TUI وجود ندارد.

تعدادی کلید سطح TUI را به طور خاص تنظیم می‌کنند:

display:
  skin: default              # هر اسکین داخلی یا سفارشی
  personality: helpful
  details_mode: collapsed    # hidden | collapsed | expanded — پیش‌فرض آکاردئون سراسری
  sections:                  # اختیاری: override به ازای هر بخش (هر زیرمجموعه)
    thinking: expanded       # همیشه باز
    tools: expanded          # همیشه باز
    activity: collapsed      # مجدداً به پنل activity برگردید (پیش‌فرض: پنهان)
  mouse_tracking: all        # off | wheel | buttons | all (یا true/false برای سازگاری معکوس).
                             #   wheel   — 1000+1006 (اسکرول + کلیک؛ بدون کشیدن، بدون hover —
                             #             توصیه شده در داخل tmux برای ساکت کردن اسپم
                             #             "No image in clipboard" ردیف درخواست از رویدادهای hover)
                             #   buttons — 1002 برای انتخاب کشیدن سمت ترمینال اضافه می‌کند
                             #   all     — 1003 برای hover اضافه می‌کند (صفحه‌بندی اسکرول‌بار
                             #             با hover، link mouseenter و غیره)

تغییرات زمان اجرا:

پیش‌فرض نمایان بودن

TUI با پیش‌فرض‌های نظری به ازای هر بخش ارائه می‌شود که نوبت را به جای دیواری از نشانگرها به عنوان رونوشت زنده پخش می‌کند:

override به ازای هر بخش بر هر دو پیش‌فرض بخش و details_mode سراسری اولویت دارد. برای بازسازی لایه‌بندی:

هر چیزی که به صورت صریح در display.sections تنظیم شود بر پیش‌فرض‌ها اولویت دارد، بنابراین تنظیمات موجود بدون تغییر کار می‌کنند.

نشست‌ها

نشست‌ها بین TUI و CLI کلاسیک مشترک هستند — هر دو در ~/.hermes/state.db می‌نویسند. می‌توانید یک نشست را در یکی شروع کنید و در دیگری ادامه دهید. انتخابگر نشست نشست‌ها را از هر دو منبع با یک برچسب منبع نمایش می‌دهد.

~/.hermes/state.db

چرخه حیات، جستجو، فشرده‌سازی و خروجی را در Sessions ببینید.

Sessions

نحوه ارتباط TUI با gateway

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

ممکن است متغیر محیطی HERMES_TUI_GATEWAY_URL را در پایگاه کد یا لاگ‌ها ببینید. این یک جزئیات سیم‌کشی داخلی رابط وب داشبورد است، نه یک دکمه اتصال از راه دور کاربرمحور. وقتی تب “Chat” داشبورد (hermes dashboard/chat) را باز می‌کنید، سرور وب داشبورد یک فرآیند فرعی TUI تعبیه شده ایجاد می‌کند و HERMES_TUI_GATEWAY_URL را تزریق می‌کند تا آن فرآیند فرعی به tui_gateway درون‌پروسه خود داشبورد از طریق یک WebSocket حلقه‌ای (/api/ws) متصل شود. نقطه پایانی /api/ws فقط داخل سرور داشبورد (hermes_cli/web_server.py) وجود دارد و به طول عمر و احراز هویت آن فرآیند محدود شده است.

هیچ حالت عمومی “اشاره هر TUI به هر پورت standalone gateway” وجود ندارد. به طور خاص، سرور سازگار با OpenAI (hermes gateway / پلتفرم api_server) /api/ws را سرویس نمی‌دهد — این سطح backend مدل (/v1/chat/completions، /v1/models و غیره) است و عمداً کانال کنترل JSON-RPC TUI را افشا نمی‌کند. تنظیم HERMES_TUI_GATEWAY_URL به آن پورت 404 خواهد داد.

اگر می‌خواهید چندین سطح یک مجموعه نشست را به اشتراک بگذارند، از ~/.hermes/state.db مشترک ( Sessions را ببینید) یا چت تعبیه شده رابط وب داشبورد (Web Dashboard را ببینید) استفاده کنید — نه یک URL gateway دستی تنظیم شده.

~/.hermes/state.db Sessions Web Dashboard

بازگشت به CLI کلاسیک

راه‌اندازی hermes (بدون --tui) به طور پیش‌فرض در CLI کلاسیک باقی می‌ماند. برای ترجیح TUI در یک ماشین، display.interface: tui را در ~/.hermes/config.yaml (پایدار) یا HERMES_TUI=1 در پروفایل shell خود (به ازای هر shell) تنظیم کنید. برای بازگشت، interface: cli را تنظیم کنید / متغیر محیطی را unset کنید، یا hermes --cli را برای یک بار ارسال کنید.

اگر TUI موفق به راه‌اندازی نشود (بدون Node، بسته گمشده، مشکل TTY)، Hermes یک تشخیص چاپ می‌کند و بازمی‌گردد — به جای اینکه شما را گیر بیندازد.

همچنین ببینید

رابط CLI Sessions Skins & Themes Voice Mode Configuration ویرایش این صفحه