Preenchimento automático usando GPT, usando dados do histórico de comandos do atuin como prompt de entrada. Usa respostas de streaming para obter a primeira resposta muito rapidamente O README é montado em minutos, eu preencho e corrigi-lo em breve.
pip install --user tiktoken openai
deve ser suficiente, ou você pode fazer venv para eles e apontar as configurações do shell para o Python correto.
fzf para selecionar o resultado correto.
Adicione isto ao 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
: localização do banco de dados de histórico do atuin
--dunst
: Use dunstify para notificar o que está acontecendo (depuração principalmente)
--model
: gpt-3.5-turbo ou gpt-4. GPT-4 parece muito mais lento para esse uso.
--wezterm
: Anexar conteúdo da tela do Wezterm
Isso faz algumas consultas no banco de dados atuin, então mais alguns índices podem acelerar bastante:
sqlite3 ~/.local/share/atuin/history.db
CREATE INDEX idx_history_cwd on history(cwd);
CREATE INDEX idx_history_session on history(session);
Se estiver usando o Wezterm, você também pode adicionar o conteúdo atual da tela do terminal ao prompt do GPT, o que pode ser útil se houver algumas mensagens de erro que possam ajudar a gerar a linha de comando correta. Nesse caso, adicione -w para a linha de comando completer.py.
Kitty get-text está comentado no código porque não consegui fazê-lo funcionar agora, vou consertar em breve ou me avisar se você encontrar uma maneira.
Isso foi postado às pressas quando Atuin chegou à primeira página do HN. O código é terrível, há um monte de recursos meio prontos comentados e não testei muito. Pode exigir algumas correções para funcionar bem em outro lugar. Darei uma olhada nos próximos dias para limpá-lo.