【English|中文】
The AI Terminal Shell is written in Programmable Prompt Engine Language.
npm install -g @offline-ai/ai-shell
# start llama-server first, before starting
#set -ngl 0 if no gpu
./llama-server -t 4 -c 4096 -ngl 33 -m ~/.local/share/ai/brain/phi-3-mini-4k-instruct.Q4_0.gguf
# Start ai shell
aishThis terminal shell is developed using artificial intelligence technology to enhance the user's command-line experience. With intelligent suggestions and analysis, it helps users execute tasks more efficiently.
- Intelligent Command Suggestions: Users can input terminal tasks in natural language, for example:
- Unpack download.tar.gz into the dest directory
- Convert video.avi to video.mp4 and resize to 720p
- Speed up the video 2x using ffmpeg and Remove audio track
- Start nginx server in Docker, mount current dir
 
- Command Safety Checks: Ensures that every command executed is safe.
- Error Analysis and Handling: Automatically analyzes and reports reasons when a command fails.
- Interactive Interface: Provides an intuitive terminal operation interface, making it easier for users to understand and operate.
- Top Output Window: All outputs are displayed here. This is the largest area.
- Progress Display Area: Occupies one line to show intermediate process progress.
- Preview Command Area (One Line, Two Columns):
- First Column: Execute command button
- Second Column: Command editing box for commands about to be executed
 
- Bottom Input Prompt Box: Located at the bottom of the terminal, users can directly input commands or command prompts for AI suggestions. This area occupies two lines, with the second line displaying auto-completed suggestions.
When users input in the input_prompt_edit, it will automatically suggest based on historical inputs. Pressing the tab key shows all matching historical records; continue pressing tab to switch between them, press Enter to confirm, and ESC to cancel. After submitting a command request, the AI will analyze the input:
- If the input is a command, the AI will analyze it. For commonly used commands, it will execute directly, skipping the analysis phase.
- If the input is a request, the AI will provide a command.
- Both the AI and the program (which uses the Posix Shell Parser to analyze commands) check the command to ensure safety and provide corresponding safety tips.
- Finally, the command is placed in the preview command box (preview_command_edit) for user confirmation (press Enter in the preview command box or click the execute command button).
During AI analysis, the progress is displayed in the middle progress_info area.
If errors occur during command execution, the AI performs error analysis to identify the cause.
The common commands to skip check.
- ls: List files in the current directory, including hidden files.
- cd: Change directory.
- clear: Clear the screen.
- cat: View file content.
- pwd: Show the current directory.
- mkdir: Create a directory.
- echo: Print text.
- less: View file content with support for scrolling up and down.
- man: View command help documentation.
- more: View file content.
- cp: Copy files.
- which: Find commands.
- head: View the beginning of a file.
- tail: View the end of a file.
- touch: Create a file.
- grep: Search file content.
Commands currently considered dangerous:
- rm: Delete files.
- rmdir: Delete directories.
- su: Switch users.
- sudo: Switch to superuser.
Currently unsupported:
- set: Set environment variables.
- export: Set environment variables.
- AI Terminal Shell
- Quick Start
- Install
- start llama-server first, before starting
- Start ai shell
- Features
- Terminal Screen Layout
- Usage Instructions
- Common Commands
- Commands
💻 Run ai-agent script file.
USAGE
  $ aish  [FILE] [DATA] [--json] [--config <value>] [--banner] [-u <value>] [--apiKey <value>] [-s
    <value>...] [--logLevelMaxLen <value> -l trace|debug|verbose|info|notice|warn|error|fatal|print|silence]
    [--histories <value>] [-n] [-k] [-t <value> -i] [--no-chats] [--no-inputs ] [-m] [-f <value>] [-d <value>] [-D
    <value>...] [-a <value>] [-b <value>] [-p <value>...] [-L <value>] [-A <value>] [-e true|false|line] [-C <value>]
    [-P <value>] [--consoleClear]
ARGUMENTS
  FILE  the script file path, or the json data when `-f` switch is set
  DATA  the json data which will be passed to the ai-agent script
FLAGS
  -A, --aiPreferredLanguage=<value>    the ISO 639-1 code for the AI preferred language to translate the user input
                                       automatically, eg, en, etc.
  -C, --streamEchoChars=<value>        [default: 80] stream echo max characters limit
  -D, --data=<value>...                the data which will be passed to the ai-agent script: key1=value1 key2=value2
  -L, --userPreferredLanguage=<value>  the ISO 639-1 code for the user preferred language to translate the AI result
                                       automatically, eg, en, zh, ja, ko, etc.
  -P, --provider=<value>               the LLM provider, defaults to llamacpp
  -a, --arguments=<value>              the json data which will be passed to the ai-agent script
  -b, --brainDir=<value>               the brains(LLM) directory
  -d, --dataFile=<value>               the data file which will be passed to the ai-agent script
  -e, --streamEcho=<option>            [default: line] stream echo mode
                                       <options: true|false|line>
  -f, --script=<value>                 the ai-agent script file name or id
  -i, --[no-]interactive               interactive mode
  -k, --backupChat                     whether to backup chat history before start, defaults to false
  -l, --logLevel=<option>              the log level
                                       <options: trace|debug|verbose|info|notice|warn|error|fatal|print|silence>
  -m, --[no-]stream                    stream mode, defaults to true
  -n, --[no-]newChat                   whether to start a new chat history, defaults to false in interactive mode, true
                                       in non-interactive
  -p, --promptDirs=<value>...          the prompts template directory
  -s, --agentDirs=<value>...           the search paths for ai-agent script file
  -t, --inputs=<value>                 the input histories folder for interactive mode to record
  -u, --api=<value>                    the api URL
      --apiKey=<value>                 the api key (optional)
      --[no-]banner                    show banner
      --config=<value>                 the config file
      --[no-]consoleClear              Whether console clear after stream echo output, default to true
      --histories=<value>              the chat histories folder to record
      --logLevelMaxLen=<value>         the max length of log item to display
      --no-chats                       disable chat histories, defaults to false
      --no-inputs                      disable input histories, defaults to false
GLOBAL FLAGS
  --json  Format output as json.
DESCRIPTION
  💻 Run ai-agent script file.
  Execute ai-agent script file and return result. with `-i` to interactive.
EXAMPLES
  $ aish  -f ./script.yaml "{content: 'hello world'}" -l info
  ┌────────────────────
  │[info]:Start Script: ...