Automatische Vervollständigung mit GPT unter Verwendung von Daten aus dem Atuin-Befehlsverlauf als Eingabeaufforderung. Verwendet Streaming-Antworten, um sehr schnell die erste Antwort zu erhalten. Die README-Datei ist in wenigen Minuten zusammengestellt, ich werde sie bald reparieren.
pip install --user tiktoken openai
sollte ausreichen, oder Sie können venv für sie ausführen und die Shell-Konfigurationen auf das richtige Python verweisen.
fzf für die Auswahl des richtigen Ergebnisses.
Fügen Sie dies zu config.nu hinzu:
{
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 }
]
}
Zu config.fish:
function gpt_completion
commandline (python /path/to/completer.py (commandline) | fzf --track --height 8)
end
bind ck "gpt_completion"
--atuin
: Speicherort der Atuin-Verlaufsdatenbank
--dunst
: Verwenden Sie dunstify, um zu benachrichtigen, was passiert (hauptsächlich Debuggen)
--model
: gpt-3.5-turbo oder gpt-4. GPT-4 fühlt sich für mich bei dieser Verwendung viel langsamer an.
--wezterm
: Bildschirminhalt von Wezterm anhängen
Dadurch werden einige Abfragen aus der Atuin-Datenbank durchgeführt, sodass einige weitere Indizes den Vorgang erheblich beschleunigen können:
sqlite3 ~/.local/share/atuin/history.db
CREATE INDEX idx_history_cwd on history(cwd);
CREATE INDEX idx_history_session on history(session);
Wenn Sie Wezterm verwenden, können Sie der GPT-Eingabeaufforderung auch den Inhalt Ihres aktuellen Terminalbildschirms hinzufügen. Dies kann hilfreich sein, wenn Fehlermeldungen angezeigt werden, die bei der Generierung der richtigen Befehlszeile helfen könnten. Fügen Sie in diesem Fall -w für die Befehlszeile von Completer.py hinzu.
Kitty get-text ist im Code kommentiert, da ich es momentan nicht zum Laufen bringen konnte. Ich werde es bald beheben oder mich informieren, wenn Sie einen Weg finden.
Dies wurde ziemlich hastig veröffentlicht, als Atuin auf die Titelseite von HN gelangte. Der Code ist schrecklich, es gibt eine Menge halbfertiger Funktionen, die auskommentiert sind, und ich habe ihn nicht allzu oft getestet. Möglicherweise sind einige Korrekturen erforderlich, damit es anderswo gut funktioniert. Ich werde in den nächsten Tagen einen Blick darauf werfen, um es zu bereinigen.