Autocompletar usando GPT, usando datos del historial de comandos de atuin como mensaje de entrada. Utiliza respuestas en tiempo real para obtener la primera respuesta muy rápidamente. El archivo README se crea en minutos; lo arreglaré pronto.
pip install --user tiktoken openai
debería ser suficiente, o puedes hacer venv para ellos y apuntar las configuraciones de shell al Python correcto.
fzf para seleccionar el resultado correcto.
Agregue esto a 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 }
]
}
Para configurar.fish:
function gpt_completion
commandline (python /path/to/completer.py (commandline) | fzf --track --height 8)
end
bind ck "gpt_completion"
--atuin
: ubicación de la base de datos histórica de atuin
--dunst
: usa dunstify para notificar lo que está sucediendo (depurar principalmente)
--model
: gpt-3.5-turbo o gpt-4. GPT-4 me parece mucho más lento para este uso.
--wezterm
: Añade contenido de pantalla de Wezterm
Esto realiza algunas consultas desde la base de datos atuin, por lo que unos cuantos índices más pueden acelerarlo bastante:
sqlite3 ~/.local/share/atuin/history.db
CREATE INDEX idx_history_cwd on history(cwd);
CREATE INDEX idx_history_session on history(session);
Si está utilizando Wezterm, también puede agregar el contenido de la pantalla de su terminal actual al indicador GPT, lo que podría ser útil si hay algunos mensajes de error que podrían ayudar a generar la línea de comando correcta. En ese caso, agregue -w para la línea de comando completer.py.
Kitty get-text está comentado en el código porque no pude hacerlo funcionar en este momento, lo arreglaré pronto o avísame si encuentras una manera.
Esto se publicó bastante apresuradamente cuando Atuin llegó a la portada de HN. El código es terrible, hay un montón de funciones a medio preparar comentadas y no lo he probado demasiado. Podría requerir algunas correcciones para que funcione bien en otros lugares. Echaré un vistazo en los próximos días para limpiarlo.