Saisie semi-automatique à l'aide de GPT, en utilisant les données de l'historique des commandes atuin comme invite de saisie. Utilise des réponses en streaming pour obtenir la première réponse très rapidement. Le README est créé en quelques minutes, je le répare bientôt.
pip install --user tiktoken openai
devrait suffire, ou vous pouvez faire venv pour eux et pointer les configurations du shell vers le Python correct.
fzf pour sélectionner le résultat correct.
Ajoutez ceci à config.nu :
{
name: complete_with_gtp
modifier: CONTROL
keycode: Char_o
mode: [emacs vi_normal vi_insert]
event:[
{ send: executehostcommand,
cmd: "commandline -r (python /path/to/completer.py (commandline) | fzf --track --height 8)"
}
{ send: Enter }
]
}
Pour configurer.fish :
function gpt_completion
commandline (python /path/to/completer.py (commandline) | fzf --track --height 8)
end
bind ck "gpt_completion"
--atuin
: emplacement de la base de données historique d'atuin
--dunst
: utilisez dunstify pour notifier ce qui se passe (débogage principalement)
--model
: gpt-3.5-turbo ou gpt-4. GPT-4 me semble beaucoup plus lent pour cette utilisation.
--wezterm
: Ajouter le contenu de l'écran de Wezterm
Cela effectue quelques requêtes à partir de la base de données atuin, donc quelques index supplémentaires peuvent l'accélérer considérablement :
sqlite3 ~/.local/share/atuin/history.db
CREATE INDEX idx_history_cwd on history(cwd);
CREATE INDEX idx_history_session on history(session);
Si vous utilisez Wezterm, vous pouvez également ajouter le contenu actuel de l'écran de votre terminal à l'invite GPT, ce qui peut être utile s'il y a des messages d'erreur qui pourraient aider à générer la bonne ligne de commande. Dans ce cas, ajoutez -w pour la ligne de commande completer.py.
Kitty get-text est commenté dans le code car je n'ai pas pu le faire fonctionner pour le moment, je le corrigerai bientôt ou me ferai savoir si vous trouvez un moyen.
Cela a été publié à la hâte alors qu'Atuin faisait la une de HN. Le code est horrible, il y a un tas de fonctionnalités à moitié prêtes commentées et je ne l'ai pas trop testé. Peut nécessiter quelques correctifs pour bien fonctionner ailleurs. J'y jetterai un œil dans les prochains jours pour le nettoyer.