全画面インターフェース¶
ターミナルで引数なしの openternary、または openternary ui を実行するとTUIが開きます。実行結果・ジョブのリアルタイムの進捗・比較・環境の診断・更新を1つの画面にまとめたもので、CLIと同じコマンドを実行します。
開く条件
TUIが開くのは対話できるターミナル(stdinとstdoutの両方がTTY)のときだけです。パイプ、CI(CI 環境変数がある)、TERM=dumb、OPENTERNARY_NO_TUI=1 のときは、引数なしの openternary は以前と同じくhelpを表示して終了コード 2 で終わります。openternary ui は理由を表示して終了コード 2 で終わります。スクリプトが全画面のプログラムに捕まることはありません。
すべては ❯ のプロンプトから¶
ボタンはありません。画面下の入力欄は、コーディング用エージェントのコマンドラインと同じように使います。/ を打つとコマンドの一覧が出て、続けて文字を打つと絞り込まれます。
| キー | プロンプトでの動作 |
|---|---|
| / | コマンドの一覧を開く(どこからでも) |
| 文字 | 絞り込み。名前が入力で始まるもの、名前に含むもの、説明に含むものの順 |
| Up Down | 一覧の中を移動。一覧が閉じているときは、表示中のタブの表を移動 |
| Enter | 選択中のコマンドを実行 |
| Tab | 選択中のコマンドを補完し、続けて引数を入力できるようにする |
| Esc | 一覧を閉じる。または入力を消す |
| Ctrl+Q | 終了(/quit でも可) |
コマンド¶
| コマンド | 内容 |
|---|---|
/new |
一覧からコマンドを選び、そのフォームを開く |
/quantize・/calibrate・/benchmark など |
そのコマンドのフォームを開く。引数を続けると、フォームを飛ばして計画画面へ: /quantize tiny-llama --device cpu |
/compare |
実行結果から基準、続いて候補を選び、比較のフォームを開く |
/home・/runs・/jobs・/doctor・/update |
そのタブを表示(数字キー 1〜6 でも切り替え可) |
/baseline・/candidate |
実行結果タブで選択中のrunを、/compare の基準・候補に指定 |
/cancel |
選択中のジョブを中止 |
/delete |
選択中のrunを削除(名前の入力で確認) |
/probe |
doctor --probe-runtime: デバイスでPyTorchを試験 |
/setup |
このPCにPyTorchを入れる(openternary setup) |
/upgrade |
openternary update を実行 |
/check |
PyPIの新しい版を今すぐ確認 |
/refresh |
実行結果・ジョブ・診断を再読込 |
/cache:remove・/artifacts:validate など |
グループのコマンドは : でつなぐ |
/doctor と /update はタブを表示します。同じ名前のコマンドを実行するのは /probe と /upgrade です。
ジョブを始める: フォーム → 計画 → 開始¶
-
フォーム。 コマンドを選ぶと、CLIの定義から自動生成したフォームが開きます。そのため、
openternary <コマンド> --helpと常に同じオプションが並びます。Enter で次の欄に移ります。--json・--events-jsonl・--quiet・--dry-run・--yesはTUIが扱うので表示されません。Ctrl+S で確認に進みます。 -
計画。 計画画面には、実行するコマンド行と、そのコマンド自身の
--dry-runの出力が表示されます。 dry-runが成功するまで開始は選べません(薄く表示され、❯も止まりません)。dry-runが失敗した場合は、理由が表示され、開始できません。 -
開始。 ジョブがバックグラウンドで動きます。
setupとupdateでは、この画面で開始を選ぶことが--yesの代わりになります。
計画・削除・中止・終了の確認画面も同じ操作です。Up Down で ❯ を動かし、Enter で決定します。
ジョブ: リアルタイムの進捗¶
各ジョブは、ふつうのCLIを子プロセスとして実行したものです:
TUIは、ジョブが書く進捗イベントを読み、段階ごとに進捗バー・速度・ ETAと、ジョブのログの末尾を表示します。処理は別のプロセスで行われるので:
- 結果・終了コード・JSON・run lock・
last_failure.jsonは、スクリプトから実行した場合とまったく同じです - ジョブがメモリ不足で落ちても、TUIは巻き込まれません
- Linux・macOSではTUIを閉じてもジョブは止まらず、開き直すと監視を再開します。Windowsでは、ターミナルのウィンドウを閉じると、そのコンソールで動いているジョブも止まります
| キー(ジョブの表を選択中) | |
|---|---|
| N | 新しいジョブ |
| K | 選択中のジョブを中止 |
中止すると、方法を聞かれます。中止は割り込みを送ります(Linux・macOSはプロセスグループへSIGINT、Windowsは
Ctrl+Break)。コマンドは安全に止まり、終了コード 130 で終わり、失敗がrunに記録されます。強制停止はプロセスツリーをすぐに終了させ、何も記録されません。
ジョブの記録は、Windowsでは %LOCALAPPDATA%\openternary\jobs、それ以外では $XDG_STATE_HOME/openternary/jobs
(既定は ~/.local/state/openternary/jobs)に保存されます。OPENTERNARY_STATE_DIR で場所を変えられます。新しいものから200件まで残ります。
実行結果¶
実行結果タブには、runs/(または --runs で指定したフォルダ)にあるrunが、新しい順に、状態・品質の判定・種類・名前とともに並びます。右側には、選択中のrunの詳細とファイルが表示されます。
| キー(実行結果の表を選択中) | |
|---|---|
| B / C | 比較の基準・候補にする |
| X | runを削除 |
| R | 再読込 |
削除するには、runの名前を入力して確認します。削除できるのは、実行結果のフォルダの直下にあって、自身の
metrics.json と config.yaml を持つrunだけです。別のプロセスが使っている(.execution.lock を持っている)
runは拒否されます。cache remove --execute も、同じように対象の名前の入力を求めます。
そのほかのタブ¶
- 比較: 選んだ基準と候補を表示します。
/compareで一覧から選べます。 - 診断:
openternary doctorと同じ内容です。/probeでデバイスの試験を行います。 - 更新: 導入済みと最新のバージョンです。
/checkで今すぐPyPIを確認し、/upgradeでopenternary updateを実行します。
言語・色・動き¶
- 表示言語は
OPENTERNARY_LANG=en|jaに従い、指定がなければOSの言語になります。 OPENTERNARY_REDUCED_MOTION=1またはNO_MOTION=1で、回転するシンボルが止まります。OPENTERNARY_NO_UPDATE_CHECK=1で更新の確認をしなくなります(通常は1日1回まで)。