运维利器升级:WezTerm集成AI插件,打造高效运维终端
随着大语言模型的飞速发展,开源模型在编码能力上已经逐步逼近GPT-4等顶尖模型,相关API调用的成本也在迅速下降。自动编程工具如雨后春笋般涌现,如cursor、vscode cline、aider等,就连nvim也有avante这样的开源插件支持自动编程。如今,写代码几乎变成了写需求。
然而,本文并非讨论如何用大模型写代码,而是为运维人员提供一个便捷的AI助手,帮助他们在工作过程中更高效地利用大模型,无需频繁复制粘贴或打开网页查询命令。
灵感来源与现状
受aider等工具的启发,我们思考:如果能在命令行直接与大模型交互,使用自然语言生成各种命令,是否能显著提高运维人员的工作效率?遗憾的是,已有公司如warp.dev实现了这一功能,但收费且访问速度受限。于是,我们找到了一个用Rust编写的开源命令行工具——AIChat。
AIChat简介
AIChat是一个功能强大的命令行工具,集成了多种大语言模型(LLM)功能,包括Shell助手、CMD和REPL模式、RAG(检索增强生成)、AI工具与代理等。它支持多平台,安装方便,一个二进制文件即可使用,并且可以与bash集成,通过自然语言生成各种命令。
通过在bashrc中嵌入以下命令,可以绑定快捷键实现自然语言转命令:
_aichat_bash() {
if [[ -n "$READLINE_LINE" ]]; then
READLINE_LINE=$(aichat -e "$READLINE_LINE")
READLINE_POINT=${#READLINE_LINE}
fi
}
bind -x '"\ee": _aichat_bash'
WezTerm集成AIChat
然而,运维人员经常需要在服务器上操作各种指令。难道要在所有服务器上都安装AIChat工具?显然,这样做太过繁琐。于是,我们引入了WezTerm这个跨平台终端,结合AIChat工具,实现在终端上的AI助理功能。
WezTerm简介:
WezTerm是一个跨平台的终端工具,可以通过Lua进行各种配置,包括主题、快捷键、tmux配置等。接下来,我们将利用WezTerm的Lua脚本特性,将AIChat与WezTerm集成在一起,实现跨终端、跨服务器的AI助手功能。
安装与配置:
-
下载AIChat:
- 前往AIChat的GitHub页面下载适合你操作系统的AIChat版本。
-
配置AIChat:
- 启动AIChat命令行,配置大模型。例如,使用deepseek-chat,前往deepseek平台申请API密钥,并根据AIChat的向导生成相关配置。
# $HOME/.config/aichat/config.yaml model: deepseek clients: - type: openai-compatible name: deepseek api_base: https://api.deepseek.com api_key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxx
-
安装WezTerm:
- 前往WezTerm官网查看详细的安装方法。
- 安装后,在本地目录创建WezTerm的配置文件
$HOME/.config/wezterm/wezterm.lua
。
-
配置WezTerm:
local wezterm = require("wezterm") local launch_menu = {} if wezterm.target_triple == "x86_64-unknown-linux-gnu" then table.insert( launch_menu, { label = "ai-chat", args = { "aichat"} } ) end return { launch_menu = launch_menu, keys = { { key = 'z', mods = 'ALT', action = wezterm.action.ShowLauncher }, { key = "c", mods = "ALT", action = wezterm.action_callback(function(window, pane) local tab = pane:tab() local panes = tab:panes_with_info() if #panes == 1 then pane:split({ direction = "Right", size = 0.4, args = { 'aichat' } }) elseif not panes[1].is_zoomed then panes[1].pane:activate() tab:set_zoomed(true) elseif panes[1].is_zoomed then tab:set_zoomed(false) panes[2].pane:activate() end end), }, { key = "x", mods = "ALT", action = wezterm.action_callback(function(window, pane) local dims = pane:get_dimensions() local txt = pane:get_text_from_region(0, dims.scrollback_top, 0, dims.scrollback_rows) local last_line = txt:match("[^\r\n]+$") local selection = window:get_selection_text_for_pane(pane) selection = selection or last_line window:perform_action(wezterm.action.ClearSelection, pane) local success, stdout, stderr = wezterm.run_child_process({"aichat", "-e", selection}) if success then pane:paste(stdout) else wezterm.log_error("Error running bash command: " .. stderr) end end), }, }, font_size = 18.0, color_scheme = "Catppuccin Frappe", }
使用方法
- 打开WezTerm,通过快捷键
ALT+c
迅速调出AI对话窗口,可以直接与AI交互。 - 通过WezTerm的复制粘贴快捷键,可以快速将终端窗口中的文字粘贴到AIChat对话中进行交流。
- 通过快捷键
ALT+x
直接将命令行下的自然语言生成bash命令。
通过WezTerm与AIChat的集成,运维人员可以在终端中高效利用AI助手,提升工作效率。