Crazy! Added support for ALT+\
This commit is contained in:
135
README.md
135
README.md
@@ -1,7 +1,7 @@
|
||||
```markdown
|
||||
# finish.sh
|
||||
# finish
|
||||
|
||||
AI-powered shell completion that runs 100 % on your machine.
|
||||
AI-powered shell completion that runs 100% on your machine.
|
||||
|
||||
One command and your terminal learns what you type next.
|
||||
|
||||
@@ -12,65 +12,56 @@ curl -sSL https://git.appmodel.nl/tour/finish/raw/branch/main/docs/install.sh |
|
||||
source ~/.bashrc # or ~/.zshrc
|
||||
```
|
||||
|
||||
Press `Tab` twice on any partial command and finish.sh suggests the rest—no cloud, no data leak, no latency.
|
||||
Press **Alt+\\** after typing any command to get intelligent completions—no cloud, no data leak, instant results.
|
||||
|
||||
## How it works
|
||||
|
||||
1. Captures your current directory, recent history, env vars.
|
||||
2. Builds a concise prompt for a local LLM (LM-Studio, Ollama, or any OpenAI-compatible endpoint).
|
||||
3. Returns ranked completions in <200 ms, cached for instant replay.
|
||||
1. Captures your current directory, recent history, env vars, and available tools
|
||||
2. Analyzes your intent and builds a context-aware prompt
|
||||
3. Queries your local LLM (LM Studio, Ollama, or any OpenAI-compatible endpoint)
|
||||
4. Returns 2-5 ranked completions with an interactive picker
|
||||
5. Results are cached for instant replay
|
||||
|
||||
## Use
|
||||
## Usage
|
||||
|
||||
Type a command, then press **Alt+\\**:
|
||||
|
||||
```bash
|
||||
docker <Tab><Tab> # → docker run -it --rm ubuntu bash
|
||||
git commit <Tab><Tab> # → git commit -m "feat: add finish.sh"
|
||||
# large files <Tab><Tab> # → find . -type f -size +100M
|
||||
# Natural language commands
|
||||
show gpu status # → nvidia-smi
|
||||
resolve title of website google.com # → curl -s https://google.com | grep -oP '<title>\K[^<]+'
|
||||
make file about dogs # → echo "About Dogs" > dogs.md
|
||||
|
||||
# Partial commands
|
||||
git commit # → git commit -m "..."
|
||||
docker run # → docker run -it --rm ubuntu bash
|
||||
find large files # → find . -type f -size +100M
|
||||
```
|
||||
|
||||
Dry-run mode:
|
||||
|
||||
```bash
|
||||
finish --dry-run "tar czf backup.tar.gz"
|
||||
```
|
||||
Navigate with ↑↓, press Enter to accept, Esc to cancel.
|
||||
|
||||
## Configure
|
||||
|
||||
```bash
|
||||
finish config set endpoint http://plato.lan:11434/v1/chat/completions
|
||||
finish config set model codellama:13b
|
||||
finish model # interactive picker
|
||||
```
|
||||
|
||||
## Providers
|
||||
|
||||
| Provider | Auth | URL | Notes |
|
||||
|-----------|------|-----------------------------|---------|
|
||||
| LM-Studio | none | `http://localhost:1234/v1` | default |
|
||||
| Ollama | none | `http://localhost:11434` | |
|
||||
| OpenAI | key | `https://api.openai.com/v1` | |
|
||||
|
||||
Add others by editing `~/.finish/config`.
|
||||
|
||||
## Commands
|
||||
View current configuration:
|
||||
|
||||
```bash
|
||||
finish install # hook into shell
|
||||
finish remove # uninstall
|
||||
finish clear # wipe cache & logs
|
||||
finish usage # tokens & cost
|
||||
finish config
|
||||
```
|
||||
|
||||
## Requirements
|
||||
Edit configuration file:
|
||||
|
||||
Bash ≥4 or Zsh ≥5, curl, jq, bc.
|
||||
Optional: bash-completion.
|
||||
```bash
|
||||
nano ~/.finish/finish.json
|
||||
```
|
||||
|
||||
## Configuration Examples
|
||||
|
||||
### Local Ollama
|
||||
```json
|
||||
{
|
||||
"provider": "lmstudio",
|
||||
"model": "darkidol-llama-3.1-8b-instruct-1.3-uncensored_gguf:2",
|
||||
"endpoint": "http://plato.lan:1234/v1/chat/completions",
|
||||
"provider": "ollama",
|
||||
"model": "llama3:latest",
|
||||
"endpoint": "http://localhost:11434/api/chat",
|
||||
"temperature": 0.0,
|
||||
"api_prompt_cost": 0.0,
|
||||
"api_completion_cost": 0.0,
|
||||
@@ -79,12 +70,14 @@ Optional: bash-completion.
|
||||
"cache_size": 100
|
||||
}
|
||||
```
|
||||
|
||||
### LM Studio
|
||||
```json
|
||||
{
|
||||
"provider": "ollama",
|
||||
"model": "llama3:latest",
|
||||
"endpoint": "http://localhost:11434/api/chat",
|
||||
"temperature": 0.2,
|
||||
"provider": "lmstudio",
|
||||
"model": "dolphin3.0-llama3.1-8b@q4_k_m",
|
||||
"endpoint": "http://localhost:1234/v1/chat/completions",
|
||||
"temperature": 0.0,
|
||||
"api_prompt_cost": 0.0,
|
||||
"api_completion_cost": 0.0,
|
||||
"max_history_commands": 20,
|
||||
@@ -92,6 +85,56 @@ Optional: bash-completion.
|
||||
"cache_size": 100
|
||||
}
|
||||
```
|
||||
|
||||
### OpenAI (or compatible API)
|
||||
```json
|
||||
{
|
||||
"provider": "lmstudio",
|
||||
"model": "gpt-4",
|
||||
"endpoint": "https://api.openai.com/v1/chat/completions",
|
||||
"api_key": "sk-...",
|
||||
"temperature": 0.0,
|
||||
"api_prompt_cost": 0.03,
|
||||
"api_completion_cost": 0.06,
|
||||
"max_history_commands": 20,
|
||||
"max_recent_files": 20,
|
||||
"cache_size": 100
|
||||
}
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.7+
|
||||
- Bash ≥4 or Zsh ≥5
|
||||
- A local LLM running (Ollama, LM Studio, etc.) or API access
|
||||
|
||||
Python dependencies (installed automatically):
|
||||
- httpx
|
||||
- prompt_toolkit
|
||||
- rich
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
finish install # Set up Alt+\ keybinding
|
||||
finish config # Show current configuration
|
||||
finish command "text" # Test completions manually
|
||||
```
|
||||
|
||||
## Advanced
|
||||
|
||||
### Debug mode
|
||||
```bash
|
||||
export FINISH_DEBUG=1
|
||||
finish command "your command here"
|
||||
cat ~/.finish/finish.log
|
||||
```
|
||||
|
||||
### Clear cache
|
||||
```bash
|
||||
rm -rf ~/.finish/cache/*.json
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
BSD 2-Clause.
|
||||
|
||||
Reference in New Issue
Block a user