项目介绍:LLMShellAutoComplete
LLMShellAutoComplete 是一个使用 GPT 技术的命令行自动完成工具,该工具利用 atuin 的命令历史记录作为输入提示。这个项目旨在通过流式响应快速生成第一个回复,提高使用命令行时的工作效率。
功能概览
LLMShellAutoComplete 主要功能包括:
- 使用 GPT 模型(如 gpt-3.5-turbo 或 gpt-4)来提供命令行自动完成提示。
- 集成 atuin 的命令历史数据库,利用历史记录作为建议的依据。
- 支持通过 fzf 工具选择合适的自动完成结果。
- 提供选项在终端中添加当前屏幕内容,以丰富提示输入。
安装与配置
安装涉及一些基础的 Python 包:
pip install --user tiktoken openai
建议在虚拟环境中进行以上安装,并配置 shell 来指向正确的 Python 环境。
除 Python 包外,还需要安装 fzf 用于结果选择。
配置方法
项目支持不同的 shell,如 Nushell 和 Fish,下面是各自的配置方法:
-
Nushell 配置
在
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 } ] }
-
Fish 配置
在
config.fish
中添加如下函数:function gpt_completion commandline (python /path/to/completer.py (commandline) | fzf --track --height 8) end bind \ck "gpt_completion"
参数设置
LLMShellAutoComplete 支持多个参数以提升使用体验:
--atuin
: 指定 atuin 历史数据库的位置。--dunst
: 使用 dunstify 进行通知(主要用于调试)。--model
: 选择 GPT 模型(如 gpt-3.5-turbo 或 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
。
项目代码目前还不是很优雅,开发者会在未来对其进行完善和调试以提高其稳定性和兼容性。