plugin-catalog/mem0.yaml (#131267) points at mem0ai/mem0's own integrations/hermes-plugin-mem0 at a reviewed pin. The entry stays dormant while a bundled copy exists (bundled providers win in find_provider_dir), so deleting the in-tree copy is what lets hermes_cli/memory_provider_migration.py install it for every home whose memory.provider is "mem0". The vendor copy keeps the provider name, mem0.json, the MEM0_* keys and the setup wizard. Also dropped: the hermes-agent[mem0] extra, its win-arm64 platform row and exclude-newer row, the pm/extras.py anchor (uv lock removes only mem0ai, posthog, qdrant-client and sqlalchemy), the mem0-specific doctor check (the generic check now names `hermes plugins install mem0`), and the tests that imported plugins.memory.mem0. Prose that lists the bundled set now names mem0 as a catalog provider. MEM0_* env hints and redaction stay: the catalog copy still reads them.
3870 lines
272 KiB
YAML
3870 lines
272 KiB
YAML
approval:
|
||
dangerous_header: "⚠️ COMANDO PERICOLOSO: {description}"
|
||
choose_long: " [o]una volta | [s]essione | [a]sempre | [d]nega"
|
||
choose_short: " [o]una volta | [s]essione | [d]nega"
|
||
prompt_long: " Scelta [o/s/a/D]: "
|
||
prompt_short: " Scelta [o/s/D]: "
|
||
choose_smart_deny: " [o]una volta | [d]nega"
|
||
prompt_smart_deny: " Scelta [o/D]: "
|
||
smart_deny_once_inputs: "o,once,volta,unavolta"
|
||
smart_deny_deny_inputs: "d,deny,n,nega"
|
||
timeout: " ⏱ Nessuna risposta entro {waited} — il comando non è stato eseguito. Richiedi di nuovo per riprovare, oppure aumenta il limite: hermes config set approvals.timeout {suggested}"
|
||
allowed_once: " ✓ Consentito una volta"
|
||
allowed_session: " ✓ Consentito per questa sessione"
|
||
allowed_always: " ✓ Aggiunto alla lista permessi permanente"
|
||
denied: " ✗ Negato"
|
||
cancelled: " ✗ Annullato"
|
||
blocklist_message: "Questo comando è nella lista di blocco incondizionata e non può essere approvato."
|
||
inputs:
|
||
approve: "approve,yes,ok,okay,confirm,y,approva,sì,si,conferma,s"
|
||
deny: "deny,no,reject,cancel,n,nega,rifiuta,annulla"
|
||
always: "always,approve always,always approve,sempre,approva sempre"
|
||
session: "session,approve session,session approve,sessione,approva sessione"
|
||
confirm_once: "approve,approve once,once,yes,ok,confirm,approva,approva una volta,una volta,sì,si,conferma"
|
||
confirm_always: "always,always approve,remember,sempre,approva sempre,ricorda"
|
||
confirm_cancel: "cancel,nevermind,no,deny,annulla,lascia stare,nega"
|
||
summary:
|
||
denied: "Hai negato {noun} — nessuna esecuzione."
|
||
timeout: "Nessuna risposta entro {window} — nessuna esecuzione per {noun}."
|
||
notify_failed: "Impossibile recapitare la richiesta di approvazione — nessuna esecuzione per {noun}."
|
||
cancelled: "La richiesta di approvazione è stata ritirata o non ti ha mai raggiunto — nessuna esecuzione per {noun}."
|
||
blocked: "In una sessione non presidiata non è possibile autorizzare {noun} — nessuna esecuzione."
|
||
default: "Nessuna esecuzione per {noun}."
|
||
noun:
|
||
command: "il comando"
|
||
code: "il codice"
|
||
action: "l'azione"
|
||
window:
|
||
hour_one: "{count} ora"
|
||
hour_other: "{count} ore"
|
||
minute_one: "{count} minuto"
|
||
minute_other: "{count} minuti"
|
||
second_one: "{count} secondo"
|
||
second_other: "{count} secondi"
|
||
gateway:
|
||
approval_expired: "⚠️ Approvazione scaduta (l'agente non è più in attesa). Chiedi all'agente di riprovare."
|
||
draining: "⏳ Attendo il completamento di {count} agente/i attivo/i prima di riavviare..."
|
||
goal_cleared: "✓ Obiettivo cancellato."
|
||
no_active_goal: "Nessun obiettivo attivo."
|
||
config_read_failed: "⚠️ Impossibile leggere config.yaml: {error}"
|
||
config_save_failed: "⚠️ Impossibile salvare la configurazione: {error}"
|
||
model:
|
||
error_prefix: "Errore: {error}"
|
||
switched: "Modello cambiato a `{model}`"
|
||
provider_label: "Provider: {provider}"
|
||
context_label: "Contesto: {tokens} token"
|
||
max_output_label: "Output massimo: {tokens} token"
|
||
cost_label: "Costo: {cost}"
|
||
capabilities_label: "Capacità: {capabilities}"
|
||
prompt_caching_enabled: "Caching dei prompt: attivo"
|
||
warning_prefix: "Avviso: {warning}"
|
||
saved_global: "Salvato in config.yaml (`--global`)"
|
||
session_only_hint: "_(solo per questa sessione — aggiungi `--global` per renderlo permanente)_"
|
||
current_label: "Attuale: `{model}` su {provider}"
|
||
current_tag: " (attuale)"
|
||
more_models_suffix: " (+{count} altri)"
|
||
usage_switch_model: "`/model <name>` — cambia modello"
|
||
usage_switch_provider: "`/model <name> --provider <slug>` — cambia provider"
|
||
usage_persist: "`/model <name> --global` — rendi permanente"
|
||
err_skew: "Questo gateway esegue il codice di {boot_rev}, ma il checkout su disco è ora {disk_rev}. Cambiare modello rischierebbe un crash per moduli obsoleti — riavvia il gateway per caricare il nuovo codice: hermes gateway restart"
|
||
err_switch_failed: "Passaggio al modello {model} non riuscito ({error}); resto su {current}."
|
||
err_config_not_updated: "config.yaml non aggiornato ({error})"
|
||
err_stale_override: "salvato in config.yaml, ma l'override obsoleto della sessione non è stato rimosso ({error})"
|
||
next_turn_only: " (solo per il prossimo turno — viene ripristinato dopo una risposta)"
|
||
switch_cancelled: "🟡 Cambio di modello annullato. Modello attuale invariato ({model})."
|
||
guard_confirm: "⚠️ **{title}**\n\n{message}\n\n_Fallback testuale: rispondi `{prefix}approve` per cambiare o `{prefix}cancel` per mantenere il modello attuale._"
|
||
agents:
|
||
header: "🤖 **Agenti e attività attivi**"
|
||
active_agents: "**Agenti attivi:** {count}"
|
||
this_chat: " · questa chat"
|
||
more: "... e {count} altri"
|
||
running_processes: "**Processi in background in esecuzione:** {count}"
|
||
async_jobs: "**Job asincroni del gateway:** {count}"
|
||
background_delegations: "**Delegazioni in background:** {count}"
|
||
none: "Nessun agente attivo o attività in esecuzione."
|
||
state_starting: "in avvio"
|
||
state_running: "in esecuzione"
|
||
no_progress: " · nessun progresso da {seconds}s"
|
||
quiet_for: " · silenzio da {seconds}s"
|
||
between_turns: "tra un turno e l'altro"
|
||
child_row: " - figlio {index}: {calls} chiamate API · {doing}"
|
||
active_ago: " · attivo {seconds}s fa"
|
||
approve:
|
||
no_pending: "Nessun comando in attesa di approvazione."
|
||
once_singular: "✅ Comando approvato. L'agente sta riprendendo..."
|
||
once_plural: "✅ Comandi approvati ({count} comandi). L'agente sta riprendendo..."
|
||
session_singular: "✅ Comando approvato (modello approvato per questa sessione). L'agente sta riprendendo..."
|
||
session_plural: "✅ Comandi approvati (modello approvato per questa sessione) ({count} comandi). L'agente sta riprendendo..."
|
||
always_singular: "✅ Comando approvato (modello approvato in modo permanente). L'agente sta riprendendo..."
|
||
always_plural: "✅ Comandi approvati (modello approvato in modo permanente) ({count} comandi). L'agente sta riprendendo..."
|
||
background:
|
||
usage: "Uso: /bg <prompt>\nEsempio: /bg Riassumi le principali notizie di HN di oggi\n\nEsegue il prompt in una sessione separata. Puoi continuare a chattare — il risultato apparirà qui al termine."
|
||
started: "🔄 Attività in background avviata: \"{preview}\"\nID attività: {task_id}\nPuoi continuare a chattare — i risultati appariranno al termine."
|
||
task_finished: "✅ Attività in background terminata"
|
||
task_failed: "❌ Attività in background non riuscita"
|
||
exit_code: "exit {code}"
|
||
last_output: ". Ultimo output:\n```\n{tail}\n```"
|
||
rerun_hint: "\nChiedimi di rieseguirla o di mostrarti il log completo."
|
||
no_credentials: "❌ L'attività in background non è partita perché non è configurato alcun accesso a un modello AI. Usa /login oppure esegui `hermes setup` sull'host."
|
||
complete_header: "✅ Attività in background completata\nPrompt: \"{preview}\"\n\n"
|
||
no_response: "(Nessuna risposta generata)"
|
||
failed: "❌ La tua attività in background \"{preview}\" si è interrotta prima di terminare. Invia di nuovo /bg per riprovare, oppure /agents per vedere cosa è ancora in esecuzione."
|
||
final_output: "{header}\n\nOutput finale:\n```\n{output}\n```"
|
||
still_running: "⏳ Attività in background ancora in esecuzione"
|
||
recent_output: "{header}\n\nOutput recente:\n```\n{output}\n```"
|
||
btw:
|
||
usage: "Uso: /btw <domanda>\nEsempio: /btw in quale file era quell'errore?\n\nRisponde a una rapida domanda su questa conversazione senza interromperla. Per un'attività in background indipendente usa /bg <prompt>."
|
||
no_history: "Nessuna conversazione ancora — invia la domanda come messaggio normale."
|
||
no_provider: "❌ Impossibile rispondere: nessuna credenziale del provider configurata."
|
||
started: "💬 Domanda a margine: \"{preview}\"\nRispondo da uno snapshot di questa conversazione — il lavoro attuale continua."
|
||
answer: "💬 /btw: \"{preview}\"\n\n{answer}"
|
||
failed: "❌ /btw non riuscito: \"{preview}\"\n{error}"
|
||
branch:
|
||
db_unavailable: "Database delle sessioni non disponibile."
|
||
no_conversation: "Nessuna conversazione da diramare — invia prima un messaggio."
|
||
create_failed: "Creazione del ramo non riuscita: {error}"
|
||
switch_failed: "Ramo creato ma il passaggio ad esso non è riuscito."
|
||
branched_one: "⑂ Diramato in **{title}** ({count} messaggio copiato)\nOriginale: `{parent}`\nRamo: `{new}`\nUsa `/resume` per tornare all'originale."
|
||
branched_many: "⑂ Diramato in **{title}** ({count} messaggi copiati)\nOriginale: `{parent}`\nRamo: `{new}`\nUsa `/resume` per tornare all'originale."
|
||
branched_thread_one: "⑂ Ramificato in **{title}** in un nuovo thread ({count} messaggio copiato)\nThread: {thread}\nOriginale: `{parent}` — questa chat resta su di esso\nRamo: `{new}`\nUsa `/branch --here` per ramificare in questa chat."
|
||
branched_thread_many: "⑂ Ramificato in **{title}** in un nuovo thread ({count} messaggi copiati)\nThread: {thread}\nOriginale: `{parent}` — questa chat resta su di esso\nRamo: `{new}`\nUsa `/branch --here` per ramificare in questa chat."
|
||
thread_fallback: "Non è stato possibile creare un thread qui, quindi il ramo ha sostituito la sessione di questa chat."
|
||
commands:
|
||
usage: "Uso: `/commands [page]`"
|
||
skill_header: "⚡ **Comandi skill**:"
|
||
default_desc: "Comando skill"
|
||
none: "Nessun comando disponibile."
|
||
header: "📚 **Comandi** ({total} totali, pagina {page}/{total_pages})"
|
||
nav_prev: "`/commands {page}` ← prec"
|
||
nav_next: "succ → `/commands {page}`"
|
||
out_of_range: "_(La pagina richiesta {requested} è fuori intervallo, mostrando la pagina {page}.)_"
|
||
compress:
|
||
not_enough: "Conversazione insufficiente da comprimere (servono almeno 4 messaggi)."
|
||
no_provider: "Nessun provider configurato — impossibile comprimere."
|
||
nothing_to_do: "Niente da comprimere per ora (la trascrizione è ancora tutta contesto protetto)."
|
||
aggressive_unsupported: "--aggressive non è supportato; usa '/compress here [N]' per conservare solo gli scambi recenti, oppure /undo per rimuovere i turni."
|
||
focus_line: "Focus: \"{topic}\""
|
||
summary_failed: "⚠️ Generazione del riepilogo non riuscita ({error}). {count} messaggio/i storico/i sono stati rimossi e sostituiti con un segnaposto; il contesto precedente non è più recuperabile. Considera di controllare la configurazione del modello auxiliary.compression."
|
||
aborted: "⚠️ Compressione interrotta ({error}). Nessun messaggio è stato eliminato — la conversazione è invariata. Esegui /compress per riprovare, /reset per una nuova sessione, o controlla la configurazione del modello auxiliary.compression."
|
||
aux_failed: "ℹ️ Il modello di compressione configurato `{model}` non è riuscito ({error}). Recupero effettuato usando il modello principale — il contesto è intatto — ma potresti voler controllare `auxiliary.compression.model` in config.yaml."
|
||
turnhold_deferred: "ℹ️ Compressione del contesto rinviata — il riepilogo è ancora in streaming. Si continua senza compressione per questo turno."
|
||
failed: "Compressione non riuscita: {error}"
|
||
hygiene_timeout: "⚠️ Accorciare la cronologia della conversazione ha richiesto troppo tempo, quindi ho saltato il passaggio e mantenuto tutto com'è. Esegui /compress per riprovare o /new per ricominciare da zero."
|
||
hygiene_timeout_doctor_hint: " Se il problema si ripete, esegui `hermes doctor` sull'host."
|
||
hygiene_failed: "⚠️ Accorciare la cronologia della conversazione non è riuscito, quindi ho mantenuto tutto com'è. Esegui /compress per riprovare o /new per ricominciare da zero. Se il problema si ripete, esegui `hermes doctor` sull'host."
|
||
codex_nothing: "🗜️ Niente da compattare: questa sessione usa il runtime app-server di Codex, il cui contesto vive in un thread gestito da Codex che esiste solo mentre l'agente è attivo. Invia prima un messaggio, poi /compress — oppure /reset per ricominciare da zero."
|
||
codex_compacted: "🗜️ Thread dell'app-server Codex compattato (thread/compact). La copia della trascrizione resta invariata per design — ora è l'app-server a contenere il contesto compattato."
|
||
codex_incomplete: "⚠️ La compattazione dell'app-server Codex non è stata completata — il thread è invariato. Controlla i log dell'app-server, riprova /compress oppure usa /reset per una sessione pulita."
|
||
debug:
|
||
upload_failed: "✗ Caricamento del report di debug non riuscito: {error}"
|
||
header: "**Report di debug caricato:**"
|
||
auto_delete: "⏱ I paste verranno eliminati automaticamente tra 6 ore."
|
||
full_logs_hint: "Per il caricamento dei log completi, usa `hermes debug share` dalla CLI."
|
||
share_hint: "Condividi questi link con il team Hermes per ricevere supporto."
|
||
report_label: "Report"
|
||
deny:
|
||
stale: "❌ Comando negato (l'approvazione era obsoleta)."
|
||
no_pending: "Nessun comando in attesa da negare."
|
||
denied_singular: "❌ Comando negato."
|
||
denied_plural: "❌ Comandi negati ({count} comandi)."
|
||
denied_reason_singular: "❌ Comando negato. Motivo inoltrato all'agente: \"{reason}\""
|
||
denied_reason_plural: "❌ Comandi negati ({count} comandi). Motivo inoltrato all'agente: \"{reason}\""
|
||
fast:
|
||
not_supported: "⚡ /fast è disponibile solo per i modelli OpenAI che supportano Priority Processing."
|
||
status: "⚡ Priority Processing\n\nModalità attuale: `{mode}`\n\n_Uso:_ `/fast <normal|fast|status>`"
|
||
unknown_arg: "⚠️ Argomento sconosciuto: `{arg}`\n\n**Opzioni valide:** normal, fast, status"
|
||
saved: "⚡ ✓ Priority Processing: **{label}** (salvato nella configurazione)\n_(verrà applicato al prossimo messaggio)_"
|
||
session_only: "⚡ ✓ Priority Processing: **{label}** (solo per questa sessione)"
|
||
label_fast: "VELOCE"
|
||
label_normal: "NORMALE"
|
||
status_fast: "veloce"
|
||
status_normal: "normale"
|
||
picker_title: "⚡ **Priority Processing**\n\nModalità attuale: `{mode}`\n\nScegli un\\'opzione:"
|
||
choice_fast: "fast — Priority Processing attivo"
|
||
choice_normal: "normal — elaborazione standard"
|
||
choice_auto: "auto — veloce nei primi secondi di ogni turno"
|
||
choice_cold: "cold — veloce solo nel primo turno di una sessione"
|
||
choice_ultrafast: "ultrafast — OpenAI Ultrafast (GPT-6 Astra, prezzo x6)"
|
||
ultrafast_not_supported: "⚡ Ultrafast è disponibile solo per GPT-6 Astra (modello attuale: `{model}`)."
|
||
footer:
|
||
status: "📎 Footer di runtime: **{state}**\nCampi: `{fields}`\nPiattaforma: `{platform}`"
|
||
usage: "Uso: `/footer [on|off|status]`"
|
||
saved: "📎 Footer di runtime: **{state}**{example}\n_(salvato globalmente — verrà applicato al prossimo messaggio)_"
|
||
example_line: "\nEsempio: `{preview}`"
|
||
state_on: "ATTIVO"
|
||
state_off: "DISATTIVO"
|
||
goal:
|
||
unavailable: "Gli obiettivi non sono disponibili in questa sessione."
|
||
no_goal_set: "Nessun obiettivo impostato."
|
||
paused: "⏸ Obiettivo in pausa: {goal}"
|
||
no_resume: "Nessun obiettivo da riprendere."
|
||
resumed: "▶ Obiettivo ripreso: {goal}\nContinuo subito — farò immediatamente il prossimo passo."
|
||
invalid: "Obiettivo non valido: {error}"
|
||
set: "⊙ Obiettivo impostato (budget di {budget} turni): {goal}\nContinuerò a lavorare finché l'obiettivo non sarà completato, lo metterai in pausa/lo cancellerai, oppure il budget sarà esaurito.\nControlli: /goal status · /goal pause · /goal resume · /goal clear"
|
||
gate_add_admin_only: "⛔ /goal gate add richiede un admin del gateway configurato esplicitamente (allow_admin_from per i DM, group_allow_admin_from per i gruppi)."
|
||
help:
|
||
header: "📖 **Comandi Hermes**\n"
|
||
skill_header: "\n⚡ **Comandi skill** ({count} attivi):"
|
||
more_use_commands: "\n... e altri {count}. Usa `/commands` per la lista paginata completa."
|
||
insights:
|
||
invalid_days: "Valore --days non valido: {value}"
|
||
error: "Errore nella generazione degli insight: {error}"
|
||
kanban:
|
||
error_prefix: "⚠ errore kanban: {error}"
|
||
subscribed_suffix: "(iscritto — riceverai notifica quando {task_id} verrà completato o si bloccherà)"
|
||
truncated_suffix: "… (troncato; usa `hermes kanban …` nel terminale per l'output completo)"
|
||
no_output: "(nessun 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} completato — {title}{handoff}"
|
||
review_requested: "👀 {head} pronto per la revisione — {title}{handoff}"
|
||
changes_default_reason: "il feedback del revisore richiede modifiche"
|
||
reviewer_suffix: " — revisore @{reviewer}"
|
||
implementer_suffix: " → implementatore @{implementer}"
|
||
changes_requested: "🛑 {board_tag}Kanban {task_id}: la revisione ha richiesto modifiche/BLOCK: {reason}{provenance}"
|
||
triage: "🛑 {head} inviato a TRIAGE — {why}{recurrences}{reason}"
|
||
triage_decision: "richiede una decisione umana"
|
||
triage_attention: "richiede l'attenzione dell'orchestrazione"
|
||
triage_recurrences: " (bloccato {value} volte per la stessa causa)"
|
||
reason_suffix: ": {value}"
|
||
failed_n_times: "è fallito {count} volte di seguito"
|
||
kept_failing: "ha continuato a fallire"
|
||
last_error: " (ultimo: {value})"
|
||
gave_up: "⛔ {head} è ora bloccato: {count}{last}. Correggi la causa, poi `hermes kanban unblock {task_id}` (oppure `hermes kanban reassign {task_id}`). Log: `hermes kanban log {task_id}`."
|
||
limit_minutes: "il suo limite di {minutes} minuti"
|
||
limit_generic: "il suo limite di tempo"
|
||
timed_out: "⏱ {head} ha superato {span} ed è stato interrotto; verrà ritentato automaticamente."
|
||
blocked: "⏸ {head} bloccato{reason}"
|
||
crashed: "✖ {head} — il suo worker si è arrestato in modo imprevisto; verrà ritentato automaticamente."
|
||
status: "🔄 {head} → {status}"
|
||
board_tag: "[{board}] "
|
||
assignee_tag: "@{assignee} "
|
||
head: "{board_tag}{assignee_tag}Kanban {task_id}"
|
||
personality:
|
||
none_configured: "Nessuna personalità configurata in `{path}/config.yaml`"
|
||
header: "🎭 **Personalità disponibili**\n"
|
||
none_option: "• `none` — (nessun overlay di personalità)"
|
||
item: "• `{name}` — {preview}"
|
||
usage: "\nUso: `/personality <name>`"
|
||
save_failed: "⚠️ Salvataggio del cambio di personalità non riuscito: {error}"
|
||
cleared: "🎭 Personalità cancellata — uso il comportamento base dell'agente.\n_(verrà applicato al prossimo messaggio)_"
|
||
set_to: "🎭 Personalità impostata su **{name}**\n_(verrà applicato al prossimo messaggio)_"
|
||
unknown: "Personalità sconosciuta: `{name}`\n\nDisponibili: {available}"
|
||
err_config_write: "scrittura della configurazione non riuscita"
|
||
profile:
|
||
header: "👤 **Profilo:** `{profile}`"
|
||
home: "📂 **Home:** `{home}`"
|
||
plain: "Profilo: {profile}\nHome: {home}"
|
||
reasoning:
|
||
level_default: "medio (predefinito)"
|
||
level_disabled: "nessuno (disattivato)"
|
||
scope_session: "override di sessione"
|
||
scope_global: "configurazione globale"
|
||
status: "🧠 **Impostazioni di reasoning**\n\n**Sforzo:** `{level}`\n**Ambito:** {scope}\n**Visualizzazione:** {display}\n\n_Uso:_ `/reasoning <none|minimal|low|medium|high|xhigh|max|ultra|reset|show|hide> [--global]`"
|
||
display_on: "attivo ✓"
|
||
display_off: "disattivato"
|
||
display_set_on: "🧠 ✓ Visualizzazione del reasoning: **ATTIVA**\nIl pensiero del modello verrà mostrato prima di ogni risposta su **{platform}**."
|
||
display_set_off: "🧠 ✓ Visualizzazione del reasoning: **DISATTIVATA** per **{platform}**"
|
||
reset_global_unsupported: "⚠️ `/reasoning reset --global` non è supportato. Usa `/reasoning <level> --global` per cambiare il valore predefinito globale."
|
||
reset_done: "🧠 ✓ Override di reasoning della sessione cancellato; ripristino della configurazione globale."
|
||
unknown_arg: "⚠️ Argomento sconosciuto: `{arg}`\n\n**Livelli validi:** none, minimal, low, medium, high, xhigh, max, ultra\n**Visualizzazione:** show, hide\n**Persistenza:** aggiungi `--global` per salvare oltre questa sessione"
|
||
picker_title: "🧠 **Impostazioni di reasoning**\n\n**Sforzo:** `{level}`\n**Ambito:** {scope}\n**Visualizzazione:** {display}\n\nScegli un\\'opzione:"
|
||
choice_none: "none — disattiva il reasoning"
|
||
choice_reset: "reset — cancella l'override di sessione"
|
||
choice_show: "mostra il reasoning nelle risposte"
|
||
choice_hide: "nascondi il reasoning dalle risposte"
|
||
set_global: "🧠 ✓ Sforzo di reasoning impostato su `{effort}` (salvato nella configurazione)\n_(verrà applicato al prossimo messaggio)_"
|
||
set_global_save_failed: "🧠 ✓ Sforzo di reasoning impostato su `{effort}` (solo per questa sessione — salvataggio della configurazione non riuscito)\n_(verrà applicato al prossimo messaggio)_"
|
||
set_session: "🧠 ✓ Sforzo di reasoning impostato su `{effort}` (solo per questa sessione — aggiungi `--global` per renderlo permanente)\n_(verrà applicato al prossimo messaggio)_"
|
||
quote_label_discord: "-# 💭 Ragionamento"
|
||
quote_label_md: "> 💭 **Ragionamento:**"
|
||
more_lines: "\n_... ({count} altre righe)_"
|
||
block: "💭 **Ragionamento:**\n```\n{reasoning}\n```\n\n{response}"
|
||
reload_mcp:
|
||
cancelled: "🟡 /reload-mcp annullato. Strumenti MCP invariati."
|
||
always_followup: "ℹ️ Le future chiamate a `/reload-mcp` verranno eseguite senza conferma. Riattiva tramite `approvals.mcp_reload_confirm: true` in config.yaml."
|
||
confirm_prompt: "⚠️ **Conferma /reload-mcp**\n\nIl ricaricamento dei server MCP ricostruisce il set di strumenti per questa sessione e **invalida la cache dei prompt del provider** — il prossimo messaggio invierà nuovamente tutti i token di input. Sui modelli a contesto lungo o ad alto reasoning questo può essere costoso.\n\nScegli:\n• **Approva una volta** — ricarica ora\n• **Approva sempre** — ricarica ora e silenzia questa richiesta in modo permanente\n• **Annulla** — lascia gli strumenti MCP invariati\n\n_Alternativa testuale: rispondi `/approve`, `/always`, oppure `/cancel`._"
|
||
header: "🔄 **Server MCP ricaricati**\n"
|
||
reconnected: "♻️ Riconnessi: {names}"
|
||
added: "➕ Aggiunti: {names}"
|
||
removed: "➖ Rimossi: {names}"
|
||
none_connected: "Nessun server MCP connesso."
|
||
tools_available: "\n🔧 {tools} strumento/i disponibile/i da {servers} server"
|
||
failed: "❌ Ricaricamento MCP non riuscito: {error}"
|
||
reload_skills:
|
||
header: "🔄 **Skill ricaricate**\n"
|
||
no_new: "Nessuna nuova skill rilevata."
|
||
total: "\n📚 {count} skill disponibili"
|
||
added_header: "➕ **Skill aggiunte:**"
|
||
removed_header: "➖ **Skill rimosse:**"
|
||
item_with_desc: " - {name}: {desc}"
|
||
item_no_desc: " - {name}"
|
||
failed: "❌ Ricaricamento delle skill non riuscito: {error}"
|
||
reset:
|
||
header_default: "✨ Sessione reimpostata! Si ricomincia da zero."
|
||
header_new: "✨ Nuova sessione avviata!"
|
||
header_titled: "✨ Nuova sessione avviata: {title}"
|
||
title_rejected: "\n⚠️ Titolo rifiutato: {error}"
|
||
title_error_untitled: "\n⚠️ {error} — sessione avviata senza titolo."
|
||
title_empty_untitled: "\n⚠️ Il titolo è vuoto dopo la pulizia — sessione avviata senza titolo."
|
||
tip: "\n✦ Suggerimento: {tip}"
|
||
restart:
|
||
in_progress: "⏳ Riavvio del gateway già in corso..."
|
||
restarting: "♻ Riavvio del gateway. Se non ricevi una notifica entro 60 secondi, riavvia dalla console con `hermes gateway restart`."
|
||
resume:
|
||
db_unavailable: "Database delle sessioni non disponibile."
|
||
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: "⚠️ /resume Matrix bloccato: questa sessione con nome non ha una stanza di origine registrata, quindi per impostazione predefinita Hermes non la riprenderà nella stanza attuale. Usa `/resume --cross-room {name}` se vuoi davvero superare i confini della stanza."
|
||
matrix_blocked_other_room: "⚠️ /resume Matrix bloccato: quella sessione appartiene a un'altra stanza Matrix ({room}). Usa `/resume --cross-room {name}` se vuoi davvero riprenderla qui."
|
||
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 bloccato: '**{name}**' appartiene a un altro utente o a un'altra chat. Puoi riprendere solo le sessioni di questa chat."
|
||
no_named_sessions: "Nessuna sessione con nome trovata.\nUsa `/title My Session` per dare un nome alla sessione attuale, poi `/resume My Session` per tornare a essa in seguito."
|
||
all_requires_admin: "_Nota: `--all` (elenco tra chat) richiede un amministratore configurato; vengono mostrate solo le sessioni di questa chat._"
|
||
list_header: "📋 **Sessioni con nome**\n"
|
||
list_item: "• **{title}**{preview_part}"
|
||
list_item_numbered: "{index}. **{title}**{preview_part}"
|
||
list_preview_suffix: " — _{preview}_"
|
||
list_footer: "\nUso: `/resume <session name>`"
|
||
list_footer_numbered: "\nUso: `/resume <nome sessione>` o `/resume <numero>` (es. `/resume 1` per la più recente)"
|
||
list_failed: "Impossibile elencare le sessioni: {error}"
|
||
out_of_range: "L'indice di ripresa {index} è fuori intervallo.\nUsa `/resume` senza argomenti per vedere le sessioni disponibili."
|
||
not_found: "Nessuna sessione trovata corrispondente a '**{name}**'.\nUsa `/resume` senza argomenti per vedere le sessioni disponibili."
|
||
already_on: "📌 Già nella sessione **{name}**."
|
||
switch_failed: "Cambio di sessione non riuscito."
|
||
resumed_one: "↻ Sessione **{title}** ripresa ({count} messaggio). Conversazione ripristinata."
|
||
resumed_many: "↻ Sessione **{title}** ripresa ({count} messaggi). Conversazione ripristinata."
|
||
resumed_no_count: "↻ Sessione **{title}** ripresa. Conversazione ripristinata."
|
||
msg_count_one: " ({count} messaggio)"
|
||
msg_count_other: " ({count} messaggi)"
|
||
retry:
|
||
no_previous: "Nessun messaggio precedente da ripetere."
|
||
unsafe: "Impossibile riprovare quel messaggio in sicurezza: {error}"
|
||
failed_unchanged: "Nuovo tentativo non riuscito; la trascrizione non è stata modificata."
|
||
rollback:
|
||
not_enabled: "I checkpoint non sono abilitati.\nAbilitali in config.yaml:\n```\ncheckpoints:\n enabled: true\n```"
|
||
none_found: "Nessun checkpoint trovato per {cwd}"
|
||
invalid_number: "Numero di checkpoint non valido. Usa 1-{max}."
|
||
restored: "✅ Ripristinato al checkpoint {hash}: {reason}\nUno snapshot pre-rollback è stato salvato automaticamente."
|
||
kept_user_edits: "↷ Le tue modifiche manuali sono state conservate: {files}\nUsa /rollback <N> --all per ripristinare anche quelle."
|
||
kept_oversize: "↷ Conservato (troppo grande per i checkpoint, nessuna copia salvata a cui tornare): {files}"
|
||
failed_deletes: "⚠️ Impossibile rimuovere (lasciato al suo posto): {files}"
|
||
restore_failed: "❌ {error}"
|
||
diff:
|
||
not_enabled: "I checkpoint non sono abilitati, quindi non esiste una baseline di sessione.\nAbilitali in config.yaml:\n```\ncheckpoints:\n enabled: true\n```\nIl /diff semplice funziona comunque — usa git direttamente."
|
||
no_changes: "Nessuna modifica."
|
||
failed: "{error}"
|
||
err_default: "Impossibile generare il diff"
|
||
more_untracked: "\n... e altri {count}"
|
||
untracked_label: "**Non tracciati:**"
|
||
truncated_note: "\n... (troncato — {lines} righe in totale; usa /diff --stat per un riepilogo)"
|
||
set_home:
|
||
save_failed: "Salvataggio del canale home non riuscito: {error}"
|
||
success: "✅ Canale home impostato su **{name}** (ID: {chat_id}).\nI cron job e i messaggi cross-platform verranno consegnati qui."
|
||
err_missing_platform: "Piattaforma logica mancante"
|
||
err_relay_unauthenticated: "Il relay non autentica questa destinazione home logica"
|
||
context:
|
||
header: "🧠 **Finestra di contesto**"
|
||
model: "Modello: `{model}`"
|
||
window: "Finestra: {total} token"
|
||
in_use: "In uso: {used} / {total} ({pct}%)"
|
||
bar: "{bar}"
|
||
headroom: "Margine fino al limite: {headroom} token"
|
||
threshold: "Compressione automatica a: {threshold} ({threshold_pct}%) — mancano {to_go}"
|
||
over_threshold: "⚠️ **Oltre la soglia di compressione automatica ({threshold}, {threshold_pct}%)**"
|
||
compressions: "Compressioni in questa sessione: {count}"
|
||
last_savings: "Ultima compressione ha liberato: {savings}% del contesto"
|
||
totals_header: "Totali della sessione (cumulativi su {calls} chiamate API)"
|
||
totals_line: "Input {input} · Output {output} · Ragionamento {reasoning}"
|
||
total_billed: "Totale fatturato: {total}"
|
||
throughput_note: "_Traffico complessivo, non dimensione del contesto — ogni chiamata reinvia l'intera finestra indicata sopra._"
|
||
estimated: "Contesto stimato: ~{count} token su {messages} messaggi"
|
||
detail_after_first: "_(Le statistiche complete di compressione e traffico saranno disponibili dopo la prima risposta dell'agente)_"
|
||
no_data: "Nessun dato sul contesto disponibile per ora. Invia un messaggio per avviare una sessione."
|
||
category:
|
||
system_prompt: "Prompt di sistema"
|
||
tool_definitions: "Definizioni degli strumenti"
|
||
rules: "Regole"
|
||
skills: "Skill"
|
||
mcp: "MCP"
|
||
subagent_definitions: "Definizioni dei subagenti"
|
||
memory: "Memoria"
|
||
conversation: "Conversazione"
|
||
category_header: "Utilizzo stimato per categoria"
|
||
no_data_yet: " (ancora nessun dato — invia prima un messaggio)"
|
||
free_space: "Spazio libero"
|
||
category_row: "{glyph} {label} ~{tokens} token ~{pct}%"
|
||
toolset_row: " {toolset} {count} strumenti ~{tokens} token"
|
||
not_available: "n/d"
|
||
skill_row: " {name} indice ~{index_tokens} SKILL.md {md_tokens} token"
|
||
and_more: " … e altri {count}"
|
||
toolsets_title: "Toolset per costo dello schema (dal più grande)"
|
||
skills_title: "Skill per costo (indice = sempre attivo; SKILL.md = costo quando caricata)"
|
||
window_line: "Finestra di contesto: {mark}{used} / {max} token ({mark}{pct}%)"
|
||
source:
|
||
local_estimate: "stima locale"
|
||
provider_usage: "utilizzo del provider"
|
||
provider_usage_plus_estimate: "utilizzo del provider + stima dei nuovi messaggi"
|
||
source_line: "Fonte: {source}; i conteggi per categoria sono stime locali."
|
||
hint_all: "Usa /context all per i costi per skill e per toolset."
|
||
status:
|
||
header: "📊 **Stato del Gateway Hermes**"
|
||
matrix_scope_header: "**Ambito 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 sessione:** `{session_id}`"
|
||
title: "**Titolo:** {title}"
|
||
created: "**Creata:** {timestamp}"
|
||
last_activity: "**Ultima attività:** {timestamp}"
|
||
model: "**Modello:** `{model}`"
|
||
model_provider: "**Modello:** `{model}` ({provider})"
|
||
free_tier: "Nous · piano gratuito · nous/welcome · /login per accedere"
|
||
context: "**Contesto:** {used} / {total} ({pct}%)"
|
||
context_used: "**Contesto:** ~{used} token"
|
||
tokens: "**Token fatturati in totale:** {tokens} _(non è la dimensione attuale del contesto; usa `/context`)_"
|
||
agent_running: "**Agente in esecuzione:** {state}"
|
||
state_yes: "Sì ⚡"
|
||
state_no: "No"
|
||
queued: "**Follow-up in coda:** {count}"
|
||
platforms: "**Piattaforme connesse:** {platforms}"
|
||
stop:
|
||
stopped_pending: "⚡ Fermato. L'agente non era ancora partito — puoi continuare questa sessione."
|
||
stopped: "⚡ Fermato. Puoi continuare questa sessione."
|
||
no_active: "Nessuna attività attiva da fermare."
|
||
force_stopped_pending: "⚡ Interruzione forzata. L'agente si stava ancora avviando — sessione sbloccata."
|
||
title:
|
||
db_unavailable: "Database delle sessioni non disponibile."
|
||
warn_prefix: "⚠️ {error}"
|
||
empty_after_clean: "⚠️ Il titolo è vuoto dopo la pulizia. Usa caratteri stampabili."
|
||
set_to: "✏️ Titolo della sessione impostato: **{title}**"
|
||
not_found: "Sessione non trovata nel database."
|
||
current_with_title: "📌 Sessione: `{session_id}`\nTitolo: **{title}**"
|
||
current_no_title: "📌 Sessione: `{session_id}`\nNessun titolo impostato. Uso: `/title My Session Name`"
|
||
topic:
|
||
not_telegram_dm: "Il comando /topic è disponibile solo nelle chat private di Telegram."
|
||
no_session_db: "Database delle sessioni non disponibile."
|
||
unauthorized: "Non sei autorizzato a usare /topic su questo bot."
|
||
restore_needs_topic: "Per ripristinare una sessione, crea o apri prima un topic Telegram, poi invia /topic <session-id> all'interno di quel topic. Per creare un nuovo topic, apri All Messages e invia un messaggio qualsiasi lì."
|
||
topics_disabled: "I topic Telegram non sono ancora abilitati per questo bot.\n\nCome abilitarli:\n1. Apri @BotFather.\n2. Scegli il tuo bot.\n3. Apri Bot Settings → Threads Settings.\n4. Attiva la modalità Threaded e assicurati che gli utenti possano creare nuovi thread.\n\nPoi invia di nuovo /topic."
|
||
topics_user_disallowed: "I topic Telegram sono abilitati, ma agli utenti non è permesso crearne.\n\nApri @BotFather → scegli il tuo bot → Bot Settings → Threads Settings, poi disattiva 'Disallow users to create new threads'.\n\nPoi invia di nuovo /topic."
|
||
enable_failed: "Abilitazione della modalità topic Telegram non riuscita: {error}"
|
||
bound_status: "Questo topic è collegato a:\nSessione: {label}\nID: {session_id}\n\nUsa /new per sostituire questo topic con una nuova sessione.\nPer lavorare in parallelo, apri All Messages e invia un messaggio lì per creare un altro topic."
|
||
thread_ready: "I topic multi-sessione di Telegram sono abilitati.\n\nQuesto topic verrà usato come una sessione Hermes indipendente. Usa /new per sostituire la sessione corrente di questo topic. Per lavorare in parallelo, apri All Messages e invia un messaggio lì per creare un altro topic."
|
||
untitled_session: "Sessione senza titolo"
|
||
restore_step_1: "1. Crea o apri un topic. Per crearne uno nuovo, apri Tutti i messaggi e invia lì un messaggio qualsiasi."
|
||
restore_step_2: "2. Invia /topic <session-id> dentro quel topic."
|
||
default_title: "Chat Hermes"
|
||
root_lobby: "Questa chat principale è riservata ai comandi di sistema.\n\nPer avviare una nuova chat Hermes, apri il topic Tutti i messaggi in alto nell'interfaccia del bot e invia lì un messaggio qualsiasi. Telegram creerà un nuovo topic per quel messaggio; ogni topic funziona come sessione Hermes indipendente."
|
||
root_new: "Per avviare una nuova chat Hermes parallela, apri il topic Tutti i messaggi in alto nell'interfaccia del bot e invia lì un messaggio qualsiasi. Telegram creerà un nuovo topic per quel messaggio.\n\nOgni topic è una sessione Hermes indipendente. Usa /new dentro un topic esistente solo se vuoi sostituire la sessione attuale di quel topic."
|
||
new_header: "Avviata una nuova sessione Hermes in questo topic.\n\nSuggerimento: per lavorare in parallelo, apri Tutti i messaggi e invia lì un messaggio per creare un topic separato, invece di usare /new qui. /new sostituisce la sessione collegata al topic attuale."
|
||
help: "/topic — attiva la modalità DM multi-sessione (un bot, tante chat parallele)\n\nUtilizzo:\n /topic Attiva la modalità topic, o mostra lo stato se è già attiva\n /topic help Mostra questo messaggio\n /topic off Disattiva la modalità topic e rimuove i collegamenti ai topic\n /topic <id> Dentro un topic: ripristina una sessione precedente tramite ID\n\nCome funziona:\n1. Esegui /topic una volta in questa DM — Hermes verifica che i Threads\n Settings di BotFather siano attivi e abilita la modalità multi-sessione.\n2. Tocca Tutti i messaggi in alto nel bot e invia un messaggio qualsiasi.\n Telegram crea un nuovo topic per quel messaggio; ogni topic è una\n sessione Hermes indipendente (cronologia e contesto nuovi).\n3. La DM principale diventa una lobby di sistema — invia lì /topic, /status,\n /help, /usage. I prompt normali vanno in un topic.\n4. /new dentro un topic reimposta solo la sessione di quel topic.\n5. /topic <id> dentro un topic vi ripristina una sessione precedente."
|
||
system_topic_name: "Sistema"
|
||
system_topic_intro: "Topic di sistema per comandi e stato di Hermes."
|
||
setup_image_caption: "BotFather → Bot Settings → Threads Settings"
|
||
no_chat_id: "Impossibile determinare l'ID della chat."
|
||
mode_not_enabled: "La modalità topic multi-sessione non è attualmente attiva per questa chat."
|
||
disable_failed: "Impossibile disattivare la modalità topic: {error}"
|
||
mode_disabled: "La modalità topic multi-sessione è ora OFF per questa chat.\n\nI topic esistenti in Telegram non vengono rimossi — semplicemente non saranno più gestiti come sessioni indipendenti. La DM principale torna a funzionare come normale chat Hermes. Esegui /topic per riattivarla in seguito."
|
||
status_enabled: "I topic multi-sessione di Telegram sono attivi."
|
||
status_how_to: "Per creare una nuova chat Hermes, apri Tutti i messaggi in alto nell'interfaccia del bot e invia lì un messaggio qualsiasi. Telegram creerà un nuovo topic per quel messaggio."
|
||
previous_unlinked: "Sessioni precedenti non collegate:"
|
||
restore_one: "Per ripristinarne una:"
|
||
restore_example: "Esempio: invia /topic {session_id} dentro un topic."
|
||
no_unlinked: "Nessuna sessione Telegram precedente non collegata trovata."
|
||
restore_later: "Per ripristinare una sessione precedente in seguito:"
|
||
session_not_found: "Sessione non trovata: {session_id}"
|
||
not_telegram_session: "Quella sessione non è una sessione Telegram e non può essere ripristinata in questo topic."
|
||
not_your_session: "Quella sessione non appartiene a questo utente Telegram."
|
||
already_linked: "Quella sessione è già collegata a un altro topic Telegram."
|
||
restored: "Sessione ripristinata: {title}"
|
||
restored_last_message: "\n\nUltimo messaggio di Hermes:\n{text}"
|
||
undo:
|
||
nothing: "Niente da annullare."
|
||
removed: "↩️ Annullati {turns} turno/i ({count} messaggio/i).\nSalvato in: \"{preview}\"\nCopia/modifica il testo qui sopra e invialo per ripartire da qui."
|
||
invalid_count: "Conteggio non valido \"{arg}\" — usa /undo o /undo N."
|
||
update:
|
||
platform_not_messaging: "✗ /update è disponibile solo dalle piattaforme di messaggistica. Esegui `hermes update` dal terminale."
|
||
not_git_repo: "✗ Non è un repository git — impossibile aggiornare."
|
||
hermes_cmd_not_found: "✗ Impossibile localizzare il comando `hermes`. Hermes è in esecuzione, ma il comando di aggiornamento non ha trovato l'eseguibile nel PATH o tramite l'interprete Python attuale. Prova a eseguire `hermes update` manualmente nel terminale."
|
||
start_failed: "✗ Avvio dell'aggiornamento non riuscito: {error}"
|
||
starting: "☤ Avvio dell'aggiornamento di Hermes… mostrerò qui i progressi in streaming."
|
||
reply_failed: "✗ Impossibile inviare la risposta al processo di aggiornamento: {error}"
|
||
reply_sent: "✓ Inviato `{label}` al processo di aggiornamento."
|
||
failed_notice: "❌ Aggiornamento di Hermes non riuscito; la versione precedente è ancora in esecuzione. Esegui `hermes update` sull'host per vedere l'errore completo, oppure riprova /update più tardi."
|
||
prompt_default: " (predefinito: {default})"
|
||
prompt: "☤ **L'aggiornamento richiede il tuo input:**\n\n{prompt}{default_hint}\n\nRispondi `{prefix}approve` (sì) o `{prefix}deny` (no), oppure digita direttamente la tua risposta."
|
||
finished: "✅ Aggiornamento di Hermes completato."
|
||
timed_out: "❌ Aggiornamento di Hermes scaduto dopo 30 minuti."
|
||
finished_success: "✅ Aggiornamento di Hermes completato con successo."
|
||
last_lines: "{msg}\n\nUltime righe:\n```\n{tail}\n```"
|
||
managed_action: "aggiornare Hermes Agent"
|
||
not_applicable: "✗ `hermes update` non si applica a questa installazione ({method}).\nAggiorna con: {command}"
|
||
usage:
|
||
rate_limits: "⏱️ **Limiti di frequenza:** {state}"
|
||
header_session: "📊 **Uso dei token della sessione**"
|
||
label_model: "Modello: `{model}`"
|
||
label_input_tokens: "Token di input: {count}"
|
||
label_cache_read: "Token di lettura cache: {count}"
|
||
label_cache_write: "Token di scrittura cache: {count}"
|
||
label_output_tokens: "Token di output: {count}"
|
||
label_total: "Totale: {count}"
|
||
label_api_calls: "Chiamate API: {count}"
|
||
label_cost: "Costo: {prefix}${amount}"
|
||
label_cost_included: "Costo: incluso"
|
||
label_context: "Contesto: {used} / {total} ({pct}%)"
|
||
label_compressions: "Compressioni: {count}"
|
||
breakdown_header: "🧩 **Suddivisione del contesto** _(stimata)_"
|
||
breakdown_line: "• {label}: ~{count} ({pct}%)"
|
||
breakdown_cat_system_prompt: "Prompt di sistema"
|
||
breakdown_cat_tool_definitions: "Definizioni degli strumenti"
|
||
breakdown_cat_rules: "Regole"
|
||
breakdown_cat_skills: "Competenze"
|
||
breakdown_cat_mcp: "MCP"
|
||
breakdown_cat_subagent_definitions: "Definizioni dei subagenti"
|
||
breakdown_cat_memory: "Memoria"
|
||
breakdown_cat_conversation: "Conversazione"
|
||
header_session_info: "📊 **Info sessione**"
|
||
label_messages: "Messaggi: {count}"
|
||
label_estimated_context: "Contesto stimato: ~{count} token"
|
||
detailed_after_first: "_(L'uso dettagliato sarà disponibile dopo la prima risposta dell'agente)_"
|
||
no_data: "Nessun dato di utilizzo disponibile per questa sessione."
|
||
unknown_subcommand: "Sottocomando /usage sconosciuto: `{args}`. Prova `/usage` o `/usage reset [--force]`."
|
||
reset_wrong_provider: "I reset dei limiti accumulati sono disponibili solo con il provider openai-codex. Cambia prima con `/model`."
|
||
credits:
|
||
not_logged_in: "Non hai effettuato l'accesso a Nous Portal. Accedi per vedere il saldo dei crediti e ricaricare."
|
||
verbose:
|
||
not_enabled: "Il comando `/verbose` non è abilitato per le piattaforme di messaggistica.\n\nAbilitalo in `config.yaml`:\n```yaml\ndisplay:\n tool_progress_command: true\n```"
|
||
mode_off: "⚙️ Progresso strumenti: **OFF** — nessuna attività degli strumenti mostrata."
|
||
mode_new: "⚙️ Progresso strumenti: **NEW** — mostrato quando lo strumento cambia (lunghezza anteprima: `display.tool_preview_length`, predefinito 40)."
|
||
mode_all: "⚙️ Progresso strumenti: **ALL** — ogni chiamata a uno strumento viene mostrata (lunghezza anteprima: `display.tool_preview_length`, predefinito 40)."
|
||
mode_verbose: "⚙️ Progresso strumenti: **VERBOSE** — ogni chiamata a uno strumento con argomenti completi."
|
||
mode_log: "⚙️ Progresso strumenti: **LOG** — silenzioso in chat; le chiamate agli strumenti vengono scritte in ~/.hermes/logs/tool_calls.log."
|
||
saved_suffix: "_(salvato per **{platform}** — verrà applicato al prossimo messaggio)_"
|
||
save_failed: "_(impossibile salvare nella configurazione: {error})_"
|
||
voice:
|
||
enabled_voice_only: "Modalità vocale attivata.\nRisponderò con la voce quando invii messaggi vocali.\nUsa /voice tts per ricevere risposte vocali per tutti i messaggi."
|
||
disabled_text: "Modalità vocale disattivata. Risposte solo testuali."
|
||
tts_enabled: "Auto-TTS attivato.\nTutte le risposte includeranno un messaggio vocale."
|
||
status_mode: "Modalità vocale: {label}"
|
||
status_channel: "Canale vocale: #{channel}"
|
||
status_participants: "Partecipanti: {count}"
|
||
status_member: " - {name}{status}"
|
||
speaking: " (sta parlando)"
|
||
enabled_short: "Modalità vocale attivata."
|
||
disabled_short: "Modalità vocale disattivata."
|
||
label_off: "Off (solo testo)"
|
||
label_voice_only: "On (risposta vocale ai messaggi vocali)"
|
||
label_all: "TTS (risposta vocale a tutti i messaggi)"
|
||
help: "{toggle}\n\n**Come funziona /voice**\n• `/voice on` — risposta vocale quando invii un messaggio vocale\n• `/voice tts` — risposta vocale a *ogni* messaggio\n• `/voice off` — torna alle risposte solo testo\n• `/voice status` — mostra la modalità attuale\n• `/voice` (senza argomento) — alterna rapidamente tra attivo e disattivo{channels}"
|
||
help_channels: "\n\n**Canali vocali dal vivo (Discord)**\n• Entra prima in un canale vocale, poi `/voice channel` — mi unisco, ascolto e parlo le mie risposte\n• `/voice leave` — disconnetti dal canale vocale"
|
||
transcript_echo_short: "🎙️ \"{text}\""
|
||
channel_unsupported: "I canali vocali non sono supportati su questa piattaforma."
|
||
channel_guild_only: "Questo comando funziona solo in un server Discord."
|
||
channel_not_in_voice: "Devi prima entrare in un canale vocale."
|
||
channel_join_failed: "Impossibile entrare nel canale vocale: {error}"
|
||
channel_deps_missing: "Mancano le dipendenze vocali (PyNaCl / davey). Esegui: `{hint}`"
|
||
channel_join_permissions: "Impossibile entrare nel canale vocale. Controlla i permessi del bot (Connetti + Parla)."
|
||
channel_joined: "Sono entrato nel canale vocale **{name}**.\nPronuncerò le mie risposte e ti ascolterò. Usa /voice leave per disconnetterti."
|
||
channel_not_joined: "Non sono in un canale vocale."
|
||
channel_left: "Ho lasciato il canale vocale."
|
||
transcript_echo: "**[Voce]** <@{user}>: {text}"
|
||
yolo:
|
||
disabled: "⚠️ Modalità YOLO **OFF** per questa sessione — i comandi pericolosi richiederanno approvazione."
|
||
enabled: "⚡ Modalità YOLO **ON** per questa sessione — tutti i comandi auto-approvati. Usa con cautela."
|
||
shared:
|
||
session_db_unavailable: "Database delle sessioni non disponibile."
|
||
session_db_unavailable_prefix: "Database delle sessioni non disponibile"
|
||
session_not_found: "Sessione non trovata nel database."
|
||
warn_passthrough: "⚠️ {error}"
|
||
unknown_error: "errore sconosciuto"
|
||
error_prefix: "Errore: {error}"
|
||
history_unreadable: "⚠️ Al momento non riesco a leggere la cronologia di questa conversazione (i tuoi messaggi precedenti esistono ma non possono essere caricati). Esegui `hermes doctor --fix` sull'host, oppure usa /new per ricominciare da zero."
|
||
agent_running_retry_later: "L'agente è in esecuzione — attendi la fine del turno, poi usa /{command}."
|
||
none_marker: "(nessuno)"
|
||
none_value: "nessuno"
|
||
unknown_value: "sconosciuto"
|
||
exec_approval:
|
||
header: "Hermes vuole eseguire un comando che richiede il tuo OK"
|
||
reason_label: "Motivo della segnalazione"
|
||
default_reason: "comando pericoloso"
|
||
smart_deny_line: "DENY intelligente: l'override del proprietario vale solo per questa singola operazione."
|
||
smart_deny_heading: "⚠️ **DENY intelligente — override del proprietario per una sola operazione:**"
|
||
timed_out_notice: "⌛ Approvazione scaduta dopo {window} — il comando NON è stato eseguito. Chiedimi di riprovare se lo vuoi ancora, oppure aumenta approvals.timeout in config.yaml."
|
||
timed_out_card_body: "{notice}\n```\n{command}\n```"
|
||
action_once: "Consenti una volta"
|
||
action_session: "Consenti per la sessione"
|
||
action_always: "Consenti sempre"
|
||
action_deny: "Nega"
|
||
deadline: "Se non rispondi entro {window} NON verrà eseguito."
|
||
text_choice_once: "Rispondi `{prefix}approve` per eseguirlo una volta"
|
||
text_choice_session: "`{prefix}approve session` per consentire questo pattern per il resto della sessione"
|
||
text_choice_always: "`{prefix}approve always` per consentirlo in modo permanente"
|
||
text_choice_deny: "`{prefix}deny` per annullare"
|
||
text_choice_joiner: ", "
|
||
text_choice_last: ", oppure {choice}.\n"
|
||
text_body: "{heading}\n```\n{command}\n```\n{reason_label}: {reason}\n\n"
|
||
notify:
|
||
media_kind:
|
||
audio: "audio"
|
||
video: "video"
|
||
file: "file"
|
||
image: "immagine"
|
||
media_delivery_failed: "⚠️ Impossibile recapitare l'allegato {kind}."
|
||
media_delivery_failed_with_name: "⚠️ Impossibile recapitare l'allegato {kind} ({file_name})."
|
||
delivery_failed_retry: "⚠️ Invio del messaggio non riuscito dopo diversi tentativi. Riprova — la tua richiesta è stata elaborata ma la risposta non è stata inviata."
|
||
plain_fallback_prefix: "(Formattazione della risposta non riuscita, testo semplice:)\n\n{content}"
|
||
turn_error_no_details: "nessun dettaglio disponibile"
|
||
turn_error_detailed: "Mi dispiace, si è verificato un errore ({error_type}).\n{error_detail}\nRiprova oppure usa /reset per avviare una nuova sessione."
|
||
turn_error: "Mi dispiace, si è verificato un errore."
|
||
context_injection_refused: "Iniezione di contesto rifiutata."
|
||
no_home_channel: "📬 Nessun canale principale impostato per {platform}. Il canale principale è dove Hermes recapita i risultati dei cron job e i messaggi tra piattaforme.\n\nDigita {sethome_cmd} per rendere questa chat il tuo canale principale, oppure ignora questo messaggio."
|
||
unauthorized:
|
||
action_notice: "Questo bot è privato e non sei nella sua lista dei consentiti. Se è tuo, esegui `hermes pairing approve {platform} <request-id>` sull'host (`hermes pairing list` mostra l'id)."
|
||
admin_only_can_run: "Puoi eseguire: "
|
||
admin_only_whoami_hint: ". Usa /whoami per l'elenco completo."
|
||
admin_only_none: "Nessun comando slash è attivo per i non amministratori su questa piattaforma. Chiedi a un amministratore di aggiungerti ad allow_admin_from o di impostare user_allowed_commands."
|
||
admin_only: "⛔ /{command} qui è riservato agli amministratori. {suffix}"
|
||
owner_hint_env: "aggiungi l'ID a {env_var} in {home}/.env e riavvia il gateway"
|
||
owner_hint_generic: "aggiungi l'ID alla lista degli utenti consentiti di questa piattaforma e riavvia il gateway"
|
||
owner_notice: "Scartato un messaggio dall'utente {platform} non riconosciuto {who}. Se sei tu o qualcuno di cui ti fidi, {allowlist}; oppure imposta `unauthorized_dm_behavior: pair` per {platform} in {home}/config.yaml, così i mittenti sconosciuti ricevono un codice di pairing che puoi approvare con `hermes pairing approve {platform} <code>`."
|
||
picker:
|
||
page_info: " ({start}–{end} di {total})"
|
||
clarify:
|
||
hint_single: "Rispondi con il numero, il testo dell'opzione o una tua risposta."
|
||
hint_multi: "Selezione multipla consentita — rispondi con i numeri separati da virgole o spazi (es. \"1, 3\"), il testo dell'opzione o una tua risposta."
|
||
option_line: " {index}. {choice}"
|
||
question: "❓ {question}"
|
||
answered: "✅ risposta: {response}"
|
||
cancelled: "↩️ Chiarimento annullato — il tuo messaggio verrà gestito come follow-up."
|
||
expired: "⏳ Questa richiesta è scaduta — invia una nuova richiesta."
|
||
native_stream_placeholder: "💬 In attesa della tua scelta..."
|
||
skip_hint: 'Rispondi "skip" per saltare questa domanda.'
|
||
errors:
|
||
rate_limited: "⏱️ Il servizio del modello AI sta limitando le richieste. Attendi un momento, poi usa /retry."
|
||
auth_failed: "⚠️ Accesso al servizio del modello AI non riuscito. Usa /login per accedere di nuovo, oppure chiedi a chi gestisce questo bot di eseguire `hermes doctor` sull'host."
|
||
bad_request: "⚠️ Il servizio del modello AI ha rifiutato questa richiesta. Prova a riformulare il messaggio, oppure usa /model per cambiare modello."
|
||
connection_interrupted: "⚠️ La connessione al servizio del modello AI si è interrotta a metà richiesta — di solito è un problema temporaneo. Usa /retry per riprovare; se continua, esegui `hermes doctor` sull'host."
|
||
unreachable: "⚠️ Il servizio del modello AI non è raggiungibile al momento — l'endpoint del modello configurato non è in esecuzione o è irraggiungibile. Attendi un momento e usa /retry; se persiste, esegui `hermes doctor` sull'host."
|
||
connection_unknown: "⚠️ Hermes non è riuscito a raggiungere il servizio del modello AI (nessun altro dettaglio dall'SDK). Usa /retry per riprovare; se persiste, esegui `hermes doctor` sull'host."
|
||
context_overflow: "⚠️ Questa conversazione è diventata troppo lunga perché io possa leggerla tutta insieme. Usa /compress per accorciare la cronologia, oppure /new per iniziare una nuova conversazione."
|
||
usage_limit_resets: "⏱️ Il limite di utilizzo del servizio del modello AI è stato raggiunto; si azzera tra {window}. Dopo usa /retry, oppure /model per cambiare modello."
|
||
provider_kept_failing: "⚠️ Il servizio del modello AI ha continuato a fallire. Usa /retry per riprovare, oppure /model per cambiare modello. I dettagli sono nel log del gateway (`hermes logs`)."
|
||
session_storage_unavailable_disk: "⚠️ L'archiviazione della sessione era temporaneamente non disponibile, quindi questo turno è stato interrotto per proteggere la cronologia della conversazione. Controlla lo spazio disponibile sul disco, poi invia di nuovo il messaggio."
|
||
session_storage_unavailable: "⚠️ L'archiviazione della sessione era temporaneamente non disponibile, quindi questo turno è stato interrotto per proteggere la cronologia della conversazione. Il tuo messaggio dovrebbe essere già salvato — invialo di nuovo tra un momento."
|
||
generic_failed: "⚠️ Qualcosa è andato storto e non sono riuscito a completare questa risposta. Usa /retry per riprovare, oppure /new per iniziare una nuova conversazione. I dettagli tecnici sono nel log del gateway (`hermes logs`)."
|
||
interrupted_before_start: "⚠️ Il tuo messaggio è stato interrotto prima dell'inizio dell'elaborazione (probabilmente da un /stop recente). Invialo di nuovo."
|
||
processing_incomplete: "elaborazione incompleta"
|
||
stopped_before_finishing: "⚠️ Ho dovuto fermarmi prima di finire{reason}. Usa /retry per riprovare, oppure /compress se questa conversazione è diventata molto lunga."
|
||
no_response: "⚠️ Elaborazione completata ma nessuna risposta è stata generata. Potrebbe essere un errore temporaneo — prova a inviare di nuovo il messaggio."
|
||
previous_turn_cleanup: "⚠️ Il tuo messaggio non è stato elaborato (il turno precedente era ancora in fase di pulizia). Invialo di nuovo."
|
||
unexpected_silence: "⚠️ Il modello ha restituito solo un marcatore di silenzio per un messaggio che richiedeva una risposta. Riprova o riformula."
|
||
empty_response_model_label: "Il modello"
|
||
hint_auth: " Il tuo accesso al servizio del modello AI è scaduto o la chiave API è errata. Usa /login qui, oppure esegui `{relogin}` sull'host."
|
||
hint_quota: " Il saldo o la quota del servizio del modello AI sono esauriti. Ricarica sul sito del servizio, oppure usa /model per cambiare modello."
|
||
hint_overloaded: " Il servizio del modello AI è temporaneamente sovraccarico. Attendi un momento, poi usa /retry."
|
||
hint_rate_limited: " Le tue richieste vengono limitate. Attendi un momento e riprova."
|
||
hint_usage_limit_resets: " Il limite di utilizzo del tuo piano è stato raggiunto. Si azzera tra ~{hours}h."
|
||
hint_usage_limit: " Il limite di utilizzo del tuo piano è stato raggiunto. Attendi che si azzeri."
|
||
hint_rejected: " Il servizio del modello AI ha rifiutato la richiesta."
|
||
generic_failed_with_hint: "⚠️ Qualcosa è andato storto e non sono riuscito a completare questa risposta.{hint}\nUsa /retry per riprovare, oppure /new per iniziare una nuova conversazione. I dettagli tecnici sono nel log del gateway (`hermes logs`)."
|
||
history_unavailable: "⚠️ La cronologia di questa sessione è temporaneamente non disponibile, quindi questo messaggio non è stato elaborato. Chiedi all'operatore di controllare state.db, poi invialo di nuovo quando è di nuovo integro. Usa /reset solo se vuoi davvero iniziare una nuova conversazione."
|
||
no_credentials: "⚠️ Non sono riuscito a connettermi al servizio del modello AI, quindi questo messaggio non è stato elaborato. Usa /login per accedere di nuovo, oppure /model per scegliere un altro modello. Se continua a fallire, esegui `hermes doctor` sull'host."
|
||
skills:
|
||
disabled: "La skill **{name}** è installata ma disattivata.\nAttivala con: `hermes skills config`"
|
||
not_installed: "La skill **{name}** è disponibile ma non installata.\nInstallala con: `hermes skills install {install_name}`"
|
||
disabled_for_platform: "La skill **{name}** è disattivata per {platform}.\nAttivala con: `hermes skills config`"
|
||
stacked_disabled: "Le skill **{names}** in questa invocazione combinata sono disattivate per {platform}.\nAttivale con: `hermes skills config`"
|
||
stacked_load_failed: "Impossibile caricare le skill combinate per /{command}."
|
||
gate_off: "L'approvazione delle scritture delle skill è off (skills.write_approval). Attivala con /skills approval on, poi rivedi qui le scritture in attesa con /skills pending."
|
||
unknown_subcommand: "Sottocomando /skills sconosciuto su questa piattaforma. Usa: pending, approve <id>, reject <id>, diff <id>, approval <on|off>. (Ricerca/installazione solo da CLI.)"
|
||
diff_truncated: "\n… (troncato — diff completo in ~/.hermes/pending/skills/{pending_id}.json)"
|
||
busy:
|
||
action_restarting: "in riavvio"
|
||
action_shutting_down: "in arresto"
|
||
reject_model: "L'agente è in esecuzione — attendi o usa prima /stop, poi cambia modello."
|
||
reject_codex_runtime: "L'agente è in esecuzione — attendi o usa prima /stop, poi cambia runtime."
|
||
reject_moa: "L'agente è in esecuzione — attendi o usa prima /stop, poi esegui /moa."
|
||
drain_queued: "⏳ Gateway {action} — messo in coda per il prossimo turno, quando tornerà disponibile."
|
||
drain_rejected: "⏳ Il gateway è {action} e al momento non accetta un altro turno."
|
||
drain_rejected_new_work: "⏳ Il gateway è {action} e al momento non accetta nuovo lavoro."
|
||
demoted_tail: " — il tuo messaggio è in coda per quando avrà finito (usa /stop per annullare tutto)."
|
||
elapsed_min: "{minutes} min trascorsi"
|
||
running_tool: "in esecuzione: {tool}"
|
||
ack_detail_wrap: " ({detail})"
|
||
ack_detail_joiner: ", "
|
||
ack: "{head}{detail}{tail}"
|
||
steered_subagents_head: "⏩ Indirizzato nell'esecuzione corrente e nei suoi subagenti attivi"
|
||
steered_subagents_tail: ". Il tuo messaggio arriverà dopo la loro prossima chiamata a uno strumento."
|
||
steered_head: "⏩ Indirizzato nell'esecuzione corrente"
|
||
steered_tail: ". Il tuo messaggio arriverà dopo la prossima chiamata a uno strumento."
|
||
redirected_head: "↪ Esecuzione corrente reindirizzata"
|
||
redirected_tail: ". Mi adeguerò in base alla tua correzione."
|
||
subagent_working_head: "⏳ Subagente al lavoro"
|
||
compressing_head: "⏳ Compressione del contesto"
|
||
queued_head: "⏳ In coda per il prossimo turno"
|
||
queued_tail: ". Risponderò appena l'attività corrente sarà terminata."
|
||
interrupting_head: "⚡ Interruzione dell'attività corrente"
|
||
interrupting_tail: ". Risponderò al tuo messaggio a breve."
|
||
slash_rejected: "⏳ L'agente è in esecuzione — `/{command}` non può essere eseguito a metà turno. Attendi la risposta corrente o usa prima `/stop`."
|
||
reject_goal: "L'agente è in esecuzione — usa /goal status / pause / clear / wait durante l'esecuzione, oppure /stop prima di impostare un nuovo obiettivo."
|
||
reject_loop: "L'agente è in esecuzione — usa /loop status / pause / stop durante l'esecuzione, oppure /stop prima di impostare un nuovo loop."
|
||
draining_maintenance: "⏳ Questo agente sta completando il lavoro in corso per un'azione di manutenzione e al momento non accetta nuovi turni. Tornerà tra poco — reinvia il messaggio a breve."
|
||
another_turn_running: "⏳ Un altro turno è ancora in esecuzione in questa sessione. Per proteggere la trascrizione, questo messaggio non è stato elaborato. Attendi che il turno attivo finisca, poi reinvialo."
|
||
behavior_queue_short: "mette in coda per il prossimo turno"
|
||
behavior_queue_long: "Mentre Hermes è occupato, i messaggi verranno messi in coda per il prossimo turno."
|
||
behavior_steer_short: "indirizza nell'esecuzione corrente (dopo la prossima chiamata a uno strumento)"
|
||
behavior_steer_long: "I messaggi verranno indirizzati nell'esecuzione corrente (dopo la prossima chiamata a uno strumento)."
|
||
behavior_interrupt_short: "interrompe l'esecuzione corrente"
|
||
behavior_interrupt_long: "Mentre Hermes è occupato, i messaggi interromperanno l'esecuzione corrente."
|
||
status: "**Modalità input quando occupato: `{mode}`\nMessaggi mentre è occupato: _{behavior}_\nCambia con `/busy queue`, `/busy steer` o `/busy interrupt`."
|
||
unknown_mode: "Modalità sconosciuta `{arg}`. Usa `/busy queue`, `/busy steer` o `/busy interrupt`."
|
||
save_failed: "Impossibile salvare la modalità input quando occupato nella configurazione. Modalità invariata."
|
||
set: "Modalità input quando occupato impostata su **`{mode}`** (salvata).\n_{behavior}_"
|
||
pause:
|
||
resumed: "▶️ Ripreso — il nuovo lavoro viene di nuovo accettato."
|
||
not_paused: "Hermes non era in pausa."
|
||
reason_suffix: " (motivo: {reason})"
|
||
already_paused: "⏸️ Hermes è già in pausa{suffix}. Usa `/pause off` per riprendere."
|
||
paused: "⏸️ In pausa{suffix}. Il nuovo lavoro cron/kanban/gateway è sospeso; il lavoro in corso termina normalmente. Usa `/pause off` per riprendere."
|
||
queue:
|
||
usage: "Uso: /queue <prompt>"
|
||
queued: "In coda per il prossimo turno."
|
||
queued_depth: " ({depth} in coda)"
|
||
steer:
|
||
usage: "Uso: /steer <prompt>"
|
||
usage_idle: "Uso: /steer <prompt> (nessun agente in esecuzione; inviato come messaggio normale)"
|
||
queued_starting: "L'agente si sta ancora avviando — /steer messo in coda per il prossimo turno."
|
||
queued_no_agent: "Nessun agente attivo — /steer messo in coda per il prossimo turno."
|
||
failed: "⚠️ Indirizzamento non riuscito: {error}"
|
||
rejected_empty: "Indirizzamento rifiutato (contenuto vuoto)."
|
||
target_subagents: "esecuzione e nei suoi subagenti attivi"
|
||
target_run: "esecuzione"
|
||
queued: "⏩ Indirizzamento in coda nell'{target} corrente — arriva dopo la prossima chiamata a uno strumento: '{preview}'"
|
||
suggestions:
|
||
failed: "Comando suggestions non riuscito: {error}"
|
||
blueprint:
|
||
failed: "Comando blueprint cron non riuscito: {error}"
|
||
confirm:
|
||
destructive_prompt: "⚠️ **Conferma /{command}**\n\n{detail}\n\nScegli:\n• **Approva una volta** — procedi solo questa volta\n• **Approva sempre** — procedi e disattiva questa richiesta in modo permanente\n• **Annulla** — mantieni la conversazione corrente\n\n_Alternativa testuale: rispondi `{prefix}approve`, `{prefix}always` o `{prefix}cancel`._"
|
||
destructive_optout: "\n\nℹ️ In futuro /clear, /new, /reset e /undo verranno eseguiti senza conferma. Riattivala con `approvals.destructive_slash_confirm: true` in config.yaml."
|
||
destructive_optout_save_failed: "\n\n⚠️ Impossibile salvare questa preferenza (config.yaml non è scrivibile), quindi /clear, /new, /reset e /undo chiederanno di nuovo la prossima volta. Per disattivarla in modo permanente, imposta `approvals.destructive_slash_confirm: false` in config.yaml."
|
||
cancelled: "🟡 /{command} annullato. Conversazione invariata."
|
||
detail_new: "Avvia una nuova sessione e scarta la cronologia della conversazione corrente."
|
||
detail_undo_one: "Rimuove dalla cronologia l'ultimo scambio utente/assistente."
|
||
detail_undo_many: "Rimuove dalla cronologia gli ultimi {count} turni utente."
|
||
hooks:
|
||
command_blocked: "Il comando `/{command}` è stato bloccato da un hook."
|
||
prompt_command:
|
||
start_failed: "Impossibile avviare /{command} — riprova."
|
||
learn:
|
||
ack_described: "Sto apprendendo una skill da quanto hai descritto…"
|
||
ack_conversation: "Sto apprendendo una skill da questa conversazione…"
|
||
plan:
|
||
ack_task: "Pianificazione: {task}"
|
||
ack_conversation: "Pianificazione dal contesto di questa conversazione…"
|
||
init:
|
||
start_failed: "Impossibile avviare /init — riprova."
|
||
ack_update: "Aggiornamento di AGENTS.md da una scansione del progetto…"
|
||
ack_generate: "Generazione di AGENTS.md da una scansione del progetto…"
|
||
moa:
|
||
prepare_failed: "Impossibile preparare il turno MoA."
|
||
quick_command:
|
||
no_output: "Il comando non ha restituito output."
|
||
timed_out: "Comando rapido scaduto (30s)."
|
||
error: "Errore del comando rapido: {error}"
|
||
no_command: "Il comando rapido '/{command}' non ha nessun comando definito."
|
||
unsupported_type: "Il comando rapido '/{command}' ha un tipo non supportato (supportati: 'exec', 'alias')."
|
||
no_target: "Il comando rapido '/{command}' non ha nessuna destinazione definita."
|
||
unknown_command: "Comando sconosciuto `/{command}`. Digita /commands per vedere quelli disponibili, oppure reinvia senza la barra iniziale per mandarlo come messaggio normale."
|
||
session:
|
||
auto_reset_notice: "◐ Sessione reimpostata dopo l'interruzione. Cronologia della conversazione cancellata.\nUsa /resume per sfogliare e ripristinare una sessione precedente.\n"
|
||
auto_reset_context_exhausted: "\n\n🔄 Sessione reimpostata automaticamente — la conversazione ha superato la dimensione massima del contesto e non poteva essere compressa ulteriormente. Il tuo prossimo messaggio avvierà una nuova sessione."
|
||
info_model: "◆ Modello: `{model}`"
|
||
info_provider: "◆ Provider: {provider}"
|
||
info_context: "◆ Contesto: {tokens} token ({source})"
|
||
info_acting_model: "◆ Modello attivo (addebitato per l'esecuzione): {provider}:{model}"
|
||
info_endpoint: "◆ Endpoint: {url}"
|
||
proxy:
|
||
requires_aiohttp: "⚠️ La modalità proxy richiede aiohttp. Esegui: {hint}"
|
||
url_missing: "⚠️ URL del proxy non configurato (GATEWAY_PROXY_URL o gateway.proxy_url)"
|
||
http_error: "⚠️ Errore del proxy ({status}): {error}"
|
||
closed_early: "⚠️ Connessione al proxy chiusa prima del completamento della risposta"
|
||
connection_error: "⚠️ Errore di connessione al proxy: {error}"
|
||
no_response: "(Nessuna risposta dall'agente remoto)"
|
||
progress:
|
||
status_fallback_long: "ci sto ancora lavorando"
|
||
status_fallback_short: "un attimo"
|
||
stuck_warning: "⚠️ Sembra che mi sia bloccato (nessuna attività da {minutes} min). Se non succede nulla nei prossimi {remaining} min rinuncerò a questa attività. Puoi continuare ad attendere, inviare /stop per annullarla o /new per iniziare una nuova conversazione."
|
||
timeout_header: "⏱️ Agente inattivo da {minutes} min — nessuna chiamata a strumenti né risposta dall'API."
|
||
timeout_stuck_tool: "L'agente sembra bloccato sullo strumento `{tool}` ({seconds}s dall'ultima attività, {progress})."
|
||
timeout_last_activity: "Ultima attività: {activity} ({seconds}s fa, {progress}). L'agente potrebbe essere rimasto in attesa di una risposta dall'API."
|
||
timeout_hint: "Per aumentare il limite, imposta agent.gateway_timeout in config.yaml (valore in secondi, 0 = nessun limite) e riavvia il gateway.\nRiprova, oppure usa /reset per ricominciare da zero."
|
||
working_heartbeat: "⏳ Al lavoro — {minutes} min{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: "in esecuzione"
|
||
task_status_complete: "completato"
|
||
task_status_error: "errore"
|
||
task_line: "- {title} - {status}"
|
||
task_card_title: "Hermes è al lavoro"
|
||
pairing:
|
||
validity_hour: "{hours} ora"
|
||
validity_hours: "{hours} ore"
|
||
code_reply: "Ciao! Non ti riconosco ancora, quindi non posso risponderti finché la persona che gestisce questo bot non ti approva.\n\nIl tuo codice di associazione: `{code}` (valido per {validity})\n\nSe gestisci tu questo bot, apri un terminale ed esegui: `{approve_cmd}`. Altrimenti invia quel comando al proprietario del bot. Dopo l'approvazione, invia di nuovo il tuo messaggio."
|
||
rate_limited: "Troppe richieste di associazione in questo momento. Attendi qualche minuto, poi invia di nuovo il tuo messaggio."
|
||
shutdown:
|
||
action_shutting_down: "in arresto"
|
||
action_restarting: "in riavvio"
|
||
cron_interrupted: "⚠️ Il job pianificato '{job}' è stato interrotto perché Hermes è {action}; nessun risultato per questa esecuzione. Verrà eseguito di nuovo come pianificato, oppure eseguilo subito con `hermes cron run {job}` quando Hermes sarà tornato."
|
||
notice_shutdown: "⚠️ Hermes si sta arrestando — la tua attività corrente verrà interrotta. Quando sarà di nuovo online, invia un messaggio qualsiasi e proverò a riprendere da dove eravamo rimasti."
|
||
notice_restart: "⚠️ Hermes si sta riavviando — la tua attività corrente verrà interrotta. Invia un messaggio qualsiasi dopo il riavvio e proverò a riprendere da dove eri rimasto."
|
||
startup:
|
||
handoff_thread_title: "Hermes — {title}"
|
||
restarted: "♻ Gateway riavviato correttamente. La tua sessione continua."
|
||
free_tier_line: "Inferenza: piano gratuito Nous (nous/welcome). Accedi per avere di più: /login"
|
||
online: "♻️ Gateway online — Hermes è tornato ed è pronto."
|
||
db_corrupt: "⚠️ Rilevata corruzione del database delle sessioni. I messaggi potrebbero non essere salvati. Opzioni di ripristino:\n1. Esegui `hermes {profile_arg}doctor --fix`\n2. Ferma il gateway, poi ripristina con:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (se segnala che è recuperabile) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — il ripristino crea prima uno snapshot del file danneggiato; NON eseguire `sqlite3 ... \".recover\"` sullo state.db attivo, una CLI sqlite3 vulnerabile può corromperlo ulteriormente\n3. Ripristina da un backup in {backups_dir}/\nEsegui `hermes {profile_arg}doctor` per una diagnostica sanificata."
|
||
db_fts_corrupt: "⚠️ Il database delle sessioni ha segnalato un errore di corruzione limitato all'indice di ricerca (FTS5); le tabelle dei messaggi non sono danneggiate. I messaggi potrebbero non essere salvati finché non viene riparato: esegui `hermes {profile_arg}doctor --fix`, poi riavvia il gateway. Non eseguire strumenti di ripristino né ripristinare un backup a meno che `hermes {profile_arg}doctor` non confermi il danno."
|
||
db_then_restart: "{action} Poi `hermes {profile_arg}gateway restart`."
|
||
db_unavailable: "⚠️ Database delle sessioni non disponibile — i messaggi potrebbero non essere salvati e /resume sarà vuoto. Causa: {cause}. {action}"
|
||
whoami:
|
||
scope_dm: "DM"
|
||
scope_group: "gruppo/canale"
|
||
header: "**Tu** — {platform} ({scope})\nID utente: `{user_id}`\n"
|
||
tier_unrestricted: "Livello: senza restrizioni (nessuna lista admin configurata per questo ambito)\nComandi slash: tutti disponibili"
|
||
tier_admin: "Livello: **admin**\nComandi slash: tutti disponibili"
|
||
tier_user: "Livello: utente\nComandi slash che puoi eseguire: {commands}"
|
||
platform:
|
||
usage: "Uso: /platform <list|pause|resume> [name]\n /platform list — mostra lo stato delle piattaforme\n /platform pause <name> — smetti di ritentare una piattaforma che fallisce\n /platform resume <name> — rimetti in coda una piattaforma in pausa"
|
||
header: "**Piattaforme del gateway**"
|
||
connected: "Connesse: {platforms}"
|
||
reason_default: "in pausa"
|
||
reason_manual: "in pausa tramite /platform pause"
|
||
item_paused: " · {name} — IN PAUSA ({reason}). Riprendi con `/platform resume {name}`."
|
||
item_retrying: " · {name} — nuovo tentativo in corso (tentativo {attempts})"
|
||
none_failed: "Non riuscite/in pausa: (nessuna)"
|
||
usage_action: "Uso: /platform {action} <name>"
|
||
unknown: "Piattaforma sconosciuta: {name}"
|
||
not_queued_pause: "{name} non è nella coda dei tentativi (è connessa oppure non è attiva)."
|
||
already_paused: "{name} è già in pausa."
|
||
paused: "✓ {name} in pausa. Riprendi con `/platform resume {name}` oppure usa `hermes gateway restart` per reimpostare."
|
||
not_queued_resume: "{name} non è nella coda dei tentativi — niente da riprendere."
|
||
already_retrying: "{name} sta già ritentando — non serve riprendere."
|
||
resumed: "✓ {name} ripresa — nuovo tentativo al prossimo ciclo del watcher."
|
||
bundles:
|
||
unavailable: "Sottosistema bundle non disponibile: {error}"
|
||
default_desc: "Carica {count} skill"
|
||
none_plain: "Nessun bundle di skill installato.\nCreane uno con: hermes bundles create <name> --skill <s1> --skill <s2>\nDirectory: {dir}"
|
||
header_plain: "Bundle di skill ({count} installati):"
|
||
item_plain: "/{slug} — {desc} ({count} skill)"
|
||
invoke_hint_plain: "Richiama un bundle con /<slug> per caricare tutte le sue skill."
|
||
none: "Nessun bundle di skill installato.\nCreane uno sull'host con:\n `hermes bundles create <name> --skill <s1> --skill <s2>`\nDirectory: `{dir}`"
|
||
header: "**Bundle di skill** ({count} installati):"
|
||
item: "• `/{slug}` — {desc} _({count} skill)_"
|
||
invoke_hint: "Richiama un bundle con `/<slug>` per caricare tutte le sue skill."
|
||
memory:
|
||
unknown_subcommand: "Sottocomando /memory sconosciuto. Usa: pending, approve <id>, reject <id>, approval <on|off>."
|
||
approvals:
|
||
admin_only: "Solo gli admin del gateway possono cambiare la modalità di approvazione persistente."
|
||
heartbeat:
|
||
unavailable: "Heartbeat non disponibili (nessuna sessione)."
|
||
paused: "⏸ Heartbeat in pausa: {prompt}"
|
||
none_set: "Nessun heartbeat impostato."
|
||
no_resume: "Nessun heartbeat da riprendere."
|
||
resumed: "▶ Heartbeat ripreso (ogni {interval}): {prompt}"
|
||
cleared: "✓ Heartbeat rimosso."
|
||
usage: "Uso: /heartbeat every <interval> <prompt> (es. /heartbeat every 10m Controlla la CI)\nInoltre: /heartbeat status | pause | resume | clear"
|
||
interval_too_small: "Intervallo troppo breve — il minimo è {min_seconds}s."
|
||
prompt_required: "Uso: /heartbeat every <interval> <prompt> — il prompt è obbligatorio."
|
||
invalid_prefix: "Heartbeat non valido"
|
||
set: "♥ Heartbeat impostato (ogni {interval}): {prompt}\nSi attiva come turno normale ogni volta che questa sessione è inattiva e l'intervallo è trascorso. Dura finché il gateway è in esecuzione — usa `hermes cron` per pianificazioni durevoli."
|
||
refine:
|
||
unavailable: "Refine non disponibile (nessuna sessione)."
|
||
nothing_yet: "Ancora niente da perfezionare — invia prima un messaggio."
|
||
empty: "Ancora niente da perfezionare — la conversazione è vuota."
|
||
start_failed: "Impossibile avviare /refine: {error}"
|
||
focus_suffix: " (focus: {focus})"
|
||
started: "⚗ Revisione di questa conversazione in background{focus_suffix} — eventuali aggiornamenti a memoria/skill verranno riportati al termine."
|
||
review:
|
||
unavailable: "Revisione non disponibile (nessuna sessione)."
|
||
nothing_yet: "Ancora niente da revisionare — invia prima un messaggio."
|
||
start_failed: "Impossibile avviare /review: {error}"
|
||
subgoal:
|
||
no_goal: "Nessun obiettivo attivo. Impostane uno con /goal <text>."
|
||
usage_remove: "Uso: /subgoal remove <n>"
|
||
remove_not_int: "/subgoal remove: <n> deve essere un numero intero (indice a partire da 1)."
|
||
removed: "✓ Sotto-obiettivo {index} rimosso: {text}"
|
||
cleared_one: "✓ {count} sotto-obiettivo rimosso."
|
||
cleared_other: "✓ {count} sotto-obiettivi rimossi."
|
||
none_to_clear: "Nessun sotto-obiettivo da rimuovere."
|
||
added: "✓ Sotto-obiettivo {index} aggiunto: {text}"
|
||
loop:
|
||
unavailable: "Loop non disponibili."
|
||
no_session: "Loop non disponibili (nessuna sessione attiva)."
|
||
goal_defers_note: "\nNota: un /goal attivo sta guidando questa sessione — i risvegli del loop vengono rimandati finché l'obiettivo non termina, va in pausa o viene parcheggiato."
|
||
save:
|
||
no_messages: "Nessun messaggio salvato trovato per questa sessione ({session_id})."
|
||
no_adapter: "Adattatore della piattaforma non trovato per inviare il documento."
|
||
caption: "Esportazione sessione: {filename}"
|
||
complete: "Esportazione completata."
|
||
failed: "Errore durante l'esportazione della sessione: {error}"
|
||
sessions:
|
||
usage_search: "Uso: `/sessions search <query>`"
|
||
all_requires_admin: "_Nota: `all` (elenco tra tutte le chat) richiede un admin configurato; vengono mostrate solo le sessioni di questa chat._"
|
||
title_matching: "Sessioni corrispondenti a “{query}”"
|
||
title_all: "Sessioni"
|
||
title_named: "Sessioni con nome"
|
||
codex_runtime:
|
||
config_load_failed: "❌ Impossibile caricare la configurazione: {error}"
|
||
topup:
|
||
header: "💳 **Saldo Nous**"
|
||
portal_link: "Gestisci la fatturazione sul portale: {url}"
|
||
hint: "Ricarica e gestisci la fatturazione nel browser — il saldo qui si aggiornerà subito dopo."
|
||
login:
|
||
free_tier_remaining: "\nAlcune chat sono ancora sul piano gratuito; usa /model in quelle chat per cambiare."
|
||
platform:
|
||
whatsapp:
|
||
clarify_other_title: "✏️ Altro"
|
||
clarify_other_description: "Digita la tua risposta"
|
||
clarify_list_button: "Scegli"
|
||
clarify_list_section: "Opzioni"
|
||
approve_button: "✅ Approva"
|
||
deny_button: "❌ Nega"
|
||
slash_confirm_once: "✅ Approva una volta"
|
||
slash_confirm_always: "🔒 Sempre"
|
||
slash_confirm_cancel: "❌ Annulla"
|
||
clarify_type_answer: "✏️ Digita la tua risposta:"
|
||
approved: "✅ Approvato."
|
||
denied: "❌ Negato."
|
||
approval_expired: "⌛ Approvazione scaduta — il comando non è stato eseguito (timeout già scattato o risolto altrove)."
|
||
yuanbao:
|
||
slow_response_notice: "Questa attività è un po' impegnativa — ci sto ancora lavorando, attendi un attimo..."
|
||
owner_command_denied: "⚠️ {command} è disponibile solo per il creatore in modalità chat privata"
|
||
shared:
|
||
truncated_suffix: "\n...(troncato)"
|
||
unknown: "sconosciuto"
|
||
approval_expired: "⌛ Approvazione scaduta — il comando non è stato eseguito (timeout già scattato o risolto altrove)."
|
||
model_picker_expired: "⏳ Questo selettore di modelli è scaduto — esegui di nuovo /model."
|
||
not_authorized: "⛔ Non autorizzato."
|
||
handoff:
|
||
default_name: "sessione"
|
||
media:
|
||
image_failed: "⚠️ Impossibile consegnare l'immagine allegata."
|
||
video_failed: "⚠️ Impossibile consegnare il video allegato."
|
||
file_failed: "⚠️ Impossibile consegnare il file allegato ({name})."
|
||
attachment_failed: "⚠️ Impossibile consegnare l'allegato."
|
||
weixin:
|
||
voice_as_attachment: "[messaggio vocale come allegato]"
|
||
signal:
|
||
batch_pacing_notice: "(Altre immagini in arrivo — pausa di ~{wait} per il limite di frequenza di Signal, gruppo {batch}/{total}.)"
|
||
wait_seconds: "{count}s"
|
||
wait_minutes: "{count} min"
|
||
api_server:
|
||
provider_auth_failed: "Autenticazione del provider non riuscita"
|
||
provider_rate_limited: "Provider con limite di frequenza raggiunto"
|
||
provider_error_line: "⚠️ {label}: {error}"
|
||
transformed_notice: "\n\n[Risposta trasformata dopo lo streaming]\n"
|
||
discord:
|
||
approval:
|
||
question: "Vuoi che Hermes esegua questo comando?"
|
||
requested_command_label: "Comando richiesto:"
|
||
confirm_title: "Conferma"
|
||
already_resolved: "Questa approvazione è già stata risolta~"
|
||
expired: "⌛ Approvazione scaduta — il comando non è stato eseguito (timeout già scattato o risolto altrove)"
|
||
by_user: "{label} da {user}"
|
||
resolved_once: "Approvato una volta"
|
||
resolved_session: "Approvato per la sessione"
|
||
resolved_always: "Approvato in modo permanente"
|
||
resolved_deny: "Negato"
|
||
slash_confirm:
|
||
already_resolved: "Questa richiesta è già stata risolta~"
|
||
approve_once: "Approva una volta"
|
||
always_approve: "Approva sempre"
|
||
cancel: "Annulla"
|
||
resolved_once: "Approvato una volta"
|
||
resolved_always: "Approvato sempre"
|
||
resolved_cancel: "Annullato"
|
||
prompt:
|
||
truncated_marker: "... [troncato]"
|
||
clarify_title: "Hermes ha bisogno del tuo contributo"
|
||
clarify_hint_buttons: "Scegli un'opzione qui sotto oppure clicca ✏️ Altro per digitare una risposta personalizzata."
|
||
clarify_hint_text: "Rispondi in questo canale con la tua risposta."
|
||
default_hint: " (predefinito: {default})"
|
||
update_title: "L'aggiornamento richiede il tuo intervento"
|
||
expired_footer: "⏱ Richiesta scaduta — nessuna azione eseguita"
|
||
already_answered: "Già risposto~"
|
||
affirm: "Sì"
|
||
negate: "No"
|
||
other: "✏️ Altro (digita la risposta)"
|
||
clarify_already_answered: "A questa richiesta è già stata data risposta~"
|
||
answered_by: "Risposta di {user}: {choice}"
|
||
awaiting_typed: "In attesa della risposta digitata da {user}…"
|
||
picker:
|
||
title: "⚙ Configurazione modello"
|
||
select_provider: "Modello attuale: `{model}`\nProvider: {provider}\n\nSeleziona un provider:"
|
||
unknown_model: "sconosciuto"
|
||
choice_default_title: "Scegli un'opzione"
|
||
provider_option: "{provider} ({count} modelli)"
|
||
current: "attuale"
|
||
provider_placeholder: "Scegli un provider..."
|
||
cancel: "Annulla"
|
||
model_placeholder: "Scegli un modello di {provider}"
|
||
back: "◀ Indietro"
|
||
switch_anyway: "Cambia comunque"
|
||
more_available: "Altri {count} disponibili — digita direttamente `/model <name>`"
|
||
select_model: "Provider: **{provider}**\nSeleziona un modello:{extra}"
|
||
already_resolved: "Già risolto~"
|
||
switching: "Passaggio a `{model}`..."
|
||
switching_title: "⚙ Cambio modello"
|
||
switch_error: "Errore nel cambio modello: {error}"
|
||
switched_title: "⚙ Modello cambiato"
|
||
expired_toast: "Selezione del modello scaduta."
|
||
cancelled: "Selezione del modello annullata."
|
||
expired: "⏱ Selezione scaduta — nessun cambio di modello."
|
||
choice_placeholder: "Scegli un'opzione..."
|
||
choice_error: "Errore nell'applicare la selezione: {error}"
|
||
choice_expired: "⏱ Selezione scaduta — nessuna modifica effettuata."
|
||
command:
|
||
new:
|
||
description: "Avvia una nuova conversazione"
|
||
followup: "Nuova conversazione avviata~"
|
||
reset:
|
||
description: "Reimposta la tua sessione Hermes"
|
||
followup: "Sessione reimpostata~"
|
||
model:
|
||
description: "Mostra o cambia il modello"
|
||
arg_name: "Nome del modello (es. anthropic/claude-sonnet-4). Lascia vuoto per vedere quello attuale."
|
||
reasoning:
|
||
description: "Mostra/cambia il livello di ragionamento o attiva/disattiva la sua visualizzazione"
|
||
arg_effort: "Scegli un livello, reimposta l'override o mostra/nascondi il ragionamento. Vuoto = stato attuale."
|
||
choice_none: "none — disattiva il ragionamento"
|
||
choice_ultra: "ultra — ragionamento massimo"
|
||
choice_reset: "reset — cancella l'override di questa sessione"
|
||
choice_show: "show — mostra il ragionamento nelle risposte"
|
||
choice_hide: "hide — nascondi il ragionamento dalle risposte"
|
||
personality:
|
||
description: "Imposta una personalità"
|
||
arg_name: "Nome della personalità. Lascia vuoto per elencare quelle disponibili."
|
||
retry:
|
||
description: "Riprova il tuo ultimo messaggio"
|
||
followup: "Riprovo~"
|
||
undo:
|
||
description: "Rimuovi l'ultimo scambio"
|
||
status:
|
||
description: "Mostra lo stato della sessione Hermes"
|
||
followup: "Stato inviato~"
|
||
stop:
|
||
description: "Interrompi l'agente Hermes in esecuzione"
|
||
followup: "Interruzione richiesta~"
|
||
steer:
|
||
description: "Inserisci un messaggio dopo la prossima chiamata a uno strumento (senza interrompere)"
|
||
arg_prompt: "Testo da inserire nel prossimo risultato di strumento dell'agente"
|
||
plan:
|
||
description: "Scrivi un piano di implementazione in markdown (senza esecuzione)"
|
||
arg_task: "Cosa pianificare. Lascia vuoto per dedurlo dalla conversazione."
|
||
compress:
|
||
description: "Comprimi il contesto della conversazione"
|
||
title:
|
||
description: "Imposta o mostra il titolo della sessione"
|
||
arg_name: "Titolo della sessione. Lascia vuoto per mostrare quello attuale."
|
||
resume:
|
||
arg_name: "Nome della sessione da riprendere. Lascia vuoto per elencare le sessioni."
|
||
usage:
|
||
description: "Mostra l'utilizzo di token per questa sessione"
|
||
help:
|
||
description: "Mostra i comandi disponibili"
|
||
insights:
|
||
arg_days: "Numero di giorni da analizzare (predefinito: 7)"
|
||
reload_skills:
|
||
description: "Riesamina ~/.hermes/skills/ per trovare skill nuove o rimosse"
|
||
voice:
|
||
description: "Attiva/disattiva la modalità risposta vocale"
|
||
arg_mode: "Modalità voce: join, channel, leave, on, tts, off o status"
|
||
choice_join: "join — entra nel tuo canale vocale"
|
||
choice_channel: "channel — entra nel tuo canale vocale (alias)"
|
||
choice_leave: "leave — esci dal canale vocale"
|
||
choice_mode_on: "on — risposta vocale ai messaggi vocali"
|
||
choice_tts: "tts — risposta vocale a tutti i messaggi"
|
||
choice_mode_off: "off — solo testo"
|
||
choice_status: "status — mostra la modalità attuale"
|
||
update:
|
||
followup: "Aggiornamento avviato~"
|
||
restart:
|
||
description: "Riavvia in modo controllato il gateway Hermes"
|
||
followup: "Riavvio richiesto~"
|
||
approve:
|
||
arg_scope: "Facoltativo: 'all', 'session', 'always', 'all session', 'all always'"
|
||
deny:
|
||
description: "Nega un comando pericoloso in attesa"
|
||
arg_scope: "Facoltativo: 'all' per negare tutti i comandi in attesa"
|
||
thread:
|
||
description: "Crea un nuovo thread e avvia al suo interno una sessione Hermes"
|
||
arg_name: "Nome del thread"
|
||
arg_message: "Primo messaggio facoltativo da inviare a Hermes nel thread"
|
||
arg_auto_archive: "Archiviazione automatica in minuti (60, 1440, 4320, 10080)"
|
||
error_unknown: "errore sconosciuto"
|
||
failed: "Impossibile creare il thread: {error}"
|
||
created: "Thread {link} creato"
|
||
error_name_required: "Il nome del thread è obbligatorio."
|
||
error_invalid_archive: "auto_archive_duration deve essere uno tra: {allowed}."
|
||
error_no_channel: "Impossibile individuare il canale Discord attuale."
|
||
error_dm_not_supported: "I thread Discord possono essere creati solo nei canali testuali di un server, non nei DM."
|
||
error_no_parent: "Impossibile determinare un canale testuale padre per il nuovo thread."
|
||
error_both_failed: "Discord ha rifiutato la creazione diretta del thread e anche il fallback non è riuscito. Errore diretto: {direct_error}. Errore del fallback: {fallback_error}"
|
||
queue:
|
||
description: "Metti in coda un prompt per il prossimo turno (senza interrompere)"
|
||
arg_prompt: "Il prompt da mettere in coda"
|
||
followup: "In coda per il prossimo turno."
|
||
bg:
|
||
arg_prompt: "Il prompt da eseguire in background"
|
||
followup: "Attività in background avviata~"
|
||
btw:
|
||
description: "Fai una domanda a margine sulla conversazione attuale"
|
||
arg_question: "La domanda a margine a cui rispondere senza interrompere"
|
||
followup: "Domanda a margine inviata~"
|
||
skill:
|
||
description: "Esegui una skill Hermes"
|
||
arg_name: "Quale skill eseguire"
|
||
arg_args: "Argomenti facoltativi per la skill"
|
||
unknown: "Skill sconosciuta: `{name}`. Inizia a digitare per i suggerimenti di completamento automatico."
|
||
auto_args_description: "Argomenti: {args_hint}"
|
||
auto_description_fallback: "Esegui /{name}"
|
||
limits:
|
||
response_truncated: "⚠️ **Risposta troncata** — questa risposta ha superato il limite di consegna ({max_messages} messaggi). {dropped_chars} caratteri non sono stati consegnati; la risposta completa è nei log della sessione."
|
||
forum:
|
||
default_title: "Nuovo post"
|
||
voice:
|
||
ack_1: "Fammi controllare."
|
||
ack_2: "Un momento."
|
||
ack_3: "Sto controllando."
|
||
ack_4: "Dammi un secondo."
|
||
ack_5: "Ci penso io."
|
||
left_inactivity: "Uscito dal canale vocale (timeout per inattività)."
|
||
security:
|
||
unauthorized_slash_alert: "⚠️ Tentativo di comando slash Discord non autorizzato\nUtente: {user_name} ({user_id})\nCanale: {chan_id} (guild {guild_id})\nComando: {command_text}\nMotivo: {reason}"
|
||
thread:
|
||
seed_message: "🧵 Thread creato da Hermes: **{name}**"
|
||
default_name: "Hermes"
|
||
handoff_seed: "🧵 Passaggio di consegne Hermes: **{name}**"
|
||
auto_create_failed: "⚠️ Hermes non è riuscito a creare un thread Discord per questo messaggio, quindi la richiesta non è stata elaborata. Riprova."
|
||
auto_create_failed_generic: "La richiesta non è stata elaborata. Riprova."
|
||
media:
|
||
upload_too_large: "⚠️ Impossibile allegare `{filename}` — {size_mb} MB supera il limite di caricamento di Discord di {limit_mb} MB per questo canale. Comprimi il file o condividi un link."
|
||
image_skipped_too_large: "⚠️ `{filename}` ignorato — {size_mb} MB supera il limite di caricamento di Discord di {limit_mb} MB."
|
||
telegram:
|
||
approval:
|
||
action_once: "✅ Consenti una volta"
|
||
action_session: "✅ Sessione"
|
||
action_always: "✅ Sempre"
|
||
action_deny: "❌ Nega"
|
||
toast_invalid_data: "Dati di approvazione non validi."
|
||
toast_already_resolved: "Questa approvazione è già stata risolta."
|
||
resolved_once: "✅ Approvato una volta"
|
||
resolved_session: "✅ Approvato per la sessione"
|
||
resolved_always: "✅ Approvato in modo permanente"
|
||
resolved_deny: "❌ Negato"
|
||
resolved_generic: "Risolto"
|
||
resolved_by_user: "{label} da {user}"
|
||
expired: "⌛ Approvazione scaduta"
|
||
expired_detail: "{label} — nessun comando era in attesa. È già andato in timeout (ed è stato negato) oppure è stato risolto altrove."
|
||
slash_confirm:
|
||
approve_once: "✅ Approva una volta"
|
||
always_approve: "🔒 Approva sempre"
|
||
cancel: "❌ Annulla"
|
||
already_resolved: "Questa richiesta è già stata risolta."
|
||
resolved_once: "✅ Approvato una volta"
|
||
resolved_always: "🔒 Approva sempre"
|
||
resolved_cancel: "❌ Annullato"
|
||
picker:
|
||
expired_rerun: "Selettore scaduto — esegui di nuovo il comando."
|
||
invalid_selection: "Selezione non valida."
|
||
expired: "Selettore scaduto."
|
||
apply_error: "Errore nell'applicare la selezione: {error}"
|
||
prev: "◀ Prec"
|
||
next: "Succ ▶"
|
||
back: "◀ Indietro"
|
||
cancel: "✗ Annulla"
|
||
more_available: "Altri {count} disponibili — digita direttamente `/model <name>`"
|
||
title: "Configurazione modello"
|
||
provider_label: "Provider: {provider}"
|
||
select_model: "Seleziona un modello:"
|
||
current_model: "Modello attuale: {model}"
|
||
select_provider: "Seleziona un provider:"
|
||
unknown_model: "sconosciuto"
|
||
provider_family: "Famiglia provider: {family}"
|
||
invalid_model_index: "Indice modello non valido."
|
||
switch_error: "Errore nel cambio modello: {error}"
|
||
switch_failed: "Cambio non riuscito."
|
||
switched: "Modello cambiato!"
|
||
invalid_page: "Pagina non valida."
|
||
expired_model: "Selettore scaduto — usa di nuovo /model."
|
||
provider_not_found: "Provider non trovato."
|
||
switch_anyway: "Cambia comunque"
|
||
confirm_selection: "Conferma il modello"
|
||
group_not_found: "Gruppo non trovato."
|
||
cancelled: "Selezione del modello annullata."
|
||
prompt:
|
||
default_hint: " (predefinito: {default})"
|
||
update_header: "L'aggiornamento richiede il tuo input:"
|
||
affirm: "✓ Sì"
|
||
negate: "✗ No"
|
||
other: "✏️ Altro (digita)"
|
||
expired_toast: "⚠️ Questa richiesta è scaduta — usa /retry."
|
||
expired_body: "⚠️ Questa domanda è scaduta o la sessione è stata reimpostata — usa /retry."
|
||
type_answer: "✏️ Digita la tua risposta nella chat."
|
||
awaiting_typed: "In attesa della risposta digitata da {user}…"
|
||
invalid_choice: "Scelta non valida."
|
||
update_sent: "Inviato '{answer}' al processo di aggiornamento."
|
||
update_answered: "Risposta alla richiesta di aggiornamento: {answer}"
|
||
affirm_word: "Sì"
|
||
negate_word: "No"
|
||
media:
|
||
download_failed: "⚠️ Impossibile scaricare {kind}{name} ({error}). Prova a inviarlo di nuovo."
|
||
named_suffix: " ({name})"
|
||
kind_attachment: "l'allegato"
|
||
kind_photo: "la foto"
|
||
kind_voice: "il messaggio vocale"
|
||
kind_audio: "il file audio"
|
||
kind_video: "il file video"
|
||
gmail_triage:
|
||
done_send: "✓ bozza inviata"
|
||
done_archive: "✓ archiviato"
|
||
done_draft: "✓ risposta in bozza"
|
||
done_spam: "✓ segnato come spam"
|
||
done_mute: "✓ silenziato"
|
||
done_mute_domain: "✓ dominio silenziato"
|
||
done_trust: "✓ attendibile"
|
||
done_trust_domain: "✓ dominio attendibile"
|
||
done_vip: "✓ segnato VIP"
|
||
done_vip_domain: "✓ dominio segnato VIP"
|
||
invalid_data: "Dati gmail-triage non validi."
|
||
unknown_verb: "Verbo sconosciuto: {verb}"
|
||
script_missing: "❌ {script} mancante"
|
||
exit_code: "exit {code}"
|
||
failed: "❌ {verb} non riuscito: {detail}"
|
||
timed_out: "❌ {verb} in timeout"
|
||
error: "❌ errore {verb}: {error}"
|
||
appended_by: "— {label} da {user}"
|
||
user_fallback: "Utente"
|
||
install_hint: "Esegui `hermes setup` per installare il supporto Telegram."
|
||
slack:
|
||
approval:
|
||
fallback_text: "⚠️ Richiesta approvazione del comando: {command}"
|
||
resolved_once: "✅ Approvato una volta da {user}"
|
||
resolved_session: "✅ Approvato per la sessione da {user}"
|
||
resolved_always: "✅ Approvato in modo permanente da {user}"
|
||
resolved_deny: "❌ Negato da {user}"
|
||
confirm:
|
||
default_title: "Conferma"
|
||
approve_once: "Approva una volta"
|
||
always_approve: "Approva sempre"
|
||
cancel: "Annulla"
|
||
resolved_always: "🔒 Approvato sempre da {user}"
|
||
resolved_cancel: "❌ Annullato da {user}"
|
||
picker:
|
||
more_available: "\n*Altri {count} disponibili — digita direttamente `/model <name>`*"
|
||
provider_header: "*⚙ Configurazione modello*\nModello attuale: `{model}`\nProvider: {provider}\n\nSeleziona un provider:{extra}"
|
||
model_header: "*⚙ Configurazione modello*\n\nProvider: *{provider}*\nSeleziona un modello:{extra}"
|
||
choose_provider: "Scegli un provider…"
|
||
choose_model: "Scegli un modello di {provider}…"
|
||
cancel: "Annulla"
|
||
back: "◀ Indietro"
|
||
fallback_provider: "⚙ Configurazione modello — seleziona un provider"
|
||
fallback_model: "⚙ Configurazione modello — {provider}"
|
||
cancelled: "❌ Selezione del modello annullata."
|
||
no_models_for_provider: "Nessun modello disponibile per `{provider}`."
|
||
switching: "⚙ Passaggio a `{model}`…"
|
||
switch_failed: "❌ Cambio modello non riuscito: {error}"
|
||
switch_failed_header: "⚙ Cambio modello non riuscito"
|
||
switched_header: "⚙ Modello cambiato"
|
||
clarify:
|
||
option_n: "Opzione {n}"
|
||
choice_n: "scelta {n}"
|
||
other: "✏️ Altro…"
|
||
expired: "⏳ Questa richiesta è scaduta — invia una nuova richiesta. (da {user})"
|
||
awaiting: "✏️ In attesa della risposta digitata da {user}…"
|
||
resolved: "✅ {user}: {choice}"
|
||
feedback:
|
||
good: "Risposta utile"
|
||
good_a11y: "Invia un feedback positivo su questa risposta"
|
||
bad: "Risposta scadente"
|
||
bad_a11y: "Invia un feedback negativo su questa risposta"
|
||
status:
|
||
thinking: "sta ragionando..."
|
||
still_working: "ancora al lavoro… ({elapsed})"
|
||
task_card:
|
||
title: "Hermes è al lavoro"
|
||
slash:
|
||
reply_truncated: "\n\n_[Risposta troncata: {count} altre parti hanno superato il limite delle risposte effimere di Slack.]_"
|
||
running: "Esecuzione di `/{command}`…"
|
||
handoff:
|
||
seed: ":thread: Passaggio di consegne Hermes — *{name}*"
|
||
matrix:
|
||
handoff:
|
||
default_name: "Sessione Hermes"
|
||
media:
|
||
image_download_failed: "Non sono riuscito a scaricare e caricare l'immagine su Matrix. L'URL di origine non è stato mostrato perché potrebbe contenere token privati."
|
||
approval:
|
||
typed_hint_once: "Rispondi `!approve` per eseguire una volta, oppure `!deny` per annullare."
|
||
typed_hint_session: "Rispondi `!approve session` per approvare questo pattern per la sessione, `!approve` per eseguire una volta, oppure `!deny` per annullare."
|
||
typed_hint_always: "Rispondi `!approve session` per approvare questo pattern per la sessione, `!approve always` per approvare in modo permanente, `!approve` per eseguire una volta, oppure `!deny` per annullare."
|
||
legend_intro: "Puoi anche cliccare la reazione per approvare:"
|
||
legend_once: "✅ = approva una volta"
|
||
legend_session: "🌀 = approva per questa sessione"
|
||
legend_always: "♾️ = approva sempre"
|
||
legend_deny: "❎ = nega"
|
||
invalid_reaction: "Questa reazione non è valida per questa richiesta di approvazione."
|
||
expired: "Questa richiesta di approvazione è scaduta. Esegui di nuovo il comando se vuoi ancora approvarlo."
|
||
picker:
|
||
no_models: "Nessun modello autenticato disponibile per questa sessione."
|
||
title: "⚙ **Configurazione modello**"
|
||
current_model: "Modello attuale: `{model}`"
|
||
provider: "Provider: {provider}"
|
||
react_model: "Reagisci per scegliere un modello:"
|
||
react_choice: "Reagisci per scegliere."
|
||
current_suffix: "{label} ← attuale"
|
||
invalid_model_reaction: "Questa reazione non corrisponde a nessuno dei modelli disponibili."
|
||
invalid_choice_reaction: "Questa reazione non corrisponde a nessuna delle scelte disponibili."
|
||
verb_switch_model: "cambiare modello"
|
||
verb_apply_selection: "applicare la selezione"
|
||
failed: "Impossibile {action}: {error}"
|
||
reaction:
|
||
unauthorized: "Solo un utente Matrix autorizzato può usare questi controlli."
|
||
not_requester: "Solo l'utente che ha richiesto questa azione può usare questi controlli."
|
||
feishu:
|
||
approval:
|
||
action_session: "Sessione"
|
||
action_always: "Sempre"
|
||
resolved_once: "Approvato una volta"
|
||
resolved_session: "Approvato per la sessione"
|
||
resolved_always: "Approvato in modo permanente"
|
||
resolved_deny: "Negato"
|
||
resolved_fallback: "Risolto"
|
||
resolved_by_user: "{icon} **{label}** da {user}"
|
||
update_prompt:
|
||
title: "☤ L'aggiornamento richiede il tuo input"
|
||
default_hint: "\n\nPredefinito: `{default}`"
|
||
answer_yes: "✓ Sì"
|
||
answer_no: "✗ No"
|
||
word_yes: "Sì"
|
||
word_no: "No"
|
||
answered_title: "{icon} Risposta alla richiesta di aggiornamento: {answer}"
|
||
answered_by: "Risposta di **{user}**"
|
||
media:
|
||
gif_downgraded: "[GIF convertita in file]"
|
||
gif_downgraded_caption: "[GIF convertita in file]\n{caption}"
|
||
google_chat:
|
||
clarify:
|
||
other_button: "Altro / digita la risposta"
|
||
header: "Domanda"
|
||
question: "❓ {question}"
|
||
typing:
|
||
thinking: "Hermes sta ragionando…"
|
||
interrupted: "(interrotto)"
|
||
no_reply: "(nessuna risposta)"
|
||
attachment_fallback:
|
||
header: "⚠️ Non sono riuscito ad allegare **{filename}**."
|
||
explain: "Google Chat consente gli allegati solo se il bot ha la tua autorizzazione esplicita (OAuth utente). È un consenso una tantum che si dà da questa chat."
|
||
activate: "**Per attivarlo:** invia `/setup-files` e segui le istruzioni."
|
||
host_path: "Nel frattempo il file si trova sull'host: `{path}`"
|
||
setup_files:
|
||
not_configured: "🔧 La consegna nativa degli allegati **non è configurata**.\n**Passo 1 (una tantum, sull'host):** crea le credenziali del client OAuth su https://console.cloud.google.com/apis/credentials → *Crea credenziali* → *ID client OAuth* → *App desktop*. Scarica il JSON. Poi sull'host esegui:\n```\npython -m plugins.platforms.google_chat.oauth --client-secret /path/to/client_secret.json\n```\n**Passo 2:** torna qui e invia `/setup-files start`."
|
||
start_instructions: "1. Apri questo URL nel browser e autorizza:\n{auth_url}\n\n2. Dopo aver cliccato *Consenti*, il browser non riuscirà a caricare `http://localhost:1/?...&code=...`. È normale.\n\n3. Copia l'intero URL non caricato dalla barra degli indirizzi del browser e incollalo qui come: `/setup-files <PASTE_URL>` (oppure solo il valore `code=...`).\n\nSuggerimento: l'URL contiene la tua autorizzazione di accesso — tienilo privato."
|
||
start_failed: "❌ Impossibile generare l'URL OAuth. Controlla i log del gateway e verifica che client_secret.json sia valido."
|
||
exchange_failed: "❌ Scambio del token non riuscito. Il codice potrebbe essere scaduto o l'URL è malformato. Invia `/setup-files start` per ottenere un nuovo URL OAuth."
|
||
revoke_completed: "Revoca completata (alcuni passaggi potrebbero essere stati saltati)."
|
||
revoked: "Revocato."
|
||
helper_error: "❌ Errore: {error}"
|
||
revoke_error: "❌ Errore durante la revoca: {error}"
|
||
who_shared: "condiviso (legacy)"
|
||
active: "✅ La consegna nativa degli allegati è **attiva** per `{who}`.\nToken: `{token_path}`\nInvia `/setup-files revoke` per disattivarla."
|
||
not_authorized_yet: "🔧 Le credenziali del client sono salvate ma non hai ancora autorizzato. Invia `/setup-files start` per iniziare."
|
||
no_client_credentials: "⚠️ Nessuna credenziale client salvata per questo profilo. Invia `/setup-files` (senza argomenti) per le istruzioni di configurazione."
|
||
done_output: "✅ Fatto.\n```\n{output}\n```"
|
||
authorized: "✅ Autorizzato! La consegna nativa degli allegati è ora attiva. Prova a chiedermi di inviarti un PDF."
|
||
exchanged_not_loaded: "⚠️ Token scambiato, ma il gateway non è riuscito a caricare le nuove credenziali in memoria. Riavvia il gateway e il token in `{token_path}` verrà caricato.\nOutput dell'helper:\n```\n{output}\n```"
|
||
teams:
|
||
approval:
|
||
resolved_once: "✅ Consentito (una volta)"
|
||
resolved_session: "✅ Consentito (sessione)"
|
||
resolved_always: "✅ Consentito sempre"
|
||
resolved_deny: "❌ Negato"
|
||
unknown_action: "Azione sconosciuta."
|
||
requires_allowlist: "⛔ I pulsanti di approvazione richiedono che TEAMS_ALLOWED_USERS sia configurato."
|
||
summary:
|
||
title: "Riunione {meeting_id}"
|
||
title_fallback: "riepilogo"
|
||
heading: "Riepilogo"
|
||
summary_line: "Riepilogo: {summary}"
|
||
empty: "Nessun riepilogo disponibile."
|
||
none_item: "Nessuno"
|
||
key_decisions: "Decisioni chiave"
|
||
action_items: "Azioni da fare"
|
||
risks: "Rischi"
|
||
line:
|
||
pending:
|
||
still_thinking: "🤔 Sto ancora ragionando. Tocca qui sotto per ricevere la risposta quando è pronta."
|
||
button_label: "Ricevi risposta"
|
||
delivered: "Già risposto ✅"
|
||
interrupted: "L'esecuzione è stata interrotta prima del completamento."
|
||
expired: "Questa richiesta è scaduta — invia di nuovo il messaggio."
|
||
standalone:
|
||
attachments_not_deliverable: "[Allegati generati: {count}; non consegnabili da cron]"
|
||
wecom:
|
||
media:
|
||
kind_image: "Immagine"
|
||
kind_video: "Video"
|
||
kind_voice: "Messaggio vocale"
|
||
file_too_large: "La dimensione del file ({size_mb}MB) supera il limite di 20MB di WeCom e non può essere inviato. Prova a comprimere il file o a ridurne la dimensione."
|
||
voice_format_downgraded: "Il formato vocale {content_type} non è supportato (WeCom accetta solo AMR); inviato come file."
|
||
size_downgraded: "{label}: la dimensione di {size_mb}MB supera il limite di {cap}; inviato come file."
|
||
email:
|
||
image_line: "Immagine: {url}"
|
||
standalone_subject: "Hermes Agent"
|
||
dingtalk:
|
||
emotion:
|
||
thinking: "🤔Sto ragionando"
|
||
done: "🥳Fatto"
|
||
irc:
|
||
quit_message: "Hermes Agent in arresto"
|
||
standalone_quit: "consegnato"
|
||
relay:
|
||
confirm_approve_once: "Approva una volta"
|
||
confirm_always_approve: "Approva sempre"
|
||
confirm_cancel: "Annulla"
|
||
prompt_other: "✏️ Altro (digita)"
|
||
prompt_expired: ⌛ Quella richiesta non attende più una risposta. Invia la tua risposta come messaggio normale.
|
||
slash:
|
||
approve:
|
||
description: "Approva un comando pericoloso in attesa"
|
||
bg:
|
||
description: "Esegui un prompt in una sessione separata in background"
|
||
insights:
|
||
description: "Mostra statistiche e analisi di utilizzo"
|
||
reload_mcp:
|
||
description: "Ricarica i server MCP dalla configurazione"
|
||
resume:
|
||
description: "Riprendi una sessione a cui hai dato un nome"
|
||
sethome:
|
||
description: "Imposta questa chat come canale principale"
|
||
update:
|
||
description: "Aggiorna Hermes Agent all'ultima versione"
|
||
category:
|
||
session: "Sessione"
|
||
configuration: "Configurazione"
|
||
info: "Info"
|
||
tools_skills: "Strumenti e skill"
|
||
plugins: "Plugin"
|
||
exit: "Uscita"
|
||
context: "Contesto"
|
||
background_automation: "Background e automazione"
|
||
shared:
|
||
usage_suffix: "{description} (uso: /{name} {args_hint})"
|
||
alias_for: "{description} (alias di /{name})"
|
||
alias_note: " (alias: {aliases})"
|
||
slack_alias_for: "Alias di /{name} — {description}"
|
||
plugin_default_desc: "Esegui /{name}"
|
||
plugin_command_desc: "Comando di un plugin"
|
||
hermes:
|
||
description: "Parla con Hermes o esegui un sottocomando"
|
||
start:
|
||
description: "Riconosci i ping di avvio della piattaforma senza rispondere"
|
||
new:
|
||
description: "Avvia una nuova sessione (nuovo ID di sessione + cronologia)"
|
||
topic:
|
||
description: "Attiva o ispeziona le sessioni per argomento nei DM Telegram"
|
||
clear:
|
||
description: "Pulisci lo schermo e avvia una nuova sessione"
|
||
redraw:
|
||
description: "Forza il ridisegno completo dell'interfaccia (ripara il terminale sfasato)"
|
||
history:
|
||
description: "Mostra la cronologia della conversazione"
|
||
save:
|
||
description: "Esporta la conversazione attuale (/save senza argomenti mostra l'uso)"
|
||
retry:
|
||
description: "Riprova l'ultimo messaggio (lo reinvia all'agente)"
|
||
prompt:
|
||
description: "Scrivi il prossimo prompt in $EDITOR (markdown), poi invialo"
|
||
undo:
|
||
description: "Torna indietro di N turni utente e riformula il prompt (predefinito 1)"
|
||
title:
|
||
description: "Imposta un titolo per la sessione attuale"
|
||
handoff:
|
||
description: "Passa questa sessione a una piattaforma di messaggistica (Telegram, Discord, ecc.)"
|
||
branch:
|
||
description: "Crea un ramo della sessione attuale (nuovo thread su Discord/Telegram/Slack/Matrix; --here resta qui)"
|
||
worktree:
|
||
description: "Mostra, elenca, crea o elimina worktree git isolati"
|
||
compress:
|
||
description: "Comprimi il contesto della conversazione (aggiungi 'here [N]' per conservare gli ultimi N turni; --preview mostra cosa succederebbe)"
|
||
rollback:
|
||
description: "Elenca o ripristina i checkpoint del filesystem (il ripristino conserva le tue modifiche manuali; --all le sovrascrive)"
|
||
snapshot:
|
||
description: "Crea o ripristina snapshot dello stato/configurazione di Hermes"
|
||
export:
|
||
description: "Esporta un profilo (configurazione, skill, tema) in un archivio condivisibile"
|
||
import:
|
||
description: "Importa un archivio di profilo condiviso come nuovo profilo"
|
||
stop:
|
||
description: "Termina tutti i processi in background in esecuzione"
|
||
pause:
|
||
description: "Metti in pausa globalmente il nuovo lavoro (arresto di emergenza); '/pause off' riprende"
|
||
deny:
|
||
description: "Nega un comando pericoloso in attesa (opzionalmente con un motivo)"
|
||
btw:
|
||
description: "Fai una domanda a margine sulla conversazione attuale senza interromperla"
|
||
agents:
|
||
description: "Mostra gli agenti attivi e le attività in esecuzione"
|
||
journey:
|
||
description: "Apri la timeline del percorso di apprendimento"
|
||
queue:
|
||
description: "Metti in coda un prompt per il prossimo turno, oppure list/edit/rm/move/clear per i prompt in coda"
|
||
steer:
|
||
description: "Inserisci un messaggio dopo la prossima chiamata a uno strumento senza interrompere"
|
||
goal:
|
||
description: "Imposta un obiettivo permanente su cui Hermes lavora turno dopo turno fino a raggiungerlo"
|
||
heartbeat:
|
||
description: "Imposta un prompt ricorrente che rientra in questa sessione quando è inattiva"
|
||
refine:
|
||
description: "Rivedi subito questa conversazione e salva le lezioni in memoria/skill"
|
||
review:
|
||
description: "Avvia un subagente indipendente per revisionare il lavoro appena discusso (PR, codice, documentazione)"
|
||
loop:
|
||
description: "Riesegui un prompt a intervalli ricorrenti in questa sessione"
|
||
plan:
|
||
description: "Scrivi un piano di implementazione in markdown in .hermes/plans/ senza eseguire nulla"
|
||
moa:
|
||
description: "Esegui un prompt con il preset Mixture of Agents predefinito, poi ripristina il tuo modello"
|
||
subgoal:
|
||
description: "Aggiungi o gestisci criteri aggiuntivi sull'obiettivo attivo"
|
||
status:
|
||
description: "Mostra informazioni su sessione, modello, token e contesto"
|
||
egress:
|
||
description: "Mostra lo stato del proxy egress Docker"
|
||
context:
|
||
description: "Mostra la vista dettagliata della finestra di contesto con indicatore di utilizzo, ripartizione per categoria, statistiche di compressione e throughput"
|
||
whoami:
|
||
description: "Mostra il tuo livello di accesso ai comandi slash (admin / user)"
|
||
profile:
|
||
description: "Mostra il nome del profilo attivo e la sua directory home"
|
||
sessions:
|
||
description: "Sfoglia e riprendi le sessioni precedenti"
|
||
config:
|
||
description: "Mostra la configurazione attuale"
|
||
model:
|
||
description: "Cambia modello (solo per la sessione; --global per renderlo permanente)"
|
||
codex-runtime:
|
||
description: "Attiva/disattiva il runtime app-server di codex per i modelli OpenAI/Codex"
|
||
personality:
|
||
description: "Imposta una personalità predefinita"
|
||
statusbar:
|
||
description: "Attiva/disattiva la barra di stato contesto/modello"
|
||
battery:
|
||
description: "Attiva/disattiva un indicatore a batteria colorato nella barra di stato"
|
||
timestamps:
|
||
description: "Attiva/disattiva gli orari [HH:MM] sui messaggi e in /history"
|
||
diff:
|
||
description: "Mostra le modifiche git nella directory di lavoro"
|
||
verbose:
|
||
description: "Cicla la visualizzazione dell'avanzamento degli strumenti: off -> new -> all -> verbose"
|
||
focus:
|
||
description: "Attiva/disattiva la vista focalizzata — mostra solo il tuo prompt e la risposta finale"
|
||
footer:
|
||
description: "Attiva/disattiva il footer con i metadati di runtime del gateway nelle risposte finali"
|
||
yolo:
|
||
description: "Attiva/disattiva la modalità YOLO (salta tutte le approvazioni dei comandi pericolosi)"
|
||
approvals:
|
||
description: "Mostra o imposta la modalità permanente di approvazione dei comandi pericolosi"
|
||
reasoning:
|
||
description: "Gestisci lo sforzo di ragionamento e la sua visualizzazione"
|
||
fast:
|
||
description: "Modalità veloce — OpenAI Priority Processing / Anthropic Fast Mode (normal/fast/auto/cold/ultrafast)"
|
||
skin:
|
||
description: "Mostra o cambia la skin/tema di visualizzazione"
|
||
indicator:
|
||
description: "Scegli lo stile dell'indicatore di attività della TUI"
|
||
voice:
|
||
description: "Attiva/disattiva la modalità voce"
|
||
wake:
|
||
description: "Attiva/disattiva l'ascolto della parola di attivazione 'Hey Hermes'"
|
||
busy:
|
||
description: "Controlla come vengono gestiti i messaggi mentre Hermes è al lavoro"
|
||
tools:
|
||
description: "Gestisci gli strumenti: /tools [list|disable|enable] [nome...]"
|
||
toolsets:
|
||
description: "Elenca i toolset disponibili"
|
||
skills:
|
||
description: "Cerca, installa, ispeziona o gestisci le skill"
|
||
memory:
|
||
description: "Rivedi le scritture in memoria in attesa / attiva o disattiva il controllo di approvazione"
|
||
bundles:
|
||
description: "Elenca i bundle di skill (alias /<nome> per più skill)"
|
||
pet:
|
||
description: "Attiva/disattiva o adotta una mascotte petdex (/pet, /pet list, /pet <slug>)"
|
||
hatch:
|
||
description: "Genera un nuovo animaletto petdex da una descrizione"
|
||
learn:
|
||
description: "Impara una skill riutilizzabile da qualsiasi cosa tu descriva (directory, URL, questa chat, appunti)"
|
||
init:
|
||
description: "Genera o aggiorna le istruzioni di progetto AGENTS.md da una scansione del repository"
|
||
cron:
|
||
description: "Gestisci le attività pianificate"
|
||
suggestions:
|
||
description: "Rivedi le automazioni suggerite (accetta/ignora)"
|
||
blueprint:
|
||
description: "Configura un'automazione da un modello blueprint"
|
||
curator:
|
||
description: "Manutenzione delle skill in background (status, run, pin, archive, list-archived)"
|
||
kanban:
|
||
description: "Bacheca di collaborazione multi-profilo (attività, collegamenti, commenti)"
|
||
reload:
|
||
description: "Ricarica le variabili .env nella sessione in esecuzione"
|
||
reload-mcp:
|
||
description: "Ricarica i server MCP dalla configurazione"
|
||
reload-skills:
|
||
description: "Riesamina ~/.hermes/skills/ per trovare skill installate o rimosse di recente"
|
||
browser:
|
||
description: "Collega gli strumenti browser al tuo browser Chromium attivo via CDP, oppure passa alla modalità Browser Use"
|
||
plugins:
|
||
description: "Elenca i plugin installati e il loro stato"
|
||
commands:
|
||
description: "Sfoglia tutti i comandi e le skill (con paginazione)"
|
||
help:
|
||
description: "Mostra i comandi disponibili (/help skills elenca i comandi delle skill, /help <testo> filtra)"
|
||
palette:
|
||
description: "Apri la palette comandi con ricerca fuzzy (anche Ctrl+P)"
|
||
restart:
|
||
description: "Riavvia il gateway in modo controllato dopo aver completato le esecuzioni attive"
|
||
usage:
|
||
description: "Mostra l'utilizzo dei token e i limiti di frequenza; `reset` riscatta un reset del limite Codex accumulato"
|
||
subscription:
|
||
description: "Vedi il tuo piano Nous e modificalo nel browser"
|
||
login:
|
||
description: "Accedi con un account Nous (mantiene i tuoi connettori)"
|
||
topup:
|
||
description: "Mostra il tuo saldo Nous e gestisci la fatturazione sul portale"
|
||
platforms:
|
||
description: "Mostra lo stato del gateway e delle piattaforme di messaggistica"
|
||
platform:
|
||
description: "Metti in pausa, riprendi o elenca una piattaforma del gateway in errore"
|
||
copy:
|
||
description: "Copia l'ultima risposta dell'assistente negli appunti"
|
||
paste:
|
||
description: "Allega l'immagine presente negli appunti"
|
||
image:
|
||
description: "Allega un file immagine locale per il tuo prossimo prompt"
|
||
version:
|
||
description: "Mostra la versione di Hermes Agent"
|
||
debug:
|
||
description: "Carica un report di debug (info di sistema + log) e ottieni link condivisibili"
|
||
quit:
|
||
description: "Esci dalla CLI (usa --delete per eliminare anche la cronologia della sessione)"
|
||
cli:
|
||
billing:
|
||
load_failed: "{label}: {error}"
|
||
load_failed_label: "Impossibile caricare la fatturazione"
|
||
not_logged_in: "Non hai effettuato l'accesso a Nous Portal."
|
||
run_portal_then: "Esegui `hermes portal` per accedere, poi {cmd}."
|
||
org_line: "Org: {org}"
|
||
org_line_role: "Org: {org} · {role}"
|
||
bar_plan_label: "piano"
|
||
bar_topup_label: "ricarica"
|
||
bar_pct_used: " · {pct}% usato"
|
||
bar_plan: "{label}[{bar}] ${remaining} rimasti su ${total}{pct}"
|
||
bar_topup: "{label}[{bar}] ${remaining} · non scade mai"
|
||
total_spendable: "Totale spendibile: ${amount}"
|
||
one_time_setup: "! Configurazione una tantum"
|
||
allow_remote_spending_title: "Consenti la Spesa remota"
|
||
allow_remote_spending_detail: "Apre il browser per autorizzare questo terminale."
|
||
choice_allow_remote_spending: "Consenti la Spesa remota"
|
||
desc_allow_remote_spending: "apri il browser per autorizzare"
|
||
choice_not_now: "Non ora"
|
||
desc_not_now: "annulla"
|
||
opening_browser_remote_spending: "Apertura del browser per consentire la Spesa remota…"
|
||
couldnt_allow_remote_spending: "Impossibile consentire la Spesa remota: {error}"
|
||
remote_spending_allowed: "Spesa remota consentita."
|
||
portal_line: "Portale: {url}"
|
||
open_this_url: "Apri questo URL: {url}"
|
||
manage_on_portal_url: "Gestisci sul portale: {url}"
|
||
no_manage_url: "Nessun URL di gestione disponibile — il portale è configurato?"
|
||
stepup_stale: "La Spesa remota non è ancora attiva per questo terminale — l'autorizzazione non è andata a buon fine. Riprova, oppure fai questa modifica sul portale."
|
||
something_went_wrong: "Qualcosa è andato storto."
|
||
under_five: "meno di $5"
|
||
plan_free: "Free"
|
||
renews_suffix: " · si rinnova il {date}"
|
||
plan_line: "Piano: {plan}{renews}"
|
||
free_models_only_hint: "> Free · solo modelli gratuiti. Esegui /subscription per accedere ai modelli a pagamento."
|
||
low_balance_usage: "! Saldo basso · {amount} rimasti. Esegui /topup o /subscription."
|
||
usage_cta: "Esegui /subscription per cambiare piano · /topup per aumentare il saldo"
|
||
choice_cancel: "Annulla"
|
||
choice_back: "Indietro"
|
||
choice_go_back: "Torna indietro"
|
||
choice_close: "Chiudi"
|
||
desc_do_nothing: "non fare nulla"
|
||
desc_do_not_charge: "non addebitare"
|
||
choice_manage_on_portal: "Gestisci sul portale"
|
||
desc_open_billing_page: "apri la pagina di fatturazione nel browser"
|
||
topup_header: "Ricarica · saldo {balance}"
|
||
topup_title: "Ricarica il tuo saldo"
|
||
auto_reload_on_line: "Ricarica automatica: on — sotto {threshold} → ricarica fino a {reload_to}"
|
||
auto_reload_off_line: "Ricarica automatica: off"
|
||
card_line: "Carta: {card}"
|
||
no_saved_card_add_funds_hint: "Nessuna carta salvata — “Aggiungi fondi” ti guida nell'aggiungerne una."
|
||
actions_require_admin: "Le azioni di fatturazione richiedono un admin/proprietario dell'org."
|
||
remote_spending_off_for_org: "La Spesa remota è disattivata per questa org."
|
||
killswitch_reason_overview: "Un admin della fatturazione può attivarla dalla pagina Hermes Agent del portale per aggiungere fondi da qui."
|
||
killswitch_reason_buy: "Un admin della fatturazione può attivarla dalla pagina Hermes Agent del portale prima di aggiungere fondi."
|
||
add_funds_now_hint: "Aggiungi fondi ora — un addebito singolo, accreditato sul tuo saldo oggi."
|
||
refill_when_low_amounts: "Ricarica quando il saldo è basso — addebita {reload_to} automaticamente quando il saldo scende sotto {threshold}."
|
||
refill_when_low_generic: "Ricarica quando il saldo è basso — addebita automaticamente la tua carta quando il saldo scende sotto l'importo che imposti."
|
||
choice_add_funds: "Aggiungi fondi"
|
||
desc_add_funds: "un addebito singolo, accreditato sul tuo saldo oggi"
|
||
choice_auto_reload: "Ricarica automatica"
|
||
desc_auto_reload: "ricarica automaticamente quando il saldo si esaurisce"
|
||
choice_monthly_limit: "Limite mensile"
|
||
desc_monthly_limit: "mostra il tetto di spesa mensile (sola lettura)"
|
||
cancelled: "Annullato."
|
||
cancelled_yellow: "🟡 Annullato."
|
||
cancelled_no_funds: "Annullato. Nessun fondo aggiunto."
|
||
no_portal_url: "Nessun URL del portale disponibile."
|
||
complete_in_browser: "Completa le modifiche di fatturazione nel browser."
|
||
add_card_first: "Aggiungi prima una carta"
|
||
add_card_title: "Aggiungi una carta"
|
||
no_saved_card: "Nessuna carta salvata."
|
||
no_saved_card_short: "Nessuna carta salvata"
|
||
no_saved_card_lower: "nessuna carta salvata"
|
||
add_card_once_hint: "Aggiungi una carta una sola volta nella pagina di fatturazione del portale — dopo potrai ricaricare direttamente dal terminale."
|
||
add_card_then_recheck: "Aggiungi la carta nella pagina di fatturazione, poi scegli “controlla di nuovo” qui."
|
||
card_found_continuing: "Carta trovata: {card} — continuo."
|
||
still_no_card: "Ancora nessuna carta salvata — completa l'aggiunta sul portale, poi controlla di nuovo."
|
||
choice_add_card_on_portal: "Aggiungi una carta sul portale"
|
||
desc_add_card_on_portal: "apre la pagina di fatturazione nel browser"
|
||
choice_recheck_card: "L'ho aggiunta — controlla di nuovo"
|
||
desc_recheck_card: "ricontrolla la carta e continua"
|
||
add_funds: "Aggiungi fondi"
|
||
presets: "Preimpostati: {presets}"
|
||
run_interactive_to_purchase: "Esegui questo comando nella CLI interattiva per completare un acquisto."
|
||
desc_one_time_purchase: "acquisto singolo di crediti"
|
||
choice_custom_amount: "Importo personalizzato…"
|
||
desc_custom_amount: "inserisci un importo a tua scelta"
|
||
payment_line: "Pagamento: {card}"
|
||
amount_prompt: "Importo (USD):"
|
||
invalid_selection: "🔴 Selezione non valida."
|
||
confirm_purchase: "Conferma acquisto"
|
||
total_line: "Totale: {amount}"
|
||
portal_card_will_be_charged: "Verrà addebitata la carta salvata sul portale."
|
||
consent_charge: "Confermando, autorizzi Nous Research ad addebitare la tua carta."
|
||
choice_pay_now: "Paga {amount} ora"
|
||
desc_submit_charge: "invia l'addebito"
|
||
desc_manage_card_billing: "gestisci carta / fatturazione nel browser"
|
||
run_interactive_to_confirm: "Esegui nella CLI interattiva per confermare un acquisto."
|
||
pay_question: "Pagare {amount}?"
|
||
no_charge_id: "Nessun id di addebito restituito; controlla il portale."
|
||
charge_submitted: "Addebito inviato — conferma del pagamento in corso…"
|
||
could_not_check_charge: "🔴 Impossibile verificare l'addebito: {error}"
|
||
added_to_balance: "✓ {amount} aggiunti al tuo saldo."
|
||
still_processing: "🟡 Ancora in elaborazione dopo 5 minuti — è un timeout, non un errore. Controlla /billing o il portale tra poco."
|
||
charge_failed_authentication_required: "🔴 La tua banca richiede una verifica (3DS). Completala sul portale per concludere questo acquisto."
|
||
charge_failed_payment_method_expired: "🔴 La tua carta è scaduta. Aggiornala sul portale."
|
||
charge_failed_card_declined: "🔴 La tua carta è stata rifiutata. Prova un'altra carta sul portale."
|
||
charge_failed_generic: "🔴 L'addebito non è andato a buon fine ({reason})."
|
||
charge_error_no_payment_method: "💳 Nessuna carta salvata — ricarica e gestisci la fatturazione sul portale."
|
||
charge_error_remote_spending_disabled: "La Spesa remota è disattivata per questo account — un admin della fatturazione può attivarla dalla pagina Hermes Agent del portale."
|
||
charge_error_role_required: "Per aggiungere fondi serve un admin/proprietario dell'org. Chiedi a un admin, oppure gestisci sul portale."
|
||
charge_error_idempotency_conflict: "🔴 Quella chiave di addebito è già stata usata per un importo diverso. Avvia una nuova ricarica."
|
||
revoked_by_admin: "Un admin ha interrotto la spesa da questo terminale."
|
||
revoked_by_you: "Hai interrotto la spesa da questo terminale."
|
||
revoked_reconnect: "🔴 {who} Riconnettiti per ripristinarla — esegui `hermes portal` per autorizzare di nuovo."
|
||
session_logged_out: "🔴 La tua sessione è stata disconnessa. Esegui `hermes portal` per accedere di nuovo."
|
||
monthly_cap_reached_headroom: "🔴 Tetto di spesa mensile raggiunto — ${remaining} di margine rimasti."
|
||
monthly_cap_reached: "🔴 Tetto di spesa mensile raggiunto."
|
||
try_again_in_min: " (riprova tra ~{minutes} min)"
|
||
too_many_charges: "🟡 Troppi addebiti in questo momento{mins}. Non è un errore di pagamento."
|
||
remote_spending_needs_approval: "🔴 La Spesa remota richiede un'approvazione — esegui /topup per consentirla, poi riprova."
|
||
your_topup: "la tua ricarica"
|
||
charge_stepup_explain: "Per addebitare da questo terminale, consenti la Spesa remota una sola volta. Si apre il browser per autorizzare, poi {amount} riprende direttamente da qui."
|
||
charge_stepup_noninteractive: "Esegui `hermes portal` e consenti la Spesa remota, poi riprova."
|
||
charge_stepup_declined: "Nessun addebito effettuato. Esegui /topup quando vuoi consentire la Spesa remota."
|
||
charge_stepup_not_granted: "Impossibile consentire la Spesa remota — deve approvarla un admin o proprietario dell'org. La tua carta non è stata addebitata."
|
||
allowed_but_org_off: "La Spesa remota è consentita per questo terminale, ma è ancora disattivata per questa org. Un admin della fatturazione può attivarla dalla pagina Hermes Agent del portale; poi esegui di nuovo /topup."
|
||
allowed_no_card: "Spesa remota consentita — ma non c'è ancora nessuna carta salvata."
|
||
topup_on_portal_to_continue: "Ricarica e gestisci la fatturazione sul portale per continuare."
|
||
allowed_run_topup: "Spesa remota consentita. Esegui /topup per continuare."
|
||
choice_resume_topup: "Riprendi la ricarica di {amount}"
|
||
desc_resume_topup: "completa l'acquisto in sospeso"
|
||
resume_topup_title: "Riprendi la tua ricarica"
|
||
resume_topup_detail: "{amount} è pronto per essere completato — premi Invio per riprendere."
|
||
resuming_topup: "Ripresa della ricarica — conferma del pagamento in corso…"
|
||
auto_reload: "Ricarica automatica"
|
||
auto_reload_hint: "Aggiungi fondi automaticamente quando il saldo è basso."
|
||
card_on_file: "Carta salvata: {card}"
|
||
no_saved_card_manage_portal: "Nessuna carta salvata — gestisci la fatturazione sul portale."
|
||
auto_reload_rule: "sotto {threshold} → ricarica fino a {reload_to}"
|
||
auto_reload_rule_cap: "Sotto {threshold} → ricarica fino a {reload_to}"
|
||
currently: "Attualmente: {rule}"
|
||
auto_reload_on_detail: "On — {rule}"
|
||
run_interactive_to_configure: "Esegui nella CLI interattiva per configurare la ricarica automatica."
|
||
choice_edit_thresholds: "Modifica soglie"
|
||
desc_edit_thresholds: "cambia quando / quanto ricaricare"
|
||
choice_turn_off: "Disattiva"
|
||
desc_turn_off: "disattiva la ricarica automatica"
|
||
choice_agree_turn_on: "Accetta e attiva"
|
||
desc_agree_turn_on: "attiva la ricarica automatica"
|
||
amount_prompt_labeled: "{label} (USD)"
|
||
threshold_label: "Quando il saldo scende sotto"
|
||
reload_to_label: "Ricarica il saldo fino a"
|
||
reload_must_exceed_threshold: "🔴 L'importo di ricarica deve essere maggiore della soglia."
|
||
auto_reload_consent: "Confermando, autorizzi Nous Research ad addebitare {card} ogni volta che il saldo raggiunge {threshold}. Puoi disattivarla in qualsiasi momento qui o sul portale."
|
||
turn_on_auto_reload_question: "Attivare la ricarica automatica?"
|
||
auto_reload_enabled: "✅ Ricarica automatica attiva: sotto {threshold} → ricarica fino a {reload_to}."
|
||
auto_reload_disabled: "✅ Ricarica automatica disattivata."
|
||
monthly_spend_limit: "Limite di spesa mensile"
|
||
no_monthly_cap: "Nessun tetto mensile visibile (gestito sul portale)."
|
||
default_ceiling_suffix: " (tetto predefinito)"
|
||
used_this_month: "{spent} su {limit} usati questo mese{ceiling}"
|
||
monthly_limit_read_only: "Il limite mensile si imposta sul portale — il terminale lo mostra in sola lettura."
|
||
subscription:
|
||
load_failed_label: "Impossibile caricare l'abbonamento"
|
||
team_header: "Abbonamento team"
|
||
a_team_org: "un'organizzazione team"
|
||
team_connected: "Questo terminale è collegato a {org}. I team usano un saldo condiviso · usa /topup per aggiungere fondi."
|
||
personal_note: "Gli abbonamenti personali sono legati al tuo account personale."
|
||
your_plan: "il tuo piano"
|
||
cancels: "si annulla"
|
||
end_of_billing_period: "la fine del periodo di fatturazione"
|
||
end_of_cycle: "la fine del ciclo"
|
||
status_flip_cancels: " → si annulla"
|
||
status_flip_to: " → {tier}"
|
||
status_left: " · ${amount} rimanenti"
|
||
status_view_only: " · sola visualizzazione"
|
||
status_renews: " · si rinnova il {date}"
|
||
status_line: "Piano: {plan}{flip}{left}{tail}"
|
||
status_free: "Piano: Free · solo modelli gratuiti"
|
||
scheduled_change: "Modifica programmata"
|
||
scheduled_change_line: "{from_plan} ──▶ {to_plan} {when}"
|
||
scheduled_when: "· {when}"
|
||
keep_until_then: "Mantieni {plan} (e i suoi crediti) fino ad allora."
|
||
paid_models_need_subscription: "> I modelli a pagamento richiedono un abbonamento. Attivane uno per usarli."
|
||
low_balance: "! Saldo basso · {amount} rimanenti. Ricarica o passa a un piano superiore prima di un'interruzione a metà esecuzione."
|
||
plan_changes_need_admin: "Le modifiche al piano richiedono un admin o proprietario dell'organizzazione."
|
||
manage_url_line: "Gestisci il tuo abbonamento: {url}"
|
||
open_then_rerun: "Aprilo nel browser, poi esegui di nuovo /subscription."
|
||
start_subscription: "Attiva un abbonamento"
|
||
choose_plan: "Scegli un piano"
|
||
start_opens_portal: "Attivare un abbonamento apre il portale per aggiungere la tua carta."
|
||
desc_start_on_portal: "attiva {name} sul portale"
|
||
pick_plan_detail: "Scegli un piano per aprirlo sul portale."
|
||
cancelled_no_plan_started: "🟡 Annullato. Nessun piano attivato."
|
||
opening_portal_to_start: "Apertura del portale per attivare {plan}…"
|
||
open_url_to_start: "Apri questo URL per attivare {plan}: {url}"
|
||
finish_in_browser: "Completa nel browser, poi esegui di nuovo /subscription."
|
||
manage_your_subscription: "Gestisci il tuo abbonamento"
|
||
desc_open_subscription_page: "apri la pagina dell'abbonamento nel browser"
|
||
choice_copy_link: "Copia link"
|
||
desc_copy_link: "copia negli appunti l'URL di gestione dell'abbonamento"
|
||
copied: "📋 Copiato: {url}"
|
||
manage_url: "URL di gestione: {url}"
|
||
choice_keep_plan: "Mantieni {plan} (annulla la modifica programmata)"
|
||
desc_keep_plan: "annulla la modifica in attesa"
|
||
choice_change_plan: "Cambia piano"
|
||
desc_change_plan: "passa a un piano superiore o inferiore dal terminale"
|
||
choice_cancel_subscription: "Annulla abbonamento"
|
||
desc_cancel_subscription: "programma la cancellazione a fine periodo"
|
||
closed_no_change: "🟡 Chiuso. Nessuna modifica al piano."
|
||
no_other_plans: "Al momento non ci sono altri piani a cui passare."
|
||
direction_upgrade: "upgrade"
|
||
direction_downgrade: "downgrade"
|
||
tier_row: "{row} · {direction}"
|
||
desc_switch_to: "passa a {name}"
|
||
change_plan_title: "Cambia piano"
|
||
current_pick_detail: "Attuale: {plan}. Scegli un piano per vedere l'anteprima dell'effetto."
|
||
cancelled_no_plan_change: "🟡 Annullato. Nessuna modifica al piano."
|
||
checking_change: "Verifica della modifica…"
|
||
the_selected_plan: "il piano selezionato"
|
||
already_on_nothing_to_change: "Sei già su {plan} — niente da modificare."
|
||
cannot_confirm_here: "Questa modifica non può essere confermata qui — gestiscila sul portale."
|
||
confirm_plan_change: "Conferma la modifica del piano"
|
||
tag_charged_now: "· addebito immediato"
|
||
tag_scheduled_not_today: "· programmata · non oggi"
|
||
charged_amount_now: "{amount} ora (proporzionale)"
|
||
charged_prorated_now: "l'importo proporzionale ora"
|
||
upgrade_will_be_charged: "Upgrade a {plan}. Ti verrà addebitato {charged}."
|
||
card_on_subscription_charged: "L'addebito avverrà sulla carta associata al tuo abbonamento."
|
||
named_card_on_subscription_charged: "L'addebito avverrà su {card} — la carta associata al tuo abbonamento."
|
||
choice_pay_and_upgrade: "Paga {amount} e fai l'upgrade ora"
|
||
choice_upgrade_now_prorated: "Upgrade ora (addebito proporzionale)"
|
||
desc_charge_and_upgrade: "addebito + upgrade ora"
|
||
change_takes_effect: "Passaggio a {plan} — ha effetto {when}. Nessun addebito ora; mantieni il piano attuale fino ad allora."
|
||
choice_schedule_change: "Programma il passaggio a {plan}"
|
||
desc_apply_change: "applica questa modifica"
|
||
desc_do_not_change: "non modificare"
|
||
monthly_credits_change: "Variazione dei crediti mensili: {delta}."
|
||
confirm_cancellation: "Conferma la cancellazione"
|
||
cancel_stays_active_until: "Annulla {plan} — resta attivo fino a {end}, poi non si rinnoverà."
|
||
keep_remaining_credits: "Mantieni i crediti rimanenti per questo periodo. Puoi riprendere l'abbonamento prima della scadenza."
|
||
cancel_subscription_question: "Annullare l'abbonamento?"
|
||
desc_keep_your_plan: "mantieni il tuo piano"
|
||
cancelled_plan_unchanged: "🟡 Annullato. Il tuo piano non è cambiato."
|
||
your_new_plan: "il tuo nuovo piano"
|
||
upgrade_already_on_tier: "Sei già su {name}."
|
||
upgrade_upgraded: "Upgrade a {name} completato. I nuovi crediti mensili arriveranno tra poco."
|
||
upgrade_requires_action: "🟡 Questo upgrade richiede una verifica aggiuntiva (3DS). Completala sul portale."
|
||
upgrade_payment_failed: "🔴 La tua carta è stata rifiutata. Aggiorna il metodo di pagamento sul portale e riprova."
|
||
pending_scheduled: "Programmato — il tuo piano non cambia oggi. Lo mantieni fino alla fine del periodo di fatturazione, poi avviene il passaggio."
|
||
pending_cancel_scheduled: "Programmato — il tuo piano resta attivo fino alla fine del periodo di fatturazione, poi si annulla. Oggi non cambia nulla."
|
||
pending_resumed: "Annullato — resti sul tuo piano attuale."
|
||
rerun_to_review: "Esegui di nuovo /subscription in qualsiasi momento per controllarlo."
|
||
stepup_explain: "Per cambiare piano dal terminale, consenti Remote Spending una sola volta. Si apre il browser per l'autorizzazione, poi la modifica prosegue qui."
|
||
stepup_noninteractive: "Esegui `hermes portal` e consenti Remote Spending, poi esegui di nuovo /subscription."
|
||
stepup_declined: "Nessuna modifica effettuata. Consenti Remote Spending quando sei pronto."
|
||
stepup_not_granted: "Impossibile consentire Remote Spending — deve approvarlo un admin o proprietario di questa organizzazione."
|
||
remote_spending_not_allowed_yet: "🟡 Remote Spending non è ancora consentito. Consentilo, poi riprova."
|
||
upgrade_ambiguous: "🟡 Impossibile confermare l'upgrade — la tua carta potrebbe essere stata addebitata o meno."
|
||
rerun_to_check_plan: "Esegui di nuovo /subscription per controllare il tuo piano prima di riprovare."
|
||
model:
|
||
switched: "✓ Modello cambiato: {model}"
|
||
acting_model: "Modello attivo (addebitato per l'esecuzione): {model}"
|
||
reasoning_effort: "Livello di ragionamento: {effort}"
|
||
reasoning_effort_saved: "Livello di ragionamento: {effort} (salvato nella configurazione)"
|
||
saved: "Salvato in config.yaml"
|
||
saved_global: "Salvato in config.yaml (--global)"
|
||
next_turn_only: "(solo per il prossimo turno — viene ripristinato dopo una risposta)"
|
||
session_only: "(solo per questa sessione — aggiungi --global per renderlo permanente)"
|
||
effort_none: "nessuno (disattiva il ragionamento)"
|
||
effort_keep_current: "Mantieni il livello attuale"
|
||
no_authenticated_providers: "Nessun provider autenticato trovato."
|
||
usage_switch: "cambia modello (questa sessione)"
|
||
usage_switch_global: "cambia modello e salvalo come predefinito"
|
||
usage_switch_once: "cambia solo per il prossimo turno"
|
||
usage_switch_session: "cambia solo per questa sessione"
|
||
usage_switch_provider_model: "cambia provider + modello"
|
||
usage_switch_reasoning: "cambia e imposta il livello di ragionamento"
|
||
usage_switch_provider: "cambia provider"
|
||
usage_refresh: "ricarica gli elenchi dei modelli disponibili"
|
||
choice_switch_anyway: "Cambia comunque"
|
||
desc_switch_anyway: "Usa questo modello per la sessione Hermes corrente."
|
||
choice_cancel: "Annulla"
|
||
desc_keep_current_model: "Mantieni il modello attuale."
|
||
switch_cancelled: "Cambio di modello annullato."
|
||
selection_failed: "✗ Selezione del modello non riuscita: {error}"
|
||
switch_failed: "⚠ Passaggio al modello {model} non riuscito ({error}); resto su {old_model}."
|
||
cleared_picker_cache: "Cache del selettore di modelli svuotata. Aggiornamento..."
|
||
moa_one_shot_queued: "MoA one-shot in coda con il preset {preset}; il modello precedente verrà ripristinato dopo questo turno."
|
||
normalized_model: "Modello '{old}' normalizzato in '{new}' per {provider}."
|
||
normalized_copilot_model: "Modello Copilot '{old}' normalizzato in '{new}'."
|
||
stripped_provider_prefix: "Rimosso il prefisso del provider da '{old}'; uso '{new}' per {provider}."
|
||
restored_from_session: "Modello ripristinato dalla sessione: {model}"
|
||
could_not_load_config: "❌ impossibile caricare la configurazione: {error}"
|
||
tip_reset_new_session: "Suggerimento: `/reset` avvia subito una nuova sessione."
|
||
single_query:
|
||
query_label: "Richiesta:"
|
||
kanban_run_reclaimed: "kanban: l'esecuzione di questo worker è stata riassegnata prima dell'avvio; uscita"
|
||
shared:
|
||
cancel: "Annulla"
|
||
back: "← Indietro"
|
||
unknown: "sconosciuto"
|
||
unknown_error: "Errore sconosciuto"
|
||
noun_model: "modello"
|
||
label_enabled: "attivo"
|
||
label_disabled: "disattivato"
|
||
label_yes: "sì"
|
||
label_no: "no"
|
||
label_on: "on"
|
||
label_off: "off"
|
||
label_on_upper: "ON"
|
||
label_off_upper: "OFF"
|
||
label_value: "{label}: {value}"
|
||
just_now: "adesso"
|
||
ago_seconds: "{seconds}s fa"
|
||
ago_minutes: "{minutes} min fa"
|
||
ago_hours: "{hours}h fa"
|
||
duration_s: "{seconds}s"
|
||
duration_m: "{minutes}m"
|
||
duration_ms: "{minutes}m {seconds}s"
|
||
duration_ms_compact: "{minutes}m{seconds}s"
|
||
duration_hm: "{hours}h {minutes}m"
|
||
duration_hms: "{hours}h {minutes}m {seconds}s"
|
||
duration_dhm: "{days}d {hours}h {minutes}m"
|
||
duration_m_rest: "{minutes}m {rest}"
|
||
duration_hm_rest: "{hours}h {minutes}m {rest}"
|
||
no_active_agent: "(._.) Nessun agente attivo -- invia prima un messaggio."
|
||
n_more: "altri {count}"
|
||
more_not_shown: "altri non mostrati"
|
||
yes_no_default_yes: "S/n"
|
||
yes_no_default_no: "s/N"
|
||
yes_initial: "s"
|
||
tui:
|
||
approval_once: "Consenti una volta"
|
||
approval_session: "Consenti per questa sessione"
|
||
approval_always: "Aggiungi alla allowlist permanente"
|
||
approval_deny: "Nega"
|
||
approval_view: "Mostra il comando completo"
|
||
approval_title: "⚠️ Comando pericoloso"
|
||
approval_choose_full: "… (scegli {label})"
|
||
approval_command_truncated: "… (comando troncato — usa /logs o /debug per il testo completo)"
|
||
approval_description_truncated: "… (descrizione troncata)"
|
||
confirm_title: "Conferma azione"
|
||
confirm_footer: "Digita 1/2/3 o usa ↑/↓ e poi Invio. ESC/Ctrl+C annulla."
|
||
detail_truncated: "… (dettaglio troncato)"
|
||
clarify_title: "{agent_name} ha bisogno di una tua risposta"
|
||
clarify_question_count_one: "{count} domanda"
|
||
clarify_question_count_other: "{count} domande"
|
||
clarify_other_answer: "Altro: {text}"
|
||
clarify_other_type_below: "Altro (digita sotto)"
|
||
clarify_other_type_answer: "Altro (digita la tua risposta)"
|
||
clarify_guidance: "Digita la tua risposta nel prompt qui sotto, poi premi Invio."
|
||
picker_title_provider: "⚙ Selettore modelli — Scegli il provider"
|
||
picker_provider_row_one: "{name} ({count} modello)"
|
||
picker_provider_row_other: "{name} ({count} modelli)"
|
||
picker_current_marker: " ← attuale"
|
||
picker_current_hint: "Attuale: {model} su {provider}"
|
||
picker_title_effort: "⚙ Selettore modelli — Livello di ragionamento per {model}"
|
||
picker_current_labeled: "{label} ← attuale"
|
||
picker_effort_hint: "Si applica insieme al cambio di modello (stesso ambito) — Invio per scegliere"
|
||
picker_title_models: "⚙ Selettore modelli — {provider}"
|
||
picker_provider_fallback: "Provider"
|
||
picker_filter_hint: "Filtro: {query}▏ ({shown}/{total} corrispondenti — digita per restringere, Backspace per cancellare)"
|
||
picker_select_hint: "Seleziona un modello ({count} disponibili) — digita per filtrare"
|
||
picker_empty: "Nessun modello elencato per questo provider. Usa Indietro o Annulla."
|
||
palette_title: "⚙ Palette comandi"
|
||
palette_filter_hint: "Filtro: {query}▏ ({shown}/{total} corrispondenti — Invio inserisce, Esc annulla)"
|
||
palette_hint: "Digita per filtrare {total} comandi — ↑/↓ e poi Invio inserisce, Esc annulla"
|
||
palette_empty: "(nessun comando corrispondente)"
|
||
vault_code_title: "🔐 Codice di verifica per {site}"
|
||
vault_code_body: "{site} chiede un codice monouso (SMS, email o app di autenticazione).\nDigita il codice e premi Invio; {agent_name} lo inserisce nella pagina per te.\nInvio su una riga vuota salta il passaggio. Il modello non vede mai il codice."
|
||
vault_save_title: "🔐 Salva l'accesso per {site}"
|
||
vault_save_body: "L'agente ha raggiunto una pagina di accesso senza credenziali salvate per questo sito.\nDigita l'email / nome utente con cui accedi (visibile), poi Invio.\nInvio su una riga vuota salta il passaggio. Nulla di quanto scrivi qui viene mostrato al modello."
|
||
vault_save_pw_body: "Ora la password (nascosta). Viene cifrata su questa macchina, associata a\n{origin} e inserita nella pagina senza che il modello la veda mai.\nInvio su una riga vuota salta il passaggio."
|
||
vault_unlock_title: "🔐 Sblocca {backend}"
|
||
vault_unlock_body: "L'agente vuole accedere a un sito con credenziali salvate in {backend}.\nDigita la tua password principale (nascosta) per sbloccarlo per questa sessione.\nInvio su una riga vuota lo lascia bloccato. Il modello non vede mai la password."
|
||
sudo_title: "🔐 Password sudo richiesta"
|
||
sudo_body: "Inserisci la password qui sotto (nascosta), oppure premi Invio per saltare"
|
||
secret_title: "🔑 Configurazione skill richiesta"
|
||
secret_prompt: "Inserisci il valore per {var_name}"
|
||
secret_fallback_name: "segreto"
|
||
secret_body: "Inserisci il segreto qui sotto (nascosto), ESC o Ctrl+C per saltare"
|
||
connection_connect: "Connetti"
|
||
connection_continue: "Continua"
|
||
hint_sudo: "password nascosta · Invio per saltare"
|
||
hint_secret: "segreto nascosto · Invio per saltare"
|
||
hint_approval: "↑/↓ per selezionare, Invio per confermare"
|
||
hint_slash_confirm: "digita 1/2/3, oppure ↑/↓ per selezionare, Invio per confermare"
|
||
hint_connection_form: "digita il valore, Invio per il campo successivo · ↑/↓ sposta · ESC annulla"
|
||
hint_connection_url: "Invio per aprire nel browser · ESC annulla"
|
||
hint_connection_authorized: "↑/↓ seleziona, Invio per confermare"
|
||
hint_connection_waiting: "in attesa del backend… · Ctrl+C interrompe"
|
||
hint_connection_default: "configurazione connessione"
|
||
hint_vault_username: "visibile mentre digiti · Invio per continuare"
|
||
hint_clarify_freetext: "digita la tua risposta e premi Invio"
|
||
hint_clarify_batch: "↑/↓ per selezionare, Invio per bloccare, Tab domanda successiva"
|
||
hint_input_disabled: "input temporaneamente disattivato"
|
||
hint_input_queues: "l'input resta attivo; Invio mette in coda"
|
||
hint_command_running: "{frame} comando in corso · {detail}"
|
||
placeholder_recording: "registrazione... {shortcut} per fermare, Ctrl+C per annullare"
|
||
placeholder_transcribing: "trascrizione in corso..."
|
||
placeholder_vault_username: "digita email / nome utente, Invio per continuare · ESC per saltare"
|
||
placeholder_vault_code: "digita il codice, Invio per inviare · ESC per saltare"
|
||
placeholder_password: "digita la password (nascosta), Invio per inviare · ESC per saltare"
|
||
placeholder_secret: "digita il segreto (nascosto), Invio per inviare · ESC per saltare"
|
||
placeholder_choice: "digita 1/2/3, oppure usa ↑/↓ e poi Invio"
|
||
placeholder_answer: "digita qui la tua risposta e premi Invio"
|
||
placeholder_processing_command: "Elaborazione del comando..."
|
||
placeholder_busy: "msg=interrompi · /queue · /bg · /steer · Ctrl+C annulla"
|
||
placeholder_voice_idle: "digita o {shortcut} per registrare"
|
||
voice_recording_failed: "Registrazione vocale non riuscita: {error}"
|
||
recording_cancelled: "Registrazione annullata."
|
||
force_exiting: "⚡ Uscita forzata..."
|
||
interrupting_again_hint: "⚡ Interruzione dell'agente... (premi di nuovo Ctrl+C per forzare l'uscita)"
|
||
interrupting: "⚡ Interruzione dell'agente..."
|
||
suspend_unsupported: "La sospensione (Ctrl+Z) non è supportata su Windows."
|
||
suspended: "{agent_name} è stato sospeso. Esegui `fg` per riportare {agent_name} in primo piano."
|
||
steer_failed_queued: "Indirizzamento non riuscito ({error}) — messo in coda per il prossimo turno."
|
||
steered: "⏩ Indirizzato: '{preview}'"
|
||
images_attached_preview_one: "[{count} immagine allegata]"
|
||
images_attached_preview_other: "[{count} immagini allegate]"
|
||
queued_next_turn: "In coda per il prossimo turno: {preview}"
|
||
redirected_turn: "↪ Turno corrente reindirizzato: '{preview}'"
|
||
model_selection_failed: "✗ Selezione del modello non riuscita: {error}"
|
||
auto_attached_image: "📎 Immagine allegata automaticamente: {name}"
|
||
detected_file: "📄 File rilevato: {name}"
|
||
images_attached_one: "📎 {count} immagine allegata"
|
||
images_attached_other: "📎 {count} immagini allegate"
|
||
command_interrupted: "Comando interrotto."
|
||
welcome: "Benvenuto in Hermes Agent! Digita il tuo messaggio o /help per i comandi."
|
||
activated_skills_label: "Skill attivate:"
|
||
redaction_disabled_title: "⚠ La redazione dei segreti è DISATTIVATA"
|
||
redaction_disabled_body: "(HERMES_REDACT_SECRETS={value}). Chiavi API e token potrebbero comparire in chiaro nell'output della chat, nei JSON di sessione e nei log. Imposta {setting} in config.yaml per riattivarla."
|
||
stdin_unavailable: "Errore: stdin (fd 0) non è disponibile.\nPuò succedere con alcune installazioni di Python (es. cPython gestito da uv su macOS).\nProva a reinstallare Python con pyenv o Homebrew, poi riesegui: hermes setup"
|
||
shutting_down: "Chiusura in corso… (finalizzazione della sessione)"
|
||
session_deleted: "✓ Sessione {session_id} eliminata"
|
||
session_delete_missing: "✗ Sessione {session_id} non trovata per l'eliminazione"
|
||
voice:
|
||
err_termux_app_missing: "Rilevato il pacchetto comandi Termux:API, ma l'app Android manca.\nInstalla/aggiorna l'app Android Termux:API, poi riprova con /voice on."
|
||
err_mic_access: "La modalità vocale richiede l'accesso al microfono.\nEsegui pkg install termux-api e installa l'app Android Termux:API, poi riprova con /voice on."
|
||
err_audio_capture: "La modalità vocale richiede l'acquisizione audio."
|
||
err_stt_provider: "La modalità vocale richiede un provider STT per la trascrizione.\nEsegui hermes tools e configura Speech-to-Text, poi riavvia Hermes."
|
||
silence_autostop: "Silenzio rilevato, interruzione automatica..."
|
||
hint_continuous: "si interrompe da solo al silenzio | {shortcut} per fermare ed uscire dalla modalità continua"
|
||
hint_termux: "Acquisizione Termux:API | {shortcut} per fermare"
|
||
hint_stop: "{shortcut} per fermare"
|
||
recording: "● Registrazione..."
|
||
autorestart_failed: "Riavvio automatico della voce non riuscito: {error}"
|
||
no_speech: "Nessun parlato rilevato."
|
||
preparing_stt: "Preparazione del modello STT locale '{model}' (al primo uso potrebbe essere scaricato da Hugging Face)..."
|
||
transcribing: "Trascrizione in corso..."
|
||
stop_phrase: "Frase di stop rilevata — chiusura della chat vocale."
|
||
transcription_failed: "Trascrizione non riuscita: {error}"
|
||
processing_error: "Errore nell'elaborazione vocale: {error}"
|
||
recording_preserved: "Registrazione conservata in: {path}"
|
||
no_speech_stop: "Nessun parlato rilevato per 3 volte, modalità continua interrotta."
|
||
tts_failed: "Riproduzione TTS non riuscita: {error}"
|
||
interjection: "🎤 Intervento vocale — interruzione in corso…"
|
||
echo_ignored: "Ignorato probabile eco del TTS (non messo in coda)."
|
||
already_enabled: "La modalità vocale è già attiva."
|
||
unavailable_header: "Modalità vocale non disponibile in questo ambiente:"
|
||
requirements_header: "Requisiti della modalità vocale non soddisfatti:"
|
||
termux_install_cmd: "Esegui: pkg install termux-api"
|
||
termux_install_hint: "Poi installa/aggiorna l'app Android Termux:API per l'acquisizione dal microfono"
|
||
tts_enabled_suffix: " (TTS attivo)"
|
||
enabled: "Modalità vocale attivata{tts_status}"
|
||
record_key_hint: "{shortcut} per avviare/fermare la registrazione"
|
||
tts_toggle_hint: "/voice tts per attivare/disattivare l'output vocale"
|
||
disable_hint: "/voice off per disattivare la modalità vocale"
|
||
stop_phrase_typed: "Frase di stop digitata — chiusura della chat vocale."
|
||
disabled: "Modalità vocale disattivata."
|
||
wake_unavailable: "Parola di attivazione non disponibile: {error}"
|
||
wake_already: "La parola di attivazione è già in ascolto."
|
||
wake_requirements_header: "Requisiti della parola di attivazione non soddisfatti:"
|
||
wake_installing: "Installazione del motore per la parola di attivazione (primo uso — potrebbe volerci un minuto)..."
|
||
wake_start_failed: "Impossibile avviare la parola di attivazione: {error}"
|
||
wake_listening: "Parola di attivazione in ascolto"
|
||
wake_listening_hint: "(pronuncia \"{phrase}\" — /wake off per fermare)"
|
||
wake_stopped: "Parola di attivazione fermata."
|
||
wake_not_running: "La parola di attivazione non è in esecuzione."
|
||
wake_profile_hint: "Frase di attivazione per il profilo '{profile}' — esegui: hermes -p {profile}"
|
||
wake_detected: "✦ Parola di attivazione rilevata — in ascolto..."
|
||
wake_capture_failed: "Acquisizione dopo l'attivazione non riuscita: {error}"
|
||
state_listening: "IN ASCOLTO"
|
||
state_paused: "IN PAUSA"
|
||
state_off: "OFF"
|
||
state_on: "ON"
|
||
state_yes: "SÌ"
|
||
wake_status_title: "Stato parola di attivazione"
|
||
label_state: " Stato: {state}"
|
||
label_phrase: " Frase: \"{phrase}\""
|
||
label_provider: " Provider: {provider}"
|
||
label_surface: " Superficie: {surface}"
|
||
label_new_session: " Nuova sessione: {value}"
|
||
mic_silent_warning: "⚠ Il microfono restituisce solo silenzio — l'ascoltatore non sente nulla."
|
||
mic_silent_macos_hint: "Su macOS: Impostazioni di Sistema > Privacy e sicurezza > Microfono — consenti il tuo terminale/Hermes, poi /wake off + /wake on."
|
||
wake_enable_hint: "Attiva con /wake on"
|
||
enable_first_hint: "Attiva prima la modalità vocale: /voice on"
|
||
tts_no_provider: "Avviso: nessun provider TTS disponibile. Installa edge-tts o imposta le chiavi API."
|
||
tts_status: "TTS vocale {status}."
|
||
status_title: "Stato modalità vocale"
|
||
label_mode: " Modalità: {value}"
|
||
label_tts: " TTS: {value}"
|
||
label_recording: " Registrazione: {value}"
|
||
label_record_key: " Tasto di registrazione: {shortcut}"
|
||
label_requirements: "Requisiti:"
|
||
render:
|
||
response_transformed: "[Risposta trasformata dopo lo streaming]"
|
||
banner_tagline: "{name} - Framework per agenti AI"
|
||
banner_version: "Hermes Agent v{version} ({date})"
|
||
subagents:
|
||
cannot_steer_process: "I processi in background non possono essere indirizzati; interrompili o leggi il log."
|
||
count_live: "{count} attivi"
|
||
count_done: "{count} completati"
|
||
count_running: "{count} in esecuzione"
|
||
count_procs_one: "{count} processo"
|
||
count_procs_other: "{count} processi"
|
||
count_queued: "{count} in coda"
|
||
goal_parked: "obiettivo parcheggiato"
|
||
goal_paused: "obiettivo in pausa"
|
||
goal_active: "obiettivo attivo"
|
||
title_live_work: "Lavoro in corso"
|
||
title_subagents: "Subagenti"
|
||
title_processes: "Processi"
|
||
last_tool: "ultimo: {tool}"
|
||
starting: "avvio"
|
||
next_queued: "prossimo: {text}"
|
||
heading_full: "{title} · {count} · Ctrl+T espandi · Ctrl+R ripristina"
|
||
heading_medium: "{count} · Ctrl+T espandi · Ctrl+R ripristina"
|
||
heading_compact: "{count} · Ctrl+T · Ctrl+R"
|
||
heading_session_restore: "{count} · Ctrl+R ripristina"
|
||
heading_session_compact: "{count} · Ctrl+R"
|
||
subagents_heading: "Subagenti · {count} attivi · Ctrl+T espandi · Ctrl+R comprimi"
|
||
more_subagents: "+{count} altri · Ctrl+T tutti i subagenti"
|
||
controls_expand_collapse: " · Ctrl+T espandi · Ctrl+R comprimi"
|
||
processes_heading: "Processi · {summary}{controls}"
|
||
more_processes: "+{count} altri · Ctrl+T tutti i processi"
|
||
controls_collapse: " · Ctrl+R comprimi"
|
||
queue_heading: "Coda · {count} in coda · /queue list{controls}"
|
||
more_queued: "+{count} altri"
|
||
transcript_unavailable: "Trascrizione in tempo reale non ancora disponibile."
|
||
steer_prompt: "Indirizza: "
|
||
roster_empty: "Nessun subagente attivo né processo in background. I risultati arrivano nella conversazione."
|
||
entry_gone: "Questa voce non è più attiva."
|
||
noun_process: "processo"
|
||
noun_subagent: "subagente"
|
||
footer_confirm_stop: "Interrompere il {noun} selezionato? s conferma · Esc annulla"
|
||
footer_confirm_stop_compact: "Interrompere? s sì · Esc annulla"
|
||
footer_steering: "Invio mette in coda le indicazioni · Esc annulla (non interrompe)"
|
||
footer_steering_compact: "Invio invia · Esc annulla"
|
||
footer_steer_key: " s indirizza"
|
||
footer_steer_key_long: " · s indirizza"
|
||
footer_detail_compact: "PgSu/Giù ·{steer} x interrompi · Esc"
|
||
footer_roster_compact: "↑↓ · Invio segui · Ctrl+T chiudi"
|
||
footer_detail: "Esc elenco · PgSu/PgGiù segui{steer} · x interrompi"
|
||
footer_roster: "↑/↓ seleziona · Invio segui{steer} · x interrompi · q/Ctrl+T chiudi"
|
||
dock:
|
||
process_goal_label: "processo in background"
|
||
last_output: "ultimo: {detail}"
|
||
starting: "avvio"
|
||
exit_code: "uscita {code}"
|
||
verdict_killed: "terminato"
|
||
verdict_lost: "perso"
|
||
verdict_ago: "{verdict} · {seconds}s fa"
|
||
process_gone: "Questo processo non è più tracciato."
|
||
no_output: "Ancora nessun output."
|
||
approval:
|
||
bell_context: "approvazione"
|
||
label: "Approvazione"
|
||
timeout_denying: "⏱ Timeout — comando negato"
|
||
timed_out_no_response: "timeout (nessuna risposta)"
|
||
outcome_once: "consentito una volta"
|
||
outcome_session: "consentito per la sessione"
|
||
outcome_always: "aggiunto alla allowlist"
|
||
outcome_deny: "negato"
|
||
clarify:
|
||
bell_context: "chiarimento"
|
||
label: "Chiarimento"
|
||
timed_out_locked_answers: "(chiarimento scaduto dopo {timeout}s — restituite le risposte bloccate)"
|
||
connect:
|
||
bell_context: "configurazione connessione"
|
||
cannot_restart: "Questa connessione non può essere riavviata. Annulla e chiedi di nuovo all'agente."
|
||
secret_set: "Impostato"
|
||
set_up: "Configura {name}"
|
||
button_connect: "Connetti"
|
||
button_cancel: "Annulla"
|
||
button_continue: "Continua"
|
||
press_enter_open: "Premi Invio per aprire nel browser"
|
||
failed: "Connessione non riuscita"
|
||
authorized_no_tools: "Autorizzato. Strumenti non disponibili."
|
||
connected: "Connesso"
|
||
waiting: "In attesa…"
|
||
editor:
|
||
only_interactive: "L'editor esterno è disponibile solo nella CLI interattiva."
|
||
wait_for_command: "Attendi che il comando corrente finisca prima di aprire l'editor."
|
||
finish_active_prompt: "Completa il prompt attivo prima di aprire l'editor."
|
||
no_input_buffer: "Nessun buffer di input attivo disponibile per l'editor esterno."
|
||
open_failed: "Impossibile aprire l'editor esterno: {error}"
|
||
shell_command_failed: "Comando shell non riuscito: {error}"
|
||
command_failed: "Comando non riuscito: {error}"
|
||
queued_next_turn: "In coda per il prossimo turno: {preview}"
|
||
modal:
|
||
cancelled_no_input: "🟡 /{command} annullato (nessun input)."
|
||
unrecognized_choice: "🟡 Scelta '{raw}' non riconosciuta. /{command} annullato."
|
||
cancelled: "🟡 /{command} annullato. {unchanged}"
|
||
re_enable_hint: " Riattiva con `approvals.{setting}: true` in config.yaml."
|
||
persist_opt_out_failed: "⚠️ Impossibile salvare la disattivazione — {once_verb} solo per questa volta."
|
||
persist_failed_proceeding: "⚠️ Impossibile salvare la disattivazione — si procede solo per questa volta."
|
||
choice_prompt: "Scelta [1/2/3]: "
|
||
destructive_title: "⚠️ /{command} — distrugge lo stato della conversazione"
|
||
approve_once: "Approva una volta"
|
||
approve_once_detail: "procedi solo questa volta"
|
||
always_approve: "Approva sempre"
|
||
always_approve_detail: "procedi e silenzia questa richiesta per sempre"
|
||
cancel: "Annulla"
|
||
cancel_detail: "mantieni la conversazione attuale"
|
||
conversation_unchanged: "Conversazione invariata."
|
||
destructive_always_msg: "🔒 In futuro /clear, /new, /reset e /undo verranno eseguiti senza conferma."
|
||
bell_input_needed: "input richiesto"
|
||
bell_turn_complete: "turno completato"
|
||
palette:
|
||
category_skill: "Skill"
|
||
secret:
|
||
bell_sudo: "password sudo"
|
||
sudo_timeout: "⏱ Timeout — si continua senza sudo"
|
||
sudo_received: "✓ Password ricevuta (in cache per la sessione)"
|
||
sudo_skipped: "⏭ Saltato"
|
||
bell_unlock: "sblocca {name}"
|
||
stays_locked: "⏭ {name} resta bloccato"
|
||
unlocking_for_session: "✓ Sblocco di {name} per questa sessione"
|
||
bell_save_login: "salva le credenziali per {site}"
|
||
login_not_saved: "⏭ Credenziali per {site} non salvate"
|
||
login_saved: "✓ Credenziali per {site} salvate nel tuo vault"
|
||
bell_verification_code: "codice di verifica per {site}"
|
||
code_not_entered: "⏭ Nessun codice inserito per {site}"
|
||
code_entered: "✓ Codice inserito su {site}"
|
||
display:
|
||
ui_redrawn: "✓ Interfaccia ridisegnata"
|
||
status_bar_visible: "Barra di stato visibile"
|
||
status_bar_hidden: "Barra di stato nascosta"
|
||
exit:
|
||
unknown_argument: "✗ Argomento sconosciuto: {argument}. Usa /exit --delete per eliminare anche la cronologia della sessione."
|
||
goal:
|
||
barrier_lifted: "▶ Barriera dell'obiettivo rimossa — ripresa in corso."
|
||
paused_interrupted: "⏸ Obiettivo in pausa — il turno è stato interrotto. Usa /goal resume per continuare o /goal clear per fermarlo."
|
||
loop:
|
||
wakeup_firing: "↻ Risveglio /loop n. {tick} in avvio…"
|
||
paused_interrupted: "⏸ Loop in pausa — il turno di risveglio è stato interrotto. Usa /loop resume per continuare o /loop stop per terminarlo."
|
||
remaining: "↻ Loop: {label}."
|
||
plugins:
|
||
none_installed: "Nessun plugin utente installato."
|
||
install_hint: "Installane uno: hermes plugins install owner/repo"
|
||
drop_dir_hint: "Oppure copia una directory di plugin in {path}"
|
||
bundled_available: "({count} plugin integrati disponibili — vedi: hermes plugins list)"
|
||
user_plugins_header: "Plugin utente ({count}):"
|
||
count_noun_tools: "strumenti"
|
||
count_noun_hooks: "hook"
|
||
count_noun_commands: "comandi"
|
||
bundled_more: "(+{count} integrati — vedi: hermes plugins list)"
|
||
enable_disable_hint: "Attiva/disattiva: hermes plugins enable/disable <name>"
|
||
system_error: "Errore del sistema plugin: {error}"
|
||
queue:
|
||
usage: "Uso: /queue <prompt> | /queue list | /queue edit N <prompt> | /queue rm N | /queue move FROM TO | /queue clear"
|
||
queued: "In coda: {preview}"
|
||
queued_next_turn: "In coda per il prossimo turno: {preview}"
|
||
empty: "La coda è vuota."
|
||
pending_header: "Coda ({count} in attesa):"
|
||
cleared_one: "Rimosso {count} prompt dalla coda."
|
||
cleared_other: "Rimossi {count} prompt dalla coda."
|
||
removed: "Rimosso l'elemento {index} della coda: {preview}"
|
||
item_not_found: "Elemento {index} della coda non trovato. Dimensione attuale: {size}"
|
||
usage_edit: "Uso: /queue edit <number> <new prompt>"
|
||
usage_remove: "Uso: /queue rm <number>"
|
||
updated: "Aggiornato l'elemento {index} della coda: {preview}"
|
||
usage_move: "Uso: /queue move <from> <to>"
|
||
move_out_of_range: "Spostamento fuori dai limiti della coda. Dimensione attuale: {size}"
|
||
moved: "Elemento {source} della coda spostato in posizione {destination}."
|
||
usage_add: "Uso: /queue add <prompt>"
|
||
reload:
|
||
env_reloaded: "Ricaricato .env (variabili aggiornate: {count})"
|
||
steer:
|
||
usage: "Uso: /steer <prompt>"
|
||
failed: "Indirizzamento non riuscito: {error}"
|
||
queued: "⏩ Indirizzamento in coda — arriverà dopo la prossima chiamata a uno strumento: {preview}"
|
||
rejected_empty: "Indirizzamento rifiutato (contenuto vuoto)."
|
||
no_agent_queued: "Nessun agente in esecuzione; messo in coda come prossimo turno: {preview}"
|
||
title:
|
||
session_id: "ID sessione: {session_id}"
|
||
current: "Titolo: {title}"
|
||
pending: "Titolo (in attesa): {title}"
|
||
none_set_usage: "Nessun titolo impostato. Uso: /title <titolo della sessione>"
|
||
usage: "Uso: /title <titolo della sessione>"
|
||
empty_after_cleanup: "Il titolo è vuoto dopo la pulizia. Usa caratteri stampabili."
|
||
set: "Titolo della sessione impostato: {title}"
|
||
already_in_use: "Il titolo '{title}' è già usato dalla sessione {session_id}"
|
||
queued: "Titolo della sessione in coda: {title} (verrà salvato al primo messaggio)"
|
||
undo:
|
||
invalid_count: "(._.) Numero {value} non valido — usa /undo o /undo N."
|
||
removes_last_exchange: "Questa operazione rimuove dalla cronologia l'ultimo scambio utente/assistente."
|
||
removes_last_turns: "Questa operazione rimuove dalla cronologia gli ultimi {count} turni dell'utente."
|
||
resume:
|
||
tool_calls_one: "[{count} chiamata a strumento: {names}]"
|
||
tool_calls_other: "[{count} chiamate a strumenti: {names}]"
|
||
event_model_changed: "modello cambiato"
|
||
event_delegation_completed: "delega in background completata"
|
||
event_process_finished: "processo in background terminato"
|
||
event_resumed_interrupted: "turno interrotto ripreso"
|
||
session_id_hint: "Usa l'ID di una sessione di un'esecuzione CLI precedente (hermes sessions list)."
|
||
session_not_found: "Sessione non trovata: {session_id}"
|
||
compressed_into: "La sessione {session_id} è stata compressa in {descendant}; riprendo la sessione discendente con la tua trascrizione."
|
||
cannot_resume: "Impossibile riprendere la sessione: {error}"
|
||
cannot_resume_prefix: "Impossibile riprendere la sessione:"
|
||
resumed_session: "↻ Sessione ripresa"
|
||
counts_one: "({count} messaggio utente, {total} messaggi in totale)"
|
||
counts_other: "({count} messaggi utente, {total} messaggi in totale)"
|
||
session_no_messages: "Sessione {session_id} trovata ma senza messaggi. Si parte da zero."
|
||
title_applied: "Titolo della sessione applicato: {title}"
|
||
title_apply_failed: "Impossibile applicare il titolo in attesa: {error}"
|
||
label_you: "● Tu:"
|
||
label_assistant: "◆ {agent_name}:"
|
||
earlier_messages: "... {count} messaggi precedenti ..."
|
||
panel_title: "Conversazione precedente"
|
||
startup:
|
||
cooldown_cause_rate_limit: "dopo una risposta di rate-limit o quota"
|
||
cooldown_cause_token_refresh: "dopo un aggiornamento del token non riuscito"
|
||
cooldown_cause_http: "dopo una risposta HTTP {code}"
|
||
cooldown_cause_failed_request: "dopo una richiesta non riuscita"
|
||
credential_cooling_down: "La credenziale {provider} è in pausa {cause}; rientrerà in rotazione tra circa {minutes}m."
|
||
sign_in_lost: "accesso perso"
|
||
sign_in_was_lost: "L'accesso a {provider} è andato perso ({reason}); esegui `hermes auth add {provider}` per accedere di nuovo."
|
||
provider_resolution_failed: "Risoluzione del provider non riuscita."
|
||
no_api_key_for_provider: "⚠️ Nessuna chiave API trovata per il provider '{provider}'."
|
||
no_provider_configured: "⚠️ Nessun provider di inferenza configurato."
|
||
run_model_or_setup: "Esegui 'hermes model' per scegliere un provider, oppure 'hermes setup' per la configurazione iniziale."
|
||
empty_base_url: "⚠️ Il resolver del provider ha restituito un URL base vuoto. Controlla la configurazione del provider o esegui: hermes setup"
|
||
switching_to_fallback: "⚠️ {reason} — passo al fallback: {provider} / {model}"
|
||
first_run_no_provider: "☤ Nessun provider di inferenza è ancora configurato — rimediamo subito."
|
||
first_run_pick_provider: "Sceglierai un provider (l'OAuth di Nous Portal è il più rapido; nessuna chiave API richiesta) e un modello."
|
||
first_run_prompt: "Configurare un provider adesso? [S/n]:"
|
||
first_run_skipped: "Saltato. Esegui 'hermes model' o 'hermes setup' in qualsiasi momento."
|
||
first_run_cancelled: "Configurazione annullata. Esegui 'hermes model' in qualsiasi momento."
|
||
provider_setup_failed: "⚠️ Configurazione del provider non riuscita: {error}"
|
||
run_model_to_retry: "Esegui 'hermes model' per riprovare."
|
||
provider_configured: "✓ Provider configurato — sei pronto per chattare."
|
||
provider_setup_incomplete: "La configurazione del provider non è stata completata. Esegui 'hermes model' per riprovare."
|
||
tirith_unavailable: "⚠ scanner di sicurezza tirith attivo ma non disponibile — la scansione dei comandi userà solo il pattern matching"
|
||
unknown_toolsets: "Avviso: toolset sconosciuti: {names}"
|
||
stdin_unusable: "\nErrore: stdin non è utilizzabile ({error}).\nPuò succedere con alcune installazioni di Python (es. cPython gestito da uv su macOS)\nin cui kqueue non riesce a registrare il fd 0.\nProva a reinstallare Python tramite pyenv o Homebrew, poi esegui di nuovo: hermes setup"
|
||
warning: "Avviso: {warning}"
|
||
chat:
|
||
initializing_agent: "Inizializzazione dell'agente..."
|
||
context_refs: "[@ contesto: {count} riferimento/i, {tokens} token]"
|
||
context_injection_refused: "Iniezione del contesto rifiutata."
|
||
skipped_unreadable_images: "⚠ saltati {count} percorsi di immagini illeggibili"
|
||
attaching_images_natively: "📎 allego {count} immagine/i in modo nativo (il modello supporta la visione): {names}"
|
||
new_message_interrupting: "⚡ Nuovo messaggio rilevato, interrompo..."
|
||
unknown_error: "Errore sconosciuto"
|
||
continuous_voice_stopped: "Modalità voce continua interrotta a causa di un errore."
|
||
interrupted_marker: "── [Interrotto — elaboro il nuovo messaggio] ──"
|
||
iteration_budget_reached: "⚠ Budget di iterazioni raggiunto ({used}/{max}) — la risposta potrebbe essere incompleta"
|
||
sending_after_interrupt_multi: "⚡ Invio {count} messaggi dopo l'interruzione: '{preview}'"
|
||
sending_after_interrupt: "⚡ Invio dopo l'interruzione: '{preview}'"
|
||
delivering_leftover_steer: "⏩ Consegno lo /steer rimasto come prossimo turno: '{preview}'"
|
||
reasoning_label: "Ragionamento"
|
||
reasoning_more_lines: "... ({count} altre righe — /reasoning full per mostrarle)"
|
||
billing_cta_nous: "Esegui [bold]/topup[/] per aggiungere crediti, oppure [bold]/subscription[/] per cambiare piano."
|
||
billing_cta_provider: "Aggiungi crediti con {provider}"
|
||
your_provider: "il tuo provider"
|
||
billing_cta_switch: "Oppure cambia provider con [bold]/model <model> --provider <provider>[/]."
|
||
out_of_credits_title: "⚡ Crediti esauriti"
|
||
session:
|
||
fresh_start: "✨ (◕‿◕)✨ Si ricomincia! Schermo pulito e conversazione azzerata."
|
||
model_reset_default: "(modello ripristinato al valore predefinito della configurazione: {model})"
|
||
title_rejected: "Titolo rifiutato: {error}"
|
||
title_empty_untitled: "Il titolo è vuoto dopo la pulizia — sessione avviata senza titolo."
|
||
title_error_untitled: "{error} — sessione avviata senza titolo."
|
||
cwd_gone: "⚠ La directory di lavoro della sessione non esiste più: {recorded} — resto in {current}"
|
||
cwd_restored: "↻ Directory di lavoro: {path}"
|
||
cwd_enter_failed: "⚠ Impossibile entrare nella directory di lavoro della sessione {path}: {error}"
|
||
yolo_restored: "⚡ Modalità YOLO ripristinata dalla sessione — tutti i comandi auto-approvati. /yolo per disattivarla."
|
||
invalid_checkpoint: "Numero di checkpoint non valido. Usa 1-{count}."
|
||
status_tools_deferred: "strumenti differiti"
|
||
status_tools_count: "{count} strumenti"
|
||
status_toolsets: "toolset: {toolsets}"
|
||
status_provider: "provider: {provider}"
|
||
status_auth: "auth: {source}"
|
||
reasoning_display_suffix: " (visualizzazione: {state})"
|
||
yolo_bypass_suffix: " (bypass YOLO attivo)"
|
||
ctx_left_prefix: "{percent}% rimasto · "
|
||
ctx_tokens_used: "{left}{used} / {max} token usati"
|
||
status_title: "Stato Hermes CLI"
|
||
label_reasoning: "Ragionamento"
|
||
label_approvals: "Approvazioni"
|
||
label_context: "Contesto"
|
||
recent_intro: "(._.) Nessun messaggio nella chat corrente — ecco le sessioni recenti che puoi riprendere:"
|
||
recent_header: "Sessioni recenti:"
|
||
column_title: "Titolo"
|
||
column_preview: "Anteprima"
|
||
column_last_active: "Ultima attività"
|
||
column_id: "ID"
|
||
resume_usage: "Usa /resume <number>, /resume <session id> o /resume <session title> per continuare."
|
||
resume_example: "Esempio: /resume 2"
|
||
history_empty: "(._.) Nessuna cronologia della conversazione."
|
||
history_tools_header: "[Strumenti]"
|
||
history_tools_hidden_one: "({count} messaggio di strumento nascosto)"
|
||
history_tools_hidden_other: "({count} messaggi di strumenti nascosti)"
|
||
history_title: "(^_^) Cronologia della conversazione"
|
||
history_you_header: "[Tu #{index}]"
|
||
history_assistant_header: "[{agent_name} #{index}]"
|
||
history_no_text: "(nessuna risposta testuale)"
|
||
history_tool_calls_one: "(richiesta {count} chiamata a strumento)"
|
||
history_tool_calls_other: "(richieste {count} chiamate a strumenti)"
|
||
new_session_titled: "(^_^)v Nuova sessione avviata: {title}"
|
||
new_session: "(^_^)v Nuova sessione avviata!"
|
||
resume_index_out_of_range: "L'indice di ripresa {index} è fuori intervallo."
|
||
resume_no_args_hint: "Usa /resume senza argomenti per vedere le sessioni disponibili."
|
||
save_nothing: "(;_;) Nessuna conversazione da salvare."
|
||
save_dir_failed: "(x_x) Impossibile creare la directory di salvataggio {path}: {error}"
|
||
format_markdown: "Markdown"
|
||
save_ok: "(^_^)v Conversazione salvata in: {path} ({label})"
|
||
save_resume_hint: "Riprendi la sessione attiva con: hermes --resume {session_id}"
|
||
save_failed: "(x_x) Impossibile salvare: {error}"
|
||
retry_no_messages: "(._.) Nessun messaggio da riprovare."
|
||
retry_no_user_message: "(._.) Nessun messaggio utente da riprovare."
|
||
retry_unsafe: "(._.) Impossibile riprovare quel messaggio in sicurezza: {error}"
|
||
retry_rewind_failed: "(x_x) Riavvolgimento per il nuovo tentativo non riuscito; la cronologia non è stata modificata: {error}"
|
||
retrying: "(^_^)b Riprovo: \"{preview}\""
|
||
undo_no_messages: "(._.) Nessun messaggio da annullare."
|
||
undo_no_user_message: "(._.) Nessun messaggio utente da annullare."
|
||
undo_failed: "(x_x) Annullamento non riuscito; la cronologia non è stata modificata: {error}"
|
||
undo_ok_one: "(^_^)b Annullato {count} turno ({messages} messaggio/i). Backup salvato in: \"{backup}\""
|
||
undo_ok_other: "(^_^)b Annullati {count} turni ({messages} messaggio/i). Backup salvato in: \"{backup}\""
|
||
undo_remaining: "Messaggi rimasti nella cronologia: {count}."
|
||
yolo_state_locked_on: "bloccato su ON"
|
||
yolo_locked: "⚡ YOLO è {state} per questo processo (avviato con --yolo / HERMES_YOLO_MODE). /yolo non può disattivarlo — riavvia senza il flag per riattivare le approvazioni."
|
||
yolo_off: "⚠ Modalità YOLO {state} — i comandi pericolosi richiederanno approvazione."
|
||
yolo_on: "⚡ Modalità YOLO {state} — tutti i comandi auto-approvati. Usa con cautela."
|
||
compress_too_short: "(._.) Conversazione troppo breve per la compressione (servono almeno {min} messaggi)."
|
||
compress_no_agent: "(._.) Nessun agente attivo -- invia prima un messaggio."
|
||
compress_busy: "Compressione del contesto..."
|
||
compress_summarizing: "🗜️ Riepilogo fino a qui: {count} messaggi, mantenendo gli ultimi {keep_last} scambi alla lettera..."
|
||
compress_focus: "🗜️ Comprimo {count} messaggi, focus: \"{focus}\"..."
|
||
compress_plain: "🗜️ Comprimo {count} messaggi..."
|
||
compress_failed: "❌ Compressione non riuscita: {error}"
|
||
persist_prompt_summary: "{icon} {label}: {detail} → {outcome}"
|
||
goodbye: "Arrivederci! ☤"
|
||
exit_resume_hint: "Riprendi questa sessione con:"
|
||
exit_label_session: "Sessione: {session_id}"
|
||
exit_label_title: "Titolo: {title}"
|
||
exit_label_duration: "Durata: {duration}"
|
||
exit_label_messages: "Messaggi: {count} ({user} utente, {tool_calls} chiamate a strumenti)"
|
||
status_bar:
|
||
vim_insert: "INSERT"
|
||
vim_replace: "REPLACE"
|
||
vim_normal: "NORMAL"
|
||
battery_none: "nessuna batteria rilevata su questa macchina"
|
||
battery_none_nothing_shown: "nessuna batteria rilevata, quindi qui non verrà mostrato nulla"
|
||
battery_currently: " — attualmente {reading}"
|
||
battery_state: "Indicatore batteria {state}{detail}"
|
||
battery_usage: "Utilizzo: /battery [on|off|status]"
|
||
battery_on: "Indicatore batteria on{detail}"
|
||
battery_off: "Indicatore batteria off"
|
||
latency_label: "{value}s"
|
||
velocity_label: "{value} t/s"
|
||
voice_rec: "● REC"
|
||
voice_rec_stop_hint: "● REC {shortcut} per fermare"
|
||
voice_stt: "◉ STT"
|
||
voice_transcribing: "◉ Trascrizione..."
|
||
voice_tts_on: " | TTS on"
|
||
voice_continuous: " | Continua"
|
||
voice_mode_hint: "🎤 Modalità voce{tts}{cont} — {shortcut} per registrare"
|
||
goal_turns: "⊙ obiettivo {used}/{max}"
|
||
goal: "⊙ obiettivo"
|
||
ctx_pinned: " fissato"
|
||
ctx_unknown: "ctx --"
|
||
yolo_badge: "⚠ YOLO"
|
||
stash_header_one: "📌 Stash ({count} elemento)"
|
||
stash_header_other: "📌 Stash ({count} elementi)"
|
||
stash_footer: "↑↓ Enter=ripristina D=elimina Esc"
|
||
stash_footer_compact: "↑↓ ⏎ D Esc"
|
||
stream:
|
||
busy_skills_search: "Ricerca delle skill..."
|
||
busy_skills_browse: "Caricamento delle skill..."
|
||
busy_skills_inspect: "Ispezione della skill..."
|
||
busy_skills_install: "Installazione della skill..."
|
||
busy_skills: "Elaborazione del comando skills..."
|
||
busy_browser: "Configurazione del browser..."
|
||
busy_reload_mcp: "Ricaricamento dei server MCP..."
|
||
busy_reload_skills: "Ricaricamento delle skill..."
|
||
processing_command: "Elaborazione del comando..."
|
||
thinking_label: "[ragionamento]"
|
||
thinking_more_lines: "... ({count} altre righe)"
|
||
preview_more_lines_one: "... (+{count} altra riga)"
|
||
preview_more_lines_other: "... (+{count} altre righe)"
|
||
vision_analyzing: "👁️ analizzo {name} ({size_kb}KB)..."
|
||
vision_analyzed: "✓ immagine analizzata"
|
||
vision_failed: "⚠ analisi visiva non riuscita — percorso incluso per riprovare"
|
||
vision_error: "⚠ errore nell'analisi visiva — percorso incluso per riprovare"
|
||
tool_preparing: "{emoji} preparo {what}…"
|
||
reference_noun: "riferimento"
|
||
reference_header_indexed: "Riferimento {index}/{count} — {label}"
|
||
reference_header: "Riferimento — {label}"
|
||
aggregating_detail: "◆ aggregazione ({detail})"
|
||
aggregating: "◆ aggregazione"
|
||
background_running_one: "↩ Attività in background in esecuzione — riprenderò quando termina. Continua pure a chattare."
|
||
background_running_other: "↩ {count} attività in background in esecuzione — riprenderò quando terminano. Continua pure a chattare."
|
||
terminal:
|
||
recovered_mouse_modes: "Modalità di input del terminale ripristinate dopo report del mouse sfuggiti. Se si ripete, esegui /new o riavvia questa scheda."
|
||
recovered_cooked_mode: "Terminale ripristinato dopo una deriva in cooked mode (l'input dovrebbe rispondere di nuovo normalmente)."
|
||
image_badge_count: "[📎 {count} immagini allegate]"
|
||
image_badge_numbered: "[📎 Immagine #{index}]"
|
||
commands:
|
||
shared:
|
||
more_suffix: " (+{count} altri)"
|
||
set_saved: "✓ {label} impostato su '{value}' (salvato nella configurazione)"
|
||
set_session_only: "✓ {label} impostato su '{value}' (solo sessione)"
|
||
scope_saved: "(salvato nella configurazione)"
|
||
scope_save_failed: "(solo sessione; salvataggio della configurazione non riuscito)"
|
||
scope_session: "(questa sessione — usa --global per renderlo permanente)"
|
||
unknown_argument: "(._.) Argomento sconosciuto: {arg}"
|
||
usage: "Uso: {usage}"
|
||
needs_active_session: "{command} richiede una sessione di chat attiva per funzionare."
|
||
unavailable_no_session: "{label} non disponibile (nessuna sessione attiva)."
|
||
state_on: "ON"
|
||
state_off: "OFF"
|
||
error: "Errore: {error}"
|
||
agent_busy: "L'agente è occupato. Attendi la fine del turno corrente, poi riprova {command}."
|
||
no_active_agent_session: "Nessuna sessione agente attiva."
|
||
could_not_generate_diff: "Impossibile generare il diff"
|
||
busy:
|
||
short_queue: "mette in coda per il turno successivo"
|
||
short_steer: "indirizza l'esecuzione corrente (dopo la prossima chiamata a uno strumento)"
|
||
short_interrupt: "reindirizza subito l'esecuzione corrente"
|
||
long_queue: "Invio metterà in coda il messaggio mentre Hermes è occupato."
|
||
long_steer: "Invio indirizzerà il tuo messaggio nell'esecuzione corrente (dopo la prossima chiamata a uno strumento)."
|
||
long_interrupt: "Invio reindirizzerà l'esecuzione corrente mentre Hermes è occupato; /stop la annulla comunque."
|
||
usage: "Uso: /busy [queue|steer|interrupt|status]"
|
||
status: "Modalità input quando occupato: {mode}"
|
||
enter_while_busy: "Invio quando occupato: {behavior}"
|
||
label: "Modalità input quando occupato"
|
||
reasoning:
|
||
headline_on: "ON"
|
||
headline_off: "OFF"
|
||
headline_full: "COMPLETO"
|
||
headline_clamped: "LIMITATO a 10 righe"
|
||
note_show: "Il ragionamento del modello sarà mostrato durante e dopo ogni risposta."
|
||
note_full: "Il riquadro di riepilogo dopo la risposta mostrerà il ragionamento completo."
|
||
display_on: "on ✓"
|
||
display_off: "off"
|
||
full_state_full: "completo"
|
||
full_state_clamped: "limitato a 10 righe"
|
||
effort_line: "Sforzo di ragionamento: {level}"
|
||
display_line: "Visualizzazione ragionamento: {display} ({full})"
|
||
usage: "Uso: /reasoning <none|minimal|low|medium|high|xhigh|max|ultra|show|hide|full|clamp> [--global]"
|
||
display_saved: "✓ Visualizzazione ragionamento: {headline} (salvato)"
|
||
display_off_note: "Nota: la visualizzazione del ragionamento è OFF — esegui /reasoning show per vederlo."
|
||
valid_levels: "Livelli validi: none, minimal, low, medium, high, xhigh, max, ultra"
|
||
valid_display: "Visualizzazione: show, hide"
|
||
valid_scope: "Ambito: per sessione di default, --global per renderlo permanente"
|
||
effort_set: "✓ Sforzo di ragionamento impostato su '{effort}' {scope}"
|
||
indicator:
|
||
usage: "Uso: /indicator [{styles}]"
|
||
status: "Stile dell'indicatore di attività: {style}"
|
||
unknown_style: "(._.) Stile indicatore sconosciuto: {arg}"
|
||
label: "Stile dell'indicatore di attività"
|
||
note: "La TUI applicherà il nuovo stile al prossimo aggiornamento dello schermo."
|
||
fast:
|
||
not_supported: "(._.) /fast è disponibile solo per i modelli che supportano la modalità veloce (OpenAI Priority Processing o Anthropic Fast Mode)."
|
||
feature_generic: "Modalità veloce"
|
||
feature_anthropic: "Anthropic Fast Mode"
|
||
feature_openai: "Priority Processing"
|
||
feature_ultrafast: "OpenAI Ultrafast"
|
||
ultrafast_not_supported: "(._.) Ultrafast è disponibile solo per GPT-6 Astra (modello attuale: {model})."
|
||
usage: "Uso: /fast [normal|fast|auto|cold|ultrafast|status] [--global]"
|
||
status: "{feature}: {status}"
|
||
set_to: "✓ {feature} impostato su {value} {scope}"
|
||
hatch:
|
||
progress_compose: "┊ composizione dello spritesheet…"
|
||
progress_save: "┊ salvataggio…"
|
||
progress_drawing: "┊ disegno {state}…"
|
||
describe_prompt: "(o_o) Descrivi il tuo pet: "
|
||
usage: "(o_o) Uso: /hatch <description> (es. /hatch a tiny cyber fox)"
|
||
default_name: "Pet"
|
||
designing: "(o_o) Progettazione di '{concept}'… (circa un minuto di chiamate al modello immagini)"
|
||
base_failed: "(x_x) Impossibile generare l'aspetto di base: {error}"
|
||
no_base_draft: "(x_x) Nessuna bozza di base ricevuta — riprova."
|
||
failed: "(x_x) Schiusa non riuscita: {error}"
|
||
hatched: "(^_^)b {name} è nato ed è stato adottato — comparirà tra poco!"
|
||
pet:
|
||
is_out: "(^_^)b {name} è fuori — comparirà tra poco."
|
||
put_away_named: "(-_-)zzZ {name} messo a riposo."
|
||
put_away: "(-_-)zzZ Pet messo a riposo."
|
||
usage_scale: "(o_o) Uso: /pet scale <factor> (es. /pet scale 0.5)"
|
||
scale_set: "(^_^) Scala del pet → {scale}."
|
||
fetching: "(o_o) Recupero di '{name}' dal petdex…"
|
||
adopt_failed: "(x_x) Impossibile adottare '{name}': {error}"
|
||
error: "(x_x) {error}"
|
||
diff:
|
||
label_working: "Non in stage"
|
||
label_staged: "In stage"
|
||
label_all: "Tutto (rispetto a HEAD)"
|
||
untracked: "Non tracciati:"
|
||
and_more: "... e altri {count}"
|
||
more_lines: "... ({count} righe in più — {hint})"
|
||
stat_hint: "esegui /diff --stat per un riepilogo"
|
||
stat_hint_session: "esegui /diff session --stat per un riepilogo"
|
||
not_enabled: "I checkpoint non sono abilitati, quindi non esiste una baseline di sessione.\nAbilitali con: hermes --checkpoints\nOppure in config.yaml: checkpoints: { enabled: true }\n(Il /diff semplice funziona comunque — usa git direttamente.)"
|
||
no_session_changes: "Nessuna modifica — Hermes non ha ancora modificato alcun file qui."
|
||
rollback:
|
||
not_enabled: "I checkpoint non sono abilitati.\nAbilitali con: hermes --checkpoints\nOppure in config.yaml: checkpoints: { enabled: true }"
|
||
none_here_showing_all: "Nessun checkpoint per {cwd} — mostro tutte le directory."
|
||
all_directories: "tutte le directory"
|
||
usage_diff: "Uso: /rollback diff <N>"
|
||
no_changes_since: "Nessuna modifica da questo checkpoint."
|
||
more_lines: "... ({count} righe in più, mostro le prime 80)"
|
||
restored_all: "✅ Ripristinato al checkpoint {hash}: {reason}"
|
||
restored_file: "✅ Ripristinato {file} dal checkpoint {hash}: {reason}"
|
||
snapshot_saved: "Uno snapshot pre-rollback è stato salvato automaticamente."
|
||
chat_turn_undone: "Turno di chat annullato per corrispondere allo stato ripristinato dei file."
|
||
snapshot:
|
||
unknown_subcommand: "Sottocomando sconosciuto: {subcommand}"
|
||
usage: "Uso: /snapshot [list|create [label]|restore <id>|prune [N]]"
|
||
none_yet: "Nessuno snapshot di stato ancora."
|
||
create_hint: "Creane uno: /snapshot create [label]"
|
||
list_header: "Snapshot di stato ({dir}/state-snapshots/):"
|
||
col_num: "#"
|
||
col_id: "ID"
|
||
col_files: "File"
|
||
col_size: "Dimensione"
|
||
col_label: "Etichetta"
|
||
created: "Snapshot creato: {snapshot_id}"
|
||
nothing_to_snapshot: "Nessun file di stato trovato di cui fare uno snapshot."
|
||
usage_restore: "Uso: /snapshot restore <snapshot-id>"
|
||
most_recent: "Più recente: {snapshot_id}"
|
||
invalid_number: "Numero di snapshot non valido. Usa 1-{max}."
|
||
restored: "Stato ripristinato da: {snapshot_id}"
|
||
restart_recommended: "Riavvio consigliato per i processi gateway/dashboard affinché rilevino le modifiche a state.db."
|
||
not_found: "Snapshot non trovato: {snapshot_id}"
|
||
restore_incomplete: "Lo snapshot {snapshot_id} non è stato ripristinato completamente; alcuni file sono stati rifiutati (vedi i log)"
|
||
usage_prune: "Uso: /snapshot prune [keep-count]"
|
||
pruned: "Eliminati {deleted} snapshot vecchi (conservati: {keep})."
|
||
export:
|
||
usage: "Uso: /export [profile] [-o output.tar.gz]"
|
||
exported: "✓ Esportato '{name}' in {path}"
|
||
share_hint: "Condividilo: l'altro utente esegue /import o `hermes profile import <archive>`."
|
||
import:
|
||
usage: "Uso: /import <archive.tar.gz> [--name <name>]"
|
||
imported: "✓ Profilo '{name}' importato in {path}"
|
||
wrapper_created: "Wrapper creato: {path}"
|
||
use_it: "Per usarlo: hermes -p {name}"
|
||
stop:
|
||
none_running: "Nessun processo in background in esecuzione."
|
||
stopping: "Interruzione di {count} processi in background..."
|
||
stopped: "✅ Processi interrotti: {count}."
|
||
interrupted_delegations: "✅ Delegazioni in background interrotte: {count}."
|
||
agents:
|
||
running_processes: "Processi in esecuzione: {count}"
|
||
recently_finished: "Terminati di recente: {count}"
|
||
background_delegations: "Delegazioni in background: {count} in esecuzione"
|
||
no_progress: " · nessun progresso da {seconds}s — interruzione in corso"
|
||
quiet: " · silenzio da {seconds}s"
|
||
in_tool: "in {tool}"
|
||
between_turns: "tra un turno e l'altro"
|
||
child_line: "└ figlio {index}: {api_calls} chiamate API · {doing}"
|
||
last_activity: " · ultima attività {seconds}s fa"
|
||
agent_running: "Agente: in esecuzione"
|
||
agent_idle: "Agente: inattivo"
|
||
journey:
|
||
failed: "/journey non riuscito: {error}"
|
||
paste:
|
||
no_image: "(._.) Nessuna immagine trovata negli appunti"
|
||
attached: "📎 Immagine #{index} allegata dagli appunti"
|
||
extract_failed: "(>_<) Gli appunti contengono un'immagine ma l'estrazione non è riuscita"
|
||
copy:
|
||
nothing_yet: "Niente da copiare per ora."
|
||
usage: "Uso: /copy [number]"
|
||
invalid_number: "Numero di risposta non valido. Usa 1-{max}."
|
||
nothing_in_responses: "Niente da copiare nelle risposte dell'assistente per ora."
|
||
nothing_in_response: "Niente da copiare in quella risposta dell'assistente."
|
||
copied_osc52: "Risposta dell'assistente #{index} copiata via OSC 52 (richiede il supporto del terminale)"
|
||
copied: "Risposta dell'assistente #{index} copiata negli appunti"
|
||
failed: "Copia negli appunti non riuscita: {error}"
|
||
image:
|
||
usage: "Uso: /image <path> es. /image {example}"
|
||
not_found: "(>_<) File non trovato: {path}"
|
||
unsupported: "(._.) Non è un file immagine supportato: {name}"
|
||
attached: "📎 Immagine allegata: {name}"
|
||
now_type_prompt: "Ora digita il tuo prompt (o usa --image in modalità query singola): {text}"
|
||
tools:
|
||
usage: "(._.) Uso: /tools {subcommand} <name> [name ...]"
|
||
example_toolset: "Toolset integrato: /tools {subcommand} web"
|
||
example_mcp: "Strumento MCP: /tools {subcommand} github:create_issue"
|
||
disabling: "Disattivazione di {names}..."
|
||
enabling: "Attivazione di {names}..."
|
||
session_reset: "Sessione reimpostata. La nuova configurazione degli strumenti è attiva."
|
||
profile:
|
||
profile: "Profilo: {profile}"
|
||
home: "Home: {home}"
|
||
handoff:
|
||
usage: "Uso: /handoff <platform>"
|
||
usage_detail_1: "Trasferisce la sessione corrente al canale principale di quella piattaforma."
|
||
usage_detail_2: "La sessione CLI termina qui; riprendila più tardi con /resume."
|
||
already_in_flight: "La sessione è già in fase di trasferimento. Attendi che si stabilizzi, poi riprova."
|
||
queued: "Trasferimento di '{title}' → {platform} in coda (canale principale: {home})."
|
||
waiting: "In attesa che il gateway lo prenda in carico..."
|
||
config_load_failed: "Impossibile caricare la configurazione del gateway: {error}"
|
||
unknown_platform: "Piattaforma sconosciuta '{platform}'."
|
||
platform_not_enabled: "La piattaforma '{platform}' non è configurata/attiva nel gateway."
|
||
no_home_channel: "Nessun canale principale configurato per {platform}."
|
||
set_home_hint: "Impostane uno prima con /sethome nella chat di destinazione."
|
||
session_row_failed: "Impossibile garantire la riga di sessione in state.db: {error}"
|
||
picked_up: "Il gateway l'ha preso in carico; trasferimento in corso..."
|
||
complete: "↻ Trasferimento completato. La sessione è ora attiva su {platform}."
|
||
resume_hint: "Riprendila più tardi su questa CLI con: /resume {title}"
|
||
unknown_error: "errore sconosciuto"
|
||
failed: "Trasferimento non riuscito: {error}"
|
||
session_intact_retry: "La tua sessione CLI è intatta. Riprova /handoff, oppure usa /resume manualmente sulla piattaforma."
|
||
still_transferring: "Trasferimento ancora in corso (l'agente sta riproducendo la tua sessione sulla destinazione)..."
|
||
taking_long: "Il gateway sta impiegando insolitamente tanto a completare il trasferimento."
|
||
check_platform: "Controlla {platform} — la sessione potrebbe ancora arrivare lì."
|
||
no_longer_waiting: "Questa CLI non è più in attesa. Evita di continuare la sessione qui;"
|
||
retry_when_settled: "se non arriva nulla, riprova /handoff quando lo stato si è stabilizzato."
|
||
timed_out: "Timeout in attesa del gateway. `hermes gateway` è in esecuzione?"
|
||
session_intact: "La tua sessione CLI è intatta."
|
||
resume:
|
||
usage: "Uso: /resume <number|session_id_or_title>"
|
||
tip_find_sessions: "Suggerimento: usa /history o `hermes sessions list` per trovare le sessioni."
|
||
already_on: "Sei già su quella sessione."
|
||
resumed_one: "↻ Sessione ripresa {session_id}{title} ({count} messaggio utente, {total} in totale)"
|
||
resumed_other: "↻ Sessione ripresa {session_id}{title} ({count} messaggi utente, {total} in totale)"
|
||
resumed_empty: "↻ Sessione ripresa {session_id}{title} — nessun messaggio, si parte da zero."
|
||
not_found: "Sessione non trovata: {target}"
|
||
not_found_hint: "Usa /sessions o `hermes sessions list` per vedere le sessioni disponibili."
|
||
compressed_redirect: "La sessione {session_id} è stata compressa in {resolved_id}; riprendo la sessione discendente con la tua trascrizione."
|
||
sessions:
|
||
none_yet: "(._.) Nessuna sessione precedente."
|
||
branch:
|
||
branched_one: "⑂ Sessione ramificata \"{title}\" ({count} messaggio utente)"
|
||
branched_other: "⑂ Sessione ramificata \"{title}\" ({count} messaggi utente)"
|
||
original_session: "Sessione originale: {session_id}"
|
||
branch_session: "Sessione ramo: {session_id}"
|
||
worktree:
|
||
active: "Worktree attivo: {path}"
|
||
branch: "Branch: {branch}"
|
||
none_active: "Nessun worktree attivo per questa sessione."
|
||
hint_new: "/worktree new [name] — creane uno e sposta questa sessione al suo interno"
|
||
hint_prune: "/worktree prune — recupera i worktree obsoleti e i branch già uniti"
|
||
not_in_repo_note: "(non all'interno di un repository git)"
|
||
unknown_subcommand: "Sottocomando /worktree sconosciuto: {subcommand}"
|
||
usage: "Uso: /worktree [new [name] | list]"
|
||
new_requires_repo: "❌ /worktree new richiede di trovarsi all'interno di un repository git."
|
||
not_in_repo: "Non all'interno di un repository git."
|
||
actions_planned: "Azioni pianificate: {count}."
|
||
actions_done: "Azioni completate: {count}."
|
||
nothing_to_reclaim: "Niente da recuperare — i worktree/branch rimanenti contengono lavoro reale."
|
||
preserved: "Worktree conservati con lavoro reale: {count}:"
|
||
list_failed: "Impossibile elencare i worktree."
|
||
enter_failed: "⚠ Worktree creato ma impossibile entrarci: {error}"
|
||
ready: "✅ Worktree pronto: {path}"
|
||
tools_in_worktree: "Gli strumenti terminale e file ora operano nel worktree."
|
||
personality:
|
||
title: "(^o^)/ Personalità"
|
||
none_option: "(nessun overlay di personalità)"
|
||
usage: "Uso: /personality <name> (* = attiva)"
|
||
unknown: "(._.) Personalità sconosciuta: {name}"
|
||
available: "Disponibili: none, {available}"
|
||
scope_saved: "(salvato nella configurazione)"
|
||
scope_session: "(solo sessione)"
|
||
cleared: "{face} Personalità rimossa {scope}"
|
||
cleared_note: "Nessun overlay di personalità — uso il comportamento base dell'agente."
|
||
set_to: "{face} Personalità impostata su '{name}' {scope}"
|
||
cron:
|
||
repeat_must_be_integer: "(._.) --repeat deve essere un numero intero"
|
||
unknown_command: "(._.) Comando cron sconosciuto: {subcommand}"
|
||
available: "Disponibili: list, add, edit, pause, resume, run, remove"
|
||
overview_title: "(^_^) Attività pianificate"
|
||
overview_commands: "Comandi:"
|
||
overview_usage: "/cron list\n/cron add \"every 2h\" \"Controlla lo stato del server\" [--skill blogwatcher]\n/cron edit <job_id> --schedule \"every 4h\" --prompt \"Nuova attività\"\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: "Job attuali:"
|
||
skills: "Skill: {skills}"
|
||
skills_none: "Skill: nessuna"
|
||
next_short: "Prossima"
|
||
no_jobs_hint: "Nessun job pianificato. Usa '/cron add' per crearne uno."
|
||
no_jobs: "(._.) Nessun job pianificato."
|
||
list_header: "Job pianificati:"
|
||
id: "ID: {job_id}"
|
||
name: "Nome: {name}"
|
||
state: "Stato: {state}"
|
||
schedule: "Pianificazione: {schedule}"
|
||
schedule_repeat: "Pianificazione: {schedule} ({repeat})"
|
||
next_run: "Prossima esecuzione: {value}"
|
||
next_run_na: "Prossima esecuzione: N/D"
|
||
prompt: "Prompt: {prompt}"
|
||
status_delivery_failed: "delivery_failed: {error}"
|
||
status_error: "errore: {error}"
|
||
last_run: "Ultima esecuzione: {when} ({status})"
|
||
usage_add: "(._.) Uso: /cron add <schedule> <prompt>"
|
||
need_prompt_or_skill: "(._.) Indica un prompt o almeno una skill"
|
||
create_failed: "(x_x) Impossibile creare il job: {error}"
|
||
created: "(^_^)b Job creato: {job_id}"
|
||
usage_edit: "(._.) Uso: /cron edit <job_id> [--schedule ...] [--prompt ...] [--skill ...]"
|
||
job_not_found: "(._.) Job non trovato: {job_id}"
|
||
update_failed: "(x_x) Impossibile aggiornare il job: {error}"
|
||
updated: "(^_^)b Job aggiornato: {job_id}"
|
||
usage_action: "(._.) Uso: /cron {subcommand} <job_id>"
|
||
pause_failed: "(x_x) Impossibile mettere in pausa il job: {error}"
|
||
resume_failed: "(x_x) Impossibile riprendere il job: {error}"
|
||
run_failed: "(x_x) Impossibile eseguire il job: {error}"
|
||
remove_failed: "(x_x) Impossibile rimuovere il job: {error}"
|
||
removed: "(^_^)b Job rimosso: {name} ({job_id})"
|
||
did_not_run: "(x_x) Job non eseguito: {name} ({job_id})\n {reason}"
|
||
paused: "(^_^)b Job in pausa: {name} ({job_id})"
|
||
resumed: "(^_^)b Job ripreso: {name} ({job_id})"
|
||
triggered: "(^_^)b Job avviato: {name} ({job_id})"
|
||
suggestions:
|
||
failed: "Comando suggestions non riuscito: {error}"
|
||
blueprint:
|
||
failed: "Comando cron blueprint non riuscito: {error}"
|
||
curator:
|
||
failed: "(._.) curator: {error}"
|
||
kanban:
|
||
failed: "(._.) errore kanban: {error}"
|
||
memory:
|
||
unknown_subcommand: "Sottocomando /memory sconosciuto. Usa: pending, approve <id>, reject <id>, approval <on|off>."
|
||
learn:
|
||
from_description: "⚡ Sto creando una skill da quanto hai descritto..."
|
||
from_conversation: "⚡ Sto creando una skill da questa conversazione..."
|
||
plan:
|
||
planning: "📋 Pianificazione: {task}"
|
||
from_conversation: "📋 Pianificazione dal contesto di questa conversazione..."
|
||
init:
|
||
updating: "⚡ Aggiornamento di AGENTS.md da una scansione del progetto..."
|
||
generating: "⚡ Generazione di AGENTS.md da una scansione del progetto..."
|
||
background:
|
||
usage: "Uso: /bg <prompt>\nEsempio: /bg Riassumi le principali notizie di HN di oggi\n(Per una domanda a margine su questa conversazione, usa /btw <question>.)\nL'attività viene eseguita in una sessione separata e i risultati compaiono qui al termine."
|
||
no_credentials: "(>_<) Impossibile avviare l'attività in background: nessuna credenziale valida."
|
||
started: "🔄 Attività in background #{number} avviata: \"{preview}\""
|
||
task_id: "ID attività: {task_id}"
|
||
keep_chatting: "Puoi continuare a chattare — i risultati compariranno al termine."
|
||
label: "Attività in background #{number}"
|
||
complete: "✅ Attività in background #{number} completata"
|
||
prompt: "Prompt: \"{preview}\""
|
||
title_suffix: "(background #{number})"
|
||
no_response: "(Nessuna risposta generata)"
|
||
side_result:
|
||
complete: "{label} completata"
|
||
failed: "❌ {label} non riuscita: {error}"
|
||
login:
|
||
label: "Accesso"
|
||
title_suffix: "(accesso)"
|
||
no_result: "(Nessun risultato)"
|
||
btw:
|
||
usage: "Uso: /btw <question>\nEsempio: /btw in quale file era quell'errore?\nRisponde a una rapida domanda su questa conversazione senza interromperla.\n(Per un'attività in background indipendente, usa /bg <prompt>.)"
|
||
no_credentials: "(>_<) Impossibile rispondere alla domanda a margine: nessuna credenziale valida."
|
||
header: "💬 /btw: \"{preview}\""
|
||
title_suffix: "(btw)"
|
||
no_answer: "(Nessuna risposta generata)"
|
||
bundles:
|
||
unavailable: "Sottosistema bundle non disponibile: {error}"
|
||
none_installed: "Nessun bundle di skill installato."
|
||
create_hint: "Creane uno con: hermes bundles create <name> --skill <s1> --skill <s2>"
|
||
directory: "Directory: {dir}"
|
||
title: "Bundle di skill"
|
||
installed_count: "({count} installati):"
|
||
default_desc: "Carica {count} skill"
|
||
skills_count: "({count} skill)"
|
||
invoke_hint: "Richiama un bundle con /<slug>. Gestiscili con `hermes bundles`."
|
||
browser:
|
||
engine_not_in_use: "⚠ browser.engine è 'lightpanda' ma NON è in uso: {reason}"
|
||
engine_lightpanda: "Motore: Lightpanda — {reason} (nessuno screenshot)"
|
||
binary: "Binario: {path}"
|
||
binary_not_found: "⚠ binario lightpanda non trovato — {hint}"
|
||
use_usage: "Uso: /browser use [off]"
|
||
use_on_hint: "/browser use — passa alla modalità Browser Use (browser_exec tramite CLI 3.0)"
|
||
use_off_hint: "/browser use off — torna agli strumenti browser integrati"
|
||
use_enabled: "🌐 Modalità Browser Use attiva — browser_exec tramite la Browser Use CLI 3.0"
|
||
use_disabled: "🌐 Modalità Browser Use disattivata — strumenti browser integrati ripristinati"
|
||
session_reset: "Sessione reimpostata. La nuova configurazione degli strumenti è attiva."
|
||
scheme_missing: "(mancante)"
|
||
unsupported_scheme: "⚠ Schema URL del browser non supportato: {scheme} (atteso uno tra: http, https, ws, wss)"
|
||
invalid_port: "⚠ Porta non valida nell'URL del browser: {url}"
|
||
missing_host: "⚠ Host mancante nell'URL del browser: {url}"
|
||
port_occupied: "⚠ La porta {port} è occupata da un'altra applicazione che non è un browser CDP"
|
||
port_occupied_detail: "(potrebbe usarla un debugger dell'IDE o un dev server) — avvio sulla porta {launch_port}..."
|
||
launching: "Nessun browser della famiglia Chromium in esecuzione con debug remoto — tentativo di avvio..."
|
||
launch_failed: "⚠ Impossibile avviare automaticamente un browser della famiglia Chromium"
|
||
launch_manually: "Avvia manualmente un browser della famiglia Chromium:"
|
||
no_executable: "Nessun eseguibile di un browser della famiglia Chromium supportato trovato in questo ambiente"
|
||
launched: "✓ Browser della famiglia Chromium avviato e in ascolto sulla porta {port}"
|
||
not_responding: "⚠ Browser avviato ma la porta {port} non risponde ancora"
|
||
try_again: "Riprova tra qualche secondo — l'istanza di debug potrebbe essere ancora in avvio"
|
||
already_listening: "✓ Un browser della famiglia Chromium è già in ascolto su {url}"
|
||
port_unreachable: "⚠ La porta {port} non è raggiungibile su {url}"
|
||
not_connected: "Browser non connesso — avvia un browser della famiglia Chromium con debug remoto e riprova /browser connect"
|
||
connected: "🌐 Browser connesso a un browser della famiglia Chromium attivo tramite CDP"
|
||
endpoint: "Endpoint: {url}"
|
||
already_default: "Il browser non è connesso a un browser della famiglia Chromium attivo (modalità predefinita già in uso)"
|
||
disconnected: "🌐 Browser disconnesso dal browser della famiglia Chromium attivo"
|
||
reverted: "Strumenti browser riportati alla modalità predefinita (headless locale o provider cloud)"
|
||
status_lightpanda: "🌐 Browser: Lightpanda locale (agent-browser --engine lightpanda)"
|
||
status_lightpanda_note: "⚡ Lightpanda: navigazione più veloce, nessun supporto per gli screenshot"
|
||
status_lightpanda_fallback: "Fallback automatico a Chromium per screenshot e comandi non riusciti"
|
||
status_chrome: "🌐 Browser: Chromium headless locale (agent-browser --engine chrome)"
|
||
status_auto: "🌐 Browser: Chromium headless locale (agent-browser)"
|
||
status_browser_use: "🌐 Browser: modalità Browser Use (browser_exec tramite la Browser Use CLI 3.0)"
|
||
status_browser_use_note: "Chrome locale tramite CDP, oppure browser cloud di Browser Use"
|
||
status_use_off_hint: "/browser use off — torna agli strumenti browser integrati"
|
||
status_connected: "🌐 Browser: connesso a un browser della famiglia Chromium attivo tramite CDP"
|
||
status_reachable: "Stato: ✓ raggiungibile"
|
||
status_unreachable: "Stato: ⚠ non raggiungibile (il browser potrebbe non essere in esecuzione)"
|
||
status_cloud: "🌐 Browser: {provider} (cloud)"
|
||
status_connect_hint: "/browser connect — connettiti al tuo browser della famiglia Chromium attivo"
|
||
status_disconnect_hint: "/browser disconnect — torna alla modalità predefinita"
|
||
usage: "Uso: /browser connect|disconnect|status|use"
|
||
usage_connect: "connect Connette gli strumenti browser alla sessione attiva del tuo browser della famiglia Chromium"
|
||
usage_disconnect: "disconnect Torna al backend browser predefinito"
|
||
usage_status: "status Mostra la modalità browser attuale"
|
||
usage_use: "use [off] Passa alla modalità Browser Use (CLI 3.0) / torna agli strumenti integrati"
|
||
heartbeat:
|
||
label: "Heartbeat"
|
||
paused: "⏸ Heartbeat in pausa: {prompt}"
|
||
none_set: "Nessun heartbeat impostato."
|
||
none_to_resume: "Nessun heartbeat da riprendere."
|
||
resumed: "▶ Heartbeat ripreso (ogni {interval}): {prompt}"
|
||
cleared: "✓ Heartbeat rimosso."
|
||
usage: "Uso: /heartbeat every <interval> <prompt> (es. /heartbeat every 10m Controlla la CI)"
|
||
usage_also: "Inoltre: /heartbeat status | pause | resume | clear"
|
||
interval_too_small: "Intervallo troppo breve — il minimo è {min_seconds}s."
|
||
prompt_required: "Uso: /heartbeat every <interval> <prompt> — il prompt è obbligatorio."
|
||
invalid_label: "Heartbeat non valido"
|
||
set: "♥ Heartbeat impostato (ogni {interval}): {prompt}"
|
||
set_note: "Si attiva come un turno normale quando la sessione è inattiva e l'intervallo è trascorso. Gestiscilo con /heartbeat pause | resume | clear; vive solo finché questo processo Hermes è in esecuzione — per pianificazioni durevoli usa `hermes cron`."
|
||
refine:
|
||
nothing_yet: "Niente da perfezionare per ora — invia prima un messaggio."
|
||
empty: "Niente da perfezionare per ora — la conversazione è vuota."
|
||
failed: "Impossibile avviare /refine: {error}"
|
||
focus_suffix: " (focus: {focus})"
|
||
started: "⚗ Revisione di questa conversazione in background{focus} — eventuali aggiornamenti a memoria/skill verranno riportati al termine."
|
||
review:
|
||
nothing_yet: "Niente da revisionare per ora — invia prima un messaggio."
|
||
failed: "Impossibile avviare /review: {error}"
|
||
goal:
|
||
label: "Obiettivi"
|
||
continuing: "Continuo subito — passo al prossimo step."
|
||
send_to_kick: "Invia un messaggio qualsiasi per avviare il prossimo step."
|
||
loop:
|
||
label: "Loop"
|
||
goal_defers_note: "Nota: un /goal attivo sta guidando questa sessione — i risvegli del loop vengono rinviati finché l'obiettivo non termina, va in pausa o viene parcheggiato."
|
||
subgoal:
|
||
no_goal: "Nessun obiettivo attivo. Impostane uno con /goal <text>."
|
||
usage_remove: "Uso: /subgoal remove <n>"
|
||
remove_needs_int: "/subgoal remove: <n> deve essere un numero intero (indice a partire da 1)."
|
||
removed: "✓ Sotto-obiettivo {index} rimosso: {text}"
|
||
cleared_one: "✓ Rimosso {count} sotto-obiettivo."
|
||
cleared_other: "✓ Rimossi {count} sotto-obiettivi."
|
||
none_to_clear: "Nessun sotto-obiettivo da rimuovere."
|
||
added: "✓ Sotto-obiettivo {index} aggiunto: {text}"
|
||
skin:
|
||
unavailable: "Motore delle skin non disponibile."
|
||
current: "Skin attuale: {name}"
|
||
available_header: "Skin disponibili:"
|
||
usage: "Uso: /skin <name>"
|
||
custom_hint: "Skin personalizzate: metti un file YAML in {dir}/skins/"
|
||
unknown: "Skin sconosciuta: {name}"
|
||
available: "Disponibili: {names}"
|
||
saved_suffix: " (salvata)"
|
||
set_to: "Skin impostata su: {name}{saved}"
|
||
banner_note: "Nota: i colori del banner si aggiorneranno al prossimo avvio della sessione."
|
||
colors_updated: "Colori del prompt e della TUI aggiornati."
|
||
prompt_compose:
|
||
editor_header: "#! Scrivi il tuo prompt qui sotto. Le righe che iniziano con '#!' vengono ignorate.\n#! Salva ed esci per inviare; lascia vuoto per annullare."
|
||
editor_failed: "(>_<) Impossibile aprire l'editor: {error}"
|
||
empty: "(._.) Prompt vuoto — niente inviato."
|
||
focus:
|
||
usage: "Uso: /focus [on|off|status]"
|
||
toggle:
|
||
save_failed: "Impossibile salvare l'impostazione {setting} in config.yaml"
|
||
footer:
|
||
usage: "/footer [on|off|status]"
|
||
label: "Footer di runtime"
|
||
fields: "Campi: {fields}"
|
||
timestamps:
|
||
usage: "/timestamps [on|off|status]"
|
||
label: "Timestamp dei messaggi"
|
||
update:
|
||
managed_action: "aggiornare Hermes Agent"
|
||
choice_update: "Aggiorna ora"
|
||
choice_update_desc: "esci dalla sessione attuale e aggiorna Hermes Agent"
|
||
choice_cancel: "Annulla"
|
||
choice_cancel_desc: "mantieni la sessione attuale"
|
||
title: "☤ Aggiorna Hermes Agent"
|
||
detail: "Verrà chiusa la sessione attuale ed eseguito `hermes update`."
|
||
cancelled: "🟡 /update annullato."
|
||
launching: "☤ Avvio dell'aggiornamento..."
|
||
voice:
|
||
unknown_subcommand: "Sottocomando voice sconosciuto: {subcommand}"
|
||
usage: "Uso: /voice [on|off|tts|status]"
|
||
wake:
|
||
unknown_subcommand: "Sottocomando wake sconosciuto: {subcommand}"
|
||
usage: "Uso: /wake [on|off|status]"
|
||
enabled_in_config: "Parola di attivazione attiva nella configurazione (wake_word.enabled: true)."
|
||
disabled_in_config: "Parola di attivazione disattivata nella configurazione (wake_word.enabled: false)."
|
||
tip_line: "✦ Suggerimento: {tip}"
|
||
banner:
|
||
context_too_low: "⚠️ La lunghezza del contesto è di soli {tokens} token — probabilmente troppo bassa per un agente che usa strumenti."
|
||
context_minimum: "Hermes richiede almeno {tokens} token. Gli schemi degli strumenti e il prompt di sistema occupano un prefisso fisso molto ampio."
|
||
fix_ollama: "Soluzione per Ollama: OLLAMA_CONTEXT_LENGTH={tokens} ollama serve"
|
||
fix_lm_studio: "Soluzione per LM Studio: imposta la lunghezza del contesto nelle impostazioni del modello → ricarica il modello"
|
||
fix_local_server: "Soluzione: avvia il server con almeno {tokens_k}K di contesto (llama.cpp: -c {tokens}), oppure imposta model.ollama_num_ctx in config.yaml alla finestra realmente servita"
|
||
fix_config: "Soluzione: imposta model.context_length in config.yaml, oppure aumenta l'impostazione del contesto del server"
|
||
hermes_models_not_agentic: "⚠ I modelli Nous Research Hermes 3 e 4 NON sono agentici e non sono progettati per l'uso con Hermes Agent."
|
||
hermes_models_lack_tools: "Non dispongono delle capacità di tool calling necessarie ai flussi agentici. Valuta un modello agentico (Claude, GPT, Gemini, DeepSeek, ecc.)."
|
||
hermes_models_switch_hint: "Cambia con: /model sonnet oppure /model gpt5"
|
||
project_skills_loaded: "◆ Skill di progetto caricate da questo repo: {count}"
|
||
project_skills_untrusted: "◆ {count} skill di progetto trovate in {root} ma non caricate — esegui `hermes skills trust` per attivarle."
|
||
command:
|
||
unknown_nothing_sent: "Comando sconosciuto {command} — nulla è stato inviato.{hint}"
|
||
did_you_mean_one: "Intendevi {suggestion}?"
|
||
type_help: "Digita /help per l'elenco completo."
|
||
ambiguous: "Comando ambiguo: {command}"
|
||
did_you_mean_many: "Intendevi: {candidates}?"
|
||
config:
|
||
title: "(^_^) Configurazione"
|
||
loaded: "(caricato)"
|
||
not_found: "(non trovato)"
|
||
microsoft_entra_id: "Microsoft Entra ID"
|
||
api_key_not_set: "Non impostata!"
|
||
value_not_set: "non impostato"
|
||
section_model: "Modello"
|
||
section_terminal: "Terminale"
|
||
section_agent: "Agente"
|
||
section_session: "Sessione"
|
||
label_model: "Modello:"
|
||
label_base_url: "URL base:"
|
||
label_api_key: "Chiave API:"
|
||
label_environment: "Ambiente:"
|
||
label_ssh_target: "Destinazione SSH:"
|
||
label_working_dir: "Directory di lavoro:"
|
||
label_timeout: "Timeout:"
|
||
label_max_turns: "Turni massimi:"
|
||
label_toolsets: "Toolset:"
|
||
label_verbose: "Dettagliato:"
|
||
label_started: "Avviato:"
|
||
label_config_file: "File di configurazione:"
|
||
context:
|
||
header: "🧠 Utilizzo del contesto — {model}"
|
||
compute_failed: "(._.) Impossibile calcolare la ripartizione del contesto: {error}"
|
||
error:
|
||
auth: "La tua chiave {provider} è stata rifiutata. Esegui `hermes model` per reinserirla."
|
||
billing: "Il tuo account {provider} ha esaurito il credito. Ricarica presso il provider, oppure esegui /model per cambiare."
|
||
model_not_found: "'{model}' non è disponibile su {provider}. Esegui /model per scegliere un modello valido."
|
||
rate_limit: "Limite di richieste raggiunto su {provider}; attendi un minuto oppure usa /model per cambiare."
|
||
upstream_blocked: "Un firewall/CDN davanti a {provider} ha bloccato la richiesta (non è la tua chiave). Imposta uno User-Agent tramite extra_headers, oppure usa /model per cambiare."
|
||
overloaded: "{provider} è sovraccarico al momento. Invia /retry tra poco, oppure usa /model per cambiare."
|
||
server_error: "{provider} ha restituito un errore interno. Invia /retry tra poco, oppure usa /model per cambiare."
|
||
timeout: "{provider} non ha risposto in tempo. Invia /retry, oppure usa /model per cambiare."
|
||
unknown: "La richiesta al modello non è riuscita. Esegui /model per cambiare oppure `hermes doctor` per verificare la configurazione."
|
||
the_provider: "il provider"
|
||
the_current_model: "il modello corrente"
|
||
with_details: "{lead}\nDettagli: {details}"
|
||
agent_init_failed: "Hermes non è riuscito ad avviare la connessione al modello: {error}. Il tuo messaggio non è stato inviato. Esegui `hermes doctor` per verificare la configurazione, oppure /model per scegliere un altro provider."
|
||
gateway:
|
||
starting: "Avvio di Hermes Gateway (piattaforme di messaggistica)..."
|
||
gateway_status:
|
||
header: "(✿◠‿◠) Stato del gateway"
|
||
platform_config_header: "Configurazione piattaforme di messaggistica:"
|
||
enabled: "Attivo"
|
||
not_configured: "Non configurato ({env_var})"
|
||
conversations_persist: "Le conversazioni persistono fino a /new o /reset."
|
||
to_start: "Per avviare il gateway:"
|
||
config_file: "File di configurazione: {path}"
|
||
load_error: "Errore nel caricamento della configurazione del gateway: {error}"
|
||
to_configure: "Per configurare il gateway:"
|
||
step_env_vars: "1. Imposta le variabili d'ambiente:"
|
||
step_config: "2. Oppure configura le impostazioni in {path}"
|
||
help:
|
||
header: "(^_^)? Comandi disponibili"
|
||
section_session: "Sessione"
|
||
section_configuration: "Configurazione"
|
||
section_tools_skills: "Strumenti e skill"
|
||
section_info: "Info"
|
||
section_exit: "Uscita"
|
||
section_context: "Contesto"
|
||
section_background_automation: "Background e automazione"
|
||
usage_suffix: "{description} (utilizzo: /{command} {args})"
|
||
alias_suffix: "{description} (alias di /{command})"
|
||
skill_commands: "Comandi skill"
|
||
skill_bundles: "Bundle di skill"
|
||
quick_commands: "Comandi rapidi"
|
||
n_installed: "{count} installati"
|
||
n_configured: "{count} configurati"
|
||
n_skills: "{count} skill"
|
||
load_n_skills: "Carica {count} skill"
|
||
no_skill_commands: "Nessun comando skill installato."
|
||
matching_query: "corrispondenti a '{query}'"
|
||
to_list_them: "per elencarli"
|
||
filtered_by: "Filtrato per '{query}' — esegui /help per l'elenco completo."
|
||
tip_line: "Suggerimento: /help skills elenca i comandi skill · /help <testo> filtra · Ctrl+P apre la palette comandi"
|
||
multiline_hint: "Multi-riga: Ctrl+J, Alt+Enter oppure \\\\+Enter per una nuova riga"
|
||
draft_editor_hint: "Editor bozza: Ctrl+G (Alt+G in VSCode/Cursor)"
|
||
attach_image_hint: "Allega immagine: /image {path} oppure inizia il prompt con il percorso di un'immagine locale"
|
||
paste_image_hint: "Incolla immagine: Alt+V (o /paste)"
|
||
insights:
|
||
no_session_data: "Nessun dato di sessione al momento."
|
||
mcp_watch:
|
||
changed_reload_skipped: "🔄 Configurazione dei server MCP modificata — ricaricamento saltato (ricaricamento automatico disattivato)."
|
||
not_applied_run: "Le nuove impostazioni NON sono ancora applicate. Per applicarle adesso, esegui:"
|
||
cache_note: "⚠️ Nota: /reload-mcp ricostruisce il set di strumenti e invalida la cache dei prompt del provider (il prossimo messaggio invierà di nuovo tutti i token di input)."
|
||
changed_reloading: "🔄 Configurazione dei server MCP modificata — ricaricamento delle connessioni..."
|
||
plugin:
|
||
command_error: "Errore nel comando del plugin: {error}"
|
||
quick:
|
||
no_target: "Il comando rapido '{command}' non ha una destinazione definita"
|
||
unsupported_type: "Il comando rapido '{command}' ha un tipo non supportato (supportati: 'exec', 'alias')"
|
||
no_command: "Il comando rapido '{command}' non ha un comando definito"
|
||
no_output: "Il comando non ha restituito output"
|
||
timed_out: "Comando rapido scaduto (30s)"
|
||
error: "Errore nel comando rapido: {error}"
|
||
reload_mcp:
|
||
title: "⚠️ /reload-mcp — Avviso di invalidazione della cache dei prompt"
|
||
detail: "Il ricaricamento dei server MCP ricostruisce il set di strumenti per questa sessione e\ninvalida la cache dei prompt del provider. Il prossimo messaggio\ninvierà di nuovo tutti i token di input (può essere costoso su modelli\na contesto lungo o ad alto ragionamento)."
|
||
choice_once: "Approva una volta"
|
||
choice_once_hint: "ricarica adesso"
|
||
choice_always: "Approva sempre"
|
||
choice_always_hint: "ricarica adesso e silenzia questa richiesta in modo permanente"
|
||
choice_cancel: "Annulla"
|
||
choice_cancel_hint: "lascia invariati gli strumenti MCP"
|
||
unchanged: "Strumenti MCP invariati."
|
||
always_msg: "🔒 Le prossime chiamate a /reload-mcp verranno eseguite senza conferma."
|
||
once_verb: "ricaricamento"
|
||
reloading: "🔄 Ricaricamento dei server MCP..."
|
||
reconnected: "♻️ Riconnessi: {names}"
|
||
added: "➕ Aggiunti: {names}"
|
||
removed: "➖ Rimossi: {names}"
|
||
tools_available: "🔧 {tools} strumenti disponibili da {servers} server"
|
||
agent_updated: "✅ Agente aggiornato — {count} strumenti disponibili"
|
||
reload_skills:
|
||
reloading: "🔄 Ricaricamento delle skill..."
|
||
total: "📚 {count} skill disponibili"
|
||
added_header: "➕ Skill aggiunte:"
|
||
removed_header: "➖ Skill rimosse:"
|
||
session_store:
|
||
unavailable_rich: "[bold yellow]⚠ Archivio sessioni non disponibile[/bold yellow] — questa conversazione [bold]NON verrà salvata[/bold] e non potrà essere ripresa in seguito. Anche la ricerca nelle sessioni passate è disattivata.\n Motivo: {reason}.\n {action}\n [dim]Dettagli: {details}[/dim]"
|
||
unavailable_plain: "AVVISO: archivio sessioni non disponibile — questa conversazione NON verrà salvata e non potrà essere ripresa in seguito. Motivo: {reason}. {action}"
|
||
shell:
|
||
command_denied: "Comando negato: {reason}"
|
||
flagged_as_dangerous: "segnalato come pericoloso"
|
||
exited: "! uscito con {code}"
|
||
skills:
|
||
bundle_load_failed: "Impossibile caricare il bundle per {command}"
|
||
loading_bundle: "Caricamento bundle: {name} ({count} skill)"
|
||
skipped_missing: "Skill mancanti saltate: {names}"
|
||
stacked_load_failed: "Impossibile caricare le skill combinate per {command}"
|
||
loading_stacked: "Caricamento di {count} skill combinate: {names}"
|
||
loading_skill: "Caricamento skill: {name}"
|
||
skill_load_failed: "Impossibile caricare la skill per {command}"
|
||
tools:
|
||
none_available: "(;_;) Nessuno strumento disponibile"
|
||
header: "(^_^)/ Strumenti disponibili"
|
||
total: "Totale: {count} strumenti ヽ(^o^)ノ"
|
||
toolsets:
|
||
header: "(^_^)b Toolset disponibili"
|
||
currently_enabled_legend: "(*) = attualmente attivo"
|
||
tip_enable_all: "Suggerimento: usa 'all' o '*' per attivare tutti i toolset"
|
||
example: "Esempio: python cli.py --toolsets web,terminal"
|
||
usage:
|
||
unknown_subcommand: "Sottocomando /usage sconosciuto: {args}. Prova /usage oppure /usage reset [--force]."
|
||
reset_wrong_provider: "I reset dell'utilizzo accumulato sono disponibili solo con il provider openai-codex."
|
||
reset_switch_hint: "Prima cambia con `/model` o `hermes auth`."
|
||
checking_reset_credits: "⏳ Verifica dei crediti di reset accumulati..."
|
||
codex_timeout: "❌ Timeout nella comunicazione con il backend Codex — riprova tra poco."
|
||
no_api_calls: "(._.) Nessuna chiamata API effettuata finora in questa sessione."
|
||
header_session: "📊 Utilizzo token della sessione"
|
||
label_model: "Modello:"
|
||
label_input_tokens: "Token di input:"
|
||
label_output_tokens: "Token di output:"
|
||
label_reasoning_subset: "↳ Ragionamento (sottoinsieme):"
|
||
label_prompt_tokens_total: "Token del prompt (totale):"
|
||
label_completion_tokens: "Token di completamento:"
|
||
label_total_tokens: "Token totali:"
|
||
label_api_calls: "Chiamate API:"
|
||
label_session_duration: "Durata sessione:"
|
||
label_current_context: "Contesto attuale:"
|
||
label_messages: "Messaggi:"
|
||
label_compressions: "Compressioni:"
|
||
verbose:
|
||
label_off: "Avanzamento strumenti: OFF"
|
||
detail_off: "modalità silenziosa, solo la risposta finale."
|
||
label_new: "Avanzamento strumenti: NEW"
|
||
detail_new: "mostra ogni nuovo strumento (salta le ripetizioni)."
|
||
label_all: "Avanzamento strumenti: ALL"
|
||
detail_all: "mostra ogni chiamata a uno strumento."
|
||
label_verbose: "Avanzamento strumenti: VERBOSE"
|
||
detail_verbose: "argomenti completi, risultati e blocchi di ragionamento."
|
||
whoami:
|
||
you_label: "Tu:"
|
||
you_value: "cli (terminale locale)"
|
||
user_label: "Utente:"
|
||
tier_label: "Livello:"
|
||
tier_value: "senza restrizioni"
|
||
slash_commands_label: "Comandi slash:"
|
||
slash_commands_value: "tutti disponibili"
|
||
worktree:
|
||
shallow_clone_keeping: "⚠ Clone shallow — impossibile verificare lo stato del push, mantengo: {path}"
|
||
next_session_deepens: "La prossima sessione `hermes -w` approfondisce il clone ed elimina automaticamente i worktree già uniti."
|
||
unpushed_keeping: "⚠ Il worktree ha commit non inviati, mantengo: {path}"
|
||
uncommitted_keeping: "⚠ Il worktree ha modifiche non committate, mantengo: {path}"
|
||
clean_up_manually: "Per pulire manualmente: git worktree remove --force {path}"
|
||
cleaned_up: "✓ Worktree pulito: {path}"
|
||
display:
|
||
verb:
|
||
web_search: "Ricerca sul web"
|
||
web_extract: "Lettura"
|
||
browser_navigate: "Navigazione"
|
||
browser_click: "Clic"
|
||
browser_type: "Digitazione"
|
||
read_file: "Lettura"
|
||
write_file: "Scrittura"
|
||
patch: "Modifica"
|
||
search_files: "Ricerca nei file"
|
||
terminal: "Esecuzione"
|
||
execute_code: "Esecuzione codice"
|
||
image_generate: "Generazione immagine"
|
||
video_generate: "Generazione video"
|
||
text_to_speech: "Generazione voce"
|
||
vision_analyze: "Analisi dell'immagine"
|
||
session_search: "Ricerca nelle sessioni passate"
|
||
skill_view: "Lettura skill"
|
||
skills_list: "Elenco skill"
|
||
skill_manage: "Aggiornamento skill"
|
||
delegate_task: "Delega"
|
||
cronjob_manage: "Pianificazione"
|
||
clarify: "Domanda"
|
||
memory: "Aggiornamento memoria"
|
||
todo_list: "Aggiornamento attività"
|
||
verb_connector:
|
||
search: " di "
|
||
default: " "
|
||
bridge_generating:
|
||
tool_call: "una chiamata a uno strumento"
|
||
tool_search: "una ricerca di strumenti"
|
||
tool_describe: "dettagli dello strumento"
|
||
status_phrase:
|
||
verb: "— {verb}"
|
||
using_tool: "sta usando {tool}"
|
||
preview:
|
||
shell_plus_one: "{first} + {count} comando"
|
||
shell_plus_many: "{first} + {count} comandi"
|
||
delegate_tasks: "{count} attività: {goals}"
|
||
delegate_parallel_tasks: "{count} attività in parallelo"
|
||
todo_verb_updating: "aggiornamento"
|
||
todo_verb_planning: "pianificazione"
|
||
todo_reading: "lettura elenco attività"
|
||
todo_tasks: "{verb} di {count} attività"
|
||
missing_old_text: "<old_text mancante>"
|
||
send_message_to: "a {target}: \"{message}\""
|
||
session_search_recall: "richiamo: \"{query}\""
|
||
diff:
|
||
review_header: " ┊ diff della revisione"
|
||
omitted_lines: "… omesse {count} righe di diff"
|
||
omitted_files: " in altri {count} file/sezioni"
|
||
thinking_verbs: "riflessione,contemplazione,meditazione,ponderazione,rimuginamento,deliberazione,valutazione,elaborazione,ragionamento,analisi,calcolo,sintesi,formulazione,ideazione,brainstorming"
|
||
spinner:
|
||
tool_line: " [strumento] {message}"
|
||
done_line: " [fatto] {message}{elapsed}"
|
||
failure:
|
||
file_not_found: "File non trovato: {name}"
|
||
terminal_backend_unavailable: "backend del terminale non disponibile"
|
||
exit_code: " [exit {code}]"
|
||
memory_full: " [piena]"
|
||
generic: " [errore]"
|
||
generic_word: "errore"
|
||
cute:
|
||
verb:
|
||
search: "ricerca"
|
||
fetch: "recupero"
|
||
terminal: "$"
|
||
read: "lettura"
|
||
write: "scrittura"
|
||
patch: "patch"
|
||
find: "trova"
|
||
grep: "grep"
|
||
navigate: "naviga"
|
||
snapshot: "snapshot"
|
||
click: "clic"
|
||
type: "digita"
|
||
scroll: "scroll"
|
||
back: "indietro"
|
||
press: "premi"
|
||
images: "immagini"
|
||
vision: "visione"
|
||
plan: "piano"
|
||
recall: "richiamo"
|
||
memory: "memoria"
|
||
skills: "skill"
|
||
skill: "skill"
|
||
create: "crea"
|
||
speak: "parla"
|
||
send: "invia"
|
||
cron: "cron"
|
||
exec: "exec"
|
||
browser: "browser"
|
||
delegate: "delega"
|
||
proc: "proc"
|
||
fetch_pages: "pagine"
|
||
todo_progress: "{done}/{total} attività"
|
||
todo_reading: "lettura attività"
|
||
todo_update_progress: "aggiorna {done}/{total} ✓"
|
||
todo_update_count: "aggiorna {count} attività"
|
||
todo_count: "{count} attività"
|
||
cron_task_fallback: "attività"
|
||
cron_create: "crea {label}"
|
||
cron_listing: "elenco"
|
||
delegate_parallel: "in parallelo"
|
||
process_list: "ls processi"
|
||
snapshot_full: "completo"
|
||
snapshot_compact: "compatto"
|
||
images_extracting: "estrazione"
|
||
vision_analyzing_page: "analisi pagina"
|
||
skills_list: "elenco {category}"
|
||
skills_all: "tutte"
|
||
scroll:
|
||
up: "su"
|
||
down: "giù"
|
||
left: "sinistra"
|
||
right: "destra"
|
||
fallback_tool_name: "strumento"
|
||
fallback_done: "fatto"
|
||
completed: "┊ ⚡ {tool} completato {duration}"
|
||
iteration_progress:
|
||
unbounded: "iterazione {n}"
|
||
bounded: "iterazione {n}/{max}"
|
||
review:
|
||
routing_fallback_warning: "⚠ auxiliary.background_review.provider='{task_provider}' (modello '{task_model}') non instradabile ({error}); fallback su {provider}/{model}"
|
||
reasoning_effort_warning: "⚠ auxiliary.background_review.reasoning_effort='{effort}' non ha effetto finché il modello di revisione non è quello principale"
|
||
memory_op_line: "{label} {glyph} {preview}"
|
||
skill_patched_verbose: "📝 Skill '{name}' corretta: \"{old}\" → \"{new}\""
|
||
skill_changed_verbose: "📝 Skill '{name}' {verb}: {description}"
|
||
skill_message_verbose: "📝 {message}"
|
||
skill_action: "Skill: {action}"
|
||
label_updated: "{label} aggiornato"
|
||
skill_result: "Skill '{name}' {verb}{path}"
|
||
skill_verb:
|
||
created: "creata"
|
||
rewritten: "riscritta"
|
||
patched: "corretta"
|
||
written: "scritta"
|
||
removed: "rimossa"
|
||
deleted: "eliminata"
|
||
label:
|
||
skill: "Skill"
|
||
memory: "Memoria"
|
||
user: "Profilo utente"
|
||
summary_cli: " 💾 Revisione di auto-miglioramento: {summary}"
|
||
summary_callback: "💾 Revisione di auto-miglioramento: {summary}"
|
||
aux_failure_label: "revisione in background"
|
||
notice:
|
||
uncompressed_context_overflow: "⚠️ Il contesto della sessione (~{tokens} token) supera la finestra di contesto del modello (~{context_length} token) con la compressione disattivata (compression.enabled: false). Usa /compact per comprimere la cronologia o attiva la compressione in config.yaml."
|
||
explainer:
|
||
no_reply_prefix: "⚠️ Nessuna risposta: "
|
||
empty_response: "{model} non ha prodotto una risposta questa volta, nemmeno dopo i tentativi ripetuti. Invia `continue` per riprovare, oppure cambia modello con /model."
|
||
exit:
|
||
all_retries_exhausted_no_response: "il provider del modello non ha risposto dopo tutti i tentativi. Invia /retry, oppure cambia modello con /model."
|
||
partial_stream_recovery: "lo streaming si è interrotto in anticipo ed è stata recuperata solo una risposta parziale. Invia `continue` per riprendere dal punto in cui si è fermato."
|
||
fallback_prior_turn_content: "in questo turno non è stato prodotto nuovo contenuto; viene mostrato il contesto precedente recuperato. Invia `continue` per riprovare."
|
||
redirect_restart_limit_exceeded: "la richiesta è stata annullata da una nuova correzione a ogni tentativo, quindi il turno si è fermato invece di riprovare all'infinito. La tua ultima correzione è in coda come prossimo messaggio."
|
||
rebuilt_restart_limit_exceeded: "ogni provider della catena di fallback ha continuato a cedere il passo al successivo, quindi il turno si è fermato invece di riprovare all'infinito. Invia `continue` oppure cambia provider."
|
||
budget_exhausted: "il budget di iterazioni/costo per turno si è esaurito prima di una risposta finale. Invia `continue` per proseguire."
|
||
ollama_runtime_context_too_small: "la finestra di contesto del modello locale era troppo piccola per finire. Aumenta la dimensione del contesto o usa un modello più grande."
|
||
pending_tool_result: "il turno si è fermato mentre il risultato di uno strumento era ancora in attesa e il modello non ha prodotto altro testo. Invia `continue` per farglielo riassumere."
|
||
interrupted_during_api_call: "la richiesta è stata interrotta a metà chiamata prima di ricevere una risposta. Invia `continue` per riprovare."
|
||
max_iterations_reached: "è stato raggiunto il limite massimo di iterazioni degli strumenti prima di una risposta finale. Invia `continue` per proseguire, oppure aumenta `max_iterations`."
|
||
error_near_max_iterations: "si è verificato un errore vicino al limite di iterazioni prima di una risposta finale. Controlla l'output dello strumento qui sopra, poi invia `continue`."
|
||
repeated_outer_errors: "il turno ha continuato a fallire con errori ripetuti ed è stato fermato in anticipo invece di riprovare all'infinito. Controlla gli errori qui sopra, poi invia `continue` per riprovare."
|
||
persistence:
|
||
compression: "il turno è stato fermato perché un altro processo stava comprimendo questa sessione. Il tuo messaggio dovrebbe essere già salvato — invialo di nuovo al termine della compressione."
|
||
compression_closed: "il turno è stato fermato perché questa sessione è stata ruotata dalla compressione del contesto e la sua continuazione attiva non ha potuto essere adottata. Lo storage è integro — aggiorna il client (o avvia un nuovo turno) così da usare il nuovo id di sessione, poi invia di nuovo il messaggio."
|
||
turn_lease: "il turno è stato fermato perché un altro processo Hermes ha preso il controllo di questa sessione. La tua risposta non è stata salvata — attendi che l'altro processo finisca, poi invia di nuovo il messaggio."
|
||
session_row_missing: "questa sessione è stata eliminata dallo storage mentre la chat era ancora aperta e Hermes non è riuscito a ricrearla, quindi questo messaggio non è stato salvato. Invia di nuovo il messaggio; se continua a fallire, esegui `hermes {profile_arg}doctor`."
|
||
locked: "il turno è stato fermato perché lo storage della sessione era occupato (un altro processo Hermes stava scrivendo nel database di stato). Il tuo messaggio dovrebbe essere già salvato — invialo di nuovo tra un momento."
|
||
replaced: "il file del database delle sessioni è stato sostituito mentre Hermes era in esecuzione, quindi questo messaggio non è stato salvato (una copia è conservata in {home}/sessions/). Ferma Hermes (`hermes {profile_arg}gateway stop`), esegui `hermes {profile_arg}doctor` — non `hermes {profile_arg}doctor --fix`, che riparerebbe il file sbagliato sul posto — poi riavvialo e invia di nuovo il messaggio. I passaggi di recupero avanzati sono nel log."
|
||
deleted_wal: "un altro processo Hermes tiene ancora una vecchia copia del write-ahead log del database delle sessioni, quindi Hermes ha smesso di scrivere per proteggere il file e questo messaggio non è stato salvato (una copia è conservata in {home}/sessions/). Non è andato perso nulla. Chiudi ogni processo Hermes su questo profilo (app Desktop, `hermes {profile_arg}gateway stop`, dashboard, cron), esegui `hermes {profile_arg}doctor` — indica quale processo tiene ancora il log — poi riavvia Hermes e invia di nuovo il messaggio. Non eseguire `doctor --fix` né eliminare file state.db mentre sono in esecuzione. Guida: {recovery_docs}"
|
||
corrupt: "il turno è stato fermato perché il database di stato ha segnalato una corruzione strutturale (la trascrizione sarebbe andata perduta al riavvio). Liberare spazio su disco non servirà. Opzioni di recupero:\n1. Esegui `hermes {profile_arg}doctor --fix`\n2. Ferma il gateway, poi recupera con:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (se segnala che è recuperabile) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — il recupero crea prima uno snapshot del file danneggiato; NON eseguire `sqlite3 ... \".recover\"` sullo state.db attivo, una CLI sqlite3 vulnerabile può corromperlo ulteriormente\n3. Ripristina da un backup in {backups_dir}/\nPoi invia di nuovo il messaggio."
|
||
fts_index: "il turno è stato fermato perché l'indice di ricerca delle sessioni (FTS5) è corrotto e non ha potuto essere scollegato, quindi questo messaggio non è stato salvato. L'archivio dei messaggi non è danneggiato: non eseguire strumenti di recupero né ripristinare un backup. Esegui `hermes {profile_arg}doctor --fix` (o riavvia Hermes, che ripara l'indice all'apertura), poi invia di nuovo il messaggio."
|
||
disk: "Hermes non è riuscito a salvare questa conversazione su disco, quindi si è fermato piuttosto che perdere i tuoi messaggi. Il disco è probabilmente pieno: libera spazio (o correggi i permessi su {home}/state.db), poi invia di nuovo il messaggio."
|
||
default: "Hermes non è riuscito a salvare questa conversazione, quindi si è fermato piuttosto che perdere i tuoi messaggi. Cause possibili: il disco è pieno, oppure un altro processo Hermes sta tenendo occupato il database. Chiudi le altre finestre di Hermes, esegui `hermes {profile_arg}doctor` per controllare lo storage, poi invia di nuovo il messaggio."
|
||
file_mutation:
|
||
header: "⚠️ Verifica modifiche ai file: {count} modifiche FALLITE in questo turno, nonostante quanto il testo sopra possa far pensare. Esegui `git status` o `read_file` per confermare cosa è stato davvero applicato."
|
||
entry: " • `{path}` — [{tool}] {preview}"
|
||
failed: "non riuscito"
|
||
shared:
|
||
and_more: " • … e altri {count}"
|
||
the_model: "Il modello"
|
||
tips:
|
||
t001: "/bg <prompt> esegue un'attività in una sessione separata mentre quella corrente resta libera; /btw <question> risponde a una domanda a margine su questa conversazione senza interromperla."
|
||
t002: "/branch crea una diramazione della sessione corrente, così puoi esplorare una direzione diversa senza perdere i progressi."
|
||
t003: "/compress comprime manualmente il contesto della conversazione quando diventa troppo lungo."
|
||
t004: "/rollback elenca i checkpoint del filesystem: ripristina i file modificati dall'agente a qualsiasi stato precedente."
|
||
t005: "/rollback diff 2 mostra in anteprima cosa è cambiato dal checkpoint 2 senza ripristinare nulla."
|
||
t006: "/rollback 2 src/file.py ripristina un singolo file da un checkpoint specifico."
|
||
t007: "/title \"mio progetto\" dà un nome alla sessione: riprendila più tardi con /resume o hermes -c."
|
||
t008: "/resume riprende da dove avevi lasciato in una sessione a cui hai dato un nome in precedenza."
|
||
t009: "/queue <prompt> mette in coda un messaggio per il turno successivo senza interrompere quello corrente."
|
||
t010: "/undo rimuove dalla conversazione l'ultimo scambio utente/assistente."
|
||
t011: "/retry reinvia il tuo ultimo messaggio: utile quando la risposta dell'agente non era proprio quella giusta."
|
||
t012: "/verbose alterna la visualizzazione dell'avanzamento degli strumenti: off → new → all → verbose."
|
||
t013: "/reasoning high aumenta la profondità di ragionamento del modello. /reasoning show mostra il ragionamento."
|
||
t014: "/fast attiva o disattiva l'elaborazione prioritaria per risposte API più rapide (dipende dal provider)."
|
||
t015: "/yolo salta tutte le richieste di approvazione per comandi pericolosi per il resto della sessione."
|
||
t016: "/model ti permette di cambiare modello a metà sessione: prova /model sonnet o /model gpt-5."
|
||
t017: "/model --global cambia in modo permanente il tuo modello predefinito."
|
||
t018: "/personality pirate imposta una personalità divertente: 14 opzioni integrate, da kawaii a shakespeare."
|
||
t019: "/skin cambia il tema della CLI: prova ares, mono, slate, poseidon o charizard."
|
||
t020: "/statusbar attiva o disattiva una barra persistente che mostra modello, token, % di riempimento del contesto, costo e durata."
|
||
t021: "/tools disable browser rimuove temporaneamente gli strumenti browser per la sessione corrente."
|
||
t022: "/browser connect collega gli strumenti browser al tuo browser della famiglia Chromium già in esecuzione tramite CDP."
|
||
t023: "/plugins elenca i plugin installati e il loro stato."
|
||
t024: "/cron gestisce le attività pianificate: configura prompt ricorrenti con consegna su qualsiasi piattaforma."
|
||
t025: "/reload-mcp ricarica a caldo la configurazione dei server MCP senza riavviare."
|
||
t026: "/usage mostra l'utilizzo dei token, la ripartizione dei costi e la durata della sessione."
|
||
t027: "/insights mostra le statistiche di utilizzo degli ultimi 30 giorni."
|
||
t028: "/paste controlla se negli appunti c'è un'immagine e la allega al tuo prossimo messaggio."
|
||
t029: "/profile mostra quale profilo è attivo e la sua directory home."
|
||
t030: "/config mostra a colpo d'occhio la tua configurazione corrente."
|
||
t031: "/stop termina tutti i processi in background avviati dall'agente."
|
||
t032: "@file:path/to/file.py inserisce il contenuto del file direttamente nel tuo messaggio."
|
||
t033: "@file:main.py:10-50 inserisce solo le righe 10-50 di un file."
|
||
t034: "@folder:src/ inserisce l'elenco ad albero di una directory."
|
||
t035: "@diff inserisce nel messaggio le tue modifiche git non ancora in stage."
|
||
t036: "@staged inserisce le tue modifiche git in stage (git diff --staged)."
|
||
t037: "@git:5 inserisce gli ultimi 5 commit con le patch complete."
|
||
t038: "@url:https://example.com scarica e inserisce il contenuto di una pagina web."
|
||
t039: "Digitando @ si attiva il completamento dei percorsi del filesystem: raggiungi qualsiasi file in modo interattivo."
|
||
t040: "Combina più riferimenti: \"Rivedi @file:main.py e @file:test.py per verificarne la coerenza.\""
|
||
t041: "Alt+Enter inserisce un a capo per l'input su più righe. (Windows Terminal intercetta Alt+Enter: usa Ctrl+Enter al suo posto.)"
|
||
t042: "Ctrl+C interrompe l'agente. Premilo due volte entro 2 secondi per forzare l'uscita."
|
||
t043: "Ctrl+Z sospende Hermes in background: esegui fg nella tua shell per riprenderlo."
|
||
t044: "Tab accetta il testo suggerito in trasparenza o completa automaticamente i comandi slash."
|
||
t045: "Digita un nuovo messaggio mentre l'agente sta lavorando per interromperlo e reindirizzarlo."
|
||
t046: "Alt+V incolla un'immagine dagli appunti nella conversazione."
|
||
t047: "Incollando 5 o più righe, il testo viene salvato automaticamente in un file e al suo posto viene inserito un riferimento compatto."
|
||
t048: "hermes -c riprende la tua sessione CLI più recente. hermes -c \"nome progetto\" riprende in base al titolo."
|
||
t049: "hermes -w crea un worktree git isolato: perfetto per flussi di lavoro con agenti in parallelo."
|
||
t050: "hermes -w -q \"Fix issue #42\" combina l'isolamento del worktree con una query singola."
|
||
t051: "hermes chat -t web,terminal abilita solo toolset specifici per una sessione mirata."
|
||
t052: "hermes chat -s github-pr-workflow precarica una skill all'avvio."
|
||
t053: "hermes chat -q \"query\" esegue una singola query non interattiva ed esce."
|
||
t054: "hermes chat --max-turns 1000 sovrascrive il limite predefinito di 500 iterazioni per turno."
|
||
t055: "hermes chat --checkpoints abilita gli snapshot del filesystem prima di ogni modifica distruttiva ai file."
|
||
t056: "hermes --yolo ignora tutte le richieste di approvazione per comandi pericolosi per l'intera sessione."
|
||
t057: "hermes chat --source telegram etichetta la sessione per filtrarla in hermes sessions list."
|
||
t058: "hermes -p work chat esegue Hermes con un profilo specifico senza cambiare quello predefinito."
|
||
t059: "hermes doctor --fix diagnostica e ripara automaticamente i problemi di configurazione e dipendenze."
|
||
t060: "hermes dump produce un riepilogo compatto della tua installazione: ottimo per le segnalazioni di bug."
|
||
t061: "hermes config set KEY VALUE indirizza automaticamente i segreti in .env e tutto il resto in config.yaml."
|
||
t062: "hermes config edit apre config.yaml nel tuo editor predefinito."
|
||
t063: "hermes config check cerca opzioni di configurazione mancanti o obsolete."
|
||
t064: "hermes sessions browse apre un selettore interattivo di sessioni con ricerca."
|
||
t065: "hermes sessions stats mostra il numero di sessioni per piattaforma e la dimensione del database."
|
||
t066: "hermes sessions prune --older-than 30 elimina le sessioni vecchie."
|
||
t067: "hermes skills search react --source skills-sh cerca nella directory pubblica skills.sh."
|
||
t068: "hermes skills check controlla se le skill installate dall'hub hanno aggiornamenti upstream."
|
||
t069: "hermes skills tap add myorg/skills-repo aggiunge una sorgente GitHub personalizzata per le skill."
|
||
t070: "hermes skills snapshot export setup.json esporta la configurazione delle tue skill per backup o condivisione."
|
||
t071: "hermes mcp add github --command npx aggiunge server MCP dalla riga di comando."
|
||
t072: "hermes mcp serve esegue Hermes stesso come server MCP per altri agenti."
|
||
t073: "hermes auth add ti permette di aggiungere più chiavi API per la rotazione del pool di credenziali."
|
||
t074: "hermes completion bash >> ~/.bashrc abilita il completamento con Tab per tutti i comandi e i profili."
|
||
t075: "hermes logs -f segue agent.log in tempo reale. --level WARNING --since 1h filtra l'output."
|
||
t076: "hermes backup crea un backup zip dell'intera directory home di Hermes."
|
||
t077: "hermes profile create coder crea un profilo isolato che diventa un comando a sé stante."
|
||
t078: "hermes profile create work --clone copia la configurazione e le chiavi correnti in un nuovo profilo."
|
||
t079: "hermes update sincronizza automaticamente le nuove skill integrate su TUTTI i profili."
|
||
t080: "hermes gateway install configura Hermes come servizio di sistema (systemd/launchd)."
|
||
t081: "hermes memory setup ti permette di configurare un provider di memoria esterno (Honcho, Mem0, ecc.)."
|
||
t082: "hermes webhook subscribe crea route webhook basate su eventi con validazione HMAC."
|
||
t083: "Risparmia: hermes tools disattiva gli strumenti inutilizzati, hermes skills config riduce le skill all'essenziale."
|
||
t084: "/reasoning low o /reasoning minimal riduce la profondità di ragionamento sotto il valore predefinito (medium): risposte più rapide ed economiche."
|
||
t085: "hermes models instrada visione, compressione e attività ausiliarie verso modelli più economici: taglia il costo dei token in background dell'85% o più senza declassare il tuo modello di chat principale."
|
||
t086: "Imposta display.bell_on_complete: true in config.yaml per sentire un segnale acustico quando le attività lunghe terminano."
|
||
t087: "Imposta display.streaming: true per vedere i token comparire in tempo reale mentre il modello li genera."
|
||
t088: "Imposta display.show_reasoning: true per osservare la catena di ragionamento del modello."
|
||
t089: "Imposta display.compact: true per ridurre gli spazi vuoti nell'output e avere informazioni più dense."
|
||
t090: "Imposta display.busy_input_mode: queue per mettere in coda i messaggi invece di interrompere l'agente, oppure steer per iniettarli durante l'esecuzione tramite /steer."
|
||
t091: "Imposta display.resume_display: minimal per saltare il riepilogo completo della conversazione alla ripresa della sessione."
|
||
t092: "Imposta compression.threshold: 0.50 per controllare quando scatta la compressione automatica (predefinito: 50% del contesto)."
|
||
t093: "Imposta agent.max_turns: 1000 per consentire all'agente più passaggi di chiamata agli strumenti per turno."
|
||
t094: "Imposta file_read_max_chars: 200000 per aumentare il contenuto massimo per ogni chiamata a read_file."
|
||
t095: "Imposta approvals.mode: smart per lasciare che un LLM approvi automaticamente i comandi sicuri e neghi quelli pericolosi."
|
||
t096: "Imposta fallback_model in config.yaml per passare automaticamente a un provider di riserva in caso di errore."
|
||
t097: "Imposta privacy.redact_pii: true per trasformare in hash ID utente e numeri di telefono prima di inviarli all'LLM."
|
||
t098: "Imposta browser.record_sessions: true per registrare automaticamente le sessioni del browser come video WebM."
|
||
t099: "Imposta worktree: true in config.yaml per creare sempre un worktree git (equivale a hermes -w)."
|
||
t100: "Imposta security.website_blocklist.enabled: true per bloccare domini specifici negli strumenti web."
|
||
t101: "Imposta cron.wrap_response: false per consegnare l'output grezzo dell'agente senza intestazione e piè di pagina del cron."
|
||
t102: "HERMES_TIMEZONE sostituisce il fuso orario del server con qualsiasi stringa di fuso orario IANA."
|
||
t103: "La sostituzione delle variabili d'ambiente funziona in config.yaml: usa la sintassi ${VAR_NAME}."
|
||
t104: "I comandi rapidi in config.yaml eseguono comandi shell all'istante senza consumare token."
|
||
t105: "Puoi definire personalità personalizzate in config.yaml sotto agent.personalities."
|
||
t106: "provider_routing controlla l'ordinamento, la whitelist e la blacklist dei provider di OpenRouter."
|
||
t107: "execute_code esegue script Python che chiamano gli strumenti di Hermes in modo programmatico: i risultati restano fuori dal contesto."
|
||
t108: "delegate_task avvia fino a 10 subagenti concorrenti per impostazione predefinita (delegation.max_concurrent_children) con contesti isolati per il lavoro in parallelo."
|
||
t109: "web_extract funziona anche con URL di PDF: passagli qualsiasi link a un PDF e lo converte in markdown."
|
||
t110: "search_files si basa su ripgrep ed è più veloce di grep: usalo al posto di grep nel terminale."
|
||
t111: "patch usa 9 strategie di corrispondenza fuzzy, così piccole differenze di spaziatura non rompono le modifiche."
|
||
t112: "patch supporta il formato V4A per modifiche in blocco su più file in una singola chiamata."
|
||
t113: "read_file suggerisce nomi di file simili quando un file non viene trovato."
|
||
t114: "read_file deduplica automaticamente: rileggere un file invariato restituisce solo un breve segnaposto."
|
||
t115: "browser_vision acquisisce uno screenshot e lo analizza con l'AI: funziona con CAPTCHA e contenuti visivi."
|
||
t116: "browser_console può valutare espressioni JavaScript nel contesto della pagina."
|
||
t117: "image_generate crea immagini con FLUX 2 Pro e upscaling automatico 2x."
|
||
t118: "text_to_speech converte il testo in audio: su Telegram viene riprodotto come messaggio vocale."
|
||
t119: "send_message può raggiungere qualsiasi piattaforma di messaggistica connessa dall'interno di una sessione."
|
||
t120: "Lo strumento todo aiuta l'agente a tenere traccia di attività complesse in più passaggi durante una sessione."
|
||
t121: "session_search esegue una ricerca full-text in TUTTE le conversazioni passate."
|
||
t122: "L'agente salva automaticamente in memoria preferenze, correzioni e informazioni sull'ambiente."
|
||
t123: "/moa instrada un singolo prompt difficile attraverso il set di modelli Mixture of Agents che hai configurato."
|
||
t124: "I comandi del terminale supportano la modalità in background con notify_on_complete per le attività di lunga durata."
|
||
t125: "I processi in background del terminale supportano watch_patterns per avvisarti su righe di output specifiche."
|
||
t126: "Lo strumento terminal supporta 6 backend: local, Docker, SSH, Modal, Daytona e Singularity."
|
||
t127: "Ogni profilo ha la propria configurazione, chiavi API, memoria, sessioni, skill e job cron."
|
||
t128: "I nomi dei profili diventano comandi shell: 'hermes profile create coder' crea il comando 'coder'."
|
||
t129: "hermes profile export coder -o backup.tar.gz crea un archivio portabile del profilo."
|
||
t130: "Se due profili condividono per errore lo stesso token del bot, il secondo gateway viene bloccato con un errore chiaro."
|
||
t131: "Le sessioni generano automaticamente titoli descrittivi dopo il primo scambio: non serve assegnare nomi a mano."
|
||
t132: "I titoli delle sessioni supportano la discendenza: \"mio progetto\" → \"mio progetto #2\" → \"mio progetto #3\"."
|
||
t133: "All'uscita, Hermes stampa un comando per riprendere con l'ID della sessione e le statistiche."
|
||
t134: "hermes sessions export backup.jsonl esporta tutte le sessioni per backup o analisi."
|
||
t135: "hermes -r SESSION_ID riprende una specifica sessione passata tramite il suo ID."
|
||
t136: "La memoria è uno snapshot congelato: le modifiche compaiono nel prompt di sistema solo all'avvio della sessione successiva."
|
||
t137: "Le voci di memoria vengono controllate automaticamente alla ricerca di pattern di prompt injection ed esfiltrazione."
|
||
t138: "L'agente ha due archivi di memoria: note personali (~2200 caratteri) e profilo utente (~1375 caratteri)."
|
||
t139: "Le correzioni che dai all'agente (\"no, fallo così\") vengono spesso salvate automaticamente in memoria."
|
||
t140: "Oltre 80 skill integrate che coprono github, creatività, mlops, produttività, ricerca e altro ancora."
|
||
t141: "Ogni skill installata diventa automaticamente un comando slash: digita / per vederle tutte."
|
||
t142: "hermes skills install official/security/1password installa skill opzionali dal repository."
|
||
t143: "Le skill possono limitarsi a sistemi operativi specifici: alcune si caricano solo su macOS o Linux."
|
||
t144: "skills.external_dirs in config.yaml ti permette di caricare skill da directory personalizzate."
|
||
t145: "L'agente può creare le proprie skill come memoria procedurale usando skill_manage."
|
||
t146: "/plan scrive un piano di implementazione in markdown in .hermes/plans/ senza eseguire nulla."
|
||
t147: "I job cron possono includere skill: hermes cron add --skill blogwatcher \"Check for new posts\"."
|
||
t148: "Le destinazioni di consegna del cron includono telegram, discord, slack, email, sms e più di 12 altre piattaforme."
|
||
t149: "Se una risposta del cron inizia con [SILENT], la consegna viene soppressa: utile per i job di solo monitoraggio."
|
||
t150: "Il cron supporta ritardi relativi (30m), intervalli (every 2h), espressioni cron e timestamp ISO."
|
||
t151: "I job cron vengono eseguiti in sessioni agente completamente nuove: i prompt devono essere autosufficienti."
|
||
t152: "La modalità voce funziona senza alcuna chiave API se faster-whisper è installato (riconoscimento vocale locale gratuito)."
|
||
t153: "Cinque provider TTS disponibili: Edge TTS (gratuito), ElevenLabs, OpenAI, NeuTTS (locale gratuito), MiniMax."
|
||
t154: "/voice on abilita la modalità voce nella CLI. Ctrl+B attiva o disattiva la registrazione push-to-talk."
|
||
t155: "Il TTS in streaming riproduce le frasi man mano che vengono generate: non devi aspettare la risposta completa."
|
||
t156: "I messaggi vocali su Telegram, Discord, WhatsApp e Slack vengono trascritti automaticamente."
|
||
t157: "Hermes funziona su 21 piattaforme di messaggistica: Telegram, Discord, Slack, WhatsApp, Signal, Matrix, IRC, Microsoft Teams, email e altre."
|
||
t158: "hermes gateway install lo configura come servizio di sistema che si avvia al boot."
|
||
t159: "DingTalk usa la Stream Mode: non servono webhook né URL pubblici."
|
||
t160: "BlueBubbles porta iMessage in Hermes tramite un server macOS locale."
|
||
t161: "Le route webhook supportano validazione HMAC, limitazione della frequenza e filtraggio degli eventi."
|
||
t162: "Il server API espone un endpoint compatibile con OpenAI, utilizzabile con Open WebUI e LibreChat."
|
||
t163: "Modalità canale vocale di Discord: il bot entra nel canale vocale, trascrive il parlato e risponde a voce."
|
||
t164: "group_sessions_per_user: true assegna a ogni persona una sessione propria nelle chat di gruppo."
|
||
t165: "/sethome contrassegna una chat come canale principale per le consegne dei job cron."
|
||
t166: "Il gateway supporta timeout basati sull'inattività: gli agenti attivi possono lavorare senza limiti di tempo."
|
||
t167: "L'approvazione dei comandi pericolosi ha 4 livelli: una volta, sessione, sempre (allowlist permanente), nega."
|
||
t168: "La modalità di approvazione smart usa un LLM per approvare automaticamente i comandi sicuri e segnalare quelli pericolosi."
|
||
t169: "La protezione SSRF blocca reti private, loopback, link-local e indirizzi dei metadati cloud."
|
||
t170: "La scansione pre-esecuzione di Tirith rileva lo spoofing di URL con omoglifi e i pattern pipe-verso-interprete."
|
||
t171: "I sottoprocessi MCP ricevono un ambiente filtrato: passano solo le variabili di sistema sicure."
|
||
t172: "I file di contesto (.hermes.md, AGENTS.md) vengono controllati per prompt injection prima del caricamento."
|
||
t173: "command_allowlist in config.yaml approva in modo permanente pattern specifici di comandi shell."
|
||
t174: "Il contesto viene compresso automaticamente al raggiungimento della soglia: le memorie vengono salvate e la cronologia riassunta."
|
||
t175: "La barra di stato diventa gialla, poi arancione, poi rossa man mano che il contesto si riempie."
|
||
t176: "SOUL.md è il file di identità principale dell'agente: personalizzalo per modellarne il comportamento."
|
||
t177: "Hermes carica il contesto del progetto da .hermes.md, AGENTS.md, CLAUDE.md o .cursorrules (prima corrispondenza)."
|
||
t178: "I file AGENTS.md nelle sottodirectory vengono scoperti progressivamente man mano che l'agente entra nelle cartelle."
|
||
t179: "I file di contesto sono limitati a 20.000 caratteri con troncamento intelligente di testa e coda."
|
||
t180: "Cinque provider browser: Chromium locale, Browserbase, Browser Use, Camofox e Firecrawl."
|
||
t181: "Camofox è un browser anti-rilevamento: un fork di Firefox con spoofing delle impronte digitali in C++."
|
||
t182: "browser_navigate restituisce automaticamente uno snapshot della pagina: non serve chiamare browser_snapshot subito dopo."
|
||
t183: "browser_vision con annotate=true sovrappone etichette numerate agli elementi interattivi."
|
||
t184: "hermes mcp apre un selettore interattivo di MCP approvati da Nous che puoi installare con un solo tasto."
|
||
t185: "hermes mcp catalog elenca i server MCP approvati da Nous inclusi nel repository."
|
||
t186: "hermes mcp install <name> installa una voce del catalogo, chiede le credenziali e ti lascia scegliere quali dei suoi strumenti abilitare."
|
||
t187: "I server MCP si configurano in config.yaml: sono supportati sia il trasporto stdio sia quello HTTP."
|
||
t188: "Filtro degli strumenti per server: tools.include mette in whitelist e tools.exclude mette in blacklist strumenti specifici."
|
||
t189: "I server MCP generano automaticamente toolset a runtime: hermes tools può attivarli o disattivarli per piattaforma."
|
||
t190: "Supporto OAuth per MCP: auth: oauth abilita l'autorizzazione tramite browser con PKCE."
|
||
t191: "I checkpoint non hanno alcun overhead quando nessun file viene modificato — sono attivi per impostazione predefinita."
|
||
t192: "Uno snapshot pre-rollback viene salvato automaticamente, così puoi annullare l'annullamento."
|
||
t193: "/rollback annulla anche il turno di conversazione, quindi l'agente non ricorda le modifiche ripristinate."
|
||
t194: "I checkpoint usano repository shadow in ~/.hermes/checkpoints/ — il .git del tuo progetto non viene mai toccato."
|
||
t195: "batch_runner.py elabora centinaia di prompt in parallelo per generare dati di addestramento."
|
||
t196: "hermes chat -Q attiva la modalità silenziosa per l'uso programmatico — nasconde banner e spinner."
|
||
t197: "Il salvataggio delle traiettorie (--save-trajectories) cattura tracce complete dell'uso degli strumenti per l'addestramento dei modelli."
|
||
t198: "Tre tipi di plugin: generali (strumenti/hook), provider di memoria e motori di contesto."
|
||
t199: "hermes plugins install owner/repo installa i plugin direttamente da GitHub."
|
||
t200: "Provider di memoria esterni: OpenViking è incluso; Honcho, Hindsight, Mem0 e altri tramite hermes plugins install."
|
||
t201: "Gli hook dei plugin includono pre/post_tool_call, pre/post_llm_call e transform_terminal_output per la canonicalizzazione dell'output."
|
||
t202: "Il prompt caching (Anthropic) riduce i costi riutilizzando i prefissi del prompt di sistema in cache."
|
||
t203: "L'agente genera automaticamente i titoli delle sessioni in un thread in background — nessun impatto sulla latenza."
|
||
t204: "Il routing intelligente dei modelli può indirizzare automaticamente le richieste semplici a un modello più economico."
|
||
t205: "I comandi slash supportano la corrispondenza per prefisso: /h corrisponde a /help, /mod a /model."
|
||
t206: "Trascinare il percorso di un file nel terminale allega automaticamente le immagini o lo invia come contesto."
|
||
t207: ".worktreeinclude nella radice del repository elenca i file ignorati da git da copiare nei worktree."
|
||
t208: "hermes acp esegue Hermes come server ACP per l'integrazione con VS Code, Zed e JetBrains."
|
||
t209: "Provider personalizzati: salva endpoint con nome in config.yaml sotto custom_providers."
|
||
t210: "HERMES_EPHEMERAL_SYSTEM_PROMPT inietta un prompt di sistema che non viene mai salvato nella cronologia."
|
||
t211: "credential_pool_strategies supporta le rotazioni fill_first, round_robin, least_used e random."
|
||
t212: "hermes auth add nous oppure hermes auth add openai-codex configura i provider basati su OAuth."
|
||
t213: "Il server API supporta sia la Chat Completions API sia la Responses API con stato lato server."
|
||
t214: "tool_preview_length: 0 nella configurazione mostra i percorsi completi dei file nel feed di attività dello spinner."
|
||
t215: "hermes status --deep esegue controlli diagnostici più approfonditi su tutti i componenti."
|
||
t216: "I job cron possono allegare uno script Python (--script) il cui stdout viene iniettato nel prompt come contesto."
|
||
t217: "Gli script cron vivono in ~/.hermes/scripts/ e vengono eseguiti prima dell'agente — perfetti per pipeline di raccolta dati."
|
||
t218: "prefill_messages_file in config.yaml inietta esempi few-shot in ogni chiamata API, senza mai salvarli nella cronologia."
|
||
t219: "SOUL.md sostituisce completamente l'identità predefinita dell'agente — riscrivilo per rendere Hermes davvero tuo."
|
||
t220: "SOUL.md viene inizializzato con una personalità predefinita al primo avvio. Modificalo per personalizzarlo."
|
||
t221: "/compress <focus topic> destina il 60-70% del budget del riepilogo al tuo argomento e taglia con decisione il resto."
|
||
t222: "Dalla seconda compressione in poi, il compressore aggiorna il riepilogo precedente invece di ripartire da zero."
|
||
t223: "Prima di un reset della sessione gateway, Hermes salva automaticamente in memoria i fatti importanti, in background."
|
||
t224: "network.force_ipv4: true in config.yaml risolve i blocchi sui server con IPv6 difettoso — applica un monkey-patch a socket."
|
||
t225: "Lo strumento terminal annota i codici di uscita comuni: grep che restituisce 1 = 'Nessuna corrispondenza (non è un errore)'."
|
||
t226: "I comandi terminal in foreground non riusciti vengono ritentati automaticamente fino a 3 volte con backoff esponenziale (2s, 4s, 8s)."
|
||
t227: "I comandi sudo semplici vengono riscritti automaticamente per ricevere SUDO_PASSWORD da .env tramite pipe — nessun prompt interattivo."
|
||
t228: "Gli helper di execute_code richiedono import espliciti: from hermes_tools import json_parse, shell_quote, retry."
|
||
t229: "I 7 strumenti sandbox di execute_code (web_search, terminal, read/write/search/patch) usano RPC — non entrano mai nel contesto."
|
||
t230: "Leggere la stessa regione di un file 3 o più volte genera un avviso. Dalla quarta volta viene bloccato per prevenire i loop."
|
||
t231: "write_file e patch rilevano se un file è stato modificato dall'esterno dopo l'ultima lettura e avvisano che è obsoleto."
|
||
t232: "Il formato patch V4A supporta le direttive Add File, Delete File e Move File — non solo Update."
|
||
t233: "I server MCP possono richiedere completamenti LLM tramite sampling — l'agente diventa uno strumento per il server."
|
||
t234: "I server MCP inviano notifications/tools/list_changed per attivare la ri-registrazione automatica degli strumenti senza riavvio."
|
||
t235: "delegate_task con acp_command: 'claude' avvia Claude Code come agente figlio da qualsiasi piattaforma."
|
||
t236: "La delega ha un thread heartbeat — l'attività del figlio si propaga al genitore, evitando i timeout del gateway."
|
||
t237: "Quando un provider restituisce HTTP 402 (pagamento richiesto), il client ausiliario passa automaticamente al successivo."
|
||
t238: "agent.tool_use_enforcement indirizza i modelli che descrivono le azioni invece di chiamare gli strumenti — automatico per GPT/Codex."
|
||
t239: "agent.restart_after_turn_timeout lascia terminare i turni in corso prima che /restart entri in stop(); restart_drain_timeout è solo il budget per l'interruzione forzata una volta iniziato stop()."
|
||
t240: "agent.api_max_retries (predefinito 3) controlla quante volte l'agente ritenta una chiamata API fallita prima di mostrare l'errore — abbassalo per un fallback rapido."
|
||
t241: "Il gateway mette in cache le istanze AIAgent per sessione — distruggere questa cache rompe il prompt caching di Anthropic."
|
||
t242: "Qualsiasi sito web può esporre skill tramite /.well-known/skills/index.json — l'hub delle skill le scopre automaticamente."
|
||
t243: "Il log di audit delle skill in ~/.hermes/skills/.hub/audit.log traccia ogni operazione di installazione e rimozione."
|
||
t244: "I worktree git obsoleti vengono puliti automaticamente all'avvio: gli alberi puliti e completamente uniti vengono rimossi; il lavoro non committato o non pushato viene sempre preservato."
|
||
t245: "I profili delimitano lo stato di Hermes tramite HERMES_HOME; i sottoprocessi degli strumenti host mantengono la tua HOME reale a meno che terminal.home_mode sia profile."
|
||
t246: "La variabile d'ambiente HERMES_HOME_MODE (ottale, es. 0701) imposta permessi di directory personalizzati per l'attraversamento da parte del server web."
|
||
t247: "Modalità container: metti .container-mode in HERMES_HOME e la CLI host passa automaticamente in esecuzione nel container."
|
||
t248: "Ctrl+C ha 5 livelli di priorità: annulla registrazione → annulla prompt → annulla selettore → interrompi agente → esci."
|
||
t249: "Ogni interruzione durante l'esecuzione dell'agente viene registrata in ~/.hermes/interrupt_debug.log con timestamp."
|
||
t250: "BROWSER_CDP_URL collega gli strumenti browser a qualsiasi browser della famiglia Chromium in esecuzione — accetta WebSocket, HTTP o host:port."
|
||
t251: "BROWSERBASE_ADVANCED_STEALTH=true attiva l'anti-rilevamento avanzato con Chromium personalizzato (piano Scale)."
|
||
t252: "La CLI passa automaticamente alla modalità compatta nei terminali più stretti di 80 colonne."
|
||
t253: "I comandi rapidi supportano due tipi: exec (esegue direttamente un comando shell) e alias (reindirizza a un altro comando)."
|
||
t254: "Modello di delega per attività: delegation.model e delegation.provider nella configurazione indirizzano i subagenti a modelli più economici."
|
||
t255: "delegation.reasoning_effort controlla in modo indipendente la profondità di ragionamento dei subagenti."
|
||
t256: "display.platforms in config.yaml consente override di visualizzazione per piattaforma: {telegram: {tool_progress: all}}."
|
||
t257: "human_delay.mode nella configurazione simula la velocità di digitazione umana — intervallo min_ms/max_ms configurabile."
|
||
t258: "Le migrazioni di versione della configurazione avvengono automaticamente al caricamento — le nuove chiavi compaiono senza intervento manuale."
|
||
t259: "I modelli GPT e Codex ricevono indicazioni speciali nel prompt di sistema per la disciplina e l'uso obbligatorio degli strumenti."
|
||
t260: "I modelli Gemini ricevono direttive su misura per percorsi assoluti, chiamate parallele agli strumenti e comandi non interattivi."
|
||
t261: "context.engine in config.yaml può essere impostato al nome di un plugin per strategie alternative di gestione del contesto."
|
||
t262: "Gli snapshot delle pagine browser oltre i 15.000 caratteri vengono troncati o riassunti automaticamente; lo snapshot completo viene salvato in cache/web per la lettura paginata con read_file."
|
||
t263: "Il compressore esegue una pre-passata economica: gli output degli strumenti oltre i 200 caratteri vengono sostituiti da segnaposto prima di eseguire l'LLM."
|
||
t264: "Quando la compressione fallisce, i tentativi successivi vengono sospesi per 10 minuti per non martellare l'API."
|
||
t265: "I comandi pericolosi lunghi (>70 caratteri) hanno un'opzione 'view' nel prompt di approvazione per vedere prima il testo completo."
|
||
t266: "La visualizzazione del livello audio mostra le barre ▁▂▃▄▅▆▇ durante la registrazione vocale in base ai livelli RMS del microfono."
|
||
t267: "I nomi dei profili non possono coincidere con binari presenti nel PATH — 'hermes profile create ls' verrebbe rifiutato."
|
||
t268: "hermes profile create backup --clone-all copia tutto (configurazione, chiavi, SOUL.md, memorie, skill, sessioni)."
|
||
t269: "Il tasto di registrazione vocale è configurabile tramite voice.record_key in config.yaml — non solo Ctrl+B."
|
||
t270: "I file .cursorrules e .cursor/rules/*.mdc vengono rilevati e caricati automaticamente come contesto del progetto."
|
||
t271: "I file di contesto supportano oltre 10 pattern di prompt injection — Unicode invisibile, 'ignore instructions', tentativi di esfiltrazione."
|
||
t272: "GPT-5 e Codex usano il ruolo 'developer' invece di 'system' nel formato dei messaggi."
|
||
t273: "Override ausiliari per attività: auxiliary.vision.provider, auxiliary.compression.model, ecc. in config.yaml."
|
||
t274: "Il client ausiliario tratta 'main' come alias di provider — si risolve nel tuo provider primario + modello effettivi."
|
||
t275: "hermes claw migrate --dry-run mostra in anteprima la migrazione da OpenClaw senza scrivere nulla."
|
||
t276: "I percorsi di file incollati con virgolette o spazi con escape vengono gestiti automaticamente — nessuna pulizia manuale."
|
||
t277: "I comandi slash non attivano mai il collasso degli incolla lunghi — /command con argomenti grandi funziona correttamente."
|
||
t278: "In modalità interrupt, i comandi slash digitati durante l'esecuzione dell'agente saltano la logica di interruzione e vengono eseguiti subito."
|
||
t279: "HERMES_DEV=1 salta il rilevamento della modalità container per lo sviluppo locale."
|
||
t280: "Ogni server MCP ha il proprio toolset (mcp-servername) che può essere attivato o disattivato indipendentemente tramite hermes tools."
|
||
t281: "I segnaposto MCP ${ENV_VAR} nella configurazione vengono risolti all'avvio del server — incluse le variabili da ~/.hermes/.env."
|
||
t282: "Le skill da repository fidati (NousResearch) hanno il livello di sicurezza 'trusted'; le skill della community ricevono scansioni aggiuntive."
|
||
t283: "La quarantena delle skill in ~/.hermes/skills/.hub/quarantine/ contiene le skill in attesa di revisione di sicurezza."
|
||
t284: "/steer <prompt> inietta una nota dopo la prossima chiamata a uno strumento — correggi la direzione a metà attività senza interrompere."
|
||
t285: "/goal <text> imposta un obiettivo permanente in stile Ralph-loop — Hermes continua automaticamente turno dopo turno finché un giudice non dichiara fatto."
|
||
t286: "/snapshot create [label] salva uno snapshot completo dello stato della configurazione di Hermes; /snapshot restore <id> lo ripristina in seguito."
|
||
t287: "/copy [N] copia l'ultima risposta dell'assistente negli appunti, oppure l'N-esima dalla fine indicando un numero."
|
||
t288: "/redraw forza un ridisegno completo dell'interfaccia, correggendo lo sfasamento del terminale dopo un ridimensionamento in tmux o artefatti da selezione col mouse."
|
||
t289: "/agents (alias /tasks) mostra gli agenti attivi e le attività in background in esecuzione nella sessione corrente."
|
||
t290: "/footer attiva o disattiva il footer del gateway sulle risposte finali, con modello, % di contesto e cwd."
|
||
t291: "/busy queue|steer|interrupt controlla cosa fa la pressione di Enter mentre Hermes sta lavorando."
|
||
t292: "/topic nei DM di Telegram attiva la modalità argomenti multi-sessione gestita dall'utente — /topic <id> ripristina inline le sessioni passate."
|
||
t293: "/approve session|always esegue un comando pericoloso in attesa con l'ambito di fiducia scelto; /deny lo rifiuta."
|
||
t294: "/restart riavvia il gateway in modo controllato dopo aver lasciato terminare le esecuzioni attive, poi avvisa chi l'ha richiesto quando è di nuovo attivo."
|
||
t295: "/kanban boards switch <slug> cambia la board Kanban multi-progetto attiva direttamente dalla chat."
|
||
t296: "/reload ricarica ~/.hermes/.env nella sessione in esecuzione — recupera nuove chiavi API senza riavviare."
|
||
t297: "cronjob con no_agent=True esegue uno script a orario e invia direttamente il suo stdout — zero token, zero LLM."
|
||
t298: "Uno stdout vuoto dello script cron significa tick silenzioso — non viene consegnato nulla, perfetto per watchdog a soglia."
|
||
t299: "HERMES_CRON_MAX_PARALLEL (predefinito 4) limita quanti job cron girano per tick, così i picchi non saturano le tue chiavi."
|
||
t300: "Gli hook del gateway vivono in ~/.hermes/hooks/<name>/ con HOOK.yaml + handler.py — l'handler deve chiamarsi `handle`."
|
||
t301: "Gli eventi hook includono gateway:startup, session:start, agent:step e le sottoscrizioni con wildcard command:*."
|
||
t302: "Metti una checklist in ~/.hermes/BOOT.md e un hook gateway:startup la esegue come agente one-shot a ogni avvio."
|
||
t303: "hermes curator run --dry-run mostra in anteprima cosa il curatore archivierebbe o consoliderebbe senza modificare nulla."
|
||
t304: "hermes curator pin <skill> protegge una skill sia dall'archiviazione automatica sia dallo strumento skill_manage dell'agente."
|
||
t305: "hermes curator rollback ripristina le skill da uno snapshot pre-esecuzione — i backup stanno in skills/.curator_backups/."
|
||
t306: "hermes auth reset <provider> [target] azzera cooldown e flag di esaurimento su un intero pool di credenziali, o su una sola credenziale per indice, id o etichetta."
|
||
t307: "credential_pool_strategies.<provider>: round_robin alterna le chiavi in modo uniforme invece del fill_first predefinito."
|
||
t308: "use_gateway: true per strumento instrada web, image, tts o browser attraverso il tuo abbonamento Nous — nessuna chiave extra."
|
||
t309: "provider_routing.data_collection: deny esclude su OpenRouter i provider che conservano i dati."
|
||
t310: "provider_routing.require_parameters: true instrada solo verso provider che supportano ogni parametro della tua richiesta."
|
||
t311: "HERMES_TUI_RESUME=1 si ricollega automaticamente alla sessione TUI più recente all'avvio — comodo dopo una caduta SSH."
|
||
t312: "HERMES_TUI_THEME=light|dark|<hex> forza il tema della TUI sui terminali che non impostano COLORFGBG."
|
||
t313: "Ctrl+G o Ctrl+X Ctrl+E nella TUI apre il buffer di input in $EDITOR per prompt lunghi su più righe."
|
||
t314: "La TUI rende LaTeX inline — $E=mc^2$ diventa matematica Unicode invece di TeX grezzo."
|
||
t315: "hermes dashboard avvia un'interfaccia web locale su 127.0.0.1:9119 — nessun dato lascia localhost."
|
||
t316: "hermes dashboard incorpora la TUI completa di Hermes nel browser tramite xterm.js e una PTY WebSocket."
|
||
t317: "Metti un YAML in ~/.hermes/dashboard-themes/ con due colori di palette per cambiare l'aspetto dell'intera dashboard."
|
||
t318: "I plugin della dashboard sono drop-in: manifest.json + bundle JS in ~/.hermes/dashboard-plugins/ — nessuna build npm richiesta."
|
||
t319: "layoutVariant: cockpit in un tema della dashboard aggiunge una barra laterale sinistra di 260px che i plugin possono popolare tramite lo slot sidebar."
|
||
t320: "display.tool_progress_command: true espone /verbose sulle piattaforme di messaggistica; per impostazione predefinita è solo CLI."
|
||
t321: "HERMES_BACKGROUND_NOTIFICATIONS=result avvisa solo quando le attività in background terminano (rispetto a concise/all/error/off)."
|
||
t322: "HERMES_WRITE_SAFE_ROOT limita write_file/patch a prefissi di directory; più percorsi tramite os.pathsep (: o ;)."
|
||
t323: "HERMES_IGNORE_RULES salta l'iniezione automatica di AGENTS.md, SOUL.md, .cursorrules, memoria e skill precaricate."
|
||
t324: "HERMES_ACCEPT_HOOKS approva automaticamente gli hook shell mai visti dichiarati in config.yaml senza un prompt TTY."
|
||
t325: "auxiliary.goal_judge.model instrada il giudice di /goal a un modello economico e veloce per tenere il costo del loop vicino a zero."
|
||
t326: "I checkpoint saltano le directory con più di 50.000 file per evitare operazioni git lente su monorepo enormi."
|
||
t327: "tts.provider: piper esegue un TTS locale su CPU in 44 lingue — le voci si scaricano automaticamente in ~/.hermes/cache/piper-voices/."
|
||
t328: "tts.providers.<name>.type: command collega qualsiasi motore TTS a riga di comando con i segnaposto {input_path} e {output_path}."
|
||
t329: "API_SERVER_ENABLED=true esegue un endpoint compatibile OpenAI accanto al gateway per Open WebUI e LibreChat."
|
||
t330: "GATEWAY_PROXY_URL esegue una configurazione divisa: I/O delle piattaforme in locale, lavoro dell'agente delegato a un server API remoto."
|
||
t331: "MATRIX_DEVICE_ID fissa un ID dispositivo stabile per E2EE — senza di esso le chiavi ruotano a ogni avvio e la decifratura dello storico si rompe."
|
||
t332: "TELEGRAM_WEBHOOK_SECRET è obbligatorio ogni volta che TELEGRAM_WEBHOOK_URL è impostato — generalo con openssl rand -hex 32."
|
||
t333: "batch_runner.py --resume riconosce i prompt completati in base al testo, così i riordini del dataset non rieseguono il lavoro già fatto."
|
||
t334: "/new avvia una nuova sessione sul posto (alias /reset) — nuovo ID di sessione, cronologia pulita, la CLI resta aperta."
|
||
t335: "/clear pulisce lo schermo del terminale E avvia una nuova sessione — una sola scorciatoia per un reset visivo."
|
||
t336: "/history stampa la conversazione corrente inline senza uscire dalla CLI — utile per una rilettura veloce."
|
||
t337: "/save scrive la conversazione corrente su disco senza terminare la sessione."
|
||
t338: "/status mostra le informazioni della sessione a colpo d'occhio: ID, titolo, modello, utilizzo dei token e tempo trascorso."
|
||
t339: "/image <path> allega un file immagine locale al tuo prossimo prompt senza incollare o trascinare."
|
||
t340: "/platforms mostra lo stato di connessione del gateway e delle piattaforme di messaggistica direttamente dalla chat."
|
||
t341: "/commands mostra paginato l'elenco completo dei comandi slash e delle skill installate — utile sulle piattaforme senza completamento con Tab."
|
||
t342: "/toolsets elenca tutti i toolset disponibili, così sai cosa accetta -t/--toolsets."
|
||
t343: "/voice tts attiva o disattiva la modalità solo TTS — l'agente risponde a voce ma tu continui a digitare i prompt."
|
||
t344: "/reload-skills riesamina ~/.hermes/skills/ così le skill aggiunte a mano compaiono senza riavviare la sessione."
|
||
t345: "/indicator kaomoji|emoji|unicode|ascii sceglie lo stile dell'indicatore di attività della TUI mostrato durante le esecuzioni dell'agente."
|
||
t346: "/debug carica un bundle di supporto (info di sistema + log) e restituisce link condivisibili — funziona anche in chat."
|
||
t347: "hermes -z \"<prompt>\" è il one-shot più puro: risposta finale su stdout e nient'altro — ideale per le pipe negli script."
|
||
t348: "hermes chat --pass-session-id inietta l'ID di sessione nel prompt di sistema così l'agente può farvi riferimento."
|
||
t349: "hermes chat --image path/to/pic.png allega un'immagine locale a una singola query -q senza un passaggio di upload separato."
|
||
t350: "hermes chat --ignore-user-config salta la configurazione utente attiva — segnalazioni di bug riproducibili ed esecuzioni CI."
|
||
t351: "hermes chat --source tool contrassegna le chat programmatiche così non intasano hermes sessions list."
|
||
t352: "hermes dump --show-keys include le impronte oscurate delle chiavi API per un debug di supporto più approfondito."
|
||
t353: "hermes sessions rename <ID> \"new title\" rinomina qualsiasi sessione passata; hermes sessions delete <ID> ne elimina una."
|
||
t354: "hermes import ripristina un backup zip completo di Hermes; le esportazioni JSON/JSONL delle sessioni si importano dalla pagina Sessions della dashboard."
|
||
t355: "hermes fallback gestisce la catena fallback_model in modo interattivo — niente modifiche a mano a config.yaml."
|
||
t356: "hermes pairing ruota il token di pairing dei DM — il primo che scrive dopo la rotazione ottiene l'accesso al bot."
|
||
t357: "hermes setup guida i nuovi utenti nella configurazione di provider, chiavi e piattaforme in un unico flusso interattivo."
|
||
t358: "hermes status --deep esegue il controllo di salute completo su ogni componente; hermes status semplice è la vista rapida."
|
||
t359: "HERMES_AGENT_TIMEOUT=0 disattiva la terminazione per inattività del gateway per un agente in esecuzione — utile per lunghe sessioni di ricerca."
|
||
t360: "HERMES_ENABLE_PROJECT_PLUGINS=1 carica automaticamente i plugin locali del repository da ./.hermes/plugins/ — protetti da un controllo di fiducia per design."
|
||
t361: "HERMES_DISABLE_FILE_STATE_GUARD=1 disattiva la protezione 'file modificato dopo la lettura' su patch e write_file."
|
||
t362: "HERMES_ALLOW_PRIVATE_URLS=true consente agli strumenti web di raggiungere localhost e reti private — disattivato per impostazione predefinita in modalità gateway."
|
||
t363: "HERMES_OPTIONAL_SKILLS=name1,name2 installa automaticamente skill extra del catalogo opzionale al primo avvio di ogni profilo."
|
||
t364: "HERMES_BUNDLED_SKILLS punta a un albero personalizzato di skill incluse — usato dal packaging Homebrew e Nix."
|
||
t365: "HERMES_DUMP_REQUEST_STDOUT=1 scarica su stdout il payload di ogni richiesta API invece che nei file di log."
|
||
t366: "HERMES_OAUTH_TRACE=1 registra, oscurati, gli scambi e i tentativi di refresh del token OAuth per il debug dell'autenticazione dei provider."
|
||
t367: "HERMES_STREAM_RETRIES (predefinito 3) controlla i tentativi di riconnessione a metà stream in caso di errori di rete transitori."
|
||
t368: "HERMES_GATEWAY_BUSY_ACK_ENABLED=false silenzia i messaggi di conferma ⚡/⏳/⏩ quando un utente scrive a un agente occupato."
|
||
t369: "HERMES_AGENT_NOTIFY_INTERVAL (predefinito 180s) imposta ogni quanto il gateway invia aggiornamenti di avanzamento sui turni lunghi."
|
||
t370: "HERMES_RESTART_DRAIN_TIMEOUT (predefinito 900s) limita quanto /restart attende le esecuzioni in corso prima di forzare."
|
||
t371: "HERMES_CHECKPOINT_TIMEOUT (predefinito 30s) limita il tempo di creazione dei checkpoint del filesystem — aumentalo su monorepo enormi."
|
||
t372: "image_gen.model in config.yaml sceglie il modello FAL: flux-2/klein, gpt-image-2, nano-banana-pro e altri."
|
||
t373: "image_gen.provider instrada la generazione di immagini attraverso un plugin (OpenAI Images, Codex, FAL) invece del predefinito."
|
||
t374: "AUXILIARY_VISION_BASE_URL + AUXILIARY_VISION_API_KEY puntano l'analisi visiva a qualsiasi endpoint compatibile OpenAI."
|
||
t375: "security.tirith_fail_open: false fa sì che Hermes blocchi i comandi quando lo scanner tirith stesso va in errore."
|
||
t376: "La variabile d'ambiente TIRITH_FAIL_OPEN sovrascrive la configurazione tirith_fail_open — un interruttore rapido senza modificare config.yaml."
|
||
t377: "Le chat --source tool sono escluse da hermes sessions list per impostazione predefinita — imposta --source esplicitamente per vederle."
|
||
t378: "Gli ID di sessione hanno un prefisso timestamp (20250305_091523_abcd), così l'ordinamento funziona naturalmente in ls e jq."
|
||
t379: "API_SERVER_MODEL_NAME personalizza il nome del modello su /v1/models — essenziale per configurazioni Open WebUI multi-profilo."
|
||
t380: "I plugin della dashboard vengono serviti da /dashboard-plugins/<name>/ — metti i file in ~/.hermes/dashboard-plugins/."
|
||
placeholder:
|
||
p01: "Chiedi qualsiasi cosa, o digita / per i comandi…"
|
||
p02: "Riassumi cosa c'è in questa cartella"
|
||
p03: "Scrivi una bozza di risposta all'ultima email nella mia casella"
|
||
p04: "Pianifica una funzionalità, poi costruiscila passo dopo passo"
|
||
p05: "Trova e correggi un test che fallisce"
|
||
p06: "Fai una ricerca su questo argomento e scrivimi una sintesi"
|
||
p07: "Cosa è cambiato di recente in questo repository?"
|
||
p08: "Trasforma questi appunti in una lista di cose da fare"
|
||
p09: "Spiega questo errore e come risolverlo"
|
||
p10: "Imposta un promemoria o pianifica un'attività ricorrente"
|
||
p11: "Digita / per sfogliare i comandi, o Ctrl+P per la palette comandi"
|