diff options
| author | Michelle Tilley <michelle@michelletilley.net> | 2026-03-26 19:19:47 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-27 02:19:47 +0000 |
| commit | b649a7ab8de6488c1341e94c37d032c07d5b3f13 (patch) | |
| tree | ca9aadc1175b8439dd85de135f3804681b755776 /docs | |
| parent | fix: set WorkingDirectory in PowerShell Invoke-AtuinSearch (#3351) (diff) | |
| download | atuin-b649a7ab8de6488c1341e94c37d032c07d5b3f13.zip | |
feat: Use eye-declare for more performant and flexible AI TUI (#3343)
This PR replaces the mess of custom rendering code in Atuin AI with
[eye-declare](https://github.com/BinaryMuse/eye-declare), and updates
the TUI to feel more terminal-native: output appears inline and persists
in scrollback, so you can scroll up and look at previous conversations
for reference.
The "review" state — which used to exist between the LLM generating a
response and the user either executing or following up — has been
removed; just start typing to follow up with the LLM, or press `enter`
at the empty input box to execute the suggested command.
<img width="1203" height="633" alt="image"
src="https://github.com/user-attachments/assets/159ee447-9a2a-4edd-b56e-a79bf1aaaa94"
/>
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/docs/ai/images/basic-followup-questions.png | bin | 0 -> 504535 bytes | |||
| -rw-r--r-- | docs/docs/ai/images/basic-refine.png | bin | 0 -> 410378 bytes | |||
| -rw-r--r-- | docs/docs/ai/images/basic.png | bin | 0 -> 371724 bytes | |||
| -rw-r--r-- | docs/docs/ai/images/danger.png | bin | 0 -> 409263 bytes | |||
| -rw-r--r-- | docs/docs/ai/images/question.png | bin | 0 -> 372884 bytes | |||
| -rw-r--r-- | docs/docs/ai/introduction.md | 118 |
6 files changed, 7 insertions, 111 deletions
diff --git a/docs/docs/ai/images/basic-followup-questions.png b/docs/docs/ai/images/basic-followup-questions.png Binary files differnew file mode 100644 index 00000000..d0c1d12d --- /dev/null +++ b/docs/docs/ai/images/basic-followup-questions.png diff --git a/docs/docs/ai/images/basic-refine.png b/docs/docs/ai/images/basic-refine.png Binary files differnew file mode 100644 index 00000000..e2404bc5 --- /dev/null +++ b/docs/docs/ai/images/basic-refine.png diff --git a/docs/docs/ai/images/basic.png b/docs/docs/ai/images/basic.png Binary files differnew file mode 100644 index 00000000..a58e510a --- /dev/null +++ b/docs/docs/ai/images/basic.png diff --git a/docs/docs/ai/images/danger.png b/docs/docs/ai/images/danger.png Binary files differnew file mode 100644 index 00000000..9c762f19 --- /dev/null +++ b/docs/docs/ai/images/danger.png diff --git a/docs/docs/ai/images/question.png b/docs/docs/ai/images/question.png Binary files differnew file mode 100644 index 00000000..a1dc5690 --- /dev/null +++ b/docs/docs/ai/images/question.png diff --git a/docs/docs/ai/introduction.md b/docs/docs/ai/introduction.md index 1c154992..b14634b3 100644 --- a/docs/docs/ai/introduction.md +++ b/docs/docs/ai/introduction.md @@ -22,111 +22,25 @@ For a list of settings that control the behavior of Atuin AI, see [its dedicated Prompt the LLM to create a command, and get one back, no fuss. Press `enter` to run, or `tab` to insert. -``` -┌Ask questions or generate a command:──────────────────────────┐ -│ │ -│ > Get a list of running docker containers │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ $ docker ps │ -│ │ -└────[Enter]: Run [Tab]: Insert [f]: Follow-up [Esc]: Cancel┘ -``` +[](./images/basic.png) ### Follow-up -You can follow-up with `f` to specify a refinement prompt to update the command that will be inserted. +You can follow-up with a refinement prompt to update the command that will be inserted. -``` -┌Ask questions or generate a command:──────────────────────────┐ -│ │ -│ > Get a list of running docker containers │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ $ docker ps │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ > Actually I want to get all docker containers │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ $ docker ps -a │ -│ │ -└────[Enter]: Run [Tab]: Insert [f]: Follow-up [Esc]: Cancel┘ -``` +[](./images/basic-refine.png) You can also follow-up with questions to get responses in natural language. -``` -┌Ask questions or generate a command:──────────────────────────┐ -│ │ -│ > Get a list of running docker containers │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ $ docker ps │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ > Actually I want to get all docker containers │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ $ docker ps -a │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ > What other useful flags to `docker ps` should I know? │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ Here are some handy `docker ps` flags: │ -│ │ -│ - `-q` — Only show container IDs (great for piping to │ -│ other commands) │ -│ - `-s` — Show container sizes │ -│ - `-n 5` — Show the last 5 created containers │ -│ - `-l` — Show only the latest created container │ -│ - `--no-trunc` — Don't truncate output (shows full IDs and │ -│ commands) │ -│ - `-f` or `--filter` — Filter by condition, e.g.: │ -│ - `-f status=exited` — only exited containers │ -│ - `-f name=myapp` — filter by name │ -│ - `-f ancestor=nginx` — filter by image │ -│ - `--format` — Custom output using Go templates, e.g.: │ -│ `--format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"` │ -│ │ -│ A common combo is `docker ps -aq` to get all container │ -│ IDs, useful for bulk operations like `docker rm $(docker │ -│ ps -aq)`. │ -│ │ -└────[Enter]: Run [Tab]: Insert [f]: Follow-up [Esc]: Cancel┘ -``` +[](./images/basic-followup-questions.png) -You can use `enter` or `tab` at any time to run or insert the last suggested command, even if it was suggested in a previous turn. +You can still use `enter` or `tab` to run or insert the last suggested command, even if it was suggested in a previous turn. ### Conversational and search usage If you prompt the LLM with a question that doesn't imply you want to generate a command, it can respond in natural language, and use web search if necessary to fetch the data it needs. -``` -┌Ask questions or generate a command:──────────────────────────┐ -│ │ -│ > What is the latest version of atuin? │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ ✓ Used 2 tools │ -│ │ -│ The latest version of Atuin is **v18.12.0**, available on │ -│ the [GitHub releases │ -│ page](https://github.com/atuinsh/atuin/releases). │ -│ │ -└─────────────────────────────────[f]: Follow-up [Esc]: Cancel┘ -``` +[](./images/question.png) ### Dangerous or low-confidence command detection @@ -134,22 +48,4 @@ The LLM scores its confidence in the command, as well as how dangerous the comma The Atuin Hub server also monitors suggested commands for dangerous patterns the LLM didn't catch, and appends its own assessment at the end of the LLM's own assessment. -``` -┌Ask questions or generate a command:──────────────────────────┐ -│ │ -│ > Delete all files from $HOME │ -│ │ -├──────────────────────────────────────────────────────────────┤ -│ │ -│ $ rm -rf $HOME/* │ -│ │ -│ ! This will PERMANENTLY delete ALL files and directories in │ -│ your home directory, including documents, downloads, │ -│ configurations, SSH keys, and everything else. This is │ -│ irreversible and will likely break your system. Also note │ -│ this won't delete hidden (dot) files — if you want those │ -│ too, that's even more destructive.; [Server] Recursive │ -│ delete of critical directory │ -│ │ -└────[Enter]: Run [Tab]: Insert [f]: Follow-up [Esc]: Cancel┘ -``` +[](./images/danger.png) |
