mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-11-06 05:17:15 +00:00
Classic CLI gains a Codex-style backtrack picker. Esc Esc on an idle, empty composer with no overlay (or /rewind) lists earlier prompts newest first with a preview and turn number. - Enter: prefill the prompt for editing. Nothing is cut until the edit is submitted; the submission rides to the process loop as a BacktrackResend, which re-validates the picked turn (same session, same text) and then runs the same durable rewind /undo uses. Esc Esc, Ctrl+C, an empty submit, or submitting a slash/! command cancels and cuts nothing. - f: fork. Runs the existing /branch path, then rewinds only the CHILD to just before the picked prompt and prefills it; the parent's rows stay active. - /rewind N and /rewind fork N do the same without the picker. Esc Esc with a draft still discards it; mid-turn Esc Esc is unchanged. undo_last's rewind body moves into CLISessionMixin._rewind_to_user_ordinal (shared by /undo and the picker; same compaction-carrier handling, agent patching and memory rewound hook). The picker lives in a new hermes_cli/cli_backtrack.py mixin; cli_tui_mixin.py is untouched. CommandDef rewind is cli_only (desktop: terminal); desktop registry and parity table regenerated.
3984 lines
389 KiB
YAML
3984 lines
389 KiB
YAML
approval:
|
||
dangerous_header: "⚠️ НЕБЕЗПЕЧНА КОМАНДА: {description}"
|
||
choose_long: " [o]один раз | [s]сеанс | [a]завжди | [d]відхилити"
|
||
choose_short: " [o]один раз | [s]сеанс | [d]відхилити"
|
||
prompt_long: " Вибір [o/s/a/D]: "
|
||
prompt_short: " Вибір [o/s/D]: "
|
||
choose_smart_deny: " [o]один раз | [d]відхилити"
|
||
prompt_smart_deny: " Вибір [o/D]: "
|
||
smart_deny_once_inputs: "o,once,р,раз"
|
||
smart_deny_deny_inputs: "d,deny,в,відхилити"
|
||
timeout: " ⏱ Немає відповіді протягом {waited} — команду не виконано. Попросіть знову, щоб повторити, або збільште ліміт: hermes config set approvals.timeout {suggested}"
|
||
allowed_once: " ✓ Дозволено один раз"
|
||
allowed_session: " ✓ Дозволено для цього сеансу"
|
||
allowed_always: " ✓ Додано до постійного списку дозволених команд"
|
||
denied: " ✗ Відхилено"
|
||
cancelled: " ✗ Скасовано"
|
||
blocklist_message: "Ця команда є в безумовному списку блокування, її не можна схвалити."
|
||
inputs:
|
||
approve: "approve,yes,ok,okay,confirm,y,схвалити,так,підтвердити,т"
|
||
deny: "deny,no,reject,cancel,n,відхилити,ні,скасувати,н"
|
||
always: "always,approve always,always approve,завжди,завжди схвалювати"
|
||
session: "session,approve session,session approve,сеанс,схвалити на сеанс"
|
||
confirm_once: "approve,approve once,once,yes,ok,confirm,схвалити,один раз,так,підтвердити"
|
||
confirm_always: "always,always approve,remember,завжди,запам'ятати"
|
||
confirm_cancel: "cancel,nevermind,no,deny,скасувати,ні,відхилити"
|
||
summary:
|
||
denied: "Ви відхилили запуск {noun} — нічого не виконано."
|
||
timeout: "Немає відповіді протягом {window} — запуск {noun} не відбувся."
|
||
notify_failed: "Не вдалося доставити запит на схвалення — запуск {noun} не відбувся."
|
||
cancelled: "Запит на схвалення було відкликано або він не дійшов до вас — запуск {noun} не відбувся."
|
||
blocked: "У сеансі без нагляду запуск {noun} не дозволено — нічого не виконано."
|
||
default: "Запуск {noun} не відбувся."
|
||
noun:
|
||
command: "команди"
|
||
code: "коду"
|
||
action: "дії"
|
||
window:
|
||
hour_one: "{count} година"
|
||
hour_other: "{count} годин"
|
||
minute_one: "{count} хвилина"
|
||
minute_other: "{count} хвилин"
|
||
second_one: "{count} секунда"
|
||
second_other: "{count} секунд"
|
||
gateway:
|
||
approval_expired: "⚠️ Час схвалення минув (агент більше не очікує). Попросіть агента спробувати ще раз."
|
||
draining: "⏳ Очікування завершення {count} активних агент(ів) перед перезапуском..."
|
||
goal_cleared: "✓ Ціль очищено."
|
||
no_active_goal: "Немає активної цілі."
|
||
config_read_failed: "⚠️ Не вдалося прочитати config.yaml: {error}"
|
||
config_save_failed: "⚠️ Не вдалося зберегти конфігурацію: {error}"
|
||
model:
|
||
error_prefix: "Помилка: {error}"
|
||
switched: "Модель змінено на `{model}`"
|
||
provider_label: "Провайдер: {provider}"
|
||
context_label: "Контекст: {tokens} токенів"
|
||
max_output_label: "Макс. вихід: {tokens} токенів"
|
||
cost_label: "Вартість: {cost}"
|
||
capabilities_label: "Можливості: {capabilities}"
|
||
prompt_caching_enabled: "Кешування промптів: увімкнено"
|
||
warning_prefix: "Попередження: {warning}"
|
||
saved_global: "Збережено в config.yaml (`--global`)"
|
||
session_only_hint: "_(лише для цього сеансу — додайте `--global`, щоб зберегти)_"
|
||
current_label: "Поточна: `{model}` на {provider}"
|
||
current_tag: " (поточна)"
|
||
more_models_suffix: " (+{count} ще)"
|
||
usage_switch_model: "`/model <name>` — змінити модель"
|
||
usage_switch_provider: "`/model <name> --provider <slug>` — змінити провайдера"
|
||
usage_persist: "`/model <name> --global` — зберегти назавжди"
|
||
usage_reset: "`/model reset` — скинути перевизначення цієї сесії"
|
||
reset_done: "Перевизначення моделі сесії скинуто — тепер використовується `{model}` (типове значення каналу/глобальне). Історію розмови збережено."
|
||
reset_none: "У цій сесії немає активного перевизначення моделі — вже використовується `{model}` (типове значення каналу/глобальне)."
|
||
err_skew: "Цей шлюз виконує код із {boot_rev}, але робоча копія на диску вже {disk_rev}. Перемикання моделі може призвести до збою через застарілі модулі — перезапустіть шлюз, щоб завантажити новий код: hermes gateway restart"
|
||
err_switch_failed: "Не вдалося перемкнути модель на {model} ({error}); залишаємось на {current}."
|
||
err_config_not_updated: "config.yaml не оновлено ({error})"
|
||
err_stale_override: "збережено в config.yaml, але застаріле перевизначення сеансу не вдалося скинути ({error})"
|
||
next_turn_only: " (лише на наступний хід — відновиться після однієї відповіді)"
|
||
switch_cancelled: "🟡 Перемикання моделі скасовано. Поточна модель без змін ({model})."
|
||
guard_confirm: "⚠️ **{title}**\n\n{message}\n\n_Текстова альтернатива: відповідайте `{prefix}approve`, щоб перемкнути, або `{prefix}cancel`, щоб залишити поточну модель._"
|
||
err_once_local: "`--once` is not available in this session; use `/model <name>` and switch back after the turn."
|
||
local_next_turn: "Applies from your next message."
|
||
agents:
|
||
header: "🤖 **Активні агенти та завдання**"
|
||
active_agents: "**Активні агенти:** {count}"
|
||
this_chat: " · цей чат"
|
||
more: "... і ще {count}"
|
||
running_processes: "**Фонові процеси, що виконуються:** {count}"
|
||
async_jobs: "**Асинхронні задачі гейтвея:** {count}"
|
||
background_delegations: "**Фонові делегування:** {count}"
|
||
none: "Немає активних агентів або задач."
|
||
state_starting: "запускається"
|
||
state_running: "виконується"
|
||
no_progress: " · без прогресу {seconds}с"
|
||
quiet_for: " · тиша {seconds}с"
|
||
between_turns: "між ходами"
|
||
child_row: " - дочірній {index}: {calls} api-викликів · {doing}"
|
||
active_ago: " · активний {seconds}с тому"
|
||
approve:
|
||
no_pending: "Немає команди на схвалення."
|
||
once_singular: "✅ Команду схвалено. Агент відновлює роботу…"
|
||
once_plural: "✅ Команди схвалено ({count} команд). Агент відновлює роботу…"
|
||
session_singular: "✅ Команду схвалено (шаблон схвалено для цього сеансу). Агент відновлює роботу…"
|
||
session_plural: "✅ Команди схвалено (шаблон схвалено для цього сеансу) ({count} команд). Агент відновлює роботу…"
|
||
always_singular: "✅ Команду схвалено (шаблон схвалено назавжди). Агент відновлює роботу…"
|
||
always_plural: "✅ Команди схвалено (шаблон схвалено назавжди) ({count} команд). Агент відновлює роботу…"
|
||
background:
|
||
usage: "Використання: /bg <запит>\nПриклад: /bg Підсумуй найкращі історії з HN сьогодні\n\nЗапускає запит в окремому сеансі. Можна продовжити спілкування — результат з'явиться тут після завершення."
|
||
started: "🔄 Фонове завдання запущено: «{preview}»\nID завдання: {task_id}\nМожна продовжити спілкування — результати з'являться тут після завершення."
|
||
task_finished: "✅ Фонове завдання завершено"
|
||
task_failed: "❌ Фонове завдання завершилося з помилкою"
|
||
exit_code: "код виходу {code}"
|
||
last_output: ". Останній вивід:\n```\n{tail}\n```"
|
||
rerun_hint: "\nПопросіть мене запустити його знову або показати повний журнал."
|
||
no_credentials: "❌ Фонове завдання не вдалося запустити: не налаштовано вхід до жодної AI-моделі. Використайте /login або виконайте `hermes setup` на хості."
|
||
complete_header: "✅ Фонове завдання виконано\nЗапит: «{preview}»\n\n"
|
||
no_response: "(Відповідь не згенеровано)"
|
||
failed: "❌ Ваше фонове завдання «{preview}» завершилося з помилкою, не дійшовши до кінця. Надішліть /bg ще раз, щоб повторити, або /agents, щоб побачити, що ще виконується."
|
||
final_output: "{header}\n\nПідсумковий вивід:\n```\n{output}\n```"
|
||
still_running: "⏳ Фонове завдання ще виконується"
|
||
recent_output: "{header}\n\nОстанній вивід:\n```\n{output}\n```"
|
||
btw:
|
||
usage: "Використання: /btw <питання>\nПриклад: /btw у якому файлі була та помилка?\n\nВідповідає на швидке побіжне питання про цю розмову, не перериваючи її. Для незалежного фонового завдання використовуйте /bg <запит>."
|
||
no_history: "Розмови ще немає — надішліть питання звичайним повідомленням."
|
||
no_provider: "❌ Не вдалося відповісти: облікові дані провайдера не налаштовано."
|
||
started: "💬 Побіжне питання: «{preview}»\nВідповідаю за знімком цієї розмови — поточна робота триває."
|
||
answer: "💬 /btw: «{preview}»\n\n{answer}"
|
||
failed: "❌ /btw не вдалося: «{preview}»\n{error}"
|
||
branch:
|
||
db_unavailable: "База даних сеансів недоступна."
|
||
no_conversation: "Немає розмови для розгалуження — спочатку надішліть повідомлення."
|
||
create_failed: "Не вдалося створити гілку: {error}"
|
||
switch_failed: "Гілку створено, але не вдалося переключитися на неї."
|
||
branched_one: "⑂ Створено гілку **{title}** (скопійовано {count} повідомлення)\nОригінал: `{parent}`\nГілка: `{new}`\nВикористайте `/resume`, щоб повернутися до оригіналу."
|
||
branched_many: "⑂ Створено гілку **{title}** (скопійовано {count} повідомлень)\nОригінал: `{parent}`\nГілка: `{new}`\nВикористайте `/resume`, щоб повернутися до оригіналу."
|
||
branched_thread_one: "⑂ Гілку **{title}** створено в новому треді ({count} повідомлення скопійовано)\nТред: {thread}\nОригінал: `{parent}` — цей чат залишається на ньому\nГілка: `{new}`\nВикористовуйте `/branch --here`, щоб розгалузити в цьому чаті."
|
||
branched_thread_many: "⑂ Гілку **{title}** створено в новому треді ({count} повідомлень скопійовано)\nТред: {thread}\nОригінал: `{parent}` — цей чат залишається на ньому\nГілка: `{new}`\nВикористовуйте `/branch --here`, щоб розгалузити в цьому чаті."
|
||
thread_fallback: "Тут не вдалося створити тред, тому гілка замінила сесію цього чату."
|
||
commands:
|
||
usage: "Використання: `/commands [page]`"
|
||
skill_header: "⚡ **Команди навичок**:"
|
||
default_desc: "Команда навички"
|
||
none: "Немає доступних команд."
|
||
header: "📚 **Команди** (всього {total}, сторінка {page}/{total_pages})"
|
||
nav_prev: "`/commands {page}` ← попередня"
|
||
nav_next: "наступна → `/commands {page}`"
|
||
out_of_range: "_(Запитана сторінка {requested} поза межами, показано сторінку {page}.)_"
|
||
compress:
|
||
not_enough: "Недостатньо розмови для стиснення (потрібно щонайменше 4 повідомлення)."
|
||
no_provider: "Постачальника не налаштовано — неможливо стиснути."
|
||
nothing_to_do: "Поки що немає що стискати (стенограма все ще є повністю захищеним контекстом)."
|
||
aggressive_unsupported: "--aggressive не підтримується; використовуйте '/compress here [N]', щоб зберегти лише останні обміни, або /undo, щоб видалити ходи."
|
||
focus_line: "Фокус: \"{topic}\""
|
||
summary_failed: "⚠️ Не вдалося згенерувати зведення ({error}). {count} історичних повідомлень було видалено та замінено заповнювачем; попередній контекст більше не можна відновити. Перевірте конфігурацію моделі auxiliary.compression."
|
||
aborted: "⚠️ Стиснення скасовано ({error}). Жодне повідомлення не було видалено — розмова не змінилася. Виконайте /compress, щоб повторити спробу, /reset для нової сесії, або перевірте конфігурацію моделі auxiliary.compression."
|
||
aux_failed: "ℹ️ Налаштована модель стиснення `{model}` зазнала збою ({error}). Відновлено за допомогою основної моделі — контекст не пошкоджений — але варто перевірити `auxiliary.compression.model` у config.yaml."
|
||
turnhold_deferred: "ℹ️ Стиснення контексту відкладено — підсумок ще передається. Продовжуємо цей хід без стиснення."
|
||
failed: "Стиснення не вдалося: {error}"
|
||
hygiene_timeout: "⚠️ Скорочення історії розмови тривало надто довго, тому я його пропустив і залишив усе як є. Виконайте /compress, щоб спробувати ще раз, або /new, щоб почати з чистого аркуша."
|
||
hygiene_timeout_doctor_hint: " Якщо це повторюється, виконайте `hermes doctor` на хості."
|
||
hygiene_failed: "⚠️ Скоротити історію розмови не вдалося, тому я залишив усе як є. Виконайте /compress, щоб спробувати ще раз, або /new, щоб почати з чистого аркуша. Якщо це повторюється, виконайте `hermes doctor` на хості."
|
||
codex_nothing: "🗜️ Нічого стискати: цей сеанс працює в середовищі Codex app-server, контекст якого живе в треді, що належить Codex і існує лише поки агент активний. Спочатку надішліть повідомлення, потім /compress — або /reset, щоб почати з чистого аркуша."
|
||
codex_compacted: "🗜️ Тред Codex app-server стиснуто (thread/compact). Дзеркало стенограми навмисно не змінено — стиснутий контекст тепер зберігає app-server."
|
||
codex_incomplete: "⚠️ Стиснення Codex app-server не завершилося — тред без змін. Перевірте журнали app-server, повторіть /compress або виконайте /reset для чистого сеансу."
|
||
debug:
|
||
upload_failed: "✗ Не вдалося завантажити звіт налагодження: {error}"
|
||
header: "**Звіт налагодження завантажено:**"
|
||
auto_delete: "⏱ Вставки автоматично видаляться через 6 годин."
|
||
full_logs_hint: "Щоб завантажити повні журнали, використайте `hermes debug share` з CLI."
|
||
share_hint: "Поділіться цими посиланнями з командою Hermes для отримання підтримки."
|
||
report_label: "Звіт"
|
||
local_refused: "`/debug local` залишає звіт на машині, де працює Hermes, тому недоступна з чату. Надішліть `/debug`, щоб завантажити короткий звіт."
|
||
deny:
|
||
stale: "❌ Команду відхилено (схвалення застаріло)."
|
||
no_pending: "Немає команди для відхилення."
|
||
denied_singular: "❌ Команду відхилено."
|
||
denied_plural: "❌ Команди відхилено ({count} команд)."
|
||
denied_reason_singular: "❌ Команду відхилено. Причину передано агентові: \"{reason}\""
|
||
denied_reason_plural: "❌ Команди відхилено ({count} команд). Причину передано агентові: \"{reason}\""
|
||
|
||
usage_limit:
|
||
picker_title: "Продовжити на іншій моделі:"
|
||
switch_choice: "Перейти на {model} ({note})"
|
||
fast:
|
||
not_supported: "⚡ /fast доступний лише для моделей OpenAI, які підтримують Priority Processing."
|
||
status: "⚡ Priority Processing\n\nПоточний режим: `{mode}`\n\n_Використання:_ `/fast <normal|fast|status>`"
|
||
unknown_arg: "⚠️ Невідомий аргумент: `{arg}`\n\n**Допустимі варіанти:** normal, fast, status"
|
||
saved: "⚡ ✓ Priority Processing: **{label}** (збережено в конфігурації)\n_(набуде чинності з наступного повідомлення)_"
|
||
session_only: "⚡ ✓ Priority Processing: **{label}** (лише ця сесія)"
|
||
label_fast: "ШВИДКИЙ"
|
||
label_normal: "ЗВИЧАЙНИЙ"
|
||
status_fast: "швидкий"
|
||
status_normal: "звичайний"
|
||
picker_title: "⚡ **Priority Processing**\n\nПоточний режим: `{mode}`\n\nОберіть варіант:"
|
||
choice_fast: "fast — Priority Processing увімкнено"
|
||
choice_normal: "normal — стандартна обробка"
|
||
choice_auto: "auto — швидко в перші секунди кожного ходу"
|
||
choice_cold: "cold — швидко лише на першому ході сесії"
|
||
choice_ultrafast: "ultrafast — OpenAI Ultrafast, ціна ×6"
|
||
ultrafast_not_supported: "⚡ Ultrafast недоступний для `{model}` у цьому обліковому записі або маршруті."
|
||
footer:
|
||
status: "📎 Нижній колонтитул середовища: **{state}**\nПоля: `{fields}`\nПлатформа: `{platform}`"
|
||
usage: "Використання: `/footer [on|off|status]`"
|
||
saved: "📎 Нижній колонтитул середовища: **{state}**{example}\n_(збережено глобально — набуде чинності з наступного повідомлення)_"
|
||
example_line: "\nПриклад: `{preview}`"
|
||
state_on: "УВІМКНЕНО"
|
||
state_off: "ВИМКНЕНО"
|
||
goal:
|
||
unavailable: "Цілі недоступні в цій сесії."
|
||
no_goal_set: "Ціль не встановлено."
|
||
paused: "⏸ Ціль призупинено: {goal}"
|
||
no_resume: "Немає цілі для продовження."
|
||
resumed: "▶ Ціль відновлено: {goal}\nПродовжую зараз — негайно зроблю наступний крок."
|
||
invalid: "Неприпустима ціль: {error}"
|
||
set: "⊙ Ціль встановлено (бюджет {budget} ходів): {goal}\nЯ продовжуватиму працювати, доки ціль не буде досягнута, ви її не призупините/очистите, або бюджет не вичерпається.\nКерування: /goal status · /goal pause · /goal resume · /goal clear"
|
||
gate_add_admin_only: "⛔ /goal gate add потребує явно налаштованого адміністратора шлюзу (allow_admin_from для приватних чатів, group_allow_admin_from для груп)."
|
||
help:
|
||
header: "📖 **Команди Hermes**\n"
|
||
skill_header: "\n⚡ **Команди навичок** ({count} активних):"
|
||
more_use_commands: "\n... і ще {count}. Використайте `/commands` для повного списку зі сторінками."
|
||
insights:
|
||
invalid_days: "Недійсне значення --days: {value}"
|
||
error: "Помилка при формуванні аналітики: {error}"
|
||
kanban:
|
||
error_prefix: "⚠ помилка kanban: {error}"
|
||
subscribed_suffix: "(підписано — ви отримаєте сповіщення, коли {task_id} завершиться або буде заблоковано)"
|
||
truncated_suffix: "… (скорочено; використовуйте `hermes kanban …` у терміналі для повного виводу)"
|
||
no_output: "(немає виводу)"
|
||
wake:
|
||
completed: "completed"
|
||
gave_up: "gave up (retries exhausted)"
|
||
crashed: "crashed (worker exited); dispatcher will retry"
|
||
timed_out: "timed out; dispatcher will retry"
|
||
blocked: "blocked; needs attention"
|
||
review_requested: "handed off for review; the implementation is done"
|
||
changes_requested: "review requested changes (BLOCK); implementation is not approved"
|
||
block_loop_detected: "routed to triage after repeated blocks; orchestration attention needed"
|
||
status_default: "status changed"
|
||
status_joiner: ", "
|
||
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
|
||
handoff: "Result: {summary}"
|
||
review_detail: "Review feedback: {reason}\nInspect the existing card and its current review run; return work to the same implementation task. Do not treat this BLOCK as approval and do not create a duplicate task."
|
||
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
|
||
ping:
|
||
completed: "✔ {head} виконано — {title}{handoff}"
|
||
review_requested: "👀 {head} готово до рев'ю — {title}{handoff}"
|
||
changes_default_reason: "рев'юер вимагає змін"
|
||
reviewer_suffix: " — рев'юер @{reviewer}"
|
||
implementer_suffix: " → виконавець @{implementer}"
|
||
changes_requested: "🛑 {board_tag}Kanban {task_id}: рев'ю вимагає змін/BLOCK: {reason}{provenance}"
|
||
triage: "🛑 {head} передано в TRIAGE — {why}{recurrences}{reason}"
|
||
triage_decision: "потрібне рішення людини"
|
||
triage_attention: "потребує уваги оркестрації"
|
||
triage_recurrences: " (заблоковано {value}x з тієї ж причини)"
|
||
reason_suffix: ": {value}"
|
||
failed_n_times: "{count} збоїв поспіль"
|
||
kept_failing: "постійні збої"
|
||
last_error: " (останній: {value})"
|
||
gave_up: "⛔ {head} тепер заблоковано: {count}{last}. Усуньте причину, потім `hermes kanban unblock {task_id}` (або `hermes kanban reassign {task_id}`). Журнали: `hermes kanban log {task_id}`."
|
||
limit_minutes: "ліміт у {minutes} хвилин"
|
||
limit_generic: "ліміт часу"
|
||
timed_out: "⏱ {head}: перевищено {span}, роботу зупинено; спробу буде повторено автоматично."
|
||
blocked: "⏸ {head} заблоковано{reason}"
|
||
crashed: "✖ {head} — воркер несподівано зупинився; спробу буде повторено автоматично."
|
||
status: "🔄 {head} → {status}"
|
||
board_tag: "[{board}] "
|
||
assignee_tag: "@{assignee} "
|
||
head: "{board_tag}{assignee_tag}Kanban {task_id}"
|
||
personality:
|
||
none_configured: "У `{path}/config.yaml` не налаштовано жодної особистості"
|
||
header: "🎭 **Доступні особистості**\n"
|
||
none_option: "• `none` — (без накладання особистості)"
|
||
item: "• `{name}` — {preview}"
|
||
usage: "\nВикористання: `/personality <name>`"
|
||
save_failed: "⚠️ Не вдалося зберегти зміну особистості: {error}"
|
||
cleared: "🎭 Особистість очищено — використовується базова поведінка агента.\n_(набуде чинності з наступного повідомлення)_"
|
||
set_to: "🎭 Особистість встановлено на **{name}**\n_(набуде чинності з наступного повідомлення)_"
|
||
unknown: "Невідома особистість: `{name}`\n\nДоступні: {available}"
|
||
err_config_write: "не вдалося записати конфігурацію"
|
||
profile:
|
||
header: "👤 **Профіль:** `{profile}`"
|
||
home: "📂 **Домашня тека:** `{home}`"
|
||
plain: "Профіль: {profile}\nДомашній каталог: {home}"
|
||
reasoning:
|
||
level_default: "medium (за замовчуванням)"
|
||
level_disabled: "none (вимкнено)"
|
||
scope_session: "перевизначення сеансу"
|
||
scope_global: "глобальна конфігурація"
|
||
status: "🧠 **Налаштування мислення**\n\n**Зусилля:** `{level}`\n**Область:** {scope}\n**Показ:** {display}\n\n_Використання:_ `/reasoning <none|minimal|low|medium|high|xhigh|max|ultra|reset|show|hide> [--global]`"
|
||
display_on: "увімкнено ✓"
|
||
display_off: "вимкнено"
|
||
display_set_on: "🧠 ✓ Показ мислення: **УВІМКНЕНО**\nДумки моделі будуть показуватися перед кожною відповіддю на **{platform}**."
|
||
display_set_off: "🧠 ✓ Показ мислення: **ВИМКНЕНО** для **{platform}**"
|
||
reset_global_unsupported: "⚠️ `/reasoning reset --global` не підтримується. Використовуйте `/reasoning <level> --global`, щоб змінити глобальне значення за замовчуванням."
|
||
reset_done: "🧠 ✓ Перевизначення мислення для сеансу скинуто; повернення до глобальної конфігурації."
|
||
unknown_arg: "⚠️ Невідомий аргумент: `{arg}`\n\n**Дійсні рівні:** none, minimal, low, medium, high, xhigh, max, ultra\n**Показ:** show, hide\n**Зберегти:** додайте `--global`, щоб зберегти поза цим сеансом"
|
||
picker_title: "🧠 **Налаштування мислення**\n\n**Зусилля:** `{level}`\n**Область:** {scope}\n**Показ:** {display}\n\nОберіть варіант:"
|
||
choice_none: "none — вимкнути мислення"
|
||
choice_reset: "reset — скинути перевизначення сесії"
|
||
choice_show: "показувати мислення у відповідях"
|
||
choice_hide: "приховувати мислення у відповідях"
|
||
set_global: "🧠 ✓ Зусилля мислення встановлено на `{effort}` (збережено в конфігурації)\n_(набуде чинності з наступного повідомлення)_"
|
||
set_global_save_failed: "🧠 ✓ Зусилля мислення встановлено на `{effort}` (лише цей сеанс — не вдалося зберегти конфігурацію)\n_(набуде чинності з наступного повідомлення)_"
|
||
set_session: "🧠 ✓ Зусилля мислення встановлено на `{effort}` (лише цей сеанс — додайте `--global`, щоб зберегти)\n_(набуде чинності з наступного повідомлення)_"
|
||
quote_label_discord: "-# 💭 Міркування"
|
||
quote_label_md: "> 💭 **Міркування:**"
|
||
more_lines: "\n_... (ще {count} рядків)_"
|
||
block: "💭 **Міркування:**\n```\n{reasoning}\n```\n\n{response}"
|
||
reload_mcp:
|
||
cancelled: "🟡 /reload-mcp скасовано. MCP-інструменти без змін."
|
||
always_followup: "ℹ️ Наступні виклики `/reload-mcp` виконуватимуться без підтвердження. Увімкнути знову можна через `approvals.mcp_reload_confirm: true` у config.yaml."
|
||
confirm_prompt: "⚠️ **Підтвердження /reload-mcp**\n\nПерезавантаження MCP-серверів перебудовує набір інструментів для цього сеансу та **інвалідує кеш промпта провайдера** — наступне повідомлення повторно надішле всі вхідні токени. На моделях із довгим контекстом або високим рівнем міркувань це може бути дорого.\n\nОберіть:\n• **Схвалити один раз** — перезавантажити зараз\n• **Завжди схвалювати** — перезавантажити та назавжди приховати цей запит\n• **Скасувати** — залишити MCP-інструменти без змін\n\n_Текстова альтернатива: відповідайте `/approve`, `/always` або `/cancel`._"
|
||
header: "🔄 **MCP-сервери перезавантажено**\n"
|
||
reconnected: "♻️ Перепідключено: {names}"
|
||
added: "➕ Додано: {names}"
|
||
removed: "➖ Видалено: {names}"
|
||
none_connected: "Немає підключених MCP-серверів."
|
||
tools_available: "\n🔧 {tools} інструмент(ів) доступно з {servers} сервер(ів)"
|
||
failed: "❌ Помилка перезавантаження MCP: {error}"
|
||
reload_skills:
|
||
header: "🔄 **Навички перезавантажено**\n"
|
||
no_new: "Нових навичок не виявлено."
|
||
total: "\n📚 {count} навичок(и) доступно"
|
||
added_header: "➕ **Додані навички:**"
|
||
removed_header: "➖ **Видалені навички:**"
|
||
item_with_desc: " - {name}: {desc}"
|
||
item_no_desc: " - {name}"
|
||
failed: "❌ Помилка перезавантаження навичок: {error}"
|
||
reset:
|
||
header_default: "✨ Сесію скинуто! Починаємо з чистого аркуша."
|
||
header_new: "✨ Нову сесію запущено!"
|
||
header_titled: "✨ Нову сесію запущено: {title}"
|
||
title_rejected: "\n⚠️ Назву відхилено: {error}"
|
||
title_error_untitled: "\n⚠️ {error} — сесію запущено без назви."
|
||
title_empty_untitled: "\n⚠️ Після очищення назва порожня — сесію запущено без назви."
|
||
tip: "\n✦ Порада: {tip}"
|
||
restart:
|
||
in_progress: "⏳ Перезапуск гейтвея вже виконується..."
|
||
restarting: "♻ Перезапуск гейтвея. Якщо ви не отримаєте сповіщення протягом 60 секунд, перезапустіть із консолі командою `hermes gateway restart`."
|
||
resume:
|
||
db_unavailable: "База даних сеансів недоступна."
|
||
parse_error: "⚠️ Could not parse `/resume` arguments: {error}. Use quotes around titles with spaces, for example: `/resume \"Project A Plan\"`."
|
||
matrix_no_named_sessions: "No named sessions found for this Matrix room. Use `/title My Session` to name the current room session, `/resume --all` to list all Matrix sessions, or `/resume --cross-room <session name>` to explicitly cross room boundaries."
|
||
matrix_blocked_no_origin: "⚠️ Matrix /resume заблоковано: для цього іменованого сеансу не записано кімнату походження, тому Hermes за замовчуванням не відновить його в поточній кімнаті. Використайте `/resume --cross-room {name}`, якщо ви навмисно хочете перейти межі кімнат."
|
||
matrix_blocked_other_room: "⚠️ Matrix /resume заблоковано: цей сеанс належить іншій кімнаті Matrix ({room}). Використайте `/resume --cross-room {name}`, якщо ви навмисно хочете відновити його тут."
|
||
matrix_cross_room_success: "⚠️ Cross-room resume: resumed **{title}** inside Matrix room **{room}**. Future messages in this room will use that transcript until `/reset` or another `/resume`.{msg_part}"
|
||
blocked_not_owner: "⚠️ /resume заблоковано: '**{name}**' належить іншому користувачу або чату. Відновлювати можна лише сеанси з цього чату."
|
||
no_named_sessions: "Іменованих сеансів не знайдено.\nВикористайте `/title Мій сеанс`, щоб назвати поточний сеанс, потім `/resume Мій сеанс`, щоб повернутися до нього."
|
||
all_requires_admin: "_Примітка: `--all` (список між чатами) потребує налаштованого адміністратора; показано лише сеанси цього чату._"
|
||
list_header: "📋 **Іменовані сеанси**\n"
|
||
list_item: "• **{title}**{preview_part}"
|
||
list_item_numbered: "{index}. **{title}**{preview_part}"
|
||
list_preview_suffix: " — _{preview}_"
|
||
list_footer: "\nВикористання: `/resume <назва сеансу>`"
|
||
list_footer_numbered: "\nВикористання: `/resume <назва сесії>` або `/resume <номер>` (наприклад, `/resume 1` для найновішої)"
|
||
list_failed: "Не вдалося отримати список сеансів: {error}"
|
||
out_of_range: "Індекс відновлення {index} поза межами діапазону.\nВикористовуйте `/resume` без аргументів, щоб переглянути доступні сесії."
|
||
not_found: "Сеанс, що відповідає '**{name}**', не знайдено.\nВикористайте `/resume` без аргументів, щоб побачити доступні сеанси."
|
||
already_on: "📌 Уже в сеансі **{name}**."
|
||
switch_failed: "Не вдалося переключити сеанс."
|
||
resumed_one: "↻ Сеанс **{title}** відновлено ({count} повідомлення). Розмову відновлено."
|
||
resumed_many: "↻ Сеанс **{title}** відновлено ({count} повідомлень). Розмову відновлено."
|
||
resumed_no_count: "↻ Сеанс **{title}** відновлено. Розмову відновлено."
|
||
msg_count_one: " ({count} повідомлення)"
|
||
msg_count_other: " ({count} повідомлень)"
|
||
retry:
|
||
no_previous: "Немає попереднього повідомлення для повторення."
|
||
unsafe: "Неможливо безпечно повторити це повідомлення: {error}"
|
||
failed_unchanged: "Повторити не вдалося; стенограму не змінено."
|
||
rollback:
|
||
not_enabled: "Контрольні точки не ввімкнено.\nУвімкніть у config.yaml:\n```\ncheckpoints:\n enabled: true\n```"
|
||
none_found: "Контрольних точок для {cwd} не знайдено"
|
||
invalid_number: "Недійсний номер контрольної точки. Використовуйте 1-{max}."
|
||
restored: "✅ Відновлено до контрольної точки {hash}: {reason}\nЗнімок перед відкатом збережено автоматично."
|
||
kept_user_edits: "↷ Ваші ручні правки збережено: {files}\nВикористайте /rollback <N> --all, щоб відновити і їх."
|
||
kept_oversize: "↷ Збережено (завеликий для контрольних точок, немає збереженої копії для відкату): {files}"
|
||
failed_deletes: "⚠️ Не вдалося видалити (залишено на місці): {files}"
|
||
restore_failed: "❌ {error}"
|
||
diff:
|
||
not_enabled: "Контрольні точки не ввімкнено, тому базової лінії сесії немає.\nУвімкніть у config.yaml:\n```\ncheckpoints:\n enabled: true\n```\nЗвичайний /diff все одно працює — він використовує git напряму."
|
||
no_changes: "Змін немає."
|
||
failed: "{error}"
|
||
err_default: "Не вдалося згенерувати diff"
|
||
more_untracked: "\n... і ще {count}"
|
||
untracked_label: "**Невідстежувані:**"
|
||
truncated_note: "\n... (скорочено — всього {lines} рядків; використайте /diff --stat для зведення)"
|
||
set_home:
|
||
save_failed: "Не вдалося зберегти головний канал: {error}"
|
||
success: "✅ Головний канал встановлено на **{name}** (ID: {chat_id}).\nCron-завдання та міжплатформні повідомлення доставлятимуться сюди."
|
||
err_missing_platform: "Не вказано логічну платформу"
|
||
err_relay_unauthenticated: "Ретранслятор не автентифікує цю логічну домашню ціль"
|
||
context:
|
||
header: "🧠 **Контекстне вікно**"
|
||
model: "Модель: `{model}`"
|
||
window: "Вікно: {total} токенів"
|
||
in_use: "Використано: {used} / {total} ({pct}%)"
|
||
bar: "{bar}"
|
||
headroom: "Запас до ліміту: {headroom} токенів"
|
||
threshold: "Автостиснення при: {threshold} ({threshold_pct}%) — залишилося {to_go}"
|
||
over_threshold: "⚠️ **Перевищено поріг автостиснення ({threshold}, {threshold_pct}%)**"
|
||
compressions: "Стиснень за цей сеанс: {count}"
|
||
last_savings: "Останнє стиснення звільнило: {savings}% контексту"
|
||
totals_header: "Підсумки сеансу (накопичено за {calls} викликів API)"
|
||
totals_line: "Вхідні {input} · Вихідні {output} · Міркування {reasoning}"
|
||
total_billed: "Усього виставлено: {total}"
|
||
throughput_note: "_Це пропускний обсяг, а не розмір контексту — кожен виклик повторно надсилає вікно, показане вище._"
|
||
estimated: "Орієнтовний контекст: ~{count} токенів у {messages} повідомленнях"
|
||
detail_after_first: "_(Повна статистика стиснення та пропускного обсягу доступна після першої відповіді агента)_"
|
||
no_data: "Даних про контекст поки немає. Надішліть повідомлення, щоб почати сеанс."
|
||
category:
|
||
system_prompt: "Системний промпт"
|
||
tool_definitions: "Визначення інструментів"
|
||
rules: "Правила"
|
||
skills: "Навички"
|
||
mcp: "MCP"
|
||
subagent_definitions: "Визначення субагентів"
|
||
memory: "Пам'ять"
|
||
conversation: "Розмова"
|
||
category_header: "Орієнтовне використання за категоріями"
|
||
no_data_yet: " (даних ще немає — спочатку надішліть повідомлення)"
|
||
free_space: "Вільне місце"
|
||
category_row: "{glyph} {label} ~{tokens} токенів ~{pct}%"
|
||
toolset_row: " {toolset} {count} інструментів ~{tokens} токенів"
|
||
not_available: "н/д"
|
||
skill_row: " {name} індекс ~{index_tokens} SKILL.md {md_tokens} токенів"
|
||
and_more: " … і ще {count}"
|
||
toolsets_title: "Набори інструментів за вартістю схеми (від найбільшого)"
|
||
skills_title: "Навички за вартістю (індекс = завжди в контексті; SKILL.md = вартість після завантаження)"
|
||
window_line: "Контекстне вікно: {mark}{used} / {max} токенів ({mark}{pct}%)"
|
||
source:
|
||
local_estimate: "локальна оцінка"
|
||
provider_usage: "дані провайдера"
|
||
provider_usage_plus_estimate: "дані провайдера + оцінка нових повідомлень"
|
||
source_line: "Джерело: {source}; кількість за категоріями — локальні оцінки."
|
||
hint_all: "Використайте /context all, щоб побачити вартість кожної навички та набору інструментів."
|
||
status:
|
||
header: "📊 **Стан Hermes Gateway**"
|
||
matrix_scope_header: "**Область Matrix:**"
|
||
matrix_scope_room: " room: {room}"
|
||
matrix_scope_room_id: " room_id: {room_id}"
|
||
matrix_scope_thread: " thread_id: {thread_id}"
|
||
matrix_scope_mode: " session_scope: {scope}"
|
||
matrix_scope_key: " session_key: {session_key}"
|
||
session_id: "**ID сесії:** `{session_id}`"
|
||
title: "**Назва:** {title}"
|
||
created: "**Створено:** {timestamp}"
|
||
last_activity: "**Остання активність:** {timestamp}"
|
||
model: "**Модель:** `{model}`"
|
||
model_provider: "**Модель:** `{model}` ({provider})"
|
||
context: "**Контекст:** {used} / {total} ({pct}%)"
|
||
context_used: "**Контекст:** ~{used} токенів"
|
||
tokens: "**Усього токенів виставлено за весь час:** {tokens} _(це не поточний розмір контексту; використайте `/context`)_"
|
||
agent_running: "**Агент активний:** {state}"
|
||
state_yes: "Так ⚡"
|
||
state_no: "Ні"
|
||
queued: "**Черга продовжень:** {count}"
|
||
platforms: "**Підключені платформи:** {platforms}"
|
||
discard:
|
||
nothing: "Нічого відкидати: у цьому чаті немає ходу, втраченого під час перезапуску."
|
||
done: "🗑️ Відкинуто втрачених ходів: {count}; їх не виконано повторно. Зараз буде відповідь на збережені повідомлення."
|
||
stop:
|
||
stopped_pending: "⚡ Зупинено. Агент ще не починав — можна продовжити цей сеанс."
|
||
stopped: "⚡ Зупинено. Можна продовжити цей сеанс."
|
||
no_active: "Немає активного завдання для зупинки."
|
||
force_stopped_pending: "⚡ Примусово зупинено. Агент ще запускався — сеанс розблоковано."
|
||
title:
|
||
db_unavailable: "База даних сеансів недоступна."
|
||
warn_prefix: "⚠️ {error}"
|
||
empty_after_clean: "⚠️ Після очищення назва порожня. Використовуйте друковані символи."
|
||
set_to: "✏️ Назву сеансу встановлено: **{title}**"
|
||
not_found: "Сеанс не знайдено в базі даних."
|
||
current_with_title: "📌 Сеанс: `{session_id}`\nНазва: **{title}**"
|
||
current_no_title: "📌 Сеанс: `{session_id}`\nНазву не встановлено. Використання: `/title Назва мого сеансу`"
|
||
topic:
|
||
not_telegram_dm: "Команда /topic доступна лише в приватних чатах Telegram."
|
||
no_session_db: "База даних сесій недоступна."
|
||
unauthorized: "Ви не маєте дозволу використовувати /topic у цьому боті."
|
||
restore_needs_topic: "Щоб відновити сесію, спочатку створіть або відкрийте Telegram topic, а потім надішліть /topic <session-id> у цьому topic. Щоб створити новий topic, відкрийте All Messages і надішліть там будь-яке повідомлення."
|
||
topics_disabled: "Telegram topics ще не ввімкнено для цього бота.\n\nЯк увімкнути:\n1. Відкрийте @BotFather.\n2. Виберіть свого бота.\n3. Відкрийте Bot Settings → Threads Settings.\n4. Увімкніть Threaded Mode і переконайтеся, що користувачам дозволено створювати нові threads.\n\nПотім надішліть /topic знову."
|
||
topics_user_disallowed: "Telegram topics увімкнено, але користувачам не дозволено створювати topics.\n\nВідкрийте @BotFather → виберіть свого бота → Bot Settings → Threads Settings, потім вимкніть 'Disallow users to create new threads'.\n\nПотім надішліть /topic знову."
|
||
enable_failed: "Не вдалося ввімкнути режим Telegram topic: {error}"
|
||
bound_status: "Цей topic пов'язано з:\nСесія: {label}\nID: {session_id}\n\nВикористовуйте /new, щоб замінити цей topic новою сесією.\nДля паралельної роботи відкрийте All Messages і надішліть там повідомлення, щоб створити інший topic."
|
||
thread_ready: "Багатосесійні Telegram topics увімкнено.\n\nЦей topic використовуватиметься як незалежна сесія Hermes. Використовуйте /new, щоб замінити поточну сесію цього topic. Для паралельної роботи відкрийте All Messages і надішліть там повідомлення, щоб створити інший topic."
|
||
untitled_session: "Сесія без назви"
|
||
restore_step_1: "1. Створіть або відкрийте topic. Щоб створити новий, відкрийте All Messages і надішліть там будь-яке повідомлення."
|
||
restore_step_2: "2. Надішліть /topic <session-id> усередині цього topic."
|
||
default_title: "Чат Hermes"
|
||
root_lobby: "Цей головний чат зарезервовано для системних команд.\n\nЩоб почати новий чат з Hermes, відкрийте topic All Messages угорі інтерфейсу бота й надішліть там будь-яке повідомлення. Telegram створить для нього новий topic; кожен topic працює як незалежний сеанс Hermes."
|
||
root_new: "Щоб почати новий паралельний чат з Hermes, відкрийте topic All Messages угорі інтерфейсу бота й надішліть там будь-яке повідомлення. Telegram створить для нього новий topic.\n\nКожен topic — це незалежний сеанс Hermes. Використовуйте /new усередині наявного topic лише якщо хочете замінити його поточний сеанс."
|
||
new_header: "У цьому topic розпочато новий сеанс Hermes.\n\nПорада: для паралельної роботи відкрийте All Messages і надішліть там повідомлення, щоб створити окремий topic, замість /new тут. /new замінює сеанс, прив'язаний до поточного topic."
|
||
help: "/topic — увімкнути багатосеансний режим у приватному чаті (один бот, багато паралельних чатів)\n\nВикористання:\n /topic Увімкнути режим topic або показати стан, якщо вже ввімкнено\n /topic help Показати це повідомлення\n /topic off Вимкнути режим topic і скинути прив'язки\n /topic <id> Усередині topic: відновити попередній сеанс за ID\n\nЯк це працює:\n1. Виконайте /topic один раз у цьому приватному чаті — Hermes перевірить, що в BotFather\n увімкнено Threads Settings, і ввімкне багатосеансний режим.\n2. Натисніть All Messages угорі бота й надішліть будь-яке повідомлення.\n Telegram створить для нього новий topic; кожен topic —\n незалежний сеанс Hermes (нова історія, новий контекст).\n3. Кореневий приватний чат стає системним лобі — надсилайте туди /topic, /status,\n /help, /usage. Звичайні запити пишіть у topic.\n4. /new усередині topic скидає лише сеанс цього topic.\n5. /topic <id> усередині topic відновлює в нього старий сеанс."
|
||
system_topic_name: "Система"
|
||
system_topic_intro: "Системний topic для команд і стану Hermes."
|
||
setup_image_caption: "BotFather → Bot Settings → Threads Settings"
|
||
no_chat_id: "Не вдалося визначити ID чату."
|
||
mode_not_enabled: "Багатосеансний режим topic для цього чату зараз не ввімкнено."
|
||
disable_failed: "Не вдалося вимкнути режим topic: {error}"
|
||
mode_disabled: "Багатосеансний режим topic для цього чату вимкнено.\n\nНаявні topics у Telegram не видаляються — вони просто перестануть працювати як окремі сеанси. Кореневий приватний чат знову працює як звичайний чат Hermes. Виконайте /topic, щоб увімкнути режим знову."
|
||
status_enabled: "Багатосеансні Telegram topics увімкнено."
|
||
status_how_to: "Щоб створити новий чат з Hermes, відкрийте All Messages угорі інтерфейсу бота й надішліть там будь-яке повідомлення. Telegram створить для нього новий topic."
|
||
previous_unlinked: "Попередні неприв'язані сеанси:"
|
||
restore_one: "Щоб відновити один із них:"
|
||
restore_example: "Приклад: надішліть /topic {session_id} усередині topic."
|
||
no_unlinked: "Попередніх неприв'язаних сеансів Telegram не знайдено."
|
||
restore_later: "Щоб відновити попередній сеанс пізніше:"
|
||
session_not_found: "Сеанс не знайдено: {session_id}"
|
||
not_telegram_session: "Це не сеанс Telegram, тому його не можна відновити в цьому topic."
|
||
not_your_session: "Цей сеанс не належить цьому користувачеві Telegram."
|
||
already_linked: "Цей сеанс уже прив'язано до іншого topic у Telegram."
|
||
restored: "Сеанс відновлено: {title}"
|
||
restored_last_message: "\n\nОстаннє повідомлення Hermes:\n{text}"
|
||
undo:
|
||
nothing: "Немає чого скасовувати."
|
||
removed: "↩️ Скасовано ходів: {turns} (повідомлень: {count}).\nРезервна копія: «{preview}»\nСкопіюйте/відредагуйте текст вище та надішліть його, щоб запитати знову звідси."
|
||
invalid_count: "Недійсне число «{arg}» — використовуйте /undo або /undo N."
|
||
update:
|
||
platform_not_messaging: "✗ /update доступний лише на платформах обміну повідомленнями. Виконайте `hermes update` у терміналі."
|
||
not_git_repo: "✗ Не git-репозиторій — оновлення неможливе."
|
||
hermes_cmd_not_found: "✗ Не вдалося знайти команду `hermes`. Hermes запущено, але команда оновлення не знайшла виконуваний файл у PATH або через поточний інтерпретатор Python. Спробуйте виконати `hermes update` вручну у вашому терміналі."
|
||
start_failed: "✗ Не вдалося запустити оновлення: {error}"
|
||
starting: "☤ Запуск оновлення Hermes… Я транслюватиму прогрес сюди."
|
||
reply_failed: "✗ Не вдалося надіслати відповідь процесу оновлення: {error}"
|
||
reply_sent: "✓ Надіслано `{label}` процесу оновлення."
|
||
failed_notice: "❌ Оновлення Hermes не вдалося; попередня версія працює далі. Виконайте `hermes update` на хості, щоб побачити повну помилку, або спробуйте /update пізніше."
|
||
prompt_default: " (за замовчуванням: {default})"
|
||
prompt: "☤ **Оновлення потребує вашої відповіді:**\n\n{prompt}{default_hint}\n\nВідповідайте `{prefix}approve` (так) або `{prefix}deny` (ні), або введіть відповідь напряму."
|
||
finished: "✅ Оновлення Hermes завершено."
|
||
timed_out: "❌ Час оновлення Hermes вичерпано через 30 хвилин."
|
||
finished_success: "✅ Оновлення Hermes успішно завершено."
|
||
last_lines: "{msg}\n\nОстанні рядки:\n```\n{tail}\n```"
|
||
managed_action: "оновити Hermes Agent"
|
||
not_applicable: "✗ `hermes update` не застосовується до цієї інсталяції ({method}).\nОновіть командою: {command}"
|
||
usage:
|
||
rate_limits: "⏱️ **Обмеження швидкості:** {state}"
|
||
header_session: "📊 **Використання токенів сеансу**"
|
||
label_model: "Модель: `{model}`"
|
||
label_input_tokens: "Вхідні токени: {count}"
|
||
label_cache_read: "Токени читання кешу: {count}"
|
||
label_cache_write: "Токени запису кешу: {count}"
|
||
label_output_tokens: "Вихідні токени: {count}"
|
||
label_total: "Усього: {count}"
|
||
label_api_calls: "Виклики API: {count}"
|
||
label_cost: "Вартість: {prefix}${amount}"
|
||
label_cost_included: "Вартість: включено"
|
||
label_context: "Контекст: {used} / {total} ({pct}%)"
|
||
label_compressions: "Стиснень: {count}"
|
||
breakdown_header: "🧩 **Розбивка контексту** _(оцінка)_"
|
||
breakdown_line: "• {label}: ~{count} ({pct}%)"
|
||
breakdown_cat_system_prompt: "Системний промпт"
|
||
breakdown_cat_tool_definitions: "Визначення інструментів"
|
||
breakdown_cat_rules: "Правила"
|
||
breakdown_cat_skills: "Навички"
|
||
breakdown_cat_mcp: "MCP"
|
||
breakdown_cat_subagent_definitions: "Визначення субагентів"
|
||
breakdown_cat_memory: "Пам'ять"
|
||
breakdown_cat_conversation: "Розмова"
|
||
header_session_info: "📊 **Інформація про сеанс**"
|
||
label_messages: "Повідомлень: {count}"
|
||
label_estimated_context: "Орієнтовний контекст: ~{count} токенів"
|
||
detailed_after_first: "_(Детальне використання доступне після першої відповіді агента)_"
|
||
no_data: "Дані про використання для цього сеансу відсутні."
|
||
unknown_subcommand: "Невідома підкоманда /usage: `{args}`. Спробуйте `/usage` або `/usage reset [--force]`."
|
||
reset_wrong_provider: "Накопичені скидання лімітів доступні лише з провайдером openai-codex. Спочатку перемкніться через `/model`."
|
||
credits:
|
||
not_logged_in: "Ви не ввійшли в Nous Portal. Увійдіть, щоб переглянути баланс кредитів і поповнити його."
|
||
verbose:
|
||
not_enabled: "Команду `/verbose` не ввімкнено для платформ обміну повідомленнями.\n\nУвімкніть у `config.yaml`:\n```yaml\ndisplay:\n tool_progress_command: true\n```"
|
||
mode_off: "⚙️ Прогрес інструментів: **OFF** — активність інструментів не показується."
|
||
mode_new: "⚙️ Прогрес інструментів: **NEW** — показується при зміні інструмента (довжина попереднього перегляду: `display.tool_preview_length`, за замовчуванням 40)."
|
||
mode_all: "⚙️ Прогрес інструментів: **ALL** — показується кожен виклик інструмента (довжина попереднього перегляду: `display.tool_preview_length`, за замовчуванням 40)."
|
||
mode_verbose: "⚙️ Прогрес інструментів: **VERBOSE** — кожен виклик інструмента з повними аргументами."
|
||
mode_log: "⚙️ Прогрес інструментів: **LOG** — тихо в чаті; виклики інструментів записуються до ~/.hermes/logs/tool_calls.log."
|
||
saved_suffix: "_(збережено для **{platform}** — набуде чинності з наступного повідомлення)_"
|
||
save_failed: "_(не вдалося зберегти у конфігурацію: {error})_"
|
||
voice:
|
||
enabled_voice_only: "Голосовий режим увімкнено.\nЯ відповідатиму голосом, коли ви надсилатимете голосові повідомлення.\nВикористайте /voice tts, щоб отримувати голосові відповіді на всі повідомлення."
|
||
disabled_text: "Голосовий режим вимкнено. Лише текстові відповіді."
|
||
tts_enabled: "Авто-TTS увімкнено.\nУсі відповіді міститимуть голосове повідомлення."
|
||
status_mode: "Голосовий режим: {label}"
|
||
status_channel: "Голосовий канал: #{channel}"
|
||
status_participants: "Учасники: {count}"
|
||
status_member: " - {name}{status}"
|
||
speaking: " (говорить)"
|
||
enabled_short: "Голосовий режим увімкнено."
|
||
disabled_short: "Голосовий режим вимкнено."
|
||
label_off: "Вимкнено (лише текст)"
|
||
label_voice_only: "Увімкнено (голосова відповідь на голосові повідомлення)"
|
||
label_all: "TTS (голосова відповідь на всі повідомлення)"
|
||
help: "{toggle}\n\n**Як працює /voice**\n• `/voice on` — голосова відповідь, коли ви надсилаєте голосове повідомлення\n• `/voice tts` — голосова відповідь на *кожне* повідомлення\n• `/voice off` — повернутися до відповідей лише текстом\n• `/voice status` — показати поточний режим\n• `/voice` (без аргументу) — швидке перемикання між увімк і вимк{channels}"
|
||
help_channels: "\n\n**Живі голосові канали (Discord)**\n• Спершу зайдіть у голосовий канал, потім `/voice channel` — я підключуся, слухатиму й відповідатиму голосом\n• `/voice leave` — від'єднатися від голосового каналу"
|
||
transcript_echo_short: "🎙️ «{text}»"
|
||
channel_unsupported: "Голосові канали не підтримуються на цій платформі."
|
||
channel_guild_only: "Ця команда працює лише на сервері Discord."
|
||
channel_not_in_voice: "Спершу потрібно зайти в голосовий канал."
|
||
channel_join_failed: "Не вдалося приєднатися до голосового каналу: {error}"
|
||
channel_deps_missing: "Відсутні голосові залежності (PyNaCl / davey). Виконайте: `{hint}`"
|
||
channel_join_permissions: "Не вдалося приєднатися до голосового каналу. Перевірте дозволи бота (Connect + Speak)."
|
||
channel_joined: "Приєднався до голосового каналу **{name}**.\nЯ озвучуватиму відповіді та слухатиму вас. Використайте /voice leave, щоб від'єднатися."
|
||
channel_not_joined: "Не в голосовому каналі."
|
||
channel_left: "Голосовий канал покинуто."
|
||
transcript_echo: "**[Голос]** <@{user}>: {text}"
|
||
yolo:
|
||
disabled: "⚠️ Режим YOLO для цього сеансу **ВИМКНЕНО** — небезпечні команди потребуватимуть схвалення."
|
||
enabled: "⚡ Режим YOLO для цього сеансу **УВІМКНЕНО** — усі команди схвалюються автоматично. Використовуйте з обережністю."
|
||
shared:
|
||
session_db_unavailable: "База даних сеансів недоступна."
|
||
session_db_unavailable_prefix: "База даних сеансів недоступна"
|
||
session_not_found: "Сеанс не знайдено в базі даних."
|
||
warn_passthrough: "⚠️ {error}"
|
||
unknown_error: "невідома помилка"
|
||
error_prefix: "Помилка: {error}"
|
||
history_unreadable: "⚠️ Зараз я не можу прочитати історію цієї розмови (ваші попередні повідомлення існують, але не завантажуються). Виконайте `hermes doctor --fix` на хості або використайте /new, щоб почати з чистого аркуша."
|
||
agent_running_retry_later: "Агент працює — дочекайтеся завершення ходу, потім /{command}."
|
||
none_marker: "(немає)"
|
||
none_value: "немає"
|
||
unknown_value: "невідомо"
|
||
exec_approval:
|
||
header: "Hermes хоче виконати команду, яка потребує вашого дозволу"
|
||
reason_label: "Чому позначено"
|
||
default_reason: "небезпечна команда"
|
||
smart_deny_line: "Smart DENY: перевизначення власника діє лише для цієї однієї операції."
|
||
smart_deny_heading: "⚠️ **Smart DENY — перевизначення власника для однієї операції:**"
|
||
timed_out_notice: "⌛ Час схвалення минув через {window} — команду НЕ виконано. Попросіть мене спробувати ще раз, якщо вона все ще потрібна, або збільште approvals.timeout у config.yaml."
|
||
timed_out_card_body: "{notice}\n```\n{command}\n```"
|
||
action_once: "Дозволити один раз"
|
||
action_session: "Дозволити на сеанс"
|
||
action_always: "Дозволяти завжди"
|
||
action_deny: "Відхилити"
|
||
deadline: "Якщо ви не відповісте протягом {window}, команду НЕ буде виконано."
|
||
text_choice_once: "Відповідайте `{prefix}approve`, щоб виконати один раз"
|
||
text_choice_session: "`{prefix}approve session`, щоб дозволити цей шаблон до кінця сеансу"
|
||
text_choice_always: "`{prefix}approve always`, щоб дозволити назавжди"
|
||
text_choice_deny: "`{prefix}deny`, щоб скасувати"
|
||
text_choice_joiner: ", "
|
||
text_choice_last: ", або {choice}.\n"
|
||
text_body: "{heading}\n```\n{command}\n```\n{reason_label}: {reason}\n\n"
|
||
notify:
|
||
media_kind:
|
||
audio: "аудіо"
|
||
video: "відео"
|
||
file: "файл"
|
||
image: "зображення"
|
||
media_delivery_failed: "⚠️ Не вдалося доставити вкладення ({kind})."
|
||
media_delivery_failed_with_name: "⚠️ Не вдалося доставити вкладення ({kind}: {file_name})."
|
||
delivery_failed_retry: "⚠️ Не вдалося доставити повідомлення після кількох спроб. Спробуйте ще раз — ваш запит оброблено, але відповідь не вдалося надіслати."
|
||
plain_fallback_prefix: "(Не вдалося відформатувати відповідь, звичайний текст:)\n\n{content}"
|
||
turn_error_no_details: "подробиць немає"
|
||
turn_error_detailed: "Вибачте, сталася помилка ({error_type}).\n{error_detail}\nСпробуйте ще раз або використайте /reset, щоб почати новий сеанс."
|
||
turn_error: "Вибачте, сталася помилка."
|
||
context_injection_refused: "Впровадження контексту відхилено."
|
||
no_home_channel: "📬 Для {platform} не задано головний канал. Головний канал — це місце, куди Hermes доставляє результати cron-завдань і міжплатформні повідомлення.\n\nВведіть {sethome_cmd}, щоб зробити цей чат головним каналом, або просто проігноруйте це повідомлення."
|
||
unauthorized:
|
||
action_notice: "Цей бот приватний, і вас немає в його списку дозволених. Якщо ви його власник, виконайте `hermes pairing approve {platform} <request-id>` на хості (`hermes pairing list` показує id)."
|
||
admin_only_can_run: "Вам доступні: "
|
||
admin_only_whoami_hint: ". Повний список — /whoami."
|
||
admin_only_none: "На цій платформі для не-адміністраторів не ввімкнено жодної slash-команди. Попросіть адміністратора додати вас до allow_admin_from або задати user_allowed_commands."
|
||
admin_only: "⛔ /{command} тут доступна лише адміністраторам. {suffix}"
|
||
owner_hint_env: "додайте ID до {env_var} у {home}/.env і перезапустіть шлюз"
|
||
owner_hint_generic: "додайте ID до списку дозволених користувачів цієї платформи і перезапустіть шлюз"
|
||
owner_notice: "Відхилено повідомлення від нерозпізнаного користувача {platform} {who}. Якщо це ви або хтось, кому ви довіряєте, {allowlist}; або задайте `unauthorized_dm_behavior: pair` для {platform} у {home}/config.yaml, щоб невідомі відправники отримували код зв'язування, який ви зможете схвалити командою `hermes pairing approve {platform} <code>`."
|
||
picker:
|
||
page_info: " ({start}–{end} з {total})"
|
||
clarify:
|
||
hint_single: "Відповідайте номером, текстом варіанта або власною відповіддю."
|
||
hint_multi: "Можна вибрати кілька — відповідайте номерами через кому або пробіл (напр. \"1, 3\"), текстом варіантів або власною відповіддю."
|
||
option_line: " {index}. {choice}"
|
||
question: "❓ {question}"
|
||
answered: "✅ відповідь: {response}"
|
||
cancelled: "↩️ Уточнення скасовано — ваше повідомлення буде оброблено як продовження."
|
||
expired: "⏳ Термін цього запиту минув — надішліть новий запит."
|
||
native_stream_placeholder: "💬 Очікую на ваш вибір..."
|
||
skip_hint: 'Відповідайте «skip», щоб пропустити це питання.'
|
||
errors:
|
||
rate_limited: "⏱️ Сервіс AI-моделі обмежує частоту запитів. Зачекайте трохи, а потім скористайтеся /retry."
|
||
auth_failed: "⚠️ Не вдалося ввійти в сервіс AI-моделі. Скористайтеся /login, щоб увійти знову, або попросіть того, хто адмініструє цього бота, виконати `hermes doctor` на хості."
|
||
bad_request: "⚠️ Сервіс AI-моделі відхилив цей запит. Спробуйте переформулювати повідомлення або скористайтеся /model, щоб змінити модель."
|
||
connection_interrupted: "⚠️ З'єднання із сервісом AI-моделі обірвалося посеред запиту — зазвичай це тимчасово. Скористайтеся /retry, щоб повторити; якщо повторюється, виконайте `hermes doctor` на хості."
|
||
unreachable: "⚠️ Сервіс AI-моделі зараз недоступний — налаштована кінцева точка моделі не запущена або до неї немає доступу. Зачекайте трохи та скористайтеся /retry; якщо проблема не зникає, виконайте `hermes doctor` на хості."
|
||
connection_unknown: "⚠️ Hermes не зміг з'єднатися із сервісом AI-моделі (SDK не надав подробиць). Скористайтеся /retry, щоб повторити; якщо проблема не зникає, виконайте `hermes doctor` на хості."
|
||
context_overflow: "⚠️ Ця розмова стала надто довгою, щоб я міг прочитати її цілком. Скористайтеся /compress, щоб скоротити історію, або /new, щоб почати нову розмову."
|
||
usage_limit_resets: "⏱️ Ліміт використання сервісу AI-моделі вичерпано; він скидається через {window}. Після цього скористайтеся /retry або /model, щоб змінити модель."
|
||
provider_kept_failing: "⚠️ Сервіс AI-моделі раз за разом повертав помилку. Скористайтеся /retry, щоб повторити, або /model, щоб змінити модель. Подробиці — в журналі шлюзу (`hermes logs`)."
|
||
session_storage_unavailable_disk: "⚠️ Сховище сеансів було тимчасово недоступне, тому цей хід зупинено, щоб захистити історію розмови. Перевірте вільне місце на диску, а потім надішліть повідомлення ще раз."
|
||
session_storage_unavailable: "⚠️ Сховище сеансів було тимчасово недоступне, тому цей хід зупинено, щоб захистити історію розмови. Ваше повідомлення вже мало б зберегтися — надішліть його ще раз за хвилину."
|
||
generic_failed: "⚠️ Щось пішло не так, і я не зміг завершити цю відповідь. Скористайтеся /retry, щоб повторити, або /new, щоб почати нову розмову. Технічні подробиці — в журналі шлюзу (`hermes logs`)."
|
||
interrupted_before_start: "⚠️ Ваше повідомлення було перервано ще до початку обробки (ймовірно, недавнім /stop). Надішліть його ще раз."
|
||
processing_incomplete: "обробку не завершено"
|
||
stopped_before_finishing: "⚠️ Мені довелося зупинитися, не завершивши{reason}. Скористайтеся /retry, щоб повторити, або /compress, якщо ця розмова стала дуже довгою."
|
||
no_response: "⚠️ Обробку завершено, але відповідь не згенеровано. Можливо, це тимчасова помилка — спробуйте надіслати повідомлення ще раз."
|
||
previous_turn_cleanup: "⚠️ Ваше повідомлення не оброблено (попередній хід ще завершувався). Надішліть його ще раз."
|
||
unexpected_silence: "⚠️ Модель повернула лише маркер мовчання на повідомлення, яке потребувало відповіді. Спробуйте ще раз або переформулюйте."
|
||
empty_response_model_label: "Модель"
|
||
hint_auth: " Ваш вхід у сервіс AI-моделі закінчився або API-ключ неправильний. Скористайтеся /login тут або виконайте `{relogin}` на хості."
|
||
hint_quota: " Баланс або квоту сервісу AI-моделі вичерпано. Поповніть їх на сайті сервісу або скористайтеся /model, щоб змінити модель."
|
||
hint_overloaded: " Сервіс AI-моделі тимчасово перевантажений. Зачекайте трохи, а потім скористайтеся /retry."
|
||
hint_rate_limited: " Частоту ваших запитів обмежено. Зачекайте трохи та спробуйте ще раз."
|
||
hint_usage_limit_resets: " Ліміт використання вашого плану вичерпано. Він скидається через ~{hours} год."
|
||
hint_usage_limit: " Ліміт використання вашого плану вичерпано. Зачекайте, доки він скинеться."
|
||
hint_rejected: " Сервіс AI-моделі відхилив запит."
|
||
generic_failed_with_hint: "⚠️ Щось пішло не так, і я не зміг завершити цю відповідь.{hint}\nСкористайтеся /retry, щоб повторити, або /new, щоб почати нову розмову. Технічні подробиці — в журналі шлюзу (`hermes logs`)."
|
||
history_unavailable: "⚠️ Історія цього сеансу тимчасово недоступна, тому це повідомлення не оброблено. Попросіть оператора перевірити state.db, а після відновлення надішліть повідомлення ще раз. Використовуйте /reset лише якщо справді хочете почати нову розмову."
|
||
no_credentials: "⚠️ Я не зміг з'єднатися із сервісом AI-моделі, тому це повідомлення не оброблено. Скористайтеся /login, щоб увійти знову, або /model, щоб вибрати іншу модель. Якщо помилка повторюється, виконайте `hermes doctor` на хості."
|
||
cron_session_read_only: "⚠️ Цей чат належить до запланованого завдання й виконує лише його, тому ваше повідомлення не було виконано. Почніть новий чат, щоб надіслати його."
|
||
workspace_unavailable: "⚠️ Робочої теки цього чату більше не існує ({path}), тому ваше повідомлення не було виконано. Створіть теку знову або перенесіть чат до іншої (`/worktree new` у CLI, «Move to project» в настільному застосунку), а потім надішліть повідомлення ще раз."
|
||
launch_credentials_unavailable: "⚠️ Цей чат більше не може використовувати ключ API, з яким його було розпочато{detail}, тому в ньому нічого не може виконуватися. Відкритий чат ніколи сам не перемикається на інший ключ, тож /retry завершиться так само. Скористайтеся /new, щоб почати новий чат із поточним ключем."
|
||
skills:
|
||
disabled: "Навичку **{name}** встановлено, але вимкнено.\nУвімкніть її командою: `hermes skills config`"
|
||
not_installed: "Навичка **{name}** доступна, але не встановлена.\nВстановіть її командою: `hermes skills install {install_name}`"
|
||
disabled_for_platform: "Навичку **{name}** вимкнено для {platform}.\nУвімкніть її командою: `hermes skills config`"
|
||
stacked_disabled: "Навички **{names}** у цьому складеному виклику вимкнено для {platform}.\nУвімкніть їх командою: `hermes skills config`"
|
||
stacked_load_failed: "Не вдалося завантажити складені навички для /{command}."
|
||
gate_off: "Схвалення записів навичок вимкнено (skills.write_approval). Увімкніть його командою /skills approval on, а потім переглядайте підготовлені записи тут через /skills pending."
|
||
unknown_subcommand: "Невідома підкоманда /skills на цій платформі. Доступні: pending, approve <id>, reject <id>, diff <id>, approval <on|off>. (Пошук і встановлення доступні лише в CLI.)"
|
||
diff_truncated: "\n… (скорочено — повний diff у ~/.hermes/pending/skills/{pending_id}.json)"
|
||
busy:
|
||
action_restarting: "перезапускається"
|
||
action_shutting_down: "завершує роботу"
|
||
reject_model: "Агент працює — зачекайте або спочатку виконайте /stop, а потім змінюйте модель."
|
||
reject_codex_runtime: "Агент працює — зачекайте або спочатку виконайте /stop, а потім змінюйте середовище виконання."
|
||
reject_moa: "Агент працює — зачекайте або спочатку виконайте /stop, а потім запускайте /moa."
|
||
drain_queued: "⏳ Шлюз {action} — повідомлення поставлено в чергу на перший хід після його повернення."
|
||
drain_rejected: "⏳ Шлюз {action} і зараз не приймає ще один хід."
|
||
drain_rejected_new_work: "⏳ Шлюз {action} і зараз не приймає нову роботу."
|
||
demoted_tail: " — ваше повідомлення в черзі й буде оброблене після завершення (щоб скасувати все, скористайтеся /stop)."
|
||
elapsed_min: "минуло {minutes} хв"
|
||
running_tool: "виконується: {tool}"
|
||
ack_detail_wrap: " ({detail})"
|
||
ack_detail_joiner: ", "
|
||
ack: "{head}{detail}{tail}"
|
||
steered_subagents_head: "⏩ Скеровано в поточний запуск і його активних субагентів"
|
||
steered_subagents_tail: ". Ваше повідомлення надійде після їхнього наступного виклику інструмента."
|
||
steered_head: "⏩ Скеровано в поточний запуск"
|
||
steered_tail: ". Ваше повідомлення надійде після наступного виклику інструмента."
|
||
redirected_head: "↪ Поточний запуск перенаправлено"
|
||
redirected_tail: ". Я скоригую роботу з урахуванням вашого виправлення."
|
||
subagent_working_head: "⏳ Субагент працює"
|
||
compressing_head: "⏳ Стискаю контекст"
|
||
queued_head: "⏳ У черзі на наступний хід"
|
||
queued_tail: ". Я відповім, щойно завершиться поточне завдання."
|
||
interrupting_head: "⚡ Перериваю поточне завдання"
|
||
interrupting_tail: ". Незабаром відповім на ваше повідомлення."
|
||
slash_rejected: "⏳ Агент працює — `/{command}` не можна виконати посеред ходу. Дочекайтеся поточної відповіді або спочатку виконайте `/stop`."
|
||
reject_goal: "Агент працює — під час виконання використовуйте /goal status / pause / clear / wait, або виконайте /stop, перш ніж ставити нову ціль."
|
||
reject_loop: "Агент працює — під час виконання використовуйте /loop status / pause / stop, або виконайте /stop, перш ніж задавати новий цикл."
|
||
draining_maintenance: "⏳ Цей агент завершує поточну роботу перед сервісною дією і зараз не приймає нових ходів. Він повернеться за мить — надішліть повідомлення трохи пізніше."
|
||
another_turn_running: "⏳ У цьому сеансі ще виконується інший хід. Щоб захистити стенограму, це повідомлення не оброблено. Дочекайтеся завершення активного ходу, а потім надішліть його ще раз."
|
||
behavior_queue_short: "ставить у чергу на наступний хід"
|
||
behavior_queue_long: "Поки Hermes зайнятий, повідомлення ставитимуться в чергу на наступний хід."
|
||
behavior_steer_short: "скеровує в поточний запуск (після наступного виклику інструмента)"
|
||
behavior_steer_long: "Повідомлення скеровуватимуться в поточний запуск (після наступного виклику інструмента)."
|
||
behavior_interrupt_short: "перериває поточний запуск"
|
||
behavior_interrupt_long: "Поки Hermes зайнятий, повідомлення перериватимуть поточний запуск."
|
||
status: "**Режим введення під час зайнятості: `{mode}`\nПовідомлення під час зайнятості: _{behavior}_\nЗмінити можна через `/busy queue`, `/busy steer` або `/busy interrupt`."
|
||
unknown_mode: "Невідомий режим `{arg}`. Використовуйте `/busy queue`, `/busy steer` або `/busy interrupt`."
|
||
save_failed: "Не вдалося зберегти режим введення під час зайнятості в конфігурацію. Режим не змінено."
|
||
set: "Режим введення під час зайнятості: **`{mode}`** (збережено).\n_{behavior}_"
|
||
pause:
|
||
resumed: "▶️ Відновлено — нова робота знову приймається."
|
||
not_paused: "Hermes не був на паузі."
|
||
reason_suffix: " (причина: {reason})"
|
||
already_paused: "⏸️ Hermes уже на паузі{suffix}. Скористайтеся `/pause off`, щоб відновити."
|
||
paused: "⏸️ Пауза{suffix}. Нові завдання cron, kanban і шлюзу призупинено; вже розпочата робота завершується як звичайно. Скористайтеся `/pause off`, щоб відновити."
|
||
queue:
|
||
usage: "Використання: /queue <prompt>"
|
||
queued: "Поставлено в чергу на наступний хід."
|
||
queued_depth: " (у черзі: {depth})"
|
||
steer:
|
||
usage: "Використання: /steer <prompt>"
|
||
usage_idle: "Використання: /steer <prompt> (агент не працює; надсилаю як звичайне повідомлення)"
|
||
queued_starting: "Агент ще запускається — /steer поставлено в чергу на наступний хід."
|
||
queued_no_agent: "Немає активного агента — /steer поставлено в чергу на наступний хід."
|
||
failed: "⚠️ Не вдалося скерувати: {error}"
|
||
rejected_empty: "Скерування відхилено (порожній вміст)."
|
||
target_subagents: "запуск і його активних субагентів"
|
||
target_run: "запуск"
|
||
queued: "⏩ Скерування поставлено в чергу в поточний {target} — надійде після наступного виклику інструмента: '{preview}'"
|
||
suggestions:
|
||
failed: "Команда пропозицій не вдалася: {error}"
|
||
blueprint:
|
||
failed: "Команда cron-шаблону не вдалася: {error}"
|
||
confirm:
|
||
destructive_prompt: "⚠️ **Підтвердження /{command}**\n\n{detail}\n\nОберіть:\n• **Схвалити один раз** — продовжити лише цього разу\n• **Завжди схвалювати** — продовжити та назавжди приховати цей запит\n• **Скасувати** — залишити поточну розмову\n\n_Текстова альтернатива: відповідайте `{prefix}approve`, `{prefix}always` або `{prefix}cancel`._"
|
||
destructive_optout: "\n\nℹ️ Надалі /clear, /new, /reset і /undo виконуватимуться без підтвердження. Увімкнути знову можна через `approvals.destructive_slash_confirm: true` у config.yaml."
|
||
destructive_optout_save_failed: "\n\n⚠️ Не вдалося зберегти це налаштування (config.yaml недоступний для запису), тому /clear, /new, /reset і /undo наступного разу знову запитають підтвердження. Щоб вимкнути його назавжди, встановіть `approvals.destructive_slash_confirm: false` у config.yaml."
|
||
cancelled: "🟡 /{command} скасовано. Розмова без змін."
|
||
detail_new: "Це почне новий сеанс і відкине поточну історію розмови."
|
||
detail_undo_one: "Це видалить з історії останній обмін репліками (ваше повідомлення та відповідь асистента)."
|
||
detail_undo_many: "Це видалить з історії останні {count} ходів користувача."
|
||
hooks:
|
||
command_blocked: "Команду `/{command}` заблокував хук."
|
||
prompt_command:
|
||
start_failed: "Не вдалося запустити /{command} — спробуйте ще раз."
|
||
learn:
|
||
ack_described: "Створюю навичку з того, що ви описали…"
|
||
ack_conversation: "Створюю навичку з цієї розмови…"
|
||
plan:
|
||
ack_task: "Планування: {task}"
|
||
ack_conversation: "Планую на основі контексту цієї розмови…"
|
||
init:
|
||
start_failed: "Не вдалося запустити /init — спробуйте ще раз."
|
||
ack_update: "Оновлюю AGENTS.md за результатами сканування проєкту…"
|
||
ack_generate: "Генерую AGENTS.md за результатами сканування проєкту…"
|
||
moa:
|
||
prepare_failed: "Не вдалося підготувати хід MoA."
|
||
quick_command:
|
||
no_output: "Команда не повернула виводу."
|
||
timed_out: "Час очікування швидкої команди минув (30 с)."
|
||
error: "Помилка швидкої команди: {error}"
|
||
no_command: "Для швидкої команди '/{command}' не визначено команду."
|
||
unsupported_type: "Швидка команда '/{command}' має непідтримуваний тип (підтримуються: 'exec', 'alias')."
|
||
no_target: "Для швидкої команди '/{command}' не визначено ціль."
|
||
unknown_command: "Невідома команда `/{command}`. Введіть /commands, щоб побачити доступні команди, або надішліть текст повторно без початкової косої риски, щоб відправити його як звичайне повідомлення."
|
||
session:
|
||
auto_reset_notice: "◐ Сеанс скинуто після зупинки. Історію розмови очищено.\nВикористайте /resume, щоб переглянути й відновити попередній сеанс.\n"
|
||
auto_reset_context_exhausted: "\n\n🔄 Сеанс автоматично скинуто — розмова перевищила максимальний розмір контексту, і стиснути її далі не вдалося. Ваше наступне повідомлення почне новий сеанс."
|
||
info_model: "◆ Модель: `{model}`"
|
||
info_provider: "◆ Провайдер: {provider}"
|
||
info_context: "◆ Контекст: {tokens} токенів ({source})"
|
||
info_acting_model: "◆ Робоча модель (оплачується за цей запуск): {provider}:{model}"
|
||
info_endpoint: "◆ Кінцева точка: {url}"
|
||
proxy:
|
||
requires_aiohttp: "⚠️ Режим проксі потребує aiohttp. Виконайте: {hint}"
|
||
url_missing: "⚠️ URL проксі не налаштовано (GATEWAY_PROXY_URL або gateway.proxy_url)"
|
||
http_error: "⚠️ Помилка проксі ({status}): {error}"
|
||
closed_early: "⚠️ З'єднання з проксі закрито до завершення відповіді"
|
||
connection_error: "⚠️ Помилка з'єднання з проксі: {error}"
|
||
no_response: "(Немає відповіді від віддаленого агента)"
|
||
progress:
|
||
status_fallback_long: "ще працюю"
|
||
status_fallback_short: "секунду"
|
||
stuck_warning: "⚠️ Здається, я застряг (немає активності {minutes} хв). Якщо протягом наступних {remaining} хв нічого не станеться, я припиню це завдання. Ви можете почекати ще, надіслати /stop, щоб скасувати його, або /new, щоб почати нову розмову."
|
||
timeout_header: "⏱️ Агент неактивний {minutes} хв — немає викликів інструментів чи відповідей API."
|
||
timeout_stuck_tool: "Схоже, агент застряг на інструменті `{tool}` ({seconds}с від останньої активності, {progress})."
|
||
timeout_last_activity: "Остання активність: {activity} ({seconds}с тому, {progress}). Можливо, агент очікував відповіді API."
|
||
timeout_hint: "Щоб збільшити ліміт, задайте agent.gateway_timeout у config.yaml (значення в секундах, 0 = без ліміту) і перезапустіть шлюз.\nСпробуйте ще раз або використайте /reset, щоб почати з чистого аркуша."
|
||
working_heartbeat: "⏳ Працюю — {minutes} хв{detail}"
|
||
thinking_prefix: "💬 {text}"
|
||
tool_head: "{emoji} {tool}"
|
||
tool_verbose: "{emoji} {tool}({keys})\n{args}"
|
||
tool_preview: "{emoji} {tool}: \"{preview}\""
|
||
tool_pending: "{emoji} {tool}..."
|
||
task_status_running: "виконується"
|
||
task_status_complete: "завершено"
|
||
task_status_error: "помилка"
|
||
task_line: "- {title} - {status}"
|
||
task_card_title: "Hermes працює"
|
||
pairing:
|
||
validity_hour: "{hours} година"
|
||
validity_hours: "{hours} годин"
|
||
code_reply: "Вітаю! Я вас ще не знаю, тому не можу відповісти, доки власник цього бота вас не схвалить.\n\nВаш код зв'язування: `{code}` (дійсний {validity})\n\nЯкщо цей бот запускаєте ви, відкрийте термінал і виконайте: `{approve_cmd}`. Інакше надішліть цю команду власникові бота. Після схвалення надішліть своє повідомлення ще раз."
|
||
rate_limited: "Зараз надто багато запитів на зв'язування. Зачекайте кілька хвилин і надішліть повідомлення ще раз."
|
||
shutdown:
|
||
action_shutting_down: "вимикається"
|
||
action_restarting: "перезапускається"
|
||
cron_interrupted: "⚠️ Заплановане завдання '{job}' перервано, бо Hermes {action}; цього разу результату немає. Воно знову виконається за розкладом, або запустіть його зараз командою `hermes cron run {job}`, коли Hermes знову запрацює."
|
||
notice_shutdown: "⚠️ Hermes вимикається — ваше поточне завдання буде перервано. Коли він знову буде онлайн, надішліть будь-яке повідомлення, і я спробую продовжити з того місця, де ми зупинилися."
|
||
notice_restart: "⚠️ Hermes перезапускається — ваше поточне завдання буде перервано. Після перезапуску надішліть будь-яке повідомлення, і я спробую продовжити з того місця, де ви зупинилися."
|
||
startup:
|
||
handoff_thread_title: "Hermes — {title}"
|
||
restarted: "♻ Шлюз успішно перезапущено. Ваш сеанс продовжується."
|
||
online: "♻️ Шлюз онлайн — Hermes повернувся й готовий до роботи."
|
||
db_corrupt: "⚠️ Виявлено пошкодження бази даних сеансів. Повідомлення можуть не зберігатися. Варіанти відновлення:\n1. Виконайте `hermes {profile_arg}doctor --fix`\n2. Зупиніть шлюз, потім відновіть командами:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (якщо повідомляє, що відновлення можливе) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — відновлення спочатку робить знімок пошкодженого файлу; НЕ запускайте `sqlite3 ... \".recover\"` на робочому state.db — вразливий CLI sqlite3 може пошкодити його ще більше\n3. Відновіть із резервної копії в {backups_dir}/\nВиконайте `hermes {profile_arg}doctor` для очищеної діагностики."
|
||
db_fts_corrupt: "⚠️ База даних сеансів повідомила про пошкодження, обмежене пошуковим індексом (FTS5); таблиці повідомлень не пошкоджено. Повідомлення можуть не зберігатися, доки його не полагоджено: виконайте `hermes {profile_arg}doctor --fix`, потім перезапустіть шлюз. Не запускайте інструменти відновлення й не відновлюйте резервну копію, якщо `hermes {profile_arg}doctor` не підтвердить пошкодження."
|
||
db_then_restart: "{action} Потім `hermes {profile_arg}gateway restart`."
|
||
db_unavailable: "⚠️ База даних сеансів недоступна — повідомлення можуть не зберігатися, а /resume буде порожнім. Причина: {cause}. {action}"
|
||
cron_store:
|
||
unwritable: "⚠️ Сховище cron {store} недоступне для запису ({error}) з {since}. Заплановані завдання пропускаються, доки запис знову не стане можливим. Виправлення: {fix}."
|
||
recovered: "✅ Сховище cron {store} знову доступне для запису; пропущено запусків: {skipped}, кожне завдання буде виконано один раз."
|
||
whoami:
|
||
scope_dm: "DM"
|
||
scope_group: "група/канал"
|
||
header: "**Ви** — {platform} ({scope})\nID користувача: `{user_id}`\n"
|
||
tier_unrestricted: "Рівень: без обмежень (для цієї області не налаштовано список адміністраторів)\nСлеш-команди: усі доступні"
|
||
tier_admin: "Рівень: **адміністратор**\nСлеш-команди: усі доступні"
|
||
tier_user: "Рівень: користувач\nСлеш-команди, які ви можете виконувати: {commands}"
|
||
platform:
|
||
usage: "Використання: /platform <list|pause|resume> [name]\n /platform list — показати стан платформ\n /platform pause <name> — припинити повторні спроби для збійної платформи\n /platform resume <name> — повернути призупинену платформу в чергу"
|
||
header: "**Платформи шлюзу**"
|
||
connected: "Підключено: {platforms}"
|
||
reason_default: "призупинено"
|
||
reason_manual: "призупинено через /platform pause"
|
||
item_paused: " · {name} — ПРИЗУПИНЕНО ({reason}). Відновити: `/platform resume {name}`."
|
||
item_retrying: " · {name} — повторна спроба (спроба {attempts})"
|
||
none_failed: "Збійні/призупинені: (немає)"
|
||
usage_action: "Використання: /platform {action} <name>"
|
||
unknown: "Невідома платформа: {name}"
|
||
not_queued_pause: "{name} не в черзі повторних спроб (платформа або підключена, або не ввімкнена)."
|
||
already_paused: "{name} уже призупинено."
|
||
paused: "✓ {name} призупинено. Відновіть через `/platform resume {name}` або скиньте командою `hermes gateway restart`."
|
||
not_queued_resume: "{name} не в черзі повторних спроб — нічого відновлювати."
|
||
already_retrying: "{name} уже повторює спроби — відновлення не потрібне."
|
||
resumed: "✓ {name} відновлено — повторна спроба на наступному циклі спостерігача."
|
||
bundles:
|
||
unavailable: "Підсистема пакетів недоступна: {error}"
|
||
default_desc: "Завантажити {count} навичок"
|
||
none_plain: "Пакети навичок не встановлено.\nСтворіть пакет командою: hermes bundles create <name> --skill <s1> --skill <s2>\nКаталог: {dir}"
|
||
header_plain: "Пакети навичок (встановлено: {count}):"
|
||
item_plain: "/{slug} — {desc} ({count} навичок)"
|
||
invoke_hint_plain: "Викличте пакет через /<slug>, щоб завантажити всі його навички."
|
||
none: "Пакети навичок не встановлено.\nСтворіть пакет на хості командою:\n `hermes bundles create <name> --skill <s1> --skill <s2>`\nКаталог: `{dir}`"
|
||
header: "**Пакети навичок** (встановлено: {count}):"
|
||
item: "• `/{slug}` — {desc} _({count} навичок)_"
|
||
invoke_hint: "Викличте пакет через `/<slug>`, щоб завантажити всі його навички."
|
||
memory:
|
||
unknown_subcommand: "Невідома підкоманда /memory. Використовуйте: pending, approve <id>, reject <id>, approval <on|off>."
|
||
approvals:
|
||
admin_only: "Лише адміністратори шлюзу можуть змінювати постійний режим схвалення."
|
||
heartbeat:
|
||
unavailable: "Heartbeat недоступний (немає сеансу)."
|
||
paused: "⏸ Heartbeat призупинено: {prompt}"
|
||
none_set: "Heartbeat не задано."
|
||
no_resume: "Немає heartbeat для відновлення."
|
||
resumed: "▶ Heartbeat відновлено (кожні {interval}): {prompt}"
|
||
cleared: "✓ Heartbeat очищено."
|
||
usage: "Використання: /heartbeat every <interval> <prompt> (напр. /heartbeat every 10m Перевір CI)\nТакож: /heartbeat status | pause | resume | clear"
|
||
interval_too_small: "Інтервал надто малий — мінімум {min_seconds}с."
|
||
prompt_required: "Використання: /heartbeat every <interval> <prompt> — промпт обов'язковий."
|
||
invalid_prefix: "Недійсний heartbeat"
|
||
set: "♥ Heartbeat задано (кожні {interval}): {prompt}\nСпрацьовує як звичайний хід, щойно цей сеанс простоює й інтервал минув. Діє, поки працює шлюз — для довготривалих розкладів використовуйте `hermes cron`."
|
||
refine:
|
||
unavailable: "/refine недоступний (немає сеансу)."
|
||
nothing_yet: "Поки нема що опрацьовувати — спочатку надішліть повідомлення."
|
||
empty: "Поки нема що опрацьовувати — розмова порожня."
|
||
start_failed: "Не вдалося запустити /refine: {error}"
|
||
focus_suffix: " (фокус: {focus})"
|
||
started: "⚗ Переглядаю цю розмову у фоні{focus_suffix} — про всі оновлення пам'яті чи навичок повідомлю після завершення."
|
||
review:
|
||
unavailable: "/review недоступний (немає сеансу)."
|
||
nothing_yet: "Поки нема що переглядати — спочатку надішліть повідомлення."
|
||
start_failed: "Не вдалося запустити /review: {error}"
|
||
subgoal:
|
||
no_goal: "Немає активної цілі. Задайте її через /goal <text>."
|
||
usage_remove: "Використання: /subgoal remove <n>"
|
||
remove_not_int: "/subgoal remove: <n> має бути цілим числом (індекс від 1)."
|
||
removed: "✓ Видалено підціль {index}: {text}"
|
||
cleared_one: "✓ Очищено {count} підціль."
|
||
cleared_other: "✓ Очищено {count} підцілей."
|
||
none_to_clear: "Немає підцілей для очищення."
|
||
added: "✓ Додано підціль {index}: {text}"
|
||
loop:
|
||
unavailable: "Цикли недоступні."
|
||
no_session: "Цикли недоступні (немає активного сеансу)."
|
||
goal_defers_note: "\nПримітка: цим сеансом керує активна /goal — пробудження циклу відкладаються, доки ціль не завершиться, не буде призупинена або відкладена."
|
||
save:
|
||
no_messages: "Збережених повідомлень для цього сеансу ({session_id}) не знайдено."
|
||
no_adapter: "Не знайдено адаптер платформи для надсилання документа."
|
||
caption: "Експорт сеансу: {filename}"
|
||
complete: "Експорт завершено."
|
||
failed: "Помилка експорту сеансу: {error}"
|
||
sessions:
|
||
usage_search: "Використання: `/sessions search <query>`"
|
||
all_requires_admin: "_Примітка: `all` (список між чатами) потребує налаштованого адміністратора; показано лише сеанси цього чату._"
|
||
title_matching: "Сеанси за запитом «{query}»"
|
||
title_all: "Сеанси"
|
||
title_named: "Іменовані сеанси"
|
||
codex_runtime:
|
||
config_load_failed: "❌ Не вдалося завантажити конфігурацію: {error}"
|
||
topup:
|
||
header: "💳 **Баланс Nous**"
|
||
portal_link: "Керуйте оплатою на порталі: {url}"
|
||
hint: "Поповніть баланс і керуйте оплатою у браузері — після цього баланс тут оновиться."
|
||
login:
|
||
free_tier_remaining: "\nДеякі чати все ще на безкоштовному тарифі; використайте /model у тих чатах, щоб перемкнутися."
|
||
platform:
|
||
whatsapp:
|
||
clarify_other_title: "✏️ Інше"
|
||
clarify_other_description: "Введіть свою відповідь"
|
||
clarify_list_button: "Обрати"
|
||
clarify_list_section: "Варіанти"
|
||
approve_button: "✅ Схвалити"
|
||
deny_button: "❌ Відхилити"
|
||
slash_confirm_once: "✅ Схвалити один раз"
|
||
slash_confirm_always: "🔒 Завжди"
|
||
slash_confirm_cancel: "❌ Скасувати"
|
||
clarify_type_answer: "✏️ Введіть свою відповідь:"
|
||
approved: "✅ Схвалено."
|
||
denied: "❌ Відхилено."
|
||
approval_expired: "⌛ Час схвалення минув — команду не виконано (час уже вичерпано або її вирішено в іншому місці)."
|
||
yuanbao:
|
||
slow_response_notice: "Це завдання трохи складніше — я ще працюю над ним, зачекайте, будь ласка..."
|
||
owner_command_denied: "⚠️ {command} доступна лише творцеві в режимі приватного чату"
|
||
shared:
|
||
truncated_suffix: "\n...(скорочено)"
|
||
unknown: "невідомо"
|
||
approval_expired: "⌛ Час схвалення минув — команду не виконано (час уже вичерпано або її вирішено в іншому місці)."
|
||
model_picker_expired: "⏳ Цей вибір моделі застарів — виконайте /model ще раз."
|
||
not_authorized: "⛔ Немає доступу."
|
||
handoff:
|
||
default_name: "сеанс"
|
||
media:
|
||
image_failed: "⚠️ Не вдалося доставити вкладене зображення."
|
||
video_failed: "⚠️ Не вдалося доставити вкладене відео."
|
||
file_failed: "⚠️ Не вдалося доставити вкладений файл ({name})."
|
||
attachment_failed: "⚠️ Не вдалося доставити вкладення."
|
||
weixin:
|
||
voice_as_attachment: "[голосове повідомлення як вкладення]"
|
||
signal:
|
||
batch_pacing_notice: "(Надходять ще зображення — пауза ~{wait} через ліміт частоти Signal, пакет {batch}/{total}.)"
|
||
wait_seconds: "{count} с"
|
||
wait_minutes: "{count} хв"
|
||
api_server:
|
||
provider_auth_failed: "Не вдалося автентифікуватися у провайдера"
|
||
provider_rate_limited: "Провайдер обмежив частоту запитів"
|
||
provider_error_line: "⚠️ {label}: {error}"
|
||
transformed_notice: "\n\n[Відповідь перетворено після потокового виведення]\n"
|
||
discord:
|
||
approval:
|
||
question: "Дозволити Hermes виконати цю команду?"
|
||
requested_command_label: "Запитана команда:"
|
||
confirm_title: "Підтвердження"
|
||
already_resolved: "Це схвалення вже опрацьовано~"
|
||
expired: "⌛ Час схвалення минув — команду не виконано (час вичерпано або її вже опрацьовано в іншому місці)"
|
||
no_longer_pending: "⌛ Це схвалення більше не очікує відповіді (час минув або відповідь надано деінде)"
|
||
click_failed: "⚠️ Не вдалося записати ваш вибір. Натисніть ще раз або дайте відповідь командою /approve чи /deny."
|
||
by_user: "{label} — {user}"
|
||
resolved_once: "Схвалено один раз"
|
||
resolved_session: "Схвалено для сеансу"
|
||
resolved_always: "Схвалено назавжди"
|
||
resolved_deny: "Відхилено"
|
||
slash_confirm:
|
||
already_resolved: "Цей запит вже опрацьовано~"
|
||
approve_once: "Схвалити один раз"
|
||
always_approve: "Завжди схвалювати"
|
||
cancel: "Скасувати"
|
||
resolved_once: "Схвалено один раз"
|
||
resolved_always: "Схвалено назавжди"
|
||
resolved_cancel: "Скасовано"
|
||
prompt:
|
||
truncated_marker: "... [скорочено]"
|
||
clarify_title: "Hermes потребує вашої відповіді"
|
||
clarify_hint_buttons: "Виберіть варіант нижче або натисніть ✏️ Інше, щоб ввести власну відповідь."
|
||
clarify_hint_text: "Надішліть відповідь у цьому каналі."
|
||
default_hint: " (за замовчуванням: {default})"
|
||
update_title: "Оновлення потребує вашої відповіді"
|
||
expired_footer: "⏱ Час запиту минув — нічого не зроблено"
|
||
already_answered: "Відповідь уже надано~"
|
||
affirm: "Так"
|
||
negate: "Ні"
|
||
other: "✏️ Інше (ввести відповідь)"
|
||
clarify_already_answered: "На цей запит вже відповіли~"
|
||
answered_by: "Відповів {user}: {choice}"
|
||
awaiting_typed: "Очікуємо текстову відповідь від {user}…"
|
||
picker:
|
||
title: "⚙ Налаштування моделі"
|
||
select_provider: "Поточна модель: `{model}`\nПровайдер: {provider}\n\nВиберіть провайдера:"
|
||
unknown_model: "невідомо"
|
||
choice_default_title: "Виберіть варіант"
|
||
provider_option: "{provider} (моделей: {count})"
|
||
current: "поточна"
|
||
provider_placeholder: "Виберіть провайдера..."
|
||
cancel: "Скасувати"
|
||
model_placeholder: "Виберіть модель від {provider}"
|
||
back: "◀ Назад"
|
||
switch_anyway: "Усе одно перемкнути"
|
||
more_available: "Ще {count} доступно — введіть `/model <name>` напряму"
|
||
select_model: "Провайдер: **{provider}**\nВиберіть модель:{extra}"
|
||
already_resolved: "Уже опрацьовано~"
|
||
switching: "Перемикання на `{model}`..."
|
||
switching_title: "⚙ Зміна моделі"
|
||
switch_error: "Помилка зміни моделі: {error}"
|
||
switched_title: "⚙ Модель змінено"
|
||
expired_toast: "Час вибору моделі минув."
|
||
cancelled: "Вибір моделі скасовано."
|
||
expired: "⏱ Час вибору минув — модель не змінено."
|
||
choice_placeholder: "Виберіть варіант..."
|
||
choice_error: "Помилка застосування вибору: {error}"
|
||
choice_expired: "⏱ Час вибору минув — змін не внесено."
|
||
command:
|
||
new:
|
||
description: "Почати нову розмову"
|
||
followup: "Нову розмову почато~"
|
||
reset:
|
||
description: "Скинути ваш сеанс Hermes"
|
||
followup: "Сеанс скинуто~"
|
||
model:
|
||
description: "Показати або змінити модель"
|
||
arg_name: "Назва моделі (напр. anthropic/claude-sonnet-4). Залиште порожнім, щоб побачити поточну."
|
||
reasoning:
|
||
description: "Показати/змінити рівень міркувань або перемкнути їх показ"
|
||
arg_effort: "Рівень міркувань, reset, або show/hide, щоб показати чи сховати їх. Порожнє — поточне значення."
|
||
choice_none: "none — вимкнути міркування"
|
||
choice_ultra: "ultra — максимальні міркування"
|
||
choice_reset: "reset — скинути перевизначення цього сеансу"
|
||
choice_show: "show — показувати міркування у відповідях"
|
||
choice_hide: "hide — приховувати міркування у відповідях"
|
||
personality:
|
||
description: "Встановити особистість"
|
||
arg_name: "Назва особистості. Залиште порожнім, щоб побачити список доступних."
|
||
retry:
|
||
description: "Повторити ваше останнє повідомлення"
|
||
followup: "Повторюємо~"
|
||
undo:
|
||
description: "Видалити останній обмін"
|
||
status:
|
||
description: "Показати стан сеансу Hermes"
|
||
followup: "Стан надіслано~"
|
||
stop:
|
||
description: "Зупинити запущений агент Hermes"
|
||
followup: "Запит на зупинку надіслано~"
|
||
steer:
|
||
description: "Вставити повідомлення після наступного виклику інструмента (без переривання)"
|
||
arg_prompt: "Текст, який буде вставлено в наступний результат інструмента агента"
|
||
plan:
|
||
description: "Скласти план реалізації у markdown (без виконання)"
|
||
arg_task: "Що планувати. Залиште порожнім, щоб визначити з розмови."
|
||
compress:
|
||
description: "Стиснути контекст розмови"
|
||
title:
|
||
description: "Встановити або показати назву сеансу"
|
||
arg_name: "Назва сеансу. Залиште порожнім, щоб показати поточну."
|
||
resume:
|
||
arg_name: "Назва сеансу для відновлення. Залиште порожнім, щоб показати список сеансів."
|
||
usage:
|
||
description: "Показати використання токенів у цьому сеансі"
|
||
help:
|
||
description: "Показати доступні команди"
|
||
insights:
|
||
arg_days: "Кількість днів для аналізу (за замовчуванням: 7)"
|
||
reload_skills:
|
||
description: "Пересканувати ~/.hermes/skills/ на нові або видалені навички"
|
||
voice:
|
||
description: "Перемкнути режим голосових відповідей"
|
||
arg_mode: "Голосовий режим: join, channel, leave, on, tts, off або status"
|
||
choice_join: "join — приєднатися до вашого голосового каналу"
|
||
choice_channel: "channel — приєднатися до вашого голосового каналу (псевдонім)"
|
||
choice_leave: "leave — вийти з голосового каналу"
|
||
choice_mode_on: "on — голосова відповідь на голосові повідомлення"
|
||
choice_tts: "tts — голосова відповідь на всі повідомлення"
|
||
choice_mode_off: "off — лише текст"
|
||
choice_status: "status — показати поточний режим"
|
||
update:
|
||
followup: "Оновлення запущено~"
|
||
restart:
|
||
description: "Коректно перезапустити шлюз Hermes"
|
||
followup: "Запит на перезапуск надіслано~"
|
||
approve:
|
||
arg_scope: "Необов'язково: 'all', 'session', 'always', 'all session', 'all always'"
|
||
deny:
|
||
description: "Відхилити небезпечну команду, що очікує схвалення"
|
||
arg_scope: "Необов'язково: 'all', щоб відхилити всі команди в очікуванні"
|
||
thread:
|
||
description: "Створити новий тред і почати в ньому сеанс Hermes"
|
||
arg_name: "Назва треду"
|
||
arg_message: "Необов'язкове перше повідомлення для Hermes у треді"
|
||
arg_auto_archive: "Автоархівація через N хвилин (60, 1440, 4320, 10080)"
|
||
error_unknown: "невідома помилка"
|
||
failed: "Не вдалося створити тред: {error}"
|
||
created: "Створено тред {link}"
|
||
error_name_required: "Потрібно вказати назву треду."
|
||
error_invalid_archive: "auto_archive_duration має бути одним із: {allowed}."
|
||
error_no_channel: "Не вдалося визначити поточний канал Discord."
|
||
error_dm_not_supported: "Треди Discord можна створювати лише в текстових каналах сервера, не в особистих повідомленнях."
|
||
error_no_parent: "Не вдалося визначити батьківський текстовий канал для нового треду."
|
||
error_both_failed: "Discord відхилив пряме створення треду, і резервний спосіб також не спрацював. Помилка прямого способу: {direct_error}. Помилка резервного способу: {fallback_error}"
|
||
queue:
|
||
description: "Поставити запит у чергу на наступний хід (не перериває)"
|
||
arg_prompt: "Запит, який потрібно поставити в чергу"
|
||
followup: "Поставлено в чергу на наступний хід."
|
||
bg:
|
||
arg_prompt: "Запит, який потрібно виконати у фоні"
|
||
followup: "Фонове завдання запущено~"
|
||
btw:
|
||
description: "Поставити побіжне питання щодо поточної розмови"
|
||
arg_question: "Побіжне питання, на яке відповісти без переривання роботи"
|
||
followup: "Побіжне питання надіслано~"
|
||
skill:
|
||
description: "Запустити навичку Hermes"
|
||
arg_name: "Яку навичку запустити"
|
||
arg_args: "Необов'язкові аргументи для навички"
|
||
unknown: "Невідома навичка: `{name}`. Почніть вводити, щоб побачити підказки автодоповнення."
|
||
auto_args_description: "Аргументи: {args_hint}"
|
||
auto_description_fallback: "Виконати /{name}"
|
||
limits:
|
||
response_truncated: "⚠️ **Відповідь обрізано** — вона перевищила ліміт доставки ({max_messages} повідомлень). {dropped_chars} символів не доставлено; повна відповідь є в журналах сеансу."
|
||
forum:
|
||
default_title: "Новий допис"
|
||
voice:
|
||
ack_1: "Зараз подивлюся."
|
||
ack_2: "Хвилинку."
|
||
ack_3: "Зараз це перевірю."
|
||
ack_4: "Секундочку."
|
||
ack_5: "Вже роблю."
|
||
left_inactivity: "Вийшов із голосового каналу (тайм-аут бездіяльності)."
|
||
security:
|
||
unauthorized_slash_alert: "⚠️ Неавторизована спроба slash-команди в Discord\nКористувач: {user_name} ({user_id})\nКанал: {chan_id} (сервер {guild_id})\nКоманда: {command_text}\nПричина: {reason}"
|
||
thread:
|
||
seed_message: "🧵 Тред створено Hermes: **{name}**"
|
||
default_name: "Hermes"
|
||
handoff_seed: "🧵 Передача від Hermes: **{name}**"
|
||
auto_create_failed: "⚠️ Hermes не вдалося створити тред Discord для цього повідомлення, тому запит не оброблено. Спробуйте ще раз."
|
||
auto_create_failed_generic: "Запит не оброблено. Спробуйте ще раз."
|
||
media:
|
||
upload_too_large: "⚠️ Не вдалося прикріпити `{filename}` — {size_mb} МБ перевищує ліміт Discord у {limit_mb} МБ для завантажень у цьому каналі. Стисніть файл або поділіться посиланням."
|
||
image_skipped_too_large: "⚠️ Пропущено `{filename}` — {size_mb} МБ перевищує ліміт Discord у {limit_mb} МБ для завантажень."
|
||
telegram:
|
||
approval:
|
||
action_once: "✅ Один раз"
|
||
action_session: "✅ Сеанс"
|
||
action_always: "✅ Завжди"
|
||
action_deny: "❌ Відхилити"
|
||
toast_invalid_data: "Недійсні дані схвалення."
|
||
toast_already_resolved: "Це схвалення вже опрацьовано."
|
||
resolved_once: "✅ Схвалено один раз"
|
||
resolved_session: "✅ Схвалено для сеансу"
|
||
resolved_always: "✅ Схвалено назавжди"
|
||
resolved_deny: "❌ Відхилено"
|
||
resolved_generic: "Опрацьовано"
|
||
resolved_by_user: "{label} — {user}"
|
||
expired: "⌛ Час схвалення минув"
|
||
expired_detail: "{label} — жодна команда не очікувала. Час уже вичерпано (і команду відхилено) або її опрацювали в іншому місці."
|
||
slash_confirm:
|
||
approve_once: "✅ Схвалити один раз"
|
||
always_approve: "🔒 Завжди схвалювати"
|
||
cancel: "❌ Скасувати"
|
||
already_resolved: "Цей запит вже опрацьовано."
|
||
resolved_once: "✅ Схвалено один раз"
|
||
resolved_always: "🔒 Завжди схвалювати"
|
||
resolved_cancel: "❌ Скасовано"
|
||
picker:
|
||
expired_rerun: "Час вибору минув — виконайте команду ще раз."
|
||
invalid_selection: "Недійсний вибір."
|
||
expired: "Час вибору минув."
|
||
apply_error: "Помилка застосування вибору: {error}"
|
||
prev: "◀ Назад"
|
||
next: "Далі ▶"
|
||
back: "◀ Повернутися"
|
||
cancel: "✗ Скасувати"
|
||
more_available: "Ще {count} доступно — введіть `/model <name>` напряму"
|
||
title: "Налаштування моделі"
|
||
provider_label: "Провайдер: {provider}"
|
||
select_model: "Виберіть модель:"
|
||
current_model: "Поточна модель: {model}"
|
||
select_provider: "Виберіть провайдера:"
|
||
unknown_model: "невідомо"
|
||
provider_family: "Сімейство провайдерів: {family}"
|
||
invalid_model_index: "Недійсний індекс моделі."
|
||
switch_error: "Помилка зміни моделі: {error}"
|
||
switch_failed: "Не вдалося перемкнути."
|
||
switched: "Модель змінено!"
|
||
invalid_page: "Недійсна сторінка."
|
||
expired_model: "Час вибору минув — виконайте /model ще раз."
|
||
provider_not_found: "Провайдера не знайдено."
|
||
switch_anyway: "Усе одно перемкнути"
|
||
confirm_selection: "Підтвердьте вибір моделі"
|
||
group_not_found: "Групу не знайдено."
|
||
cancelled: "Вибір моделі скасовано."
|
||
prompt:
|
||
default_hint: " (за замовчуванням: {default})"
|
||
update_header: "Оновлення потребує вашої відповіді:"
|
||
affirm: "✓ Так"
|
||
negate: "✗ Ні"
|
||
other: "✏️ Інше (ввести відповідь)"
|
||
expired_toast: "⚠️ Час цього запиту минув — виконайте /retry."
|
||
expired_body: "⚠️ Час цього питання минув або сеанс скинуто — виконайте /retry."
|
||
type_answer: "✏️ Введіть відповідь у чаті."
|
||
awaiting_typed: "Очікуємо текстову відповідь від {user}…"
|
||
invalid_choice: "Недійсний вибір."
|
||
update_sent: "«{answer}» надіслано процесу оновлення."
|
||
update_answered: "Відповідь на запит оновлення: {answer}"
|
||
affirm_word: "Так"
|
||
negate_word: "Ні"
|
||
media:
|
||
download_failed: "⚠️ Не вдалося завантажити {kind}{name} ({error}). Спробуйте надіслати ще раз."
|
||
named_suffix: " ({name})"
|
||
kind_attachment: "вкладення"
|
||
kind_photo: "фото"
|
||
kind_voice: "голосове повідомлення"
|
||
kind_audio: "аудіофайл"
|
||
kind_video: "відеофайл"
|
||
gmail_triage:
|
||
done_send: "✓ чернетку надіслано"
|
||
done_archive: "✓ архівовано"
|
||
done_draft: "✓ чернетку відповіді створено"
|
||
done_spam: "✓ позначено як спам"
|
||
done_mute: "✓ вимкнено сповіщення"
|
||
done_mute_domain: "✓ домен вимкнено"
|
||
done_trust: "✓ довірено"
|
||
done_trust_domain: "✓ домен довірено"
|
||
done_vip: "✓ позначено VIP"
|
||
done_vip_domain: "✓ домен позначено VIP"
|
||
invalid_data: "Недійсні дані gmail-triage."
|
||
unknown_verb: "Невідома дія: {verb}"
|
||
script_missing: "❌ {script} відсутній"
|
||
exit_code: "код виходу {code}"
|
||
failed: "❌ {verb}: не вдалося: {detail}"
|
||
timed_out: "❌ {verb}: час вичерпано"
|
||
error: "❌ {verb}: помилка: {error}"
|
||
appended_by: "— {label} — {user}"
|
||
user_fallback: "Користувач"
|
||
install_hint: "Виконайте `hermes setup`, щоб установити підтримку Telegram."
|
||
slack:
|
||
approval:
|
||
fallback_text: "⚠️ Потрібне схвалення команди: {command}"
|
||
resolved_once: "✅ Схвалено один раз: {user}"
|
||
resolved_session: "✅ Схвалено на сеанс: {user}"
|
||
resolved_always: "✅ Схвалено назавжди: {user}"
|
||
resolved_deny: "❌ Відхилено: {user}"
|
||
confirm:
|
||
default_title: "Підтвердження"
|
||
approve_once: "Схвалити один раз"
|
||
always_approve: "Завжди схвалювати"
|
||
cancel: "Скасувати"
|
||
resolved_always: "🔒 Схвалено назавжди: {user}"
|
||
resolved_cancel: "❌ Скасовано: {user}"
|
||
picker:
|
||
more_available: "\n*Ще {count} доступно — введіть `/model <name>` напряму*"
|
||
provider_header: "*⚙ Налаштування моделі*\nПоточна модель: `{model}`\nПровайдер: {provider}\n\nВиберіть провайдера:{extra}"
|
||
model_header: "*⚙ Налаштування моделі*\n\nПровайдер: *{provider}*\nВиберіть модель:{extra}"
|
||
choose_provider: "Виберіть провайдера…"
|
||
choose_model: "Виберіть модель від {provider}…"
|
||
cancel: "Скасувати"
|
||
back: "◀ Назад"
|
||
fallback_provider: "⚙ Налаштування моделі — виберіть провайдера"
|
||
fallback_model: "⚙ Налаштування моделі — {provider}"
|
||
cancelled: "❌ Вибір моделі скасовано."
|
||
no_models_for_provider: "Для `{provider}` немає доступних моделей."
|
||
switching: "⚙ Перемикаємося на `{model}`…"
|
||
switch_failed: "❌ Не вдалося змінити модель: {error}"
|
||
switch_failed_header: "⚙ Не вдалося змінити модель"
|
||
switched_header: "⚙ Модель змінено"
|
||
clarify:
|
||
option_n: "Варіант {n}"
|
||
choice_n: "вибір {n}"
|
||
other: "✏️ Інше…"
|
||
expired: "⏳ Час цього запиту минув — надішліть новий запит. (від {user})"
|
||
awaiting: "✏️ Очікуємо текстову відповідь від {user}…"
|
||
resolved: "✅ {user}: {choice}"
|
||
feedback:
|
||
good: "Гарна відповідь"
|
||
good_a11y: "Надіслати позитивний відгук про цю відповідь"
|
||
bad: "Погана відповідь"
|
||
bad_a11y: "Надіслати негативний відгук про цю відповідь"
|
||
status:
|
||
thinking: "думає..."
|
||
still_working: "ще працює… ({elapsed})"
|
||
task_card:
|
||
title: "Hermes працює"
|
||
slash:
|
||
reply_truncated: "\n\n_[Відповідь обрізано: ще {count} частин(и) перевищили ліміт ефемерних відповідей Slack.]_"
|
||
running: "Виконуємо `/{command}`…"
|
||
handoff:
|
||
seed: ":thread: Передача Hermes — *{name}*"
|
||
matrix:
|
||
handoff:
|
||
default_name: "Сеанс Hermes"
|
||
media:
|
||
image_download_failed: "Не вдалося завантажити зображення та вивантажити його в Matrix. URL джерела не показано, оскільки він може містити приватні токени."
|
||
approval:
|
||
typed_hint_once: "Відповідьте `!approve`, щоб виконати один раз, або `!deny`, щоб скасувати."
|
||
typed_hint_session: "Відповідьте `!approve session`, щоб схвалити цей шаблон на сеанс, `!approve`, щоб виконати один раз, або `!deny`, щоб скасувати."
|
||
typed_hint_always: "Відповідьте `!approve session`, щоб схвалити цей шаблон на сеанс, `!approve always`, щоб схвалити назавжди, `!approve`, щоб виконати один раз, або `!deny`, щоб скасувати."
|
||
legend_intro: "Також можна натиснути реакцію, щоб схвалити:"
|
||
legend_once: "✅ = схвалити один раз"
|
||
legend_session: "🌀 = схвалити на цей сеанс"
|
||
legend_always: "♾️ = схвалювати завжди"
|
||
legend_deny: "❎ = відхилити"
|
||
invalid_reaction: "Ця реакція не підходить для цього запиту на схвалення."
|
||
expired: "Час цього запиту на схвалення минув. Виконайте команду ще раз, якщо все ще хочете її схвалити."
|
||
picker:
|
||
no_models: "Для цього сеансу немає доступних автентифікованих моделей."
|
||
title: "⚙ **Налаштування моделі**"
|
||
current_model: "Поточна модель: `{model}`"
|
||
provider: "Провайдер: {provider}"
|
||
react_model: "Поставте реакцію, щоб вибрати модель:"
|
||
react_choice: "Поставте реакцію, щоб вибрати."
|
||
current_suffix: "{label} ← поточна"
|
||
invalid_model_reaction: "Ця реакція не відповідає жодній із доступних моделей."
|
||
invalid_choice_reaction: "Ця реакція не відповідає жодному з доступних варіантів."
|
||
verb_switch_model: "змінити модель"
|
||
verb_apply_selection: "застосувати вибір"
|
||
failed: "Не вдалося {action}: {error}"
|
||
reaction:
|
||
unauthorized: "Ці елементи керування доступні лише авторизованому користувачу Matrix."
|
||
not_requester: "Ці елементи керування доступні лише користувачу, який запросив цю дію."
|
||
feishu:
|
||
clarify:
|
||
title: "Hermes потребує вашої відповіді"
|
||
other: "✏️ Інше (ввести відповідь)"
|
||
awaiting_typed: "Очікуємо текстову відповідь від {user}…"
|
||
picker:
|
||
apply_error: "Помилка застосування вибору: {error}"
|
||
approval:
|
||
action_session: "На сеанс"
|
||
action_always: "Завжди"
|
||
resolved_once: "Схвалено один раз"
|
||
resolved_session: "Схвалено на сеанс"
|
||
resolved_always: "Схвалено назавжди"
|
||
resolved_deny: "Відхилено"
|
||
resolved_fallback: "Вирішено"
|
||
resolved_by_user: "{icon} **{label}** — {user}"
|
||
update_prompt:
|
||
title: "☤ Оновлення потребує вашої відповіді"
|
||
default_hint: "\n\nЗа замовчуванням: `{default}`"
|
||
answer_yes: "✓ Так"
|
||
answer_no: "✗ Ні"
|
||
word_yes: "Так"
|
||
word_no: "Ні"
|
||
answered_title: "{icon} Відповідь на запит оновлення: {answer}"
|
||
answered_by: "Відповів(ла) **{user}**"
|
||
media:
|
||
gif_downgraded: "[GIF надіслано як файл]"
|
||
gif_downgraded_caption: "[GIF надіслано як файл]\n{caption}"
|
||
google_chat:
|
||
clarify:
|
||
other_button: "Інше / ввести відповідь"
|
||
header: "Питання"
|
||
question: "❓ {question}"
|
||
typing:
|
||
thinking: "Hermes думає…"
|
||
interrupted: "(перервано)"
|
||
no_reply: "(без відповіді)"
|
||
attachment_fallback:
|
||
header: "⚠️ Не вдалося прикріпити **{filename}**."
|
||
explain: "Google Chat дозволяє прикріплювати файли лише тоді, коли бот має ваш явний дозвіл (OAuth користувача). Це одноразова згода, яку можна надати з цього чату."
|
||
activate: "**Щоб увімкнути:** надішліть `/setup-files` і дотримуйтеся інструкцій."
|
||
host_path: "Тим часом файл лежить на хості: `{path}`"
|
||
setup_files:
|
||
not_configured: "🔧 Нативна доставка вкладень **не налаштована**.\n**Крок 1 (одноразово, на хості):** створіть облікові дані клієнта OAuth на https://console.cloud.google.com/apis/credentials → *Create credentials* → *OAuth client ID* → *Desktop app*. Завантажте JSON. Потім на хості виконайте:\n```\npython -m plugins.platforms.google_chat.oauth --client-secret /path/to/client_secret.json\n```\n**Крок 2:** поверніться сюди й надішліть `/setup-files start`."
|
||
start_instructions: "1. Відкрийте цей URL у браузері й авторизуйтеся:\n{auth_url}\n\n2. Після натискання *Allow* браузер не зможе завантажити `http://localhost:1/?...&code=...`. Це очікувано.\n\n3. Скопіюйте весь URL, що не завантажився, з адресного рядка браузера і вставте його сюди як: `/setup-files <PASTE_URL>` (або лише значення `code=...`).\n\nПорада: URL містить ваш дозвіл на доступ — не діліться ним."
|
||
start_failed: "❌ Не вдалося згенерувати URL OAuth. Перевірте журнали шлюзу та переконайтеся, що client_secret.json коректний."
|
||
exchange_failed: "❌ Не вдалося обміняти токен. Можливо, код застарів або URL пошкоджений. Надішліть `/setup-files start`, щоб отримати новий URL OAuth."
|
||
revoke_completed: "Відкликання завершено (деякі кроки могли бути пропущені)."
|
||
revoked: "Відкликано."
|
||
helper_error: "❌ Помилка: {error}"
|
||
revoke_error: "❌ Помилка відкликання: {error}"
|
||
who_shared: "спільний (застарілий)"
|
||
active: "✅ Нативна доставка вкладень **активна** для `{who}`.\nТокен: `{token_path}`\nНадішліть `/setup-files revoke`, щоб вимкнути."
|
||
not_authorized_yet: "🔧 Облікові дані клієнта збережено, але ви ще не авторизувалися. Надішліть `/setup-files start`, щоб почати."
|
||
no_client_credentials: "⚠️ Для цього профілю не збережено облікових даних клієнта. Надішліть `/setup-files` (без аргументів), щоб отримати інструкції з налаштування."
|
||
done_output: "✅ Готово.\n```\n{output}\n```"
|
||
authorized: "✅ Авторизовано! Нативна доставка вкладень тепер активна. Спробуйте попросити мене надіслати вам PDF."
|
||
exchanged_not_loaded: "⚠️ Токен обміняно, але шлюз не зміг завантажити нові облікові дані в пам'ять. Перезапустіть шлюз — токен у `{token_path}` буде підхоплено.\nВивід допоміжного скрипта:\n```\n{output}\n```"
|
||
teams:
|
||
approval:
|
||
resolved_once: "✅ Дозволено (один раз)"
|
||
resolved_session: "✅ Дозволено (сеанс)"
|
||
resolved_always: "✅ Дозволено завжди"
|
||
resolved_deny: "❌ Відхилено"
|
||
unknown_action: "Невідома дія."
|
||
requires_allowlist: "⛔ Для кнопок схвалення потрібно налаштувати TEAMS_ALLOWED_USERS."
|
||
summary:
|
||
title: "Зустріч {meeting_id}"
|
||
title_fallback: "підсумок"
|
||
heading: "Підсумок"
|
||
summary_line: "Підсумок: {summary}"
|
||
empty: "Підсумок недоступний."
|
||
none_item: "Немає"
|
||
key_decisions: "Ключові рішення"
|
||
action_items: "Завдання до виконання"
|
||
risks: "Ризики"
|
||
line:
|
||
pending:
|
||
still_thinking: "🤔 Ще думаю. Натисніть нижче, щоб отримати відповідь, коли вона буде готова."
|
||
button_label: "Отримати відповідь"
|
||
delivered: "Уже відповів ✅"
|
||
interrupted: "Виконання перервано до завершення."
|
||
expired: "Термін дії цього запиту минув — надішліть повідомлення ще раз."
|
||
standalone:
|
||
attachments_not_deliverable: "[Згенеровано вкладень: {count}; не можна доставити з cron]"
|
||
wecom:
|
||
media:
|
||
kind_image: "Зображення"
|
||
kind_video: "Відео"
|
||
kind_voice: "Голосове повідомлення"
|
||
file_too_large: "Розмір файлу {size_mb} МБ перевищує ліміт WeCom у 20 МБ, тому надіслати його не можна. Спробуйте стиснути файл або зменшити його розмір."
|
||
voice_format_downgraded: "Формат голосу {content_type} не підтримується (WeCom приймає лише AMR); надіслано як файл."
|
||
size_downgraded: "{label}: розмір {size_mb} МБ перевищує ліміт {cap}; надіслано як файл."
|
||
email:
|
||
image_line: "Зображення: {url}"
|
||
standalone_subject: "Hermes Agent"
|
||
dingtalk:
|
||
emotion:
|
||
thinking: "🤔Думаю"
|
||
done: "🥳Готово"
|
||
irc:
|
||
quit_message: "Hermes Agent завершує роботу"
|
||
standalone_quit: "доставлено"
|
||
relay:
|
||
confirm_approve_once: "Схвалити один раз"
|
||
confirm_always_approve: "Завжди схвалювати"
|
||
confirm_cancel: "Скасувати"
|
||
prompt_other: "✏️ Інше (ввести відповідь)"
|
||
prompt_expired: ⌛ Цей запит більше не очікує відповіді. Надішліть відповідь звичайним повідомленням.
|
||
slash:
|
||
rewind:
|
||
description: "Відкотитися до попереднього запиту, щоб відредагувати й надіслати його знову, або відгалузитися звідти (Esc Esc)"
|
||
approve:
|
||
description: "Схвалити небезпечну команду, що очікує"
|
||
bg:
|
||
description: "Виконати запит в окремому фоновому сеансі"
|
||
insights:
|
||
description: "Показати аналітику використання"
|
||
reload_mcp:
|
||
description: "Перезавантажити MCP-сервери з конфігурації"
|
||
resume:
|
||
description: "Відновити раніше названий сеанс"
|
||
sethome:
|
||
description: "Зробити цей чат головним каналом"
|
||
update:
|
||
description: "Оновити Hermes Agent до найновішої версії"
|
||
category:
|
||
session: "Сеанс"
|
||
configuration: "Конфігурація"
|
||
info: "Інформація"
|
||
tools_skills: "Інструменти й навички"
|
||
plugins: "Плагіни"
|
||
exit: "Вихід"
|
||
context: "Контекст"
|
||
background_automation: "Фон і автоматизація"
|
||
shared:
|
||
usage_suffix: "{description} (використання: /{name} {args_hint})"
|
||
alias_for: "{description} (псевдонім для /{name})"
|
||
alias_note: " (псевдонім: {aliases})"
|
||
slack_alias_for: "Псевдонім для /{name} — {description}"
|
||
plugin_default_desc: "Виконати /{name}"
|
||
plugin_command_desc: "Команда плагіна"
|
||
hermes:
|
||
description: "Поговорити з Hermes або виконати підкоманду"
|
||
start:
|
||
description: "Підтвердити стартові пінги платформи без відповіді"
|
||
new:
|
||
description: "Почати новий сеанс (новий ID сеансу та історія)"
|
||
topic:
|
||
description: "Увімкнути або переглянути сеанси в topic-ах приватних чатів Telegram"
|
||
clear:
|
||
description: "Очистити екран і почати новий сеанс"
|
||
redraw:
|
||
description: "Примусово перемалювати інтерфейс (виправляє збої відображення в терміналі)"
|
||
history:
|
||
description: "Показати історію розмови"
|
||
save:
|
||
description: "Експортувати поточну розмову (/save без аргументів показує використання)"
|
||
retry:
|
||
description: "Повторити останнє повідомлення (надіслати агентові знову)"
|
||
prompt:
|
||
description: "Скласти наступний запит у $EDITOR (markdown) і надіслати його"
|
||
undo:
|
||
description: "Відкотити N ходів користувача та запитати знову (типово 1)"
|
||
title:
|
||
description: "Задати назву поточного сеансу"
|
||
handoff:
|
||
description: "Передати цей сеанс на платформу повідомлень (Telegram, Discord тощо)"
|
||
branch:
|
||
description: "Розгалузити поточний сеанс (новий тред у Discord/Telegram/Slack/Matrix; --here залишає тут)"
|
||
worktree:
|
||
description: "Показати, перелічити, створити або очистити ізольовані робочі дерева git"
|
||
compress:
|
||
description: "Стиснути контекст розмови (додайте 'here [N]', щоб зберегти останні N ходів; --preview показує, що станеться)"
|
||
rollback:
|
||
description: "Перелічити або відновити контрольні точки файлової системи (ручні правки зберігаються; --all перезаписує їх)"
|
||
snapshot:
|
||
description: "Створити або відновити знімки конфігурації та стану Hermes"
|
||
export:
|
||
description: "Експортувати профіль (конфігурація, навички, тема) в архів для обміну"
|
||
import:
|
||
description: "Імпортувати спільний архів профілю як новий профіль"
|
||
stop:
|
||
description: "Зупинити всі фонові процеси, що виконуються"
|
||
discard:
|
||
description: "Відкинути хід, втрачений під час перезапуску Hermes, щоб черга цього чату продовжилася"
|
||
pause:
|
||
description: "Призупинити нову роботу глобально (аварійна зупинка); '/pause off' відновлює"
|
||
deny:
|
||
description: "Відхилити небезпечну команду, що очікує (за бажанням із причиною)"
|
||
btw:
|
||
description: "Поставити побіжне питання про поточну розмову, не перериваючи її"
|
||
agents:
|
||
description: "Показати активних агентів і поточні завдання"
|
||
journey:
|
||
description: "Відкрити хронологію шляху навчання"
|
||
queue:
|
||
description: "Поставити запит у чергу на наступний хід або list/edit/rm/move/clear для запитів у черзі"
|
||
steer:
|
||
description: "Вставити повідомлення після наступного виклику інструмента без переривання"
|
||
goal:
|
||
description: "Задати постійну ціль, над якою Hermes працює між ходами до її досягнення"
|
||
heartbeat:
|
||
description: "Задати повторюваний запит, що повертається в цей сеанс під час простою"
|
||
refine:
|
||
description: "Переглянути цю розмову зараз і зберегти висновки в пам'яті та навичках"
|
||
review:
|
||
description: "Запустити незалежного субагента для перевірки обговореної роботи (PR, код, документація)"
|
||
loop:
|
||
description: "Повторно виконувати запит із заданим інтервалом у цьому сеансі"
|
||
plan:
|
||
description: "Записати план реалізації в markdown до .hermes/plans/, нічого не виконуючи"
|
||
moa:
|
||
description: "Виконати один запит через типовий пресет Mixture of Agents, потім повернути вашу модель"
|
||
subgoal:
|
||
description: "Додати або керувати додатковими критеріями активної цілі"
|
||
status:
|
||
description: "Показати відомості про сеанс, модель, токени та контекст"
|
||
egress:
|
||
description: "Показати стан вихідного проксі Docker"
|
||
context:
|
||
description: "Показати детальний огляд контекстного вікна: індикатор використання, розбивка за категоріями, статистика стиснення та пропускна здатність"
|
||
whoami:
|
||
description: "Показати ваш рівень доступу до slash-команд (admin / user)"
|
||
profile:
|
||
description: "Показати назву активного профілю та домашній каталог"
|
||
sessions:
|
||
description: "Переглянути та відновити попередні сеанси"
|
||
config:
|
||
description: "Показати поточну конфігурацію"
|
||
model:
|
||
description: "Змінити модель (у межах сеансу; --global щоб зберегти)"
|
||
codex-runtime:
|
||
description: "Перемкнути середовище codex app-server для моделей OpenAI/Codex"
|
||
personality:
|
||
description: "Задати попередньо визначену особистість"
|
||
statusbar:
|
||
description: "Перемкнути рядок стану з контекстом і моделлю"
|
||
battery:
|
||
description: "Перемкнути кольоровий індикатор батареї в рядку стану"
|
||
timestamps:
|
||
description: "Перемкнути позначки часу [HH:MM] у повідомленнях і /history"
|
||
diff:
|
||
description: "Показати зміни git у робочому каталозі"
|
||
verbose:
|
||
description: "Перемикати показ прогресу інструментів: off -> new -> all -> verbose"
|
||
focus:
|
||
description: "Перемкнути режим фокусу — показувати лише ваш запит і фінальну відповідь"
|
||
footer:
|
||
description: "Перемкнути нижній колонтитул шлюзу з метаданими середовища у фінальних відповідях"
|
||
yolo:
|
||
description: "Перемкнути режим YOLO (пропускати всі схвалення небезпечних команд)"
|
||
approvals:
|
||
description: "Показати або задати постійний режим схвалення небезпечних команд"
|
||
reasoning:
|
||
description: "Керувати рівнем зусиль міркування та його показом"
|
||
fast:
|
||
description: "Швидкий режим — OpenAI Priority Processing / Anthropic Fast Mode (normal/fast/auto/cold/ultrafast)"
|
||
skin:
|
||
description: "Показати або змінити оформлення (тему) інтерфейсу"
|
||
indicator:
|
||
description: "Вибрати стиль індикатора зайнятості TUI"
|
||
voice:
|
||
description: "Перемкнути голосовий режим"
|
||
wake:
|
||
description: "Перемкнути слухач слова активації 'Hey Hermes'"
|
||
busy:
|
||
description: "Керувати поведінкою повідомлень, поки Hermes працює"
|
||
tools:
|
||
description: "Керувати інструментами: /tools [list|disable|enable] [name...]"
|
||
toolsets:
|
||
description: "Перелічити доступні набори інструментів"
|
||
skills:
|
||
description: "Шукати, встановлювати, переглядати або керувати навичками"
|
||
memory:
|
||
description: "Переглянути записи в пам'ять, що очікують / перемкнути шлюз схвалення"
|
||
bundles:
|
||
description: "Перелічити набори навичок (псевдоніми /<name> для кількох навичок)"
|
||
pet:
|
||
description: "Перемкнути або взяти улюбленця petdex (/pet, /pet list, /pet <slug>)"
|
||
hatch:
|
||
description: "Згенерувати нового улюбленця petdex за описом"
|
||
learn:
|
||
description: "Вивчити багаторазову навичку з будь-чого, що ви опишете (каталоги, URL, цей чат, нотатки)"
|
||
init:
|
||
description: "Згенерувати або оновити інструкції проєкту AGENTS.md за результатами сканування репозиторію"
|
||
cron:
|
||
description: "Керувати запланованими завданнями"
|
||
suggestions:
|
||
description: "Переглянути запропоновані автоматизації (прийняти або відхилити)"
|
||
blueprint:
|
||
description: "Налаштувати автоматизацію за шаблоном blueprint"
|
||
curator:
|
||
description: "Фонове обслуговування навичок (status, run, pin, archive, list-archived)"
|
||
kanban:
|
||
description: "Дошка спільної роботи для кількох профілів (завдання, зв'язки, коментарі)"
|
||
reload:
|
||
description: "Перезавантажити змінні .env у поточний сеанс"
|
||
reload-mcp:
|
||
description: "Перезавантажити MCP-сервери з конфігурації"
|
||
reload-skills:
|
||
description: "Пересканувати ~/.hermes/skills/ на нові встановлені чи видалені навички"
|
||
browser:
|
||
description: "Підключити браузерні інструменти до вашого браузера на базі Chromium через CDP"
|
||
plugins:
|
||
description: "Перелічити встановлені плагіни та їхній стан"
|
||
commands:
|
||
description: "Переглянути всі команди та навички (посторінково)"
|
||
help:
|
||
description: "Показати доступні команди (/help skills — команди навичок, /help <text> — фільтр)"
|
||
palette:
|
||
description: "Відкрити палітру команд із нечітким пошуком (також Ctrl+P)"
|
||
restart:
|
||
description: "Плавно перезапустити шлюз після завершення активних запусків"
|
||
usage:
|
||
description: "Показати використання токенів і обмеження швидкості; `reset` активує накопичене скидання ліміту Codex"
|
||
subscription:
|
||
description: "Переглянути ваш тариф Nous і змінити його в браузері"
|
||
login:
|
||
description: "Увійти з обліковим записом Nous (ваші конектори зберігаються)"
|
||
topup:
|
||
description: "Показати ваш баланс Nous і керувати оплатою на порталі"
|
||
platforms:
|
||
description: "Показати стан шлюзу та платформ обміну повідомленнями"
|
||
platform:
|
||
description: "Призупинити, відновити або перелічити несправну платформу шлюзу"
|
||
copy:
|
||
description: "Скопіювати останню відповідь асистента в буфер обміну"
|
||
paste:
|
||
description: "Прикріпити зображення з буфера обміну"
|
||
image:
|
||
description: "Прикріпити локальний файл зображення до наступного запиту"
|
||
version:
|
||
description: "Показати версію Hermes Agent"
|
||
debug:
|
||
description: "Завантажити звіт налагодження (відомості про систему + журнали) й отримати посилання для обміну"
|
||
quit:
|
||
description: "Вийти з CLI (--delete також видаляє історію сеансу)"
|
||
cli:
|
||
backtrack:
|
||
title: "↺ Відкат — виберіть попередній запит"
|
||
keys_hint: "↑/↓ вибір · Enter редагувати й надіслати знову · f відгалузитися звідси · Esc закрити"
|
||
preview_label: "Запит {number} з {total}:"
|
||
more_lines: "… (ще рядків: {count})"
|
||
editing_hint: "↺ Редагування запиту {number} — Enter відкочує сюди й надсилає · Esc Esc скасовує"
|
||
edit_cancelled: "↺ Відкат скасовано; нічого не видалено."
|
||
rewound: "↺ Відкочено до запиту {number} (повідомлень в архіві: {count}); надсилання зміненого запиту."
|
||
forked: "⑂ Відгалуження перед запитом {number}; початковий сеанс {parent} не змінено. Відредагуйте запит нижче й натисніть Enter, щоб надіслати."
|
||
nothing: "(._.) Немає попередніх запитів для відкату."
|
||
target_changed: "(x_x) Сеанс змінився відтоді, як ви вибрали запит {number}; нічого не видалено. Вашу правку повернуто в поле введення."
|
||
invalid: "(._.) Немає запиту {value} — виберіть від 1 до {total}."
|
||
usage: "Використання: /rewind [N | fork N]"
|
||
rewind_failed: "(x_x) Не вдалося виконати відкат; історію не змінено: {error}"
|
||
modern:
|
||
thought_for: "Міркував {seconds} с"
|
||
thought: "Міркував"
|
||
working: "Працюю…"
|
||
preparing: "Готую {what}…"
|
||
hint_steer: "спрямувати"
|
||
hint_queue: "у чергу"
|
||
hint_interrupt: "перервати"
|
||
hint_stop: "стоп"
|
||
hint_commands: "команди"
|
||
hint_files: "файли"
|
||
hint_shell: "shell"
|
||
placeholder_busy_steer: "пишіть, щоб спрямувати цей хід · Tab ставить у чергу на потім"
|
||
placeholder_busy_interrupt: "пишіть, щоб перенаправити цей хід · Tab ставить у чергу на потім"
|
||
placeholder_busy_queue: "пишіть, щоб поставити повідомлення в чергу після цього ходу"
|
||
billing:
|
||
load_failed: "{label}: {error}"
|
||
load_failed_label: "Не вдалося завантажити дані оплати"
|
||
not_logged_in: "Ви не ввійшли в Nous Portal."
|
||
run_portal_then: "Виконайте `hermes portal`, щоб увійти, а потім {cmd}."
|
||
org_line: "Організація: {org}"
|
||
org_line_role: "Організація: {org} · {role}"
|
||
bar_plan_label: "план"
|
||
bar_topup_label: "поповнення"
|
||
bar_pct_used: " · використано {pct}%"
|
||
bar_plan: "{label}[{bar}] залишилось ${remaining} з ${total}{pct}"
|
||
bar_topup: "{label}[{bar}] ${remaining} · без терміну дії"
|
||
total_spendable: "Усього доступно: ${amount}"
|
||
one_time_setup: "! Одноразове налаштування"
|
||
allow_remote_spending_title: "Дозволити Remote Spending"
|
||
allow_remote_spending_detail: "Відкриє браузер, щоб авторизувати цей термінал."
|
||
choice_allow_remote_spending: "Дозволити Remote Spending"
|
||
desc_allow_remote_spending: "відкрити браузер для авторизації"
|
||
choice_not_now: "Не зараз"
|
||
desc_not_now: "скасувати"
|
||
opening_browser_remote_spending: "Відкриваємо браузер, щоб дозволити Remote Spending…"
|
||
couldnt_allow_remote_spending: "Не вдалося дозволити Remote Spending: {error}"
|
||
remote_spending_allowed: "Remote Spending дозволено."
|
||
portal_line: "Портал: {url}"
|
||
open_this_url: "Відкрийте цю адресу: {url}"
|
||
manage_on_portal_url: "Керування на порталі: {url}"
|
||
no_manage_url: "Немає URL для керування — чи налаштовано ваш портал?"
|
||
stepup_stale: "Remote Spending для цього термінала все ще не активний — авторизація не спрацювала. Повторіть спробу або внесіть цю зміну на порталі."
|
||
something_went_wrong: "Щось пішло не так."
|
||
under_five: "менше $5"
|
||
plan_free: "Безкоштовний"
|
||
renews_suffix: " · поновлення {date}"
|
||
plan_line: "План: {plan}{renews}"
|
||
free_models_only_hint: "> Безкоштовний · лише безкоштовні моделі. Виконайте /subscription, щоб отримати доступ до платних моделей."
|
||
low_balance_usage: "! Низький баланс · залишилось {amount}. Виконайте /topup або /subscription."
|
||
usage_cta: "Виконайте /subscription, щоб змінити план · /topup, щоб поповнити баланс"
|
||
choice_cancel: "Скасувати"
|
||
choice_back: "Назад"
|
||
choice_go_back: "Повернутися"
|
||
choice_close: "Закрити"
|
||
desc_do_nothing: "нічого не робити"
|
||
desc_do_not_charge: "не списувати кошти"
|
||
choice_manage_on_portal: "Керувати на порталі"
|
||
desc_open_billing_page: "відкрити сторінку оплати в браузері"
|
||
topup_header: "Поповнення · баланс {balance}"
|
||
topup_title: "Поповніть баланс"
|
||
auto_reload_on_line: "Автопоповнення: увімкнено — нижче {threshold} → поповнити до {reload_to}"
|
||
auto_reload_off_line: "Автопоповнення: вимкнено"
|
||
card_line: "Картка: {card}"
|
||
no_saved_card_add_funds_hint: "Збереженої картки немає — «Додати кошти» допоможе її додати."
|
||
actions_require_admin: "Дії з оплатою може виконувати лише адміністратор або власник організації."
|
||
remote_spending_off_for_org: "Remote Spending вимкнено для цієї організації."
|
||
killswitch_reason_overview: "Адміністратор оплати може ввімкнути його на сторінці Hermes Agent порталу, щоб додавати кошти звідси."
|
||
killswitch_reason_buy: "Адміністратор оплати може ввімкнути його на сторінці Hermes Agent порталу перед додаванням коштів."
|
||
add_funds_now_hint: "Додати кошти зараз — одноразове списання, кошти зараховуються на баланс сьогодні."
|
||
refill_when_low_amounts: "Поповнювати за низького балансу — автоматично списує {reload_to}, коли баланс падає нижче {threshold}."
|
||
refill_when_low_generic: "Поповнювати за низького балансу — автоматично списує кошти з картки, коли баланс падає нижче встановленої вами суми."
|
||
choice_add_funds: "Додати кошти"
|
||
desc_add_funds: "одноразове списання, зараховується на баланс сьогодні"
|
||
choice_auto_reload: "Автопоповнення"
|
||
desc_auto_reload: "автоматично поповнювати, коли баланс закінчується"
|
||
choice_monthly_limit: "Місячний ліміт"
|
||
desc_monthly_limit: "показати місячну межу витрат (лише перегляд)"
|
||
# Keep going on credits (window plans only; the portal sends the setting only there)
|
||
keep_going_choice: "Продовжувати за кредити"
|
||
keep_going_desc: "використовувати кредити, коли включений обсяг закінчиться"
|
||
keep_going_on_line: "Продовжувати за кредити: увімкнено (використовувати кредити, коли включений обсяг закінчиться)"
|
||
keep_going_off_line: "Продовжувати за кредити: вимкнено (Hermes чекає на скидання)"
|
||
keep_going_confirm_title: "Продовжувати за кредити?"
|
||
keep_going_confirm_body: "Використовувати кредити, коли включений обсяг закінчиться. Вимкнено: Hermes чекає на скидання."
|
||
keep_going_turn_on: "Увімкнути"
|
||
keep_going_keep_off_desc: "залишити вимкненим: Hermes чекає на скидання"
|
||
keep_going_is_on_title: "«Продовжувати за кредити» увімкнено"
|
||
keep_going_turn_off: "Вимкнути"
|
||
keep_going_turn_off_desc: "Hermes чекає на скидання"
|
||
keep_going_leave_on: "Залишити увімкненим"
|
||
keep_going_turned_on: "✅ Продовжувати за кредити: увімкнено. Використовувати кредити, коли включений обсяг закінчиться."
|
||
keep_going_turned_off: "✅ Продовжувати за кредити: вимкнено. Hermes чекає на скидання."
|
||
cancelled: "Скасовано."
|
||
cancelled_yellow: "🟡 Скасовано."
|
||
cancelled_no_funds: "Скасовано. Кошти не додано."
|
||
no_portal_url: "URL порталу недоступний."
|
||
complete_in_browser: "Завершіть зміни оплати в браузері."
|
||
add_card_first: "Спочатку додайте картку"
|
||
add_card_title: "Додати картку"
|
||
no_saved_card: "Збереженої картки немає."
|
||
no_saved_card_short: "Збереженої картки немає"
|
||
no_saved_card_lower: "немає збереженої картки"
|
||
add_card_once_hint: "Додайте картку один раз на сторінці оплати порталу — після цього поповнювати баланс можна прямо з термінала."
|
||
add_card_then_recheck: "Додайте картку на сторінці оплати, а потім виберіть тут «перевірити ще раз»."
|
||
card_found_continuing: "Картку знайдено: {card} — продовжуємо."
|
||
still_no_card: "Картки все ще немає — завершіть її додавання на порталі, а потім перевірте ще раз."
|
||
choice_add_card_on_portal: "Додати картку на порталі"
|
||
desc_add_card_on_portal: "відкриває сторінку оплати в браузері"
|
||
choice_recheck_card: "Картку додано — перевірити ще раз"
|
||
desc_recheck_card: "перевірити картку ще раз і продовжити"
|
||
add_funds: "Додати кошти"
|
||
presets: "Варіанти: {presets}"
|
||
run_interactive_to_purchase: "Виконайте це в інтерактивному CLI, щоб завершити покупку."
|
||
desc_one_time_purchase: "одноразова покупка кредитів"
|
||
choice_custom_amount: "Інша сума…"
|
||
desc_custom_amount: "ввести власну суму"
|
||
payment_line: "Оплата: {card}"
|
||
amount_prompt: "Сума (USD):"
|
||
invalid_selection: "🔴 Неприпустимий вибір."
|
||
confirm_purchase: "Підтвердьте покупку"
|
||
total_line: "Разом: {amount}"
|
||
portal_card_will_be_charged: "Кошти буде списано з картки, збереженої на порталі."
|
||
consent_charge: "Підтверджуючи, ви дозволяєте Nous Research списати кошти з вашої картки."
|
||
choice_pay_now: "Сплатити {amount} зараз"
|
||
desc_submit_charge: "надіслати платіж"
|
||
desc_manage_card_billing: "керувати карткою / оплатою в браузері"
|
||
run_interactive_to_confirm: "Виконайте в інтерактивному CLI, щоб підтвердити покупку."
|
||
pay_question: "Сплатити {amount}?"
|
||
no_charge_id: "Ідентифікатор платежу не отримано; перевірте портал."
|
||
charge_submitted: "Платіж надіслано — підтверджуємо зарахування…"
|
||
could_not_check_charge: "🔴 Не вдалося перевірити платіж: {error}"
|
||
added_to_balance: "✓ {amount} зараховано на ваш баланс."
|
||
still_processing: "🟡 Обробка триває понад 5 хвилин — це тайм-аут, а не збій. Незабаром перевірте /billing або портал."
|
||
charge_failed_authentication_required: "🔴 Ваш банк вимагає підтвердження (3DS). Пройдіть його на порталі, щоб завершити покупку."
|
||
charge_failed_payment_method_expired: "🔴 Термін дії вашої картки минув. Оновіть її на порталі."
|
||
charge_failed_card_declined: "🔴 Вашу картку відхилено. Спробуйте іншу картку на порталі."
|
||
charge_failed_generic: "🔴 Платіж не пройшов ({reason})."
|
||
charge_error_no_payment_method: "💳 Картки немає — поповніть баланс і керуйте оплатою на порталі."
|
||
charge_error_remote_spending_disabled: "Remote Spending вимкнено для цього облікового запису — адміністратор оплати може ввімкнути його на сторінці Hermes Agent порталу."
|
||
charge_error_role_required: "Поповнювати рахунок може лише адміністратор або власник організації. Зверніться до адміністратора або скористайтеся порталом."
|
||
charge_error_idempotency_conflict: "🔴 Цей ключ платежу вже використано для іншої суми. Почніть нове поповнення."
|
||
revoked_by_admin: "Адміністратор зупинив витрати цього термінала."
|
||
revoked_by_you: "Ви зупинили витрати цього термінала."
|
||
revoked_reconnect: "🔴 {who} Підключіться знову, щоб відновити — виконайте `hermes portal` для повторної авторизації."
|
||
session_logged_out: "🔴 Ваш сеанс завершено. Виконайте `hermes portal`, щоб увійти знову."
|
||
monthly_cap_reached_headroom: "🔴 Досягнуто місячної межі витрат — залишилось ${remaining} запасу."
|
||
monthly_cap_reached: "🔴 Досягнуто місячної межі витрат."
|
||
try_again_in_min: " (спробуйте знову через ~{minutes} хв)"
|
||
too_many_charges: "🟡 Зараз надто багато платежів{mins}. Це не збій оплати."
|
||
remote_spending_needs_approval: "🔴 Remote Spending потребує схвалення — виконайте /topup, щоб дозволити, а потім повторіть."
|
||
your_topup: "ваше поповнення"
|
||
charge_stepup_explain: "Щоб списувати кошти з цього термінала, один раз дозвольте Remote Spending. У браузері відкриється сторінка авторизації, після чого {amount} продовжиться тут же."
|
||
charge_stepup_noninteractive: "Виконайте `hermes portal` і дозвольте Remote Spending, потім повторіть."
|
||
charge_stepup_declined: "Кошти не списано. Виконайте /topup, коли захочете дозволити Remote Spending."
|
||
charge_stepup_not_granted: "Не вдалося дозволити Remote Spending — це має схвалити адміністратор або власник організації. Кошти з вашої картки не списано."
|
||
allowed_but_org_off: "Remote Spending дозволено для цього термінала, але для цієї організації воно все ще вимкнене. Адміністратор оплати може увімкнути його на сторінці Hermes Agent у порталі, після чого виконайте /topup знову."
|
||
allowed_no_card: "Remote Spending дозволено — але картку ще не збережено."
|
||
topup_on_portal_to_continue: "Щоб продовжити, поповніть рахунок і керуйте оплатою на порталі."
|
||
allowed_run_topup: "Remote Spending дозволено. Виконайте /topup, щоб продовжити."
|
||
choice_resume_topup: "Відновити поповнення на {amount}"
|
||
desc_resume_topup: "завершити відкладену покупку"
|
||
resume_topup_title: "Відновіть своє поповнення"
|
||
resume_topup_detail: "{amount} готово до завершення — натисніть Enter, щоб продовжити."
|
||
resuming_topup: "Відновлюємо ваше поповнення — підтверджуємо розрахунок…"
|
||
auto_reload: "Автопоповнення"
|
||
auto_reload_hint: "Автоматично додавати кошти, коли баланс низький."
|
||
card_on_file: "Збережена картка: {card}"
|
||
no_saved_card_manage_portal: "Збереженої картки немає — керуйте оплатою на порталі."
|
||
auto_reload_rule: "нижче {threshold} → поповнити до {reload_to}"
|
||
auto_reload_rule_cap: "Нижче {threshold} → поповнити до {reload_to}"
|
||
currently: "Зараз: {rule}"
|
||
auto_reload_on_detail: "Увімкнено — {rule}"
|
||
run_interactive_to_configure: "Запустіть інтерактивний CLI, щоб налаштувати автопоповнення."
|
||
choice_edit_thresholds: "Змінити пороги"
|
||
desc_edit_thresholds: "змінити, коли і на скільки поповнювати"
|
||
choice_turn_off: "Вимкнути"
|
||
desc_turn_off: "вимкнути автопоповнення"
|
||
choice_agree_turn_on: "Погодитися й увімкнути"
|
||
desc_agree_turn_on: "увімкнути автопоповнення"
|
||
amount_prompt_labeled: "{label} (USD)"
|
||
threshold_label: "Коли баланс падає нижче"
|
||
reload_to_label: "Поповнити баланс до"
|
||
reload_must_exceed_threshold: "🔴 Сума поповнення має бути більшою за поріг."
|
||
auto_reload_consent: "Підтверджуючи, ви дозволяєте Nous Research списувати кошти з {card} щоразу, коли ваш баланс досягає {threshold}. Вимкнути можна будь-коли тут або на порталі."
|
||
turn_on_auto_reload_question: "Увімкнути автопоповнення?"
|
||
auto_reload_enabled: "✅ Автопоповнення увімкнено: нижче {threshold} → поповнити до {reload_to}."
|
||
auto_reload_disabled: "✅ Автопоповнення вимкнено."
|
||
monthly_spend_limit: "Місячний ліміт витрат"
|
||
no_monthly_cap: "Місячний ліміт не відображається (керується на порталі)."
|
||
default_ceiling_suffix: " (стандартна межа)"
|
||
used_this_month: "Використано {spent} з {limit} цього місяця{ceiling}"
|
||
monthly_limit_read_only: "Місячний ліміт встановлюється на порталі — у терміналі він лише для читання."
|
||
subscription:
|
||
load_failed_label: "Не вдалося завантажити підписку"
|
||
team_header: "Командна підписка"
|
||
a_team_org: "командна організація"
|
||
team_connected: "Цей термінал підключено до {org}. Команди працюють зі спільним балансом · щоб поповнити його, скористайтеся /topup."
|
||
personal_note: "Особисті підписки прив'язані до вашого особистого облікового запису."
|
||
your_plan: "ваш план"
|
||
cancels: "скасовується"
|
||
end_of_billing_period: "кінця розрахункового періоду"
|
||
end_of_cycle: "кінця циклу"
|
||
status_flip_cancels: " → скасовується"
|
||
status_flip_to: " → {tier}"
|
||
status_left: " · залишилося ${amount}"
|
||
status_view_only: " · лише перегляд"
|
||
status_renews: " · поновлюється {date}"
|
||
status_line: "План: {plan}{flip}{left}{tail}"
|
||
status_free: "План: Free · лише безкоштовні моделі"
|
||
scheduled_change: "Запланована зміна"
|
||
scheduled_change_line: "{from_plan} ──▶ {to_plan} {when}"
|
||
scheduled_when: "· {when}"
|
||
keep_until_then: "До того часу ви зберігаєте {plan} (і його кредити)."
|
||
paid_models_need_subscription: "> Для платних моделей потрібна підписка. Оформіть її, щоб отримати доступ."
|
||
low_balance: "! Низький баланс · залишилося {amount}. Поповніть або підвищте план, щоб робота не обірвалася посередині."
|
||
plan_changes_need_admin: "Змінювати план може лише адміністратор або власник організації."
|
||
manage_url_line: "Керування підпискою: {url}"
|
||
open_then_rerun: "Відкрийте посилання в браузері, а потім знову виконайте /subscription."
|
||
start_subscription: "Оформити підписку"
|
||
choose_plan: "Оберіть план"
|
||
start_opens_portal: "Оформлення підписки відкриє портал, де можна додати картку."
|
||
desc_start_on_portal: "оформити {name} на порталі"
|
||
pick_plan_detail: "Оберіть план, щоб відкрити його на порталі."
|
||
cancelled_no_plan_started: "🟡 Скасовано. План не оформлено."
|
||
opening_portal_to_start: "Відкриваю портал, щоб оформити {plan}…"
|
||
open_url_to_start: "Відкрийте цю URL-адресу, щоб оформити {plan}: {url}"
|
||
finish_in_browser: "Завершіть у браузері, а потім знову виконайте /subscription."
|
||
manage_your_subscription: "Керування підпискою"
|
||
desc_open_subscription_page: "відкрити сторінку підписки в браузері"
|
||
choice_copy_link: "Копіювати посилання"
|
||
desc_copy_link: "скопіювати URL-адресу керування підпискою в буфер обміну"
|
||
copied: "📋 Скопійовано: {url}"
|
||
manage_url: "URL керування: {url}"
|
||
choice_keep_plan: "Залишити {plan} (скасувати заплановану зміну)"
|
||
desc_keep_plan: "скасувати зміну, що очікує"
|
||
choice_change_plan: "Змінити план"
|
||
desc_change_plan: "підвищити або понизити план у терміналі"
|
||
choice_cancel_subscription: "Скасувати підписку"
|
||
desc_cancel_subscription: "запланувати скасування на кінець періоду"
|
||
closed_no_change: "🟡 Закрито. План не змінено."
|
||
no_other_plans: "Зараз немає інших планів, на які можна перейти."
|
||
direction_upgrade: "підвищення"
|
||
direction_downgrade: "пониження"
|
||
tier_row: "{row} · {direction}"
|
||
desc_switch_to: "перейти на {name}"
|
||
change_plan_title: "Зміна плану"
|
||
current_pick_detail: "Поточний: {plan}. Оберіть план, щоб переглянути наслідки."
|
||
cancelled_no_plan_change: "🟡 Скасовано. План не змінено."
|
||
checking_change: "Перевіряю зміну…"
|
||
the_selected_plan: "вибраний план"
|
||
already_on_nothing_to_change: "Ви вже на плані {plan} — змінювати нічого."
|
||
cannot_confirm_here: "Цю зміну не можна підтвердити тут — керуйте нею на порталі."
|
||
confirm_plan_change: "Підтвердьте зміну плану"
|
||
tag_charged_now: "· списання зараз"
|
||
tag_scheduled_not_today: "· заплановано · не сьогодні"
|
||
charged_amount_now: "{amount} зараз (пропорційно)"
|
||
charged_prorated_now: "пропорційну суму зараз"
|
||
upgrade_will_be_charged: "Підвищення до {plan}. З вас буде списано {charged}."
|
||
card_on_subscription_charged: "Кошти буде списано з картки, прив'язаної до вашої підписки."
|
||
named_card_on_subscription_charged: "Кошти буде списано з {card} — картки, прив'язаної до вашої підписки."
|
||
choice_pay_and_upgrade: "Сплатити {amount} і підвищити зараз"
|
||
choice_upgrade_now_prorated: "Підвищити зараз (пропорційне списання)"
|
||
desc_charge_and_upgrade: "списати кошти та підвищити зараз"
|
||
change_takes_effect: "Зміна на {plan} — набуде чинності {when}. Зараз нічого не списується; до того часу ви зберігаєте поточний план."
|
||
choice_schedule_change: "Запланувати зміну на {plan}"
|
||
desc_apply_change: "застосувати цю зміну"
|
||
desc_do_not_change: "не змінювати"
|
||
monthly_credits_change: "Зміна щомісячних кредитів: {delta}."
|
||
confirm_cancellation: "Підтвердьте скасування"
|
||
cancel_stays_active_until: "Скасувати {plan} — план залишиться активним до {end}, а потім не поновиться."
|
||
keep_remaining_credits: "Кредити, що залишилися на цей період, зберігаються за вами. Ви можете відновити підписку до його завершення."
|
||
cancel_subscription_question: "Скасувати підписку?"
|
||
desc_keep_your_plan: "залишити свій план"
|
||
cancelled_plan_unchanged: "🟡 Скасовано. Ваш план без змін."
|
||
your_new_plan: "ваш новий план"
|
||
upgrade_already_on_tier: "Ви вже на плані {name}."
|
||
upgrade_upgraded: "Підвищено до {name}. Нові щомісячні кредити з'являться за мить."
|
||
upgrade_requires_action: "🟡 Для цього підвищення потрібна додаткова перевірка (3DS). Завершіть її на порталі."
|
||
upgrade_payment_failed: "🔴 Вашу картку відхилено. Оновіть спосіб оплати на порталі та спробуйте ще раз."
|
||
pending_scheduled: "Заплановано — сьогодні ваш план не змінюється. Він діє до кінця розрахункового періоду, а потім перемикається."
|
||
pending_cancel_scheduled: "Заплановано — ваш план залишається активним до кінця розрахункового періоду, а потім скасовується. Сьогодні нічого не змінюється."
|
||
pending_resumed: "Скасовано — ви залишаєтеся на поточному плані."
|
||
rerun_to_review: "Щоб переглянути, будь-коли знову виконайте /subscription."
|
||
stepup_explain: "Щоб змінити план із термінала, одноразово дозвольте Remote Spending. Відкриється браузер для авторизації, після чого зміна продовжиться прямо тут."
|
||
stepup_noninteractive: "Виконайте `hermes portal` і дозвольте Remote Spending, а потім знову виконайте /subscription."
|
||
stepup_declined: "Змін не внесено. Дозвольте Remote Spending, коли будете готові."
|
||
stepup_not_granted: "Не вдалося дозволити Remote Spending — для цієї організації це має схвалити адміністратор або власник."
|
||
remote_spending_not_allowed_yet: "🟡 Remote Spending ще не дозволено. Дозвольте його, а потім повторіть."
|
||
upgrade_ambiguous: "🟡 Не вдалося підтвердити підвищення — кошти з вашої картки могли бути списані або ні."
|
||
rerun_to_check_plan: "Знову виконайте /subscription, щоб перевірити свій план, перш ніж повторювати спробу."
|
||
model:
|
||
switched: "✓ Модель змінено: {model}"
|
||
acting_model: "Діюча модель (оплачується за цей запуск): {model}"
|
||
reasoning_effort: "Рівень міркувань: {effort}"
|
||
reasoning_effort_saved: "Рівень міркувань: {effort} (збережено в конфігурації)"
|
||
saved: "Збережено в config.yaml"
|
||
saved_global: "Збережено в config.yaml (--global)"
|
||
next_turn_only: "(лише на наступний хід — повернеться після однієї відповіді)"
|
||
session_only: "(лише для цього сеансу — додайте --global, щоб зберегти)"
|
||
effort_none: "none (вимкнути міркування)"
|
||
effort_keep_current: "Залишити поточний рівень"
|
||
no_authenticated_providers: "Автентифікованих провайдерів не знайдено."
|
||
usage_switch: "змінити модель (цей сеанс)"
|
||
usage_switch_global: "змінити модель і зберегти як типову"
|
||
usage_switch_once: "змінити лише на наступний хід"
|
||
usage_switch_session: "змінити лише для цього сеансу"
|
||
usage_switch_provider_model: "змінити провайдера та модель"
|
||
usage_switch_reasoning: "змінити модель і задати рівень міркувань"
|
||
usage_switch_provider: "змінити провайдера"
|
||
usage_refresh: "повторно отримати актуальні списки моделей"
|
||
reset_none: "Уже використовується налаштована типова модель ({model}) — скидати нічого."
|
||
reset_no_default: "У config.yaml немає model.default — повертатися нема до чого."
|
||
choice_switch_anyway: "Усе одно змінити"
|
||
desc_switch_anyway: "Використати цю модель для поточного сеансу Hermes."
|
||
choice_cancel: "Скасувати"
|
||
desc_keep_current_model: "Залишити поточну модель."
|
||
confirm_choice_prompt: "Вибір [1/2]: "
|
||
switch_cancelled: "Зміну моделі скасовано."
|
||
selection_failed: "✗ Не вдалося вибрати модель: {error}"
|
||
switch_failed: "⚠ Не вдалося змінити модель на {model} ({error}); залишаємося на {old_model}."
|
||
cleared_picker_cache: "Кеш вибору моделей очищено. Оновлення..."
|
||
moa_one_shot_queued: "Одноразовий запуск MoA поставлено в чергу з пресетом {preset}; попередню модель буде відновлено після цього ходу."
|
||
normalized_model: "Назву моделі '{old}' нормалізовано до '{new}' для {provider}."
|
||
stripped_provider_prefix: "Префікс провайдера прибрано з '{old}'; для {provider} використовується '{new}'."
|
||
restored_from_session: "Модель відновлено із сеансу: {model}"
|
||
could_not_load_config: "❌ не вдалося завантажити конфігурацію: {error}"
|
||
tip_reset_new_session: "Порада: `/reset` одразу починає новий сеанс."
|
||
single_query:
|
||
query_label: "Запит:"
|
||
kanban_run_reclaimed: "kanban: запуск цього воркера було відкликано ще до початку; вихід"
|
||
shared:
|
||
cancel: "Скасувати"
|
||
back: "← Назад"
|
||
unknown: "невідомо"
|
||
unknown_error: "Невідома помилка"
|
||
noun_model: "модель"
|
||
label_enabled: "увімкнено"
|
||
label_disabled: "вимкнено"
|
||
label_yes: "так"
|
||
label_no: "ні"
|
||
label_on: "увімк"
|
||
label_off: "вимк"
|
||
label_on_upper: "УВІМК"
|
||
label_off_upper: "ВИМК"
|
||
label_value: "{label}: {value}"
|
||
just_now: "щойно"
|
||
ago_seconds: "{seconds} с тому"
|
||
ago_minutes: "{minutes} хв тому"
|
||
ago_hours: "{hours} год тому"
|
||
duration_s: "{seconds}с"
|
||
duration_m: "{minutes}хв"
|
||
duration_ms: "{minutes}хв {seconds}с"
|
||
duration_ms_compact: "{minutes}хв{seconds}с"
|
||
duration_hm: "{hours}год {minutes}хв"
|
||
duration_hms: "{hours}год {minutes}хв {seconds}с"
|
||
duration_dhm: "{days}д {hours}год {minutes}хв"
|
||
duration_m_rest: "{minutes}хв {rest}"
|
||
duration_hm_rest: "{hours}год {minutes}хв {rest}"
|
||
no_active_agent: "(._.) Немає активного агента -- спочатку надішліть повідомлення."
|
||
n_more: "ще {count}"
|
||
more_not_shown: "решту не показано"
|
||
yes_no_default_yes: "Y/n"
|
||
yes_no_default_no: "y/N"
|
||
yes_initial: "y"
|
||
tui:
|
||
approval_once: "Дозволити один раз"
|
||
approval_session: "Дозволити для цього сеансу"
|
||
approval_always: "Додати до постійного списку дозволених"
|
||
approval_deny: "Відхилити"
|
||
approval_view: "Показати команду повністю"
|
||
approval_title: "⚠️ Небезпечна команда"
|
||
approval_choose_full: "… (виберіть {label})"
|
||
approval_command_truncated: "… (команду скорочено — повний текст: /logs або /debug)"
|
||
approval_description_truncated: "… (опис скорочено)"
|
||
confirm_title: "Підтвердьте дію"
|
||
confirm_footer: "Введіть 1/2/3 або виберіть ↑/↓ і натисніть Enter. ESC/Ctrl+C — скасувати."
|
||
detail_truncated: "… (подробиці скорочено)"
|
||
clarify_title: "{agent_name} потребує вашої відповіді"
|
||
clarify_question_count_one: "{count} питання"
|
||
clarify_question_count_other: "{count} питань"
|
||
clarify_other_answer: "Інше: {text}"
|
||
clarify_other_type_below: "Інше (введіть нижче)"
|
||
clarify_other_type_answer: "Інше (введіть свою відповідь)"
|
||
clarify_guidance: "Введіть відповідь у полі нижче та натисніть Enter."
|
||
picker_title_provider: "⚙ Вибір моделі — виберіть провайдера"
|
||
picker_provider_row_one: "{name} ({count} модель)"
|
||
picker_provider_row_other: "{name} ({count} моделей)"
|
||
picker_current_marker: " ← поточна"
|
||
picker_current_hint: "Поточна: {model} на {provider}"
|
||
picker_title_effort: "⚙ Вибір моделі — рівень міркування для {model}"
|
||
picker_current_labeled: "{label} ← поточний"
|
||
picker_effort_hint: "Застосовується разом зі зміною моделі (та сама область) — Enter, щоб вибрати"
|
||
picker_title_models: "⚙ Вибір моделі — {provider}"
|
||
picker_provider_fallback: "Провайдер"
|
||
picker_filter_hint: "Фільтр: {query}▏ (збігів: {shown}/{total} — вводьте, щоб звузити, Backspace — очистити)"
|
||
picker_select_hint: "Виберіть модель (доступно: {count}) — вводьте текст для фільтрації"
|
||
picker_empty: "Для цього провайдера немає моделей. Виберіть «Назад» або «Скасувати»."
|
||
palette_title: "⚙ Палітра команд"
|
||
palette_filter_hint: "Фільтр: {query}▏ (збігів: {shown}/{total} — Enter вставляє, Esc скасовує)"
|
||
palette_hint: "Вводьте текст для фільтрації {total} команд — ↑/↓, потім Enter вставляє, Esc скасовує"
|
||
palette_empty: "(немає відповідних команд)"
|
||
vault_code_title: "🔐 Код підтвердження для {site}"
|
||
vault_code_body: "{site} запитує одноразовий код (SMS, електронна пошта або застосунок-автентифікатор).\nВведіть код і натисніть Enter; {agent_name} введе його на сторінці за вас.\nEnter у порожньому рядку пропускає. Модель ніколи не бачить код."
|
||
vault_save_title: "🔐 Зберегти логін для {site}"
|
||
vault_save_body: "Агент дійшов до сторінки входу, але для цього сайту немає збереженого логіна.\nВведіть email / ім'я користувача, з яким ви входите (видно під час введення), і натисніть Enter.\nEnter у порожньому рядку пропускає. Модель нічого з цього не бачить."
|
||
vault_save_pw_body: "Тепер пароль (приховано). Він шифрується на цьому комп'ютері, прив'язується до\n{origin} і вводиться на сторінці так, що модель його ніколи не бачить.\nEnter у порожньому рядку пропускає."
|
||
vault_unlock_title: "🔐 Розблокувати {backend}"
|
||
vault_unlock_body: "Агент хоче увійти на сайт з логіном, збереженим у {backend}.\nВведіть головний пароль (приховано), щоб розблокувати його на цей сеанс.\nEnter у порожньому рядку залишає заблокованим. Модель ніколи не бачить пароль."
|
||
sudo_title: "🔐 Потрібен пароль sudo"
|
||
sudo_body: "Введіть пароль нижче (приховано) або натисніть Enter, щоб пропустити"
|
||
secret_title: "🔑 Потрібне налаштування навички"
|
||
secret_prompt: "Введіть значення для {var_name}"
|
||
secret_fallback_name: "секрет"
|
||
secret_body: "Введіть секрет нижче (приховано), ESC або Ctrl+C — пропустити"
|
||
connection_connect: "Підключити"
|
||
connection_continue: "Продовжити"
|
||
hint_sudo: "пароль приховано · Enter — пропустити"
|
||
hint_secret: "секрет приховано · Enter — пропустити"
|
||
hint_approval: "↑/↓ — вибрати, Enter — підтвердити"
|
||
hint_slash_confirm: "введіть 1/2/3 або ↑/↓ — вибрати, Enter — підтвердити"
|
||
hint_connection_form: "введіть значення, Enter — наступне поле · ↑/↓ — перехід · ESC — скасувати"
|
||
hint_connection_url: "Enter — відкрити в браузері · ESC — скасувати"
|
||
hint_connection_authorized: "↑/↓ — вибрати, Enter — підтвердити"
|
||
hint_connection_waiting: "очікування бекенду… · Ctrl+C — перервати"
|
||
hint_connection_default: "налаштування підключення"
|
||
hint_vault_username: "видно під час введення · Enter — продовжити"
|
||
hint_clarify_freetext: "введіть відповідь і натисніть Enter"
|
||
hint_clarify_batch: "↑/↓ — вибрати, Enter — зафіксувати, Tab — наступне питання"
|
||
hint_input_disabled: "введення тимчасово вимкнено"
|
||
hint_input_queues: "введення активне; Enter додає в чергу"
|
||
hint_command_running: "{frame} команда виконується · {detail}"
|
||
placeholder_recording: "запис... {shortcut} — зупинити, Ctrl+C — скасувати"
|
||
placeholder_transcribing: "розпізнавання..."
|
||
placeholder_vault_username: "введіть email / ім'я користувача, Enter — продовжити · ESC — пропустити"
|
||
placeholder_vault_code: "введіть код, Enter — надіслати · ESC — пропустити"
|
||
placeholder_password: "введіть пароль (приховано), Enter — надіслати · ESC — пропустити"
|
||
placeholder_secret: "введіть секрет (приховано), Enter — надіслати · ESC — пропустити"
|
||
placeholder_choice: "введіть 1/2/3 або виберіть ↑/↓ і натисніть Enter"
|
||
placeholder_answer: "введіть відповідь тут і натисніть Enter"
|
||
placeholder_processing_command: "Обробка команди..."
|
||
placeholder_busy: "повідомлення=перервати · /queue · /bg · /steer · Ctrl+C — скасувати"
|
||
placeholder_voice_idle: "введіть текст або {shortcut} для запису"
|
||
voice_recording_failed: "Не вдалося записати голос: {error}"
|
||
recording_cancelled: "Запис скасовано."
|
||
force_exiting: "⚡ Примусовий вихід..."
|
||
interrupting_again_hint: "⚡ Переривання агента... (натисніть Ctrl+C ще раз для примусового виходу)"
|
||
interrupting: "⚡ Переривання агента..."
|
||
suspend_unsupported: "Призупинення (Ctrl+Z) не підтримується у Windows."
|
||
suspended: "{agent_name} призупинено. Виконайте `fg`, щоб повернути {agent_name}."
|
||
steer_failed_queued: "Не вдалося скерувати ({error}) — поставлено в чергу на наступний хід."
|
||
steered: "⏩ Скеровано: '{preview}'"
|
||
images_attached_preview_one: "[прикріплено {count} зображення]"
|
||
images_attached_preview_other: "[прикріплено зображень: {count}]"
|
||
queued_next_turn: "У черзі на наступний хід: {preview}"
|
||
redirected_turn: "↪ Поточний хід перенаправлено: '{preview}'"
|
||
model_selection_failed: "✗ Не вдалося вибрати модель: {error}"
|
||
auto_attached_image: "📎 Автоматично прикріплено зображення: {name}"
|
||
detected_file: "📄 Виявлено файл: {name}"
|
||
images_attached_one: "📎 Прикріплено {count} зображення"
|
||
images_attached_other: "📎 Прикріплено зображень: {count}"
|
||
command_interrupted: "Команду перервано."
|
||
welcome: "Вітаємо в Hermes Agent! Введіть повідомлення або /help для списку команд."
|
||
vscode_images_hint: "VS Code може показувати тут зображення в повній роздільній здатності: увімкніть terminal.integrated.enableImages у налаштуваннях."
|
||
activated_skills_label: "Активовані навички:"
|
||
redaction_disabled_title: "⚠ Приховування секретів ВИМКНЕНО"
|
||
redaction_disabled_body: "(HERMES_REDACT_SECRETS={value}). Ключі API та токени можуть з'являтися у відкритому вигляді у виводі чату, JSON сеансів і журналах. Задайте {setting} у config.yaml, щоб увімкнути знову."
|
||
stdin_unavailable: "Помилка: stdin (fd 0) недоступний.\nТаке буває з деякими інсталяціями Python (наприклад, cPython під керуванням uv на macOS).\nСпробуйте перевстановити Python через pyenv або Homebrew, потім знову виконайте: hermes setup"
|
||
shutting_down: "Завершення роботи… (закриття сеансу)"
|
||
session_deleted: "✓ Сеанс {session_id} видалено"
|
||
session_delete_missing: "✗ Сеанс {session_id} не знайдено для видалення"
|
||
voice:
|
||
err_termux_app_missing: "Виявлено пакет команд Termux:API, але Android-застосунок відсутній.\nВстановіть/оновіть Android-застосунок Termux:API, а потім повторіть /voice on."
|
||
err_mic_access: "Голосовому режиму потрібен доступ до мікрофона.\nВиконайте pkg install termux-api і встановіть Android-застосунок Termux:API, а потім повторіть /voice on."
|
||
err_audio_capture: "Голосовий режим потребує захоплення звуку."
|
||
err_stt_provider: "Голосовому режиму потрібен STT-провайдер для транскрипції.\nВиконайте hermes tools і налаштуйте Speech-to-Text, а потім перезапустіть Hermes."
|
||
silence_autostop: "Виявлено тишу, автоматична зупинка..."
|
||
hint_continuous: "автозупинка при тиші | {shortcut} — зупинити й вийти з безперервного режиму"
|
||
hint_termux: "Захоплення Termux:API | {shortcut} — зупинити"
|
||
hint_stop: "{shortcut} — зупинити"
|
||
recording: "● Запис..."
|
||
autorestart_failed: "Не вдалося автоматично перезапустити голосовий режим: {error}"
|
||
no_speech: "Мовлення не виявлено."
|
||
preparing_stt: "Підготовка локальної STT-моделі '{model}' (при першому використанні вона може завантажитися з Hugging Face)..."
|
||
transcribing: "Транскрибування..."
|
||
stop_phrase: "Виявлено фразу зупинки — завершення голосового чату."
|
||
transcription_failed: "Не вдалося транскрибувати: {error}"
|
||
processing_error: "Помилка обробки голосу: {error}"
|
||
recording_preserved: "Запис збережено в: {path}"
|
||
no_speech_stop: "Мовлення не виявлено 3 рази, безперервний режим зупинено."
|
||
tts_failed: "Не вдалося відтворити TTS: {error}"
|
||
interjection: "🎤 Голосова репліка — перериваю…"
|
||
echo_ignored: "Проігноровано ймовірне ехо TTS (не додано до черги)."
|
||
already_enabled: "Голосовий режим уже увімкнено."
|
||
unavailable_header: "Голосовий режим недоступний у цьому середовищі:"
|
||
requirements_header: "Вимоги голосового режиму не виконано:"
|
||
termux_install_cmd: "Виконайте: pkg install termux-api"
|
||
termux_install_hint: "Потім встановіть/оновіть Android-застосунок Termux:API для захоплення з мікрофона"
|
||
tts_enabled_suffix: " (TTS увімкнено)"
|
||
enabled: "Голосовий режим увімкнено{tts_status}"
|
||
record_key_hint: "{shortcut} — почати/зупинити запис"
|
||
tts_toggle_hint: "/voice tts — перемкнути озвучування відповідей"
|
||
disable_hint: "/voice off — вимкнути голосовий режим"
|
||
stop_phrase_typed: "Введено фразу зупинки — завершення голосового чату."
|
||
disabled: "Голосовий режим вимкнено."
|
||
wake_unavailable: "Слово активації недоступне: {error}"
|
||
wake_already: "Прослуховування слова активації вже триває."
|
||
wake_requirements_header: "Вимоги для слова активації не виконано:"
|
||
wake_installing: "Встановлення рушія слова активації (перше використання — це може зайняти хвилину)..."
|
||
wake_start_failed: "Не вдалося запустити слово активації: {error}"
|
||
wake_listening: "Слово активації прослуховується"
|
||
wake_listening_hint: "(скажіть \"{phrase}\" — /wake off, щоб зупинити)"
|
||
wake_stopped: "Слово активації зупинено."
|
||
wake_not_running: "Слово активації не запущено."
|
||
wake_profile_hint: "Фраза активації для профілю '{profile}' — виконайте: hermes -p {profile}"
|
||
wake_detected: "✦ Виявлено слово активації — слухаю..."
|
||
wake_capture_failed: "Не вдалося захопити звук після активації: {error}"
|
||
state_listening: "СЛУХАЄ"
|
||
state_paused: "ПРИЗУПИНЕНО"
|
||
state_off: "ВИМК"
|
||
state_on: "УВІМК"
|
||
state_yes: "ТАК"
|
||
wake_status_title: "Стан слова активації"
|
||
label_state: " Стан: {state}"
|
||
label_phrase: " Фраза: \"{phrase}\""
|
||
label_provider: " Провайдер: {provider}"
|
||
label_surface: " Інтерфейс: {surface}"
|
||
label_new_session: " Новий сеанс: {value}"
|
||
mic_silent_warning: "⚠ Мікрофон передає лише тишу — слухач нічого не чує."
|
||
mic_silent_macos_hint: "На macOS: System Settings > Privacy & Security > Microphone — дозвольте доступ вашому терміналу/Hermes, а потім виконайте /wake off + /wake on."
|
||
wake_enable_hint: "Увімкнути: /wake on"
|
||
enable_first_hint: "Спочатку увімкніть голосовий режим: /voice on"
|
||
tts_no_provider: "Попередження: немає доступного TTS-провайдера. Встановіть edge-tts або задайте API-ключі."
|
||
tts_status: "Голосовий TTS {status}."
|
||
status_title: "Стан голосового режиму"
|
||
label_mode: " Режим: {value}"
|
||
label_tts: " Озвучення (TTS): {value}"
|
||
label_recording: " Запис: {value}"
|
||
label_record_key: " Клавіша запису: {shortcut}"
|
||
label_requirements: "Вимоги:"
|
||
render:
|
||
response_transformed: "[Відповідь перетворено після потокового виведення]"
|
||
banner_tagline: "{name} - фреймворк AI-агентів"
|
||
banner_version: "Hermes Agent, версія {version} ({date})"
|
||
subagents:
|
||
cannot_steer_process: "Фонові процеси не можна скерувати; зупиніть їх або прочитайте журнал."
|
||
count_live: "{count} активних"
|
||
count_done: "{count} завершено"
|
||
count_running: "{count} виконується"
|
||
count_procs_one: "{count} процес"
|
||
count_procs_other: "{count} процесів"
|
||
count_queued: "{count} у черзі"
|
||
goal_parked: "ціль відкладено"
|
||
goal_paused: "ціль призупинено"
|
||
goal_active: "ціль активна"
|
||
title_live_work: "Поточна робота"
|
||
title_subagents: "Субагенти"
|
||
title_processes: "Процеси"
|
||
last_tool: "останній: {tool}"
|
||
starting: "запускається"
|
||
next_queued: "далі: {text}"
|
||
heading_full: "{title} · {count} · Ctrl+T розгорнути · Ctrl+R відновити"
|
||
heading_medium: "{count} · Ctrl+T розгорнути · Ctrl+R відновити"
|
||
heading_compact: "{count} · Ctrl+T · Ctrl+R"
|
||
heading_session_restore: "{count} · Ctrl+R відновити"
|
||
heading_session_compact: "{count} · Ctrl+R"
|
||
subagents_heading: "Субагенти · {count} активних · Ctrl+T розгорнути · Ctrl+R згорнути"
|
||
more_subagents: "+{count} ще · Ctrl+T усі субагенти"
|
||
controls_expand_collapse: " · Ctrl+T розгорнути · Ctrl+R згорнути"
|
||
processes_heading: "Процеси · {summary}{controls}"
|
||
more_processes: "+{count} ще · Ctrl+T усі процеси"
|
||
controls_collapse: " · Ctrl+R згорнути"
|
||
queue_heading: "Черга · {count} у черзі · /queue list{controls}"
|
||
more_queued: "+{count} ще"
|
||
transcript_unavailable: "Транскрипт у реальному часі ще недоступний."
|
||
control_pending: "Надсилання…"
|
||
steer_prompt: "Скерувати: "
|
||
roster_empty: "Немає активних субагентів чи фонових процесів. Результати з'являться в розмові."
|
||
entry_gone: "Цей запис більше не активний."
|
||
noun_process: "процес"
|
||
noun_subagent: "субагент"
|
||
footer_confirm_stop: "Зупинити вибраний {noun}? y підтвердити · Esc скасувати"
|
||
footer_confirm_stop_compact: "Зупинити? y так · Esc скасувати"
|
||
footer_steering: "Enter додає вказівку до черги · Esc скасовує (не перериває)"
|
||
footer_steering_compact: "Enter надіслати · Esc скасувати"
|
||
footer_steer_key: " s скерувати"
|
||
footer_steer_key_long: " · s скерувати"
|
||
footer_detail_compact: "PgUp/Dn ·{steer} x зупинити · Esc"
|
||
footer_roster_compact: "↑↓ · Enter стежити · Ctrl+T закрити"
|
||
footer_detail: "Esc список · PgUp/PgDn стежити{steer} · x зупинити"
|
||
footer_roster: "↑/↓ вибрати · Enter стежити{steer} · x зупинити · q/Ctrl+T закрити"
|
||
dock:
|
||
process_goal_label: "фоновий процес"
|
||
last_output: "останнє: {detail}"
|
||
starting: "запускається"
|
||
exit_code: "код виходу {code}"
|
||
verdict_killed: "зупинено"
|
||
verdict_lost: "втрачено"
|
||
verdict_ago: "{verdict} · {seconds} с тому"
|
||
process_gone: "Цей процес більше не відстежується."
|
||
no_output: "Виводу ще немає."
|
||
approval:
|
||
bell_context: "схвалення"
|
||
label: "Схвалення"
|
||
timeout_denying: "⏱ Час вийшов — команду відхилено"
|
||
timed_out_no_response: "час вийшов (без відповіді)"
|
||
outcome_once: "дозволено один раз"
|
||
outcome_session: "дозволено для сеансу"
|
||
outcome_always: "додано до списку дозволених"
|
||
outcome_deny: "відхилено"
|
||
clarify:
|
||
bell_context: "уточнення"
|
||
label: "Уточнення"
|
||
timed_out_locked_answers: "(час на уточнення вийшов через {timeout} с — повернено зафіксовані відповіді)"
|
||
connect:
|
||
bell_context: "налаштування підключення"
|
||
cannot_restart: "Це підключення не можна запустити повторно. Скасуйте й попросіть агента ще раз."
|
||
secret_set: "Задано"
|
||
set_up: "Налаштувати {name}"
|
||
button_connect: "Підключити"
|
||
button_cancel: "Скасувати"
|
||
button_continue: "Продовжити"
|
||
press_enter_open: "Натисніть Enter, щоб відкрити в браузері"
|
||
failed: "Не вдалося підключитися"
|
||
authorized_no_tools: "Авторизовано. Інструменти недоступні."
|
||
connected: "Підключено"
|
||
named_account: "Hermes назвав цей обліковий запис {name} «{alias}». Його можна перейменувати будь-коли."
|
||
waiting: "Очікування…"
|
||
editor:
|
||
only_interactive: "Зовнішній редактор доступний лише в інтерактивному CLI."
|
||
wait_for_command: "Дочекайтеся завершення поточної команди, перш ніж відкривати редактор."
|
||
finish_active_prompt: "Завершіть активний запит, перш ніж відкривати редактор."
|
||
no_input_buffer: "Немає активного буфера введення для зовнішнього редактора."
|
||
open_failed: "Не вдалося відкрити зовнішній редактор: {error}"
|
||
shell_command_failed: "Команда оболонки завершилася з помилкою: {error}"
|
||
command_failed: "Команда завершилася з помилкою: {error}"
|
||
queued_next_turn: "Поставлено в чергу на наступний хід: {preview}"
|
||
modal:
|
||
cancelled_no_input: "🟡 /{command} скасовано (немає введення)."
|
||
unrecognized_choice: "🟡 Нерозпізнаний вибір '{raw}'. /{command} скасовано."
|
||
cancelled: "🟡 /{command} скасовано. {unchanged}"
|
||
re_enable_hint: " Увімкнути знову можна через `approvals.{setting}: true` у config.yaml."
|
||
persist_opt_out_failed: "⚠️ Не вдалося зберегти відмову — {once_verb} один раз."
|
||
persist_failed_proceeding: "⚠️ Не вдалося зберегти відмову — продовжуємо один раз."
|
||
choice_prompt: "Вибір [1/2/3]: "
|
||
destructive_title: "⚠️ /{command} — знищує стан розмови"
|
||
approve_once: "Схвалити один раз"
|
||
approve_once_detail: "продовжити лише цього разу"
|
||
always_approve: "Завжди схвалювати"
|
||
always_approve_detail: "продовжити й назавжди приховати цей запит"
|
||
cancel: "Скасувати"
|
||
cancel_detail: "зберегти поточну розмову"
|
||
conversation_unchanged: "Розмова без змін."
|
||
destructive_always_msg: "🔒 Надалі /clear, /new, /reset і /undo виконуватимуться без підтвердження."
|
||
bell_input_needed: "потрібне введення"
|
||
bell_turn_complete: "хід завершено"
|
||
palette:
|
||
category_skill: "Навичка"
|
||
secret:
|
||
bell_sudo: "пароль sudo"
|
||
sudo_timeout: "⏱ Час вийшов — продовжуємо без sudo"
|
||
sudo_received: "✓ Пароль отримано (кешовано на сеанс)"
|
||
sudo_skipped: "⏭ Пропущено"
|
||
bell_unlock: "розблокувати {name}"
|
||
stays_locked: "⏭ {name} залишається заблокованим"
|
||
unlocking_for_session: "✓ Розблоковуємо {name} на цей сеанс"
|
||
bell_save_login: "зберегти логін для {site}"
|
||
login_not_saved: "⏭ Логін для {site} не збережено"
|
||
login_saved: "✓ Логін для {site} збережено у вашому сховищі"
|
||
bell_verification_code: "код підтвердження для {site}"
|
||
code_not_entered: "⏭ Код для {site} не введено"
|
||
code_entered: "✓ Код введено на {site}"
|
||
display:
|
||
ui_redrawn: "✓ Інтерфейс перемальовано"
|
||
status_bar_visible: "Рядок стану показано"
|
||
status_bar_hidden: "Рядок стану приховано"
|
||
exit:
|
||
unknown_argument: "✗ Невідомий аргумент: {argument}. Використайте /exit --delete, щоб також видалити історію сеансу."
|
||
goal:
|
||
barrier_lifted: "▶ Бар'єр цілі знято — відновлюємо роботу."
|
||
paused_interrupted: "⏸ Ціль призупинено — хід було перервано. Використайте /goal resume, щоб продовжити, або /goal clear, щоб зупинити."
|
||
loop:
|
||
wakeup_firing: "↻ Спрацьовує пробудження /loop №{tick}…"
|
||
paused_interrupted: "⏸ Цикл призупинено — хід пробудження було перервано. Використайте /loop resume, щоб продовжити, або /loop stop, щоб завершити."
|
||
remaining: "↻ Цикл: {label}."
|
||
plugins:
|
||
none_installed: "Плагіни користувача не встановлено."
|
||
install_hint: "Встановити: hermes plugins install owner/repo"
|
||
drop_dir_hint: "Або покладіть каталог плагіна в {path}"
|
||
bundled_available: "(доступно вбудованих плагінів: {count} — див.: hermes plugins list)"
|
||
user_plugins_header: "Плагіни користувача ({count}):"
|
||
count_noun_tools: "інструментів"
|
||
count_noun_hooks: "хуків"
|
||
count_noun_commands: "команд"
|
||
bundled_more: "(+{count} вбудованих — див.: hermes plugins list)"
|
||
enable_disable_hint: "Увімкнути/вимкнути: hermes plugins enable/disable <name>"
|
||
system_error: "Помилка системи плагінів: {error}"
|
||
queue:
|
||
usage: "Використання: /queue <prompt> | /queue list | /queue edit N <prompt> | /queue rm N | /queue move FROM TO | /queue clear"
|
||
queued: "У черзі: {preview}"
|
||
queued_next_turn: "Поставлено в чергу на наступний хід: {preview}"
|
||
empty: "Черга порожня."
|
||
pending_header: "Черга (в очікуванні: {count}):"
|
||
cleared_one: "Очищено {count} запит із черги."
|
||
cleared_other: "Очищено {count} запитів із черги."
|
||
removed: "Видалено елемент черги {index}: {preview}"
|
||
item_not_found: "Елемент черги {index} не знайдено. Поточний розмір: {size}"
|
||
usage_edit: "Використання: /queue edit <number> <new prompt>"
|
||
usage_remove: "Використання: /queue rm <number>"
|
||
updated: "Оновлено елемент черги {index}: {preview}"
|
||
usage_move: "Використання: /queue move <from> <to>"
|
||
move_out_of_range: "Переміщення в черзі поза межами діапазону. Поточний розмір: {size}"
|
||
moved: "Елемент черги {source} переміщено на {destination}."
|
||
usage_add: "Використання: /queue add <prompt>"
|
||
gateway_refused: "Шлюз не поставив це в чергу: {error}. Нічого не поставлено; надішліть знову, коли хід закінчиться."
|
||
submit_unknown: "Шлюз не відповів ({error}), тож запит, можливо, уже в черзі. Перевірте /queue list, перш ніж надсилати знову."
|
||
move_gateway_fifo: "Шлюз виконує запити в черзі в порядку надсилання; натомість відредагуйте або видаліть один."
|
||
remove_refused: "Не вдалося видалити елемент черги {index}: {error}"
|
||
edit_refused: "Не вдалося змінити елемент черги {index}: {error}"
|
||
already_started: "Елемент черги {index} уже запущено; він виконується в надісланому вигляді."
|
||
started_stopped: "Елемент черги {index} уже було запущено; шлюз зупинив його."
|
||
change_unknown: "Шлюз не відповів щодо елемента черги {index} ({error}); перевірте /queue list, перш ніж пробувати знову."
|
||
reload:
|
||
env_reloaded: "Перезавантажено .env (оновлено змінних: {count})"
|
||
steer:
|
||
usage: "Використання: /steer <prompt>"
|
||
failed: "Не вдалося скерувати: {error}"
|
||
queued: "⏩ Скерування в черзі — надійде після наступного виклику інструмента: {preview}"
|
||
rejected_empty: "Скерування відхилено (порожній вміст)."
|
||
no_agent_queued: "Агент не запущений; поставлено в чергу як наступний хід: {preview}"
|
||
title:
|
||
session_id: "ID сеансу: {session_id}"
|
||
current: "Назва: {title}"
|
||
pending: "Назва (очікує): {title}"
|
||
none_set_usage: "Назву не встановлено. Використання: /title <назва вашого сеансу>"
|
||
usage: "Використання: /title <назва вашого сеансу>"
|
||
empty_after_cleanup: "Після очищення назва порожня. Використовуйте друковані символи."
|
||
set: "Назву сеансу встановлено: {title}"
|
||
already_in_use: "Назву '{title}' уже використовує сеанс {session_id}"
|
||
queued: "Назву сеансу поставлено в чергу: {title} (буде збережено з першим повідомленням)"
|
||
undo:
|
||
invalid_count: "(._.) Недійсне число {value} — використовуйте /undo або /undo N."
|
||
removes_last_exchange: "Це видаляє з історії останній обмін репліками (ваше повідомлення та відповідь асистента)."
|
||
removes_last_turns: "Це видаляє з історії останні {count} ходів користувача."
|
||
resume:
|
||
tool_calls_one: "[{count} виклик інструмента: {names}]"
|
||
tool_calls_other: "[{count} викликів інструментів: {names}]"
|
||
event_model_changed: "модель змінено"
|
||
event_delegation_completed: "фонове делегування завершено"
|
||
event_process_finished: "фоновий процес завершено"
|
||
event_resumed_interrupted: "перерваний хід відновлено"
|
||
session_id_hint: "Використайте ID сеансу з попереднього запуску CLI (hermes sessions list)."
|
||
session_not_found: "Сеанс не знайдено: {session_id}"
|
||
compressed_into: "Сеанс {session_id} було стиснуто в {descendant}; відновлюємо нащадок із вашою стенограмою."
|
||
cannot_resume: "Не вдалося відновити сеанс: {error}"
|
||
kanban_owned: "⛔ Сесія {session_id} — це стенограма Kanban-воркера. Її відновлення тут створило б пишучого, якого Kanban-дошка не може спостерігати чи контролювати — замість цього повторіть спробу або розблокуйте картку на дошці, щоб dispatcher володів наступним запуском."
|
||
cannot_resume_prefix: "Не вдалося відновити сеанс:"
|
||
resumed_session: "↻ Сеанс відновлено"
|
||
counts_one: "({count} повідомлення користувача, усього повідомлень: {total})"
|
||
counts_other: "({count} повідомлень користувача, усього повідомлень: {total})"
|
||
session_no_messages: "Сеанс {session_id} знайдено, але в ньому немає повідомлень. Починаємо з чистого аркуша."
|
||
title_applied: "Назву сеансу застосовано: {title}"
|
||
title_apply_failed: "Не вдалося застосувати відкладену назву: {error}"
|
||
label_you: "● Ви:"
|
||
label_assistant: "◆ {agent_name}:"
|
||
earlier_messages: "... ще {count} попередніх повідомлень ..."
|
||
panel_title: "Попередня розмова"
|
||
startup:
|
||
cooldown_cause_rate_limit: "після відповіді про ліміт запитів або квоту"
|
||
cooldown_cause_token_refresh: "після невдалого оновлення токена"
|
||
cooldown_cause_http: "після відповіді HTTP {code}"
|
||
cooldown_cause_failed_request: "після невдалого запиту"
|
||
credential_cooling_down: "Облікові дані {provider} тимчасово виведено з ротації {cause}; вони повернуться приблизно через {minutes} хв."
|
||
sign_in_lost: "вхід втрачено"
|
||
sign_in_was_lost: "Вхід у {provider} втрачено ({reason}); виконайте `hermes auth add {provider}`, щоб увійти знову."
|
||
provider_resolution_failed: "Не вдалося визначити провайдера."
|
||
no_api_key_for_provider: "⚠️ Не знайдено ключ API для провайдера '{provider}'."
|
||
no_provider_configured: "⚠️ Провайдера інференсу не налаштовано."
|
||
run_model_or_setup: "Виконайте 'hermes model', щоб вибрати провайдера, або 'hermes setup' для першого налаштування."
|
||
empty_base_url: "⚠️ Резолвер провайдера повернув порожній базовий URL. Перевірте конфігурацію провайдера або виконайте: hermes setup"
|
||
switching_to_fallback: "⚠️ {reason} — перемикаємося на резервний варіант: {provider} / {model}"
|
||
first_run_no_provider: "☤ Провайдера інференсу ще не налаштовано — давайте це виправимо."
|
||
first_run_pick_provider: "Ви виберете провайдера (Nous Portal OAuth — найшвидший варіант; ключ API не потрібен) і модель."
|
||
first_run_prompt: "Налаштувати провайдера зараз? [Y/n]:"
|
||
first_run_skipped: "Пропущено. Виконайте 'hermes model' або 'hermes setup' будь-коли."
|
||
first_run_cancelled: "Налаштування скасовано. Виконайте 'hermes model' будь-коли."
|
||
provider_setup_failed: "⚠️ Не вдалося налаштувати провайдера: {error}"
|
||
run_model_to_retry: "Виконайте 'hermes model', щоб спробувати ще раз."
|
||
provider_configured: "✓ Провайдера налаштовано — можна починати спілкування."
|
||
provider_setup_incomplete: "Налаштування провайдера не завершено. Виконайте 'hermes model', щоб повторити."
|
||
unknown_toolsets: "Попередження: невідомі набори інструментів: {names}"
|
||
stdin_unusable: "\nПомилка: stdin непридатний для використання ({error}).\nТаке трапляється з деякими інсталяціями Python (напр. cPython від uv на macOS),\nде kqueue не може зареєструвати fd 0.\nСпробуйте перевстановити Python через pyenv або Homebrew, а потім виконайте знову: hermes setup"
|
||
warning: "Попередження: {warning}"
|
||
chat:
|
||
initializing_agent: "Ініціалізація агента..."
|
||
context_refs: "[@ контекст: {count} посил., {tokens} токенів]"
|
||
context_injection_refused: "Вставлення контексту відхилено."
|
||
skipped_unreadable_images: "⚠ пропущено {count} нечитабельних шляхів до зображень"
|
||
attaching_images_natively: "📎 додаємо {count} зображень нативно (модель підтримує зір): {names}"
|
||
new_message_interrupting: "⚡ Виявлено нове повідомлення, перериваємо..."
|
||
unknown_error: "Невідома помилка"
|
||
continuous_voice_stopped: "Безперервний голосовий режим зупинено через помилку."
|
||
interrupted_marker: "── [Перервано — обробка нового повідомлення] ──"
|
||
iteration_budget_reached: "⚠ Вичерпано бюджет ітерацій ({used}/{max}) — відповідь може бути неповною"
|
||
sending_after_interrupt_multi: "⚡ Надсилаємо {count} повідомлень після переривання: '{preview}'"
|
||
sending_after_interrupt: "⚡ Надсилаємо після переривання: '{preview}'"
|
||
delivering_leftover_steer: "⏩ Передаємо залишок /steer як наступний хід: '{preview}'"
|
||
reasoning_label: "Міркування"
|
||
reasoning_more_lines: "... (ще {count} рядків — /reasoning full, щоб показати)"
|
||
billing_cta_nous: "Виконайте [bold]/topup[/], щоб додати кредити, або [bold]/subscription[/], щоб змінити план."
|
||
billing_cta_provider: "Додайте кредити через {provider}"
|
||
your_provider: "вашого провайдера"
|
||
billing_cta_switch: "Або змініть провайдера через [bold]/model <model> --provider <provider>[/]."
|
||
out_of_credits_title: "⚡ Кредити вичерпано"
|
||
session:
|
||
fresh_start: "✨ (◕‿◕)✨ Новий початок! Екран очищено, розмову скинуто."
|
||
model_reset_default: "(модель скинуто до типової з конфігурації: {model})"
|
||
title_rejected: "Назву відхилено: {error}"
|
||
title_empty_untitled: "Після очищення назва порожня — сеанс запущено без назви."
|
||
title_error_untitled: "{error} — сеанс запущено без назви."
|
||
cwd_gone: "⚠ Робочий каталог сеансу більше не існує: {recorded} — залишаємося в {current}"
|
||
cwd_restored: "↻ Робочий каталог: {path}"
|
||
cwd_enter_failed: "⚠ Не вдалося перейти до робочого каталогу сеансу {path}: {error}"
|
||
yolo_restored: "⚡ Режим YOLO відновлено із сеансу — усі команди схвалюються автоматично. /yolo, щоб вимкнути."
|
||
invalid_checkpoint: "Недійсний номер контрольної точки. Використовуйте 1-{count}."
|
||
status_tools_deferred: "інструменти відкладено"
|
||
status_tools_count: "{count} інструментів"
|
||
status_toolsets: "набори інструментів: {toolsets}"
|
||
status_provider: "провайдер: {provider}"
|
||
status_auth: "автентифікація: {source}"
|
||
reasoning_display_suffix: " (показ: {state})"
|
||
yolo_bypass_suffix: " (обхід YOLO активний)"
|
||
ctx_left_prefix: "залишилося {percent}% · "
|
||
ctx_tokens_used: "{left}{used} / {max} токенів використано"
|
||
status_title: "Стан Hermes CLI"
|
||
label_reasoning: "Міркування"
|
||
label_approvals: "Схвалення"
|
||
label_context: "Контекст"
|
||
recent_intro: "(._.) У поточному чаті ще немає повідомлень — ось недавні сеанси, які можна відновити:"
|
||
recent_header: "Недавні сеанси:"
|
||
column_title: "Назва"
|
||
column_preview: "Уривок"
|
||
column_last_active: "Остання активність"
|
||
column_id: "ID"
|
||
resume_usage: "Щоб продовжити, використайте /resume <номер>, /resume <id сеансу> або /resume <назва сеансу>."
|
||
resume_example: "Приклад: /resume 2"
|
||
history_empty: "(._.) Історії розмови ще немає."
|
||
history_tools_header: "[Інструменти]"
|
||
history_tools_hidden_one: "(приховано {count} повідомлення інструмента)"
|
||
history_tools_hidden_other: "(приховано {count} повідомлень інструментів)"
|
||
history_title: "(^_^) Історія розмови"
|
||
history_you_header: "[Ви №{index}]"
|
||
history_assistant_header: "[{agent_name} №{index}]"
|
||
history_no_text: "(без текстової відповіді)"
|
||
history_tool_calls_one: "(запитано {count} виклик інструмента)"
|
||
history_tool_calls_other: "(запитано {count} викликів інструментів)"
|
||
new_session_titled: "(^_^)v Новий сеанс запущено: {title}"
|
||
new_session: "(^_^)v Новий сеанс запущено!"
|
||
resume_index_out_of_range: "Індекс відновлення {index} поза межами діапазону."
|
||
resume_no_args_hint: "Використайте /resume без аргументів, щоб побачити доступні сеанси."
|
||
save_nothing: "(;_;) Немає розмови для збереження."
|
||
save_dir_failed: "(x_x) Не вдалося створити каталог для збереження {path}: {error}"
|
||
format_markdown: "Markdown"
|
||
save_ok: "(^_^)v Розмову збережено в: {path} ({label})"
|
||
save_resume_hint: "Відновити активний сеанс: hermes --resume {session_id}"
|
||
save_failed: "(x_x) Не вдалося зберегти: {error}"
|
||
retry_no_messages: "(._.) Немає повідомлень для повторення."
|
||
retry_no_user_message: "(._.) Не знайдено повідомлення користувача для повторення."
|
||
retry_unsafe: "(._.) Неможливо безпечно повторити це повідомлення: {error}"
|
||
retry_rewind_failed: "(x_x) Не вдалося відкотити для повторення; історію не змінено: {error}"
|
||
retrying: "(^_^)b Повторюю: \"{preview}\""
|
||
undo_no_messages: "(._.) Немає повідомлень для скасування."
|
||
undo_no_user_message: "(._.) Не знайдено повідомлення користувача для скасування."
|
||
undo_failed: "(x_x) Не вдалося скасувати; історію не змінено: {error}"
|
||
undo_ok_one: "(^_^)b Скасовано {count} хід (повідомлень: {messages}). Резервна копія: \"{backup}\""
|
||
undo_ok_other: "(^_^)b Скасовано {count} ходів (повідомлень: {messages}). Резервна копія: \"{backup}\""
|
||
undo_remaining: "В історії залишилося повідомлень: {count}."
|
||
yolo_state_locked_on: "заблоковано УВІМК"
|
||
yolo_locked: "⚡ YOLO {state} для цього процесу (запущено з --yolo / HERMES_YOLO_MODE). /yolo не може його вимкнути — перезапустіть без прапорця, щоб знову ввімкнути схвалення."
|
||
yolo_off: "⚠ Режим YOLO {state} — небезпечні команди потребуватимуть схвалення."
|
||
yolo_on: "⚡ Режим YOLO {state} — усі команди схвалюються автоматично. Використовуйте з обережністю."
|
||
compress_too_short: "(._.) Недостатньо розмови для стиснення (потрібно щонайменше {min} повідомлень)."
|
||
compress_no_agent: "(._.) Немає активного агента — спочатку надішліть повідомлення."
|
||
compress_busy: "Стиснення контексту..."
|
||
compress_summarizing: "🗜️ Підсумовую до цього місця: {count} повідомлень, останні {keep_last} обмін(ів) зберігаю дослівно..."
|
||
compress_focus: "🗜️ Стискаю {count} повідомлень, фокус: \"{focus}\"..."
|
||
compress_plain: "🗜️ Стискаю {count} повідомлень..."
|
||
compress_failed: "❌ Стиснення не вдалося: {error}"
|
||
persist_prompt_summary: "{icon} {label}: {detail} → {outcome}"
|
||
goodbye: "До побачення! ☤"
|
||
exit_resume_hint: "Відновити цей сеанс:"
|
||
exit_label_session: "Сеанс: {session_id}"
|
||
exit_label_title: "Назва: {title}"
|
||
exit_label_duration: "Тривалість: {duration}"
|
||
exit_label_messages: "Повідомлень: {count} ({user} від користувача, {tool_calls} викликів інструментів)"
|
||
status_bar:
|
||
vim_insert: "ВСТАВКА"
|
||
vim_replace: "ЗАМІНА"
|
||
vim_normal: "ЗВИЧАЙНИЙ"
|
||
battery_none: "на цьому комп'ютері не виявлено батареї"
|
||
battery_none_nothing_shown: "батареї не виявлено, тому тут нічого не показуватиметься"
|
||
battery_currently: " — зараз {reading}"
|
||
battery_state: "Індикатор батареї {state}{detail}"
|
||
battery_usage: "Використання: /battery [on|off|status]"
|
||
battery_on: "Індикатор батареї увімкнено{detail}"
|
||
battery_off: "Індикатор батареї вимкнено"
|
||
latency_label: "{value} с"
|
||
velocity_label: "{value} т/с"
|
||
voice_rec: "● ЗАПИС"
|
||
voice_rec_stop_hint: "● ЗАПИС {shortcut} — зупинити"
|
||
voice_stt: "◉ STT"
|
||
voice_transcribing: "◉ Транскрибування..."
|
||
voice_tts_on: " | TTS увімк"
|
||
voice_continuous: " | Безперервний"
|
||
voice_mode_hint: "🎤 Голосовий режим{tts}{cont} — {shortcut} для запису"
|
||
goal_turns: "⊙ ціль {used}/{max}"
|
||
goal: "⊙ ціль"
|
||
ctx_pinned: " закріплено"
|
||
ctx_fallback: " за замовчуванням"
|
||
ctx_unknown: "ctx --"
|
||
yolo_badge: "⚠ YOLO"
|
||
stash_header_one: "📌 Схованка ({count} елемент)"
|
||
stash_header_other: "📌 Схованка ({count} елементів)"
|
||
stash_footer: "↑↓ Enter=відновити D=видалити Esc"
|
||
stash_footer_compact: "↑↓ ⏎ D Esc"
|
||
stream:
|
||
busy_skills_search: "Пошук навичок..."
|
||
busy_skills_browse: "Завантаження навичок..."
|
||
busy_skills_inspect: "Перегляд навички..."
|
||
busy_skills_install: "Встановлення навички..."
|
||
busy_skills: "Обробка команди навичок..."
|
||
busy_browser: "Налаштування браузера..."
|
||
busy_reload_mcp: "Перезавантаження MCP-серверів..."
|
||
busy_reload_skills: "Перезавантаження навичок..."
|
||
processing_command: "Обробка команди..."
|
||
thinking_label: "[роздуми]"
|
||
thinking_more_lines: "... (ще {count} рядків)"
|
||
preview_more_lines_one: "... (+{count} рядок)"
|
||
preview_more_lines_other: "... (+{count} рядків)"
|
||
vision_analyzing: "👁️ аналіз {name} ({size_kb} КБ)..."
|
||
vision_analyzed: "✓ зображення проаналізовано"
|
||
vision_failed: "⚠ аналіз зображення не вдався — шлях додано для повторної спроби"
|
||
vision_error: "⚠ помилка аналізу зображення — шлях додано для повторної спроби"
|
||
tool_preparing: "{emoji} підготовка: {what}…"
|
||
reference_noun: "довідка"
|
||
reference_header_indexed: "Довідка {index}/{count} — {label}"
|
||
reference_header: "Довідка — {label}"
|
||
aggregating_detail: "◆ зведення ({detail})"
|
||
aggregating: "◆ зведення"
|
||
background_running_one: "↩ Фонове завдання виконується — я продовжу, щойно воно завершиться. Можете писати далі."
|
||
background_running_other: "↩ Виконується фонових завдань: {count} — я продовжу, щойно вони завершаться. Можете писати далі."
|
||
terminal:
|
||
recovered_mouse_modes: "Режими введення термінала відновлено після витоку звітів миші. Якщо це повториться, виконайте /new або перезапустіть цю вкладку."
|
||
recovered_cooked_mode: "Термінал відновлено після збою cooked-режиму (введення знову має працювати як звичайно)."
|
||
image_badge_count: "[📎 Вкладено зображень: {count}]"
|
||
image_badge_numbered: "[📎 Зображення №{index}]"
|
||
commands:
|
||
shared:
|
||
more_suffix: " (+{count} ще)"
|
||
set_saved: "✓ {label}: встановлено '{value}' (збережено в конфігурації)"
|
||
set_session_only: "✓ {label}: встановлено '{value}' (лише для цього сеансу)"
|
||
scope_saved: "(збережено в конфігурації)"
|
||
scope_save_failed: "(лише для цього сеансу; не вдалося зберегти конфігурацію)"
|
||
scope_session: "(лише цей сеанс — додайте --global, щоб зберегти)"
|
||
unknown_argument: "(._.) Невідомий аргумент: {arg}"
|
||
usage: "Використання: {usage}"
|
||
needs_active_session: "Для {command} потрібен активний сеанс чату."
|
||
unavailable_no_session: "{label} недоступно (немає активного сеансу)."
|
||
state_on: "УВІМКНЕНО"
|
||
state_off: "ВИМКНЕНО"
|
||
error: "Помилка: {error}"
|
||
agent_busy: "Агент зайнятий. Дочекайтеся завершення поточного ходу, потім повторіть {command}."
|
||
no_active_agent_session: "Немає активного сеансу агента."
|
||
could_not_generate_diff: "Не вдалося створити diff"
|
||
busy:
|
||
short_queue: "ставить у чергу на наступний хід"
|
||
short_steer: "скеровує в поточний запуск (після наступного виклику інструмента)"
|
||
short_interrupt: "негайно перенаправляє поточний запуск"
|
||
long_queue: "Enter ставитиме додаткове введення в чергу, поки Hermes зайнятий."
|
||
long_steer: "Enter скеровуватиме ваше повідомлення в поточний запуск (після наступного виклику інструмента)."
|
||
long_interrupt: "Enter перенаправлятиме поточний запуск, поки Hermes зайнятий; /stop і далі скасовує його."
|
||
usage: "Використання: /busy [queue|steer|interrupt|status]"
|
||
status: "Режим введення під час зайнятості: {mode}"
|
||
enter_while_busy: "Enter під час зайнятості: {behavior}"
|
||
label: "Режим введення під час зайнятості"
|
||
reasoning:
|
||
headline_on: "УВІМКНЕНО"
|
||
headline_off: "ВИМКНЕНО"
|
||
headline_full: "ПОВНІСТЮ"
|
||
headline_clamped: "ОБРІЗАНО до 10 рядків"
|
||
note_show: "Роздуми моделі показуватимуться під час і після кожної відповіді."
|
||
note_full: "Підсумкове вікно після відповіді виводитиме роздуми повністю."
|
||
display_on: "увімкнено ✓"
|
||
display_off: "вимкнено"
|
||
full_state_full: "повністю"
|
||
full_state_clamped: "обрізано до 10 рядків"
|
||
effort_line: "Зусилля міркувань: {level}"
|
||
display_line: "Показ міркувань: {display} ({full})"
|
||
usage: "Використання: /reasoning <none|minimal|low|medium|high|xhigh|max|ultra|show|hide|full|clamp> [--global]"
|
||
display_saved: "✓ Показ міркувань: {headline} (збережено)"
|
||
display_off_note: "Примітка: показ міркувань ВИМКНЕНО — виконайте /reasoning show, щоб його побачити."
|
||
valid_levels: "Допустимі рівні: none, minimal, low, medium, high, xhigh, max, ultra"
|
||
valid_display: "Показ: show, hide"
|
||
valid_scope: "Область: типово лише для сеансу, --global щоб зберегти"
|
||
effort_set: "✓ Зусилля міркувань встановлено на '{effort}' {scope}"
|
||
indicator:
|
||
usage: "Використання: /indicator [{styles}]"
|
||
status: "Стиль індикатора зайнятості: {style}"
|
||
unknown_style: "(._.) Невідомий стиль індикатора: {arg}"
|
||
label: "Стиль індикатора зайнятості"
|
||
note: "TUI застосує новий стиль під час наступного перемалювання."
|
||
fast:
|
||
not_supported: "(._.) /fast доступний лише для моделей, що підтримують швидкий режим (OpenAI Priority Processing або Anthropic Fast Mode)."
|
||
feature_generic: "Швидкий режим"
|
||
feature_anthropic: "Anthropic Fast Mode"
|
||
feature_openai: "Priority Processing"
|
||
feature_ultrafast: "OpenAI Ultrafast"
|
||
ultrafast_not_supported: "(._.) Ultrafast недоступний для {model} у цьому обліковому записі або маршруті."
|
||
usage: "Використання: /fast [normal|fast|auto|cold|ultrafast|status] [--global]"
|
||
status: "{feature}: {status}"
|
||
set_to: "✓ {feature}: встановлено {value} {scope}"
|
||
hatch:
|
||
progress_compose: "┊ збираємо спрайтшит…"
|
||
progress_save: "┊ зберігаємо…"
|
||
progress_drawing: "┊ малюємо {state}…"
|
||
describe_prompt: "(o_o) Опишіть свого улюбленця: "
|
||
usage: "(o_o) Використання: /hatch <description> (напр. /hatch крихітна кіберлисиця)"
|
||
default_name: "Улюбленець"
|
||
designing: "(o_o) Створюємо дизайн '{concept}'… (близько хвилини викликів моделі зображень)"
|
||
base_failed: "(x_x) Не вдалося згенерувати базовий вигляд: {error}"
|
||
no_base_draft: "(x_x) Базовий ескіз не повернувся — спробуйте ще раз."
|
||
failed: "(x_x) Вилуплення не вдалося: {error}"
|
||
hatched: "(^_^)b {name}: вилуплено й прийнято — незабаром з'явиться!"
|
||
pet:
|
||
is_out: "(^_^)b {name} виходить — незабаром з'явиться."
|
||
put_away_named: "(-_-)zzZ {name} сховано."
|
||
put_away: "(-_-)zzZ Улюбленця сховано."
|
||
usage_scale: "(o_o) Використання: /pet scale <factor> (напр. /pet scale 0.5)"
|
||
scale_set: "(^_^) Масштаб улюбленця → {scale}."
|
||
fetching: "(o_o) Отримуємо '{name}' з petdex…"
|
||
adopt_failed: "(x_x) Не вдалося прийняти '{name}': {error}"
|
||
error: "(x_x) {error}"
|
||
diff:
|
||
label_working: "Неіндексовані"
|
||
label_staged: "Індексовані"
|
||
label_all: "Усі (відносно HEAD)"
|
||
untracked: "Невідстежувані:"
|
||
and_more: "... і ще {count}"
|
||
more_lines: "... (ще {count} рядків — {hint})"
|
||
stat_hint: "виконайте /diff --stat для зведення"
|
||
stat_hint_session: "виконайте /diff session --stat для зведення"
|
||
not_enabled: "Контрольні точки не ввімкнено, тому базової лінії сеансу немає.\nУвімкніть: hermes --checkpoints\nАбо в config.yaml: checkpoints: { enabled: true }\n(Звичайний /diff все одно працює — він використовує git напряму.)"
|
||
no_session_changes: "Змін немає — Hermes ще не редагував тут жодного файлу."
|
||
rollback:
|
||
not_enabled: "Контрольні точки не ввімкнено.\nУвімкніть: hermes --checkpoints\nАбо в config.yaml: checkpoints: { enabled: true }"
|
||
none_here_showing_all: "Контрольних точок для {cwd} немає — показано всі каталоги."
|
||
all_directories: "усі каталоги"
|
||
usage_diff: "Використання: /rollback diff <N>"
|
||
no_changes_since: "Змін від цієї контрольної точки немає."
|
||
more_lines: "... (ще {count} рядків, показано перші 80)"
|
||
restored_all: "✅ Відновлено до контрольної точки {hash}: {reason}"
|
||
restored_file: "✅ {file} відновлено з контрольної точки {hash}: {reason}"
|
||
snapshot_saved: "Знімок перед відкатом збережено автоматично."
|
||
chat_turn_undone: "Хід чату скасовано відповідно до відновленого стану файлів."
|
||
snapshot:
|
||
unknown_subcommand: "Невідома підкоманда: {subcommand}"
|
||
usage: "Використання: /snapshot [list|create [label]|restore <id>|prune [N]]"
|
||
none_yet: "Знімків стану ще немає."
|
||
create_hint: "Створити: /snapshot create [label]"
|
||
list_header: "Знімки стану ({dir}/state-snapshots/):"
|
||
col_num: "#"
|
||
col_id: "ID"
|
||
col_files: "Файли"
|
||
col_size: "Розмір"
|
||
col_label: "Мітка"
|
||
created: "Знімок створено: {snapshot_id}"
|
||
nothing_to_snapshot: "Файлів стану для знімка не знайдено."
|
||
usage_restore: "Використання: /snapshot restore <snapshot-id>"
|
||
most_recent: "Найновіший: {snapshot_id}"
|
||
invalid_number: "Недійсний номер знімка. Використовуйте 1-{max}."
|
||
restored: "Стан відновлено з: {snapshot_id}"
|
||
restart_recommended: "Рекомендовано перезапустити процеси шлюзу та панелі керування, щоб вони підхопили зміни state.db."
|
||
not_found: "Знімок не знайдено: {snapshot_id}"
|
||
restore_incomplete: "Знімок {snapshot_id} відновлено не повністю: деякі файли відхилено (див. журнали)"
|
||
usage_prune: "Використання: /snapshot prune [keep-count]"
|
||
pruned: "Видалено старих знімків: {deleted} (залишено {keep})."
|
||
export:
|
||
usage: "Використання: /export [profile] [-o output.tar.gz]"
|
||
exported: "✓ '{name}' експортовано до {path}"
|
||
share_hint: "Поділіться: інший користувач виконує /import або `hermes profile import <archive>`."
|
||
import:
|
||
usage: "Використання: /import <archive.tar.gz> [--name <name>]"
|
||
imported: "✓ Профіль '{name}' імпортовано до {path}"
|
||
wrapper_created: "Обгортку створено: {path}"
|
||
use_it: "Використання: hermes -p {name}"
|
||
stop:
|
||
none_running: "Немає фонових процесів, що виконуються."
|
||
stopping: "Зупинення фонових процесів ({count})..."
|
||
stopped: "✅ Зупинено процесів: {count}."
|
||
interrupted_delegations: "✅ Перервано фонових делегувань: {count}."
|
||
agents:
|
||
running_processes: "Активні процеси: {count}"
|
||
recently_finished: "Недавно завершені: {count}"
|
||
background_delegations: "Фонові делегування: {count} виконується"
|
||
no_progress: " · без прогресу {seconds}с — переривання"
|
||
quiet: " · тиша {seconds}с"
|
||
in_tool: "у {tool}"
|
||
between_turns: "між ходами"
|
||
child_line: "└ дочірній {index}: {api_calls} викликів api · {doing}"
|
||
last_activity: " · остання активність {seconds}с тому"
|
||
agent_running: "Агент: працює"
|
||
agent_idle: "Агент: очікує"
|
||
journey:
|
||
failed: "Помилка /journey: {error}"
|
||
paste:
|
||
no_image: "(._.) У буфері обміну немає зображення"
|
||
attached: "📎 Зображення №{index} додано з буфера обміну"
|
||
extract_failed: "(>_<) У буфері обміну є зображення, але не вдалося його витягти"
|
||
copy:
|
||
nothing_yet: "Поки що нічого копіювати."
|
||
usage: "Використання: /copy [номер]"
|
||
invalid_number: "Недійсний номер відповіді. Використовуйте 1-{max}."
|
||
nothing_in_responses: "У відповідях асистента поки що нічого копіювати."
|
||
nothing_in_response: "У цій відповіді асистента нічого копіювати."
|
||
copied_osc52: "Відповідь асистента №{index} скопійовано через OSC 52 (потрібна підтримка з боку термінала)"
|
||
copied: "Відповідь асистента №{index} скопійовано в буфер обміну"
|
||
failed: "Не вдалося скопіювати в буфер обміну: {error}"
|
||
image:
|
||
usage: "Використання: /image <path> напр. /image {example}"
|
||
not_found: "(>_<) Файл не знайдено: {path}"
|
||
unsupported: "(._.) Непідтримуваний файл зображення: {name}"
|
||
attached: "📎 Додано зображення: {name}"
|
||
now_type_prompt: "Тепер введіть запит (або використайте --image у режимі одиночного запиту): {text}"
|
||
tools:
|
||
usage: "(._.) Використання: /tools {subcommand} <name> [name ...]"
|
||
example_toolset: "Вбудований набір: /tools {subcommand} web"
|
||
example_mcp: "Інструмент MCP: /tools {subcommand} github:create_issue"
|
||
disabling: "Вимкнення {names}..."
|
||
enabling: "Увімкнення {names}..."
|
||
session_reset: "Сеанс скинуто. Нова конфігурація інструментів активна."
|
||
profile:
|
||
profile: "Профіль: {profile}"
|
||
home: "Домашній каталог: {home}"
|
||
handoff:
|
||
usage: "Використання: /handoff <platform>"
|
||
usage_detail_1: "Передає поточний сеанс у домашній канал цієї платформи."
|
||
usage_detail_2: "Сеанс CLI на цьому завершується; пізніше відновіть його через /resume."
|
||
already_in_flight: "Сеанс уже передається. Дочекайтеся завершення, потім повторіть."
|
||
queued: "Передачу '{title}' → {platform} поставлено в чергу (домашній канал: {home})."
|
||
waiting: "Очікування, поки шлюз її підхопить..."
|
||
config_load_failed: "Не вдалося завантажити конфігурацію шлюзу: {error}"
|
||
unknown_platform: "Невідома платформа '{platform}'."
|
||
platform_not_enabled: "Платформу '{platform}' не налаштовано або не ввімкнено у шлюзі."
|
||
no_home_channel: "Для {platform} не налаштовано домашній канал."
|
||
set_home_hint: "Спочатку задайте його через /sethome у чаті призначення."
|
||
session_row_failed: "Не вдалося створити запис сеансу в state.db: {error}"
|
||
picked_up: "Шлюз підхопив передачу; триває перенесення..."
|
||
complete: "↻ Передачу завершено. Сеанс тепер активний на {platform}."
|
||
resume_hint: "Пізніше відновіть його в цьому CLI командою: /resume {title}"
|
||
unknown_error: "невідома помилка"
|
||
failed: "Передача не вдалася: {error}"
|
||
session_intact_retry: "Ваш сеанс CLI не постраждав. Спробуйте /handoff ще раз або виконайте /resume на платформі вручну."
|
||
still_transferring: "Перенесення триває (агент відтворює ваш сеанс на місці призначення)..."
|
||
taking_long: "Шлюз завершує перенесення незвично довго."
|
||
check_platform: "Перевірте {platform} — сеанс ще може туди надійти."
|
||
no_longer_waiting: "Цей CLI більше не очікує. Не продовжуйте цей сеанс тут;"
|
||
retry_when_settled: "якщо нічого не надійде, повторіть /handoff, коли стан стабілізується."
|
||
timed_out: "Час очікування шлюзу вичерпано. Чи запущено `hermes gateway`?"
|
||
session_intact: "Ваш сеанс CLI не постраждав."
|
||
resume:
|
||
usage: "Використання: /resume <номер|session_id_або_назва>"
|
||
tip_find_sessions: "Порада: використовуйте /history або `hermes sessions list`, щоб знайти сеанси."
|
||
already_on: "Ви вже в цьому сеансі."
|
||
resumed_one: "↻ Сеанс {session_id}{title} відновлено ({count} повідомлення користувача, усього {total})"
|
||
resumed_other: "↻ Сеанс {session_id}{title} відновлено ({count} повідомлень користувача, усього {total})"
|
||
resumed_empty: "↻ Сеанс {session_id}{title} відновлено — повідомлень немає, починаємо з чистого аркуша."
|
||
not_found: "Сеанс не знайдено: {target}"
|
||
not_found_hint: "Використайте /sessions або `hermes sessions list`, щоб переглянути доступні сеанси."
|
||
compressed_redirect: "Сеанс {session_id} було стиснуто в {resolved_id}; відновлюємо сеанс-нащадок із вашою стенограмою."
|
||
sessions:
|
||
none_yet: "(._.) Попередніх сеансів ще немає."
|
||
branch:
|
||
branched_one: "⑂ Створено гілку сеансу \"{title}\" ({count} повідомлення користувача)"
|
||
branched_other: "⑂ Створено гілку сеансу \"{title}\" ({count} повідомлень користувача)"
|
||
original_session: "Початковий сеанс: {session_id}"
|
||
branch_session: "Сеанс гілки: {session_id}"
|
||
worktree:
|
||
active: "Активне робоче дерево: {path}"
|
||
branch: "Гілка: {branch}"
|
||
none_active: "У цього сеансу немає активного робочого дерева."
|
||
hint_new: "/worktree new [name] — створити робоче дерево й перенести в нього цей сеанс"
|
||
hint_prune: "/worktree prune — прибрати застарілі дерева та злиті гілки"
|
||
not_in_repo_note: "(не всередині git-репозиторію)"
|
||
unknown_subcommand: "Невідома підкоманда /worktree: {subcommand}"
|
||
usage: "Використання: /worktree [new [name] | list]"
|
||
new_requires_repo: "❌ /worktree new можна виконувати лише всередині git-репозиторію."
|
||
not_in_repo: "Не всередині git-репозиторію."
|
||
actions_planned: "Заплановано дій: {count}."
|
||
actions_done: "Виконано дій: {count}."
|
||
nothing_to_reclaim: "Нічого прибирати — решта дерев/гілок містять реальну роботу."
|
||
preserved: "Збережено дерев із реальною роботою: {count}:"
|
||
list_failed: "Не вдалося отримати список робочих дерев."
|
||
enter_failed: "⚠ Робоче дерево створено, але не вдалося в нього перейти: {error}"
|
||
ready: "✅ Робоче дерево готове: {path}"
|
||
tools_in_worktree: "Термінал і файлові інструменти тепер працюють у робочому дереві."
|
||
personality:
|
||
title: "(^o^)/ Особистості"
|
||
none_option: "(без накладання особистості)"
|
||
usage: "Використання: /personality <name> (* = активна)"
|
||
unknown: "(._.) Невідома особистість: {name}"
|
||
available: "Доступні: none, {available}"
|
||
scope_saved: "(збережено в конфігурації)"
|
||
scope_session: "(лише для цього сеансу)"
|
||
cleared: "{face} Особистість очищено {scope}"
|
||
cleared_note: "Без накладання особистості — використовується базова поведінка агента."
|
||
set_to: "{face} Особистість встановлено на '{name}' {scope}"
|
||
cron:
|
||
repeat_must_be_integer: "(._.) --repeat має бути цілим числом"
|
||
unknown_command: "(._.) Невідома команда cron: {subcommand}"
|
||
available: "Доступні: list, add, edit, pause, resume, run, remove"
|
||
overview_title: "(^_^) Заплановані завдання"
|
||
overview_commands: "Команди:"
|
||
overview_usage: "/cron list\n/cron add \"every 2h\" \"Перевірити стан сервера\" [--skill blogwatcher]\n/cron edit <job_id> --schedule \"every 4h\" --prompt \"Нове завдання\"\n/cron edit <job_id> --skill blogwatcher --skill maps\n/cron edit <job_id> --remove-skill blogwatcher\n/cron edit <job_id> --clear-skills\n/cron pause <job_id>\n/cron resume <job_id>\n/cron run <job_id>\n/cron remove <job_id>"
|
||
current_jobs: "Поточні завдання:"
|
||
skills: "Навички: {skills}"
|
||
skills_none: "Навички: немає"
|
||
next_short: "Наступний"
|
||
no_jobs_hint: "Немає запланованих завдань. Використайте '/cron add', щоб створити нове."
|
||
no_jobs: "(._.) Немає запланованих завдань."
|
||
list_header: "Заплановані завдання:"
|
||
id: "ID: {job_id}"
|
||
name: "Назва: {name}"
|
||
state: "Стан: {state}"
|
||
schedule: "Розклад: {schedule}"
|
||
schedule_repeat: "Розклад: {schedule} ({repeat})"
|
||
next_run: "Наступний запуск: {value}"
|
||
next_run_na: "Наступний запуск: н/д"
|
||
prompt: "Запит: {prompt}"
|
||
status_delivery_failed: "не доставлено: {error}"
|
||
status_error: "помилка: {error}"
|
||
last_run: "Останній запуск: {when} ({status})"
|
||
usage_add: "(._.) Використання: /cron add <schedule> <prompt>"
|
||
need_prompt_or_skill: "(._.) Вкажіть запит або хоча б одну навичку"
|
||
create_failed: "(x_x) Не вдалося створити завдання: {error}"
|
||
created: "(^_^)b Завдання створено: {job_id}"
|
||
usage_edit: "(._.) Використання: /cron edit <job_id> [--schedule ...] [--prompt ...] [--skill ...]"
|
||
job_not_found: "(._.) Завдання не знайдено: {job_id}"
|
||
update_failed: "(x_x) Не вдалося оновити завдання: {error}"
|
||
updated: "(^_^)b Завдання оновлено: {job_id}"
|
||
usage_action: "(._.) Використання: /cron {subcommand} <job_id>"
|
||
pause_failed: "(x_x) Не вдалося призупинити завдання: {error}"
|
||
resume_failed: "(x_x) Не вдалося відновити завдання: {error}"
|
||
run_failed: "(x_x) Не вдалося запустити завдання: {error}"
|
||
remove_failed: "(x_x) Не вдалося видалити завдання: {error}"
|
||
removed: "(^_^)b Завдання видалено: {name} ({job_id})"
|
||
did_not_run: "(x_x) Завдання не запущено: {name} ({job_id})\n {reason}"
|
||
paused: "(^_^)b Завдання призупинено: {name} ({job_id})"
|
||
resumed: "(^_^)b Завдання відновлено: {name} ({job_id})"
|
||
triggered: "(^_^)b Завдання запущено: {name} ({job_id})"
|
||
suggestions:
|
||
failed: "Не вдалося виконати команду пропозицій: {error}"
|
||
blueprint:
|
||
failed: "Не вдалося виконати команду cron blueprint: {error}"
|
||
curator:
|
||
failed: "(._.) куратор: {error}"
|
||
kanban:
|
||
failed: "(._.) помилка kanban: {error}"
|
||
memory:
|
||
unknown_subcommand: "Невідома підкоманда /memory. Доступні: pending, approve <id>, reject <id>, approval <on|off>."
|
||
learn:
|
||
from_description: "⚡ Вивчаю навичку з вашого опису..."
|
||
from_conversation: "⚡ Вивчаю навичку з цієї розмови..."
|
||
plan:
|
||
planning: "📋 Планування: {task}"
|
||
from_conversation: "📋 Планування на основі контексту цієї розмови..."
|
||
init:
|
||
updating: "⚡ Оновлення AGENTS.md за результатами сканування проєкту..."
|
||
generating: "⚡ Генерація AGENTS.md за результатами сканування проєкту..."
|
||
background:
|
||
usage: "Використання: /bg <prompt>\nПриклад: /bg Підсумуй найкращі історії з HN сьогодні\n(Для побіжного питання про цю розмову використовуйте /btw <question>.)\nЗавдання виконується в окремому сеансі, а результати з'являться тут після завершення."
|
||
no_credentials: "(>_<) Не вдалося запустити фонове завдання: немає дійсних облікових даних."
|
||
started: "🔄 Фонове завдання #{number} запущено: «{preview}»"
|
||
task_id: "ID завдання: {task_id}"
|
||
keep_chatting: "Можна продовжити спілкування — результати з'являться після завершення."
|
||
label: "Фонове завдання #{number}"
|
||
complete: "✅ Фонове завдання #{number} завершено"
|
||
prompt: "Запит: «{preview}»"
|
||
title_suffix: "(фонове #{number})"
|
||
no_response: "(Відповідь не згенеровано)"
|
||
side_result:
|
||
complete: "{label} завершено"
|
||
failed: "❌ {label} не вдалося: {error}"
|
||
login:
|
||
label: "Вхід"
|
||
title_suffix: "(вхід)"
|
||
no_result: "(Немає результату)"
|
||
btw:
|
||
usage: "Використання: /btw <question>\nПриклад: /btw у якому файлі була та помилка?\nВідповідає на швидке питання про цю розмову, не перериваючи її.\n(Для незалежного фонового завдання використовуйте /bg <prompt>.)"
|
||
no_credentials: "(>_<) Не вдалося відповісти на побіжне питання: немає дійсних облікових даних."
|
||
header: "💬 /btw: «{preview}»"
|
||
title_suffix: "(btw)"
|
||
no_answer: "(Відповідь не згенеровано)"
|
||
bundles:
|
||
unavailable: "Підсистема пакетів навичок недоступна: {error}"
|
||
none_installed: "Пакети навичок не встановлено."
|
||
create_hint: "Створіть пакет командою: hermes bundles create <name> --skill <s1> --skill <s2>"
|
||
directory: "Каталог: {dir}"
|
||
title: "Пакети навичок"
|
||
installed_count: "(встановлено: {count}):"
|
||
default_desc: "Завантажити {count} навичок"
|
||
skills_count: "({count} навичок)"
|
||
invoke_hint: "Викликайте пакет через /<slug>. Керуйте за допомогою `hermes bundles`."
|
||
browser:
|
||
engine_not_in_use: "⚠ browser.engine має значення 'lightpanda', але він НЕ використовується: {reason}"
|
||
engine_lightpanda: "Рушій: Lightpanda — {reason} (без знімків екрана)"
|
||
binary: "Виконуваний файл: {path}"
|
||
binary_not_found: "⚠ виконуваний файл lightpanda не знайдено — {hint}"
|
||
scheme_missing: "(відсутня)"
|
||
unsupported_scheme: "⚠ Непідтримувана схема URL браузера: {scheme} (очікується одна з: http, https, ws, wss)"
|
||
invalid_port: "⚠ Недійсний порт в URL браузера: {url}"
|
||
missing_host: "⚠ В URL браузера відсутній хост: {url}"
|
||
port_occupied: "⚠ Порт {port} зайнятий іншою програмою, яка не є CDP-браузером"
|
||
port_occupied_detail: "(можливо, його використовує відладчик IDE або dev-сервер) — запускаємо на порту {launch_port}..."
|
||
launching: "Браузер сімейства Chromium не запущено з віддаленим налагодженням — спроба запуску..."
|
||
launch_failed: "⚠ Не вдалося автоматично запустити браузер сімейства Chromium"
|
||
launch_manually: "Запустіть браузер сімейства Chromium вручну:"
|
||
no_executable: "У цьому середовищі не знайдено підтримуваного виконуваного файлу браузера сімейства Chromium"
|
||
launched: "✓ Браузер сімейства Chromium запущено, слухає порт {port}"
|
||
not_responding: "⚠ Браузер запущено, але порт {port} ще не відповідає"
|
||
try_again: "Спробуйте ще раз через кілька секунд — екземпляр налагодження, можливо, ще запускається"
|
||
already_listening: "✓ Браузер сімейства Chromium уже слухає на {url}"
|
||
port_unreachable: "⚠ Порт {port} недоступний за адресою {url}"
|
||
not_connected: "Браузер не підключено — запустіть браузер сімейства Chromium із віддаленим налагодженням і повторіть /browser connect"
|
||
connected: "🌐 Браузер підключено до запущеного браузера сімейства Chromium через CDP"
|
||
endpoint: "Кінцева точка: {url}"
|
||
already_default: "Браузер не підключено до запущеного браузера сімейства Chromium (уже використовується режим за замовчуванням)"
|
||
disconnected: "🌐 Браузер від'єднано від запущеного браузера сімейства Chromium"
|
||
reverted: "Інструменти браузера повернуто до режиму за замовчуванням (локальний headless або хмарний провайдер)"
|
||
status_lightpanda: "🌐 Браузер: локальний Lightpanda (lightpanda serve)"
|
||
status_lightpanda_note: "⚡ Lightpanda: швидша навігація, без підтримки знімків екрана"
|
||
status_auto: "🌐 Браузер: локальний headless Chromium"
|
||
status_connected: "🌐 Браузер: підключено до запущеного браузера сімейства Chromium через CDP"
|
||
status_reachable: "Стан: ✓ доступний"
|
||
status_unreachable: "Стан: ⚠ недоступний (можливо, браузер не запущено)"
|
||
status_cloud: "🌐 Браузер: {provider} (хмара)"
|
||
status_connect_hint: "/browser connect — підключитися до вашого запущеного браузера сімейства Chromium"
|
||
status_disconnect_hint: "/browser disconnect — повернутися до режиму за замовчуванням"
|
||
usage: "Використання: /browser connect|disconnect|status"
|
||
usage_connect: "connect Підключити інструменти браузера до вашого запущеного сеансу браузера сімейства Chromium"
|
||
usage_disconnect: "disconnect Повернутися до бекенду браузера за замовчуванням"
|
||
usage_status: "status Показати поточний режим браузера"
|
||
remote_gateway: "/browser connect і /browser disconnect керують браузером Chromium на хості шлюзу — доступно лише з локальним шлюзом."
|
||
checking: "Перевірка віддаленого налагодження браузера Chromium за адресою {url}..."
|
||
status_gateway_default: "🌐 Браузер: типовий браузер шлюзу (немає активного CDP-з'єднання)"
|
||
heartbeat:
|
||
label: "Heartbeats"
|
||
paused: "⏸ Heartbeat призупинено: {prompt}"
|
||
none_set: "Heartbeat не налаштовано."
|
||
none_to_resume: "Немає heartbeat для відновлення."
|
||
resumed: "▶ Heartbeat відновлено (кожні {interval}): {prompt}"
|
||
cleared: "✓ Heartbeat очищено."
|
||
usage: "Використання: /heartbeat every <interval> <prompt> (напр. /heartbeat every 10m Перевір CI)"
|
||
usage_also: "Також: /heartbeat status | pause | resume | clear"
|
||
interval_too_small: "Інтервал надто малий — мінімум {min_seconds}с."
|
||
prompt_required: "Використання: /heartbeat every <interval> <prompt> — запит обов'язковий."
|
||
invalid_label: "Недійсний heartbeat"
|
||
set: "♥ Heartbeat встановлено (кожні {interval}): {prompt}"
|
||
set_note: "Спрацьовує як звичайний хід, коли сеанс простоює і минув інтервал. Керування: /heartbeat pause | resume | clear; діє лише доки працює цей процес Hermes — для постійних розкладів використовуйте `hermes cron`."
|
||
refine:
|
||
nothing_yet: "Поки що немає чого доопрацьовувати — спочатку надішліть повідомлення."
|
||
empty: "Поки що немає чого доопрацьовувати — розмова порожня."
|
||
failed: "Не вдалося запустити /refine: {error}"
|
||
focus_suffix: " (фокус: {focus})"
|
||
started: "⚗ Переглядаю цю розмову у фоні{focus} — про всі оновлення пам'яті чи навичок повідомлю після завершення."
|
||
review:
|
||
nothing_yet: "Поки що немає чого перевіряти — спочатку надішліть повідомлення."
|
||
failed: "Не вдалося запустити /review: {error}"
|
||
goal:
|
||
label: "Цілі"
|
||
continuing: "Продовжую — роблю наступний крок."
|
||
send_to_kick: "Надішліть будь-яке повідомлення, щоб запустити наступний крок."
|
||
loop:
|
||
label: "Цикли"
|
||
goal_defers_note: "Примітка: цим сеансом керує активний /goal — пробудження циклу відкладаються, доки ціль не завершиться, не буде призупинена або відкладена."
|
||
subgoal:
|
||
no_goal: "Немає активної цілі. Встановіть її через /goal <text>."
|
||
usage_remove: "Використання: /subgoal remove <n>"
|
||
remove_needs_int: "/subgoal remove: <n> має бути цілим числом (нумерація з 1)."
|
||
removed: "✓ Підціль {index} видалено: {text}"
|
||
cleared_one: "✓ Очищено {count} підціль."
|
||
cleared_other: "✓ Очищено {count} підцілей."
|
||
none_to_clear: "Немає підцілей для очищення."
|
||
added: "✓ Додано підціль {index}: {text}"
|
||
skin:
|
||
unavailable: "Рушій скінів недоступний."
|
||
current: "Поточний скін: {name}"
|
||
available_header: "Доступні скіни:"
|
||
usage: "Використання: /skin <name>"
|
||
custom_hint: "Власні скіни: покладіть YAML-файл у {dir}/skins/"
|
||
unknown: "Невідомий скін: {name}"
|
||
available: "Доступні: {names}"
|
||
saved_suffix: " (збережено)"
|
||
set_to: "Скін встановлено: {name}{saved}"
|
||
banner_note: "Примітка: кольори банера оновляться під час наступного запуску сеансу."
|
||
colors_updated: "Кольори рядка введення та TUI оновлено."
|
||
prompt_compose:
|
||
editor_header: "#! Складіть свій запит нижче. Рядки, що починаються з '#!', ігноруються.\n#! Збережіть і вийдіть, щоб надіслати; залиште порожнім, щоб скасувати."
|
||
editor_failed: "(>_<) Не вдалося відкрити редактор: {error}"
|
||
empty: "(._.) Порожній запит — нічого не надіслано."
|
||
focus:
|
||
usage: "Використання: /focus [on|off|status]"
|
||
toggle:
|
||
save_failed: "Не вдалося зберегти налаштування {setting} у config.yaml"
|
||
footer:
|
||
usage: "/footer [on|off|status]"
|
||
label: "Нижній колонтитул середовища"
|
||
fields: "Поля: {fields}"
|
||
timestamps:
|
||
usage: "/timestamps [on|off|status]"
|
||
label: "Часові позначки повідомлень"
|
||
update:
|
||
managed_action: "оновити Hermes Agent"
|
||
choice_update: "Оновити зараз"
|
||
choice_update_desc: "вийти з поточного сеансу та оновити Hermes Agent"
|
||
choice_cancel: "Скасувати"
|
||
choice_cancel_desc: "залишити поточний сеанс"
|
||
title: "☤ Оновлення Hermes Agent"
|
||
detail: "Це завершить поточний сеанс і виконає `hermes update`."
|
||
cancelled: "🟡 /update скасовано."
|
||
launching: "☤ Запуск оновлення..."
|
||
voice:
|
||
unknown_subcommand: "Невідома підкоманда voice: {subcommand}"
|
||
usage: "Використання: /voice [on|off|tts|status]"
|
||
wake:
|
||
unknown_subcommand: "Невідома підкоманда wake: {subcommand}"
|
||
usage: "Використання: /wake [on|off|status]"
|
||
enabled_in_config: "Слово активації увімкнено в конфігурації (wake_word.enabled: true)."
|
||
disabled_in_config: "Слово активації вимкнено в конфігурації (wake_word.enabled: false)."
|
||
tip_line: "✦ Порада: {tip}"
|
||
banner:
|
||
context_too_low: "⚠️ Довжина контексту лише {tokens} токенів — цього, ймовірно, надто мало для роботи агента з інструментами."
|
||
context_minimum: "Hermes потребує щонайменше {tokens} токенів. Схеми інструментів + системний промпт займають великий фіксований префікс."
|
||
fix_ollama: "Виправлення для Ollama: OLLAMA_CONTEXT_LENGTH={tokens} ollama serve"
|
||
fix_lm_studio: "Виправлення для LM Studio: задайте довжину контексту в налаштуваннях моделі → перезавантажте модель"
|
||
fix_local_server: "Виправлення: запустіть сервер із контекстом щонайменше {tokens_k}K (llama.cpp: -c {tokens}) або задайте model.ollama_num_ctx у config.yaml відповідно до вікна, яке він справді обслуговує"
|
||
fix_config: "Виправлення: задайте model.context_length у config.yaml або збільште налаштування контексту на сервері"
|
||
hermes_models_not_agentic: "⚠ Моделі Nous Research Hermes 3 і 4 НЕ є агентними й не призначені для використання з Hermes Agent."
|
||
hermes_models_lack_tools: "Вони не мають можливостей виклику інструментів, потрібних для агентних робочих процесів. Розгляньте агентну модель (Claude, GPT, Gemini, DeepSeek тощо)."
|
||
hermes_models_switch_hint: "Перемкнутися: /model sonnet або /model gpt5"
|
||
project_skills_loaded: "◆ Завантажено навичок проєкту з цього репозиторію: {count}"
|
||
project_skills_untrusted: "◆ У {root} знайдено {count} навичок проєкту, але не завантажено — виконайте `hermes skills trust`, щоб увімкнути їх."
|
||
command:
|
||
unknown_nothing_sent: "Невідома команда {command} — нічого не надіслано.{hint}"
|
||
did_you_mean_one: "Ви мали на увазі {suggestion}?"
|
||
type_help: "Введіть /help для повного списку."
|
||
ambiguous: "Неоднозначна команда: {command}"
|
||
did_you_mean_many: "Ви мали на увазі: {candidates}?"
|
||
config:
|
||
title: "(^_^) Конфігурація"
|
||
loaded: "(завантажено)"
|
||
not_found: "(не знайдено)"
|
||
microsoft_entra_id: "Microsoft Entra ID"
|
||
google_vertex_oauth: "Google OAuth (Vertex AI)"
|
||
key_cmd_token: "key_cmd token (command)"
|
||
minimax_oauth: "MiniMax OAuth"
|
||
token_provider: "Token provider"
|
||
api_key_not_set: "Не задано!"
|
||
value_not_set: "не задано"
|
||
section_model: "Модель"
|
||
section_terminal: "Термінал"
|
||
section_agent: "Агент"
|
||
section_session: "Сеанс"
|
||
label_model: "Модель:"
|
||
label_base_url: "Базовий URL:"
|
||
label_api_key: "Ключ API:"
|
||
label_environment: "Середовище:"
|
||
label_ssh_target: "Ціль SSH:"
|
||
label_working_dir: "Робочий каталог:"
|
||
label_timeout: "Тайм-аут:"
|
||
label_max_turns: "Макс. ходів:"
|
||
label_toolsets: "Набори інструментів:"
|
||
label_verbose: "Докладний режим:"
|
||
label_started: "Запущено:"
|
||
label_config_file: "Файл конфігурації:"
|
||
context:
|
||
header: "🧠 Використання контексту — {model}"
|
||
compute_failed: "(._.) Не вдалося обчислити розбивку контексту: {error}"
|
||
error:
|
||
auth: "Ваш ключ {provider} відхилено. Виконайте `hermes model`, щоб ввести його знову."
|
||
billing: "На вашому рахунку {provider} закінчилися кошти. Поповніть його у провайдера або виконайте /model, щоб перемкнутися."
|
||
model_not_found: "'{model}' недоступна на {provider}. Виконайте /model, щоб вибрати дійсну модель."
|
||
rate_limit: "{provider} обмежив частоту запитів; зачекайте хвилину або перемкніться через /model."
|
||
upstream_blocked: "Фаєрвол/CDN перед {provider} заблокував запит (справа не у вашому ключі). Задайте User-Agent через extra_headers або перемкніться через /model."
|
||
overloaded: "{provider} зараз перевантажений. За хвилину надішліть /retry або перемкніться через /model."
|
||
server_error: "У {provider} сталася внутрішня помилка. За хвилину надішліть /retry або перемкніться через /model."
|
||
timeout: "{provider} не відповів вчасно. Надішліть /retry або перемкніться через /model."
|
||
unknown: "Запит до моделі не вдався. Виконайте /model, щоб перемкнутися, або `hermes doctor`, щоб перевірити налаштування."
|
||
the_provider: "провайдер"
|
||
the_current_model: "поточна модель"
|
||
with_details: "{lead}\nДеталі: {details}"
|
||
agent_init_failed: "Hermes не вдалося встановити з'єднання з моделлю: {error}. Ваше повідомлення не надіслано. Виконайте `hermes doctor`, щоб перевірити налаштування, або /model, щоб вибрати іншого провайдера."
|
||
gateway:
|
||
starting: "Запуск Hermes Gateway (платформи обміну повідомленнями)..."
|
||
gateway_status:
|
||
header: "(✿◠‿◠) Стан шлюзу"
|
||
platform_config_header: "Конфігурація платформ обміну повідомленнями:"
|
||
enabled: "Увімкнено"
|
||
not_configured: "Не налаштовано ({env_var})"
|
||
conversations_persist: "Розмови зберігаються до /new або /reset."
|
||
to_start: "Щоб запустити шлюз:"
|
||
config_file: "Файл конфігурації: {path}"
|
||
load_error: "Помилка завантаження конфігурації шлюзу: {error}"
|
||
to_configure: "Щоб налаштувати шлюз:"
|
||
step_env_vars: "1. Задайте змінні середовища:"
|
||
step_config: "2. Або налаштуйте параметри в {path}"
|
||
help:
|
||
header: "(^_^)? Доступні команди"
|
||
section_session: "Сеанс"
|
||
section_configuration: "Конфігурація"
|
||
section_tools_skills: "Інструменти й навички"
|
||
section_info: "Інформація"
|
||
section_exit: "Вихід"
|
||
section_context: "Контекст"
|
||
section_background_automation: "Фон і автоматизація"
|
||
usage_suffix: "{description} (використання: /{command} {args})"
|
||
alias_suffix: "{description} (псевдонім для /{command})"
|
||
skill_commands: "Команди навичок"
|
||
skill_bundles: "Пакети навичок"
|
||
quick_commands: "Швидкі команди"
|
||
n_installed: "встановлено: {count}"
|
||
n_configured: "налаштовано: {count}"
|
||
n_skills: "навичок: {count}"
|
||
load_n_skills: "Завантажити {count} навичок"
|
||
no_skill_commands: "Команди навичок не встановлено."
|
||
matching_query: "що відповідають '{query}'"
|
||
to_list_them: "щоб переглянути їх"
|
||
filtered_by: "Відфільтровано за '{query}' — виконайте /help для повного списку."
|
||
tip_line: "Порада: /help skills показує команди навичок · /help <text> фільтрує · Ctrl+P відкриває палітру команд"
|
||
multiline_hint: "Кілька рядків: Ctrl+J, Alt+Enter або \\\\+Enter для нового рядка"
|
||
draft_editor_hint: "Редактор чернетки: Ctrl+G (Alt+G у VSCode/Cursor)"
|
||
attach_image_hint: "Прикріпити зображення: /image {path} або почніть запит зі шляху до локального зображення"
|
||
paste_image_hint: "Вставити зображення: Alt+V (або /paste)"
|
||
insights:
|
||
no_session_data: "Даних сеансу ще немає."
|
||
mcp_watch:
|
||
changed_reload_skipped: "🔄 Конфігурацію MCP-серверів змінено — перезавантаження пропущено (автоперезавантаження вимкнено)."
|
||
not_applied_run: "Нові налаштування ще НЕ застосовано. Щоб застосувати їх зараз, виконайте:"
|
||
cache_note: "⚠️ Примітка: /reload-mcp перебудовує набір інструментів та інвалідує кеш промптів провайдера (наступне повідомлення повторно надішле всі вхідні токени)."
|
||
changed_reloading: "🔄 Конфігурацію MCP-серверів змінено — перепідключення..."
|
||
plugin:
|
||
command_error: "Помилка команди плагіна: {error}"
|
||
quick:
|
||
no_target: "Для швидкої команди '{command}' не визначено ціль"
|
||
unsupported_type: "Швидка команда '{command}' має непідтримуваний тип (підтримуються: 'exec', 'alias')"
|
||
no_command: "Для швидкої команди '{command}' не визначено команду"
|
||
no_output: "Команда не повернула виводу"
|
||
timed_out: "Час очікування швидкої команди минув (30с)"
|
||
error: "Помилка швидкої команди: {error}"
|
||
reload_mcp:
|
||
title: "⚠️ /reload-mcp — попередження про інвалідацію кешу промптів"
|
||
detail: "Перезавантаження MCP-серверів перебудовує набір інструментів для цього сеансу\nта інвалідує кеш промптів провайдера. Наступне повідомлення повторно\nнадішле всі вхідні токени (може бути дорого на моделях із довгим контекстом\nабо високим рівнем міркувань)."
|
||
choice_once: "Схвалити один раз"
|
||
choice_once_hint: "перезавантажити зараз"
|
||
choice_always: "Завжди схвалювати"
|
||
choice_always_hint: "перезавантажити зараз і назавжди приховати цей запит"
|
||
choice_cancel: "Скасувати"
|
||
choice_cancel_hint: "залишити MCP-інструменти без змін"
|
||
unchanged: "MCP-інструменти без змін."
|
||
always_msg: "🔒 Наступні виклики /reload-mcp виконуватимуться без підтвердження."
|
||
once_verb: "перезавантаження"
|
||
reloading: "🔄 Перезавантаження MCP-серверів..."
|
||
reconnected: "♻️ Перепідключено: {names}"
|
||
added: "➕ Додано: {names}"
|
||
removed: "➖ Видалено: {names}"
|
||
tools_available: "🔧 {tools} інструмент(ів) доступно з {servers} сервер(ів)"
|
||
agent_updated: "✅ Агента оновлено — доступно {count} інструмент(ів)"
|
||
reload_skills:
|
||
reloading: "🔄 Перезавантаження навичок..."
|
||
total: "📚 {count} навичок(и) доступно"
|
||
added_header: "➕ Додані навички:"
|
||
removed_header: "➖ Видалені навички:"
|
||
session_store:
|
||
unavailable_rich: "[bold yellow]⚠ Сховище сеансів недоступне[/bold yellow] — ця розмова [bold]НЕ буде збережена[/bold], і її не можна буде відновити пізніше. Пошук у минулих сеансах також вимкнено.\n Причина: {reason}.\n {action}\n [dim]Деталі: {details}[/dim]"
|
||
unavailable_plain: "ПОПЕРЕДЖЕННЯ: сховище сеансів недоступне — ця розмова НЕ буде збережена, і її не можна буде відновити пізніше. Причина: {reason}. {action}"
|
||
shell:
|
||
command_denied: "Команду відхилено: {reason}"
|
||
flagged_as_dangerous: "позначено як небезпечну"
|
||
exited: "! завершено з кодом {code}"
|
||
skills:
|
||
bundle_load_failed: "Не вдалося завантажити набір навичок для {command}"
|
||
loading_bundle: "Завантаження набору: {name} ({count} навичок)"
|
||
skipped_missing: "Пропущено відсутні навички: {names}"
|
||
stacked_load_failed: "Не вдалося завантажити стек навичок для {command}"
|
||
loading_stacked: "Завантаження {count} навичок стеком: {names}"
|
||
loading_skill: "Завантаження навички: {name}"
|
||
skill_load_failed: "Не вдалося завантажити навичку для {command}"
|
||
tools:
|
||
none_available: "(;_;) Немає доступних інструментів"
|
||
header: "(^_^)/ Доступні інструменти"
|
||
total: "Усього: {count} інструментів ヽ(^o^)ノ"
|
||
toolsets:
|
||
header: "(^_^)b Доступні набори інструментів"
|
||
currently_enabled_legend: "(*) = зараз увімкнено"
|
||
tip_enable_all: "Порада: використовуйте 'all' або '*', щоб увімкнути всі набори інструментів"
|
||
example: "Приклад: python cli.py --toolsets web,terminal"
|
||
usage:
|
||
unknown_subcommand: "Невідома підкоманда /usage: {args}. Спробуйте /usage або /usage reset [--force]."
|
||
reset_wrong_provider: "Накопичені скидання лімітів доступні лише з провайдером openai-codex."
|
||
reset_switch_hint: "Спочатку перемкніться через `/model` або `hermes auth`."
|
||
checking_reset_credits: "⏳ Перевірка накопичених кредитів скидання..."
|
||
codex_timeout: "❌ Час очікування відповіді від бекенда Codex минув — спробуйте трохи пізніше."
|
||
no_api_calls: "(._.) У цьому сеансі ще не було викликів API."
|
||
header_session: "📊 Використання токенів сеансу"
|
||
label_model: "Модель:"
|
||
label_input_tokens: "Вхідні токени:"
|
||
label_output_tokens: "Вихідні токени:"
|
||
label_reasoning_subset: "↳ Міркування (частина):"
|
||
label_prompt_tokens_total: "Токени промпту (усього):"
|
||
label_completion_tokens: "Токени відповіді:"
|
||
label_total_tokens: "Усього токенів:"
|
||
label_api_calls: "Виклики API:"
|
||
label_session_duration: "Тривалість сеансу:"
|
||
label_current_context: "Поточний контекст:"
|
||
label_messages: "Повідомлень:"
|
||
label_compressions: "Стиснень:"
|
||
verbose:
|
||
label_off: "Прогрес інструментів: OFF"
|
||
detail_off: "тихий режим, лише остаточна відповідь."
|
||
label_new: "Прогрес інструментів: NEW"
|
||
detail_new: "показувати кожен новий інструмент (без повторів)."
|
||
label_all: "Прогрес інструментів: ALL"
|
||
detail_all: "показувати кожен виклик інструмента."
|
||
label_verbose: "Прогрес інструментів: VERBOSE"
|
||
detail_verbose: "повні аргументи, результати та блоки роздумів."
|
||
whoami:
|
||
you_label: "Ви:"
|
||
you_value: "cli (локальний термінал)"
|
||
user_label: "Користувач:"
|
||
tier_label: "Рівень:"
|
||
tier_value: "без обмежень"
|
||
slash_commands_label: "Слеш-команди:"
|
||
slash_commands_value: "усі доступні"
|
||
worktree:
|
||
shallow_clone_keeping: "⚠ Неглибокий клон — неможливо перевірити стан push, залишаємо: {path}"
|
||
next_session_deepens: "Наступний сеанс `hermes -w` поглибить клон і автоматично видалить злиті робочі дерева."
|
||
unpushed_keeping: "⚠ У робочому дереві є невідправлені коміти, залишаємо: {path}"
|
||
uncommitted_keeping: "⚠ У робочому дереві є незафіксовані зміни, залишаємо: {path}"
|
||
kept_reason: "⚠ Робоче дерево збережено ({reason}): {path}"
|
||
clean_up_manually: "Щоб очистити вручну: git worktree remove --force {path}"
|
||
cleaned_up: "✓ Робоче дерево очищено: {path}"
|
||
exit_question_dirty: "У цьому робочому дереві є незафіксовані зміни: {path}"
|
||
exit_question_unpushed: "У цьому робочому дереві є невідправлені коміти: {path}"
|
||
exit_choice_keep: "Залишити робоче дерево (типово)"
|
||
exit_choice_archive: "Архівувати й видалити (можна відновити)"
|
||
exit_choice_discard: "Видалити й відкинути зміни"
|
||
archiving: "Архівування {path} … (для великого дерева це може зайняти час)"
|
||
archived: "✓ Робоче дерево заархівовано в {ref} і видалено: {path}"
|
||
restore_hint: "Відновити: hermes worktree restore {name}"
|
||
archive_failed: "✗ Не вдалося заархівувати {path}, залишаємо: {error}"
|
||
archived_kept: "✓ Робоче дерево заархівовано в {ref}, але збережено ({reason}): {path}"
|
||
sweep_archived_removed: "заархівовано + видалено → {ref}"
|
||
sweep_archived_kept: "заархівовано, збережено ({reason}) → {ref}"
|
||
discarded: "Робоче дерево видалено, зміни відкинуто: {path}"
|
||
display:
|
||
verb:
|
||
web_search: "Шукає в інтернеті"
|
||
web_extract: "Читає"
|
||
browser_navigate: "Переглядає"
|
||
browser_click: "Клацає"
|
||
browser_type: "Друкує"
|
||
read_file: "Читає"
|
||
write_file: "Записує"
|
||
patch: "Редагує"
|
||
search_files: "Шукає файли"
|
||
terminal: "Виконує"
|
||
execute_code: "Виконує код"
|
||
image_generate: "Генерує зображення"
|
||
video_generate: "Генерує відео"
|
||
text_to_speech: "Генерує мовлення"
|
||
vision_analyze: "Розглядає зображення"
|
||
session_search: "Шукає в минулих сеансах"
|
||
skill_view: "Читає навичку"
|
||
skills_list: "Переглядає навички"
|
||
skill_manage: "Оновлює навичку"
|
||
delegate_task: "Делегує"
|
||
cronjob_manage: "Планує"
|
||
clarify: "Запитує"
|
||
memory: "Оновлює пам'ять"
|
||
todo_list: "Оновлює завдання"
|
||
verb_connector:
|
||
search: " за запитом "
|
||
default: " "
|
||
bridge_generating:
|
||
tool_call: "виклик інструмента"
|
||
tool_search: "пошук інструментів"
|
||
tool_describe: "деталі інструмента"
|
||
status_phrase:
|
||
verb: "{verb}"
|
||
using_tool: "використовує {tool}"
|
||
preview:
|
||
shell_plus_one: "{first} + {count} команда"
|
||
shell_plus_many: "{first} + {count} команд"
|
||
delegate_tasks: "{count} завдань: {goals}"
|
||
delegate_parallel_tasks: "{count} паралельних завдань"
|
||
todo_verb_updating: "оновлення"
|
||
todo_verb_planning: "планування"
|
||
todo_reading: "читання списку завдань"
|
||
todo_tasks: "{verb} {count} завдань"
|
||
missing_old_text: "<відсутній old_text>"
|
||
send_message_to: "до {target}: «{message}»"
|
||
session_search_recall: "пригадати: «{query}»"
|
||
diff:
|
||
review_header: " ┊ diff перевірки"
|
||
omitted_lines: "… пропущено {count} рядків diff"
|
||
omitted_files: " ще у {count} файлах/розділах"
|
||
thinking_verbs: "розмірковує,обмірковує,міркує,роздумує,зважує,обдумує,осмислює,замислюється,обробляє,аналізує,розбирає,обчислює,синтезує,формулює,генерує ідеї"
|
||
spinner:
|
||
tool_line: " [інструмент] {message}"
|
||
done_line: " [готово] {message}{elapsed}"
|
||
failure:
|
||
file_not_found: "Файл не знайдено: {name}"
|
||
terminal_backend_unavailable: "бекенд термінала недоступний"
|
||
exit_code: " [вихід {code}]"
|
||
memory_full: " [заповнено]"
|
||
generic: " [помилка]"
|
||
generic_word: "помилка"
|
||
cute:
|
||
verb:
|
||
search: "пошук"
|
||
fetch: "завантаження"
|
||
terminal: "$"
|
||
read: "читання"
|
||
write: "запис"
|
||
patch: "правка"
|
||
find: "знайти"
|
||
grep: "grep"
|
||
navigate: "перехід"
|
||
snapshot: "знімок"
|
||
click: "клік"
|
||
type: "ввід"
|
||
scroll: "прокрутка"
|
||
back: "назад"
|
||
press: "натиск"
|
||
images: "зображення"
|
||
vision: "перегляд"
|
||
plan: "план"
|
||
recall: "пригадати"
|
||
memory: "пам'ять"
|
||
skills: "навички"
|
||
skill: "навичка"
|
||
create: "створення"
|
||
speak: "мовлення"
|
||
send: "надсилання"
|
||
cron: "cron"
|
||
exec: "exec"
|
||
browser: "браузер"
|
||
delegate: "делегування"
|
||
proc: "proc"
|
||
fetch_pages: "сторінки"
|
||
todo_progress: "{done}/{total} завдань"
|
||
todo_reading: "читання завдань"
|
||
todo_update_progress: "оновлення {done}/{total} ✓"
|
||
todo_update_count: "оновлення {count} завдань"
|
||
todo_count: "{count} завдань"
|
||
cron_task_fallback: "завдання"
|
||
cron_create: "створити {label}"
|
||
cron_listing: "перелік"
|
||
delegate_parallel: "паралельно"
|
||
process_list: "ls процесів"
|
||
snapshot_full: "повний"
|
||
snapshot_compact: "компактний"
|
||
images_extracting: "витягування"
|
||
vision_analyzing_page: "аналіз сторінки"
|
||
skills_list: "список {category}"
|
||
skills_all: "усі"
|
||
scroll:
|
||
up: "вгору"
|
||
down: "вниз"
|
||
left: "вліво"
|
||
right: "вправо"
|
||
fallback_tool_name: "інструмент"
|
||
fallback_done: "готово"
|
||
completed: "┊ ⚡ {tool} завершено {duration}"
|
||
iteration_progress:
|
||
unbounded: "ітерація {n}"
|
||
bounded: "ітерація {n}/{max}"
|
||
review:
|
||
routing_fallback_warning: "⚠ auxiliary.background_review.provider='{task_provider}' (модель '{task_model}') не вдалося маршрутизувати ({error}); використовується резервний варіант {provider}/{model}"
|
||
reasoning_effort_warning: "⚠ auxiliary.background_review.reasoning_effort='{effort}' не діє, поки модель перевірки не є основною моделлю"
|
||
memory_op_line: "{label} {glyph} {preview}"
|
||
skill_patched_verbose: "📝 Навичку '{name}' виправлено: «{old}» → «{new}»"
|
||
skill_changed_verbose: "📝 Навичку '{name}' {verb}: {description}"
|
||
skill_message_verbose: "📝 {message}"
|
||
skill_action: "Навичка: {action}"
|
||
label_updated: "Оновлено: {label}"
|
||
skill_result: "Навичку '{name}' {verb}{path}"
|
||
skill_verb:
|
||
created: "створено"
|
||
rewritten: "переписано"
|
||
patched: "виправлено"
|
||
written: "записано"
|
||
removed: "видалено"
|
||
deleted: "вилучено"
|
||
label:
|
||
skill: "Навичка"
|
||
memory: "Пам'ять"
|
||
user: "Профіль користувача"
|
||
summary_cli: " 💾 Перевірка самовдосконалення: {summary}"
|
||
summary_callback: "💾 Перевірка самовдосконалення: {summary}"
|
||
aux_failure_label: "фонова перевірка"
|
||
notice:
|
||
uncompressed_context_overflow: "⚠️ Контекст сеансу (~{tokens} токенів) перевищує контекстне вікно моделі (~{context_length} токенів), а стискання вимкнено (compression.enabled: false). Скористайтеся /compact, щоб стиснути історію, або увімкніть стискання в config.yaml."
|
||
explainer:
|
||
no_reply_prefix: "⚠️ Немає відповіді: "
|
||
empty_response: "{model} цього разу не дала відповіді навіть після повторних спроб. Надішліть `continue`, щоб спробувати ще раз, або змініть модель через /model."
|
||
exit:
|
||
all_retries_exhausted_no_response: "провайдер моделі не відповів після всіх повторних спроб. Надішліть /retry або змініть модель через /model."
|
||
partial_stream_recovery: "потокове виведення зупинилося зарано, і вдалося відновити лише частину відповіді. Надішліть `continue`, щоб продовжити з місця зупинки."
|
||
fallback_prior_turn_content: "на цьому ході нового вмісту не створено; показано відновлений попередній контекст. Надішліть `continue`, щоб повторити."
|
||
redirect_restart_limit_exceeded: "запит скасовувався новим виправленням на кожній спробі, тому хід зупинено замість нескінченних повторів. Ваше останнє виправлення поставлено в чергу як наступне повідомлення."
|
||
rebuilt_restart_limit_exceeded: "кожен провайдер у ланцюжку резервування раз за разом перемикався далі, тому хід зупинено замість нескінченних повторів. Надішліть `continue` або змініть провайдера."
|
||
budget_exhausted: "бюджет ітерацій/вартості на хід вичерпано до отримання остаточної відповіді. Надішліть `continue`, щоб продовжити."
|
||
ollama_runtime_context_too_small: "контекстне вікно локальної моделі виявилося надто малим, щоб завершити. Збільште розмір контексту або скористайтеся більшою моделлю."
|
||
pending_tool_result: "хід зупинився, коли результат інструмента ще очікувався, а модель не створила подальшого тексту. Надішліть `continue`, щоб вона підсумувала."
|
||
interrupted_during_api_call: "запит було перервано посеред виклику, перш ніж надійшла відповідь. Надішліть `continue`, щоб повторити."
|
||
max_iterations_reached: "досягнуто максимальну кількість ітерацій інструментів до отримання остаточної відповіді. Надішліть `continue`, щоб продовжити, або збільште `max_iterations`."
|
||
error_near_max_iterations: "поблизу ліміту ітерацій сталася помилка до отримання остаточної відповіді. Перегляньте вивід інструмента вище, а потім надішліть `continue`."
|
||
repeated_outer_errors: "хід раз за разом завершувався повторюваними помилками і був зупинений завчасно замість нескінченних повторів. Перегляньте помилки вище, а потім надішліть `continue`, щоб повторити."
|
||
persistence:
|
||
compression: "хід зупинено, бо інший процес стискав цей сеанс. Ваше повідомлення вже має бути збережене — надішліть його ще раз після завершення стиснення."
|
||
compression_closed: "хід зупинено, бо цей сеанс було замінено новим через стиснення контексту, а його активне продовження не вдалося підхопити. Саме сховище справне — оновіть клієнт (або почніть новий хід), щоб він отримав новий ідентифікатор сеансу, і надішліть повідомлення ще раз."
|
||
turn_lease: "хід зупинено, бо інший процес Hermes перебрав цей сеанс. Вашу відповідь не збережено — дочекайтеся, поки інший процес завершить роботу, і надішліть повідомлення ще раз."
|
||
session_row_missing: "цей сеанс було видалено зі сховища, поки чат ще був відкритий, і Hermes не зміг відтворити його, тому це повідомлення не збережено. Надішліть повідомлення ще раз; якщо помилка повторюється, виконайте `hermes {profile_arg}doctor`."
|
||
locked: "хід зупинено, бо сховище сеансів було зайняте (інший процес Hermes записував у базу даних стану). Ваше повідомлення вже має бути збережене — надішліть його ще раз за хвилину."
|
||
replaced: "файл бази даних сеансів було замінено під час роботи Hermes, тому це повідомлення не збережено (копія зберігається в {home}/sessions/). Зупиніть Hermes (`hermes {profile_arg}gateway stop`), виконайте `hermes {profile_arg}doctor` — не `hermes {profile_arg}doctor --fix`, який виправив би на місці не той файл — потім запустіть його знову й надішліть повідомлення ще раз. Додаткові кроки відновлення є в журналі."
|
||
deleted_wal: "інший процес Hermes досі тримає стару копію журналу випереджувального запису (WAL) бази даних сеансів, тому Hermes припинив запис, щоб не пошкодити файл, і це повідомлення не збережено (копія зберігається в {home}/sessions/). Нічого не втрачено. Закрийте всі процеси Hermes у цьому профілі (застосунок Desktop, `hermes {profile_arg}gateway stop`, панель керування, cron), виконайте `hermes {profile_arg}doctor` — він назве процес, який ще тримає журнал — потім знову запустіть Hermes і надішліть повідомлення ще раз. Не запускайте `doctor --fix` і не видаляйте файли state.db, поки вони працюють. Посібник: {recovery_docs}"
|
||
corrupt: "хід зупинено, бо база даних стану повідомила про структурне пошкодження (стенограму було б втрачено після перезапуску). Звільнення місця на диску не допоможе. Варіанти відновлення:\n1. Виконайте `hermes {profile_arg}doctor --fix`\n2. Зупиніть шлюз, потім відновіть командами:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (якщо повідомляє, що відновлення можливе) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — відновлення спочатку робить знімок пошкодженого файлу; НЕ запускайте `sqlite3 ... \".recover\"` проти робочого state.db — вразливий CLI sqlite3 може пошкодити його ще більше\n3. Відновіть із резервної копії в {backups_dir}/\nПотім надішліть повідомлення ще раз."
|
||
fts_index: "хід зупинено, бо індекс пошуку сеансів (FTS5) пошкоджено і його не вдалося від'єднати, тому це повідомлення не збережено. Саме сховище повідомлень не пошкоджене: не запускайте інструменти відновлення й не відновлюйте резервну копію. Виконайте `hermes {profile_arg}doctor --fix` (або перезапустіть Hermes — він виправляє індекс під час відкриття), потім надішліть повідомлення ще раз."
|
||
disk: "Hermes не зміг зберегти цю розмову на диск, тому зупинився, щоб не втратити ваші повідомлення. Імовірно, диск переповнений: звільніть місце (або виправте права доступу до {home}/state.db), потім надішліть повідомлення ще раз."
|
||
default: "Hermes не зміг зберегти цю розмову, тому зупинився, щоб не втратити ваші повідомлення. Можливі причини: на диску закінчилося місце або інший процес Hermes утримує базу даних. Закрийте інші вікна Hermes, виконайте `hermes {profile_arg}doctor`, щоб перевірити сховище, потім надішліть повідомлення ще раз."
|
||
file_mutation:
|
||
header: "⚠️ Перевірка змін файлів: {count} правок файлів НЕ ВДАЛОСЯ застосувати в цьому ході, попри будь-які формулювання вище, які можуть свідчити про інше. Виконайте `git status` або `read_file`, щоб перевірити, що насправді збереглося."
|
||
entry: " • `{path}` — [{tool}] {preview}"
|
||
failed: "не вдалося"
|
||
shared:
|
||
and_more: " • … і ще {count}"
|
||
the_model: "Модель"
|
||
tips:
|
||
t001: "/bg <prompt> запускає завдання в окремому сеансі, а поточний залишається вільним; /btw <question> відповідає на побіжне питання про цю розмову, не перериваючи її."
|
||
t002: "/branch розгалужує поточний сеанс, щоб ви могли дослідити інший напрямок, не втрачаючи прогресу."
|
||
t003: "/compress вручну стискає контекст розмови, коли вона стає надто довгою."
|
||
t004: "/rollback показує контрольні точки файлової системи — відновлюйте файли, які змінив агент, до будь-якого попереднього стану."
|
||
t005: "/rollback diff 2 показує, що змінилося після контрольної точки 2, нічого не відновлюючи."
|
||
t006: "/rollback 2 src/file.py відновлює один файл із певної контрольної точки."
|
||
t007: "/title \"мій проєкт\" дає назву вашому сеансу — пізніше відновіть його через /resume або hermes -c."
|
||
t008: "/resume продовжує роботу з того місця, де ви зупинилися в раніше названому сеансі."
|
||
t009: "/queue <prompt> ставить повідомлення в чергу на наступний хід, не перериваючи поточний."
|
||
t010: "/undo видаляє з розмови останній обмін репліками (ваше повідомлення та відповідь асистента)."
|
||
t011: "/retry повторно надсилає ваше останнє повідомлення — корисно, коли відповідь агента вийшла не зовсім вдалою."
|
||
t012: "/verbose перемикає режим показу прогресу інструментів: off → new → all → verbose."
|
||
t013: "/reasoning high збільшує глибину роздумів моделі. /reasoning show показує міркування."
|
||
t014: "/fast перемикає пріоритетну обробку для швидших відповідей API (залежить від провайдера)."
|
||
t015: "/yolo пропускає всі запити на схвалення небезпечних команд до кінця сеансу."
|
||
t016: "/model дозволяє змінити модель посеред сеансу — спробуйте /model sonnet або /model gpt-5."
|
||
t017: "/model --global назавжди змінює вашу модель за замовчуванням."
|
||
t018: "/personality pirate вмикає веселу особистість — 14 вбудованих варіантів від kawaii до shakespeare."
|
||
t019: "/skin змінює тему CLI — спробуйте ares, mono, slate, poseidon або charizard."
|
||
t020: "/statusbar перемикає постійний рядок стану з моделлю, токенами, % заповнення контексту, вартістю та тривалістю."
|
||
t021: "/tools disable browser тимчасово вилучає інструменти браузера з поточного сеансу."
|
||
t022: "/browser connect під'єднує інструменти браузера до вашого запущеного браузера на основі Chromium через CDP."
|
||
t023: "/plugins показує встановлені плагіни та їхній стан."
|
||
t024: "/cron керує запланованими завданнями — налаштуйте повторювані запити з доставкою на будь-яку платформу."
|
||
t025: "/reload-mcp перезавантажує конфігурацію MCP-серверів на льоту, без перезапуску."
|
||
t026: "/usage показує використання токенів, розбивку вартості та тривалість сеансу."
|
||
t027: "/insights показує аналітику використання за останні 30 днів."
|
||
t028: "/paste перевіряє, чи є в буфері обміну зображення, і прикріплює його до вашого наступного повідомлення."
|
||
t029: "/profile показує, який профіль активний, і його домашній каталог."
|
||
t030: "/config стисло показує вашу поточну конфігурацію."
|
||
t031: "/stop зупиняє всі фонові процеси, запущені агентом."
|
||
t032: "@file:path/to/file.py вставляє вміст файлу безпосередньо у ваше повідомлення."
|
||
t033: "@file:main.py:10-50 вставляє лише рядки 10-50 файлу."
|
||
t034: "@folder:src/ вставляє дерево каталогу."
|
||
t035: "@diff вставляє в повідомлення ваші неіндексовані зміни git."
|
||
t036: "@staged вставляє ваші індексовані зміни git (git diff --staged)."
|
||
t037: "@git:5 вставляє останні 5 комітів із повними патчами."
|
||
t038: "@url:https://example.com завантажує та вставляє вміст вебсторінки."
|
||
t039: "Введення @ запускає автодоповнення шляхів файлової системи — інтерактивно перейдіть до будь-якого файлу."
|
||
t040: "Поєднуйте кілька посилань: \"Перевір @file:main.py та @file:test.py на узгодженість.\""
|
||
t041: "Alt+Enter вставляє новий рядок для багаторядкового введення. (Windows Terminal перехоплює Alt+Enter — використовуйте натомість Ctrl+Enter.)"
|
||
t042: "Ctrl+C перериває агента. Натисніть двічі протягом 2 секунд, щоб примусово вийти."
|
||
t043: "Ctrl+Z згортає Hermes у фон — виконайте fg у своїй оболонці, щоб повернутися."
|
||
t044: "Tab приймає текст-підказку автодоповнення або дописує слеш-команди."
|
||
t045: "Введіть нове повідомлення, поки агент працює, щоб перервати його й скерувати в інший бік."
|
||
t046: "Alt+V вставляє зображення з буфера обміну в розмову."
|
||
t047: "Вставлення 5+ рядків автоматично зберігає їх у файл і замість них додає компактне посилання."
|
||
t048: "hermes -c відновлює ваш останній сеанс CLI. hermes -c \"назва проєкту\" відновлює за назвою."
|
||
t049: "hermes -w створює ізольоване робоче дерево git (worktree) — ідеально для паралельних робочих процесів агентів."
|
||
t050: "hermes -w -q \"Виправ issue #42\" поєднує ізоляцію в робочому дереві з одноразовим запитом."
|
||
t051: "hermes chat -t web,terminal вмикає лише певні набори інструментів для сфокусованого сеансу."
|
||
t052: "hermes chat -s github-pr-workflow попередньо завантажує навичку під час запуску."
|
||
t053: "hermes chat -q \"запит\" виконує один неінтерактивний запит і завершує роботу."
|
||
t054: "hermes chat --max-turns 1000 перевизначає стандартний ліміт у 500 ітерацій на хід."
|
||
t055: "hermes chat --checkpoints вмикає знімки файлової системи перед кожною руйнівною зміною файлів."
|
||
t056: "hermes --yolo обходить усі запити на схвалення небезпечних команд протягом усього сеансу."
|
||
t057: "hermes chat --source telegram позначає сеанс тегом для фільтрування в hermes sessions list."
|
||
t058: "hermes -p work chat запускається під певним профілем, не змінюючи ваш профіль за замовчуванням."
|
||
t059: "hermes doctor --fix діагностує та автоматично виправляє проблеми з конфігурацією й залежностями."
|
||
t060: "hermes dump виводить компактне зведення налаштувань — зручно для звітів про помилки."
|
||
t061: "hermes config set KEY VALUE автоматично зберігає секрети в .env, а все інше — у config.yaml."
|
||
t062: "hermes config edit відкриває config.yaml у вашому редакторі за замовчуванням."
|
||
t063: "hermes config check шукає відсутні або застарілі параметри конфігурації."
|
||
t064: "hermes sessions browse відкриває інтерактивний вибір сеансів із пошуком."
|
||
t065: "hermes sessions stats показує кількість сеансів за платформами та розмір бази даних."
|
||
t066: "hermes sessions prune --older-than 30 очищає старі сеанси."
|
||
t067: "hermes skills search react --source skills-sh шукає в публічному каталозі skills.sh."
|
||
t068: "hermes skills check перевіряє встановлені навички з хабу на наявність оновлень."
|
||
t069: "hermes skills tap add myorg/skills-repo додає власне джерело навичок на GitHub."
|
||
t070: "hermes skills snapshot export setup.json експортує вашу конфігурацію навичок для резервного копіювання або обміну."
|
||
t071: "hermes mcp add github --command npx додає MCP-сервери з командного рядка."
|
||
t072: "hermes mcp-serve запускає сам Hermes як MCP-сервер для інших агентів."
|
||
t073: "hermes auth add дозволяє додати кілька API-ключів для ротації пулу облікових даних."
|
||
t074: "hermes completion bash >> ~/.bashrc вмикає автодоповнення через Tab для всіх команд і профілів."
|
||
t075: "hermes logs -f стежить за agent.log у реальному часі. --level WARNING --since 1h фільтрує вивід."
|
||
t076: "hermes backup створює zip-архів усього домашнього каталогу Hermes."
|
||
t077: "hermes profile create coder створює ізольований профіль, який стає окремою командою."
|
||
t078: "hermes profile create work --clone копіює вашу поточну конфігурацію та ключі в новий профіль."
|
||
t079: "hermes update автоматично синхронізує нові вбудовані навички з УСІМА профілями."
|
||
t080: "hermes gateway install налаштовує Hermes як системну службу (systemd/launchd)."
|
||
t081: "hermes memory setup дозволяє налаштувати зовнішнього провайдера пам'яті (Honcho, Mem0 тощо)."
|
||
t082: "hermes webhook subscribe створює керовані подіями маршрути вебхуків із перевіркою HMAC."
|
||
t083: "Заощаджуйте: hermes tools вимикає невикористовувані інструменти, hermes skills config скорочує набір навичок."
|
||
t084: "/reasoning low або /reasoning minimal зменшує глибину роздумів нижче стандартного рівня (medium) — швидші й дешевші відповіді."
|
||
t085: "hermes models спрямовує завдання зору, стиснення та допоміжні задачі на дешевші моделі — скорочує фонові витрати токенів на 85%+ без погіршення основної моделі чату."
|
||
t086: "Установіть display.bell_on_complete: true у config.yaml, щоб чути сигнал після завершення довгих завдань."
|
||
t087: "Установіть display.streaming: true, щоб бачити токени в реальному часі, поки модель їх генерує."
|
||
t088: "Установіть display.show_reasoning: true, щоб спостерігати за ланцюжком міркувань моделі."
|
||
t089: "Установіть display.compact: true, щоб зменшити порожній простір у виводі й ущільнити інформацію."
|
||
t090: "Установіть display.busy_input_mode: queue, щоб ставити повідомлення в чергу замість переривання агента, або steer, щоб додавати їх під час роботи через /steer."
|
||
t091: "Установіть display.resume_display: minimal, щоб пропускати повний переказ розмови під час відновлення сеансу."
|
||
t092: "Установіть compression.threshold: 0.50, щоб керувати тим, коли спрацьовує автостиснення (за замовчуванням: 50% контексту)."
|
||
t093: "Установіть agent.max_turns: 1000, щоб дозволити агенту робити більше кроків із викликами інструментів за хід."
|
||
t094: "Установіть file_read_max_chars: 200000, щоб збільшити максимальний обсяг вмісту на один виклик read_file."
|
||
t095: "Установіть approvals.mode: smart, щоб LLM автоматично схвалювала безпечні команди й відхиляла небезпечні."
|
||
t096: "Установіть fallback_model у config.yaml, щоб автоматично перемикатися на резервного провайдера."
|
||
t097: "Установіть privacy.redact_pii: true, щоб хешувати ідентифікатори користувачів і номери телефонів перед надсиланням до LLM."
|
||
t098: "Установіть browser.headed: true, щоб бачити вікно локального Chromium, поки агент працює в браузері."
|
||
t099: "Установіть worktree: true у config.yaml, щоб завжди створювати робоче дерево git (те саме, що hermes -w)."
|
||
t100: "Установіть security.website_blocklist.enabled: true, щоб заблокувати певні домени для вебінструментів."
|
||
t101: "Установіть cron.wrap_response: false, щоб доставляти сирий вивід агента без заголовка й підпису cron."
|
||
t102: "HERMES_TIMEZONE перевизначає часовий пояс сервера будь-яким рядком часового поясу IANA."
|
||
t103: "У config.yaml працює підстановка змінних середовища: використовуйте синтаксис ${VAR_NAME}."
|
||
t104: "Швидкі команди в config.yaml миттєво виконують shell-команди без витрати токенів."
|
||
t105: "Власні особистості можна визначити в config.yaml у розділі agent.personalities."
|
||
t106: "provider_routing керує сортуванням провайдерів OpenRouter, їхніми білими та чорними списками."
|
||
t107: "execute_code виконує Python-скрипти, які програмно викликають інструменти Hermes — результати не потрапляють у контекст."
|
||
t108: "delegate_task за замовчуванням запускає до 10 паралельних субагентів (delegation.max_concurrent_children) з ізольованими контекстами для паралельної роботи."
|
||
t109: "web_extract працює з URL-адресами PDF — передайте будь-яке посилання на PDF, і воно перетвориться на markdown."
|
||
t110: "search_files працює на основі ripgrep і швидший за grep — використовуйте його замість grep у терміналі."
|
||
t111: "patch використовує 9 стратегій нечіткого зіставлення, тож незначні відмінності в пробілах не зламають правки."
|
||
t112: "patch підтримує формат V4A для масових правок у кількох файлах одним викликом."
|
||
t113: "read_file пропонує схожі назви файлів, якщо файл не знайдено."
|
||
t114: "read_file автоматично усуває дублювання — повторне читання незміненого файлу повертає легку заглушку."
|
||
t115: "Вкажіть у browser.user_data_dir теку, щоб зберегти постійний профіль Chromium: входи на сайти зберігаються між сеансами."
|
||
t116: "browser.chromium_args додає додаткові прапорці Chromium до локальних сеансів браузера, наприклад --lang=de."
|
||
t117: "image_generate створює зображення за допомогою FLUX 2 Pro з автоматичним збільшенням у 2 рази."
|
||
t118: "text_to_speech перетворює текст на аудіо — у Telegram відтворюється як голосове повідомлення."
|
||
t119: "send_message може надіслати повідомлення на будь-яку підключену платформу обміну повідомленнями прямо із сеансу."
|
||
t120: "Інструмент todo допомагає агенту відстежувати складні багатокрокові завдання впродовж сеансу."
|
||
t121: "session_search виконує повнотекстовий пошук по ВСІХ минулих розмовах."
|
||
t122: "Агент автоматично зберігає у пам'ять уподобання, виправлення та факти про середовище."
|
||
t123: "/moa проганяє один складний запит через налаштований набір моделей Mixture of Agents."
|
||
t124: "Команди терміналу підтримують фоновий режим із notify_on_complete для тривалих завдань."
|
||
t125: "Фонові процеси терміналу підтримують watch_patterns для сповіщень про певні рядки виводу."
|
||
t126: "Інструмент terminal підтримує 6 бекендів: local, Docker, SSH, Modal, Daytona та Singularity."
|
||
t127: "Кожен профіль має власну конфігурацію, ключі API, пам'ять, сеанси, навички та cron-завдання."
|
||
t128: "Назви профілів стають командами оболонки — 'hermes profile create coder' створює команду 'coder'."
|
||
t129: "hermes profile export coder -o backup.tar.gz створює переносний архів профілю."
|
||
t130: "Якщо два профілі випадково використовують один токен бота, другий шлюз блокується зі зрозумілою помилкою."
|
||
t131: "Сеанси автоматично отримують описові назви після першого обміну — називати вручну не потрібно."
|
||
t132: "Назви сеансів підтримують спадковість: \"мій проєкт\" → \"мій проєкт #2\" → \"мій проєкт #3\"."
|
||
t133: "При виході Hermes виводить команду для відновлення з ID сеансу та статистикою."
|
||
t134: "hermes sessions export backup.jsonl експортує всі сеанси для резервного копіювання чи аналізу."
|
||
t135: "hermes -r SESSION_ID відновлює будь-який конкретний минулий сеанс за його ID."
|
||
t136: "Пам'ять — це заморожений знімок: зміни з'являються в системному промпті лише на початку наступного сеансу."
|
||
t137: "Записи пам'яті автоматично скануються на шаблони ін'єкції промптів і витоку даних."
|
||
t138: "Агент має два сховища пам'яті: особисті нотатки (~2200 символів) і профіль користувача (~1375 символів)."
|
||
t139: "Виправлення, які ви даєте агенту (\"ні, зроби ось так\"), часто автоматично зберігаються в пам'ять."
|
||
t140: "Понад 80 вбудованих навичок для github, creative, mlops, productivity, research та іншого."
|
||
t141: "Кожна встановлена навичка автоматично стає slash-командою — введіть /, щоб побачити їх усі."
|
||
t142: "hermes skills install official/security/1password встановлює необов'язкові навички з репозиторію."
|
||
t143: "Навички можуть обмежуватися певними ОС — деякі завантажуються лише на macOS або Linux."
|
||
t144: "skills.external_dirs у config.yaml дозволяє завантажувати навички з власних каталогів."
|
||
t145: "Агент може створювати власні навички як процедурну пам'ять за допомогою skill_manage."
|
||
t146: "/plan записує план реалізації у markdown до .hermes/plans/, нічого не виконуючи."
|
||
t147: "До cron-завдань можна прикріплювати навички: hermes cron add --skill blogwatcher \"Check for new posts\"."
|
||
t148: "Цілі доставки cron включають telegram, discord, slack, email, sms і ще 12+ платформ."
|
||
t149: "Якщо відповідь cron починається з [SILENT], доставка пригнічується — зручно для завдань лише з моніторингом."
|
||
t150: "Cron підтримує відносні затримки (30m), інтервали (every 2h), cron-вирази та часові мітки ISO."
|
||
t151: "Cron-завдання виконуються в повністю нових сеансах агента — запити мають бути самодостатніми."
|
||
t152: "Голосовий режим працює без жодного ключа API, якщо встановлено faster-whisper (безкоштовне локальне розпізнавання мовлення)."
|
||
t153: "Доступно п'ять TTS-провайдерів: Edge TTS (безкоштовно), ElevenLabs, OpenAI, NeuTTS (безкоштовно, локально), MiniMax."
|
||
t154: "/voice on вмикає голосовий режим у CLI. Ctrl+B перемикає запис push-to-talk."
|
||
t155: "Потокове TTS озвучує речення в міру їх генерації — не потрібно чекати повної відповіді."
|
||
t156: "Голосові повідомлення в Telegram, Discord, WhatsApp і Slack транскрибуються автоматично."
|
||
t157: "Hermes працює на 21 платформі обміну повідомленнями: Telegram, Discord, Slack, WhatsApp, Signal, Matrix, IRC, Microsoft Teams, email та інших."
|
||
t158: "hermes gateway install налаштовує його як системну службу, що запускається під час завантаження."
|
||
t159: "DingTalk використовує Stream Mode — вебхуки чи публічний URL не потрібні."
|
||
t160: "BlueBubbles приносить iMessage у Hermes через локальний сервер на macOS."
|
||
t161: "Маршрути вебхуків підтримують перевірку HMAC, обмеження частоти запитів і фільтрацію подій."
|
||
t162: "API-сервер надає OpenAI-сумісний ендпоінт, який працює з Open WebUI та LibreChat."
|
||
t163: "Режим голосового каналу Discord: бот приєднується до голосового каналу, транскрибує мовлення та відповідає голосом."
|
||
t164: "group_sessions_per_user: true дає кожній людині власний сеанс у групових чатах."
|
||
t165: "/sethome позначає чат як домашній канал для доставки результатів cron-завдань."
|
||
t166: "Шлюз підтримує тайм-аути за бездіяльністю — активні агенти можуть працювати як завгодно довго."
|
||
t167: "Схвалення небезпечних команд має 4 рівні: один раз, сеанс, завжди (постійний список дозволених), відхилити."
|
||
t168: "Розумний режим схвалення використовує LLM, щоб автоматично схвалювати безпечні команди й позначати небезпечні."
|
||
t169: "Захист від SSRF блокує приватні мережі, loopback, link-local та адреси метаданих хмарних провайдерів."
|
||
t170: "ID сеансів починаються з мітки часу (20250305_091523_abcd), тож у ls і jq вони природно сортуються."
|
||
t171: "Підпроцеси MCP отримують відфільтроване середовище — передаються лише безпечні системні змінні."
|
||
t172: "Контекстні файли (.hermes.md, AGENTS.md) перед завантаженням скануються на ін'єкції промптів."
|
||
t173: "command_allowlist у config.yaml назавжди схвалює певні шаблони shell-команд."
|
||
t174: "Контекст автоматично стискається при досягненні порогу — пам'ять скидається на диск, а історія підсумовується."
|
||
t175: "Рядок стану стає жовтим, потім оранжевим, потім червоним у міру заповнення контексту."
|
||
t176: "SOUL.md — головний файл ідентичності агента; налаштуйте його, щоб сформувати поведінку."
|
||
t177: "Hermes завантажує контекст проєкту з .hermes.md, AGENTS.md, CLAUDE.md або .cursorrules (перший знайдений)."
|
||
t178: "Файли AGENTS.md у підкаталогах виявляються поступово, коли агент заходить у папки."
|
||
t179: "Контекстні файли обмежені 20 000 символами з розумним обрізанням посередині (початок і кінець зберігаються)."
|
||
t180: "Браузерні бекенди: локальний Chromium, Lightpanda, Browserbase, Browser Use і Firecrawl — плюс Camofox як плагін."
|
||
t181: "Camofox (Firefox із захистом від виявлення) тепер плагін: hermes plugins install camofox."
|
||
t182: "browser_exec виконує кілька кроків у браузері за один виклик Python — перехід, вилучення й кліки разом."
|
||
t183: "browser.dialog_policy визначає обробку нативних діалогів сторінки: must_respond (агент відповідає через browser_dialog), auto_dismiss або auto_accept."
|
||
t184: "hermes mcp відкриває інтерактивний вибір схвалених Nous MCP-серверів, які можна встановити одним натисканням."
|
||
t185: "hermes mcp catalog показує список схвалених Nous MCP-серверів, що постачаються з репозиторієм."
|
||
t186: "hermes mcp install <name> встановлює запис із каталогу, запитує облікові дані та дозволяє вибрати, які з його інструментів увімкнути."
|
||
t187: "MCP-сервери налаштовуються в config.yaml — підтримуються транспорти stdio та HTTP."
|
||
t188: "Фільтрація інструментів для кожного сервера: tools.include дозволяє, а tools.exclude забороняє конкретні інструменти."
|
||
t189: "MCP-сервери автоматично створюють набори інструментів під час роботи — hermes tools може перемикати їх для кожної платформи."
|
||
t190: "Підтримка OAuth для MCP: auth: oauth вмикає авторизацію через браузер із PKCE."
|
||
t191: "Контрольні точки не створюють жодних накладних витрат, якщо файли не змінюються — увімкнено за замовчуванням."
|
||
t192: "Знімок перед відкатом зберігається автоматично, тож ви можете скасувати саме скасування."
|
||
t193: "/rollback також скасовує хід розмови, тому агент не пам'ятає відкочених змін."
|
||
t194: "Контрольні точки використовують тіньові репозиторії в ~/.hermes/checkpoints/ — .git вашого проєкту ніколи не зачіпається."
|
||
t195: "batch_runner.py паралельно обробляє сотні запитів для генерації навчальних даних."
|
||
t196: "hermes chat -Q вмикає тихий режим для програмного використання — приховує банер і індикатор."
|
||
t197: "Збереження траєкторій (--save-trajectories) фіксує повні сліди використання інструментів для навчання моделей."
|
||
t198: "Три типи плагінів: загальні (інструменти та хуки), провайдери пам'яті та контекстні рушії."
|
||
t199: "hermes plugins install owner/repo встановлює плагіни безпосередньо з GitHub."
|
||
t200: "Зовнішні провайдери пам'яті: Honcho, Hindsight, Mem0, OpenViking та інші — через hermes plugins install."
|
||
t201: "Хуки плагінів включають pre/post_tool_call, pre/post_llm_call і transform_terminal_output для канонізації виводу."
|
||
t202: "Кешування промптів (Anthropic) знижує витрати, повторно використовуючи кешовані префікси системного промпту."
|
||
t203: "Агент генерує назви сеансів у фоновому потоці — без жодного впливу на затримку."
|
||
t204: "Розумна маршрутизація моделей може автоматично скеровувати прості запити до дешевшої моделі."
|
||
t205: "Slash-команди підтримують збіг за префіксом: /h розгортається в /help, /mod — у /model."
|
||
t206: "Перетягування шляху до файлу в термінал автоматично прикріплює зображення або надсилає його як контекст."
|
||
t207: ".worktreeinclude у корені репозиторію перелічує ігноровані git файли, які копіювати в робочі дерева."
|
||
t208: "hermes acp запускає Hermes як ACP-сервер для інтеграції з VS Code, Zed і JetBrains."
|
||
t209: "Власні провайдери: зберігайте іменовані ендпоінти в config.yaml у розділі custom_providers."
|
||
t210: "HERMES_EPHEMERAL_SYSTEM_PROMPT вставляє системний промпт, який ніколи не зберігається в історії."
|
||
t211: "credential_pool_strategies підтримує ротацію fill_first, round_robin, least_used і random."
|
||
t212: "hermes auth add nous або hermes auth add openai-codex налаштовує провайдерів на основі OAuth."
|
||
t213: "API-сервер підтримує як Chat Completions, так і Responses API зі станом на боці сервера."
|
||
t214: "tool_preview_length: 0 у конфігурації показує повні шляхи до файлів у стрічці активності індикатора."
|
||
t215: "hermes status --deep виконує глибші діагностичні перевірки всіх компонентів."
|
||
t216: "До cron-завдань можна прикріпити Python-скрипт (--script), чий stdout вставляється в запит як контекст."
|
||
t217: "Cron-скрипти зберігаються в ~/.hermes/scripts/ і виконуються перед агентом — ідеально для конвеєрів збору даних."
|
||
t218: "prefill_messages_file у config.yaml додає few-shot приклади до кожного виклику API, не зберігаючи їх в історії."
|
||
t219: "SOUL.md повністю замінює типову ідентичність агента — перепишіть його, щоб зробити Hermes своїм."
|
||
t220: "SOUL.md автоматично заповнюється типовою особистістю під час першого запуску. Відредагуйте його для налаштування."
|
||
t221: "/compress <focus topic> виділяє 60–70% бюджету підсумку на вашу тему й агресивно скорочує решту."
|
||
t222: "Під час другого й наступних стиснень компресор оновлює попередній підсумок, а не починає з нуля."
|
||
t223: "Перед скиданням сеансу шлюзу Hermes автоматично скидає важливі факти в пам'ять у фоновому режимі."
|
||
t224: "network.force_ipv4: true у config.yaml усуває зависання на серверах зі зламаним IPv6 — патчить socket під час роботи."
|
||
t225: "Інструмент terminal пояснює поширені коди виходу: grep повертає 1 = 'No matches found (not an error)'."
|
||
t226: "Невдалі команди терміналу у передньому плані автоматично повторюються до 3 разів з експоненційною затримкою (2с, 4с, 8с)."
|
||
t227: "Команди з голим sudo автоматично переписуються так, щоб передавати SUDO_PASSWORD з .env — інтерактивний запит не потрібен."
|
||
t228: "Помічники execute_code потребують явного імпорту: from hermes_tools import json_parse, shell_quote, retry."
|
||
t229: "7 інструментів пісочниці execute_code (web_search, terminal, read/write/search/patch) працюють через RPC — ніколи не потрапляють у контекст."
|
||
t230: "Читання тієї самої ділянки файлу 3+ рази викликає попередження. Після 4+ воно жорстко блокується, щоб запобігти циклам."
|
||
t231: "write_file і patch виявляють, чи файл був змінений зовні після останнього читання, і попереджають про застарілість."
|
||
t232: "Формат патчів V4A підтримує директиви Add File, Delete File і Move File — не лише Update."
|
||
t233: "MCP-сервери можуть запитувати відповіді LLM у зворотному напрямку через sampling — агент стає інструментом для сервера."
|
||
t234: "MCP-сервери надсилають notifications/tools/list_changed, щоб автоматично перереєструвати інструменти без перезапуску."
|
||
t235: "delegate_task з acp_command: 'claude' запускає Claude Code як дочірнього агента з будь-якої платформи."
|
||
t236: "Делегування має потік heartbeat — активність дочірнього агента передається батьківському, що запобігає тайм-аутам шлюзу."
|
||
t237: "Коли провайдер повертає HTTP 402 (payment required), допоміжний клієнт автоматично переходить до наступного."
|
||
t238: "agent.tool_use_enforcement скеровує моделі, які описують дії замість викликати інструменти — автоматично для GPT/Codex."
|
||
t239: "agent.restart_after_turn_timeout дає поточним ходам завершитися, перш ніж /restart перейде до stop(); restart_drain_timeout — лише бюджет примусового переривання після початку stop()."
|
||
t240: "agent.api_max_retries (за замовчуванням 3) визначає, скільки разів агент повторює невдалий виклик API, перш ніж показати помилку — зменште для швидкого перемикання."
|
||
t241: "Шлюз кешує екземпляри AIAgent для кожного сеансу — знищення цього кешу ламає кешування промптів Anthropic."
|
||
t242: "Будь-який сайт може публікувати навички через /.well-known/skills/index.json — хаб навичок знаходить їх автоматично."
|
||
t243: "Журнал аудиту навичок у ~/.hermes/skills/.hub/audit.log фіксує кожне встановлення та видалення."
|
||
t244: "Застарілі робочі дерева git прибираються автоматично: чисті злиті дерева видаляються; неактивні дерева з незафіксованими або невідправленими змінами спершу архівуються, і їх можна відновити командою hermes worktree restore."
|
||
t245: "Профілі ізолюють стан Hermes через HERMES_HOME; підпроцеси інструментів хоста зберігають ваш справжній HOME, якщо terminal.home_mode не дорівнює profile."
|
||
t246: "Змінна середовища HERMES_HOME_MODE (вісімкова, напр. 0701) задає власні права доступу до каталогу для обходу вебсервером."
|
||
t247: "Контейнерний режим: покладіть .container-mode у HERMES_HOME — і CLI хоста автоматично виконуватиметься всередині контейнера."
|
||
t248: "Ctrl+C має 5 рівнів пріоритету: скасувати запис → скасувати запити → закрити вибір → перервати агента → вийти."
|
||
t249: "Кожне переривання під час роботи агента записується в ~/.hermes/interrupt_debug.log з мітками часу."
|
||
t250: "BROWSER_CDP_URL підключає браузерні інструменти до будь-якого запущеного браузера сімейства Chromium — приймає WebSocket, HTTP або host:port."
|
||
t251: "BROWSERBASE_ADVANCED_STEALTH=true вмикає розширений захист від виявлення з кастомним Chromium (план Scale)."
|
||
t252: "CLI автоматично переходить у компактний режим у терміналах, вужчих за 80 стовпців."
|
||
t253: "Швидкі команди бувають двох типів: exec (виконати shell-команду напряму) та alias (перенаправити на іншу команду)."
|
||
t254: "Окрема модель для делегування: delegation.model і delegation.provider у конфігурації спрямовують субагентів на дешевші моделі."
|
||
t255: "delegation.reasoning_effort незалежно керує глибиною роздумів субагентів."
|
||
t256: "display.platforms у config.yaml дозволяє перевизначати параметри показу для кожної платформи: {telegram: {tool_progress: all}}."
|
||
t257: "human_delay.mode у конфігурації імітує швидкість людського набору — діапазон min_ms/max_ms налаштовується."
|
||
t258: "Міграції версій конфігурації виконуються автоматично під час завантаження — нові ключі з'являються без ручного втручання."
|
||
t259: "Моделі GPT і Codex отримують спеціальні вказівки в системному промпті щодо дисципліни інструментів та обов'язкового їх використання."
|
||
t260: "Моделі Gemini отримують окремі директиви щодо абсолютних шляхів, паралельних викликів інструментів і неінтерактивних команд."
|
||
t261: "context.engine у config.yaml можна встановити в назву плагіна для альтернативних стратегій керування контекстом."
|
||
t262: "З хмарним браузером адреси localhost і локальної мережі відкриваються в локальному Chromium (browser.auto_local_for_private_urls, увімкнено за замовчуванням)."
|
||
t263: "Стискач робить дешевий попередній прохід: виводи інструментів понад 200 символів замінюються заповнювачами ще до запуску LLM."
|
||
t264: "Якщо стиснення не вдалося, подальші спроби призупиняються на 10 хвилин, щоб не перевантажувати API."
|
||
t265: "Довгі небезпечні команди (>70 символів) отримують у запиті схвалення опцію 'view', щоб спершу переглянути повний текст."
|
||
t266: "Візуалізація рівня звуку показує стовпчики ▁▂▃▄▅▆▇ під час голосового запису на основі RMS-рівнів мікрофона."
|
||
t267: "Назви профілів не можуть збігатися з наявними бінарними файлами в PATH — 'hermes profile create ls' буде відхилено."
|
||
t268: "hermes profile create backup --clone-all копіює все (конфігурацію, ключі, SOUL.md, спогади, навички, сеанси)."
|
||
t269: "Клавішу голосового запису можна змінити через voice.record_key у config.yaml — не лише Ctrl+B."
|
||
t270: "Файли .cursorrules і .cursor/rules/*.mdc виявляються автоматично й завантажуються як контекст проєкту."
|
||
t271: "Контекстні файли перевіряються на 10+ шаблонів ін'єкції промптів — невидимий Unicode, 'ignore instructions', спроби ексфільтрації."
|
||
t272: "GPT-5 і Codex використовують у форматі повідомлень роль 'developer' замість 'system'."
|
||
t273: "Окремі допоміжні перевизначення для кожного завдання: auxiliary.vision.provider, auxiliary.compression.model тощо у config.yaml."
|
||
t274: "Допоміжний клієнт трактує 'main' як псевдонім провайдера — він розгортається у ваші справжні основні провайдера та модель."
|
||
t275: "hermes import-agent openclaw --dry-run показує попередній перегляд міграції з OpenClaw, нічого не записуючи."
|
||
t276: "Шляхи до файлів, вставлені з лапками або екранованими пробілами, обробляються автоматично — чистити вручну не потрібно."
|
||
t277: "Слеш-команди ніколи не спричиняють згортання великої вставки — /command з великими аргументами працює коректно."
|
||
t278: "У режимі переривання слеш-команди, введені під час роботи агента, оминають логіку переривання й виконуються негайно."
|
||
t279: "HERMES_DEV=1 вимикає виявлення контейнерного режиму для локальної розробки."
|
||
t280: "Кожен MCP-сервер отримує власний набір інструментів (mcp-servername), який можна вмикати й вимикати окремо через hermes tools."
|
||
t281: "Заповнювачі MCP ${ENV_VAR} у конфігурації розгортаються під час запуску сервера — зокрема змінні з ~/.hermes/.env."
|
||
t282: "Навички з довірених репозиторіїв (NousResearch) отримують рівень безпеки 'trusted'; навички спільноти проходять додаткове сканування."
|
||
t283: "Карантин навичок у ~/.hermes/skills/.hub/quarantine/ зберігає навички, що очікують перевірки безпеки."
|
||
t284: "/steer <prompt> вставляє нотатку після наступного виклику інструмента — скеруйте напрямок посеред завдання, не перериваючи його."
|
||
t285: "/goal <text> задає постійну ціль у стилі Ralph-циклу — Hermes автоматично продовжує хід за ходом, доки суддя не визнає її виконаною."
|
||
t286: "/snapshot create [label] зберігає повний знімок стану конфігурації Hermes; /snapshot restore <id> пізніше відкочує до нього."
|
||
t287: "/copy [N] копіює останню відповідь асистента в буфер обміну або N-ту з кінця, якщо вказати число."
|
||
t288: "/redraw примусово перемальовує весь інтерфейс, усуваючи зсуви термінала після зміни розміру в tmux або артефактів виділення мишею."
|
||
t289: "/agents (псевдонім /tasks) показує активних агентів і запущені фонові завдання в поточному сеансі."
|
||
t290: "/footer вмикає й вимикає нижній колонтитул шлюзу у фінальних відповідях із моделлю, % контексту та cwd."
|
||
t291: "/busy queue|steer|interrupt визначає, що робить натискання Enter, поки Hermes працює."
|
||
t292: "/topic у приватних чатах Telegram вмикає режим багатосеансових тем, керованих користувачем — /topic <id> відновлює минулі сеанси прямо там."
|
||
t293: "/approve session|always виконує очікувану небезпечну команду з вибраним вами обсягом довіри; /deny відхиляє її."
|
||
t294: "/restart плавно перезапускає шлюз, дочекавшись завершення активних запусків, а потім повідомляє того, хто його запросив, коли все знову працює."
|
||
t295: "/kanban boards switch <slug> змінює активну дошку Kanban серед кількох проєктів прямо з чату."
|
||
t296: "/reload перечитує ~/.hermes/.env у запущений сеанс — підхопіть нові API-ключі без перезапуску."
|
||
t297: "cronjob із no_agent=True запускає скрипт за розкладом і надсилає його stdout напряму — нуль токенів, нуль LLM."
|
||
t298: "Порожній stdout cron-скрипта означає тихий тік — нічого не доставляється, ідеально для сторожових перевірок порогів."
|
||
t299: "HERMES_CRON_MAX_PARALLEL (типово 4) обмежує кількість cron-завдань за один тік, щоб сплески не вичерпували ваші ключі."
|
||
t300: "Хуки шлюзу лежать у ~/.hermes/hooks/<name>/ з HOOK.yaml + handler.py — обробник має називатися `handle`."
|
||
t301: "Події хуків включають gateway:startup, session:start, agent:step і підписки за шаблоном command:*."
|
||
t302: "Покладіть чекліст у ~/.hermes/BOOT.md — і хук gateway:startup виконуватиме його як одноразового агента під час кожного завантаження."
|
||
t303: "hermes curator run --dry-run показує, що куратор архівував би чи об'єднав, нічого не змінюючи."
|
||
t304: "hermes curator pin <skill> жорстко захищає навичку і від автоархівації, і від інструмента skill_manage агента."
|
||
t305: "hermes curator rollback відновлює навички зі знімка, зробленого перед запуском — резервні копії лежать у skills/.curator_backups/."
|
||
t306: "hermes auth reset <provider> [target] скидає паузи та позначки вичерпання для всього пулу облікових даних або для одного запису за індексом, id чи міткою."
|
||
t307: "credential_pool_strategies.<provider>: round_robin рівномірно чергує ключі замість типового fill_first."
|
||
t308: "use_gateway: true для окремого інструмента спрямовує web, image, tts або browser через вашу підписку Nous — без додаткових ключів."
|
||
t309: "provider_routing.data_collection: deny виключає провайдерів OpenRouter, які зберігають дані."
|
||
t310: "provider_routing.require_parameters: true маршрутизує лише до провайдерів, що підтримують кожен параметр вашого запиту."
|
||
t311: "HERMES_TUI_RESUME=1 автоматично повертає вас до останнього сеансу TUI під час запуску — зручно після обриву SSH."
|
||
t312: "HERMES_TUI_THEME=light|dark|<hex> примусово задає тему TUI в терміналах, які не встановлюють COLORFGBG."
|
||
t313: "Ctrl+G або Ctrl+X Ctrl+E у TUI відкриває буфер введення в $EDITOR для довгих багаторядкових запитів."
|
||
t314: "TUI відображає LaTeX прямо в тексті — $E=mc^2$ стає математичним Unicode замість сирого TeX."
|
||
t315: "hermes dashboard запускає локальний вебінтерфейс на 127.0.0.1:9119 — жодні дані не залишають localhost."
|
||
t316: "hermes dashboard вбудовує повний TUI Hermes у ваш браузер через xterm.js і WebSocket PTY."
|
||
t317: "Покладіть YAML із двома кольорами палітри в ~/.hermes/dashboard-themes/, щоб повністю змінити вигляд панелі керування."
|
||
t318: "Плагіни панелі керування підключаються простим копіюванням: manifest.json + JS-бандл у ~/.hermes/dashboard-plugins/ — збірка npm не потрібна."
|
||
t319: "layoutVariant: cockpit у темі панелі керування додає ліву панель шириною 260px, яку плагіни можуть заповнювати через слот sidebar."
|
||
t320: "display.tool_progress_command: true відкриває /verbose на платформах обміну повідомленнями; типово він доступний лише в CLI."
|
||
t321: "HERMES_BACKGROUND_NOTIFICATIONS=result сповіщає лише про завершення фонових завдань (на відміну від concise/all/error/off)."
|
||
t322: "HERMES_WRITE_SAFE_ROOT обмежує write_file/patch префіксами каталогів; кілька шляхів розділяються через os.pathsep (: або ;)."
|
||
t323: "HERMES_IGNORE_RULES пропускає автоматичне підключення AGENTS.md, SOUL.md, .cursorrules, пам'яті та попередньо завантажених навичок."
|
||
t324: "HERMES_ACCEPT_HOOKS автоматично схвалює ще не бачені shell-хуки, оголошені в config.yaml, без запиту в TTY."
|
||
t325: "auxiliary.goal_judge.model спрямовує суддю /goal на дешеву швидку модель, щоб вартість циклу була майже нульовою."
|
||
t326: "Контрольні точки пропускають каталоги з понад 50 000 файлів, щоб уникнути повільних операцій git на величезних монорепозиторіях."
|
||
t327: "tts.provider: piper запускає локальний TTS на CPU для 44 мов — голоси автоматично завантажуються в ~/.hermes/cache/piper-voices/."
|
||
t328: "tts.providers.<name>.type: command підключає будь-який TTS-рушій із CLI через заповнювачі {input_path} і {output_path}."
|
||
t329: "API_SERVER_ENABLED=true запускає поруч зі шлюзом OpenAI-сумісний ендпоінт для Open WebUI та LibreChat."
|
||
t330: "GATEWAY_PROXY_URL вмикає розділену схему: введення/виведення платформ локально, робота агента делегується віддаленому API-серверу."
|
||
t331: "MATRIX_DEVICE_ID закріплює стабільний ID пристрою для E2EE — без нього ключі змінюються під час кожного запуску, і розшифрування історії ламається."
|
||
t332: "TELEGRAM_WEBHOOK_SECRET обов'язковий щоразу, коли задано TELEGRAM_WEBHOOK_URL — згенеруйте його через openssl rand -hex 32."
|
||
t333: "batch_runner.py --resume зіставляє виконані запити за текстом, тож перестановки в наборі даних не запускають готову роботу повторно."
|
||
t334: "/new починає новий сеанс на місці (псевдонім /reset) — новий ID сеансу, чиста історія, CLI залишається відкритим."
|
||
t335: "/clear очищає екран термінала І починає новий сеанс — одна команда для візуального скидання."
|
||
t336: "/history виводить поточну розмову прямо в CLI, не виходячи з нього — зручно, щоб швидко перечитати."
|
||
t337: "/save записує поточну розмову на диск, не завершуючи сеанс."
|
||
t338: "/status показує зведення про сеанс: ID, назву, модель, використання токенів і час, що минув."
|
||
t339: "/image <path> прикріплює локальний файл зображення до вашого наступного запиту без вставляння чи перетягування."
|
||
t340: "/platforms показує стан підключення шлюзу та платформ обміну повідомленнями прямо з чату."
|
||
t341: "/commands виводить посторінково повний список слеш-команд і встановлених навичок — зручно на платформах без автодоповнення по Tab."
|
||
t342: "/toolsets перелічує всі доступні набори інструментів, щоб ви знали, що приймає -t/--toolsets."
|
||
t343: "/voice tts вмикає режим лише TTS — агент відповідає вголос, а ви й далі вводите запити з клавіатури."
|
||
t344: "/reload-skills повторно сканує ~/.hermes/skills/, тож скопійовані туди навички з'являються без перезапуску сеансу."
|
||
t345: "/indicator kaomoji|emoji|unicode|ascii обирає стиль індикатора зайнятості TUI, який показується під час роботи агента."
|
||
t346: "/debug завантажує пакет для підтримки (інформація про систему + журнали) і повертає посилання для поширення — працює і в чаті."
|
||
t347: "hermes -z \"<prompt>\" — найчистіший одноразовий запуск: лише фінальна відповідь у stdout і нічого більше — ідеально для конвеєрів у скриптах."
|
||
t348: "hermes chat --pass-session-id вставляє ID сеансу в системний промпт, щоб агент міг на нього посилатися."
|
||
t349: "hermes chat --image path/to/pic.png прикріплює локальне зображення до одного запиту -q без окремого кроку завантаження."
|
||
t350: "hermes chat --ignore-user-config пропускає активну конфігурацію користувача — для відтворюваних звітів про помилки та запусків у CI."
|
||
t351: "hermes chat --source tool позначає програмні чати, щоб вони не захаращували hermes sessions list."
|
||
t352: "hermes dump --show-keys додає знеособлені відбитки API-ключів для глибшого налагодження з підтримкою."
|
||
t353: "hermes sessions rename <ID> \"new title\" перейменовує будь-який минулий сеанс; hermes sessions delete <ID> видаляє один."
|
||
t354: "hermes import відновлює повну резервну копію Hermes із zip; експорти сеансів у JSON/JSONL імпортуються зі сторінки Sessions панелі керування."
|
||
t355: "hermes fallback інтерактивно керує ланцюжком fallback_model — без ручного редагування config.yaml."
|
||
t356: "hermes pairing змінює токен зв'язування для приватних повідомлень — перший, хто напише після зміни, отримує доступ до бота."
|
||
t357: "hermes setup проводить нових користувачів через налаштування провайдера, ключів і платформ в одному інтерактивному сценарії."
|
||
t358: "hermes status --deep виконує повну перевірку стану всіх компонентів; звичайний hermes status — швидкий огляд."
|
||
t359: "HERMES_AGENT_TIMEOUT=0 вимикає зупинку запущеного агента шлюзом через бездіяльність — для довгих дослідницьких запусків."
|
||
t360: "HERMES_ENABLE_PROJECT_PLUGINS=1 автоматично завантажує локальні плагіни репозиторію з ./.hermes/plugins/ — з обов'язковою перевіркою довіри."
|
||
t361: "HERMES_DISABLE_FILE_STATE_GUARD=1 вимикає захист «файл змінився після прочитання» для patch і write_file."
|
||
t362: "HERMES_ALLOW_PRIVATE_URLS=true дозволяє вебінструментам звертатися до localhost і приватних мереж — у режимі шлюзу типово вимкнено."
|
||
t363: "HERMES_OPTIONAL_SKILLS=name1,name2 автоматично встановлює додаткові навички з необов'язкового каталогу під час першого запуску кожного профілю."
|
||
t364: "HERMES_BUNDLED_SKILLS вказує на власне дерево вбудованих навичок — використовується пакуванням Homebrew і Nix."
|
||
t365: "HERMES_DUMP_REQUEST_STDOUT=1 виводить корисне навантаження кожного API-запиту в stdout замість файлів журналу."
|
||
t366: "HERMES_OAUTH_TRACE=1 записує в журнал (зі знеособленням) обмін OAuth-токенами та спроби оновлення — для налагодження автентифікації провайдера."
|
||
t367: "HERMES_STREAM_RETRIES (типово 3) задає кількість спроб перепідключення посеред потоку при тимчасових мережевих помилках."
|
||
t368: "HERMES_GATEWAY_BUSY_ACK_ENABLED=false вимикає підтвердження ⚡/⏳/⏩, коли користувач пише зайнятому агентові."
|
||
t369: "HERMES_AGENT_NOTIFY_INTERVAL (типово 180s) задає, як часто шлюз повідомляє про прогрес під час довгих ходів."
|
||
t370: "HERMES_RESTART_DRAIN_TIMEOUT (типово 900s) обмежує, скільки /restart чекає на завершення поточних запусків, перш ніж примусово перезапуститися."
|
||
t371: "HERMES_CHECKPOINT_TIMEOUT (типово 30s) обмежує час створення контрольної точки файлової системи — збільште його на величезних монорепозиторіях."
|
||
t372: "image_gen.model у config.yaml обирає модель FAL: flux-2/klein, gpt-image-2, nano-banana-pro та інші."
|
||
t373: "image_gen.provider спрямовує генерацію зображень через плагін (OpenAI Images, Codex, FAL) замість типового провайдера."
|
||
t374: "AUXILIARY_VISION_BASE_URL + AUXILIARY_VISION_API_KEY спрямовують аналіз зображень на будь-який OpenAI-сумісний ендпоінт."
|
||
t375: "API_SERVER_MODEL_NAME задає назву моделі в /v1/models — необхідно для багатопрофільних конфігурацій Open WebUI."
|
||
t376: "Плагіни панелі керування роздаються з /dashboard-plugins/<name>/ — просто покладіть файли в ~/.hermes/dashboard-plugins/."
|
||
t377: "Чати з --source tool типово не показуються в hermes sessions list — вкажіть --source явно, щоб їх побачити."
|
||
placeholder:
|
||
p01: "Запитайте будь-що або введіть / для команд…"
|
||
p02: "Підсумуй, що є в цій теці"
|
||
p03: "Склади відповідь на останній лист у моїй скриньці"
|
||
p04: "Сплануй функцію, а потім реалізуй її крок за кроком"
|
||
p05: "Знайди та виправ тест, що не проходить"
|
||
p06: "Дослідь цю тему й напиши мені короткий огляд"
|
||
p07: "Що нещодавно змінилося в цьому репозиторії?"
|
||
p08: "Перетвори ці нотатки на список справ"
|
||
p09: "Поясни цю помилку і як її виправити"
|
||
p10: "Постав нагадування або заплануй повторюване завдання"
|
||
p11: "Введіть /, щоб переглянути команди, або Ctrl+P для палітри"
|
||
|
||
# Window plans (Nous subscription with included usage): picker words, limit lines, Large-model notice.
|
||
plan_usage:
|
||
level_free: "Безкоштовно"
|
||
level_top_tier: "Велика"
|
||
resets_in: "скидання через {duration}"
|
||
resets_soon: "скоро скидання"
|
||
limit_reached: "Досягнуто {name} · {resets}"
|
||
limit_day: "денний ліміт"
|
||
limit_week: "тижневий ліміт"
|
||
limit_month: "місячний ліміт"
|
||
limit_top_tier: "місячний ліміт великих моделей"
|
||
then_credits: "платні моделі тепер використовують ваші кредити (оплата за використання)"
|
||
then_credits_large: "великі моделі тепер використовують ваші кредити (оплата за використання)"
|
||
then_wait: "до скидання лише безкоштовні моделі"
|
||
then_wait_large: "великі моделі призупинено до скидання"
|
||
large_notice: "Велика модель: витрачає більше ліміту плану на повідомлення."
|
||
large_notice_credits: "Велика модель: витрачає більше кредитів на повідомлення (оплата за використання)."
|
||
large_notice_limit: "Велика модель: досягнуто {name} ({resets})."
|
||
large_notice_limit_stops: "Велика модель: досягнуто {name} ({resets}), до скидання вона не запуститься."
|
||
large_notice_percent: "Велика модель: витрачає більше ліміту плану на повідомлення. Місячний ліміт великих моделей: використано {percent}."
|