Files
Teknium 1a71782f17 feat(cli): backtrack picker — Esc Esc / /rewind to edit & resend or fork from an earlier prompt
Classic CLI gains a Codex-style backtrack picker. Esc Esc on an idle, empty composer with no
overlay (or /rewind) lists earlier prompts newest first with a preview and turn number.

- Enter: prefill the prompt for editing. Nothing is cut until the edit is submitted; the
  submission rides to the process loop as a BacktrackResend, which re-validates the picked
  turn (same session, same text) and then runs the same durable rewind /undo uses. Esc Esc,
  Ctrl+C, an empty submit, or submitting a slash/! command cancels and cuts nothing.
- f: fork. Runs the existing /branch path, then rewinds only the CHILD to just before the
  picked prompt and prefills it; the parent's rows stay active.
- /rewind N and /rewind fork N do the same without the picker.

Esc Esc with a draft still discards it; mid-turn Esc Esc is unchanged.

undo_last's rewind body moves into CLISessionMixin._rewind_to_user_ordinal (shared by /undo
and the picker; same compaction-carrier handling, agent patching and memory rewound hook).
The picker lives in a new hermes_cli/cli_backtrack.py mixin; cli_tui_mixin.py is untouched.
CommandDef rewind is cli_only (desktop: terminal); desktop registry and parity table regenerated.
2026-11-04 23:06:14 -08:00

