LLMShellAutoComplete
1.0.0
使用 GPT 自动完成,使用 atuin 命令历史记录中的数据作为输入提示。使用流式响应来快速获得第一个回复 自述文件在几分钟内就完成了,我很快就会修复它。
pip install --user tiktoken openai
应该足够了,或者您可以为它们执行 venv 并将 shell 配置指向正确的 Python。
fzf 用于选择正确的结果。
将其添加到 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 }
]
}
到config.fish:
function gpt_completion
commandline (python /path/to/completer.py (commandline) | fzf --track --height 8)
end
bind ck "gpt_completion"
--atuin
: atuin 历史数据库位置
--dunst
:使用 dunstify 通知发生的情况(主要是调试)
--model
:gpt-3.5-turbo 或 gpt-4。对于我来说,GPT-4 对于这种用途感觉要慢得多。
--wezterm
:附加来自 Wezterm 的屏幕内容
这会从 atuin 数据库进行一些查询,因此更多的索引可以大大加快速度:
sqlite3 ~/.local/share/atuin/history.db
CREATE INDEX idx_history_cwd on history(cwd);
CREATE INDEX idx_history_session on history(session);
如果您使用的是 Wezterm,您还可以将当前的终端屏幕内容添加到 GPT 提示符中,如果存在一些有助于生成正确命令行的错误消息,这可能会很有用。在这种情况下,为completer.py 命令行添加 -w 。
Kitty get-text 在代码中被注释,因为我现在无法让它工作,我会尽快修复它,或者如果您找到方法请告诉我。
当 Atuin 登上 HN 头版时,这篇文章是非常仓促地发布的。代码很糟糕,有一堆半成品的功能被注释掉了,我还没有对其进行太多测试。可能需要一些修复才能在其他地方正常工作。过几天我会去看一下,把它清理干净。