190 lines
5.8 KiB
Markdown
190 lines
5.8 KiB
Markdown
# Advanced Features
|
|
|
|
Edison offers several advanced features to enhance your productivity. This guide explores these capabilities in detail.
|
|
|
|
## Interactive Mode
|
|
|
|
Interactive mode provides a dedicated shell for continuous Edison interactions.
|
|
|
|
```mermaid
|
|
stateDiagram-v2
|
|
[*] --> Interactive: edison -i
|
|
Interactive --> Query: Enter query
|
|
Query --> CommandGeneration: Process query
|
|
CommandGeneration --> CommandDisplay: Display command
|
|
CommandDisplay --> ActionChoice: Prompt for action
|
|
ActionChoice --> Execution: y/Enter
|
|
ActionChoice --> Modification: m
|
|
ActionChoice --> Explanation: x
|
|
ActionChoice --> Clipboard: c
|
|
ActionChoice --> Query: n/skip
|
|
Execution --> Query: Command executed
|
|
Modification --> Execution: Execute modified command
|
|
Explanation --> ActionChoice: Show explanation
|
|
Clipboard --> ActionChoice: Copy to clipboard
|
|
Interactive --> [*]: exit/quit/!exit/Ctrl+D
|
|
```
|
|
|
|
To start interactive mode:
|
|
|
|
```bash
|
|
edison -i
|
|
```
|
|
|
|
In interactive mode, you can:
|
|
- Enter queries one after another without restarting Edison
|
|
- Access command history with up/down arrows
|
|
- Use tab completion for Edison commands
|
|
- Type `!help` to see available commands
|
|
- Type `!exit`, `exit`, `!quit`, `quit` or press `Ctrl+D` to exit
|
|
|
|
## Command Explanations
|
|
|
|
Get explanations for complex commands:
|
|
|
|
```bash
|
|
edison -e how to find duplicate files in a directory
|
|
```
|
|
|
|
The `-e` (or `--explain`) flag makes Edison provide an explanation of the generated command, breaking it down part by part. Edison uses terminal-friendly formatting to make explanations more readable:
|
|
|
|
- **Bold text** for emphasis and headers
|
|
- **Green text** for commands and file paths
|
|
- **Yellow text** for command parameters and options
|
|
- **Cyan text** for section beginnings and important concepts
|
|
- **Code formatting** for command snippets and examples
|
|
|
|
In interactive mode, use the `x` option when prompted for an action to get an explanation.
|
|
|
|
## Configuration
|
|
|
|
Edison can be configured through the `edison.yaml` file. This configuration file is located in the Edison installation directory.
|
|
|
|
Here's an example configuration:
|
|
|
|
```yaml
|
|
# OpenAI API settings
|
|
model: gpt-3.5-turbo
|
|
temperature: 0
|
|
max_tokens: 500
|
|
|
|
# Safety settings
|
|
safety: true
|
|
|
|
# Shell settings
|
|
shell: bash
|
|
```
|
|
|
|
Configuration options:
|
|
|
|
| Option | Description | Default |
|
|
|--------|-------------|---------|
|
|
| model | OpenAI model to use | gpt-3.5-turbo |
|
|
| temperature | Randomness of completions (0-1) | 0 |
|
|
| max_tokens | Maximum response tokens | 500 |
|
|
| safety | Require confirmation before execution | true |
|
|
| shell | Shell to use for command execution | system default |
|
|
| openai_api_key | OpenAI API key (optional) | - |
|
|
|
|
You can view your current configuration with:
|
|
|
|
```bash
|
|
edison -c
|
|
```
|
|
|
|
## Logging and Debugging
|
|
|
|
Edison provides verbose logging for troubleshooting:
|
|
|
|
```bash
|
|
edison -v list all processes
|
|
```
|
|
|
|
With the `-v` (or `--verbose`) flag, Edison will output detailed DEBUG level logs.
|
|
|
|
Log files are stored in the `edison/logs` directory and can be useful for debugging issues.
|
|
|
|
## Streaming Command Generation
|
|
|
|
Edison supports streaming command generation, which shows the command being generated in real-time:
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant User
|
|
participant Edison
|
|
participant API as OpenAI API
|
|
|
|
User->>Edison: Natural language query
|
|
Edison->>API: Request with streaming enabled
|
|
Note over Edison,API: Streaming connection established
|
|
API-->>Edison: Token: "f"
|
|
Edison->>User: Display: "f"
|
|
API-->>Edison: Token: "ind"
|
|
Edison->>User: Update: "find"
|
|
API-->>Edison: Token: " -name"
|
|
Edison->>User: Update: "find -name"
|
|
API-->>Edison: Token: " \"*.txt\""
|
|
Edison->>User: Update: "find -name \"*.txt\""
|
|
API-->>Edison: Token: " -type f"
|
|
Edison->>User: Final: "find -name \"*.txt\" -type f"
|
|
```
|
|
|
|
This feature:
|
|
- Provides immediate feedback during command generation
|
|
- Makes Edison feel more responsive, especially for complex commands
|
|
- Allows you to see the thought process in real-time
|
|
|
|
### Hiding the "Generating command:" Prefix
|
|
|
|
By default, Edison displays "Generating command:" while it's working. You can hide this prefix with the following configuration:
|
|
|
|
```yaml
|
|
# In edison.yaml
|
|
show_generating_prefix: false
|
|
```
|
|
|
|
## Direct Command Modification
|
|
|
|
Edison provides a direct command modification option that allows you to edit the generated command in-place:
|
|
|
|
1. When prompted for action, press `d` to directly modify the command
|
|
2. Edison will present an interactive editor with the current command
|
|
3. Edit the command as needed
|
|
4. Press Enter to execute the modified command
|
|
|
|
This feature is especially useful for:
|
|
- Making minor adjustments to generated commands
|
|
- Adding flags or options that weren't included
|
|
- Correcting parts of the command that may not be exactly what you want
|
|
|
|
## Performance Optimization
|
|
|
|
For faster response times:
|
|
|
|
1. Use a faster model like `gpt-3.5-turbo` (default) instead of larger models
|
|
2. Keep queries concise and specific
|
|
3. Use interactive mode to avoid startup overhead for multiple commands
|
|
4. Enable streaming mode for perceived performance improvements
|
|
|
|
## Safety Features
|
|
|
|
Edison includes built-in safety measures:
|
|
|
|
1. **Command confirmation**: By default, Edison asks for confirmation before executing commands
|
|
2. **Dangerous command detection**: Edison will warn about potentially dangerous operations
|
|
3. **Markdown filtering**: Commands containing markdown formatting are not executed directly
|
|
|
|
To disable the safety confirmation (not recommended):
|
|
|
|
```yaml
|
|
# In edison.yaml
|
|
safety: false
|
|
```
|
|
|
|
## Cross-Platform Considerations
|
|
|
|
Edison works on Linux, macOS, and Windows, but some commands might be platform-specific. For best results:
|
|
|
|
1. Mention your operating system in queries for system-specific commands
|
|
2. Use the `-e` flag to understand what a command does before executing it
|
|
3. Be aware that file paths use different separators (/ vs \\) on different platforms |