3984 lines
338 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
approval:
dangerous_header: "⚠️ 危険なコマンド: {description}"
choose_long: " [o]今回のみ | [s]セッション中 | [a]常に許可 | [d]拒否"
choose_short: " [o]今回のみ | [s]セッション中 | [d]拒否"
prompt_long: " 選択 [o/s/a/D]: "
prompt_short: " 選択 [o/s/D]: "
choose_smart_deny: " [o]今回のみ | [d]拒否"
prompt_smart_deny: " 選択 [o/D]: "
smart_deny_once_inputs: "o,once,今回,今回のみ"
smart_deny_deny_inputs: "d,deny,拒否"
timeout: " ⏱ {waited} 以内に応答がなかったため、コマンドは実行されませんでした。もう一度依頼して再試行するか、制限を引き上げてください: hermes config set approvals.timeout {suggested}"
allowed_once: " ✓ 今回のみ許可"
allowed_session: " ✓ このセッション中は許可"
allowed_always: " ✓ 永続的な許可リストに追加"
denied: " ✗ 拒否しました"
cancelled: " ✗ キャンセルしました"
blocklist_message: "このコマンドは無条件ブロックリストに含まれており、承認できません。"
inputs:
approve: "approve,yes,ok,okay,confirm,y,承認,はい,了解,許可,実行,確認"
deny: "deny,no,reject,cancel,n,拒否,いいえ,却下,キャンセル,だめ"
always: "always,approve always,always approve,常に,常に承認,いつも承認"
session: "session,approve session,session approve,セッション,セッション承認,セッション中は承認"
confirm_once: "approve,approve once,once,yes,ok,confirm,承認,一度だけ承認,一度だけ,今回のみ,はい,確認"
confirm_always: "always,always approve,remember,常に,常に承認,記憶"
confirm_cancel: "cancel,nevermind,no,deny,キャンセル,やめる,いいえ,拒否"
summary:
denied: "この{noun}は拒否されました — 実行されていません。"
timeout: "{window}以内に応答がなかったため、{noun}は実行されていません。"
notify_failed: "承認リクエストを届けられなかったため、{noun}は実行されていません。"
cancelled: "承認プロンプトが取り下げられたか届かなかったため、{noun}は実行されていません。"
blocked: "この{noun}は無人セッションでは許可されていません — 実行されていません。"
default: "この{noun}は実行されていません。"
noun:
command: "コマンド"
code: "コード"
action: "操作"
window:
hour_one: "{count} 時間"
hour_other: "{count} 時間"
minute_one: "{count} 分"
minute_other: "{count} 分"
second_one: "{count} 秒"
second_other: "{count} 秒"
gateway:
approval_expired: "⚠️ 承認の有効期限が切れました(エージェントはもう待機していません)。エージェントに再試行を依頼してください。"
draining: "⏳ 再起動前に {count} 個のアクティブエージェントの終了を待っています..."
goal_cleared: "✓ 目標をクリアしました。"
no_active_goal: "アクティブな目標はありません。"
config_read_failed: "⚠️ config.yaml を読み込めませんでした: {error}"
config_save_failed: "⚠️ 設定を保存できませんでした: {error}"
model:
error_prefix: "エラー: {error}"
switched: "モデルを `{model}` に切り替えました"
provider_label: "プロバイダー: {provider}"
context_label: "コンテキスト: {tokens} トークン"
max_output_label: "最大出力: {tokens} トークン"
cost_label: "コスト: {cost}"
capabilities_label: "機能: {capabilities}"
prompt_caching_enabled: "プロンプトキャッシュ: 有効"
warning_prefix: "警告: {warning}"
saved_global: "config.yaml に保存しました (`--global`)"
session_only_hint: "_(このセッションのみ — 永続化するには `--global` を追加)_"
current_label: "現在: `{model}` ({provider})"
current_tag: " (現在)"
more_models_suffix: " (他 {count} 件)"
usage_switch_model: "`/model <name>` — モデルを切り替え"
usage_switch_provider: "`/model <name> --provider <slug>` — プロバイダーを切り替え"
usage_persist: "`/model <name> --global` — 永続化"
usage_reset: "`/model reset` — このセッションのオーバーライドを解除"
reset_done: "セッションのモデルオーバーライドを解除しました — 現在 `{model}`(チャンネル/グローバルのデフォルト)を使用中。会話履歴は保持されます。"
reset_none: "このセッションにアクティブなモデルオーバーライドはありません — すでに `{model}`(チャンネル/グローバルのデフォルト)を使用しています。"
err_skew: "このゲートウェイは {boot_rev} のコードで動作していますが、ディスク上のチェックアウトは現在 {disk_rev} です。このままモデルを切り替えると古いモジュールによるクラッシュの恐れがあります。新しいコードを読み込むにはゲートウェイを再起動してください: hermes gateway restart"
err_switch_failed: "モデルを {model} に切り替えられませんでした ({error})。{current} を継続します。"
err_config_not_updated: "config.yaml を更新できませんでした ({error})"
err_stale_override: "config.yaml に保存しましたが、古いセッションの上書き設定をクリアできませんでした ({error})"
next_turn_only: " (次のターンのみ — 1 回応答した後に元へ戻ります)"
switch_cancelled: "🟡 モデルの切り替えをキャンセルしました。現在のモデルは変わりません ({model})。"
guard_confirm: "⚠️ **{title}**\n\n{message}\n\n_テキスト代替: 切り替えるには `{prefix}approve`、現在のモデルを維持するには `{prefix}cancel` と返信してください。_"
err_once_local: "`--once` is not available in this session; use `/model <name>` and switch back after the turn."
local_next_turn: "Applies from your next message."
agents:
header: "🤖 **アクティブなエージェントとタスク**"
active_agents: "**アクティブなエージェント:** {count}"
this_chat: " · このチャット"
more: "... 他に {count} 件"
running_processes: "**実行中のバックグラウンドプロセス:** {count}"
async_jobs: "**ゲートウェイ非同期ジョブ:** {count}"
background_delegations: "**バックグラウンド委任:** {count}"
none: "アクティブなエージェントや実行中のタスクはありません。"
state_starting: "起動中"
state_running: "実行中"
no_progress: " · 進行なし {seconds} 秒"
quiet_for: " · 無応答 {seconds} 秒"
between_turns: "ターン間"
child_row: " - 子 {index}: API 呼び出し {calls} 回 · {doing}"
active_ago: " · {seconds} 秒前に活動"
approve:
no_pending: "承認待ちのコマンドはありません。"
once_singular: "✅ コマンドを承認しました。エージェントを再開しています..."
once_plural: "✅ コマンドを承認しました ({count} 件)。エージェントを再開しています..."
session_singular: "✅ コマンドを承認しました (このセッション中はパターンを許可)。エージェントを再開しています..."
session_plural: "✅ コマンドを承認しました (このセッション中はパターンを許可) ({count} 件)。エージェントを再開しています..."
always_singular: "✅ コマンドを承認しました (パターンを永続的に許可)。エージェントを再開しています..."
always_plural: "✅ コマンドを承認しました (パターンを永続的に許可) ({count} 件)。エージェントを再開しています..."
background:
usage: "使い方: /bg <プロンプト>\n例: /bg 今日の HN トップ記事を要約して\n\nプロンプトを別のセッションで実行します。チャットを続けられます — 完了したらここに結果が表示されます。"
started: "🔄 バックグラウンドタスクを開始しました: 「{preview}」\nタスク ID: {task_id}\nチャットを続けられます — 完了したらここに結果が表示されます。"
task_finished: "✅ バックグラウンドタスクが終了しました"
task_failed: "❌ バックグラウンドタスクが失敗しました"
exit_code: "終了コード {code}"
last_output: "。最後の出力:\n```\n{tail}\n```"
rerun_hint: "\n再実行や完全なログの表示が必要な場合はお知らせください。"
no_credentials: "❌ AI モデルのサインインが設定されていないため、バックグラウンドタスクを開始できませんでした。/login を使うか、ホストで `hermes setup` を実行してください。"
complete_header: "✅ バックグラウンドタスクが完了しました\nプロンプト: \"{preview}\"\n\n"
no_response: "(応答は生成されませんでした)"
failed: "❌ バックグラウンドタスク \"{preview}\" は完了前に失敗しました。再試行するには /bg をもう一度送信、実行中のタスクを確認するには /agents を使ってください。"
final_output: "{header}\n\n最終出力:\n```\n{output}\n```"
still_running: "⏳ バックグラウンドタスクはまだ実行中です"
recent_output: "{header}\n\n最近の出力:\n```\n{output}\n```"
btw:
usage: "使い方: /btw <質問>\n例: /btw あのエラーはどのファイルだった?\n\nこの会話について、作業を中断せずにちょっとした質問に答えます。独立したバックグラウンドタスクには /bg <プロンプト> を使ってください。"
no_history: "まだ会話がありません — 質問は通常のメッセージとして送ってください。"
no_provider: "❌ 質問に回答できません: プロバイダーの認証情報が設定されていません。"
started: "💬 サイド質問: 「{preview}」\nこの会話のスナップショットから回答します — 現在の作業は継続します。"
answer: "💬 /btw: 「{preview}」\n\n{answer}"
failed: "❌ /btw が失敗しました: 「{preview}」\n{error}"
branch:
db_unavailable: "セッションデータベースは利用できません。"
no_conversation: "分岐する会話がありません — まずメッセージを送信してください。"
create_failed: "ブランチの作成に失敗しました: {error}"
switch_failed: "ブランチは作成されましたが、切り替えに失敗しました。"
branched_one: "⑂ **{title}** に分岐しました ({count} メッセージをコピー)\n元: `{parent}`\nブランチ: `{new}`\n元のセッションに戻るには `/resume` を使用してください。"
branched_many: "⑂ **{title}** に分岐しました ({count} メッセージをコピー)\n元: `{parent}`\nブランチ: `{new}`\n元のセッションに戻るには `/resume` を使用してください。"
branched_thread_one: "⑂ 新しいスレッドで **{title}** に分岐しました({count} 件のメッセージをコピー)\nスレッド: {thread}\n元: `{parent}` — このチャットは元のまま\n分岐: `{new}`\nこのチャット内で分岐するには `/branch --here` を使用してください。"
branched_thread_many: "⑂ 新しいスレッドで **{title}** に分岐しました({count} 件のメッセージをコピー)\nスレッド: {thread}\n元: `{parent}` — このチャットは元のまま\n分岐: `{new}`\nこのチャット内で分岐するには `/branch --here` を使用してください。"
thread_fallback: "ここではスレッドを作成できなかったため、分岐がこのチャットのセッションを置き換えました。"
commands:
usage: "使い方: `/commands [page]`"
skill_header: "⚡ **スキルコマンド**:"
default_desc: "スキルコマンド"
none: "利用可能なコマンドはありません。"
header: "📚 **コマンド** (合計 {total}、{page}/{total_pages} ページ)"
nav_prev: "`/commands {page}` ← 前へ"
nav_next: "次へ → `/commands {page}`"
out_of_range: "_(要求されたページ {requested} は範囲外のため、{page} ページを表示しています。)_"
compress:
not_enough: "圧縮するための会話が不十分です (少なくとも 4 件のメッセージが必要)。"
no_provider: "プロバイダーが構成されていません — 圧縮できません。"
nothing_to_do: "まだ圧縮するものがありません (トランスクリプトはすべて保護されたコンテキストのままです)。"
aggressive_unsupported: "--aggressive はサポートされていません。'/compress here [N]' で直近のやり取りだけを残すか、/undo でターンを削除してください。"
focus_line: "フォーカス: \"{topic}\""
summary_failed: "⚠️ 要約の生成に失敗しました ({error})。{count} 件の履歴メッセージが削除され、プレースホルダーに置き換えられました。以前のコンテキストは復元できません。auxiliary.compression モデルの設定を確認してください。"
aborted: "⚠️ 圧縮が中止されました ({error})。メッセージは削除されていません — 会話はそのままです。再試行するには /compress、新しいセッションを開始するには /reset を実行するか、auxiliary.compression モデル設定を確認してください。"
aux_failed: "ℹ️ 構成された圧縮モデル `{model}` が失敗しました ({error})。メインモデルで復旧しました — コンテキストは無傷です — config.yaml の `auxiliary.compression.model` を確認するとよいでしょう。"
turnhold_deferred: "ℹ️ コンテキスト圧縮を延期しました — 要約はまだストリーミング中です。このターンは圧縮せずに続行します。"
failed: "圧縮に失敗しました: {error}"
hygiene_timeout: "⚠️ 会話履歴の短縮に時間がかかりすぎたためスキップし、すべてをそのまま保持しました。再試行するには /compress、新しく始めるには /new を実行してください。"
hygiene_timeout_doctor_hint: " 繰り返し発生する場合は、ホストで `hermes doctor` を実行してください。"
hygiene_failed: "⚠️ 会話履歴の短縮に失敗したため、すべてをそのまま保持しました。再試行するには /compress、新しく始めるには /new を実行してください。繰り返し発生する場合は、ホストで `hermes doctor` を実行してください。"
codex_nothing: "🗜️ 圧縮するものがありません: このセッションは Codex app-server ランタイムで動作しており、そのコンテキストはエージェントの動作中にのみ存在する Codex 管理のスレッドにあります。先にメッセージを送ってから /compress を実行するか、/reset で新しく始めてください。"
codex_compacted: "🗜️ Codex app-server のスレッドを圧縮しました (thread/compact)。トランスクリプトのミラーは設計上変更されません。圧縮後のコンテキストは app-server が保持します。"
codex_incomplete: "⚠️ Codex app-server の圧縮が完了しなかったため、スレッドは変更されていません。app-server のログを確認し、/compress を再試行するか、/reset でクリーンなセッションを始めてください。"
debug:
upload_failed: "✗ デバッグレポートのアップロードに失敗しました: {error}"
header: "**デバッグレポートをアップロードしました:**"
auto_delete: "⏱ ペーストは 6 時間後に自動削除されます。"
full_logs_hint: "完全なログのアップロードには、CLI から `hermes debug share` を使用してください。"
share_hint: "サポートを受けるには、このリンクを Hermes チームに共有してください。"
report_label: "レポート"
local_refused: "`/debug local` はレポートを Hermes を実行しているマシン上に保持するため、チャットからは使えません。要約レポートをアップロードするには `/debug` を送信してください。"
deny:
stale: "❌ コマンドを拒否しました (承認は期限切れでした)。"
no_pending: "拒否待ちのコマンドはありません。"
denied_singular: "❌ コマンドを拒否しました。"
denied_plural: "❌ コマンドを拒否しました ({count} 件)。"
denied_reason_singular: "❌ コマンドを拒否しました。 理由をエージェントに伝達しました: \"{reason}\""
denied_reason_plural: "❌ コマンドを拒否しました ({count} 件)。 理由をエージェントに伝達しました: \"{reason}\""
usage_limit:
picker_title: "別のモデルで続ける:"
switch_choice: "{model} に切り替え ({note})"
fast:
not_supported: "⚡ /fast は Priority Processing をサポートする OpenAI モデルでのみ利用できます。"
status: "⚡ Priority Processing\n\n現在のモード: `{mode}`\n\n_使い方:_ `/fast <normal|fast|status>`"
unknown_arg: "⚠️ 不明な引数: `{arg}`\n\n**有効なオプション:** normal、fast、status"
saved: "⚡ ✓ Priority Processing: **{label}** (設定に保存しました)\n_(次のメッセージから有効)_"
session_only: "⚡ ✓ Priority Processing: **{label}** (このセッションのみ)"
label_fast: "高速"
label_normal: "標準"
status_fast: "高速"
status_normal: "標準"
picker_title: "⚡ **Priority Processing**\n\n現在のモード: `{mode}`\n\nオプションを選択:"
choice_fast: "fast — Priority Processing オン"
choice_normal: "normal — 標準処理"
choice_auto: "auto — 各ターンの最初の数秒間だけ高速"
choice_cold: "cold — セッションの最初のターンのみ高速"
choice_ultrafast: "ultrafast — OpenAI Ultrafast、料金 6 倍"
ultrafast_not_supported: "⚡ このアカウントまたはルートでは `{model}` の Ultrafast は利用できません。"
footer:
status: "📎 ランタイムフッター: **{state}**\nフィールド: `{fields}`\nプラットフォーム: `{platform}`"
usage: "使い方: `/footer [on|off|status]`"
saved: "📎 ランタイムフッター: **{state}**{example}\n_(グローバルに保存しました — 次のメッセージから有効)_"
example_line: "\n例: `{preview}`"
state_on: "オン"
state_off: "オフ"
goal:
unavailable: "このセッションでは目標機能を利用できません。"
no_goal_set: "目標が設定されていません。"
paused: "⏸ 目標を一時停止しました: {goal}"
no_resume: "再開する目標がありません。"
resumed: "▶ 目標を再開しました: {goal}\nすぐに続行します — 直ちに次のステップに進みます。"
invalid: "無効な目標: {error}"
set: "⊙ 目標を設定しました ({budget} ターンの予算): {goal}\n目標が完了するか、一時停止/解除されるか、予算が尽きるまで作業を続けます。\nコントロール: /goal status · /goal pause · /goal resume · /goal clear"
gate_add_admin_only: "⛔ /goal gate add には、明示的に設定されたゲートウェイ管理者が必要です (DM は allow_admin_from、グループは group_allow_admin_from)。"
help:
header: "📖 **Hermes コマンド**\n"
skill_header: "\n⚡ **スキルコマンド** ({count} 件アクティブ):"
more_use_commands: "\n... 他に {count} 件。完全なページ分けリストは `/commands` で確認してください。"
insights:
invalid_days: "--days の値が無効です: {value}"
error: "インサイトの生成中にエラーが発生しました: {error}"
kanban:
error_prefix: "⚠ kanban エラー: {error}"
subscribed_suffix: "(購読しました — {task_id} が完了またはブロックされたときに通知されます)"
truncated_suffix: "… (切り詰めました; 完全な出力にはターミナルで `hermes kanban …` を使用してください)"
no_output: "(出力なし)"
wake:
completed: "completed"
gave_up: "gave up (retries exhausted)"
crashed: "crashed (worker exited); dispatcher will retry"
timed_out: "timed out; dispatcher will retry"
blocked: "blocked; needs attention"
review_requested: "handed off for review; the implementation is done"
changes_requested: "review requested changes (BLOCK); implementation is not approved"
block_loop_detected: "routed to triage after repeated blocks; orchestration attention needed"
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
review_detail: "Review feedback: {reason}\nInspect the existing card and its current review run; return work to the same implementation task. Do not treat this BLOCK as approval and do not create a duplicate task."
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
ping:
completed: "✔ {head} 完了 — {title}{handoff}"
review_requested: "👀 {head} レビュー待ち — {title}{handoff}"
changes_default_reason: "レビュアーのフィードバックにより変更が必要です"
reviewer_suffix: " — レビュアー @{reviewer}"
implementer_suffix: " → 実装者 @{implementer}"
changes_requested: "🛑 {board_tag}Kanban {task_id} のレビューで変更要求/BLOCK: {reason}{provenance}"
triage: "🛑 {head} を TRIAGE に回しました — {why}{recurrences}{reason}"
triage_decision: "人の判断が必要です"
triage_attention: "オーケストレーションの確認が必要です"
triage_recurrences: " (同じ原因で {value} 回ブロック)"
reason_suffix: ": {value}"
failed_n_times: "連続で {count} 回失敗しました"
kept_failing: "失敗が続きました"
last_error: " (直近: {value})"
gave_up: "⛔ {head} はブロックされました: {count}{last}。原因を修正した後、`hermes kanban unblock {task_id}` (または `hermes kanban reassign {task_id}`) を実行してください。ログ: `hermes kanban log {task_id}`。"
limit_minutes: "{minutes} 分の制限時間"
limit_generic: "制限時間"
timed_out: "⏱ {head} は{span}を超過したため停止しました。自動的に再試行されます。"
blocked: "⏸ {head} がブロックされました{reason}"
crashed: "✖ {head} — ワーカーが予期せず停止しました。自動的に再試行されます。"
status: "🔄 {head} → {status}"
board_tag: "[{board}] "
assignee_tag: "@{assignee} "
head: "{board_tag}{assignee_tag}Kanban {task_id}"
personality:
none_configured: "`{path}/config.yaml` に人格が設定されていません"
header: "🎭 **利用可能な人格**\n"
none_option: "• `none` — (人格オーバーレイなし)"
item: "• `{name}` — {preview}"
usage: "\n使い方: `/personality <name>`"
save_failed: "⚠️ 人格変更の保存に失敗しました: {error}"
cleared: "🎭 人格をクリアしました — 基本のエージェント動作を使用します。\n_(次のメッセージから有効)_"
set_to: "🎭 人格を **{name}** に設定しました\n_(次のメッセージから有効)_"
unknown: "不明な人格: `{name}`\n\n利用可能: {available}"
err_config_write: "設定の書き込みに失敗しました"
profile:
header: "👤 **プロファイル:** `{profile}`"
home: "📂 **ホーム:** `{home}`"
plain: "プロファイル: {profile}\nホーム: {home}"
reasoning:
level_default: "medium (デフォルト)"
level_disabled: "none (無効)"
scope_session: "セッションのオーバーライド"
scope_global: "グローバル設定"
status: "🧠 **推論設定**\n\n**強度:** `{level}`\n**スコープ:** {scope}\n**表示:** {display}\n\n_使い方:_ `/reasoning <none|minimal|low|medium|high|xhigh|max|ultra|reset|show|hide> [--global]`"
display_on: "オン ✓"
display_off: "オフ"
display_set_on: "🧠 ✓ 推論表示: **オン**\n**{platform}** 上で各応答の前にモデルの思考が表示されます。"
display_set_off: "🧠 ✓ **{platform}** での推論表示: **オフ**"
reset_global_unsupported: "⚠️ `/reasoning reset --global` はサポートされていません。グローバルのデフォルトを変更するには `/reasoning <level> --global` を使用してください。"
reset_done: "🧠 ✓ セッションの推論オーバーライドをクリアしました。グローバル設定にフォールバックします。"
unknown_arg: "⚠️ 不明な引数: `{arg}`\n\n**有効なレベル:** none, minimal, low, medium, high, xhigh, max, ultra\n**表示:** show, hide\n**永続化:** セッションを越えて保存するには `--global` を追加"
picker_title: "🧠 **推論設定**\n\n**強度:** `{level}`\n**スコープ:** {scope}\n**表示:** {display}\n\nオプションを選択:"
choice_none: "none — 推論を無効化"
choice_reset: "reset — セッション上書きをクリア"
choice_show: "返信に推論を表示"
choice_hide: "返信の推論を非表示"
set_global: "🧠 ✓ 推論強度を `{effort}` に設定しました (設定に保存)\n_(次のメッセージから有効)_"
set_global_save_failed: "🧠 ✓ 推論強度を `{effort}` に設定しました (セッションのみ — 設定の保存に失敗)\n_(次のメッセージから有効)_"
set_session: "🧠 ✓ 推論強度を `{effort}` に設定しました (セッションのみ — 永続化するには `--global` を追加)\n_(次のメッセージから有効)_"
quote_label_discord: "-# 💭 推論"
quote_label_md: "> 💭 **推論:**"
more_lines: "\n_... (他 {count} 行)_"
block: "💭 **推論:**\n```\n{reasoning}\n```\n\n{response}"
reload_mcp:
cancelled: "🟡 /reload-mcp をキャンセルしました。MCP ツールは変更されていません。"
always_followup: "ℹ️ 今後の `/reload-mcp` は確認なしで実行されます。`config.yaml` で `approvals.mcp_reload_confirm: true` を設定すると再有効化できます。"
confirm_prompt: "⚠️ **/reload-mcp の確認**\n\nMCP サーバーを再読み込みすると、このセッションのツールセットが再構築され、**プロバイダーのプロンプトキャッシュが無効化されます** — 次のメッセージで完全な入力トークンが再送信されます。長コンテキストや高推論モデルではコストが高くなる可能性があります。\n\n選択してください:\n• **一度だけ承認** — 今すぐ再読み込み\n• **常に承認** — 今すぐ再読み込みし、このプロンプトを永続的に非表示\n• **キャンセル** — MCP ツールを変更しない\n\n_テキスト代替: `/approve`、`/always`、または `/cancel` と返信してください。_"
header: "🔄 **MCP サーバーを再読み込みしました**\n"
reconnected: "♻️ 再接続: {names}"
added: "➕ 追加: {names}"
removed: "➖ 削除: {names}"
none_connected: "接続中の MCP サーバーはありません。"
tools_available: "\n🔧 {servers} 台のサーバーから {tools} 個のツールが利用可能"
failed: "❌ MCP の再読み込みに失敗しました: {error}"
reload_skills:
header: "🔄 **スキルを再読み込みしました**\n"
no_new: "新しいスキルは検出されませんでした。"
total: "\n📚 {count} 個のスキルが利用可能"
added_header: "➕ **追加されたスキル:**"
removed_header: "➖ **削除されたスキル:**"
item_with_desc: " - {name}: {desc}"
item_no_desc: " - {name}"
failed: "❌ スキルの再読み込みに失敗しました: {error}"
reset:
header_default: "✨ セッションをリセットしました。新たに開始します。"
header_new: "✨ 新しいセッションを開始しました。"
header_titled: "✨ 新しいセッションを開始しました: {title}"
title_rejected: "\n⚠️ タイトルが拒否されました: {error}"
title_error_untitled: "\n⚠️ {error} — タイトルなしでセッションを開始しました。"
title_empty_untitled: "\n⚠️ クリーンアップ後にタイトルが空になりました — タイトルなしでセッションを開始しました。"
tip: "\n✦ ヒント: {tip}"
restart:
in_progress: "⏳ ゲートウェイの再起動はすでに進行中です..."
restarting: "♻ ゲートウェイを再起動しています。60 秒以内に通知が届かない場合は、コンソールで `hermes gateway restart` を実行してください。"
resume:
db_unavailable: "セッションデータベースは利用できません。"
parse_error: "⚠️ Could not parse `/resume` arguments: {error}. Use quotes around titles with spaces, for example: `/resume \"Project A Plan\"`."
matrix_no_named_sessions: "No named sessions found for this Matrix room. Use `/title My Session` to name the current room session, `/resume --all` to list all Matrix sessions, or `/resume --cross-room <session name>` to explicitly cross room boundaries."
matrix_blocked_no_origin: "⚠️ Matrix での /resume をブロックしました: この名前付きセッションには元のルームが記録されていないため、Hermes はデフォルトでは現在のルーム内で再開しません。意図的にルームの境界を越えて再開する場合は `/resume --cross-room {name}` を使用してください。"
matrix_blocked_other_room: "⚠️ Matrix での /resume をブロックしました: そのセッションは別の Matrix ルーム ({room}) のものです。意図的にここで再開する場合は `/resume --cross-room {name}` を使用してください。"
matrix_cross_room_success: "⚠️ Cross-room resume: resumed **{title}** inside Matrix room **{room}**. Future messages in this room will use that transcript until `/reset` or another `/resume`.{msg_part}"
blocked_not_owner: "⚠️ /resume をブロックしました: '**{name}**' は別のユーザーまたはチャットのセッションです。再開できるのはこのチャットのセッションのみです。"
no_named_sessions: "名前付きセッションが見つかりません。\n`/title セッション名` で現在のセッションに名前を付けると、後で `/resume セッション名` で戻れます。"
all_requires_admin: "_注: `--all`(チャット横断の一覧)には設定済みの管理者権限が必要です。このチャットのセッションのみ表示しています。_"
list_header: "📋 **名前付きセッション**\n"
list_item: "• **{title}**{preview_part}"
list_item_numbered: "{index}. **{title}**{preview_part}"
list_preview_suffix: " — _{preview}_"
list_footer: "\n使い方: `/resume <セッション名>`"
list_footer_numbered: "\n使い方: `/resume <セッション名>` または `/resume <番号>`(例: 最新のセッションには `/resume 1`)"
list_failed: "セッションを一覧表示できませんでした: {error}"
out_of_range: "再開インデックス {index} は範囲外です。\n引数なしで `/resume` を実行すると、利用可能なセッションが表示されます。"
not_found: "'**{name}**' に一致するセッションが見つかりません。\n引数なしで `/resume` を実行すると利用可能なセッションを表示します。"
already_on: "📌 既にセッション **{name}** にいます。"
switch_failed: "セッションの切り替えに失敗しました。"
resumed_one: "↻ セッション **{title}** を再開しました ({count} メッセージ)。会話を復元しました。"
resumed_many: "↻ セッション **{title}** を再開しました ({count} メッセージ)。会話を復元しました。"
resumed_no_count: "↻ セッション **{title}** を再開しました。会話を復元しました。"
msg_count_one: " ({count} 件のメッセージ)"
msg_count_other: " ({count} 件のメッセージ)"
retry:
no_previous: "再試行する前のメッセージがありません。"
unsafe: "そのメッセージを安全に再試行できません: {error}"
failed_unchanged: "再試行に失敗しました。トランスクリプトは変更されていません。"
rollback:
not_enabled: "チェックポイントは有効になっていません。\nconfig.yaml で有効にしてください:\n```\ncheckpoints:\n enabled: true\n```"
none_found: "{cwd} のチェックポイントが見つかりません"
invalid_number: "無効なチェックポイント番号です。1-{max} を使用してください。"
restored: "✅ チェックポイント {hash} に復元しました: {reason}\nロールバック前のスナップショットが自動的に保存されました。"
kept_user_edits: "↷ 手動編集は保持されました: {files}\nそれらも復元するには /rollback <N> --all を使用してください。"
kept_oversize: "↷ 保持しました(チェックポイントには大きすぎるため、戻せる保存コピーがありません): {files}"
failed_deletes: "⚠️ 削除できませんでした(そのまま残っています): {files}"
restore_failed: "❌ {error}"
diff:
not_enabled: "チェックポイントが有効になっていないため、セッションのベースラインがありません。\nconfig.yaml で有効にしてください:\n```\ncheckpoints:\n enabled: true\n```\n通常の /diff は引き続き使えます — git を直接使用します。"
no_changes: "変更はありません。"
failed: "{error}"
err_default: "diff を生成できませんでした"
more_untracked: "\n... 他 {count} 件"
untracked_label: "**未追跡:**"
truncated_note: "\n... (省略 — 全 {lines} 行。要約を見るには /diff --stat を使ってください)"
set_home:
save_failed: "ホームチャンネルを保存できませんでした: {error}"
success: "✅ ホームチャンネルを **{name}** (ID: {chat_id}) に設定しました。\nCron ジョブとプラットフォーム間メッセージはここに配信されます。"
err_missing_platform: "論理プラットフォームが指定されていません"
err_relay_unauthenticated: "リレーはこの論理ホームターゲットを認証していません"
context:
header: "🧠 **コンテキストウィンドウ**"
model: "モデル: `{model}`"
window: "ウィンドウ: {total} トークン"
in_use: "使用中: {used} / {total} ({pct}%)"
bar: "{bar}"
headroom: "上限までの余裕: {headroom} トークン"
threshold: "自動圧縮のしきい値: {threshold} ({threshold_pct}%) — 残り {to_go}"
over_threshold: "⚠️ **自動圧縮のしきい値 ({threshold}、{threshold_pct}%) を超えています**"
compressions: "このセッションの圧縮回数: {count}"
last_savings: "前回の圧縮で解放: コンテキストの {savings}%"
totals_header: "セッション合計 ({calls} 回の API 呼び出しの累計)"
totals_line: "入力 {input} · 出力 {output} · 推論 {reasoning}"
total_billed: "請求合計: {total}"
throughput_note: "_これはコンテキストサイズではなく累計の通信量です — 各呼び出しで上記のウィンドウ全体が再送信されます。_"
estimated: "推定コンテキスト: ~{count} トークン ({messages} 件のメッセージ)"
detail_after_first: "_(圧縮と通信量の詳細な統計は最初のエージェント応答後に利用可能)_"
no_data: "コンテキストデータはまだありません。メッセージを送信してセッションを開始してください。"
category:
system_prompt: "システムプロンプト"
tool_definitions: "ツール定義"
rules: "ルール"
skills: "スキル"
mcp: "MCP"
subagent_definitions: "サブエージェント定義"
memory: "メモリ"
conversation: "会話"
category_header: "カテゴリ別の推定使用量"
no_data_yet: " (まだデータがありません — 先にメッセージを送信してください)"
free_space: "空き容量"
category_row: "{glyph} {label} 約{tokens} トークン 約{pct}%"
toolset_row: " {toolset} {count} ツール 約{tokens} トークン"
not_available: "n/a"
skill_row: " {name} インデックス 約{index_tokens} SKILL.md {md_tokens} トークン"
and_more: " … 他 {count} 件"
toolsets_title: "スキーマコスト別ツールセット (大きい順)"
skills_title: "コスト別スキル (インデックス = 常時読み込み、SKILL.md = 読み込み時のコスト)"
window_line: "コンテキストウィンドウ: {mark}{used} / {max} トークン ({mark}{pct}%)"
source:
local_estimate: "ローカル推定"
provider_usage: "プロバイダーの使用量"
provider_usage_plus_estimate: "プロバイダーの使用量 + 新規メッセージの推定"
source_line: "ソース: {source}。カテゴリ別の値はローカル推定です。"
hint_all: "スキル別・ツールセット別のコストを見るには /context all を使ってください。"
status:
header: "📊 **Hermes ゲートウェイ状態**"
matrix_scope_header: "**Matrix スコープ:**"
matrix_scope_room: " room: {room}"
matrix_scope_room_id: " room_id: {room_id}"
matrix_scope_thread: " thread_id: {thread_id}"
matrix_scope_mode: " session_scope: {scope}"
matrix_scope_key: " session_key: {session_key}"
session_id: "**セッション ID:** `{session_id}`"
title: "**タイトル:** {title}"
created: "**作成日時:** {timestamp}"
last_activity: "**最終アクティビティ:** {timestamp}"
model: "**モデル:** `{model}`"
model_provider: "**モデル:** `{model}` ({provider})"
context: "**コンテキスト:** {used} / {total} ({pct}%)"
context_used: "**コンテキスト:** ~{used} トークン"
tokens: "**累計請求トークン:** {tokens} _(現在のコンテキストサイズではありません。`/context` を使用してください)_"
agent_running: "**エージェント実行中:** {state}"
state_yes: "はい ⚡"
state_no: "いいえ"
queued: "**キュー内の後続:** {count}"
platforms: "**接続プラットフォーム:** {platforms}"
discard:
nothing: "破棄するものはありません: このチャットに再起動で失われたターンはありません。"
done: "🗑️ 失われたターンを {count} 件破棄しました。再実行はしていません。保存されたメッセージにこれから応答します。"
stop:
stopped_pending: "⚡ 停止しました。エージェントはまだ開始していません — このセッションを続行できます。"
stopped: "⚡ 停止しました。このセッションを続行できます。"
no_active: "停止できるアクティブなタスクはありません。"
force_stopped_pending: "⚡ 強制停止しました。エージェントはまだ起動中でした — セッションのロックを解除しました。"
title:
db_unavailable: "セッションデータベースは利用できません。"
warn_prefix: "⚠️ {error}"
empty_after_clean: "⚠️ クリーンアップ後にタイトルが空になりました。印字可能な文字を使用してください。"
set_to: "✏️ セッションタイトルを設定しました: **{title}**"
not_found: "データベースにセッションが見つかりません。"
current_with_title: "📌 セッション: `{session_id}`\nタイトル: **{title}**"
current_no_title: "📌 セッション: `{session_id}`\nタイトル未設定。使い方: `/title セッション名`"
topic:
not_telegram_dm: "/topic コマンドは Telegram のプライベートチャットでのみ利用できます。"
no_session_db: "セッションデータベースを利用できません。"
unauthorized: "この bot で /topic を使用する権限がありません。"
restore_needs_topic: "セッションを復元するには、まず Telegram topic を作成または開いてから、その topic 内で /topic <session-id> を送信してください。新しい topic を作成するには、All Messages を開いて任意のメッセージを送信してください。"
topics_disabled: "この bot ではまだ Telegram topics が有効になっていません。\n\n有効にする方法:\n1. @BotFather を開きます。\n2. 自分の bot を選びます。\n3. Bot Settings → Threads Settings を開きます。\n4. Threaded Mode をオンにし、ユーザーが新しいスレッドを作成できるように設定します。\n\nそして /topic をもう一度送信してください。"
topics_user_disallowed: "Telegram topics は有効ですが、ユーザーは topic を作成できません。\n\n@BotFather → 自分の bot → Bot Settings → Threads Settings を開き、'Disallow users to create new threads' をオフにしてください。\n\nそして /topic をもう一度送信してください。"
enable_failed: "Telegram topic モードの有効化に失敗しました: {error}"
bound_status: "この topic は次にリンクされています:\nセッション: {label}\nID: {session_id}\n\nこの topic を新しいセッションに置き換えるには /new を使用してください。\n並行作業には、All Messages を開いてメッセージを送信し、別の topic を作成してください。"
thread_ready: "Telegram のマルチセッション topics が有効です。\n\nこの topic は独立した Hermes セッションとして使用されます。この topic の現在のセッションを置き換えるには /new を使用してください。並行作業には、All Messages を開いてメッセージを送信し、別の topic を作成してください。"
untitled_session: "無題のセッション"
restore_step_1: "1. トピックを作成または開きます。新規作成するには、All Messages を開いてそこに何かメッセージを送信してください。"
restore_step_2: "2. そのトピック内で /topic <session-id> を送信してください。"
default_title: "Hermes Chat"
root_lobby: "このメインチャットはシステムコマンド専用です。\n\n新しい Hermes チャットを始めるには、このボット画面の上部にある All Messages トピックを開き、そこに何かメッセージを送信してください。Telegram がそのメッセージ用の新しいトピックを作成します。各トピックは独立した Hermes セッションとして動作します。"
root_new: "新しい Hermes チャットを並行して始めるには、このボット画面の上部にある All Messages トピックを開き、そこに何かメッセージを送信してください。Telegram が新しいトピックを作成します。\n\n各トピックは独立した Hermes セッションです。既存トピック内の /new は、そのトピックの現在のセッションを置き換えたい場合にのみ使ってください。"
new_header: "このトピックで新しい Hermes セッションを開始しました。\n\nヒント: 並行作業には、ここで /new を使う代わりに All Messages を開いてメッセージを送信し、別のトピックを作成してください。/new は現在のトピックに紐づくセッションを置き換えます。"
help: "/topic — マルチセッション DM モードを有効化 (1 つのボットで多数の並行チャット)\n\n使い方:\n /topic トピックモードを有効化 (すでにオンなら状態を表示)\n /topic help このメッセージを表示\n /topic off トピックモードを無効化し、トピックの紐づけをクリア\n /topic <id> トピック内で: 以前のセッションを ID で復元\n\n仕組み:\n1. この DM で /topic を一度実行します。Hermes が BotFather の Threads\n Settings が有効か確認し、マルチセッションモードをオンにします。\n2. ボット上部の All Messages をタップし、何かメッセージを送信します。\n Telegram がそのメッセージ用の新しいトピックを作成します。各トピックは\n 独立した Hermes セッションです (履歴もコンテキストも新規)。\n3. ルート DM はシステムロビーになります。/topic、/status、\n /help、/usage はそこで送信してください。通常のプロンプトはトピック内で送ります。\n4. トピック内の /new は、そのトピックのセッションだけをリセットします。\n5. トピック内の /topic <id> は、古いセッションをそのトピックに復元します。"
system_topic_name: "システム"
system_topic_intro: "Hermes のコマンドと状態表示のためのシステムトピックです。"
setup_image_caption: "BotFather → Bot Settings → Threads Settings"
no_chat_id: "チャット ID を特定できませんでした。"
mode_not_enabled: "このチャットではマルチセッションのトピックモードは現在有効になっていません。"
disable_failed: "トピックモードを無効化できませんでした: {error}"
mode_disabled: "このチャットのマルチセッションのトピックモードをオフにしました。\n\nTelegram 上の既存トピックは削除されません。独立したセッションとして扱われなくなるだけです。ルート DM は再び通常の Hermes チャットとして動作します。後で再度有効化するには /topic を実行してください。"
status_enabled: "Telegram のマルチセッショントピックは有効です。"
status_how_to: "新しい Hermes チャットを始めるには、このボット画面の上部にある All Messages を開き、そこに何かメッセージを送信してください。Telegram が新しいトピックを作成します。"
previous_unlinked: "以前の未紐づけセッション:"
restore_one: "復元するには:"
restore_example: "例: トピック内で /topic {session_id} を送信します。"
no_unlinked: "以前の未紐づけ Telegram セッションは見つかりませんでした。"
restore_later: "以前のセッションを後で復元するには:"
session_not_found: "セッションが見つかりません: {session_id}"
not_telegram_session: "そのセッションは Telegram のセッションではないため、このトピックに復元できません。"
not_your_session: "そのセッションはこの Telegram ユーザーのものではありません。"
already_linked: "そのセッションはすでに別の Telegram トピックに紐づいています。"
restored: "セッションを復元しました: {title}"
restored_last_message: "\n\nHermes の最後のメッセージ:\n{text}"
undo:
nothing: "元に戻せる操作がありません。"
removed: "↩️ {turns} ターンを取り消しました({count} 件のメッセージ)。\nバックアップ先: 「{preview}」\n上のテキストをコピー/編集して送信すると、ここから再入力できます。"
invalid_count: "無効な数値「{arg}」— /undo または /undo N を使用してください。"
update:
platform_not_messaging: "✗ /update はメッセージングプラットフォームでのみ利用可能です。ターミナルで `hermes update` を実行してください。"
not_git_repo: "✗ Git リポジトリではありません — 更新できません。"
hermes_cmd_not_found: "✗ `hermes` コマンドが見つかりません。Hermes は実行中ですが、更新コマンドは PATH 上にも現在の Python インタープリタ経由でも実行可能ファイルを見つけられませんでした。ターミナルで `hermes update` を手動で実行してみてください。"
start_failed: "✗ 更新の開始に失敗しました: {error}"
starting: "☤ Hermes の更新を開始しています… 進捗をここにストリーミングします。"
reply_failed: "✗ 更新プロセスへの応答送信に失敗しました: {error}"
reply_sent: "✓ 更新プロセスに `{label}` を送信しました。"
failed_notice: "❌ Hermes の更新に失敗しました。以前のバージョンが引き続き動作しています。完全なエラーを見るにはホストで `hermes update` を実行するか、後で /update を再試行してください。"
prompt_default: " (デフォルト: {default})"
prompt: "☤ **更新に入力が必要です:**\n\n{prompt}{default_hint}\n\n`{prefix}approve` (はい) または `{prefix}deny` (いいえ) と返信するか、回答を直接入力してください。"
finished: "✅ Hermes の更新が終了しました。"
timed_out: "❌ Hermes の更新は 30 分でタイムアウトしました。"
finished_success: "✅ Hermes の更新が正常に完了しました。"
last_lines: "{msg}\n\n最後の行:\n```\n{tail}\n```"
managed_action: "Hermes Agent の更新"
not_applicable: "✗ `hermes update` はこのインストール方法 ({method}) には適用できません。\n更新方法: {command}"
usage:
rate_limits: "⏱️ **レート制限:** {state}"
header_session: "📊 **セッショントークン使用状況**"
label_model: "モデル: `{model}`"
label_input_tokens: "入力トークン: {count}"
label_cache_read: "キャッシュ読み取りトークン: {count}"
label_cache_write: "キャッシュ書き込みトークン: {count}"
label_output_tokens: "出力トークン: {count}"
label_total: "合計: {count}"
label_api_calls: "API 呼び出し: {count}"
label_cost: "コスト: {prefix}${amount}"
label_cost_included: "コスト: 含まれています"
label_context: "コンテキスト: {used} / {total} ({pct}%)"
label_compressions: "圧縮回数: {count}"
breakdown_header: "🧩 **コンテキスト内訳** _(推定)_"
breakdown_line: "• {label}: 約{count} ({pct}%)"
breakdown_cat_system_prompt: "システムプロンプト"
breakdown_cat_tool_definitions: "ツール定義"
breakdown_cat_rules: "ルール"
breakdown_cat_skills: "スキル"
breakdown_cat_mcp: "MCP"
breakdown_cat_subagent_definitions: "サブエージェント定義"
breakdown_cat_memory: "メモリ"
breakdown_cat_conversation: "会話"
header_session_info: "📊 **セッション情報**"
label_messages: "メッセージ数: {count}"
label_estimated_context: "推定コンテキスト: ~{count} トークン"
detailed_after_first: "_(詳細な使用状況は最初のエージェント応答後に利用可能)_"
no_data: "このセッションの使用データはありません。"
unknown_subcommand: "不明な /usage サブコマンド: `{args}`。`/usage` または `/usage reset [--force]` をお試しください。"
reset_wrong_provider: "バンクされた使用制限リセットは openai-codex プロバイダーでのみ利用できます。まず `/model` で切り替えてください。"
credits:
not_logged_in: "Nous Portal にログインしていません。ログインすると残高の確認とチャージができます。"
verbose:
not_enabled: "`/verbose` コマンドはメッセージングプラットフォームで有効になっていません。\n\n`config.yaml` で有効にしてください:\n```yaml\ndisplay:\n tool_progress_command: true\n```"
mode_off: "⚙️ ツール進捗: **OFF** — ツールの動作は表示されません。"
mode_new: "⚙️ ツール進捗: **NEW** — ツールが変わったときに表示 (プレビュー長: `display.tool_preview_length`、デフォルト 40)。"
mode_all: "⚙️ ツール進捗: **ALL** — すべてのツール呼び出しを表示 (プレビュー長: `display.tool_preview_length`、デフォルト 40)。"
mode_verbose: "⚙️ ツール進捗: **VERBOSE** — すべてのツール呼び出しを完全な引数とともに表示。"
mode_log: "⚙️ ツール進捗: **LOG** — チャットには表示せず、ツール呼び出しを ~/.hermes/logs/tool_calls.log に記録します。"
saved_suffix: "_(**{platform}** に保存しました — 次のメッセージから有効)_"
save_failed: "_(設定に保存できませんでした: {error})_"
voice:
enabled_voice_only: "音声モードを有効にしました。\n音声メッセージを送ると音声で返信します。\nすべてのメッセージへの音声返信は /voice tts を使ってください。"
disabled_text: "音声モードを無効にしました。テキストのみで返信します。"
tts_enabled: "自動 TTS を有効にしました。\nすべての返信に音声メッセージが含まれます。"
status_mode: "音声モード: {label}"
status_channel: "音声チャンネル: #{channel}"
status_participants: "参加者: {count}"
status_member: " - {name}{status}"
speaking: " (発話中)"
enabled_short: "音声モードを有効にしました。"
disabled_short: "音声モードを無効にしました。"
label_off: "オフ (テキストのみ)"
label_voice_only: "オン (音声メッセージにのみ音声で返信)"
label_all: "TTS (すべてのメッセージに音声で返信)"
help: "{toggle}\n\n**/voice の使い方**\n• `/voice on` — 音声メッセージを送ると音声で返信\n• `/voice tts` — *すべての*メッセージに音声で返信\n• `/voice off` — テキストのみの返信に戻す\n• `/voice status` — 現在のモードを表示\n• `/voice`(引数なし)— オンとオフをすばやく切り替え{channels}"
help_channels: "\n\n**ライブ音声チャンネル (Discord)**\n• 先に音声チャンネルに参加してから `/voice channel` — 参加して聞き取り、音声で返信します\n• `/voice leave` — 音声チャンネルから切断"
transcript_echo_short: "🎙️ \"{text}\""
channel_unsupported: "このプラットフォームでは音声チャンネルはサポートされていません。"
channel_guild_only: "このコマンドは Discord サーバー内でのみ使えます。"
channel_not_in_voice: "先に音声チャンネルに参加してください。"
channel_join_failed: "音声チャンネルに参加できませんでした: {error}"
channel_deps_missing: "音声用の依存パッケージがありません (PyNaCl / davey)。実行してください: `{hint}`"
channel_join_permissions: "音声チャンネルに参加できませんでした。ボットの権限 (接続 + 発言) を確認してください。"
channel_joined: "音声チャンネル **{name}** に参加しました。\n返答は音声で読み上げ、あなたの声を聞き取ります。切断するには /voice leave を使ってください。"
channel_not_joined: "音声チャンネルに参加していません。"
channel_left: "音声チャンネルから退出しました。"
transcript_echo: "**[音声]** <@{user}>: {text}"
yolo:
disabled: "⚠️ このセッションの YOLO モードは **OFF** — 危険なコマンドには承認が必要です。"
enabled: "⚡ このセッションの YOLO モードは **ON** — すべてのコマンドが自動承認されます。注意して使用してください。"
shared:
session_db_unavailable: "セッションデータベースが利用できません。"
session_db_unavailable_prefix: "セッションデータベースが利用できません"
session_not_found: "データベースにセッションが見つかりません。"
warn_passthrough: "⚠️ {error}"
unknown_error: "不明なエラー"
error_prefix: "エラー: {error}"
history_unreadable: "⚠️ 現在この会話の履歴を読み取れません (以前のメッセージは存在しますが読み込めません)。ホストで `hermes doctor --fix` を実行するか、/new で新しく始めてください。"
agent_running_retry_later: "エージェントが実行中です — ターンの終了を待ってから /{command} を実行してください。"
none_marker: "(なし)"
none_value: "なし"
unknown_value: "不明"
exec_approval:
header: "Hermes があなたの承認が必要なコマンドを実行しようとしています"
reason_label: "フラグの理由"
default_reason: "危険なコマンド"
smart_deny_line: "スマート DENY: オーナーによる上書きはこの 1 回の操作にのみ適用されます。"
smart_deny_heading: "⚠️ **スマート DENY — 1 回の操作に限ったオーナーの上書き:**"
timed_out_notice: "⌛ 承認は {window} でタイムアウトしました — コマンドは実行されていません。必要であれば再度お知らせください。または config.yaml の approvals.timeout を増やしてください。"
timed_out_card_body: "{notice}\n```\n{command}\n```"
action_once: "今回のみ許可"
action_session: "セッション中許可"
action_always: "常に許可"
action_deny: "拒否"
deadline: "{window} 以内に回答がない場合、実行されません。"
text_choice_once: "1 回だけ実行するには `{prefix}approve`"
text_choice_session: "このセッション中このパターンを許可するには `{prefix}approve session`"
text_choice_always: "永続的に許可するには `{prefix}approve always`"
text_choice_deny: "キャンセルするには `{prefix}deny`"
text_choice_joiner: ", "
text_choice_last: ", または {choice} と返信してください。\n"
text_body: "{heading}\n```\n{command}\n```\n{reason_label}: {reason}\n\n"
notify:
media_kind:
audio: "音声"
video: "動画"
file: "ファイル"
image: "画像"
media_delivery_failed: "⚠️ {kind}の添付ファイルを配信できませんでした。"
media_delivery_failed_with_name: "⚠️ {kind}の添付ファイル ({file_name}) を配信できませんでした。"
delivery_failed_retry: "⚠️ 複数回試みましたがメッセージを配信できませんでした。もう一度お試しください — リクエストは処理されましたが、応答を送信できませんでした。"
plain_fallback_prefix: "(応答の書式設定に失敗したため、プレーンテキストで表示します:)\n\n{content}"
turn_error_no_details: "詳細情報はありません"
turn_error_detailed: "申し訳ありません。エラーが発生しました ({error_type})。\n{error_detail}\nもう一度試すか、/reset で新しいセッションを始めてください。"
turn_error: "申し訳ありません。エラーが発生しました。"
context_injection_refused: "コンテキストの注入を拒否しました。"
no_home_channel: "📬 {platform} のホームチャンネルが設定されていません。ホームチャンネルは、Hermes が cron ジョブの結果やプラットフォーム間メッセージを配信する場所です。\n\nこのチャットをホームチャンネルにするには {sethome_cmd} と入力してください。不要な場合は無視してください。"
unauthorized:
action_notice: "このボットは非公開で、あなたは許可リストに含まれていません。所有者であれば、ホストで `hermes pairing approve {platform} <request-id>` を実行してください (ID は `hermes pairing list` で確認できます)。"
admin_only_can_run: "実行できるコマンド: "
admin_only_whoami_hint: "。完全な一覧は /whoami で確認してください。"
admin_only_none: "このプラットフォームでは管理者以外が使えるスラッシュコマンドはありません。管理者に allow_admin_from への追加、または user_allowed_commands の設定を依頼してください。"
admin_only: "⛔ ここでは /{command} は管理者専用です。{suffix}"
owner_hint_env: "{home}/.env の {env_var} に ID を追加してゲートウェイを再起動してください"
owner_hint_generic: "このプラットフォームの許可ユーザーリストに ID を追加してゲートウェイを再起動してください"
owner_notice: "未承認の {platform} ユーザー {who} からのメッセージを破棄しました。本人または信頼できる相手であれば、{allowlist}。あるいは {home}/config.yaml で {platform} に `unauthorized_dm_behavior: pair` を設定すると、不明な送信者にペアリングコードが発行され、`hermes pairing approve {platform} <code>` で承認できます。"
picker:
page_info: " ({total} 件中 {start}–{end})"
clarify:
hint_single: "番号、選択肢のテキスト、または自由回答で返信してください。"
hint_multi: "複数選択できます — カンマまたはスペース区切りの番号 (例: \"1, 3\")、選択肢のテキスト、または自由回答で返信してください。"
option_line: " {index}. {choice}"
question: "❓ {question}"
answered: "✅ 回答済み: {response}"
cancelled: "↩️ 確認をキャンセルしました — あなたのメッセージは続きの指示として処理されます。"
expired: "⏳ このプロンプトは期限切れです — 新しいリクエストを送信してください。"
native_stream_placeholder: "💬 選択をお待ちしています..."
skip_hint: 'この質問をスキップするには「skip」と返信してください。'
errors:
rate_limited: "⏱️ AI モデルサービスがリクエストをレート制限しています。少し待ってから /retry を使ってください。"
auth_failed: "⚠️ AI モデルサービスへのサインインに失敗しました。/login で再度サインインするか、このボットの運用者にホストで `hermes doctor` を実行するよう依頼してください。"
bad_request: "⚠️ AI モデルサービスがこのリクエストを拒否しました。メッセージの言い回しを変えるか、/model でモデルを切り替えてください。"
connection_interrupted: "⚠️ AI モデルサービスへの接続がリクエスト中に途切れました — 通常は一時的なものです。/retry で再試行し、繰り返す場合はホストで `hermes doctor` を実行してください。"
unreachable: "⚠️ AI モデルサービスに現在接続できません — 設定されたモデルのエンドポイントが動作していないか到達できません。少し待って /retry を使い、続く場合はホストで `hermes doctor` を実行してください。"
connection_unknown: "⚠️ Hermes は AI モデルサービスに接続できませんでした (SDK からの詳細情報なし)。/retry で再試行し、続く場合はホストで `hermes doctor` を実行してください。"
context_overflow: "⚠️ この会話は長くなりすぎて一度に読み切れません。/compress で履歴を短縮するか、/new で新しい会話を始めてください。"
usage_limit_resets: "⏱️ AI モデルサービスの使用量上限に達しました。{window} 後にリセットされます。その後に /retry を使うか、/model でモデルを切り替えてください。"
provider_kept_failing: "⚠️ AI モデルサービスの失敗が続きました。/retry で再試行するか、/model でモデルを切り替えてください。詳細はゲートウェイのログ (`hermes logs`) にあります。"
session_storage_unavailable_disk: "⚠️ セッションストレージが一時的に利用できなかったため、会話履歴を保護するためにこのターンを停止しました。ディスクの空き容量を確認してから、メッセージをもう一度送信してください。"
session_storage_unavailable: "⚠️ セッションストレージが一時的に利用できなかったため、会話履歴を保護するためにこのターンを停止しました。メッセージはすでに保存されているはずです — 少し待ってからもう一度送信してください。"
generic_failed: "⚠️ 問題が発生し、この返答を完了できませんでした。/retry で再試行するか、/new で新しい会話を始めてください。技術的な詳細はゲートウェイのログ (`hermes logs`) にあります。"
interrupted_before_start: "⚠️ あなたのメッセージは処理開始前に中断されました (直前の /stop が原因の可能性があります)。もう一度送信してください。"
processing_incomplete: "処理が未完了"
stopped_before_finishing: "⚠️ 完了前に停止する必要がありました{reason}。/retry で再試行するか、会話が非常に長くなっている場合は /compress を使ってください。"
no_response: "⚠️ 処理は完了しましたが、応答が生成されませんでした。一時的なエラーの可能性があります — メッセージをもう一度送信してみてください。"
previous_turn_cleanup: "⚠️ あなたのメッセージは処理されませんでした (前のターンの後処理がまだ進行中でした)。もう一度送信してください。"
unexpected_silence: "⚠️ 返答が必要なメッセージに対して、モデルは沈黙マーカーのみを返しました。もう一度試すか、言い換えてください。"
empty_response_model_label: "モデル"
hint_auth: " AI モデルサービスへのサインインが期限切れか、API キーが誤っています。ここで /login を使うか、ホストで `{relogin}` を実行してください。"
hint_quota: " AI モデルサービスの残高または割り当てを使い切りました。サービスのウェブサイトでチャージするか、/model でモデルを切り替えてください。"
hint_overloaded: " AI モデルサービスが一時的に過負荷状態です。少し待ってから /retry を使ってください。"
hint_rate_limited: " レート制限を受けています。少し待ってからもう一度お試しください。"
hint_usage_limit_resets: " ご利用のプランの使用量上限に達しました。約 {hours} 時間後にリセットされます。"
hint_usage_limit: " ご利用のプランの使用量上限に達しました。リセットされるまでお待ちください。"
hint_rejected: " AI モデルサービスがリクエストを拒否しました。"
generic_failed_with_hint: "⚠️ 問題が発生し、この返答を完了できませんでした。{hint}\n/retry で再試行するか、/new で新しい会話を始めてください。技術的な詳細はゲートウェイのログ (`hermes logs`) にあります。"
history_unavailable: "⚠️ このセッションの履歴が一時的に利用できないため、このメッセージは処理されませんでした。運用者に state.db の確認を依頼し、正常になってから再送信してください。/reset は意図的に新しい会話を始めたい場合のみ使ってください。"
no_credentials: "⚠️ AI モデルサービスに接続できなかったため、このメッセージは処理されませんでした。/login で再度サインインするか、/model で別のモデルを選んでください。失敗が続く場合は、ホストで `hermes doctor` を実行してください。"
cron_session_read_only: "⚠️ このチャットはスケジュールされたジョブ専用で、そのジョブしか実行しないため、メッセージは実行されませんでした。送信するには新しいチャットを開始してください。"
workspace_unavailable: "⚠️ このチャットの作業フォルダーが見つかりません({path})。そのためメッセージは実行されませんでした。フォルダーを作り直すか、チャットを別のフォルダーへ移動してから(CLI では `/worktree new`、デスクトップアプリでは「Move to project」)、もう一度送信してください。"
launch_credentials_unavailable: "⚠️ このチャットは開始時の API キーをもう使えないため{detail}、このチャットでは何も実行できません。開いているチャットが自動で別のキーに切り替わることはないので、/retry でも同じように失敗します。/new で現在のキーを使う新しいチャットを始めてください。"
skills:
disabled: "**{name}** スキルはインストールされていますが無効です。\n有効化するには: `hermes skills config`"
not_installed: "**{name}** スキルは利用可能ですがインストールされていません。\nインストールするには: `hermes skills install {install_name}`"
disabled_for_platform: "**{name}** スキルは {platform} では無効です。\n有効化するには: `hermes skills config`"
stacked_disabled: "このスタック呼び出しに含まれる **{names}** スキルは {platform} では無効です。\n有効化するには: `hermes skills config`"
stacked_load_failed: "/{command} のスタックスキルの読み込みに失敗しました。"
gate_off: "スキル書き込みの承認はオフです (skills.write_approval)。/skills approval on で有効化し、ステージされた書き込みを /skills pending でここからレビューしてください。"
unknown_subcommand: "このプラットフォームでは不明な /skills サブコマンドです。使用可能: pending、approve <id>、reject <id>、diff <id>、approval <on|off>。(検索/インストールは CLI 専用です。)"
diff_truncated: "\n… (省略 — 完全な diff は ~/.hermes/pending/skills/{pending_id}.json にあります)"
busy:
action_restarting: "再起動中"
action_shutting_down: "シャットダウン中"
reject_model: "エージェントが実行中です — 完了を待つか、先に /stop してからモデルを切り替えてください。"
reject_codex_runtime: "エージェントが実行中です — 完了を待つか、先に /stop してからランタイムを変更してください。"
reject_moa: "エージェントが実行中です — 完了を待つか、先に /stop してから /moa を実行してください。"
drain_queued: "⏳ ゲートウェイは{action}です — 復帰後の次のターンにキューしました。"
drain_rejected: "⏳ ゲートウェイは{action}のため、現在は次のターンを受け付けていません。"
drain_rejected_new_work: "⏳ ゲートウェイは{action}のため、現在は新しい作業を受け付けていません。"
demoted_tail: " — メッセージは完了後に処理されるようキューしました (/stop ですべてキャンセルできます)。"
elapsed_min: "{minutes} 分経過"
running_tool: "実行中: {tool}"
ack_detail_wrap: " ({detail})"
ack_detail_joiner: ", "
ack: "{head}{detail}{tail}"
steered_subagents_head: "⏩ 現在の実行とそのアクティブなサブエージェントにステアしました"
steered_subagents_tail: "。メッセージはそれぞれの次のツール呼び出し後に届きます。"
steered_head: "⏩ 現在の実行にステアしました"
steered_tail: "。メッセージは次のツール呼び出し後に届きます。"
redirected_head: "↪ 現在の実行をリダイレクトしました"
redirected_tail: "。ご指摘に沿って調整します。"
subagent_working_head: "⏳ サブエージェントが作業中"
compressing_head: "⏳ コンテキストを圧縮中"
queued_head: "⏳ 次のターンにキューしました"
queued_tail: "。現在のタスクが完了したら応答します。"
interrupting_head: "⚡ 現在のタスクを中断中"
interrupting_tail: "。まもなくメッセージに応答します。"
slash_rejected: "⏳ エージェントが実行中です — `/{command}` はターンの途中では実行できません。現在の応答を待つか、先に `/stop` してください。"
reject_goal: "エージェントが実行中です — 実行中は /goal status / pause / clear / wait を使うか、新しい目標を設定する前に /stop してください。"
reject_loop: "エージェントが実行中です — 実行中は /loop status / pause / stop を使うか、新しいループを設定する前に /stop してください。"
draining_maintenance: "⏳ このエージェントはメンテナンス操作のためドレイン中で、現在は新しいターンを受け付けていません。まもなく復帰しますので、少し待ってから再送信してください。"
another_turn_running: "⏳ このセッションでは別のターンがまだ実行中です。トランスクリプトを保護するため、このメッセージは処理されませんでした。アクティブなターンの完了を待ってから再送信してください。"
behavior_queue_short: "次のターンにキュー"
behavior_queue_long: "Hermes がビジー状態の間、メッセージは次のターンにキューされます。"
behavior_steer_short: "現在の実行にステア (次のツール呼び出し後)"
behavior_steer_long: "メッセージは現在の実行にステアされます (次のツール呼び出し後)。"
behavior_interrupt_short: "現在の実行を中断"
behavior_interrupt_long: "Hermes がビジー状態の間、メッセージは現在の実行を中断します。"
status: "**ビジー時の入力モード: `{mode}`\nビジー中のメッセージ: _{behavior}_\n変更するには `/busy queue`、`/busy steer`、または `/busy interrupt` を使ってください。"
unknown_mode: "不明なモード `{arg}` です。`/busy queue`、`/busy steer`、または `/busy interrupt` を使ってください。"
save_failed: "ビジー時の入力モードを設定に保存できませんでした。モードは変更されていません。"
set: "ビジー時の入力モードを **`{mode}`** に設定しました (保存済み)。\n_{behavior}_"
pause:
resumed: "▶️ 再開しました — 新しい作業を再び受け付けます。"
not_paused: "Hermes は一時停止していませんでした。"
reason_suffix: " (理由: {reason})"
already_paused: "⏸️ Hermes はすでに一時停止しています{suffix}。再開するには `/pause off` を使ってください。"
paused: "⏸️ 一時停止しました{suffix}。新しい cron/kanban/ゲートウェイの作業は保留され、進行中の作業は通常どおり完了します。再開するには `/pause off` を使ってください。"
queue:
usage: "使い方: /queue <プロンプト>"
queued: "次のターンにキューしました。"
queued_depth: " ({depth} 件キュー中)"
steer:
usage: "使い方: /steer <プロンプト>"
usage_idle: "使い方: /steer <プロンプト> (実行中のエージェントがないため、通常のメッセージとして送信します)"
queued_starting: "エージェントはまだ起動中です — /steer を次のターンにキューしました。"
queued_no_agent: "アクティブなエージェントがありません — /steer を次のターンにキューしました。"
failed: "⚠️ ステアに失敗しました: {error}"
rejected_empty: "ステアを拒否しました (ペイロードが空です)。"
target_subagents: "実行とそのアクティブなサブエージェント"
target_run: "実行"
queued: "⏩ 現在の{target}へのステアをキューしました — 次のツール呼び出し後に届きます: '{preview}'"
suggestions:
failed: "suggestions コマンドが失敗しました: {error}"
blueprint:
failed: "cron blueprint コマンドが失敗しました: {error}"
confirm:
destructive_prompt: "⚠️ **/{command} の確認**\n\n{detail}\n\n選択してください:\n• **一度だけ承認** — 今回のみ実行\n• **常に承認** — 実行し、このプロンプトを永続的に非表示\n• **キャンセル** — 現在の会話を保持\n\n_テキスト代替: `{prefix}approve`、`{prefix}always`、または `{prefix}cancel` と返信してください。_"
destructive_optout: "\n\nℹ️ 今後の /clear、/new、/reset、/undo は確認なしで実行されます。再度有効にするには config.yaml で `approvals.destructive_slash_confirm: true` を設定してください。"
destructive_optout_save_failed: "\n\n⚠️ この設定を保存できませんでした (config.yaml が書き込み不可) ため、/clear、/new、/reset、/undo は次回も再度確認します。永続的に非表示にするには config.yaml で `approvals.destructive_slash_confirm: false` を設定してください。"
cancelled: "🟡 /{command} をキャンセルしました。会話は変更されていません。"
detail_new: "新しいセッションを開始し、現在の会話履歴を破棄します。"
detail_undo_one: "履歴から最後のユーザー/アシスタントのやり取りを削除します。"
detail_undo_many: "履歴から最後の {count} 件のユーザーターンを削除します。"
hooks:
command_blocked: "コマンド `/{command}` はフックによってブロックされました。"
prompt_command:
start_failed: "/{command} を開始できませんでした — もう一度お試しください。"
learn:
ack_described: "説明された内容からスキルを学習しています…"
ack_conversation: "この会話からスキルを学習しています…"
plan:
ack_task: "計画中: {task}"
ack_conversation: "この会話のコンテキストから計画を作成しています…"
init:
start_failed: "/init を開始できませんでした — もう一度お試しください。"
ack_update: "プロジェクトスキャンから AGENTS.md を更新しています…"
ack_generate: "プロジェクトスキャンから AGENTS.md を生成しています…"
moa:
prepare_failed: "MoA ターンの準備に失敗しました。"
quick_command:
no_output: "コマンドは出力を返しませんでした。"
timed_out: "クイックコマンドがタイムアウトしました (30 秒)。"
error: "クイックコマンドのエラー: {error}"
no_command: "クイックコマンド '/{command}' にはコマンドが定義されていません。"
unsupported_type: "クイックコマンド '/{command}' のタイプはサポートされていません (サポート: 'exec'、'alias')。"
no_target: "クイックコマンド '/{command}' にはターゲットが定義されていません。"
unknown_command: "不明なコマンド `/{command}` です。/commands で利用可能なコマンドを確認するか、先頭のスラッシュを外して再送信すると通常のメッセージとして送信されます。"
session:
auto_reset_notice: "◐ 停止後にセッションをリセットしました。会話履歴はクリアされました。\n/resume で以前のセッションを閲覧・復元できます。\n"
auto_reset_context_exhausted: "\n\n🔄 セッションを自動リセットしました — 会話が最大コンテキストサイズを超え、これ以上圧縮できませんでした。次のメッセージから新しいセッションが始まります。"
info_model: "◆ モデル: `{model}`"
info_provider: "◆ プロバイダー: {provider}"
info_context: "◆ コンテキスト: {tokens} トークン ({source})"
info_acting_model: "◆ 実行モデル (この実行の請求対象): {provider}:{model}"
info_endpoint: "◆ エンドポイント: {url}"
proxy:
requires_aiohttp: "⚠️ プロキシモードには aiohttp が必要です。実行してください: {hint}"
url_missing: "⚠️ プロキシ URL が設定されていません (GATEWAY_PROXY_URL または gateway.proxy_url)"
http_error: "⚠️ プロキシエラー ({status}): {error}"
closed_early: "⚠️ 応答が完了する前にプロキシ接続が閉じられました"
connection_error: "⚠️ プロキシ接続エラー: {error}"
no_response: "(リモートエージェントからの応答がありません)"
progress:
status_fallback_long: "まだ作業中です"
status_fallback_short: "少しお待ちください"
stuck_warning: "⚠️ 処理が停止しているようです ({minutes} 分間アクティビティなし)。あと {remaining} 分以内に進展がなければ、このタスクを断念します。そのまま待つか、/stop でキャンセルするか、/new で新しい会話を始めてください。"
timeout_header: "⏱️ エージェントが {minutes} 分間非アクティブです — ツール呼び出しも API 応答もありません。"
timeout_stuck_tool: "エージェントはツール `{tool}` で停止しているようです (最後のアクティビティから {seconds} 秒、{progress})。"
timeout_last_activity: "最後のアクティビティ: {activity} ({seconds} 秒前、{progress})。エージェントは API 応答を待っていた可能性があります。"
timeout_hint: "上限を引き上げるには、config.yaml で agent.gateway_timeout を設定し (秒単位、0 = 無制限)、ゲートウェイを再起動してください。\nもう一度試すか、/reset で新しく始めてください。"
working_heartbeat: "⏳ 作業中 — {minutes} 分{detail}"
thinking_prefix: "💬 {text}"
tool_head: "{emoji} {tool}"
tool_verbose: "{emoji} {tool}({keys})\n{args}"
tool_preview: "{emoji} {tool}: \"{preview}\""
tool_pending: "{emoji} {tool}..."
task_status_running: "実行中"
task_status_complete: "完了"
task_status_error: "エラー"
task_line: "- {title} - {status}"
task_card_title: "Hermes が作業中です"
pairing:
validity_hour: "{hours} 時間"
validity_hours: "{hours} 時間"
code_reply: "こんにちは!まだあなたを認識できていないため、このボットの運用者が承認するまで返信できません。\n\nあなたのペアリングコード: `{code}` (有効期間 {validity})\n\nこのボットを運用している方は、ターミナルで次を実行してください: `{approve_cmd}`。そうでない場合は、このコマンドをボットの所有者に送ってください。承認後、メッセージをもう一度送信してください。"
rate_limited: "現在ペアリングリクエストが多すぎます。数分待ってから、メッセージをもう一度送信してください。"
shutdown:
action_shutting_down: "シャットダウン中"
action_restarting: "再起動中"
cron_interrupted: "⚠️ Hermes が{action}のため、スケジュールジョブ '{job}' は途中で打ち切られました。今回の実行結果はありません。次回のスケジュールで再実行されます。Hermes の復帰後に `hermes cron run {job}` で今すぐ実行することもできます。"
notice_shutdown: "⚠️ Hermes はシャットダウン中です — 現在のタスクは中断されます。オンラインに戻ったら何かメッセージを送ってください。中断したところから再開を試みます。"
notice_restart: "⚠️ Hermes は再起動中です — 現在のタスクは中断されます。再起動後に何かメッセージを送ってください。中断したところから再開を試みます。"
startup:
handoff_thread_title: "Hermes — {title}"
restarted: "♻ ゲートウェイの再起動に成功しました。セッションは継続します。"
online: "♻️ ゲートウェイがオンラインです — Hermes が復帰し、準備完了です。"
db_corrupt: "⚠️ セッションデータベースの破損を検出しました。メッセージが永続化されない可能性があります。復旧オプション:\n1. `hermes {profile_arg}doctor --fix` を実行\n2. ゲートウェイを停止し、次で復旧:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (復旧可能と報告された場合) hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — 復旧は先に破損ファイルのスナップショットを取ります。稼働中の state.db に対して `sqlite3 ... \".recover\"` を実行しないでください。脆弱な sqlite3 CLI はさらに破損させる可能性があります\n3. {backups_dir}/ のバックアップから復元\nサニタイズ済みの診断情報は `hermes {profile_arg}doctor` で確認できます。"
db_fts_corrupt: "⚠️ セッションデータベースが検索インデックス (FTS5) に限定された破損エラーを報告しました。メッセージテーブルは損傷していません。修復されるまでメッセージが永続化されない可能性があります: `hermes {profile_arg}doctor --fix` を実行し、ゲートウェイを再起動してください。`hermes {profile_arg}doctor` が損傷を確認しない限り、復旧ツールの実行やバックアップからの復元は行わないでください。"
db_then_restart: "{action} その後 `hermes {profile_arg}gateway restart` を実行してください。"
db_unavailable: "⚠️ セッションデータベースが利用できません — メッセージが保存されず、/resume が空になる可能性があります。原因: {cause}。{action}"
cron_store:
unwritable: "⚠️ cron ストア {store} は {since} から書き込みできません({error})。書き込みが可能になるまで、スケジュール済みジョブはスキップされます。対処: {fix}。"
recovered: "✅ cron ストア {store} は再び書き込み可能になりました。スキップされた実行 {skipped} 件、各ジョブは 1 回だけ追いつき実行されます。"
whoami:
scope_dm: "DM"
scope_group: "グループ/チャンネル"
header: "**あなた** — {platform} ({scope})\nユーザー ID: `{user_id}`\n"
tier_unrestricted: "ティア: 無制限 (このスコープに管理者リストが設定されていません)\nスラッシュコマンド: すべて利用可能"
tier_admin: "ティア: **管理者**\nスラッシュコマンド: すべて利用可能"
tier_user: "ティア: ユーザー\n実行できるスラッシュコマンド: {commands}"
platform:
usage: "使い方: /platform <list|pause|resume> [name]\n /platform list — プラットフォームの状態を表示\n /platform pause <name> — 失敗しているプラットフォームの再試行を停止\n /platform resume <name> — 一時停止中のプラットフォームを再キュー"
header: "**ゲートウェイのプラットフォーム**"
connected: "接続済み: {platforms}"
reason_default: "一時停止中"
reason_manual: "/platform pause で一時停止"
item_paused: " · {name} — 一時停止中 ({reason})。再開するには `/platform resume {name}` を使ってください。"
item_retrying: " · {name} — 再試行中 ({attempts} 回目)"
none_failed: "失敗/一時停止: (なし)"
usage_action: "使い方: /platform {action} <name>"
unknown: "不明なプラットフォーム: {name}"
not_queued_pause: "{name} は再試行キューにありません (接続済みか、有効化されていません)。"
already_paused: "{name} はすでに一時停止しています。"
paused: "✓ {name} を一時停止しました。再開するには `/platform resume {name}` を使うか、`hermes gateway restart` でリセットしてください。"
not_queued_resume: "{name} は再試行キューにありません — 再開するものはありません。"
already_retrying: "{name} はすでに再試行中です — 再開は不要です。"
resumed: "✓ {name} を再開しました — 次のウォッチャーティックで再試行します。"
bundles:
unavailable: "バンドルサブシステムが利用できません: {error}"
default_desc: "{count} 個のスキルを読み込む"
none_plain: "スキルバンドルはインストールされていません。\n作成するには: hermes bundles create <name> --skill <s1> --skill <s2>\nディレクトリ: {dir}"
header_plain: "スキルバンドル ({count} 個インストール済み):"
item_plain: "/{slug} — {desc} ({count} 個のスキル)"
invoke_hint_plain: "/<slug> でバンドルを呼び出すと、含まれるすべてのスキルを読み込みます。"
none: "スキルバンドルはインストールされていません。\nホスト上で次を実行して作成してください:\n `hermes bundles create <name> --skill <s1> --skill <s2>`\nディレクトリ: `{dir}`"
header: "**スキルバンドル** ({count} 個インストール済み):"
item: "• `/{slug}` — {desc} _({count} 個のスキル)_"
invoke_hint: "`/<slug>` でバンドルを呼び出すと、含まれるすべてのスキルを読み込みます。"
memory:
unknown_subcommand: "不明な /memory サブコマンドです。使用可能: pending、approve <id>、reject <id>、approval <on|off>。"
approvals:
admin_only: "永続的な承認モードを変更できるのはゲートウェイ管理者のみです。"
heartbeat:
unavailable: "ハートビートは利用できません (セッションなし)。"
paused: "⏸ ハートビートを一時停止しました: {prompt}"
none_set: "ハートビートは設定されていません。"
no_resume: "再開するハートビートがありません。"
resumed: "▶ ハートビートを再開しました ({interval} ごと): {prompt}"
cleared: "✓ ハートビートをクリアしました。"
usage: "使い方: /heartbeat every <間隔> <プロンプト> (例: /heartbeat every 10m CI を確認)\nその他: /heartbeat status | pause | resume | clear"
interval_too_small: "間隔が短すぎます — 最小は {min_seconds} 秒です。"
prompt_required: "使い方: /heartbeat every <間隔> <プロンプト> — プロンプトは必須です。"
invalid_prefix: "無効なハートビート"
set: "♥ ハートビートを設定しました ({interval} ごと): {prompt}\nこのセッションがアイドル状態で間隔が経過するたびに、通常のターンとして実行されます。ゲートウェイの稼働中のみ有効です — 永続的なスケジュールには `hermes cron` を使ってください。"
refine:
unavailable: "リファインは利用できません (セッションなし)。"
nothing_yet: "まだリファインするものがありません — 先にメッセージを送信してください。"
empty: "まだリファインするものがありません — 会話が空です。"
start_failed: "/refine の開始に失敗しました: {error}"
focus_suffix: " (フォーカス: {focus})"
started: "⚗ この会話をバックグラウンドでレビューしています{focus_suffix} — メモリ/スキルの更新があれば完了時に報告します。"
review:
unavailable: "レビューは利用できません (セッションなし)。"
nothing_yet: "まだレビューするものがありません — 先にメッセージを送信してください。"
start_failed: "/review の開始に失敗しました: {error}"
subgoal:
no_goal: "アクティブな目標がありません。/goal <テキスト> で設定してください。"
usage_remove: "使い方: /subgoal remove <n>"
remove_not_int: "/subgoal remove: <n> は整数 (1 から始まるインデックス) である必要があります。"
removed: "✓ サブ目標 {index} を削除しました: {text}"
cleared_one: "✓ {count} 件のサブ目標をクリアしました。"
cleared_other: "✓ {count} 件のサブ目標をクリアしました。"
none_to_clear: "クリアするサブ目標がありません。"
added: "✓ サブ目標 {index} を追加しました: {text}"
loop:
unavailable: "ループは利用できません。"
no_session: "ループは利用できません (アクティブなセッションなし)。"
goal_defers_note: "\n注: アクティブな /goal がこのセッションを駆動しています — ループの起動は目標が完了、一時停止、または待機状態になるまで延期されます。"
save:
no_messages: "このセッション ({session_id}) に保存されたメッセージが見つかりません。"
no_adapter: "ドキュメントを送信するためのプラットフォームアダプターが見つかりません。"
caption: "セッションのエクスポート: {filename}"
complete: "エクスポートが完了しました。"
failed: "セッションのエクスポート中にエラーが発生しました: {error}"
sessions:
usage_search: "使い方: `/sessions search <クエリ>`"
all_requires_admin: "_注: `all` (チャット横断の一覧) には管理者の設定が必要です。このチャットのセッションのみ表示しています。_"
title_matching: "「{query}」に一致するセッション"
title_all: "セッション"
title_named: "名前付きセッション"
codex_runtime:
config_load_failed: "❌ 設定を読み込めませんでした: {error}"
topup:
header: "💳 **Nous 残高**"
portal_link: "請求はポータルで管理してください: {url}"
hint: "チャージと請求の管理はブラウザで行ってください — 完了後、ここの残高が更新されます。"
login:
free_tier_remaining: "\n一部のチャットはまだ無料プランのままです。それらのチャットでは /model で切り替えてください。"
platform:
whatsapp:
clarify_other_title: "✏️ その他"
clarify_other_description: "自分で回答を入力"
clarify_list_button: "選択"
clarify_list_section: "選択肢"
approve_button: "✅ 承認"
deny_button: "❌ 拒否"
slash_confirm_once: "✅ 一度だけ承認"
slash_confirm_always: "🔒 常に承認"
slash_confirm_cancel: "❌ キャンセル"
clarify_type_answer: "✏️ 回答を入力してください:"
approved: "✅ 承認しました。"
denied: "❌ 拒否しました。"
approval_expired: "⌛ 承認の有効期限が切れました — コマンドは実行されませんでした(すでにタイムアウトしたか、別の場所で処理済みです)。"
yuanbao:
slow_response_notice: "このタスクは少し手間がかかります — 処理を続けていますので、しばらくお待ちください..."
owner_command_denied: "⚠️ {command} はプライベートチャットモードで作成者のみが使用できます"
shared:
truncated_suffix: "\n...(省略)"
unknown: "不明"
approval_expired: "⌛ 承認の有効期限が切れました — コマンドは実行されませんでした(すでにタイムアウトしたか、別の場所で処理済みです)。"
model_picker_expired: "⏳ このモデル選択の有効期限が切れました — もう一度 /model を実行してください。"
not_authorized: "⛔ 権限がありません。"
handoff:
default_name: "セッション"
media:
image_failed: "⚠️ 画像の添付ファイルを送信できませんでした。"
video_failed: "⚠️ 動画の添付ファイルを送信できませんでした。"
file_failed: "⚠️ 添付ファイル({name})を送信できませんでした。"
attachment_failed: "⚠️ 添付ファイルを送信できませんでした。"
weixin:
voice_as_attachment: "[音声メッセージを添付ファイルとして送信]"
signal:
batch_pacing_notice: "(まだ画像があります — Signal のレート制限のため約 {wait} 待機します。バッチ {batch}/{total})"
wait_seconds: "{count} 秒"
wait_minutes: "{count} 分"
api_server:
provider_auth_failed: "プロバイダーの認証に失敗しました"
provider_rate_limited: "プロバイダーのレート制限中"
provider_error_line: "⚠️ {label}: {error}"
transformed_notice: "\n\n[ストリーミング後に応答を変換しました]\n"
discord:
approval:
question: "Hermes にこのコマンドを実行させますか?"
requested_command_label: "要求されたコマンド:"
confirm_title: "確認"
already_resolved: "この承認はすでに処理済みです~"
expired: "⌛ 承認の有効期限が切れました — コマンドは実行されませんでした(タイムアウト済み、または別の場所で処理済み)"
no_longer_pending: "⌛ この承認はもう保留中ではありません(期限切れ、または別の場所で回答済み)"
click_failed: "⚠️ 選択を記録できませんでした。もう一度クリックするか、/approve または /deny で回答してください。"
by_user: "{user} が{label}"
resolved_once: "一度だけ承認"
resolved_session: "セッション中は承認"
resolved_always: "永続的に承認"
resolved_deny: "拒否"
slash_confirm:
already_resolved: "このプロンプトはすでに処理済みです~"
approve_once: "一度だけ承認"
always_approve: "常に承認"
cancel: "キャンセル"
resolved_once: "一度だけ承認しました"
resolved_always: "常に承認に設定しました"
resolved_cancel: "キャンセルしました"
prompt:
truncated_marker: "... [省略]"
clarify_title: "Hermes が入力を求めています"
clarify_hint_buttons: "下から選ぶか、✏️ その他 をクリックして自由に入力してください。"
clarify_hint_text: "このチャンネルで回答を返信してください。"
default_hint: " (デフォルト: {default})"
update_title: "アップデートに入力が必要です"
expired_footer: "⏱ プロンプトの有効期限が切れました — 操作は行われていません"
already_answered: "すでに回答済みです~"
affirm: "はい"
negate: "いいえ"
other: "✏️ その他 (自由入力)"
clarify_already_answered: "このプロンプトはすでに回答済みです~"
answered_by: "{user} の回答: {choice}"
awaiting_typed: "{user} の入力を待っています…"
picker:
title: "⚙ モデル設定"
select_provider: "現在のモデル: `{model}`\nプロバイダー: {provider}\n\nプロバイダーを選択してください:"
unknown_model: "不明"
choice_default_title: "オプションを選択"
provider_option: "{provider} ({count} モデル)"
current: "現在"
provider_placeholder: "プロバイダーを選択..."
cancel: "キャンセル"
model_placeholder: "{provider} のモデルを選択"
back: "◀ 戻る"
switch_anyway: "それでも切り替える"
more_available: "他に {count} 件あります — `/model <name>` を直接入力してください"
select_model: "プロバイダー: **{provider}**\nモデルを選択してください:{extra}"
already_resolved: "すでに処理済みです~"
switching: "`{model}` に切り替えています..."
switching_title: "⚙ モデルを切り替え中"
switch_error: "モデルの切り替えエラー: {error}"
switched_title: "⚙ モデルを切り替えました"
expired_toast: "モデル選択の有効期限が切れました。"
cancelled: "モデル選択をキャンセルしました。"
expired: "⏱ 選択の有効期限が切れました — モデルは変更されていません。"
choice_placeholder: "オプションを選択..."
choice_error: "選択の適用エラー: {error}"
choice_expired: "⏱ 選択の有効期限が切れました — 変更は行われていません。"
command:
new:
description: "新しい会話を開始します"
followup: "新しい会話を開始しました~"
reset:
description: "Hermes セッションをリセットします"
followup: "セッションをリセットしました~"
model:
description: "モデルを表示または変更します"
arg_name: "モデル名 (例: anthropic/claude-sonnet-4)。空欄で現在のモデルを表示します。"
reasoning:
description: "推論強度の表示・変更、または推論表示の切り替えを行います"
arg_effort: "レベルを選択、オーバーライドをリセット、または推論の表示/非表示を切り替えます。空欄で現在の設定を表示します。"
choice_none: "none — 推論を無効化"
choice_ultra: "ultra — 最大の推論"
choice_reset: "reset — このセッションのオーバーライドをクリア"
choice_show: "show — 返信に推論を表示"
choice_hide: "hide — 返信の推論を非表示"
personality:
description: "パーソナリティを設定します"
arg_name: "パーソナリティ名。空欄で利用可能な一覧を表示します。"
retry:
description: "最後のメッセージを再試行します"
followup: "再試行しています~"
undo:
description: "最後のやり取りを削除します"
status:
description: "Hermes セッションの状態を表示します"
followup: "状態を送信しました~"
stop:
description: "実行中の Hermes エージェントを停止します"
followup: "停止を要求しました~"
steer:
description: "次のツール呼び出しの後にメッセージを注入します (中断なし)"
arg_prompt: "エージェントの次のツール結果に注入するテキスト"
plan:
description: "Markdown 形式の実装計画を書きます (実行はしません)"
arg_task: "計画する内容。空欄で会話から推測します。"
compress:
description: "会話のコンテキストを圧縮します"
title:
description: "セッションのタイトルを設定または表示します"
arg_name: "セッションのタイトル。空欄で現在のタイトルを表示します。"
resume:
arg_name: "再開するセッション名。空欄でセッション一覧を表示します。"
usage:
description: "このセッションのトークン使用量を表示します"
help:
description: "利用可能なコマンドを表示します"
insights:
arg_days: "分析する日数 (デフォルト: 7)"
reload_skills:
description: "~/.hermes/skills/ を再スキャンしてスキルの追加・削除を反映します"
voice:
description: "音声返信モードを切り替えます"
arg_mode: "音声モード: join、channel、leave、on、tts、off、または status"
choice_join: "join — あなたのボイスチャンネルに参加"
choice_channel: "channel — あなたのボイスチャンネルに参加 (別名)"
choice_leave: "leave — ボイスチャンネルから退出"
choice_mode_on: "on — 音声メッセージに音声で返信"
choice_tts: "tts — すべてのメッセージに音声で返信"
choice_mode_off: "off — テキストのみ"
choice_status: "status — 現在のモードを表示"
update:
followup: "アップデートを開始しました~"
restart:
description: "Hermes ゲートウェイを安全に再起動します"
followup: "再起動を要求しました~"
approve:
arg_scope: "省略可: 'all'、'session'、'always'、'all session'、'all always'"
deny:
description: "承認待ちの危険なコマンドを拒否します"
arg_scope: "省略可: 'all' で承認待ちのコマンドをすべて拒否"
thread:
description: "新しいスレッドを作成し、その中で Hermes セッションを開始します"
arg_name: "スレッド名"
arg_message: "省略可: スレッド内で Hermes に送る最初のメッセージ"
arg_auto_archive: "自動アーカイブまでの分数 (60、1440、4320、10080)"
error_unknown: "不明なエラー"
failed: "スレッドの作成に失敗しました: {error}"
created: "スレッド {link} を作成しました"
error_name_required: "スレッド名は必須です。"
error_invalid_archive: "auto_archive_duration は次のいずれかである必要があります: {allowed}。"
error_no_channel: "現在の Discord チャンネルを特定できませんでした。"
error_dm_not_supported: "Discord のスレッドはサーバーのテキストチャンネル内でのみ作成でき、DM では作成できません。"
error_no_parent: "新しいスレッドの親テキストチャンネルを特定できませんでした。"
error_both_failed: "Discord がスレッドの直接作成を拒否し、フォールバックも失敗しました。直接作成のエラー: {direct_error}。フォールバックのエラー: {fallback_error}"
queue:
description: "次のターン用にプロンプトをキューに入れます (中断しません)"
arg_prompt: "キューに入れるプロンプト"
followup: "次のターン用にキューに入れました。"
bg:
arg_prompt: "バックグラウンドで実行するプロンプト"
followup: "バックグラウンドタスクを開始しました~"
btw:
description: "現在の会話についてちょっとした質問をします"
arg_question: "中断せずに答えてもらう質問"
followup: "質問を送信しました~"
skill:
description: "Hermes のスキルを実行します"
arg_name: "実行するスキル"
arg_args: "省略可: スキルに渡す引数"
unknown: "不明なスキル: `{name}`。入力を始めると自動補完の候補が表示されます。"
auto_args_description: "引数: {args_hint}"
auto_description_fallback: "/{name} を実行"
limits:
response_truncated: "⚠️ **応答を省略しました** — この返信は配信上限 ({max_messages} メッセージ) を超えました。{dropped_chars} 文字が配信されていません。完全な応答はセッションログにあります。"
forum:
default_title: "新しい投稿"
voice:
ack_1: "確認してみます。"
ack_2: "少々お待ちください。"
ack_3: "今確認しています。"
ack_4: "少しお待ちください。"
ack_5: "了解です。"
left_inactivity: "ボイスチャンネルから退出しました (無操作タイムアウト)。"
security:
unauthorized_slash_alert: "⚠️ 未承認の Discord スラッシュコマンド試行\nユーザー: {user_name} ({user_id})\nチャンネル: {chan_id} (ギルド {guild_id})\nコマンド: {command_text}\n理由: {reason}"
thread:
seed_message: "🧵 Hermes がスレッドを作成しました: **{name}**"
default_name: "Hermes"
handoff_seed: "🧵 Hermes のハンドオフ: **{name}**"
auto_create_failed: "⚠️ Hermes はこのメッセージ用の Discord スレッドを作成できなかったため、リクエストは処理されませんでした。もう一度お試しください。"
auto_create_failed_generic: "リクエストは処理されませんでした。もう一度お試しください。"
media:
upload_too_large: "⚠️ `{filename}` を添付できませんでした — {size_mb} MB はこのチャンネルの Discord アップロード上限 {limit_mb} MB を超えています。ファイルを圧縮するか、代わりにリンクを共有してください。"
image_skipped_too_large: "⚠️ `{filename}` をスキップしました — {size_mb} MB は Discord のアップロード上限 {limit_mb} MB を超えています。"
telegram:
approval:
action_once: "✅ 一度だけ許可"
action_session: "✅ セッション中"
action_always: "✅ 常に"
action_deny: "❌ 拒否"
toast_invalid_data: "承認データが無効です。"
toast_already_resolved: "この承認はすでに処理されています。"
resolved_once: "✅ 一度だけ承認"
resolved_session: "✅ セッション中は承認"
resolved_always: "✅ 永続的に承認"
resolved_deny: "❌ 拒否"
resolved_generic: "処理済み"
resolved_by_user: "{user} が{label}"
expired: "⌛ 承認の有効期限切れ"
expired_detail: "{label} — 待機中のコマンドはありませんでした。すでにタイムアウト(拒否扱い)したか、別の場所で処理済みです。"
slash_confirm:
approve_once: "✅ 一度だけ承認"
always_approve: "🔒 常に承認"
cancel: "❌ キャンセル"
already_resolved: "このプロンプトはすでに処理されています。"
resolved_once: "✅ 一度だけ承認"
resolved_always: "🔒 常に承認"
resolved_cancel: "❌ キャンセル済み"
picker:
expired_rerun: "選択の有効期限が切れました — コマンドをもう一度実行してください。"
invalid_selection: "選択が無効です。"
expired: "選択の有効期限が切れました。"
apply_error: "選択の適用エラー: {error}"
prev: "◀ 前へ"
next: "次へ ▶"
back: "◀ 戻る"
cancel: "✗ キャンセル"
more_available: "他に {count} 件あります — `/model <name>` を直接入力してください"
title: "モデル設定"
provider_label: "プロバイダー: {provider}"
select_model: "モデルを選択:"
current_model: "現在のモデル: {model}"
select_provider: "プロバイダーを選択:"
unknown_model: "不明"
provider_family: "プロバイダーファミリー: {family}"
invalid_model_index: "モデル番号が無効です。"
switch_error: "モデル切り替えエラー: {error}"
switch_failed: "切り替えに失敗しました。"
switched: "モデルを切り替えました!"
invalid_page: "ページが無効です。"
expired_model: "選択の有効期限が切れました — もう一度 /model を使用してください。"
provider_not_found: "プロバイダーが見つかりません。"
switch_anyway: "それでも切り替える"
confirm_selection: "モデル選択の確認"
group_not_found: "グループが見つかりません。"
cancelled: "モデルの選択をキャンセルしました。"
prompt:
default_hint: " (デフォルト: {default})"
update_header: "アップデートに入力が必要です:"
affirm: "✓ はい"
negate: "✗ いいえ"
other: "✏️ その他(回答を入力)"
expired_toast: "⚠️ このプロンプトの有効期限が切れました — /retry してください。"
expired_body: "⚠️ この質問は有効期限が切れたか、セッションがリセットされました — /retry してください。"
type_answer: "✏️ チャットに回答を入力してください。"
awaiting_typed: "{user} からの入力を待っています…"
invalid_choice: "選択が無効です。"
update_sent: "アップデートプロセスに '{answer}' を送信しました。"
update_answered: "アップデートプロンプトに回答しました: {answer}"
affirm_word: "はい"
negate_word: "いいえ"
media:
download_failed: "⚠️ {kind}{name} をダウンロードできませんでした({error})。もう一度送信してください。"
named_suffix: " ({name})"
kind_attachment: "添付ファイル"
kind_photo: "写真"
kind_voice: "音声メッセージ"
kind_audio: "音声ファイル"
kind_video: "動画ファイル"
gmail_triage:
done_send: "✓ 下書きを送信"
done_archive: "✓ アーカイブ済み"
done_draft: "✓ 返信を下書き"
done_spam: "✓ スパムに指定"
done_mute: "✓ ミュート済み"
done_mute_domain: "✓ ドメインをミュート"
done_trust: "✓ 信頼済み"
done_trust_domain: "✓ ドメインを信頼"
done_vip: "✓ VIP に指定"
done_vip_domain: "✓ VIP ドメインに指定"
invalid_data: "gmail-triage のデータが無効です。"
unknown_verb: "不明な操作: {verb}"
script_missing: "❌ {script} が見つかりません"
exit_code: "終了コード {code}"
failed: "❌ {verb} に失敗しました: {detail}"
timed_out: "❌ {verb} がタイムアウトしました"
error: "❌ {verb} エラー: {error}"
appended_by: "— {user} が{label}"
user_fallback: "ユーザー"
install_hint: "`hermes setup` を実行して Telegram サポートをインストールしてください。"
slack:
approval:
fallback_text: "⚠️ コマンドの承認が必要です: {command}"
resolved_once: "✅ {user} が一度だけ承認"
resolved_session: "✅ {user} がセッション中は承認"
resolved_always: "✅ {user} が永続的に承認"
resolved_deny: "❌ {user} が拒否"
confirm:
default_title: "確認"
approve_once: "一度だけ承認"
always_approve: "常に承認"
cancel: "キャンセル"
resolved_always: "🔒 {user} が常に承認"
resolved_cancel: "❌ {user} がキャンセル"
picker:
more_available: "\n*他に {count} 件あります — `/model <name>` を直接入力してください*"
provider_header: "*⚙ モデル設定*\n現在のモデル: `{model}`\nプロバイダー: {provider}\n\nプロバイダーを選択:{extra}"
model_header: "*⚙ モデル設定*\n\nプロバイダー: *{provider}*\nモデルを選択:{extra}"
choose_provider: "プロバイダーを選択…"
choose_model: "{provider} のモデルを選択…"
cancel: "キャンセル"
back: "◀ 戻る"
fallback_provider: "⚙ モデル設定 — プロバイダーを選択"
fallback_model: "⚙ モデル設定 — {provider}"
cancelled: "❌ モデルの選択をキャンセルしました。"
no_models_for_provider: "`{provider}` に利用可能なモデルはありません。"
switching: "⚙ `{model}` に切り替えています…"
switch_failed: "❌ モデルの切り替えに失敗しました: {error}"
switch_failed_header: "⚙ モデル切り替え失敗"
switched_header: "⚙ モデルを切り替えました"
clarify:
option_n: "選択肢 {n}"
choice_n: "選択肢 {n}"
other: "✏️ その他…"
expired: "⏳ このプロンプトの有効期限が切れました — 新しいリクエストを送信してください。({user} による)"
awaiting: "✏️ {user} からの入力を待っています…"
resolved: "✅ {user}: {choice}"
feedback:
good: "良い応答"
good_a11y: "この応答に肯定的なフィードバックを送信"
bad: "悪い応答"
bad_a11y: "この応答に否定的なフィードバックを送信"
status:
thinking: "が考えています..."
still_working: "処理中… ({elapsed})"
task_card:
title: "Hermes が作業中"
slash:
reply_truncated: "\n\n_[返信を省略: 残り {count} 件のパートが Slack のエフェメラル返信の上限を超えました。]_"
running: "`/{command}` を実行中…"
handoff:
seed: ":thread: Hermes ハンドオフ — *{name}*"
matrix:
handoff:
default_name: "Hermes セッション"
media:
image_download_failed: "画像をダウンロードして Matrix にアップロードできませんでした。ソース URL には非公開のトークンが含まれる可能性があるため表示していません。"
approval:
typed_hint_once: "`!approve` と返信すると一度だけ実行、`!deny` でキャンセルします。"
typed_hint_session: "`!approve session` と返信するとこのパターンをセッション中は承認、`!approve` で一度だけ実行、`!deny` でキャンセルします。"
typed_hint_always: "`!approve session` と返信するとこのパターンをセッション中は承認、`!approve always` で永続的に承認、`!approve` で一度だけ実行、`!deny` でキャンセルします。"
legend_intro: "リアクションをクリックして承認することもできます:"
legend_once: "✅ = 一度だけ承認"
legend_session: "🌀 = このセッション中は承認"
legend_always: "♾️ = 常に承認"
legend_deny: "❎ = 拒否"
invalid_reaction: "そのリアクションはこの承認プロンプトでは無効です。"
expired: "この承認プロンプトの有効期限が切れました。承認する場合は、コマンドをもう一度実行してください。"
picker:
no_models: "このセッションで利用できる認証済みモデルはありません。"
title: "⚙ **モデル設定**"
current_model: "現在のモデル: `{model}`"
provider: "プロバイダー: {provider}"
react_model: "リアクションでモデルを選択:"
react_choice: "リアクションで選択してください。"
current_suffix: "{label} ← 現在"
invalid_model_reaction: "そのリアクションは選択可能なモデルに対応していません。"
invalid_choice_reaction: "そのリアクションは選択可能な選択肢に対応していません。"
verb_switch_model: "モデルの切り替え"
verb_apply_selection: "選択の適用"
failed: "{action}に失敗しました: {error}"
reaction:
unauthorized: "これらの操作は、認可された Matrix ユーザーのみが使用できます。"
not_requester: "これらの操作は、このアクションをリクエストしたユーザーのみが使用できます。"
feishu:
clarify:
title: "Hermes が入力を求めています"
other: "✏️ その他(回答を入力)"
awaiting_typed: "{user} からの入力を待っています…"
picker:
apply_error: "選択の適用エラー: {error}"
approval:
action_session: "セッション中"
action_always: "常に"
resolved_once: "一度だけ承認"
resolved_session: "セッション中は承認"
resolved_always: "永続的に承認"
resolved_deny: "拒否"
resolved_fallback: "処理済み"
resolved_by_user: "{icon} {user} が **{label}**"
update_prompt:
title: "☤ アップデートに入力が必要です"
default_hint: "\n\nデフォルト: `{default}`"
answer_yes: "✓ はい"
answer_no: "✗ いいえ"
word_yes: "はい"
word_no: "いいえ"
answered_title: "{icon} アップデートプロンプトに回答しました: {answer}"
answered_by: "**{user}** が回答"
media:
gif_downgraded: "[GIF をファイルとして送信]"
gif_downgraded_caption: "[GIF をファイルとして送信]\n{caption}"
google_chat:
clarify:
other_button: "その他 / 回答を入力"
header: "質問"
question: "❓ {question}"
typing:
thinking: "Hermes が考えています…"
interrupted: "(中断されました)"
no_reply: "(返信なし)"
attachment_fallback:
header: "⚠️ **{filename}** を添付できませんでした。"
explain: "Google Chat では、ボットに明示的な許可(ユーザー OAuth)がある場合のみファイルを添付できます。このチャットから一度だけ同意すれば完了します。"
activate: "**有効にするには:** `/setup-files` を送信し、指示に従ってください。"
host_path: "それまでの間、ファイルはホスト上にあります: `{path}`"
setup_files:
not_configured: "🔧 ネイティブの添付ファイル配信は**未設定**です。\n**ステップ 1(初回のみ、ホスト上で):** https://console.cloud.google.com/apis/credentials で OAuth クライアント認証情報を作成します → *認証情報を作成* → *OAuth クライアント ID* → *デスクトップアプリ*。JSON をダウンロードし、ホスト上で次を実行します:\n```\npython -m plugins.platforms.google_chat.oauth --client-secret /path/to/client_secret.json\n```\n**ステップ 2:** ここに戻って `/setup-files start` を送信してください。"
start_instructions: "1. ブラウザでこの URL を開いて認可します:\n{auth_url}\n\n2. *許可* をクリックすると、ブラウザは `http://localhost:1/?...&code=...` の読み込みに失敗します。これは想定どおりの動作です。\n\n3. ブラウザの URL バーから失敗した URL 全体をコピーし、`/setup-files <PASTE_URL>`(または `code=...` の値のみ)としてここに貼り付けてください。\n\nヒント: この URL にはアクセス権限が含まれます — 他人に共有しないでください。"
start_failed: "❌ OAuth URL を生成できませんでした。ゲートウェイのログを確認し、client_secret.json が有効か確認してください。"
exchange_failed: "❌ トークンの交換に失敗しました。コードの有効期限が切れたか、URL の形式が正しくない可能性があります。`/setup-files start` を送信して新しい OAuth URL を取得してください。"
revoke_completed: "取り消しが完了しました(一部のステップはスキップされた可能性があります)。"
revoked: "取り消しました。"
helper_error: "❌ エラー: {error}"
revoke_error: "❌ 取り消しエラー: {error}"
who_shared: "共有(レガシー)"
active: "✅ ネイティブの添付ファイル配信は `{who}` に対して**有効**です。\nトークン: `{token_path}`\n無効にするには `/setup-files revoke` を送信してください。"
not_authorized_yet: "🔧 クライアント認証情報は保存されていますが、まだ認可されていません。`/setup-files start` を送信して開始してください。"
no_client_credentials: "⚠️ このプロファイルにはクライアント認証情報が保存されていません。`/setup-files`(引数なし)を送信するとセットアップ手順を表示します。"
done_output: "✅ 完了しました。\n```\n{output}\n```"
authorized: "✅ 認可されました!ネイティブの添付ファイル配信が有効になりました。PDF を送るよう試しに依頼してみてください。"
exchanged_not_loaded: "⚠️ トークンは交換されましたが、ゲートウェイが新しい認証情報をメモリに読み込めませんでした。ゲートウェイを再起動すると `{token_path}` のトークンが読み込まれます。\nヘルパーの出力:\n```\n{output}\n```"
teams:
approval:
resolved_once: "✅ 許可(一度だけ)"
resolved_session: "✅ 許可(セッション中)"
resolved_always: "✅ 常に許可"
resolved_deny: "❌ 拒否"
unknown_action: "不明なアクションです。"
requires_allowlist: "⛔ 承認ボタンを使用するには TEAMS_ALLOWED_USERS の設定が必要です。"
summary:
title: "会議 {meeting_id}"
title_fallback: "要約"
heading: "要約"
summary_line: "要約: {summary}"
empty: "要約はありません。"
none_item: "なし"
key_decisions: "主な決定事項"
action_items: "アクションアイテム"
risks: "リスク"
line:
pending:
still_thinking: "🤔 まだ考えています。準備ができたら、下をタップして回答を取得してください。"
button_label: "回答を取得"
delivered: "返信済み ✅"
interrupted: "実行は完了前に中断されました。"
expired: "そのリクエストは有効期限が切れました — メッセージをもう一度送信してください。"
standalone:
attachments_not_deliverable: "[{count} 件の添付ファイルを生成しました。cron からは配信できません]"
wecom:
media:
kind_image: "画像"
kind_video: "動画"
kind_voice: "音声メッセージ"
file_too_large: "ファイルサイズ {size_mb}MB が WeCom の上限 20MB を超えているため送信できません。ファイルを圧縮するか、サイズを小さくしてください。"
voice_format_downgraded: "音声形式 {content_type} はサポートされていません(WeCom は AMR のみ対応)。代わりにファイルとして送信しました。"
size_downgraded: "{label}のサイズ {size_mb}MB が上限 {cap} を超えています。代わりにファイルとして送信しました。"
email:
image_line: "画像: {url}"
standalone_subject: "Hermes Agent"
dingtalk:
emotion:
thinking: "🤔考え中"
done: "🥳完了"
irc:
quit_message: "Hermes Agent をシャットダウンしています"
standalone_quit: "配信済み"
relay:
confirm_approve_once: "一度だけ承認"
confirm_always_approve: "常に承認"
confirm_cancel: "キャンセル"
prompt_other: "✏️ その他(回答を入力)"
prompt_expired: ⌛ このプロンプトはもう回答を待っていません。通常のメッセージとして返信を送ってください。
slash:
rewind:
description: "以前のプロンプトまで巻き戻して編集・再送信、またはそこから分岐 (Esc Esc)"
approve:
description: "保留中の危険なコマンドを承認"
bg:
description: "プロンプトを別のバックグラウンドセッションで実行"
insights:
description: "使用状況のインサイトと分析を表示"
reload_mcp:
description: "設定から MCP サーバーを再読み込み"
resume:
description: "以前に名前を付けたセッションを再開"
sethome:
description: "このチャットをホームチャンネルに設定"
update:
description: "Hermes Agent を最新バージョンに更新"
category:
session: "セッション"
configuration: "設定"
info: "情報"
tools_skills: "ツールとスキル"
plugins: "プラグイン"
exit: "終了"
context: "コンテキスト"
background_automation: "バックグラウンドと自動化"
shared:
usage_suffix: "{description}(使い方: /{name} {args_hint})"
alias_for: "{description}(/{name} のエイリアス)"
alias_note: " (エイリアス: {aliases})"
slack_alias_for: "/{name} のエイリアス — {description}"
plugin_default_desc: "/{name} を実行"
plugin_command_desc: "プラグインコマンド"
hermes:
description: "Hermes と会話するか、サブコマンドを実行"
start:
description: "プラットフォームの start ping を返信なしで受け付ける"
new:
description: "新しいセッションを開始(新しいセッション ID と履歴)"
topic:
description: "Telegram DM の topic セッションを有効化または確認"
clear:
description: "画面をクリアして新しいセッションを開始"
redraw:
description: "UI 全体を強制的に再描画(ターミナル表示のずれから回復)"
history:
description: "会話履歴を表示"
save:
description: "現在の会話をエクスポート(引数なしの /save で使い方を表示)"
retry:
description: "最後のメッセージを再試行(エージェントに再送信)"
prompt:
description: "次のプロンプトを $EDITOR で作成(markdown)してから送信"
undo:
description: "ユーザーターンを N 個戻して再入力(デフォルト 1)"
title:
description: "現在のセッションにタイトルを設定"
handoff:
description: "このセッションをメッセージングプラットフォーム(Telegram、Discord など)に引き継ぐ"
branch:
description: "現在のセッションを分岐(Discord/Telegram/Slack/Matrix では新しいスレッド。--here でここに留まる)"
worktree:
description: "分離された git worktree の表示、一覧、作成、または削除"
compress:
description: "会話コンテキストを圧縮('here [N]' を付けると直近 N ターンを保持。--preview で結果を事前確認)"
rollback:
description: "ファイルシステムのチェックポイントを一覧または復元(復元時は手動編集を保持。--all で上書き)"
snapshot:
description: "Hermes の設定/状態のスナップショットを作成または復元"
export:
description: "プロファイル(設定、スキル、テーマ)を共有可能なアーカイブにエクスポート"
import:
description: "共有されたプロファイルアーカイブを新しいプロファイルとしてインポート"
stop:
description: "実行中のバックグラウンドプロセスをすべて終了"
discard:
description: "Hermes の再起動で失われたターンを破棄し、このチャットのキューを再開します"
pause:
description: "新しい作業を全体的に一時停止(緊急停止)。'/pause off' で再開"
deny:
description: "保留中の危険なコマンドを拒否(理由の指定も可)"
btw:
description: "現在の会話を中断せずにサイド質問をする"
agents:
description: "アクティブなエージェントと実行中のタスクを表示"
journey:
description: "学習ジャーニーのタイムラインを開く"
queue:
description: "次のターン用にプロンプトをキューに追加、またはキューの list/edit/rm/move/clear"
steer:
description: "中断せずに次のツール呼び出しの後にメッセージを挿入"
goal:
description: "達成までターンをまたいで Hermes が取り組む継続目標を設定"
heartbeat:
description: "アイドル時にこのセッションへ再投入される定期プロンプトを設定"
refine:
description: "この会話を今レビューし、学んだことをメモリ/スキルに保存"
review:
description: "直前に話題にした作業(PR、コード、ドキュメント)をレビューする独立したサブエージェントを起動"
loop:
description: "このセッションでプロンプトを一定間隔で繰り返し実行"
plan:
description: "何も実行せずに markdown の実装計画を .hermes/plans/ に書き出す"
moa:
description: "デフォルトの Mixture of Agents プリセットでプロンプトを 1 回実行し、元のモデルに戻す"
subgoal:
description: "アクティブな目標に追加の条件を追加または管理"
status:
description: "セッション、モデル、トークン、コンテキストの情報を表示"
egress:
description: "Docker egress プロキシの状態を表示"
context:
description: "使用量ゲージ、カテゴリ別内訳、圧縮統計、スループットを含むコンテキストウィンドウの詳細を表示"
whoami:
description: "自分のスラッシュコマンド権限(admin / user)を表示"
profile:
description: "アクティブなプロファイル名とホームディレクトリを表示"
sessions:
description: "以前のセッションを閲覧して再開"
config:
description: "現在の設定を表示"
model:
description: "モデルを切り替え(セッション限定。--global で永続化)"
codex-runtime:
description: "OpenAI/Codex モデル向けの codex app-server ランタイムを切り替え"
personality:
description: "定義済みのパーソナリティを設定"
statusbar:
description: "コンテキスト/モデルのステータスバーを切り替え"
battery:
description: "ステータスバーの色分けバッテリーインジケーターを切り替え"
timestamps:
description: "メッセージと /history の [HH:MM] タイムスタンプを切り替え"
diff:
description: "作業ディレクトリの git 変更を表示"
verbose:
description: "ツール進行表示を切り替え: off -> new -> all -> verbose"
focus:
description: "フォーカス表示を切り替え — 自分のプロンプトと最終応答のみを表示"
footer:
description: "最終返信に付くゲートウェイのランタイムメタデータフッターを切り替え"
yolo:
description: "YOLO モードを切り替え(危険なコマンドの承認をすべてスキップ)"
approvals:
description: "危険なコマンドの永続的な承認モードを表示または設定"
reasoning:
description: "推論の強度と表示を管理"
fast:
description: "高速モード — OpenAI Priority Processing / Anthropic Fast Mode(normal/fast/auto/cold)"
skin:
description: "表示スキン/テーマを表示または変更"
indicator:
description: "TUI のビジーインジケーターのスタイルを選択"
voice:
description: "音声モードを切り替え"
wake:
description: "'Hey Hermes' ウェイクワードのリスナーを切り替え"
busy:
description: "Hermes の作業中にメッセージをどう扱うかを制御"
tools:
description: "ツールを管理: /tools [list|disable|enable] [name...]"
toolsets:
description: "利用可能なツールセットを一覧表示"
skills:
description: "スキルの検索、インストール、確認、または管理"
memory:
description: "保留中のメモリ書き込みをレビュー / 承認ゲートを切り替え"
bundles:
description: "スキルバンドルを一覧表示(複数スキルのエイリアス /<name>)"
pet:
description: "petdex マスコットを切り替えまたは迎える(/pet、/pet list、/pet <slug>)"
hatch:
description: "説明文から新しい petdex ペットを生成"
learn:
description: "説明したもの(ディレクトリ、URL、このチャット、メモ)から再利用可能なスキルを学習"
init:
description: "リポジトリのスキャンから AGENTS.md のプロジェクト指示を生成または更新"
cron:
description: "スケジュールされたタスクを管理"
suggestions:
description: "提案された自動化をレビュー(accept/dismiss)"
blueprint:
description: "ブループリントのテンプレートから自動化をセットアップ"
curator:
description: "バックグラウンドのスキル保守(status、run、pin、archive、list-archived)"
kanban:
description: "マルチプロファイルの協業ボード(タスク、リンク、コメント)"
reload:
description: ".env の変数を実行中のセッションに再読み込み"
reload-mcp:
description: "設定から MCP サーバーを再読み込み"
reload-skills:
description: "~/.hermes/skills/ を再スキャンし、新規インストールまたは削除されたスキルを検出"
browser:
description: "ブラウザツールを CDP 経由で使用中の Chromium 系ブラウザに接続"
plugins:
description: "インストール済みプラグインとその状態を一覧表示"
commands:
description: "すべてのコマンドとスキルを閲覧(ページ送り)"
help:
description: "利用可能なコマンドを表示(/help skills でスキルコマンド一覧、/help <text> で絞り込み)"
palette:
description: "ファジー検索のコマンドパレットを開く(Ctrl+P でも可)"
restart:
description: "実行中の処理を完了させてからゲートウェイを安全に再起動"
usage:
description: "トークン使用量とレート制限を表示。`reset` で蓄えた Codex の制限リセットを適用"
subscription:
description: "Nous プランを確認し、ブラウザで変更"
login:
description: "Nous アカウントでサインイン(コネクターは維持)"
topup:
description: "Nous の残高を表示し、ポータルで請求を管理"
platforms:
description: "ゲートウェイ/メッセージングプラットフォームの状態を表示"
platform:
description: "障害中のゲートウェイプラットフォームを一時停止、再開、または一覧表示"
copy:
description: "最後のアシスタント応答をクリップボードにコピー"
paste:
description: "クリップボードの画像を添付"
image:
description: "次のプロンプト用にローカル画像ファイルを添付"
version:
description: "Hermes Agent のバージョンを表示"
debug:
description: "デバッグレポート(システム情報 + ログ)をアップロードして共有リンクを取得"
quit:
description: "CLI を終了(--delete でセッション履歴も削除)"
cli:
backtrack:
title: "↺ 巻き戻し — 以前のプロンプトを選択"
keys_hint: "↑/↓ 選択 · Enter 編集して再送信 · f ここから分岐 · Esc 閉じる"
preview_label: "プロンプト {number} / {total}:"
more_lines: "…(さらに {count} 行)"
editing_hint: "↺ プロンプト {number} を編集中 — Enter でここまで巻き戻して送信 · Esc Esc でキャンセル"
edit_cancelled: "↺ 巻き戻しをキャンセルしました。何も削除されていません。"
rewound: "↺ プロンプト {number} まで巻き戻しました({count} 件のメッセージをアーカイブ)。編集内容を送信します。"
forked: "⑂ プロンプト {number} の手前で分岐しました。元のセッション {parent} は変更されていません。下のプロンプトを編集し、Enter で送信してください。"
nothing: "(._.) 巻き戻せる以前のプロンプトがありません。"
target_changed: "(x_x) プロンプト {number} を選択した後にセッションが変更されました。何も削除されていません。編集内容は入力欄に戻されました。"
invalid: "(._.) プロンプト {value} はありません — 1 から {total} の間で選択してください。"
usage: "使い方: /rewind [N | fork N]"
rewind_failed: "(x_x) 巻き戻しに失敗しました。履歴は変更されていません: {error}"
modern:
thought_for: "{seconds}秒考えました"
thought: "考えました"
working: "作業中…"
preparing: "{what} を準備中…"
hint_steer: "誘導"
hint_queue: "キュー"
hint_interrupt: "中断"
hint_stop: "停止"
hint_commands: "コマンド"
hint_files: "ファイル"
hint_shell: "シェル"
placeholder_busy_steer: "入力してこのターンを誘導 · Tab で後にキュー"
placeholder_busy_interrupt: "入力してこのターンを切り替え · Tab で後にキュー"
placeholder_busy_queue: "入力してこのターンの後にメッセージをキュー"
billing:
load_failed: "{label}: {error}"
load_failed_label: "請求情報を読み込めませんでした"
not_logged_in: "Nous Portal にログインしていません。"
run_portal_then: "`hermes portal` を実行してログインし、その後 {cmd} を実行してください。"
org_line: "組織: {org}"
org_line_role: "組織: {org} · {role}"
bar_plan_label: "プラン"
bar_topup_label: "チャージ"
bar_pct_used: " · {pct}% 使用済み"
bar_plan: "{label}[{bar}] 残り ${remaining} / ${total}{pct}"
bar_topup: "{label}[{bar}] ${remaining} · 無期限"
total_spendable: "利用可能合計: ${amount}"
one_time_setup: "! 初回のみの設定"
allow_remote_spending_title: "リモート支出を許可"
allow_remote_spending_detail: "ブラウザを開いてこのターミナルを認可します。"
choice_allow_remote_spending: "リモート支出を許可"
desc_allow_remote_spending: "ブラウザを開いて認可する"
choice_not_now: "今はしない"
desc_not_now: "キャンセル"
opening_browser_remote_spending: "リモート支出を許可するためブラウザを開いています…"
couldnt_allow_remote_spending: "リモート支出を許可できませんでした: {error}"
remote_spending_allowed: "リモート支出を許可しました。"
portal_line: "ポータル: {url}"
open_this_url: "この URL を開いてください: {url}"
manage_on_portal_url: "ポータルで管理: {url}"
no_manage_url: "管理用 URL がありません — ポータルは設定されていますか?"
stepup_stale: "このターミナルではリモート支出がまだ有効になっていません — 認可が反映されませんでした。再試行するか、ポータルで変更してください。"
something_went_wrong: "問題が発生しました。"
under_five: "$5 未満"
plan_free: "無料"
renews_suffix: " · {date} に更新"
plan_line: "プラン: {plan}{renews}"
free_models_only_hint: "> Free · 無料モデルのみ。有料モデルを使うには /subscription を実行してください。"
low_balance_usage: "! 残高不足 · 残り {amount}。/topup または /subscription を実行してください。"
usage_cta: "/subscription でプラン変更 · /topup で残高をチャージ"
choice_cancel: "キャンセル"
choice_back: "戻る"
choice_go_back: "戻る"
choice_close: "閉じる"
desc_do_nothing: "何もしない"
desc_do_not_charge: "課金しない"
choice_manage_on_portal: "ポータルで管理"
desc_open_billing_page: "ブラウザで請求ページを開く"
topup_header: "チャージ · 残高 {balance}"
topup_title: "残高をチャージ"
auto_reload_on_line: "自動チャージ: オン — {threshold} 未満で {reload_to} までチャージ"
auto_reload_off_line: "自動チャージ: オフ"
card_line: "カード: {card}"
no_saved_card_add_funds_hint: "保存済みのカードがありません — 「資金を追加」から登録手順に進めます。"
actions_require_admin: "請求操作には組織の管理者/オーナー権限が必要です。"
remote_spending_off_for_org: "この組織ではリモート支出がオフになっています。"
killswitch_reason_overview: "請求管理者がポータルの Hermes Agent ページでオンにすると、ここから資金を追加できます。"
killswitch_reason_buy: "資金を追加する前に、請求管理者がポータルの Hermes Agent ページでオンにする必要があります。"
add_funds_now_hint: "今すぐ資金を追加 — 1 回限りの課金で、本日中に残高へ追加されます。"
refill_when_low_amounts: "残高が少なくなったら補充 — 残高が {threshold} を下回ると自動的に {reload_to} を課金します。"
refill_when_low_generic: "残高が少なくなったら補充 — 残高が設定した金額を下回ると、カードに自動的に課金します。"
choice_add_funds: "資金を追加"
desc_add_funds: "1 回限りの課金で、本日中に残高へ追加"
choice_auto_reload: "自動チャージ"
desc_auto_reload: "残高が少なくなったら自動的に補充"
choice_monthly_limit: "月間上限"
desc_monthly_limit: "月間支出上限を表示(読み取り専用)"
# Keep going on credits (window plans only; the portal sends the setting only there)
keep_going_choice: "クレジットで続行"
keep_going_desc: "含まれる利用量を使い切ったらクレジットを使う"
keep_going_on_line: "クレジットで続行: オン(含まれる利用量を使い切ったらクレジットを使う)"
keep_going_off_line: "クレジットで続行: オフ(Hermes はリセットを待ちます)"
keep_going_confirm_title: "クレジットで続行しますか?"
keep_going_confirm_body: "含まれる利用量を使い切ったらクレジットを使います。オフ: Hermes はリセットを待ちます。"
keep_going_turn_on: "オンにする"
keep_going_keep_off_desc: "オフのままにする: Hermes はリセットを待ちます"
keep_going_is_on_title: "クレジットで続行はオンです"
keep_going_turn_off: "オフにする"
keep_going_turn_off_desc: "Hermes はリセットを待ちます"
keep_going_leave_on: "オンのままにする"
keep_going_turned_on: "✅ クレジットで続行: オン。含まれる利用量を使い切ったらクレジットを使います。"
keep_going_turned_off: "✅ クレジットで続行: オフ。Hermes はリセットを待ちます。"
cancelled: "キャンセルしました。"
cancelled_yellow: "🟡 キャンセルしました。"
cancelled_no_funds: "キャンセルしました。資金は追加されていません。"
no_portal_url: "ポータルの URL がありません。"
complete_in_browser: "請求の変更はブラウザで完了してください。"
add_card_first: "まずカードを追加してください"
add_card_title: "カードを追加"
no_saved_card: "保存済みのカードがありません。"
no_saved_card_short: "保存済みのカードがありません"
no_saved_card_lower: "保存済みのカードなし"
add_card_once_hint: "ポータルの請求ページで一度カードを追加すれば、以降はターミナルから直接チャージできます。"
add_card_then_recheck: "請求ページでカードを追加してから、ここで「再確認」を選んでください。"
card_found_continuing: "カードが見つかりました: {card} — 続行します。"
still_no_card: "まだカードが登録されていません — ポータルで追加を完了してから、再確認してください。"
choice_add_card_on_portal: "ポータルでカードを追加"
desc_add_card_on_portal: "ブラウザで請求ページを開く"
choice_recheck_card: "追加しました — 再確認"
desc_recheck_card: "カードを再確認して続行"
add_funds: "資金を追加"
presets: "プリセット: {presets}"
run_interactive_to_purchase: "購入を完了するには対話型 CLI で実行してください。"
desc_one_time_purchase: "1 回限りのクレジット購入"
choice_custom_amount: "カスタム金額…"
desc_custom_amount: "金額を自分で入力"
payment_line: "支払い: {card}"
amount_prompt: "金額 (USD):"
invalid_selection: "🔴 無効な選択です。"
confirm_purchase: "購入の確認"
total_line: "合計: {amount}"
portal_card_will_be_charged: "ポータルに保存されたカードに課金されます。"
consent_charge: "確認すると、Nous Research によるカードへの課金を許可したことになります。"
choice_pay_now: "今すぐ {amount} を支払う"
desc_submit_charge: "課金を送信"
desc_manage_card_billing: "ブラウザでカード / 請求を管理"
run_interactive_to_confirm: "購入を確認するには対話型 CLI で実行してください。"
pay_question: "{amount} を支払いますか?"
no_charge_id: "課金 ID が返されませんでした。ポータルを確認してください。"
charge_submitted: "課金を送信しました — 決済を確認しています…"
could_not_check_charge: "🔴 課金を確認できませんでした: {error}"
added_to_balance: "✓ {amount} を残高に追加しました。"
still_processing: "🟡 5 分経過しても処理中です — これはタイムアウトであり、失敗ではありません。しばらくしてから /billing またはポータルで確認してください。"
charge_failed_authentication_required: "🔴 銀行による本人確認 (3DS) が必要です。ポータルで完了してこの購入を終えてください。"
charge_failed_payment_method_expired: "🔴 カードの有効期限が切れています。ポータルで更新してください。"
charge_failed_card_declined: "🔴 カードが拒否されました。ポータルで別のカードをお試しください。"
charge_failed_generic: "🔴 課金が完了しませんでした ({reason})。"
charge_error_no_payment_method: "💳 カードが登録されていません — チャージと請求の管理はポータルで行ってください。"
charge_error_remote_spending_disabled: "このアカウントではリモート支出がオフになっています — 請求管理者がポータルの Hermes Agent ページでオンにできます。"
charge_error_role_required: "資金の追加には組織の管理者/オーナー権限が必要です。管理者に依頼するか、ポータルで管理してください。"
charge_error_idempotency_conflict: "🔴 この課金キーは別の金額ですでに使用されています。新しいチャージを開始してください。"
revoked_by_admin: "管理者がこのターミナルの支出を停止しました。"
revoked_by_you: "あなたがこのターミナルの支出を停止しました。"
revoked_reconnect: "🔴 {who} 復元するには再接続してください — `hermes portal` を実行して再認可します。"
session_logged_out: "🔴 セッションがログアウトされました。`hermes portal` を実行して再度ログインしてください。"
monthly_cap_reached_headroom: "🔴 月間支出上限に達しました — 残り余裕は ${remaining} です。"
monthly_cap_reached: "🔴 月間支出上限に達しました。"
try_again_in_min: " (約 {minutes} 分後に再試行してください)"
too_many_charges: "🟡 現在、課金リクエストが多すぎます{mins}。これは支払いの失敗ではありません。"
remote_spending_needs_approval: "🔴 リモート支出の承認が必要です — /topup を実行して許可し、その後再試行してください。"
your_topup: "チャージ"
charge_stepup_explain: "このターミナルから課金するには、リモート支出を一度許可してください。ブラウザが開いて認可すると、{amount} の処理がここで再開されます。"
charge_stepup_noninteractive: "`hermes portal` を実行してリモート支出を許可し、その後再試行してください。"
charge_stepup_declined: "課金は行われていません。リモート支出を許可するときは /topup を実行してください。"
charge_stepup_not_granted: "リモート支出を許可できませんでした — 組織の管理者またはオーナーの承認が必要です。カードには課金されていません。"
allowed_but_org_off: "このターミナルではリモート支出が許可されていますが、この組織ではまだオフになっています。請求管理者がポータルの Hermes Agent ページでオンにしてから、再度 /topup を実行してください。"
allowed_no_card: "リモート支出を許可しました — ただし、カードがまだ登録されていません。"
topup_on_portal_to_continue: "続行するには、ポータルでチャージと請求の管理を行ってください。"
allowed_run_topup: "リモート支出を許可しました。続行するには /topup を実行してください。"
choice_resume_topup: "{amount} のチャージを再開"
desc_resume_topup: "保留中の購入を完了"
resume_topup_title: "チャージを再開"
resume_topup_detail: "{amount} の処理を完了できます — Enter を押して再開してください。"
resuming_topup: "チャージを再開しています — 決済を確認しています…"
auto_reload: "自動チャージ"
auto_reload_hint: "残高が少なくなったら自動的に資金を追加します。"
card_on_file: "登録済みカード: {card}"
no_saved_card_manage_portal: "保存済みのカードがありません — 請求はポータルで管理してください。"
auto_reload_rule: "{threshold} 未満で {reload_to} までチャージ"
auto_reload_rule_cap: "{threshold} 未満で {reload_to} までチャージ"
currently: "現在: {rule}"
auto_reload_on_detail: "オン — {rule}"
run_interactive_to_configure: "自動チャージを設定するには対話型 CLI で実行してください。"
choice_edit_thresholds: "しきい値を編集"
desc_edit_thresholds: "チャージのタイミング / 金額を変更"
choice_turn_off: "オフにする"
desc_turn_off: "自動チャージを無効化"
choice_agree_turn_on: "同意してオンにする"
desc_agree_turn_on: "自動チャージを有効化"
amount_prompt_labeled: "{label} (USD)"
threshold_label: "残高がこの金額を下回ったら"
reload_to_label: "この金額までチャージ"
reload_must_exceed_threshold: "🔴 チャージ後の金額はしきい値より大きくする必要があります。"
auto_reload_consent: "確認すると、残高が {threshold} に達するたびに Nous Research が {card} に課金することを許可したことになります。ここまたはポータルからいつでもオフにできます。"
turn_on_auto_reload_question: "自動チャージをオンにしますか?"
auto_reload_enabled: "✅ 自動チャージ オン: {threshold} 未満で {reload_to} までチャージ。"
auto_reload_disabled: "✅ 自動チャージをオフにしました。"
monthly_spend_limit: "月間支出上限"
no_monthly_cap: "月間上限は表示できません(ポータルで管理されています)。"
default_ceiling_suffix: " (デフォルト上限)"
used_this_month: "今月の使用量: {spent} / {limit}{ceiling}"
monthly_limit_read_only: "月間上限はポータルで設定されています — ターミナルでは読み取り専用で表示されます。"
subscription:
load_failed_label: "サブスクリプションを読み込めませんでした"
team_header: "チームサブスクリプション"
a_team_org: "チーム組織"
team_connected: "このターミナルは {org} に接続されています。チームは共有残高で動作します · 資金を追加するには /topup を使用してください。"
personal_note: "個人向けサブスクリプションは個人アカウントに紐づいています。"
your_plan: "現在のプラン"
cancels: "キャンセル"
end_of_billing_period: "請求期間の終了時"
end_of_cycle: "サイクルの終了時"
status_flip_cancels: " → キャンセル"
status_flip_to: " → {tier}"
status_left: " · 残り ${amount}"
status_view_only: " · 表示のみ"
status_renews: " · {date} に更新"
status_line: "プラン: {plan}{flip}{left}{tail}"
status_free: "プラン: Free · 無料モデルのみ"
scheduled_change: "予約済みの変更"
scheduled_change_line: "{from_plan} ──▶ {to_plan} {when}"
scheduled_when: "· {when}"
keep_until_then: "それまでは {plan}(およびそのクレジット)を引き続き利用できます。"
paid_models_need_subscription: "> 有料モデルにはサブスクリプションが必要です。開始すると利用できます。"
low_balance: "! 残高不足 · 残り {amount}。実行中に打ち切られる前にチャージまたはアップグレードしてください。"
plan_changes_need_admin: "プランの変更には組織の管理者/オーナー権限が必要です。"
manage_url_line: "サブスクリプションの管理: {url}"
open_then_rerun: "ブラウザで開いてから、/subscription を再度実行してください。"
start_subscription: "サブスクリプションを開始"
choose_plan: "プランを選択"
start_opens_portal: "サブスクリプションを開始すると、カード追加のためにポータルが開きます。"
desc_start_on_portal: "ポータルで {name} を開始"
pick_plan_detail: "プランを選ぶとポータルで開きます。"
cancelled_no_plan_started: "🟡 キャンセルしました。プランは開始されていません。"
opening_portal_to_start: "{plan} を開始するためポータルを開いています…"
open_url_to_start: "{plan} を開始するにはこの URL を開いてください: {url}"
finish_in_browser: "ブラウザで完了してから、/subscription を再度実行してください。"
manage_your_subscription: "サブスクリプションを管理"
desc_open_subscription_page: "ブラウザでサブスクリプションページを開く"
choice_copy_link: "リンクをコピー"
desc_copy_link: "サブスクリプション管理用 URL をクリップボードにコピー"
copied: "📋 コピーしました: {url}"
manage_url: "管理用 URL: {url}"
choice_keep_plan: "{plan} を維持(予約済みの変更を取り消す)"
desc_keep_plan: "保留中の変更をキャンセル"
choice_change_plan: "プランを変更"
desc_change_plan: "ターミナルでアップグレードまたはダウングレード"
choice_cancel_subscription: "サブスクリプションをキャンセル"
desc_cancel_subscription: "期間終了時のキャンセルを予約"
closed_no_change: "🟡 閉じました。プランは変更されていません。"
no_other_plans: "現在、切り替え可能な他のプランはありません。"
direction_upgrade: "アップグレード"
direction_downgrade: "ダウングレード"
tier_row: "{row} · {direction}"
desc_switch_to: "{name} に切り替え"
change_plan_title: "プランを変更"
current_pick_detail: "現在: {plan}。プランを選ぶと変更内容をプレビューできます。"
cancelled_no_plan_change: "🟡 キャンセルしました。プランは変更されていません。"
checking_change: "変更内容を確認しています…"
the_selected_plan: "選択したプラン"
already_on_nothing_to_change: "すでに {plan} をご利用中です — 変更はありません。"
cannot_confirm_here: "この変更はここでは確定できません — ポータルで管理してください。"
confirm_plan_change: "プラン変更の確認"
tag_charged_now: "· 今すぐ課金"
tag_scheduled_not_today: "· 予約済み · 本日ではありません"
charged_amount_now: "今すぐ {amount}(日割り)"
charged_prorated_now: "今すぐ日割り金額"
upgrade_will_be_charged: "{plan} にアップグレードします。{charged}が課金されます。"
card_on_subscription_charged: "サブスクリプションに登録されたカードに課金されます。"
named_card_on_subscription_charged: "サブスクリプションに登録されたカード {card} に課金されます。"
choice_pay_and_upgrade: "{amount} を支払って今すぐアップグレード"
choice_upgrade_now_prorated: "今すぐアップグレード(日割り課金)"
desc_charge_and_upgrade: "今すぐ課金してアップグレード"
change_takes_effect: "{plan} への変更 — {when}に適用されます。今は課金されず、それまでは現在のプランを引き続き利用できます。"
choice_schedule_change: "{plan} への変更を予約"
desc_apply_change: "この変更を適用"
desc_do_not_change: "変更しない"
monthly_credits_change: "月間クレジットの変化: {delta}。"
confirm_cancellation: "キャンセルの確認"
cancel_stays_active_until: "{plan} をキャンセルします — {end} まで有効で、その後は更新されません。"
keep_remaining_credits: "今期の残りのクレジットはそのまま利用できます。期間終了前であれば再開できます。"
cancel_subscription_question: "サブスクリプションをキャンセルしますか?"
desc_keep_your_plan: "現在のプランを維持"
cancelled_plan_unchanged: "🟡 キャンセルしました。プランは変更されていません。"
your_new_plan: "新しいプラン"
upgrade_already_on_tier: "すでに {name} をご利用中です。"
upgrade_upgraded: "{name} にアップグレードしました。新しい月間クレジットはまもなく反映されます。"
upgrade_requires_action: "🟡 このアップグレードには追加の本人確認 (3DS) が必要です。ポータルで完了してください。"
upgrade_payment_failed: "🔴 カードが拒否されました。ポータルで支払い方法を更新して、もう一度お試しください。"
pending_scheduled: "予約しました — 本日中にプランは変わりません。請求期間の終了までは現在のプランを維持し、その後切り替わります。"
pending_cancel_scheduled: "予約しました — 請求期間の終了までプランは有効で、その後キャンセルされます。本日中の変更はありません。"
pending_resumed: "取り消しました — 現在のプランを継続します。"
rerun_to_review: "内容の確認はいつでも /subscription を再度実行してください。"
stepup_explain: "ターミナルからプランを変更するには、リモート支出を一度許可してください。ブラウザが開いて認可すると、変更の処理がここで再開されます。"
stepup_noninteractive: "`hermes portal` を実行してリモート支出を許可し、その後 /subscription を再度実行してください。"
stepup_declined: "変更は行われていません。準備ができたらリモート支出を許可してください。"
stepup_not_granted: "リモート支出を許可できませんでした — この組織では組織の管理者またはオーナーの承認が必要です。"
remote_spending_not_allowed_yet: "🟡 リモート支出はまだ許可されていません。許可してから再試行してください。"
upgrade_ambiguous: "🟡 アップグレードを確認できませんでした — カードに課金された可能性があります。"
rerun_to_check_plan: "もう一度試す前に、/subscription を再度実行してプランを確認してください。"
model:
switched: "✓ モデルを切り替えました: {model}"
acting_model: "実行モデル(この実行の請求対象): {model}"
reasoning_effort: "推論の強度: {effort}"
reasoning_effort_saved: "推論の強度: {effort}(設定に保存済み)"
saved: "config.yaml に保存しました"
saved_global: "config.yaml に保存しました (--global)"
next_turn_only: "(次のターンのみ — 1 回応答した後に元に戻ります)"
session_only: "(このセッションのみ — 永続化するには --global を追加してください)"
effort_none: "なし(推論を無効化)"
effort_keep_current: "現在の強度を維持"
no_authenticated_providers: "認証済みのプロバイダーが見つかりません。"
usage_switch: "モデルを切り替え(このセッション)"
usage_switch_global: "モデルを切り替えてデフォルトとして保存"
usage_switch_once: "次のターンのみ切り替え"
usage_switch_session: "このセッションのみ切り替え"
usage_switch_provider_model: "プロバイダーとモデルを切り替え"
usage_switch_reasoning: "切り替えて推論の強度を設定"
usage_switch_provider: "プロバイダーを切り替え"
usage_refresh: "最新のモデル一覧を再取得"
reset_none: "すでに設定済みのデフォルト({model})を使用中です — リセットするものはありません。"
reset_no_default: "config.yaml に model.default がありません — 戻す先がありません。"
choice_switch_anyway: "それでも切り替える"
desc_switch_anyway: "現在の Hermes セッションでこのモデルを使用します。"
choice_cancel: "キャンセル"
desc_keep_current_model: "現在のモデルを維持します。"
confirm_choice_prompt: "選択 [1/2]: "
switch_cancelled: "モデルの切り替えをキャンセルしました。"
selection_failed: "✗ モデルの選択に失敗しました: {error}"
switch_failed: "⚠ {model} への切り替えに失敗しました({error})。{old_model} を引き続き使用します。"
cleared_picker_cache: "モデル選択のキャッシュをクリアしました。更新中..."
moa_one_shot_queued: "プリセット {preset} で MoA を 1 回だけ実行するようキューに入れました。このターンの後に元のモデルに戻ります。"
normalized_model: "{provider} 向けにモデル '{old}' を '{new}' に正規化しました。"
stripped_provider_prefix: "'{old}' からプロバイダーの接頭辞を取り除き、{provider} では '{new}' を使用します。"
restored_from_session: "セッションからモデルを復元しました: {model}"
could_not_load_config: "❌ 設定を読み込めませんでした: {error}"
tip_reset_new_session: "ヒント: `/reset` ですぐに新しいセッションを開始できます。"
single_query:
query_label: "クエリ:"
kanban_run_reclaimed: "kanban: このワーカーの実行は開始前に回収されました。終了します"
shared:
cancel: "キャンセル"
back: "← 戻る"
unknown: "不明"
unknown_error: "不明なエラー"
noun_model: "モデル"
label_enabled: "有効"
label_disabled: "無効"
label_yes: "はい"
label_no: "いいえ"
label_on: "オン"
label_off: "オフ"
label_on_upper: "オン"
label_off_upper: "オフ"
label_value: "{label}: {value}"
just_now: "たった今"
ago_seconds: "{seconds} 秒前"
ago_minutes: "{minutes} 分前"
ago_hours: "{hours} 時間前"
duration_s: "{seconds}秒"
duration_m: "{minutes}分"
duration_ms: "{minutes}分 {seconds}秒"
duration_ms_compact: "{minutes}分{seconds}秒"
duration_hm: "{hours}時間 {minutes}分"
duration_hms: "{hours}時間 {minutes}分 {seconds}秒"
duration_dhm: "{days}日 {hours}時間 {minutes}分"
duration_m_rest: "{minutes}分 {rest}"
duration_hm_rest: "{hours}時間 {minutes}分 {rest}"
no_active_agent: "(._.) アクティブなエージェントがありません -- まずメッセージを送信してください。"
n_more: "他 {count} 件"
more_not_shown: "件は非表示"
yes_no_default_yes: "Y/n"
yes_no_default_no: "y/N"
yes_initial: "y"
tui:
approval_once: "今回のみ許可"
approval_session: "このセッション中は許可"
approval_always: "永続的な許可リストに追加"
approval_deny: "拒否"
approval_view: "コマンド全文を表示"
approval_title: "⚠️ 危険なコマンド"
approval_choose_full: "… ({label} を選択)"
approval_command_truncated: "… (コマンドを切り詰めました — 全文は /logs または /debug で確認してください)"
approval_description_truncated: "… (説明を切り詰めました)"
confirm_title: "操作の確認"
confirm_footer: "1/2/3 を入力するか、↑/↓ で選んで Enter。ESC/Ctrl+C でキャンセルします。"
detail_truncated: "… (詳細を切り詰めました)"
clarify_title: "{agent_name} が入力を求めています"
clarify_question_count_one: "{count} 件の質問"
clarify_question_count_other: "{count} 件の質問"
clarify_other_answer: "その他: {text}"
clarify_other_type_below: "その他 (下に入力)"
clarify_other_type_answer: "その他 (回答を入力)"
clarify_guidance: "下のプロンプトに回答を入力し、Enter を押してください。"
picker_title_provider: "⚙ モデルピッカー — プロバイダーを選択"
picker_provider_row_one: "{name} ({count} モデル)"
picker_provider_row_other: "{name} ({count} モデル)"
picker_current_marker: " ← 現在"
picker_current_hint: "現在: {provider} の {model}"
picker_title_effort: "⚙ モデルピッカー — {model} の推論強度"
picker_current_labeled: "{label} ← 現在"
picker_effort_hint: "モデル切り替えと同時に適用されます (同じスコープ) — Enter で選択"
picker_title_models: "⚙ モデルピッカー — {provider}"
picker_provider_fallback: "プロバイダー"
picker_filter_hint: "フィルター: {query}▏ ({shown}/{total} 件一致 — 入力で絞り込み、Backspace でクリア)"
picker_select_hint: "モデルを選択 ({count} 件利用可能) — 入力でフィルター"
picker_empty: "このプロバイダーにはモデルが登録されていません。「戻る」または「キャンセル」を使用してください。"
palette_title: "⚙ コマンドパレット"
palette_filter_hint: "フィルター: {query}▏ ({shown}/{total} 件一致 — Enter で挿入、Esc でキャンセル)"
palette_hint: "入力して {total} 件のコマンドを絞り込み — ↑/↓ で選んで Enter で挿入、Esc でキャンセル"
palette_empty: "(一致するコマンドはありません)"
vault_code_title: "🔐 {site} の確認コード"
vault_code_body: "{site} がワンタイムコード (SMS、メール、または認証アプリ) を求めています。\nコードを入力して Enter を押すと、{agent_name} がページに入力します。\n空行で Enter を押すとスキップします。モデルにコードは一切見えません。"
vault_save_title: "🔐 {site} のログイン情報を保存"
vault_save_body: "エージェントがサインインページに到達しましたが、このサイトの保存済みログイン情報がありません。\nサインインに使うメールアドレス / ユーザー名を入力し (表示されます)、Enter を押してください。\n空行で Enter を押すとスキップします。ここの内容はモデルには一切表示されません。"
vault_save_pw_body: "次にパスワードを入力します (非表示)。このマシン上で暗号化され、\n{origin} に紐づけられ、モデルに見せることなくページに入力されます。\n空行で Enter を押すとスキップします。"
vault_unlock_title: "🔐 {backend} のロック解除"
vault_unlock_body: "エージェントが {backend} に保存されたログイン情報でサイトにサインインしようとしています。\nマスターパスワードを入力して (非表示)、このセッション中のロックを解除してください。\n空行で Enter を押すとロックされたままになります。モデルにパスワードは一切見えません。"
sudo_title: "🔐 sudo パスワードが必要です"
sudo_body: "下にパスワードを入力するか (非表示)、Enter を押してスキップしてください"
secret_title: "🔑 スキルのセットアップが必要です"
secret_prompt: "{var_name} の値を入力してください"
secret_fallback_name: "シークレット"
secret_body: "下にシークレットを入力してください (非表示)。ESC または Ctrl+C でスキップします"
connection_connect: "接続"
connection_continue: "続行"
hint_sudo: "パスワードは非表示 · Enter でスキップ"
hint_secret: "シークレットは非表示 · Enter でスキップ"
hint_approval: "↑/↓ で選択、Enter で確定"
hint_slash_confirm: "1/2/3 を入力、または ↑/↓ で選択、Enter で確定"
hint_connection_form: "値を入力、Enter で次の項目へ · ↑/↓ で移動 · ESC でキャンセル"
hint_connection_url: "Enter でブラウザーで開く · ESC でキャンセル"
hint_connection_authorized: "↑/↓ で選択、Enter で確定"
hint_connection_waiting: "バックエンドを待機中… · Ctrl+C で中断"
hint_connection_default: "接続のセットアップ"
hint_vault_username: "入力内容は表示されます · Enter で続行"
hint_clarify_freetext: "回答を入力して Enter を押してください"
hint_clarify_batch: "↑/↓ で選択、Enter で確定、Tab で次の質問"
hint_input_disabled: "入力は一時的に無効です"
hint_input_queues: "入力は引き続き有効です。Enter でキューに追加"
hint_command_running: "{frame} コマンド実行中 · {detail}"
placeholder_recording: "録音中... {shortcut} で停止、Ctrl+C でキャンセル"
placeholder_transcribing: "文字起こし中..."
placeholder_vault_username: "メールアドレス / ユーザー名を入力、Enter で続行 · ESC でスキップ"
placeholder_vault_code: "コードを入力、Enter で送信 · ESC でスキップ"
placeholder_password: "パスワードを入力 (非表示)、Enter で送信 · ESC でスキップ"
placeholder_secret: "シークレットを入力 (非表示)、Enter で送信 · ESC でスキップ"
placeholder_choice: "1/2/3 を入力、または ↑/↓ で選んで Enter"
placeholder_answer: "ここに回答を入力して Enter を押してください"
placeholder_processing_command: "コマンドを処理中..."
placeholder_busy: "メッセージ=中断 · /queue · /bg · /steer · Ctrl+C でキャンセル"
placeholder_voice_idle: "入力するか {shortcut} で録音"
voice_recording_failed: "音声の録音に失敗しました: {error}"
recording_cancelled: "録音をキャンセルしました。"
force_exiting: "⚡ 強制終了しています..."
interrupting_again_hint: "⚡ エージェントを中断しています... (もう一度 Ctrl+C を押すと強制終了)"
interrupting: "⚡ エージェントを中断しています..."
suspend_unsupported: "サスペンド (Ctrl+Z) は Windows ではサポートされていません。"
suspended: "{agent_name} をサスペンドしました。`fg` を実行すると {agent_name} が戻ります。"
steer_failed_queued: "ステアに失敗しました ({error}) — 次のターンのキューに追加しました。"
steered: "⏩ ステアしました: '{preview}'"
images_attached_preview_one: "[画像 {count} 件を添付]"
images_attached_preview_other: "[画像 {count} 件を添付]"
queued_next_turn: "次のターンのキューに追加しました: {preview}"
redirected_turn: "↪ 現在のターンをリダイレクトしました: '{preview}'"
model_selection_failed: "✗ モデルの選択に失敗しました: {error}"
auto_attached_image: "📎 画像を自動添付しました: {name}"
detected_file: "📄 ファイルを検出しました: {name}"
images_attached_one: "📎 画像 {count} 件を添付しました"
images_attached_other: "📎 画像 {count} 件を添付しました"
command_interrupted: "コマンドを中断しました。"
welcome: "Hermes Agent へようこそ!メッセージを入力するか、/help でコマンド一覧を表示します。"
vscode_images_hint: "VS Code ではここで画像をフル解像度で表示できます。設定で terminal.integrated.enableImages をオンにしてください。"
activated_skills_label: "有効化されたスキル:"
redaction_disabled_title: "⚠ シークレットの秘匿化が無効です"
redaction_disabled_body: "(HERMES_REDACT_SECRETS={value})。API キーやトークンがチャット出力、セッション JSON、ログにそのまま表示される可能性があります。再度有効にするには config.yaml で {setting} を設定してください。"
stdin_unavailable: "エラー: stdin (fd 0) が利用できません。\n特定の Python 環境 (例: macOS 上の uv 管理の cPython) で発生することがあります。\npyenv または Homebrew で Python を再インストールしてから、再度実行してください: hermes setup"
shutting_down: "シャットダウン中… (セッションを確定しています)"
session_deleted: "✓ セッション {session_id} を削除しました"
session_delete_missing: "✗ 削除対象のセッション {session_id} が見つかりません"
voice:
err_termux_app_missing: "Termux:API コマンドパッケージは検出されましたが、Android アプリがありません。\nTermux:API Android アプリをインストール/更新してから、/voice on を再試行してください。"
err_mic_access: "音声モードにはマイクへのアクセスが必要です。\npkg install termux-api を実行し、Termux:API Android アプリをインストールしてから、/voice on を再試行してください。"
err_audio_capture: "音声モードには音声キャプチャが必要です。"
err_stt_provider: "音声モードには文字起こし用の STT プロバイダーが必要です。\nhermes tools を実行して Speech-to-Text を設定し、Hermes を再起動してください。"
silence_autostop: "無音を検出しました。自動停止しています..."
hint_continuous: "無音で自動停止 | {shortcut} で停止して連続モードを終了"
hint_termux: "Termux:API キャプチャ | {shortcut} で停止"
hint_stop: "{shortcut} で停止"
recording: "● 録音中..."
autorestart_failed: "音声の自動再開に失敗しました: {error}"
no_speech: "音声が検出されませんでした。"
preparing_stt: "ローカル STT モデル '{model}' を準備しています (初回は Hugging Face からダウンロードされる場合があります)..."
transcribing: "文字起こし中..."
stop_phrase: "停止フレーズを検出しました — 音声チャットを終了します。"
transcription_failed: "文字起こしに失敗しました: {error}"
processing_error: "音声処理エラー: {error}"
recording_preserved: "録音を保存しました: {path}"
no_speech_stop: "音声が 3 回検出されなかったため、連続モードを停止しました。"
tts_failed: "TTS の再生に失敗しました: {error}"
interjection: "🎤 音声による割り込み — 中断しています…"
echo_ignored: "TTS のエコーと思われる音声を無視しました (キューに追加していません)。"
already_enabled: "音声モードはすでに有効です。"
unavailable_header: "この環境では音声モードを利用できません:"
requirements_header: "音声モードの要件が満たされていません:"
termux_install_cmd: "実行: pkg install termux-api"
termux_install_hint: "その後、マイクキャプチャ用に Termux:API Android アプリをインストール/更新してください"
tts_enabled_suffix: " (TTS 有効)"
enabled: "音声モードを有効にしました{tts_status}"
record_key_hint: "{shortcut} で録音の開始/停止"
tts_toggle_hint: "/voice tts で音声出力を切り替え"
disable_hint: "/voice off で音声モードを無効化"
stop_phrase_typed: "停止フレーズが入力されました — 音声チャットを終了します。"
disabled: "音声モードを無効にしました。"
wake_unavailable: "ウェイクワードを利用できません: {error}"
wake_already: "ウェイクワードはすでに待ち受け中です。"
wake_requirements_header: "ウェイクワードの要件が満たされていません:"
wake_installing: "ウェイクワードエンジンをインストールしています (初回のみ — 1 分ほどかかる場合があります)..."
wake_start_failed: "ウェイクワードの開始に失敗しました: {error}"
wake_listening: "ウェイクワードを待ち受け中"
wake_listening_hint: "(\"{phrase}\" と話してください — /wake off で停止)"
wake_stopped: "ウェイクワードを停止しました。"
wake_not_running: "ウェイクワードは実行されていません。"
wake_profile_hint: "プロファイル '{profile}' のウェイクフレーズ — 実行: hermes -p {profile}"
wake_detected: "✦ ウェイクワードを検出しました — 聞き取り中..."
wake_capture_failed: "ウェイクキャプチャに失敗しました: {error}"
state_listening: "待ち受け中"
state_paused: "一時停止"
state_off: "オフ"
state_on: "オン"
state_yes: "はい"
wake_status_title: "ウェイクワードの状態"
label_state: " 状態: {state}"
label_phrase: " フレーズ: \"{phrase}\""
label_provider: " プロバイダー: {provider}"
label_surface: " サーフェス: {surface}"
label_new_session: " 新規セッション: {value}"
mic_silent_warning: "⚠ マイクから無音しか届いていません — リスナーには何も聞こえていません。"
mic_silent_macos_hint: "macOS の場合: システム設定 > プライバシーとセキュリティ > マイク — ターミナル/Hermes を許可してから、/wake off と /wake on を実行してください。"
wake_enable_hint: "/wake on で有効化"
enable_first_hint: "まず音声モードを有効にしてください: /voice on"
tts_no_provider: "警告: 利用可能な TTS プロバイダーがありません。edge-tts をインストールするか、API キーを設定してください。"
tts_status: "音声 TTS は{status}です。"
status_title: "音声モードの状態"
label_mode: " モード: {value}"
label_tts: " TTS: {value}"
label_recording: " 録音: {value}"
label_record_key: " 録音キー: {shortcut}"
label_requirements: "要件:"
render:
response_transformed: "[ストリーミング後に応答が変換されました]"
banner_tagline: "{name} - AI エージェントフレームワーク"
banner_version: "Hermes Agent v{version} ({date})"
subagents:
cannot_steer_process: "バックグラウンドプロセスはステアできません。停止するか、ログを確認してください。"
count_live: "{count} 件稼働中"
count_done: "{count} 件完了"
count_running: "{count} 件実行中"
count_procs_one: "{count} プロセス"
count_procs_other: "{count} プロセス"
count_queued: "{count} 件キュー待ち"
goal_parked: "目標は保留中"
goal_paused: "目標は一時停止中"
goal_active: "目標は進行中"
title_live_work: "進行中の作業"
title_subagents: "サブエージェント"
title_processes: "プロセス"
last_tool: "直前: {tool}"
starting: "開始中"
next_queued: "次: {text}"
heading_full: "{title} · {count} · Ctrl+T 展開 · Ctrl+R 復元"
heading_medium: "{count} · Ctrl+T 展開 · Ctrl+R 復元"
heading_compact: "{count} · Ctrl+T · Ctrl+R"
heading_session_restore: "{count} · Ctrl+R 復元"
heading_session_compact: "{count} · Ctrl+R"
subagents_heading: "サブエージェント · {count} 件稼働中 · Ctrl+T 展開 · Ctrl+R 折りたたみ"
more_subagents: "+{count} 件 · Ctrl+T ですべてのサブエージェント"
controls_expand_collapse: " · Ctrl+T 展開 · Ctrl+R 折りたたみ"
processes_heading: "プロセス · {summary}{controls}"
more_processes: "+{count} 件 · Ctrl+T ですべてのプロセス"
controls_collapse: " · Ctrl+R 折りたたみ"
queue_heading: "キュー · {count} 件キュー待ち · /queue list{controls}"
more_queued: "+{count} 件"
transcript_unavailable: "ライブトランスクリプトはまだ利用できません。"
control_pending: "送信中…"
steer_prompt: "ステア: "
roster_empty: "稼働中のサブエージェントやバックグラウンドプロセスはありません。結果は会話内に届きます。"
entry_gone: "この項目はすでに終了しています。"
noun_process: "プロセス"
noun_subagent: "サブエージェント"
footer_confirm_stop: "選択した{noun}を停止しますか? y 確定 · Esc キャンセル"
footer_confirm_stop_compact: "停止しますか? y はい · Esc キャンセル"
footer_steering: "Enter で指示をキューに追加 · Esc でキャンセル(中断はしません)"
footer_steering_compact: "Enter 送信 · Esc キャンセル"
footer_steer_key: " s ステア"
footer_steer_key_long: " · s ステア"
footer_detail_compact: "PgUp/Dn ·{steer} x 停止 · Esc"
footer_roster_compact: "↑↓ · Enter 追跡 · Ctrl+T 閉じる"
footer_detail: "Esc 一覧 · PgUp/PgDn 追跡{steer} · x 停止"
footer_roster: "↑/↓ 選択 · Enter 追跡{steer} · x 停止 · q/Ctrl+T 閉じる"
dock:
process_goal_label: "バックグラウンドプロセス"
last_output: "直前: {detail}"
starting: "開始中"
exit_code: "終了コード {code}"
verdict_killed: "強制終了"
verdict_lost: "消失"
verdict_ago: "{verdict} · {seconds} 秒前"
process_gone: "このプロセスはもう追跡されていません。"
no_output: "まだ出力はありません。"
approval:
bell_context: "承認"
label: "承認"
timeout_denying: "⏱ タイムアウト — コマンドを拒否します"
timed_out_no_response: "タイムアウト(応答なし)"
outcome_once: "今回のみ許可"
outcome_session: "セッション中は許可"
outcome_always: "許可リストに追加"
outcome_deny: "拒否"
clarify:
bell_context: "確認"
label: "確認"
timed_out_locked_answers: "(確認は {timeout} 秒でタイムアウトしました — 確定済みの回答を返しました)"
connect:
bell_context: "接続のセットアップ"
cannot_restart: "この接続は再開できません。キャンセルして、エージェントにもう一度依頼してください。"
secret_set: "設定済み"
set_up: "{name} をセットアップ"
button_connect: "接続"
button_cancel: "キャンセル"
button_continue: "続行"
press_enter_open: "Enter を押してブラウザーで開く"
failed: "接続に失敗しました"
authorized_no_tools: "認可されました。ツールは利用できません。"
connected: "接続済み"
named_account: "Hermes はこの {name} アカウントを {alias} と名付けました。名前はいつでも変更できます。"
waiting: "待機中…"
editor:
only_interactive: "外部エディターは対話型 CLI 内でのみ利用できます。"
wait_for_command: "エディターを開く前に、現在のコマンドの完了を待ってください。"
finish_active_prompt: "エディターを開く前に、進行中のプロンプトを完了してください。"
no_input_buffer: "外部エディターで使えるアクティブな入力バッファーがありません。"
open_failed: "外部エディターを開けませんでした: {error}"
shell_command_failed: "シェルコマンドが失敗しました: {error}"
command_failed: "コマンドが失敗しました: {error}"
queued_next_turn: "次のターン用にキューに追加しました: {preview}"
modal:
cancelled_no_input: "🟡 /{command} をキャンセルしました(入力なし)。"
unrecognized_choice: "🟡 選択肢 '{raw}' を認識できません。/{command} をキャンセルしました。"
cancelled: "🟡 /{command} をキャンセルしました。{unchanged}"
re_enable_hint: " config.yaml の `approvals.{setting}: true` で再度有効化できます。"
persist_opt_out_failed: "⚠️ オプトアウトを保存できませんでした — 今回のみ{once_verb}。"
persist_failed_proceeding: "⚠️ オプトアウトを保存できませんでした — 今回のみ続行します。"
choice_prompt: "選択 [1/2/3]: "
destructive_title: "⚠️ /{command} — 会話の状態を破棄します"
approve_once: "今回のみ承認"
approve_once_detail: "今回だけ続行"
always_approve: "常に承認"
always_approve_detail: "続行し、この確認を今後表示しない"
cancel: "キャンセル"
cancel_detail: "現在の会話を維持"
conversation_unchanged: "会話は変更されていません。"
destructive_always_msg: "🔒 今後の /clear、/new、/reset、/undo は確認なしで実行されます。"
bell_input_needed: "入力が必要です"
bell_turn_complete: "ターン完了"
palette:
category_skill: "スキル"
secret:
bell_sudo: "sudo パスワード"
sudo_timeout: "⏱ タイムアウト — sudo なしで続行します"
sudo_received: "✓ パスワードを受け取りました(セッション中はキャッシュ)"
sudo_skipped: "⏭ スキップしました"
bell_unlock: "{name} のロック解除"
stays_locked: "⏭ {name} はロックされたままです"
unlocking_for_session: "✓ このセッション中 {name} のロックを解除します"
bell_save_login: "{site} のログイン情報を保存"
login_not_saved: "⏭ {site} のログイン情報は保存しません"
login_saved: "✓ {site} のログイン情報を保管庫に保存しました"
bell_verification_code: "{site} の確認コード"
code_not_entered: "⏭ {site} のコードは入力されませんでした"
code_entered: "✓ {site} にコードを入力しました"
display:
ui_redrawn: "✓ UI を再描画しました"
status_bar_visible: "ステータスバーを表示"
status_bar_hidden: "ステータスバーを非表示"
exit:
unknown_argument: "✗ 不明な引数: {argument}。セッション履歴も削除するには /exit --delete を使用してください。"
goal:
barrier_lifted: "▶ 目標の待機が解除されました — 再開します。"
paused_interrupted: "⏸ 目標を一時停止しました — ターンが中断されました。続けるには /goal resume、停止するには /goal clear を使用してください。"
loop:
wakeup_firing: "↻ /loop ウェイクアップ #{tick} を実行中…"
paused_interrupted: "⏸ ループを一時停止しました — ウェイクアップのターンが中断されました。続けるには /loop resume、終了するには /loop stop を使用してください。"
remaining: "↻ ループ: {label}。"
plugins:
none_installed: "ユーザープラグインはインストールされていません。"
install_hint: "インストール方法: hermes plugins install owner/repo"
drop_dir_hint: "または、プラグインのディレクトリを {path} に配置してください"
bundled_available: "(同梱プラグイン {count} 件が利用可能 — 参照: hermes plugins list)"
user_plugins_header: "ユーザープラグイン({count} 件):"
count_noun_tools: "ツール"
count_noun_hooks: "フック"
count_noun_commands: "コマンド"
bundled_more: "(他に同梱 {count} 件 — 参照: hermes plugins list)"
enable_disable_hint: "有効化/無効化: hermes plugins enable/disable <name>"
system_error: "プラグインシステムのエラー: {error}"
queue:
usage: "使い方: /queue <prompt> | /queue list | /queue edit N <prompt> | /queue rm N | /queue move FROM TO | /queue clear"
queued: "キューに追加しました: {preview}"
queued_next_turn: "次のターン用にキューに追加しました: {preview}"
empty: "キューは空です。"
pending_header: "キュー({count} 件待機中):"
cleared_one: "キュー内のプロンプト {count} 件をクリアしました。"
cleared_other: "キュー内のプロンプト {count} 件をクリアしました。"
removed: "キュー項目 {index} を削除しました: {preview}"
item_not_found: "キュー項目 {index} が見つかりません。現在のサイズ: {size}"
usage_edit: "使い方: /queue edit <number> <new prompt>"
usage_remove: "使い方: /queue rm <number>"
updated: "キュー項目 {index} を更新しました: {preview}"
usage_move: "使い方: /queue move <from> <to>"
move_out_of_range: "キューの移動先が範囲外です。現在のサイズ: {size}"
moved: "キュー項目 {source} を {destination} に移動しました。"
usage_add: "使い方: /queue add <prompt>"
gateway_refused: "ゲートウェイはキューに追加しませんでした: {error}。何も追加されていません。ターン終了後に再送してください。"
submit_unknown: "ゲートウェイが応答しませんでした ({error})。プロンプトはすでにキューにある可能性があります。再送する前に /queue list を確認してください。"
move_gateway_fifo: "ゲートウェイはキュー内のプロンプトを送信順に実行します。代わりに編集または削除してください。"
remove_refused: "キュー項目 {index} を削除できませんでした: {error}"
edit_refused: "キュー項目 {index} を編集できませんでした: {error}"
already_started: "キュー項目 {index} はすでに開始しています。送信したとおりに実行されます。"
started_stopped: "キュー項目 {index} はすでに開始していたため、ゲートウェイが停止しました。"
change_unknown: "ゲートウェイからキュー項目 {index} の応答がありません ({error})。再試行する前に /queue list を確認してください。"
reload:
env_reloaded: ".env を再読み込みしました({count} 件の変数を更新)"
steer:
usage: "使い方: /steer <prompt>"
failed: "ステアに失敗しました: {error}"
queued: "⏩ ステアをキューに追加しました — 次のツール呼び出しの後に届きます: {preview}"
rejected_empty: "ステアを拒否しました(内容が空です)。"
no_agent_queued: "実行中のエージェントがないため、次のターンとしてキューに追加しました: {preview}"
title:
session_id: "セッション ID: {session_id}"
current: "タイトル: {title}"
pending: "タイトル(保留中): {title}"
none_set_usage: "タイトルは設定されていません。使い方: /title <セッションのタイトル>"
usage: "使い方: /title <セッションのタイトル>"
empty_after_cleanup: "整形後のタイトルが空です。印字可能な文字を使用してください。"
set: "セッションのタイトルを設定しました: {title}"
already_in_use: "タイトル '{title}' はすでにセッション {session_id} で使用されています"
queued: "セッションのタイトルを予約しました: {title}(最初のメッセージ送信時に保存されます)"
undo:
invalid_count: "(._.) 無効な件数 {value} — /undo または /undo N を使用してください。"
removes_last_exchange: "履歴から直前のユーザー/アシスタントのやり取りを削除します。"
removes_last_turns: "履歴から直前の {count} ユーザーターンを削除します。"
resume:
tool_calls_one: "[ツール呼び出し {count} 件: {names}]"
tool_calls_other: "[ツール呼び出し {count} 件: {names}]"
event_model_changed: "モデルが変更されました"
event_delegation_completed: "バックグラウンド委任が完了しました"
event_process_finished: "バックグラウンドプロセスが終了しました"
event_resumed_interrupted: "中断されたターンを再開しました"
session_id_hint: "以前の CLI 実行のセッション ID を使用してください (hermes sessions list)。"
session_not_found: "セッションが見つかりません: {session_id}"
compressed_into: "セッション {session_id} は {descendant} に圧縮されました。トランスクリプトを引き継いで後続セッションを再開します。"
cannot_resume: "セッションを再開できません: {error}"
kanban_owned: "⛔ セッション {session_id} は Kanban ワーカーのトランスクリプトです。ここで再開すると、Kanban ボードが観察・監督できない書き込みプロセスが生じます。代わりにボード上でカードを再試行するかブロック解除し、次の実行はディスパッチャーに所有させてください。"
cannot_resume_prefix: "セッションを再開できません:"
resumed_session: "↻ セッションを再開しました"
counts_one: "(ユーザーメッセージ {count} 件、合計 {total} 件)"
counts_other: "(ユーザーメッセージ {count} 件、合計 {total} 件)"
session_no_messages: "セッション {session_id} は見つかりましたが、メッセージがありません。新規に開始します。"
title_applied: "セッションのタイトルを適用しました: {title}"
title_apply_failed: "保留中のタイトルを適用できませんでした: {error}"
label_you: "● あなた:"
label_assistant: "◆ {agent_name}:"
earlier_messages: "... それ以前のメッセージ {count} 件 ..."
panel_title: "前回の会話"
startup:
cooldown_cause_rate_limit: "レート制限またはクォータ応答の後"
cooldown_cause_token_refresh: "トークンの更新に失敗した後"
cooldown_cause_http: "HTTP {code} 応答の後"
cooldown_cause_failed_request: "リクエストに失敗した後"
credential_cooling_down: "{provider} の認証情報は{cause}、クールダウン中です。約 {minutes} 分後にローテーションに復帰します。"
sign_in_lost: "サインインが失われました"
sign_in_was_lost: "{provider} のサインインが失われました({reason})。`hermes auth add {provider}` を実行して再度サインインしてください。"
provider_resolution_failed: "プロバイダーの解決に失敗しました。"
no_api_key_for_provider: "⚠️ プロバイダー '{provider}' の API キーが見つかりません。"
no_provider_configured: "⚠️ 推論プロバイダーが設定されていません。"
run_model_or_setup: "'hermes model' でプロバイダーを選択するか、初回セットアップには 'hermes setup' を実行してください。"
empty_base_url: "⚠️ プロバイダーリゾルバーが空のベース URL を返しました。プロバイダー設定を確認するか、次を実行してください: hermes setup"
switching_to_fallback: "⚠️ {reason} — フォールバックに切り替えます: {provider} / {model}"
first_run_no_provider: "☤ 推論プロバイダーがまだ設定されていません — 今から設定しましょう。"
first_run_pick_provider: "プロバイダー(Nous Portal の OAuth が最速で、API キー不要です)とモデルを選択します。"
first_run_prompt: "今すぐプロバイダーを設定しますか? [Y/n]:"
first_run_skipped: "スキップしました。'hermes model' または 'hermes setup' はいつでも実行できます。"
first_run_cancelled: "セットアップをキャンセルしました。'hermes model' はいつでも実行できます。"
provider_setup_failed: "⚠️ プロバイダーのセットアップに失敗しました: {error}"
run_model_to_retry: "'hermes model' を実行して再試行してください。"
provider_configured: "✓ プロバイダーを設定しました — チャットを開始できます。"
provider_setup_incomplete: "プロバイダーのセットアップが完了しませんでした。'hermes model' を実行して再試行してください。"
unknown_toolsets: "警告: 不明なツールセット: {names}"
stdin_unusable: "\nエラー: stdin が使用できません({error})。\n特定の Python 環境(例: macOS 上の uv 管理の cPython)で、\nkqueue が fd 0 を登録できない場合に発生することがあります。\npyenv または Homebrew で Python を再インストールしてから、再度実行してください: hermes setup"
warning: "警告: {warning}"
chat:
initializing_agent: "エージェントを初期化しています..."
context_refs: "[@ コンテキスト: {count} 件の参照、{tokens} トークン]"
context_injection_refused: "コンテキストの注入が拒否されました。"
skipped_unreadable_images: "⚠ 読み取れない画像パス {count} 件をスキップしました"
attaching_images_natively: "📎 画像 {count} 件をネイティブに添付します(モデルはビジョン対応): {names}"
new_message_interrupting: "⚡ 新しいメッセージを検出しました。中断します..."
unknown_error: "不明なエラー"
continuous_voice_stopped: "エラーにより連続音声モードを停止しました。"
interrupted_marker: "── [中断 — 新しいメッセージを処理中] ──"
iteration_budget_reached: "⚠ 反復回数の上限に達しました({used}/{max})— 応答が不完全な可能性があります"
sending_after_interrupt_multi: "⚡ 中断後に {count} 件のメッセージを送信します: '{preview}'"
sending_after_interrupt: "⚡ 中断後に送信します: '{preview}'"
delivering_leftover_steer: "⏩ 残っている /steer を次のターンとして送ります: '{preview}'"
reasoning_label: "推論"
reasoning_more_lines: "... (他 {count} 行 — /reasoning full で全文表示)"
billing_cta_nous: "[bold]/topup[/] でクレジットを追加するか、[bold]/subscription[/] でプランを変更してください。"
billing_cta_provider: "{provider} でクレジットを追加してください"
your_provider: "ご利用のプロバイダー"
billing_cta_switch: "または [bold]/model <model> --provider <provider>[/] でプロバイダーを切り替えてください。"
out_of_credits_title: "⚡ クレジット残高がありません"
session:
fresh_start: "✨ (◕‿◕)✨ 新たなスタート!画面をクリアし、会話をリセットしました。"
model_reset_default: "(モデルを設定のデフォルトにリセットしました: {model})"
title_rejected: "タイトルが拒否されました: {error}"
title_empty_untitled: "整形後のタイトルが空です — セッションはタイトルなしで開始しました。"
title_error_untitled: "{error} — セッションはタイトルなしで開始しました。"
cwd_gone: "⚠ セッションの作業ディレクトリが存在しません: {recorded} — {current} のままにします"
cwd_restored: "↻ 作業ディレクトリ: {path}"
cwd_enter_failed: "⚠ セッションの作業ディレクトリ {path} に移動できませんでした: {error}"
yolo_restored: "⚡ セッションから YOLO モードを復元しました — すべてのコマンドが自動承認されます。/yolo でオフにできます。"
invalid_checkpoint: "無効なチェックポイント番号です。1-{count} を使用してください。"
status_tools_deferred: "ツールは遅延読み込み"
status_tools_count: "{count} ツール"
status_toolsets: "ツールセット: {toolsets}"
status_provider: "プロバイダー: {provider}"
status_auth: "認証: {source}"
reasoning_display_suffix: " (表示: {state})"
yolo_bypass_suffix: " (YOLO バイパス有効)"
ctx_left_prefix: "残り {percent}% · "
ctx_tokens_used: "{left}{used} / {max} トークン使用"
status_title: "Hermes CLI の状態"
label_reasoning: "推論"
label_approvals: "承認"
label_context: "コンテキスト"
recent_intro: "(._.) 現在のチャットにはまだメッセージがありません — 再開できる最近のセッションはこちらです:"
recent_header: "最近のセッション:"
column_title: "タイトル"
column_preview: "プレビュー"
column_last_active: "最終アクティブ"
column_id: "ID"
resume_usage: "続行するには /resume <number>、/resume <session id>、または /resume <session title> を使用してください。"
resume_example: "例: /resume 2"
history_empty: "(._.) まだ会話履歴がありません。"
history_tools_header: "[ツール]"
history_tools_hidden_one: "({count} 件のツールメッセージを非表示)"
history_tools_hidden_other: "({count} 件のツールメッセージを非表示)"
history_title: "(^_^) 会話履歴"
history_you_header: "[あなた #{index}]"
history_assistant_header: "[{agent_name} #{index}]"
history_no_text: "(テキスト応答なし)"
history_tool_calls_one: "({count} 件のツール呼び出しを要求)"
history_tool_calls_other: "({count} 件のツール呼び出しを要求)"
new_session_titled: "(^_^)v 新しいセッションを開始しました: {title}"
new_session: "(^_^)v 新しいセッションを開始しました!"
resume_index_out_of_range: "再開インデックス {index} は範囲外です。"
resume_no_args_hint: "引数なしで /resume を実行すると、利用可能なセッションが表示されます。"
save_nothing: "(;_;) 保存する会話がありません。"
save_dir_failed: "(x_x) 保存ディレクトリ {path} の作成に失敗しました: {error}"
format_markdown: "Markdown"
save_ok: "(^_^)v 会話を保存しました: {path} ({label})"
save_resume_hint: "ライブセッションを再開するには: hermes --resume {session_id}"
save_failed: "(x_x) 保存に失敗しました: {error}"
retry_no_messages: "(._.) 再試行するメッセージがありません。"
retry_no_user_message: "(._.) 再試行するユーザーメッセージが見つかりません。"
retry_unsafe: "(._.) そのメッセージを安全に再試行できません: {error}"
retry_rewind_failed: "(x_x) 再試行の巻き戻しに失敗しました。履歴は変更されていません: {error}"
retrying: "(^_^)b 再試行中: \"{preview}\""
undo_no_messages: "(._.) 取り消すメッセージがありません。"
undo_no_user_message: "(._.) 取り消すユーザーメッセージが見つかりません。"
undo_failed: "(x_x) 取り消しに失敗しました。履歴は変更されていません: {error}"
undo_ok_one: "(^_^)b {count} ターンを取り消しました ({messages} 件のメッセージ)。バックアップ先: \"{backup}\""
undo_ok_other: "(^_^)b {count} ターンを取り消しました ({messages} 件のメッセージ)。バックアップ先: \"{backup}\""
undo_remaining: "履歴に {count} 件のメッセージが残っています。"
yolo_state_locked_on: "オンに固定"
yolo_locked: "⚡ このプロセスでは YOLO は{state}です (--yolo / HERMES_YOLO_MODE で起動)。/yolo では無効化できません — 承認を再度有効にするには、フラグなしで再起動してください。"
yolo_off: "⚠ YOLO モードは{state}です — 危険なコマンドには承認が必要です。"
yolo_on: "⚡ YOLO モードは{state}です — すべてのコマンドが自動承認されます。注意して使用してください。"
compress_too_short: "(._.) 圧縮するには会話が足りません (最低 {min} 件のメッセージが必要です)。"
compress_no_agent: "(._.) アクティブなエージェントがありません -- まずメッセージを送信してください。"
compress_busy: "コンテキストを圧縮中..."
compress_summarizing: "🗜️ ここまでを要約しています: {count} 件のメッセージ、直近 {keep_last} 往復はそのまま保持..."
compress_focus: "🗜️ {count} 件のメッセージを圧縮しています、焦点: \"{focus}\"..."
compress_plain: "🗜️ {count} 件のメッセージを圧縮しています..."
compress_failed: "❌ 圧縮に失敗しました: {error}"
persist_prompt_summary: "{icon} {label}: {detail} → {outcome}"
goodbye: "さようなら! ☤"
exit_resume_hint: "このセッションを再開するには:"
exit_label_session: "セッション: {session_id}"
exit_label_title: "タイトル: {title}"
exit_label_duration: "所要時間: {duration}"
exit_label_messages: "メッセージ: {count} (ユーザー {user}、ツール呼び出し {tool_calls})"
status_bar:
vim_insert: "INSERT"
vim_replace: "REPLACE"
vim_normal: "NORMAL"
battery_none: "このマシンでバッテリーが検出されません"
battery_none_nothing_shown: "バッテリーが検出されないため、ここには何も表示されません"
battery_currently: " — 現在 {reading}"
battery_state: "バッテリー表示 {state}{detail}"
battery_usage: "使い方: /battery [on|off|status]"
battery_on: "バッテリー表示 オン{detail}"
battery_off: "バッテリー表示 オフ"
latency_label: "{value}s"
velocity_label: "{value} t/s"
voice_rec: "● REC"
voice_rec_stop_hint: "● REC {shortcut} で停止"
voice_stt: "◉ STT"
voice_transcribing: "◉ 文字起こし中..."
voice_tts_on: " | TTS オン"
voice_continuous: " | 連続"
voice_mode_hint: "🎤 音声モード{tts}{cont} — {shortcut} で録音"
goal_turns: "⊙ 目標 {used}/{max}"
goal: "⊙ 目標"
ctx_pinned: " 固定"
ctx_fallback: " 既定値"
ctx_unknown: "ctx --"
yolo_badge: "⚠ YOLO"
stash_header_one: "📌 スタッシュ({count} 件)"
stash_header_other: "📌 スタッシュ({count} 件)"
stash_footer: "↑↓ Enter=復元 D=削除 Esc"
stash_footer_compact: "↑↓ ⏎ D Esc"
stream:
busy_skills_search: "スキルを検索中..."
busy_skills_browse: "スキルを読み込み中..."
busy_skills_inspect: "スキルを確認中..."
busy_skills_install: "スキルをインストール中..."
busy_skills: "skills コマンドを処理中..."
busy_browser: "ブラウザを設定中..."
busy_reload_mcp: "MCP サーバーを再読み込み中..."
busy_reload_skills: "スキルを再読み込み中..."
processing_command: "コマンドを処理中..."
thinking_label: "[思考中]"
thinking_more_lines: "... (他 {count} 行)"
preview_more_lines_one: "... (+{count} 行)"
preview_more_lines_other: "... (+{count} 行)"
vision_analyzing: "👁️ {name}({size_kb}KB)を解析中..."
vision_analyzed: "✓ 画像を解析しました"
vision_failed: "⚠ 画像解析に失敗しました — 再試行用にパスを含めています"
vision_error: "⚠ 画像解析でエラーが発生しました — 再試行用にパスを含めています"
tool_preparing: "{emoji} {what} を準備中…"
reference_noun: "参照"
reference_header_indexed: "参照 {index}/{count} — {label}"
reference_header: "参照 — {label}"
aggregating_detail: "◆ 集約中({detail})"
aggregating: "◆ 集約中"
background_running_one: "↩ バックグラウンドタスクを実行中 — 完了したら再開します。そのまま会話を続けてください。"
background_running_other: "↩ バックグラウンドタスク {count} 件を実行中 — 完了したら再開します。そのまま会話を続けてください。"
terminal:
recovered_mouse_modes: "マウスレポートの漏れによりターミナルの入力モードを復旧しました。繰り返し発生する場合は /new を実行するか、このタブを再起動してください。"
recovered_cooked_mode: "cooked モードのずれからターミナルを復旧しました(入力は再び正常に応答するはずです)。"
image_badge_count: "[📎 画像 {count} 枚を添付]"
image_badge_numbered: "[📎 画像 #{index}]"
commands:
shared:
more_suffix: " (他 {count} 件)"
set_saved: "✓ {label} を '{value}' に設定しました(設定に保存済み)"
set_session_only: "✓ {label} を '{value}' に設定しました(このセッションのみ)"
scope_saved: "(設定に保存済み)"
scope_save_failed: "(このセッションのみ。設定の保存に失敗しました)"
scope_session: "(このセッションのみ — 永続化するには --global を使用してください)"
unknown_argument: "(._.) 不明な引数: {arg}"
usage: "使い方: {usage}"
needs_active_session: "{command} を実行するにはアクティブなチャットセッションが必要です。"
unavailable_no_session: "{label} は利用できません(アクティブなセッションがありません)。"
state_on: "オン"
state_off: "オフ"
error: "エラー: {error}"
agent_busy: "エージェントは処理中です。現在のターンが終わるのを待ってから、{command} を再試行してください。"
no_active_agent_session: "アクティブなエージェントセッションがありません。"
could_not_generate_diff: "diff を生成できませんでした"
busy:
short_queue: "次のターンにキューします"
short_steer: "現在の実行にステアします(次のツール呼び出しの後)"
short_interrupt: "現在の実行をすぐにリダイレクトします"
long_queue: "Hermes が処理中のとき、Enter で追加の入力をキューに入れます。"
long_steer: "Hermes が処理中のとき、Enter でメッセージを現在の実行にステアします(次のツール呼び出しの後)。"
long_interrupt: "Hermes が処理中のとき、Enter で現在の実行をリダイレクトします。/stop でのキャンセルは引き続き可能です。"
usage: "使い方: /busy [queue|steer|interrupt|status]"
status: "処理中の入力モード: {mode}"
enter_while_busy: "処理中の Enter: {behavior}"
label: "処理中の入力モード"
reasoning:
headline_on: "オン"
headline_off: "オフ"
headline_full: "全文"
headline_clamped: "10 行に制限"
note_show: "モデルの思考が各応答の途中と後に表示されます。"
note_full: "応答後の要約ボックスに完全な思考が出力されます。"
display_on: "オン ✓"
display_off: "オフ"
full_state_full: "全文"
full_state_clamped: "10 行に制限"
effort_line: "推論の労力: {level}"
display_line: "推論の表示: {display}({full})"
usage: "使い方: /reasoning <none|minimal|low|medium|high|xhigh|max|ultra|show|hide|full|clamp> [--global]"
display_saved: "✓ 推論の表示: {headline}(保存済み)"
display_off_note: "注意: 推論の表示はオフです — 表示するには /reasoning show を実行してください。"
valid_levels: "有効なレベル: none, minimal, low, medium, high, xhigh, max, ultra"
valid_display: "表示: show, hide"
valid_scope: "範囲: デフォルトはセッション単位、永続化するには --global"
effort_set: "✓ 推論の労力を '{effort}' に設定しました {scope}"
indicator:
usage: "使い方: /indicator [{styles}]"
status: "処理中インジケーターのスタイル: {style}"
unknown_style: "(._.) 不明なインジケータースタイル: {arg}"
label: "処理中インジケーターのスタイル"
note: "TUI は次の描画時に新しいスタイルを反映します。"
fast:
not_supported: "(._.) /fast は高速モードに対応したモデル(OpenAI Priority Processing または Anthropic Fast Mode)でのみ利用できます。"
feature_generic: "高速モード"
feature_anthropic: "Anthropic Fast Mode"
feature_openai: "Priority Processing"
feature_ultrafast: "OpenAI Ultrafast"
ultrafast_not_supported: "(._.) このアカウントまたはルートでは {model} の Ultrafast は利用できません。"
usage: "使い方: /fast [normal|fast|auto|cold|ultrafast|status] [--global]"
status: "{feature}: {status}"
set_to: "✓ {feature} を {value} に設定しました {scope}"
hatch:
progress_compose: "┊ スプライトシートを合成中…"
progress_save: "┊ 保存中…"
progress_drawing: "┊ {state} を描画中…"
describe_prompt: "(o_o) ペットの説明を入力してください: "
usage: "(o_o) 使い方: /hatch <説明> (例: /hatch a tiny cyber fox)"
default_name: "ペット"
designing: "(o_o) '{concept}' をデザイン中…(画像モデルの呼び出しに 1 分ほどかかります)"
base_failed: "(x_x) ベースの外見を生成できませんでした: {error}"
no_base_draft: "(x_x) ベースの下書きが返ってきませんでした — もう一度お試しください。"
failed: "(x_x) 孵化に失敗しました: {error}"
hatched: "(^_^)b {name} が孵化して仲間になりました — まもなく登場します!"
pet:
is_out: "(^_^)b {name} が出てきました — まもなく登場します。"
put_away_named: "(-_-)zzZ {name} をしまいました。"
put_away: "(-_-)zzZ ペットをしまいました。"
usage_scale: "(o_o) 使い方: /pet scale <倍率> (例: /pet scale 0.5)"
scale_set: "(^_^) ペットの倍率 → {scale}。"
fetching: "(o_o) petdex から '{name}' を取得中…"
adopt_failed: "(x_x) '{name}' を引き取れませんでした: {error}"
error: "(x_x) {error}"
diff:
label_working: "未ステージ"
label_staged: "ステージ済み"
label_all: "すべて(HEAD との比較)"
untracked: "未追跡:"
and_more: "... 他 {count} 件"
more_lines: "... (他 {count} 行 — {hint})"
stat_hint: "要約を見るには /diff --stat を実行してください"
stat_hint_session: "要約を見るには /diff session --stat を実行してください"
not_enabled: "チェックポイントが有効になっていないため、セッションのベースラインがありません。\n有効にするには: hermes --checkpoints\nまたは config.yaml で: checkpoints: { enabled: true }\n(通常の /diff は引き続き使えます — git を直接使用します。)"
no_session_changes: "変更なし — Hermes はまだここでファイルを編集していません。"
rollback:
not_enabled: "チェックポイントは有効になっていません。\n有効にするには: hermes --checkpoints\nまたは config.yaml で: checkpoints: { enabled: true }"
none_here_showing_all: "{cwd} のチェックポイントがありません — すべてのディレクトリを表示します。"
all_directories: "すべてのディレクトリ"
usage_diff: "使い方: /rollback diff <N>"
no_changes_since: "このチェックポイント以降の変更はありません。"
more_lines: "... (他 {count} 行、先頭 80 行を表示)"
restored_all: "✅ チェックポイント {hash} に復元しました: {reason}"
restored_file: "✅ チェックポイント {hash} から {file} を復元しました: {reason}"
snapshot_saved: "ロールバック前のスナップショットが自動的に保存されました。"
chat_turn_undone: "復元したファイルの状態に合わせてチャットのターンを取り消しました。"
snapshot:
unknown_subcommand: "不明なサブコマンド: {subcommand}"
usage: "使い方: /snapshot [list|create [label]|restore <id>|prune [N]]"
none_yet: "状態のスナップショットはまだありません。"
create_hint: "作成するには: /snapshot create [label]"
list_header: "状態のスナップショット({dir}/state-snapshots/):"
col_num: "#"
col_id: "ID"
col_files: "ファイル数"
col_size: "サイズ"
col_label: "ラベル"
created: "スナップショットを作成しました: {snapshot_id}"
nothing_to_snapshot: "スナップショットの対象となる状態ファイルが見つかりません。"
usage_restore: "使い方: /snapshot restore <snapshot-id>"
most_recent: "最新: {snapshot_id}"
invalid_number: "無効なスナップショット番号です。1-{max} を使用してください。"
restored: "状態を復元しました: {snapshot_id}"
restart_recommended: "state.db の変更を反映するため、ゲートウェイ/ダッシュボードのプロセスを再起動することをおすすめします。"
not_found: "スナップショットが見つかりません: {snapshot_id}"
restore_incomplete: "スナップショット {snapshot_id} は完全には復元されませんでした: 一部のファイルが拒否されました(ログを参照)"
usage_prune: "使い方: /snapshot prune [keep-count]"
pruned: "古いスナップショット {deleted} 件を削除しました({keep} 件を保持)。"
export:
usage: "使い方: /export [profile] [-o output.tar.gz]"
exported: "✓ '{name}' を {path} にエクスポートしました"
share_hint: "共有するには: 相手のユーザーが /import または `hermes profile import <archive>` を実行します。"
import:
usage: "使い方: /import <archive.tar.gz> [--name <name>]"
imported: "✓ プロファイル '{name}' を {path} にインポートしました"
wrapper_created: "ラッパーを作成しました: {path}"
use_it: "使うには: hermes -p {name}"
stop:
none_running: "実行中のバックグラウンドプロセスはありません。"
stopping: "バックグラウンドプロセス {count} 件を停止しています..."
stopped: "✅ プロセス {count} 件を停止しました。"
interrupted_delegations: "✅ バックグラウンドの委任 {count} 件を中断しました。"
agents:
running_processes: "実行中のプロセス: {count}"
recently_finished: "最近完了: {count}"
background_delegations: "バックグラウンドの委任: {count} 件実行中"
no_progress: " · {seconds} 秒間進捗なし — 中断します"
quiet: " · {seconds} 秒間応答なし"
in_tool: "{tool} を実行中"
between_turns: "ターン間"
child_line: "└ 子 {index}: API 呼び出し {api_calls} 回 · {doing}"
last_activity: " · 最終アクティビティ {seconds} 秒前"
agent_running: "エージェント: 実行中"
agent_idle: "エージェント: 待機中"
journey:
failed: "/journey に失敗しました: {error}"
paste:
no_image: "(._.) クリップボードに画像が見つかりません"
attached: "📎 クリップボードから画像 #{index} を添付しました"
extract_failed: "(>_<) クリップボードに画像はありますが、取り出しに失敗しました"
copy:
nothing_yet: "コピーするものがまだありません。"
usage: "使い方: /copy [number]"
invalid_number: "無効な応答番号です。1-{max} を使用してください。"
nothing_in_responses: "アシスタントの応答にコピーできるものがまだありません。"
nothing_in_response: "そのアシスタントの応答にコピーできるものがありません。"
copied_osc52: "アシスタントの応答 #{index} を OSC 52 でコピーしました(ターミナルの対応が必要です)"
copied: "アシスタントの応答 #{index} をクリップボードにコピーしました"
failed: "クリップボードへのコピーに失敗しました: {error}"
image:
usage: "使い方: /image <path> 例: /image {example}"
not_found: "(>_<) ファイルが見つかりません: {path}"
unsupported: "(._.) 対応していない画像ファイルです: {name}"
attached: "📎 画像を添付しました: {name}"
now_type_prompt: "続けてプロンプトを入力してください(単発クエリモードでは --image を使用): {text}"
tools:
usage: "(._.) 使い方: /tools {subcommand} <name> [name ...]"
example_toolset: "組み込みツールセット: /tools {subcommand} web"
example_mcp: "MCP ツール: /tools {subcommand} github:create_issue"
disabling: "{names} を無効化しています..."
enabling: "{names} を有効化しています..."
session_reset: "セッションをリセットしました。新しいツール設定が有効です。"
profile:
profile: "プロファイル: {profile}"
home: "ホーム: {home}"
handoff:
usage: "使い方: /handoff <platform>"
usage_detail_1: "現在のセッションをそのプラットフォームのホームチャンネルに引き継ぎます。"
usage_detail_2: "CLI セッションはここで終了します。後で /resume で再開できます。"
already_in_flight: "セッションはすでに引き継ぎ処理中です。落ち着くのを待ってから再試行してください。"
queued: "'{title}' の引き継ぎを {platform} にキューしました(ホーム: {home})。"
waiting: "ゲートウェイが受け取るのを待っています..."
config_load_failed: "ゲートウェイ設定を読み込めませんでした: {error}"
unknown_platform: "不明なプラットフォーム '{platform}' です。"
platform_not_enabled: "プラットフォーム '{platform}' はゲートウェイで設定/有効化されていません。"
no_home_channel: "{platform} のホームチャンネルが設定されていません。"
set_home_hint: "先に宛先のチャットで /sethome を実行して設定してください。"
session_row_failed: "state.db にセッション行を確保できませんでした: {error}"
picked_up: "ゲートウェイが受け取りました。転送中..."
complete: "↻ 引き継ぎが完了しました。セッションは現在 {platform} でアクティブです。"
resume_hint: "後でこの CLI で再開するには: /resume {title}"
unknown_error: "不明なエラー"
failed: "引き継ぎに失敗しました: {error}"
session_intact_retry: "CLI セッションはそのまま残っています。/handoff を再試行するか、プラットフォーム側で手動で /resume してください。"
still_transferring: "まだ転送中です(エージェントが宛先でセッションを再生しています)..."
taking_long: "ゲートウェイの転送完了に通常より時間がかかっています。"
check_platform: "{platform} を確認してください — セッションはまだ届く可能性があります。"
no_longer_waiting: "この CLI は待機を終了しました。ここでこのセッションを続けるのは避けてください。"
retry_when_settled: "何も届かない場合は、状態が落ち着いてから /handoff を再試行してください。"
timed_out: "ゲートウェイの待機がタイムアウトしました。`hermes gateway` は実行中ですか?"
session_intact: "CLI セッションはそのまま残っています。"
resume:
usage: "使い方: /resume <number|session_id_or_title>"
tip_find_sessions: "ヒント: セッションを探すには /history または `hermes sessions list` を使用してください。"
already_on: "すでにそのセッションにいます。"
resumed_one: "↻ セッション {session_id}{title} を再開しました(ユーザーメッセージ {count} 件、合計 {total} 件)"
resumed_other: "↻ セッション {session_id}{title} を再開しました(ユーザーメッセージ {count} 件、合計 {total} 件)"
resumed_empty: "↻ セッション {session_id}{title} を再開しました — メッセージがないため、新規に開始します。"
not_found: "セッションが見つかりません: {target}"
not_found_hint: "利用可能なセッションを見るには /sessions または `hermes sessions list` を使用してください。"
compressed_redirect: "セッション {session_id} は {resolved_id} に圧縮されています。トランスクリプトを引き継いで後続セッションを再開します。"
sessions:
none_yet: "(._.) 過去のセッションはまだありません。"
branch:
branched_one: "⑂ セッション \"{title}\" を分岐しました(ユーザーメッセージ {count} 件)"
branched_other: "⑂ セッション \"{title}\" を分岐しました(ユーザーメッセージ {count} 件)"
original_session: "元のセッション: {session_id}"
branch_session: "分岐セッション: {session_id}"
worktree:
active: "アクティブなワークツリー: {path}"
branch: "ブランチ: {branch}"
none_active: "このセッションにアクティブなワークツリーはありません。"
hint_new: "/worktree new [name] — 新規作成してこのセッションを移動します"
hint_prune: "/worktree prune — 古いツリーとマージ済みブランチを回収します"
not_in_repo_note: "(git リポジトリの外です)"
unknown_subcommand: "不明な /worktree サブコマンド: {subcommand}"
usage: "使い方: /worktree [new [name] | list]"
new_requires_repo: "❌ /worktree new は git リポジトリ内で実行する必要があります。"
not_in_repo: "git リポジトリの外です。"
actions_planned: "{count} 件のアクションを予定しています。"
actions_done: "{count} 件のアクションが完了しました。"
nothing_to_reclaim: "回収するものはありません — 残っているツリー/ブランチには実際の作業が含まれています。"
preserved: "実際の作業が含まれる {count} 件のワークツリーを保持しました:"
list_failed: "ワークツリーの一覧を取得できませんでした。"
enter_failed: "⚠ ワークツリーを作成しましたが、移動できませんでした: {error}"
ready: "✅ ワークツリーの準備ができました: {path}"
tools_in_worktree: "ターミナルとファイルのツールは、以降ワークツリー内で動作します。"
personality:
title: "(^o^)/ パーソナリティ"
none_option: "(パーソナリティのオーバーレイなし)"
usage: "使い方: /personality <name> (* = 有効)"
unknown: "(._.) 不明なパーソナリティ: {name}"
available: "利用可能: none, {available}"
scope_saved: "(設定に保存済み)"
scope_session: "(このセッションのみ)"
cleared: "{face} パーソナリティを解除しました {scope}"
cleared_note: "パーソナリティのオーバーレイなし — エージェントの基本動作を使用します。"
set_to: "{face} パーソナリティを '{name}' に設定しました {scope}"
cron:
repeat_must_be_integer: "(._.) --repeat には整数を指定してください"
unknown_command: "(._.) 不明な cron コマンド: {subcommand}"
available: "利用可能: list, add, edit, pause, resume, run, remove"
overview_title: "(^_^) スケジュール済みタスク"
overview_commands: "コマンド:"
overview_usage: "/cron list\n/cron add \"every 2h\" \"Check server status\" [--skill blogwatcher]\n/cron edit <job_id> --schedule \"every 4h\" --prompt \"New task\"\n/cron edit <job_id> --skill blogwatcher --skill maps\n/cron edit <job_id> --remove-skill blogwatcher\n/cron edit <job_id> --clear-skills\n/cron pause <job_id>\n/cron resume <job_id>\n/cron run <job_id>\n/cron remove <job_id>"
current_jobs: "現在のジョブ:"
skills: "スキル: {skills}"
skills_none: "スキル: なし"
next_short: "次回"
no_jobs_hint: "スケジュール済みのジョブはありません。'/cron add' で作成できます。"
no_jobs: "(._.) スケジュール済みのジョブはありません。"
list_header: "スケジュール済みジョブ:"
id: "ID: {job_id}"
name: "名前: {name}"
state: "状態: {state}"
schedule: "スケジュール: {schedule}"
schedule_repeat: "スケジュール: {schedule} ({repeat})"
next_run: "次回実行: {value}"
next_run_na: "次回実行: なし"
prompt: "プロンプト: {prompt}"
status_delivery_failed: "delivery_failed: {error}"
status_error: "error: {error}"
last_run: "前回実行: {when} ({status})"
usage_add: "(._.) 使い方: /cron add <schedule> <prompt>"
need_prompt_or_skill: "(._.) プロンプトか、少なくとも 1 つのスキルを指定してください"
create_failed: "(x_x) ジョブの作成に失敗しました: {error}"
created: "(^_^)b ジョブを作成しました: {job_id}"
usage_edit: "(._.) 使い方: /cron edit <job_id> [--schedule ...] [--prompt ...] [--skill ...]"
job_not_found: "(._.) ジョブが見つかりません: {job_id}"
update_failed: "(x_x) ジョブの更新に失敗しました: {error}"
updated: "(^_^)b ジョブを更新しました: {job_id}"
usage_action: "(._.) 使い方: /cron {subcommand} <job_id>"
pause_failed: "(x_x) ジョブの一時停止に失敗しました: {error}"
resume_failed: "(x_x) ジョブの再開に失敗しました: {error}"
run_failed: "(x_x) ジョブの実行に失敗しました: {error}"
remove_failed: "(x_x) ジョブの削除に失敗しました: {error}"
removed: "(^_^)b ジョブを削除しました: {name} ({job_id})"
did_not_run: "(x_x) ジョブを実行しませんでした: {name} ({job_id})\n {reason}"
paused: "(^_^)b ジョブを一時停止しました: {name} ({job_id})"
resumed: "(^_^)b ジョブを再開しました: {name} ({job_id})"
triggered: "(^_^)b ジョブを起動しました: {name} ({job_id})"
suggestions:
failed: "suggestions コマンドが失敗しました: {error}"
blueprint:
failed: "cron blueprint コマンドが失敗しました: {error}"
curator:
failed: "(._.) curator: {error}"
kanban:
failed: "(._.) kanban エラー: {error}"
memory:
unknown_subcommand: "不明な /memory サブコマンドです。次のいずれかを使ってください: pending, approve <id>, reject <id>, approval <on|off>。"
learn:
from_description: "⚡ 説明された内容からスキルを学習しています..."
from_conversation: "⚡ この会話からスキルを学習しています..."
plan:
planning: "📋 計画中: {task}"
from_conversation: "📋 この会話のコンテキストから計画を作成しています..."
init:
updating: "⚡ プロジェクトのスキャン結果から AGENTS.md を更新しています..."
generating: "⚡ プロジェクトのスキャン結果から AGENTS.md を生成しています..."
background:
usage: "使い方: /bg <prompt>\n例: /bg 今日の HN 上位記事を要約して\n(この会話についてのちょっとした質問には /btw <question> を使ってください。)\nタスクは別のセッションで実行され、完了したら結果がここに表示されます。"
no_credentials: "(>_<) バックグラウンドタスクを開始できません: 有効な認証情報がありません。"
started: "🔄 バックグラウンドタスク #{number} を開始しました: \"{preview}\""
task_id: "タスク ID: {task_id}"
keep_chatting: "チャットを続けられます — 完了したら結果が表示されます。"
label: "バックグラウンドタスク #{number}"
complete: "✅ バックグラウンドタスク #{number} が完了しました"
prompt: "プロンプト: \"{preview}\""
title_suffix: "(バックグラウンド #{number})"
no_response: "(応答は生成されませんでした)"
side_result:
complete: "{label} が完了しました"
failed: "❌ {label} が失敗しました: {error}"
login:
label: "サインイン"
title_suffix: "(サインイン)"
no_result: "(結果なし)"
btw:
usage: "使い方: /btw <question>\n例: /btw あのエラーはどのファイルにあった?\nこの会話を中断せずに、会話についてのちょっとした質問に答えます。\n(独立したバックグラウンドタスクには /bg <prompt> を使ってください。)"
no_credentials: "(>_<) サイド質問に回答できません: 有効な認証情報がありません。"
header: "💬 /btw: \"{preview}\""
title_suffix: "(btw)"
no_answer: "(回答は生成されませんでした)"
bundles:
unavailable: "バンドルサブシステムを利用できません: {error}"
none_installed: "スキルバンドルはインストールされていません。"
create_hint: "作成するには: hermes bundles create <name> --skill <s1> --skill <s2>"
directory: "ディレクトリ: {dir}"
title: "スキルバンドル"
installed_count: "({count} 件インストール済み):"
default_desc: "{count} 個のスキルを読み込みます"
skills_count: "(スキル {count} 個)"
invoke_hint: "バンドルは /<slug> で呼び出せます。管理には `hermes bundles` を使ってください。"
browser:
engine_not_in_use: "⚠ browser.engine は 'lightpanda' ですが、使用されていません: {reason}"
engine_lightpanda: "エンジン: Lightpanda — {reason} (スクリーンショットなし)"
binary: "バイナリ: {path}"
binary_not_found: "⚠ lightpanda のバイナリが見つかりません — {hint}"
scheme_missing: "(なし)"
unsupported_scheme: "⚠ サポートされていないブラウザ URL スキームです: {scheme} (http, https, ws, wss のいずれかを指定してください)"
invalid_port: "⚠ ブラウザ URL のポートが無効です: {url}"
missing_host: "⚠ ブラウザ URL にホストがありません: {url}"
port_occupied: "⚠ ポート {port} は CDP ブラウザではない別のアプリケーションが使用中です"
port_occupied_detail: "(IDE のデバッガーや開発サーバーが使用している可能性があります) — 代わりにポート {launch_port} で起動します..."
launching: "Chromium 系ブラウザがリモートデバッグ付きで起動していません — 起動を試みます..."
launch_failed: "⚠ Chromium 系ブラウザを自動起動できませんでした"
launch_manually: "Chromium 系ブラウザを手動で起動してください:"
no_executable: "この環境ではサポート対象の Chromium 系ブラウザの実行ファイルが見つかりません"
launched: "✓ Chromium 系ブラウザを起動し、ポート {port} で待ち受けています"
not_responding: "⚠ ブラウザは起動しましたが、ポート {port} がまだ応答していません"
try_again: "数秒後にもう一度お試しください — デバッグインスタンスがまだ起動中の可能性があります"
already_listening: "✓ Chromium 系ブラウザはすでに {url} で待ち受けています"
port_unreachable: "⚠ ポート {port} に {url} で到達できません"
not_connected: "ブラウザが接続されていません — Chromium 系ブラウザをリモートデバッグ付きで起動し、/browser connect を再試行してください"
connected: "🌐 CDP 経由で稼働中の Chromium 系ブラウザに接続しました"
endpoint: "エンドポイント: {url}"
already_default: "ブラウザは稼働中の Chromium 系ブラウザに接続されていません (すでにデフォルトモードです)"
disconnected: "🌐 稼働中の Chromium 系ブラウザから切断しました"
reverted: "ブラウザツールをデフォルトモード (ローカルのヘッドレスまたはクラウドプロバイダー) に戻しました"
status_lightpanda: "🌐 ブラウザ: ローカル Lightpanda (lightpanda serve)"
status_lightpanda_note: "⚡ Lightpanda: 高速なナビゲーション、スクリーンショット非対応"
status_auto: "🌐 ブラウザ: ローカルのヘッドレス Chromium"
status_connected: "🌐 ブラウザ: CDP 経由で稼働中の Chromium 系ブラウザに接続中"
status_reachable: "状態: ✓ 到達可能"
status_unreachable: "状態: ⚠ 到達不可 (ブラウザが起動していない可能性があります)"
status_cloud: "🌐 ブラウザ: {provider} (クラウド)"
status_connect_hint: "/browser connect — 稼働中の Chromium 系ブラウザに接続"
status_disconnect_hint: "/browser disconnect — デフォルトに戻す"
usage: "使い方: /browser connect|disconnect|status"
usage_connect: "connect ブラウザツールを稼働中の Chromium 系ブラウザのセッションに接続します"
usage_disconnect: "disconnect デフォルトのブラウザバックエンドに戻します"
usage_status: "status 現在のブラウザモードを表示します"
remote_gateway: "/browser connect と /browser disconnect はゲートウェイホスト上の Chromium 系ブラウザーを管理します — ローカルゲートウェイ接続時のみ利用できます。"
checking: "{url} で Chromium 系ブラウザーのリモートデバッグを確認しています..."
status_gateway_default: "🌐 ブラウザー: ゲートウェイの既定ブラウザーバックエンド(ライブ CDP 接続なし)"
heartbeat:
label: "ハートビート"
paused: "⏸ ハートビートを一時停止しました: {prompt}"
none_set: "ハートビートは設定されていません。"
none_to_resume: "再開するハートビートがありません。"
resumed: "▶ ハートビートを再開しました ({interval} ごと): {prompt}"
cleared: "✓ ハートビートを解除しました。"
usage: "使い方: /heartbeat every <interval> <prompt> (例: /heartbeat every 10m Check CI)"
usage_also: "その他: /heartbeat status | pause | resume | clear"
interval_too_small: "間隔が短すぎます — 最小は {min_seconds} 秒です。"
prompt_required: "使い方: /heartbeat every <interval> <prompt> — プロンプトは必須です。"
invalid_label: "無効なハートビート"
set: "♥ ハートビートを設定しました ({interval} ごと): {prompt}"
set_note: "セッションがアイドル状態で、かつ間隔が経過するたびに通常のターンとして実行されます。管理は /heartbeat pause | resume | clear で行えます。この Hermes プロセスが動作している間だけ有効です — 永続的なスケジュールには `hermes cron` を使ってください。"
refine:
nothing_yet: "まだ改善する対象がありません — 先にメッセージを送ってください。"
empty: "まだ改善する対象がありません — 会話が空です。"
failed: "/refine を開始できませんでした: {error}"
focus_suffix: " (フォーカス: {focus})"
started: "⚗ この会話をバックグラウンドでレビューしています{focus} — メモリやスキルの更新があれば完了時に報告します。"
review:
nothing_yet: "まだレビューする対象がありません — 先にメッセージを送ってください。"
failed: "/review を開始できませんでした: {error}"
goal:
label: "目標"
continuing: "続行します — 次のステップに進みます。"
send_to_kick: "何かメッセージを送ると次のステップが始まります。"
loop:
label: "ループ"
goal_defers_note: "注: 有効な /goal がこのセッションを進めています — ループの起動は目標が完了・一時停止・保留されるまで延期されます。"
subgoal:
no_goal: "有効な目標がありません。/goal <text> で設定してください。"
usage_remove: "使い方: /subgoal remove <n>"
remove_needs_int: "/subgoal remove: <n> には整数 (1 から始まる番号) を指定してください。"
removed: "✓ サブ目標 {index} を削除しました: {text}"
cleared_one: "✓ {count} 件のサブ目標を解除しました。"
cleared_other: "✓ {count} 件のサブ目標を解除しました。"
none_to_clear: "解除するサブ目標がありません。"
added: "✓ サブ目標 {index} を追加しました: {text}"
skin:
unavailable: "スキンエンジンを利用できません。"
current: "現在のスキン: {name}"
available_header: "利用可能なスキン:"
usage: "使い方: /skin <name>"
custom_hint: "カスタムスキン: {dir}/skins/ に YAML ファイルを置いてください"
unknown: "不明なスキン: {name}"
available: "利用可能: {names}"
saved_suffix: " (保存済み)"
set_to: "スキンを設定しました: {name}{saved}"
banner_note: "注: バナーの色は次回のセッション開始時に更新されます。"
colors_updated: "プロンプトと TUI の色を更新しました。"
prompt_compose:
editor_header: "#! 以下にプロンプトを入力してください。'#!' で始まる行は無視されます。\n#! 保存して終了すると送信されます。空のままにするとキャンセルされます。"
editor_failed: "(>_<) エディターを開けませんでした: {error}"
empty: "(._.) プロンプトが空です — 何も送信していません。"
focus:
usage: "使い方: /focus [on|off|status]"
toggle:
save_failed: "{setting} の設定を config.yaml に保存できませんでした"
footer:
usage: "/footer [on|off|status]"
label: "ランタイムフッター"
fields: "フィールド: {fields}"
timestamps:
usage: "/timestamps [on|off|status]"
label: "メッセージのタイムスタンプ"
update:
managed_action: "Hermes Agent を更新"
choice_update: "今すぐ更新"
choice_update_desc: "現在のセッションを終了して Hermes Agent を更新します"
choice_cancel: "キャンセル"
choice_cancel_desc: "現在のセッションを維持します"
title: "☤ Hermes Agent を更新"
detail: "現在のセッションを終了し、`hermes update` を実行します。"
cancelled: "🟡 /update をキャンセルしました。"
launching: "☤ 更新を開始しています..."
voice:
unknown_subcommand: "不明な voice サブコマンド: {subcommand}"
usage: "使い方: /voice [on|off|tts|status]"
wake:
unknown_subcommand: "不明な wake サブコマンド: {subcommand}"
usage: "使い方: /wake [on|off|status]"
enabled_in_config: "設定でウェイクワードが有効になっています (wake_word.enabled: true)。"
disabled_in_config: "設定でウェイクワードが無効になっています (wake_word.enabled: false)。"
tip_line: "✦ ヒント: {tip}"
banner:
context_too_low: "⚠️ コンテキスト長がわずか {tokens} トークンです — ツールを使うエージェント用途には低すぎる可能性があります。"
context_minimum: "Hermes には少なくとも {tokens} トークンが必要です。ツールスキーマとシステムプロンプトが大きな固定プレフィックスを占めます。"
fix_ollama: "Ollama の対処法: OLLAMA_CONTEXT_LENGTH={tokens} ollama serve"
fix_lm_studio: "LM Studio の対処法: モデル設定でコンテキスト長を設定 → モデルを再読み込み"
fix_local_server: "対処法: サーバーを少なくとも {tokens_k}K コンテキストで起動する(llama.cpp: -c {tokens})か、config.yaml の model.ollama_num_ctx を実際に提供しているウィンドウ長に設定してください"
fix_config: "対処法: config.yaml で model.context_length を設定するか、サーバーのコンテキスト設定を増やしてください"
hermes_models_not_agentic: "⚠ Nous Research の Hermes 3 および 4 モデルはエージェント向けではなく、Hermes Agent での使用を想定していません。"
hermes_models_lack_tools: "これらのモデルにはエージェントワークフローに必要なツール呼び出し機能がありません。エージェント対応モデル(Claude、GPT、Gemini、DeepSeek など)の使用を検討してください。"
hermes_models_switch_hint: "切り替え方法: /model sonnet または /model gpt5"
project_skills_loaded: "◆ このリポジトリからプロジェクトスキル {count} 件を読み込みました"
project_skills_untrusted: "◆ {root} にプロジェクトスキル {count} 件が見つかりましたが読み込まれていません — 有効にするには `hermes skills trust` を実行してください。"
command:
unknown_nothing_sent: "不明なコマンド {command} — 何も送信されませんでした。{hint}"
did_you_mean_one: "{suggestion} のことですか?"
type_help: "全一覧は /help を入力してください。"
ambiguous: "曖昧なコマンドです: {command}"
did_you_mean_many: "次のいずれかですか: {candidates}?"
config:
title: "(^_^) 設定"
loaded: "(読み込み済み)"
not_found: "(見つかりません)"
microsoft_entra_id: "Microsoft Entra ID"
google_vertex_oauth: "Google OAuth (Vertex AI)"
key_cmd_token: "key_cmd token (command)"
minimax_oauth: "MiniMax OAuth"
token_provider: "Token provider"
api_key_not_set: "未設定!"
value_not_set: "未設定"
section_model: "モデル"
section_terminal: "ターミナル"
section_agent: "エージェント"
section_session: "セッション"
label_model: "モデル:"
label_base_url: "ベース URL:"
label_api_key: "API キー:"
label_environment: "環境:"
label_ssh_target: "SSH ターゲット:"
label_working_dir: "作業ディレクトリ:"
label_timeout: "タイムアウト:"
label_max_turns: "最大ターン数:"
label_toolsets: "ツールセット:"
label_verbose: "詳細表示:"
label_started: "開始時刻:"
label_config_file: "設定ファイル:"
context:
header: "🧠 コンテキスト使用量 — {model}"
compute_failed: "(._.) コンテキストの内訳を計算できませんでした: {error}"
error:
auth: "{provider} のキーが拒否されました。`hermes model` を実行して再入力してください。"
billing: "{provider} アカウントのクレジットが不足しています。プロバイダーでチャージするか、/model で切り替えてください。"
model_not_found: "'{model}' は {provider} で利用できません。/model を実行して有効なモデルを選んでください。"
rate_limit: "{provider} によりレート制限されています。少し待つか、/model で切り替えてください。"
upstream_blocked: "{provider} の前段にあるファイアウォール/CDN がリクエストをブロックしました(キーの問題ではありません)。extra_headers で User-Agent を設定するか、/model で切り替えてください。"
overloaded: "{provider} は現在過負荷状態です。しばらくしてから /retry を送るか、/model で切り替えてください。"
server_error: "{provider} で内部エラーが発生しました。しばらくしてから /retry を送るか、/model で切り替えてください。"
timeout: "{provider} が時間内に応答しませんでした。/retry を送るか、/model で切り替えてください。"
unknown: "モデルへのリクエストに失敗しました。/model で切り替えるか、`hermes doctor` で設定を確認してください。"
the_provider: "プロバイダー"
the_current_model: "現在のモデル"
with_details: "{lead}\n詳細: {details}"
agent_init_failed: "Hermes はモデルへの接続を開始できませんでした: {error}。メッセージは送信されていません。`hermes doctor` で設定を確認するか、/model で別のプロバイダーを選んでください。"
gateway:
starting: "Hermes ゲートウェイ(メッセージングプラットフォーム)を起動しています..."
gateway_status:
header: "(✿◠‿◠) ゲートウェイの状態"
platform_config_header: "メッセージングプラットフォームの設定:"
enabled: "有効"
not_configured: "未設定({env_var})"
conversations_persist: "会話は /new または /reset まで保持されます。"
to_start: "ゲートウェイを起動するには:"
config_file: "設定ファイル: {path}"
load_error: "ゲートウェイ設定の読み込みエラー: {error}"
to_configure: "ゲートウェイを設定するには:"
step_env_vars: "1. 環境変数を設定する:"
step_config: "2. または {path} で設定を行う"
help:
header: "(^_^)? 利用可能なコマンド"
section_session: "セッション"
section_configuration: "設定"
section_tools_skills: "ツールとスキル"
section_info: "情報"
section_exit: "終了"
section_context: "コンテキスト"
section_background_automation: "バックグラウンドと自動化"
usage_suffix: "{description}(使い方: /{command} {args})"
alias_suffix: "{description}(/{command} のエイリアス)"
skill_commands: "スキルコマンド"
skill_bundles: "スキルバンドル"
quick_commands: "クイックコマンド"
n_installed: "{count} 件インストール済み"
n_configured: "{count} 件設定済み"
n_skills: "{count} 件のスキル"
load_n_skills: "{count} 件のスキルを読み込む"
no_skill_commands: "スキルコマンドはインストールされていません。"
matching_query: "'{query}' に一致"
to_list_them: "で一覧表示"
filtered_by: "'{query}' で絞り込み中 — 全一覧は /help を実行してください。"
tip_line: "ヒント: /help skills でスキルコマンド一覧 · /help <text> で絞り込み · Ctrl+P でコマンドパレットを開く"
multiline_hint: "複数行入力: Ctrl+J、Alt+Enter、または \\\\+Enter で改行"
draft_editor_hint: "下書きエディター: Ctrl+G(VSCode/Cursor では Alt+G)"
attach_image_hint: "画像の添付: /image {path} または、ローカル画像のパスでプロンプトを始める"
paste_image_hint: "画像の貼り付け: Alt+V(または /paste)"
insights:
no_session_data: "セッションデータはまだありません。"
mcp_watch:
changed_reload_skipped: "🔄 MCP サーバー設定が変更されました — 再読み込みをスキップしました(自動再読み込みは無効)。"
not_applied_run: "新しい設定はまだ適用されていません。今すぐ適用するには、次を実行してください:"
cache_note: "⚠️ 注意: /reload-mcp はツールセットを再構築し、プロバイダーのプロンプトキャッシュを無効化します(次のメッセージで完全な入力トークンが再送信されます)。"
changed_reloading: "🔄 MCP サーバー設定が変更されました — 接続を再読み込みしています..."
plugin:
command_error: "プラグインコマンドのエラー: {error}"
quick:
no_target: "クイックコマンド '{command}' にターゲットが定義されていません"
unsupported_type: "クイックコマンド '{command}' のタイプは未対応です(対応: 'exec'、'alias')"
no_command: "クイックコマンド '{command}' にコマンドが定義されていません"
no_output: "コマンドは何も出力しませんでした"
timed_out: "クイックコマンドがタイムアウトしました(30秒)"
error: "クイックコマンドのエラー: {error}"
reload_mcp:
title: "⚠️ /reload-mcp — プロンプトキャッシュ無効化の警告"
detail: "MCP サーバーを再読み込みすると、このセッションのツールセットが再構築され、\nプロバイダーのプロンプトキャッシュが無効化されます。次のメッセージでは\n完全な入力トークンが再送信されます(長コンテキストや高推論モデルでは\nコストが高くなる可能性があります)。"
choice_once: "一度だけ承認"
choice_once_hint: "今すぐ再読み込み"
choice_always: "常に承認"
choice_always_hint: "今すぐ再読み込みし、このプロンプトを永続的に非表示にする"
choice_cancel: "キャンセル"
choice_cancel_hint: "MCP ツールを変更しない"
unchanged: "MCP ツールは変更されていません。"
always_msg: "🔒 今後の /reload-mcp は確認なしで実行されます。"
once_verb: "再読み込み中"
reloading: "🔄 MCP サーバーを再読み込みしています..."
reconnected: "♻️ 再接続: {names}"
added: "➕ 追加: {names}"
removed: "➖ 削除: {names}"
tools_available: "🔧 {servers} 台のサーバーから {tools} 個のツールが利用可能"
agent_updated: "✅ エージェントを更新しました — {count} 個のツールが利用可能"
reload_skills:
reloading: "🔄 スキルを再読み込みしています..."
total: "📚 {count} 件のスキルが利用可能"
added_header: "➕ 追加されたスキル:"
removed_header: "➖ 削除されたスキル:"
session_store:
unavailable_rich: "[bold yellow]⚠ セッションストアが利用できません[/bold yellow] — この会話は[bold]保存されず[/bold]、後から再開することもできません。過去のセッション検索も無効です。\n 理由: {reason}。\n {action}\n [dim]詳細: {details}[/dim]"
unavailable_plain: "警告: セッションストアが利用できません — この会話は保存されず、後から再開することもできません。理由: {reason}。{action}"
shell:
command_denied: "コマンドが拒否されました: {reason}"
flagged_as_dangerous: "危険と判定されました"
exited: "! 終了コード {code}"
skills:
bundle_load_failed: "{command} のバンドルの読み込みに失敗しました"
loading_bundle: "バンドルを読み込み中: {name}({count} 件のスキル)"
skipped_missing: "見つからないスキルをスキップしました: {names}"
stacked_load_failed: "{command} のスタックされたスキルの読み込みに失敗しました"
loading_stacked: "スタックされたスキル {count} 件を読み込み中: {names}"
loading_skill: "スキルを読み込み中: {name}"
skill_load_failed: "{command} のスキルの読み込みに失敗しました"
tools:
none_available: "(;_;) 利用可能なツールがありません"
header: "(^_^)/ 利用可能なツール"
total: "合計: {count} 個のツール ヽ(^o^)ノ"
toolsets:
header: "(^_^)b 利用可能なツールセット"
currently_enabled_legend: "(*) = 現在有効"
tip_enable_all: "ヒント: 'all' または '*' で全ツールセットを有効化できます"
example: "例: python cli.py --toolsets web,terminal"
usage:
unknown_subcommand: "不明な /usage サブコマンド: {args}。/usage または /usage reset [--force] を試してください。"
reset_wrong_provider: "蓄積使用量のリセットは openai-codex プロバイダーでのみ利用できます。"
reset_switch_hint: "先に `/model` または `hermes auth` で切り替えてください。"
checking_reset_credits: "⏳ 蓄積されたリセットクレジットを確認中..."
codex_timeout: "❌ Codex バックエンドとの通信がタイムアウトしました — しばらくしてから再試行してください。"
no_api_calls: "(._.) このセッションではまだ API 呼び出しがありません。"
header_session: "📊 セッションのトークン使用量"
label_model: "モデル:"
label_input_tokens: "入力トークン:"
label_output_tokens: "出力トークン:"
label_reasoning_subset: "↳ 推論(内数):"
label_prompt_tokens_total: "プロンプトトークン(合計):"
label_completion_tokens: "補完トークン:"
label_total_tokens: "合計トークン:"
label_api_calls: "API 呼び出し:"
label_session_duration: "セッション時間:"
label_current_context: "現在のコンテキスト:"
label_messages: "メッセージ:"
label_compressions: "圧縮回数:"
verbose:
label_off: "ツール進行表示: オフ"
detail_off: "サイレントモード。最終応答のみ表示します。"
label_new: "ツール進行表示: NEW"
detail_new: "新しいツールごとに表示します(重複はスキップ)。"
label_all: "ツール進行表示: ALL"
detail_all: "すべてのツール呼び出しを表示します。"
label_verbose: "ツール進行表示: 詳細表示"
detail_verbose: "引数、結果、思考ブロックをすべて表示します。"
whoami:
you_label: "あなた:"
you_value: "cli(ローカルターミナル)"
user_label: "ユーザー:"
tier_label: "ティア:"
tier_value: "無制限"
slash_commands_label: "スラッシュコマンド:"
slash_commands_value: "すべて利用可能"
worktree:
shallow_clone_keeping: "⚠ シャロークローン — プッシュ状態を確認できないため保持します: {path}"
next_session_deepens: "次回の `hermes -w` セッションでクローンを深化し、マージ済みのワークツリーを自動的に削除します。"
unpushed_keeping: "⚠ ワークツリーに未プッシュのコミットがあるため保持します: {path}"
uncommitted_keeping: "⚠ ワークツリーに未コミットの変更があるため保持します: {path}"
kept_reason: "⚠ ワークツリーを保持します ({reason}): {path}"
clean_up_manually: "手動でクリーンアップするには: git worktree remove --force {path}"
cleaned_up: "✓ ワークツリーをクリーンアップしました: {path}"
exit_question_dirty: "このワークツリーには未コミットの変更があります: {path}"
exit_question_unpushed: "このワークツリーには未プッシュのコミットがあります: {path}"
exit_choice_keep: "ワークツリーを保持する(デフォルト)"
exit_choice_archive: "アーカイブして削除する(復元可能)"
exit_choice_discard: "削除して変更を破棄する"
archiving: "{path} をアーカイブしています…(大きなツリーでは時間がかかることがあります)"
archived: "✓ ワークツリーを {ref} にアーカイブして削除しました: {path}"
restore_hint: "復元するには: hermes worktree restore {name}"
archive_failed: "✗ {path} をアーカイブできなかったため保持します: {error}"
archived_kept: "✓ ワークツリーを {ref} にアーカイブしましたが保持しました ({reason}): {path}"
sweep_archived_removed: "アーカイブして削除 → {ref}"
sweep_archived_kept: "アーカイブ済み、保持 ({reason}) → {ref}"
discarded: "ワークツリーを削除し、変更を破棄しました: {path}"
display:
verb:
web_search: "ウェブを検索中"
web_extract: "読み込み中"
browser_navigate: "ブラウズ中"
browser_click: "クリック中"
browser_type: "入力中"
read_file: "読み込み中"
write_file: "書き込み中"
patch: "編集中"
search_files: "ファイルを検索中"
terminal: "実行中"
execute_code: "コードを実行中"
image_generate: "画像を生成中"
video_generate: "動画を生成中"
text_to_speech: "音声を生成中"
vision_analyze: "画像を確認中"
session_search: "過去のセッションを検索中"
skill_view: "スキルを読み込み中"
skills_list: "スキルを一覧表示中"
skill_manage: "スキルを更新中"
delegate_task: "委任中"
cronjob_manage: "スケジュール設定中"
clarify: "質問中"
memory: "メモリを更新中"
todo_list: "タスクを更新中"
verb_connector:
search: " — "
default: " "
bridge_generating:
tool_call: "ツール呼び出し"
tool_search: "ツール検索"
tool_describe: "ツールの詳細"
status_phrase:
verb: "は {verb}"
using_tool: "は {tool} を使用中"
preview:
shell_plus_one: "{first} + {count} 件のコマンド"
shell_plus_many: "{first} + {count} 件のコマンド"
delegate_tasks: "{count} 件のタスク: {goals}"
delegate_parallel_tasks: "{count} 件の並列タスク"
todo_verb_updating: "更新中"
todo_verb_planning: "計画中"
todo_reading: "タスクリストを読み込み中"
todo_tasks: "{count} 件のタスクを{verb}"
missing_old_text: "<old_text がありません>"
send_message_to: "{target} へ: \"{message}\""
session_search_recall: "想起: \"{query}\""
diff:
review_header: " ┊ レビュー diff"
omitted_lines: "… diff {count} 行を省略"
omitted_files: " (他 {count} 件のファイル/セクションを含む)"
thinking_verbs: "思案中,熟考中,黙考中,考察中,吟味中,検討中,思い巡らし中,振り返り中,処理中,推論中,分析中,計算中,統合中,構想中,発想中"
spinner:
tool_line: " [ツール] {message}"
done_line: " [完了] {message}{elapsed}"
failure:
file_not_found: "ファイルが見つかりません: {name}"
terminal_backend_unavailable: "ターミナルバックエンドが利用できません"
exit_code: " [終了コード {code}]"
memory_full: " [満杯]"
generic: " [エラー]"
generic_word: "エラー"
cute:
verb:
search: "検索"
fetch: "取得"
terminal: "$"
read: "読み込み"
write: "書き込み"
patch: "パッチ"
find: "ファイル検索"
grep: "grep"
navigate: "移動"
snapshot: "スナップショット"
click: "クリック"
type: "入力"
scroll: "スクロール"
back: "戻る"
press: "キー押下"
images: "画像"
vision: "画像解析"
plan: "計画"
recall: "想起"
memory: "メモリ"
skills: "スキル一覧"
skill: "スキル"
create: "作成"
speak: "読み上げ"
send: "送信"
cron: "cron"
exec: "実行"
browser: "ブラウザ"
delegate: "委任"
proc: "プロセス"
fetch_pages: "ページ"
todo_progress: "{done}/{total} 件のタスク"
todo_reading: "タスクを読み込み中"
todo_update_progress: "更新 {done}/{total} ✓"
todo_update_count: "{count} 件のタスクを更新"
todo_count: "{count} 件のタスク"
cron_task_fallback: "タスク"
cron_create: "{label} を作成"
cron_listing: "一覧表示"
delegate_parallel: "並列"
process_list: "プロセス一覧"
snapshot_full: "フル"
snapshot_compact: "コンパクト"
images_extracting: "抽出中"
vision_analyzing_page: "ページを解析中"
skills_list: "{category} を一覧表示"
skills_all: "すべて"
scroll:
up: "上"
down: "下"
left: "左"
right: "右"
fallback_tool_name: "ツール"
fallback_done: "完了"
completed: "┊ ⚡ {tool} 完了 {duration}"
iteration_progress:
unbounded: "イテレーション {n}"
bounded: "イテレーション {n}/{max}"
review:
routing_fallback_warning: "⚠ auxiliary.background_review.provider='{task_provider}'(モデル '{task_model}')をルーティングできませんでした({error})。{provider}/{model} にフォールバックします"
reasoning_effort_warning: "⚠ auxiliary.background_review.reasoning_effort='{effort}' は、レビューモデルがメインモデルでない間は効果がありません"
memory_op_line: "{label} {glyph} {preview}"
skill_patched_verbose: "📝 スキル '{name}' をパッチしました: \"{old}\" → \"{new}\""
skill_changed_verbose: "📝 スキル '{name}' を{verb}: {description}"
skill_message_verbose: "📝 {message}"
skill_action: "スキル {action}"
label_updated: "{label} を更新しました"
skill_result: "スキル '{name}' を{verb}{path}"
skill_verb:
created: "作成しました"
rewritten: "書き直しました"
patched: "パッチしました"
written: "書き込みました"
removed: "削除しました"
deleted: "完全に削除しました"
label:
skill: "スキル"
memory: "メモリ"
user: "ユーザープロファイル"
summary_cli: " 💾 自己改善レビュー: {summary}"
summary_callback: "💾 自己改善レビュー: {summary}"
aux_failure_label: "バックグラウンドレビュー"
notice:
uncompressed_context_overflow: "⚠️ セッションのコンテキスト(約{tokens}トークン)が、圧縮が無効(compression.enabled: false)の状態でモデルのコンテキストウィンドウ(約{context_length}トークン)を超えています。/compact で履歴を圧縮するか、config.yaml で圧縮を有効にしてください。"
explainer:
no_reply_prefix: "⚠️ 応答なし: "
empty_response: "{model} は再試行後も応答を生成しませんでした。`continue` を送信して再試行するか、/model でモデルを切り替えてください。"
exit:
all_retries_exhausted_no_response: "モデルプロバイダーはすべての再試行後も応答しませんでした。/retry を送信するか、/model でモデルを切り替えてください。"
partial_stream_recovery: "ストリーミングが途中で停止し、部分的な応答のみ復元できました。`continue` を送信すると停止した箇所から再開します。"
fallback_prior_turn_content: "このターンでは新しい内容が生成されなかったため、復元した以前のコンテキストを表示しています。`continue` を送信して再試行してください。"
redirect_restart_limit_exceeded: "毎回の試行が新しい修正指示によってキャンセルされたため、無限に再試行せずにターンを停止しました。最後の修正指示は次のメッセージとしてキューに入っています。"
rebuilt_restart_limit_exceeded: "フォールバックチェーン内のすべてのプロバイダーがフェイルオーバーを繰り返したため、無限に再試行せずにターンを停止しました。`continue` を送信するか、プロバイダーを切り替えてください。"
budget_exhausted: "最終回答の前に、ターンあたりのイテレーション/コスト予算を使い切りました。`continue` を送信すると続行します。"
ollama_runtime_context_too_small: "ローカルモデルのコンテキストウィンドウが小さすぎて完了できませんでした。コンテキストサイズを増やすか、より大きなモデルを使用してください。"
pending_tool_result: "ツール結果が保留中のままターンが停止し、モデルは後続のテキストを生成しませんでした。`continue` を送信すると要約させることができます。"
interrupted_during_api_call: "応答を受信する前に、リクエストが呼び出し中に中断されました。`continue` を送信して再試行してください。"
max_iterations_reached: "最終回答の前に、ツールイテレーションの上限に達しました。`continue` を送信して続行するか、`max_iterations` を引き上げてください。"
error_near_max_iterations: "最終回答の前、イテレーション上限の付近でエラーが発生しました。上のツール出力を確認してから、`continue` を送信してください。"
repeated_outer_errors: "繰り返しエラーでターンが失敗し続けたため、無限に再試行せずに早期停止しました。上のエラーを確認してから、`continue` を送信して再試行してください。"
persistence:
compression: "別のプロセスがこのセッションを圧縮中だったため、ターンを停止しました。メッセージはすでに保存されているはずです — 圧縮が完了してからもう一度送信してください。"
compression_closed: "このセッションがコンテキスト圧縮によってローテーションされ、その継続セッションを引き継げなかったため、ターンを停止しました。ストレージ自体は正常です — クライアントを更新(または新しいターンを開始)して新しいセッション ID を反映させてから、メッセージをもう一度送信してください。"
turn_lease: "別の Hermes プロセスがこのセッションを引き継いだため、ターンを停止しました。返信は保存されていません — もう一方のプロセスが終了するのを待ってから、メッセージをもう一度送信してください。"
session_row_missing: "チャットを開いている間にこのセッションがストレージから削除され、Hermes が再作成できなかったため、このメッセージは保存されていません。メッセージをもう一度送信してください。失敗が続く場合は `hermes {profile_arg}doctor` を実行してください。"
locked: "セッションストレージが使用中だったため(別の Hermes プロセスが状態データベースに書き込み中)、ターンを停止しました。メッセージはすでに保存されているはずです — 少し待ってからもう一度送信してください。"
replaced: "Hermes の実行中にセッションデータベースファイルが置き換えられたため、このメッセージは保存されていません(コピーは {home}/sessions/ に保持されています)。Hermes を停止(`hermes {profile_arg}gateway stop`)し、`hermes {profile_arg}doctor` を実行してください — `hermes {profile_arg}doctor --fix` は誤ったファイルをその場で修復してしまうため使わないでください — その後 Hermes を再起動し、メッセージをもう一度送信してください。高度な復旧手順はログに記載されています。"
deleted_wal: "別の Hermes プロセスがセッションデータベースの write-ahead log の古いコピーをまだ保持しているため、ファイルを保護するために Hermes は書き込みを停止し、このメッセージは保存されていません(コピーは {home}/sessions/ に保持されています)。データは失われていません。このプロファイルのすべての Hermes プロセス(Desktop アプリ、`hermes {profile_arg}gateway stop`、ダッシュボード、cron)を終了し、`hermes {profile_arg}doctor` を実行してください — ログを保持しているプロセスが表示されます — その後 Hermes を再起動し、メッセージをもう一度送信してください。プロセスの実行中に `doctor --fix` を実行したり state.db ファイルを削除したりしないでください。ガイド: {recovery_docs}"
corrupt: "状態データベースが構造的な破損を報告したため(再起動時に会話記録が失われるおそれがありました)、ターンを停止しました。ディスク容量を空けても解決しません。復旧の選択肢:\n1. `hermes {profile_arg}doctor --fix` を実行する\n2. ゲートウェイを停止し、次のコマンドで復旧する:\n hermes {profile_arg}sessions recover --source {db_path} --inspect-only\n (復旧可能と報告された場合)hermes {profile_arg}sessions recover --source {db_path} --output recovered-state.db\n — 復旧処理は先に破損ファイルのスナップショットを取ります。稼働中の state.db に対して `sqlite3 ... \".recover\"` を実行しないでください。脆弱な sqlite3 CLI はさらに破損させる可能性があります\n3. {backups_dir}/ のバックアップから復元する\nその後、メッセージをもう一度送信してください。"
fts_index: "セッション検索インデックス(FTS5)が破損しており切り離せなかったため、ターンを停止し、このメッセージは保存されていません。メッセージストア自体は損傷していません。復旧ツールの実行やバックアップからの復元は行わないでください。`hermes {profile_arg}doctor --fix` を実行(または Hermes を再起動すると起動時にインデックスが修復されます)してから、メッセージをもう一度送信してください。"
disk: "Hermes はこの会話をディスクに保存できなかったため、メッセージを失わないよう停止しました。ディスクが満杯の可能性があります。空き容量を確保(または {home}/state.db の権限を修正)してから、メッセージをもう一度送信してください。"
default: "Hermes はこの会話を保存できなかったため、メッセージを失わないよう停止しました。考えられる原因: ドライブの空き容量不足、または別の Hermes プロセスがデータベースを保持している。他の Hermes ウィンドウを閉じ、`hermes {profile_arg}doctor` でストレージを確認してから、メッセージをもう一度送信してください。"
file_mutation:
header: "⚠️ ファイル変更検証: 上の文面がどう示していようと、このターンで {count} 件のファイル編集が失敗しました。`git status` または `read_file` を実行して、実際に反映された内容を確認してください。"
entry: " • `{path}` — [{tool}] {preview}"
failed: "失敗"
shared:
and_more: " • … 他 {count} 件"
the_model: "モデル"
tips:
t001: "/bg <prompt> は現在のセッションを空けたまま別セッションでタスクを実行します。/btw <question> は会話を中断せずに、この会話に関する補足の質問に答えます。"
t002: "/branch は現在のセッションを分岐させ、進捗を失わずに別の方向を試せるようにします。"
t003: "/compress は会話が長くなったときに、コンテキストを手動で圧縮します。"
t004: "/rollback はファイルシステムのチェックポイント一覧を表示します。エージェントが変更したファイルを以前の任意の状態に復元できます。"
t005: "/rollback diff 2 は何も復元せずに、チェックポイント 2 以降の変更内容をプレビューします。"
t006: "/rollback 2 src/file.py は特定のチェックポイントから単一のファイルを復元します。"
t007: "/title \"my project\" でセッションに名前を付けられます。あとで /resume または hermes -c で再開できます。"
t008: "/resume は以前に名前を付けたセッションの続きから再開します。"
t009: "/queue <prompt> は現在のターンを中断せずに、次のターン用にメッセージをキューに入れます。"
t010: "/undo は会話から直前のユーザーとアシスタントのやり取りを削除します。"
t011: "/retry は直前のメッセージを再送信します。エージェントの応答がいまひとつだったときに便利です。"
t012: "/verbose はツールの進捗表示を off → new → all → verbose の順に切り替えます。"
t013: "/reasoning high はモデルの思考の深さを上げます。/reasoning show は推論内容を表示します。"
t014: "/fast は API 応答を高速化する優先処理のオン/オフを切り替えます(プロバイダーによります)。"
t015: "/yolo はセッションの残りの間、危険なコマンドの承認プロンプトをすべてスキップします。"
t016: "/model でセッション中にモデルを切り替えられます。/model sonnet や /model gpt-5 を試してみてください。"
t017: "/model --global はデフォルトのモデルを恒久的に変更します。"
t018: "/personality pirate で楽しいパーソナリティを設定できます。kawaii から shakespeare まで 14 種類の組み込みオプションがあります。"
t019: "/skin は CLI のテーマを変更します。ares、mono、slate、poseidon、charizard を試してみてください。"
t020: "/statusbar はモデル、トークン、コンテキスト使用率 %、コスト、経過時間を表示する常設バーのオン/オフを切り替えます。"
t021: "/tools disable browser は現在のセッションの間だけ、ブラウザツールを一時的に外します。"
t022: "/browser connect は CDP 経由で、起動中の Chromium 系ブラウザにブラウザツールを接続します。"
t023: "/plugins はインストール済みのプラグインとその状態を一覧表示します。"
t024: "/cron はスケジュールされたタスクを管理します。任意のプラットフォームへ配信する定期プロンプトを設定できます。"
t025: "/reload-mcp は再起動せずに MCP サーバー設定をホットリロードします。"
t026: "/usage はトークン使用量、コストの内訳、セッションの経過時間を表示します。"
t027: "/insights は過去 30 日間の使用状況の分析を表示します。"
t028: "/paste はクリップボードに画像があるか確認し、次のメッセージに添付します。"
t029: "/profile はどのプロファイルが有効か、およびそのホームディレクトリを表示します。"
t030: "/config は現在の設定をひと目で確認できます。"
t031: "/stop はエージェントが起動した実行中のバックグラウンドプロセスをすべて終了します。"
t032: "@file:path/to/file.py はファイルの内容をメッセージに直接挿入します。"
t033: "@file:main.py:10-50 はファイルの 10〜50 行目だけを挿入します。"
t034: "@folder:src/ はディレクトリツリーの一覧を挿入します。"
t035: "@diff はステージされていない git の変更をメッセージに挿入します。"
t036: "@staged はステージ済みの git の変更(git diff --staged)を挿入します。"
t037: "@git:5 は直近 5 件のコミットを完全なパッチ付きで挿入します。"
t038: "@url:https://example.com は Web ページを取得して、その内容を挿入します。"
t039: "@ を入力するとファイルシステムのパス補完が起動し、任意のファイルへ対話的に移動できます。"
t040: "複数の参照を組み合わせられます: \"Review @file:main.py and @file:test.py for consistency.\""
t041: "Alt+Enter で改行を挿入して複数行を入力できます。(Windows Terminal は Alt+Enter を横取りするため、代わりに Ctrl+Enter を使ってください。)"
t042: "Ctrl+C はエージェントを中断します。2 秒以内に 2 回押すと強制終了します。"
t043: "Ctrl+Z は Hermes をバックグラウンドにサスペンドします。シェルで fg を実行すると再開できます。"
t044: "Tab は自動サジェストのゴーストテキストを確定するか、スラッシュコマンドを補完します。"
t045: "エージェントの作業中に新しいメッセージを入力すると、中断して方向を変えられます。"
t046: "Alt+V はクリップボードの画像を会話に貼り付けます。"
t047: "5 行以上を貼り付けると自動的にファイルに保存され、代わりにコンパクトな参照が挿入されます。"
t048: "hermes -c は直近の CLI セッションを再開します。hermes -c \"project name\" はタイトルで再開します。"
t049: "hermes -w は隔離された git worktree を作成します。並列のエージェントワークフローに最適です。"
t050: "hermes -w -q \"Fix issue #42\" は worktree による隔離と単発クエリを組み合わせます。"
t051: "hermes chat -t web,terminal は特定のツールセットだけを有効にして、目的を絞ったセッションを開始します。"
t052: "hermes chat -s github-pr-workflow は起動時にスキルを事前読み込みします。"
t053: "hermes chat -q \"query\" は非対話のクエリを 1 回実行して終了します。"
t054: "hermes chat --max-turns 1000 はターンあたりデフォルト 500 回の反復上限を上書きします。"
t055: "hermes chat --checkpoints は破壊的なファイル変更のたびに、事前にファイルシステムのスナップショットを取ります。"
t056: "hermes --yolo はセッション全体で危険なコマンドの承認プロンプトをすべてバイパスします。"
t057: "hermes chat --source telegram はセッションにタグを付け、hermes sessions list で絞り込めるようにします。"
t058: "hermes -p work chat はデフォルトを変えずに、特定のプロファイルで実行します。"
t059: "hermes doctor --fix は設定と依存関係の問題を診断し、自動で修復します。"
t060: "hermes dump はセットアップの要約をコンパクトに出力します。バグ報告に最適です。"
t061: "hermes config set KEY VALUE はシークレットを .env に、それ以外を config.yaml に自動で振り分けます。"
t062: "hermes config edit はデフォルトのエディターで config.yaml を開きます。"
t063: "hermes config check は不足している設定項目や古くなった設定項目をスキャンします。"
t064: "hermes sessions browse は検索付きの対話型セッションピッカーを開きます。"
t065: "hermes sessions stats はプラットフォーム別のセッション数とデータベースのサイズを表示します。"
t066: "hermes sessions prune --older-than 30 は古いセッションを整理します。"
t067: "hermes skills search react --source skills-sh は skills.sh の公開ディレクトリを検索します。"
t068: "hermes skills check はインストール済みのハブスキルに上流の更新がないかスキャンします。"
t069: "hermes skills tap add myorg/skills-repo はカスタムの GitHub スキルソースを追加します。"
t070: "hermes skills snapshot export setup.json はバックアップや共有のためにスキル設定をエクスポートします。"
t071: "hermes mcp add github --command npx はコマンドラインから MCP サーバーを追加します。"
t072: "hermes mcp-serve は Hermes 自体を他のエージェント向けの MCP サーバーとして実行します。"
t073: "hermes auth add で認証情報プールのローテーション用に複数の API キーを追加できます。"
t074: "hermes completion bash >> ~/.bashrc はすべてのコマンドとプロファイルの Tab 補完を有効にします。"
t075: "hermes logs -f は agent.log をリアルタイムで追跡します。--level WARNING --since 1h で出力を絞り込めます。"
t076: "hermes backup は Hermes のホームディレクトリ全体の zip バックアップを作成します。"
t077: "hermes profile create coder は隔離されたプロファイルを作成し、それ自体が独立したコマンドになります。"
t078: "hermes profile create work --clone は現在の設定とキーを新しいプロファイルにコピーします。"
t079: "hermes update は新しい同梱スキルをすべてのプロファイルに自動で同期します。"
t080: "hermes gateway install は Hermes をシステムサービス(systemd/launchd)として設定します。"
t081: "hermes memory setup で外部メモリプロバイダー(Honcho、Mem0 など)を設定できます。"
t082: "hermes webhook subscribe は HMAC 検証付きのイベント駆動 Webhook ルートを作成します。"
t083: "コスト削減: hermes tools で未使用のツールを無効化し、hermes skills config でスキルを絞り込めます。"
t084: "/reasoning low または /reasoning minimal は思考の深さをデフォルト(medium)より下げ、応答をより速く安価にします。"
t085: "hermes models はビジョン、圧縮、補助タスクを安価なモデルに振り分けます。メインのチャットモデルを落とさずに、バックグラウンドのトークンコストを 85% 以上削減できます。"
t086: "config.yaml で display.bell_on_complete: true を設定すると、長いタスクの完了時にベルが鳴ります。"
t087: "display.streaming: true を設定すると、モデルの生成に合わせてトークンがリアルタイムで表示されます。"
t088: "display.show_reasoning: true を設定すると、モデルの思考の連鎖(chain-of-thought)を確認できます。"
t089: "display.compact: true を設定すると出力の空白が減り、より密度の高い情報表示になります。"
t090: "display.busy_input_mode: queue を設定するとエージェントを中断せずにメッセージをキューに入れ、steer を設定すると /steer 経由で実行中に注入します。"
t091: "display.resume_display: minimal を設定すると、セッション再開時の会話全体の振り返り表示をスキップします。"
t092: "compression.threshold: 0.50 を設定して、自動圧縮が発動するタイミングを制御できます(デフォルト: コンテキストの 50%)。"
t093: "agent.max_turns: 1000 を設定すると、エージェントがターンあたりに実行できるツール呼び出しのステップ数が増えます。"
t094: "file_read_max_chars: 200000 を設定すると、read_file 呼び出し 1 回あたりの最大コンテンツ量が増えます。"
t095: "approvals.mode: smart を設定すると、LLM が安全なコマンドを自動承認し、危険なコマンドを自動拒否します。"
t096: "config.yaml で fallback_model を設定すると、バックアップのプロバイダーへ自動でフェイルオーバーします。"
t097: "privacy.redact_pii: true を設定すると、LLM に送信する前にユーザー ID と電話番号をハッシュ化します。"
t098: "browser.headed: true を設定すると、エージェントが閲覧している間のローカル Chromium ウィンドウを表示できます。"
t099: "config.yaml で worktree: true を設定すると、常に git worktree を作成します(hermes -w と同じ)。"
t100: "security.website_blocklist.enabled: true を設定すると、Web ツールから特定のドメインをブロックします。"
t101: "cron.wrap_response: false を設定すると、cron のヘッダー/フッターなしでエージェントの生の出力を配信します。"
t102: "HERMES_TIMEZONE は任意の IANA タイムゾーン文字列でサーバーのタイムゾーンを上書きします。"
t103: "config.yaml では環境変数の展開が使えます。${VAR_NAME} 構文を使ってください。"
t104: "config.yaml のクイックコマンドは、トークンを一切消費せずにシェルコマンドを即座に実行します。"
t105: "カスタムのパーソナリティは config.yaml の agent.personalities 以下で定義できます。"
t106: "provider_routing は OpenRouter のプロバイダーの並び順、ホワイトリスト、ブラックリストを制御します。"
t107: "execute_code は Hermes のツールをプログラムから呼び出す Python スクリプトを実行します。結果はコンテキストに入りません。"
t108: "delegate_task はデフォルトで最大 10 個のサブエージェント(delegation.max_concurrent_children)を同時に起動し、隔離されたコンテキストで並列作業を行います。"
t109: "web_extract は PDF の URL にも対応しています。PDF のリンクを渡すと Markdown に変換します。"
t110: "search_files は ripgrep ベースで grep より高速です。ターミナルの grep の代わりに使ってください。"
t111: "patch は 9 種類のあいまい一致戦略を使うため、わずかな空白の違いで編集が失敗することはありません。"
t112: "patch は V4A 形式に対応しており、1 回の呼び出しで複数ファイルを一括編集できます。"
t113: "read_file はファイルが見つからないときに、似た名前のファイルを提案します。"
t114: "read_file は自動で重複を排除します。変更のないファイルを再読み込みすると軽量なスタブを返します。"
t115: "browser.user_data_dir にフォルダを指定すると、永続的な Chromium プロファイルが保持され、サイトのログイン状態がセッションをまたいで残ります。"
t116: "browser.chromium_args はローカルのブラウザセッションに Chromium の追加フラグを渡します(例: --lang=de)。"
t117: "image_generate は FLUX 2 Pro で画像を生成し、自動で 2 倍にアップスケールします。"
t118: "text_to_speech はテキストを音声に変換します。Telegram では音声バブルとして再生されます。"
t119: "send_message はセッション内から、接続済みの任意のメッセージングプラットフォームに送信できます。"
t120: "todo ツールは、セッション中にエージェントが複雑な複数ステップのタスクを追跡するのに役立ちます。"
t121: "session_search は過去のすべての会話を対象に全文検索を行います。"
t122: "エージェントは好み、修正内容、環境に関する事実を自動的にメモリへ保存します。"
t123: "/moa は難しいプロンプト 1 つを、設定済みの Mixture of Agents モデルセットに通します。"
t124: "ターミナルコマンドは長時間タスク向けに、notify_on_complete 付きのバックグラウンドモードに対応しています。"
t125: "ターミナルのバックグラウンドプロセスは watch_patterns に対応しており、特定の出力行で通知できます。"
t126: "terminal ツールは local、Docker、SSH、Modal、Daytona、Singularity の 6 つのバックエンドに対応しています。"
t127: "各プロファイルは独自の設定、API キー、メモリ、セッション、スキル、cron ジョブを持ちます。"
t128: "プロファイル名はシェルコマンドになります。'hermes profile create coder' で 'coder' コマンドが作られます。"
t129: "hermes profile export coder -o backup.tar.gz は持ち運び可能なプロファイルのアーカイブを作成します。"
t130: "2 つのプロファイルが誤って同じボットトークンを共有した場合、2 つ目のゲートウェイは明確なエラーでブロックされます。"
t131: "セッションは最初のやり取りのあとに説明的なタイトルを自動生成するため、手動で名前を付ける必要はありません。"
t132: "セッションタイトルは系譜に対応しています: \"my project\" → \"my project #2\" → \"my project #3\"。"
t133: "終了時に Hermes はセッション ID と統計情報を含む再開コマンドを表示します。"
t134: "hermes sessions export backup.jsonl はバックアップや分析のためにすべてのセッションをエクスポートします。"
t135: "hermes -r SESSION_ID は ID を指定して過去の任意のセッションを再開します。"
t136: "メモリは固定されたスナップショットです。変更は次のセッション開始時にのみシステムプロンプトに反映されます。"
t137: "メモリの項目は、プロンプトインジェクションや情報流出のパターンがないか自動的にスキャンされます。"
t138: "エージェントには 2 つのメモリストアがあります: 個人メモ(約 2200 文字)とユーザープロファイル(約 1375 文字)です。"
t139: "エージェントへの修正指示(\"いや、こうやって\"など)は、多くの場合メモリに自動保存されます。"
t140: "github、creative、mlops、productivity、research など、80 を超えるスキルが同梱されています。"
t141: "インストール済みのスキルはすべて自動的にスラッシュコマンドになります。/ を入力すると一覧を確認できます。"
t142: "hermes skills install official/security/1password はリポジトリからオプションのスキルをインストールします。"
t143: "スキルは特定の OS プラットフォームに限定できます。macOS または Linux でのみ読み込まれるスキルもあります。"
t144: "config.yaml の skills.external_dirs で、カスタムディレクトリからスキルを読み込めます。"
t145: "エージェントは skill_manage を使って、手続き的メモリとして独自のスキルを作成できます。"
t146: "/plan は何も実行せずに、Markdown の実装計画を .hermes/plans/ に書き出します。"
t147: "cron ジョブにはスキルを付けられます: hermes cron add --skill blogwatcher \"Check for new posts\"。"
t148: "cron の配信先には telegram、discord、slack、email、sms のほか 12 以上のプラットフォームがあります。"
t149: "cron の応答が [SILENT] で始まる場合、配信は抑制されます。監視専用のジョブに便利です。"
t150: "cron は相対的な遅延(30m)、間隔(every 2h)、cron 式、ISO タイムスタンプに対応しています。"
t151: "cron ジョブは完全に新しいエージェントセッションで実行されるため、プロンプトはそれ単体で完結している必要があります。"
t152: "faster-whisper がインストールされていれば、音声モードは API キーなしで動作します(無料のローカル音声認識)。"
t153: "TTS プロバイダーは 5 つ利用できます: Edge TTS(無料)、ElevenLabs、OpenAI、NeuTTS(無料・ローカル)、MiniMax。"
t154: "/voice on は CLI で音声モードを有効にします。Ctrl+B でプッシュトゥトーク録音を切り替えます。"
t155: "ストリーミング TTS は文が生成されるそばから再生するため、応答全体を待つ必要がありません。"
t156: "Telegram、Discord、WhatsApp、Slack の音声メッセージは自動的に文字起こしされます。"
t157: "Hermes は Telegram、Discord、Slack、WhatsApp、Signal、Matrix、IRC、Microsoft Teams、メールなど 21 のメッセージングプラットフォームで動作します。"
t158: "hermes gateway install は起動時に自動で開始するシステムサービスとして設定します。"
t159: "DingTalk は Stream Mode を使うため、Webhook や公開 URL は不要です。"
t160: "BlueBubbles はローカルの macOS サーバー経由で iMessage を Hermes に接続します。"
t161: "Webhook ルートは HMAC 検証、レート制限、イベントフィルタリングに対応しています。"
t162: "API サーバーは Open WebUI や LibreChat と互換性のある OpenAI 互換エンドポイントを公開します。"
t163: "Discord のボイスチャンネルモード: ボットが VC に参加し、発話を文字起こしして音声で返答します。"
t164: "group_sessions_per_user: true を設定すると、グループチャットで各メンバーに専用のセッションが割り当てられます。"
t165: "/sethome はチャットを cron ジョブ配信のホームチャンネルとして設定します。"
t166: "ゲートウェイは非アクティブ状態に基づくタイムアウトに対応しているため、稼働中のエージェントは無期限に実行できます。"
t167: "危険なコマンドの承認には 4 段階あります: once、session、always(恒久的な許可リスト)、deny。"
t168: "スマート承認モードは LLM を使って安全なコマンドを自動承認し、危険なコマンドにフラグを立てます。"
t169: "SSRF 保護はプライベートネットワーク、ループバック、リンクローカル、クラウドメタデータのアドレスをブロックします。"
t170: "セッション ID はタイムスタンプで始まる(20250305_091523_abcd)ため、ls や jq で自然に並べ替えられます。"
t171: "MCP のサブプロセスにはフィルタリングされた環境変数が渡されます。安全なシステム変数だけが通過します。"
t172: "コンテキストファイル(.hermes.md、AGENTS.md)は読み込み前にプロンプトインジェクションのセキュリティスキャンを受けます。"
t173: "config.yaml の command_allowlist は特定のシェルコマンドパターンを恒久的に承認します。"
t174: "コンテキストがしきい値に達すると自動的に圧縮されます。メモリが書き出され、履歴が要約されます。"
t175: "ステータスバーはコンテキストが埋まるにつれて黄、橙、赤の順に色が変わります。"
t176: "SOUL.md はエージェントの主要なアイデンティティファイルです。カスタマイズして振る舞いを形作れます。"
t177: "Hermes は .hermes.md、AGENTS.md、CLAUDE.md、.cursorrules(最初に見つかったもの)からプロジェクトのコンテキストを読み込みます。"
t178: "サブディレクトリの AGENTS.md ファイルは、エージェントがフォルダーに入るにつれて段階的に検出されます。"
t179: "コンテキストファイルは 20,000 文字が上限で、先頭と末尾を残すスマートな切り詰めが行われます。"
t180: "ブラウザバックエンド: ローカル Chromium、Lightpanda、Browserbase、Browser Use、Firecrawl、さらにプラグインとして Camofox。"
t181: "Camofox(検出回避 Firefox)はプラグインになりました: hermes plugins install camofox。"
t182: "browser_exec は複数のブラウザ操作を 1 回の Python 呼び出しで実行します — 移動・抽出・クリックをまとめて。"
t183: "browser.dialog_policy はページのネイティブダイアログの扱いを決めます: must_respond(エージェントが browser_dialog で応答)、auto_dismiss、auto_accept。"
t184: "hermes mcp は Nous 承認済み MCP の対話型ピッカーを開き、キー 1 つでインストールできます。"
t185: "hermes mcp catalog はリポジトリに同梱されている Nous 承認済みの MCP サーバーを一覧表示します。"
t186: "hermes mcp install <name> はカタログの項目をインストールし、認証情報の入力を求め、有効にするツールを選択させてくれます。"
t187: "MCP サーバーは config.yaml で設定します。stdio と HTTP の両方のトランスポートに対応しています。"
t188: "サーバーごとのツールフィルタリング: tools.include で特定のツールをホワイトリストに、tools.exclude でブラックリストに登録します。"
t189: "MCP サーバーは実行時にツールセットを自動生成します。hermes tools でプラットフォームごとにオン/オフを切り替えられます。"
t190: "MCP の OAuth 対応: auth: oauth を設定すると、PKCE を使ったブラウザベースの認可が有効になります。"
t191: "チェックポイントはファイルが変更されない限りオーバーヘッドがゼロで、デフォルトで有効です。"
t192: "ロールバック前のスナップショットが自動保存されるため、取り消しをさらに取り消せます。"
t193: "/rollback は会話のターンも取り消すため、エージェントはロールバックされた変更を覚えていません。"
t194: "チェックポイントは ~/.hermes/checkpoints/ 内のシャドウリポジトリを使います。プロジェクトの .git には一切触れません。"
t195: "batch_runner.py は学習データ生成のために数百のプロンプトを並列処理します。"
t196: "hermes chat -Q はプログラムからの利用向けにクワイエットモードを有効にし、バナーとスピナーを表示しません。"
t197: "トラジェクトリ保存(--save-trajectories)は、モデル学習用にツール使用の完全なトレースを記録します。"
t198: "プラグインには 3 種類あります。汎用(ツール/フック)、メモリプロバイダー、コンテキストエンジンです。"
t199: "hermes plugins install owner/repo で GitHub から直接プラグインをインストールできます。"
t200: "外部メモリプロバイダー(Honcho、Hindsight、Mem0、OpenViking など)は hermes plugins install で追加できます。"
t201: "プラグインフックには pre/post_tool_call、pre/post_llm_call、出力の正規化用の transform_terminal_output などがあります。"
t202: "プロンプトキャッシュ(Anthropic)は、キャッシュ済みのシステムプロンプトのプレフィックスを再利用してコストを削減します。"
t203: "エージェントはセッションタイトルをバックグラウンドスレッドで自動生成するため、レイテンシへの影響はゼロです。"
t204: "スマートなモデルルーティングにより、簡単な質問を自動的に安価なモデルへ振り分けられます。"
t205: "スラッシュコマンドは前方一致に対応しています。/h は /help に、/mod は /model に解決されます。"
t206: "ファイルパスをターミナルにドラッグすると、画像は自動的に添付され、それ以外はコンテキストとして送信されます。"
t207: "リポジトリのルートに置いた .worktreeinclude に、ワークツリーへコピーする gitignore 済みファイルを列挙できます。"
t208: "hermes acp は Hermes を ACP サーバーとして起動し、VS Code、Zed、JetBrains と連携できます。"
t209: "カスタムプロバイダー: config.yaml の custom_providers に名前付きエンドポイントを保存できます。"
t210: "HERMES_EPHEMERAL_SYSTEM_PROMPT は、履歴に一切保存されないシステムプロンプトを注入します。"
t211: "credential_pool_strategies は fill_first、round_robin、least_used、random のローテーションに対応しています。"
t212: "hermes auth add nous または hermes auth add openai-codex で、OAuth ベースのプロバイダーを設定できます。"
t213: "API サーバーは Chat Completions と、サーバー側で状態を保持する Responses API の両方に対応しています。"
t214: "設定で tool_preview_length: 0 にすると、スピナーのアクティビティ表示にファイルパスが省略なしで表示されます。"
t215: "hermes status --deep は、すべてのコンポーネントに対してより詳しい診断チェックを実行します。"
t216: "cron ジョブには Python スクリプト(--script)を添付でき、その標準出力がコンテキストとしてプロンプトに注入されます。"
t217: "cron スクリプトは ~/.hermes/scripts/ に置かれ、エージェントより先に実行されます。データ収集パイプラインに最適です。"
t218: "config.yaml の prefill_messages_file は、すべての API 呼び出しに few-shot の例を注入します。履歴には保存されません。"
t219: "SOUL.md はエージェントのデフォルトのアイデンティティを完全に置き換えます。書き換えて Hermes を自分のものにしましょう。"
t220: "SOUL.md は初回実行時にデフォルトのパーソナリティで自動生成されます。編集してカスタマイズしてください。"
t221: "/compress <focus topic> は要約予算の 60〜70% を指定したトピックに割り当て、残りを大胆に切り詰めます。"
t222: "2 回目以降の圧縮では、圧縮エンジンはゼロからやり直すのではなく前回の要約を更新します。"
t223: "ゲートウェイセッションのリセット前に、Hermes は重要な事実をバックグラウンドで自動的にメモリへ書き出します。"
t224: "config.yaml で network.force_ipv4: true にすると、IPv6 が壊れたサーバーでのハングを修正します(socket をモンキーパッチします)。"
t225: "terminal ツールは一般的な終了コードに注釈を付けます。例: grep が 1 を返した場合は「一致なし(エラーではありません)」。"
t226: "失敗したフォアグラウンドのターミナルコマンドは、指数バックオフ(2 秒、4 秒、8 秒)で最大 3 回自動再試行されます。"
t227: "単独の sudo コマンドは .env の SUDO_PASSWORD をパイプする形に自動書き換えされるため、対話的なプロンプトは不要です。"
t228: "execute_code のヘルパーは明示的なインポートが必要です: from hermes_tools import json_parse, shell_quote, retry。"
t229: "execute_code の 7 つのサンドボックスツール(web_search、terminal、read/write/search/patch)は RPC を使い、コンテキストには一切入りません。"
t230: "同じファイル領域を 3 回以上読むと警告が出ます。4 回以上ではループ防止のため強制的にブロックされます。"
t231: "write_file と patch は、最後に読んだ後にファイルが外部で変更されていないかを検出し、古くなっている場合は警告します。"
t232: "V4A パッチ形式は Update だけでなく、Add File、Delete File、Move File のディレクティブにも対応しています。"
t233: "MCP サーバーはサンプリングによって LLM の補完を逆に要求できます。エージェントがサーバーのツールになるわけです。"
t234: "MCP サーバーが notifications/tools/list_changed を送ると、再起動なしでツールが自動的に再登録されます。"
t235: "delegate_task に acp_command: 'claude' を指定すると、どのプラットフォームからでも Claude Code を子エージェントとして起動できます。"
t236: "委譲にはハートビートスレッドがあり、子の活動が親に伝わるため、ゲートウェイのタイムアウトを防げます。"
t237: "プロバイダーが HTTP 402(支払いが必要)を返すと、補助クライアントは自動的に次のプロバイダーへフォールバックします。"
t238: "agent.tool_use_enforcement は、ツールを呼ばずに操作を説明するだけのモデルをステアします。GPT/Codex では auto です。"
t239: "agent.restart_after_turn_timeout は /restart が stop() に入る前に進行中のターンを完了させます。restart_drain_timeout は stop() 開始後の強制中断までの猶予に過ぎません。"
t240: "agent.api_max_retries(デフォルト 3)は、失敗した API 呼び出しをエラーとして表面化させる前に何回再試行するかを制御します。素早くフォールバックしたいなら小さくしてください。"
t241: "ゲートウェイはセッションごとに AIAgent インスタンスをキャッシュします。このキャッシュを破棄すると Anthropic のプロンプトキャッシュが壊れます。"
t242: "どの Web サイトも /.well-known/skills/index.json でスキルを公開でき、スキルハブが自動的に検出します。"
t243: "~/.hermes/skills/.hub/audit.log のスキル監査ログには、すべてのインストールと削除の操作が記録されます。"
t244: "古い git ワークツリーは自動的に整理されます。クリーンでマージ済みのツリーは削除され、未コミットまたは未プッシュの変更がある放置されたツリーは先にアーカイブされ、hermes worktree restore で復元できます。"
t245: "プロファイルは HERMES_HOME で Hermes の状態を分離します。terminal.home_mode が profile でない限り、ホスト側ツールのサブプロセスは本来の HOME を維持します。"
t246: "環境変数 HERMES_HOME_MODE(8 進数、例: 0701)で、Web サーバーがたどれるようにディレクトリのパーミッションを指定できます。"
t247: "コンテナモード: HERMES_HOME に .container-mode を置くと、ホストの CLI が自動的にコンテナ内で実行されます。"
t248: "Ctrl+C には 5 段階の優先順位があります。録音のキャンセル → プロンプトのキャンセル → ピッカーのキャンセル → エージェントの中断 → 終了。"
t249: "エージェント実行中のすべての中断は、タイムスタンプ付きで ~/.hermes/interrupt_debug.log に記録されます。"
t250: "BROWSER_CDP_URL はブラウザツールを実行中の任意の Chromium 系ブラウザに接続します。WebSocket、HTTP、host:port を受け付けます。"
t251: "BROWSERBASE_ADVANCED_STEALTH=true は、カスタム Chromium による高度な検出回避を有効にします(Scale プラン)。"
t252: "CLI は幅が 80 桁未満のターミナルでは自動的にコンパクトモードに切り替わります。"
t253: "クイックコマンドには 2 種類あります。exec(シェルコマンドを直接実行)と alias(別のコマンドへリダイレクト)です。"
t254: "タスクごとの委譲モデル: 設定の delegation.model と delegation.provider で、サブエージェントを安価なモデルへ振り分けられます。"
t255: "delegation.reasoning_effort は、サブエージェントの思考の深さを独立して制御します。"
t256: "config.yaml の display.platforms で、プラットフォームごとに表示設定を上書きできます: {telegram: {tool_progress: all}}。"
t257: "設定の human_delay.mode は人間のタイピング速度を模倣します。min_ms/max_ms の範囲を設定できます。"
t258: "設定のバージョン移行は読み込み時に自動的に実行されるため、新しい設定キーは手作業なしで現れます。"
t259: "GPT と Codex のモデルには、ツール規律と必須のツール使用に関する特別なシステムプロンプトの指針が与えられます。"
t260: "Gemini モデルには、絶対パス、並列ツール呼び出し、非対話的コマンドに関する専用の指示が与えられます。"
t261: "config.yaml の context.engine にプラグイン名を設定すると、別のコンテキスト管理戦略を使えます。"
t262: "クラウドブラウザ使用時、localhost や LAN の URL は代わりにローカルの Chromium で開きます(browser.auto_local_for_private_urls、既定で有効)。"
t263: "圧縮エンジンは安価な前処理を行います。LLM を実行する前に、200 文字を超えるツール出力をプレースホルダーに置き換えます。"
t264: "圧縮が失敗すると、API への連打を避けるため以降の試行が 10 分間停止されます。"
t265: "長い危険なコマンド(70 文字超)には、承認プロンプトに全文を先に確認できる「view」オプションが付きます。"
t266: "音声録音中は、マイクの RMS レベルに基づいて ▁▂▃▄▅▆▇ のバーで音量が可視化されます。"
t267: "プロファイル名は既存の PATH 上のバイナリと重複できません。「hermes profile create ls」は拒否されます。"
t268: "hermes profile create backup --clone-all は、設定、キー、SOUL.md、メモリ、スキル、セッションのすべてをコピーします。"
t269: "音声録音キーは config.yaml の voice.record_key で設定できます。Ctrl+B に限りません。"
t270: ".cursorrules と .cursor/rules/*.mdc ファイルは自動検出され、プロジェクトのコンテキストとして読み込まれます。"
t271: "コンテキストファイルは 10 種類以上のプロンプトインジェクションのパターンを検出します。不可視の Unicode、「指示を無視せよ」、情報の持ち出しの試みなどです。"
t272: "GPT-5 と Codex はメッセージ形式で 'system' の代わりに 'developer' ロールを使います。"
t273: "タスクごとの補助モデルの上書き: config.yaml の auxiliary.vision.provider、auxiliary.compression.model など。"
t274: "補助クライアントは 'main' をプロバイダーの別名として扱い、実際のプライマリプロバイダーとモデルに解決します。"
t275: "hermes import-agent openclaw --dry-run は、何も書き込まずに OpenClaw からの移行内容をプレビューします。"
t276: "引用符付きやスペースがエスケープされた状態で貼り付けたファイルパスは自動的に処理されるため、手で整える必要はありません。"
t277: "スラッシュコマンドは大量貼り付けの折りたたみを引き起こしません。大きな引数を付けた /command も正しく動作します。"
t278: "中断モードでは、エージェント実行中に入力したスラッシュコマンドは中断ロジックを経由せず即座に実行されます。"
t279: "HERMES_DEV=1 は、ローカル開発のためにコンテナモードの検出を回避します。"
t280: "各 MCP サーバーには独自のツールセット(mcp-servername)があり、hermes tools で個別にオン/オフできます。"
t281: "設定内の MCP の ${ENV_VAR} プレースホルダーはサーバー起動時に解決され、~/.hermes/.env の変数も対象です。"
t282: "信頼済みリポジトリ(NousResearch)のスキルは「trusted」セキュリティレベルになり、コミュニティのスキルは追加のスキャンを受けます。"
t283: "~/.hermes/skills/.hub/quarantine/ のスキル隔離領域には、セキュリティレビュー待ちのスキルが保管されます。"
t284: "/steer <prompt> は次のツール呼び出しの後にメモを注入します。中断せずにタスクの途中で方向を修正できます。"
t285: "/goal <text> は継続的な Ralph ループの目標を設定します。ジャッジが完了と判定するまで、Hermes はターンを自動で続けます。"
t286: "/snapshot create [label] は Hermes 設定の完全な状態スナップショットを保存し、/snapshot restore <id> で後から戻せます。"
t287: "/copy [N] は最後のアシスタント応答をクリップボードにコピーします。番号を付けると最後から N 番目をコピーします。"
t288: "/redraw は UI 全体を強制的に再描画し、tmux のリサイズやマウス選択の残骸によるターミナルのずれを直します。"
t289: "/agents(別名 /tasks)は、現在のセッションで動作中のエージェントと実行中のバックグラウンドタスクを表示します。"
t290: "/footer は最終応答に付くゲートウェイのフッター(モデル、コンテキスト使用率、cwd)の表示を切り替えます。"
t291: "/busy queue|steer|interrupt は、Hermes の作業中に Enter を押したときの動作を制御します。"
t292: "Telegram の DM で /topic を使うと、ユーザー管理のマルチセッショントピックモードが有効になり、/topic <id> で過去のセッションをその場で復元できます。"
t293: "/approve session|always は保留中の危険なコマンドを選んだ信頼範囲で実行し、/deny は拒否します。"
t294: "/restart は実行中の処理を完了させてからゲートウェイを安全に再起動し、復帰後に要求者へ通知します。"
t295: "/kanban boards switch <slug> で、チャット内からアクティブなマルチプロジェクトの Kanban ボードを切り替えられます。"
t296: "/reload は実行中のセッションに ~/.hermes/.env を再読み込みします。再起動せずに新しい API キーを反映できます。"
t297: "no_agent=True の cronjob はスクリプトをスケジュール実行し、その標準出力をそのまま送信します。トークンも LLM もゼロです。"
t298: "cron スクリプトの標準出力が空ならサイレントティックとなり、何も配信されません。しきい値の監視に最適です。"
t299: "HERMES_CRON_MAX_PARALLEL(デフォルト 4)は 1 ティックあたりに実行する cron ジョブ数を制限し、バーストでキーが飽和しないようにします。"
t300: "ゲートウェイフックは ~/.hermes/hooks/<name>/ に HOOK.yaml と handler.py を置きます。ハンドラー名は `handle` にする必要があります。"
t301: "フックのイベントには gateway:startup、session:start、agent:step、そして command:* のワイルドカード購読があります。"
t302: "~/.hermes/BOOT.md にチェックリストを置くと、gateway:startup フックが起動ごとにワンショットのエージェントとして実行します。"
t303: "hermes curator run --dry-run は、何も変更せずにキュレーターがアーカイブや統合する内容をプレビューします。"
t304: "hermes curator pin <skill> は、自動アーカイブとエージェントの skill_manage ツールの両方からスキルを保護します。"
t305: "hermes curator rollback は実行前のスナップショットからスキルを復元します。バックアップは skills/.curator_backups/ にあります。"
t306: "hermes auth reset <provider> [target] は、認証情報プール全体、またはインデックス・id・ラベルで指定した 1 件のクールダウンと枯渇フラグをクリアします。"
t307: "credential_pool_strategies.<provider>: round_robin は、デフォルトの fill_first ではなくキーを均等に巡回させます。"
t308: "ツールごとに use_gateway: true を設定すると、web、image、tts、browser を Nous サブスクリプション経由で使えます。追加のキーは不要です。"
t309: "provider_routing.data_collection: deny は、OpenRouter 上でデータを保存するプロバイダーを除外します。"
t310: "provider_routing.require_parameters: true は、リクエストのすべてのパラメーターに対応するプロバイダーだけにルーティングします。"
t311: "HERMES_TUI_RESUME=1 は起動時に最新の TUI セッションへ自動で再接続します。SSH が切れた後に便利です。"
t312: "HERMES_TUI_THEME=light|dark|<hex> は、COLORFGBG を設定しないターミナルで TUI のテーマを強制します。"
t313: "TUI で Ctrl+G または Ctrl+X Ctrl+E を押すと、入力バッファを $EDITOR で開けます。長い複数行のプロンプトに便利です。"
t314: "TUI は LaTeX をインラインで描画します。$E=mc^2$ は生の TeX ではなく Unicode の数式として表示されます。"
t315: "hermes dashboard は 127.0.0.1:9119 でローカル Web UI を起動します。データは localhost の外に一切出ません。"
t316: "hermes dashboard は xterm.js と WebSocket PTY を使い、Hermes の TUI をそのままブラウザに埋め込みます。"
t317: "~/.hermes/dashboard-themes/ にパレット色 2 つを書いた YAML を置くだけで、ダッシュボード全体の見た目を変えられます。"
t318: "ダッシュボードプラグインはドロップイン方式です。~/.hermes/dashboard-plugins/ に manifest.json と JS バンドルを置くだけで、npm ビルドは不要です。"
t319: "ダッシュボードテーマで layoutVariant: cockpit を指定すると、プラグインが sidebar スロットから内容を配置できる 260px の左レールが追加されます。"
t320: "display.tool_progress_command: true でメッセージングプラットフォームにも /verbose が公開されます。デフォルトでは CLI 限定です。"
t321: "HERMES_BACKGROUND_NOTIFICATIONS=result は、バックグラウンドタスクの完了時だけ通知します(他に concise/all/error/off)。"
t322: "HERMES_WRITE_SAFE_ROOT は write_file/patch の書き込み先をディレクトリプレフィックスに制限します。複数パスは os.pathsep(: または ;)で区切ります。"
t323: "HERMES_IGNORE_RULES は AGENTS.md、SOUL.md、.cursorrules、メモリ、プリロードされたスキルの自動注入をスキップします。"
t324: "HERMES_ACCEPT_HOOKS は、config.yaml で宣言された未確認のシェルフックを TTY のプロンプトなしで自動承認します。"
t325: "auxiliary.goal_judge.model で /goal のジャッジを安価で高速なモデルに振り分け、ループのコストをほぼゼロに抑えられます。"
t326: "チェックポイントは、巨大なモノレポで git 操作が遅くなるのを避けるため、ファイル数が 50,000 を超えるディレクトリをスキップします。"
t327: "tts.provider: piper は 44 言語対応のローカル TTS を CPU で実行します。音声モデルは ~/.hermes/cache/piper-voices/ に自動ダウンロードされます。"
t328: "tts.providers.<name>.type: command は、{input_path} と {output_path} のプレースホルダーで任意の CLI TTS エンジンを接続します。"
t329: "API_SERVER_ENABLED=true は、Open WebUI や LibreChat 向けに、ゲートウェイと並行して OpenAI 互換エンドポイントを起動します。"
t330: "GATEWAY_PROXY_URL は分離構成を実現します。プラットフォームの入出力はローカルで、エージェントの処理はリモートの API サーバーに委ねます。"
t331: "MATRIX_DEVICE_ID は E2EE 用の固定デバイス ID を指定します。未設定だと起動ごとにキーが変わり、過去メッセージの復号が壊れます。"
t332: "TELEGRAM_WEBHOOK_URL を設定する場合は TELEGRAM_WEBHOOK_SECRET が必須です。openssl rand -hex 32 で生成できます。"
t333: "batch_runner.py --resume は完了済みプロンプトをテキスト内容で照合するため、データセットの順序が変わっても完了した作業を再実行しません。"
t334: "/new はその場で新しいセッションを開始します(別名 /reset)。新しいセッション ID、空の履歴、CLI は開いたままです。"
t335: "/clear はターミナル画面を消去し、さらに新しいセッションを開始します。見た目のリセットをワンステップで行えます。"
t336: "/history は CLI を離れずに現在の会話をインラインで表示します。さっと読み返すのに便利です。"
t337: "/save はセッションを終了せずに現在の会話をディスクに書き込みます。"
t338: "/status はセッション情報(ID、タイトル、モデル、トークン使用量、経過時間)を一目で確認できます。"
t339: "/image <path> は、貼り付けやドラッグ&ドロップなしでローカルの画像ファイルを次のプロンプトに添付します。"
t340: "/platforms はゲートウェイとメッセージングプラットフォームの接続状態をチャット内から表示します。"
t341: "/commands はスラッシュコマンドとインストール済みスキルの全一覧をページ送りで表示します。タブ補完のないプラットフォームで便利です。"
t342: "/toolsets は利用可能なすべてのツールセットを一覧表示し、-t/--toolsets に何を渡せるかがわかります。"
t343: "/voice tts は TTS のみのモードを切り替えます。エージェントの応答は音声で読み上げられ、プロンプトはこれまで通りタイプします。"
t344: "/reload-skills は ~/.hermes/skills/ を再スキャンするため、セッションを再起動せずに追加したスキルが現れます。"
t345: "/indicator kaomoji|emoji|unicode|ascii で、エージェント実行中に表示される TUI のビジーインジケーターのスタイルを選べます。"
t346: "/debug はサポートバンドル(システム情報とログ)をアップロードして共有用リンクを返します。チャットでも使えます。"
t347: "hermes -z \"<prompt>\" は最も純粋なワンショット実行です。最終回答だけを stdout に出力するため、スクリプトでのパイプ処理に理想的です。"
t348: "hermes chat --pass-session-id はセッション ID をシステムプロンプトに注入し、エージェントが自身のセッションを参照できるようにします。"
t349: "hermes chat --image path/to/pic.png は、別途アップロードせずに 1 回の -q クエリにローカル画像を添付します。"
t350: "hermes chat --ignore-user-config はアクティブなユーザー設定をスキップします。再現可能なバグ報告や CI 実行に向いています。"
t351: "hermes chat --source tool はプログラムからのチャットにタグを付け、hermes sessions list を散らかさないようにします。"
t352: "hermes dump --show-keys は、より詳しいサポートデバッグ用にマスク済みの API キーのフィンガープリントを含めます。"
t353: "hermes sessions rename <ID> \"new title\" で過去のセッション名を変更でき、hermes sessions delete <ID> で削除できます。"
t354: "hermes import は Hermes の完全バックアップ zip を復元します。セッションの JSON/JSONL エクスポートはダッシュボードの Sessions ページから取り込めます。"
t355: "hermes fallback は fallback_model チェーンを対話的に管理します。config.yaml を手で編集する必要はありません。"
t356: "hermes pairing は DM ペアリングトークンを更新します。更新後に最初にメッセージを送った人がボットへのアクセスを得ます。"
t357: "hermes setup は、プロバイダー、キー、プラットフォームの接続設定を 1 つの対話フローで初回ユーザーに案内します。"
t358: "hermes status --deep はすべてのコンポーネントの完全なヘルスチェックを実行します。通常の hermes status は簡易表示です。"
t359: "HERMES_AGENT_TIMEOUT=0 は実行中のエージェントに対するゲートウェイの無操作による強制終了を無効にします。長時間の調査に使ってください。"
t360: "HERMES_ENABLE_PROJECT_PLUGINS=1 は ./.hermes/plugins/ のリポジトリ内プラグインを自動読み込みします。設計上、信頼確認を経ます。"
t361: "HERMES_DISABLE_FILE_STATE_GUARD=1 は、patch と write_file の「読んだ後にファイルが変更された」ガードをオフにします。"
t362: "HERMES_ALLOW_PRIVATE_URLS=true は Web ツールから localhost やプライベートネットワークへのアクセスを許可します。ゲートウェイモードではデフォルトでオフです。"
t363: "HERMES_OPTIONAL_SKILLS=name1,name2 は、プロファイルごとの初回実行時にオプションカタログの追加スキルを自動インストールします。"
t364: "HERMES_BUNDLED_SKILLS はカスタムの同梱スキルツリーを指します。Homebrew と Nix のパッケージングで使われます。"
t365: "HERMES_DUMP_REQUEST_STDOUT=1 は、すべての API リクエストのペイロードをログファイルではなく stdout に出力します。"
t366: "HERMES_OAUTH_TRACE=1 は、プロバイダー認証のデバッグ用にマスク済みの OAuth トークン交換と更新の試行を記録します。"
t367: "HERMES_STREAM_RETRIES(デフォルト 3)は、一時的なネットワークエラー時のストリーム途中での再接続回数を制御します。"
t368: "HERMES_GATEWAY_BUSY_ACK_ENABLED=false は、作業中のエージェントにユーザーがメッセージを送った際の ⚡/⏳/⏩ の応答メッセージを抑制します。"
t369: "HERMES_AGENT_NOTIFY_INTERVAL(デフォルト 180s)は、長いターンでゲートウェイが進捗を通知する間隔を設定します。"
t370: "HERMES_RESTART_DRAIN_TIMEOUT(デフォルト 900s)は、/restart が強制実行に移る前に進行中の処理を待つ時間の上限です。"
t371: "HERMES_CHECKPOINT_TIMEOUT(デフォルト 30s)はファイルシステムのチェックポイント作成時間の上限です。巨大なモノレポでは大きくしてください。"
t372: "config.yaml の image_gen.model で FAL のモデルを選べます。flux-2/klein、gpt-image-2、nano-banana-pro などです。"
t373: "image_gen.provider は、デフォルトの代わりにプラグイン(OpenAI Images、Codex、FAL)経由で画像生成をルーティングします。"
t374: "AUXILIARY_VISION_BASE_URL と AUXILIARY_VISION_API_KEY で、画像解析を任意の OpenAI 互換エンドポイントに向けられます。"
t375: "API_SERVER_MODEL_NAME は /v1/models に表示されるモデル名をカスタマイズします。複数プロファイルの Open WebUI 構成では必須です。"
t376: "ダッシュボードプラグインは /dashboard-plugins/<name>/ から配信されます。ファイルを ~/.hermes/dashboard-plugins/ に置いてください。"
t377: "--source tool のチャットはデフォルトで hermes sessions list から除外されます。表示するには --source を明示的に指定してください。"
placeholder:
p01: "何でも質問するか、/ を入力してコマンドを表示…"
p02: "このフォルダーの内容を要約して"
p03: "受信トレイの最新メールへの返信を下書きして"
p04: "機能を計画して、段階的に実装して"
p05: "失敗しているテストを見つけて修正して"
p06: "このトピックを調査して概要をまとめて"
p07: "このリポジトリで最近何が変わった?"
p08: "このメモを To-Do リストにして"
p09: "このエラーの意味と修正方法を説明して"
p10: "リマインダーを設定するか、定期タスクをスケジュールして"
p11: "/ でコマンドを参照、Ctrl+P でパレットを開けます"
# Window plans (Nous subscription with included usage): picker words, limit lines, Large-model notice.
plan_usage:
level_free: "無料"
level_top_tier: "大"
resets_in: "{duration}後にリセット"
resets_soon: "まもなくリセット"
limit_reached: "{name}の上限に達しました · {resets}"
limit_day: "1日"
limit_week: "週間"
limit_month: "月間"
limit_top_tier: "大型モデルの月間"
then_credits: "有料モデルはクレジットを使用中(従量課金)"
then_credits_large: "大型モデルはクレジットを使用中(従量課金)"
then_wait: "それまでは無料モデルのみ"
then_wait_large: "それまで大型モデルは一時停止"
large_notice: "大型モデル:1メッセージあたりプランの利用量を多く消費します。"
large_notice_credits: "大型モデル:1メッセージあたりクレジットを多く消費します(従量課金)。"
large_notice_limit: "大型モデル:{name}の上限に達しました({resets})。"
large_notice_limit_stops: "大型モデル:{name}の上限に達しました({resets})。それまで実行できません。"
large_notice_percent: "大型モデル:1メッセージあたりプランの利用量を多く消費します。大型モデルの月間上限:{percent} 使用。"