LinuxAgent - 基于LLM大模型的Linux运维助手

📌 简体中文
LinuxAgent是一个智能运维助手,通过接入DeepSeek API实现对Linux终端的自然语言控制,帮助用户更高效地进行系统运维工作。
更新日志
v2.0.5 (最新版本)
- 🔧 优化:移除了Windows特有的代码,提高在Linux系统下的兼容性
- 🚀 改进:简化流式输出逻辑,消除滚动功能带来的终端状态问题
- ✨ 增强:修复了AI回答完成后无法继续输入的bug
- 🛠️ 重构:优化代码结构,删除无用的平台检测逻辑
- 🔄 增强:改进了AgentMode和ChatMode的模式切换功能,提供更流畅的交互体验
v2.0.4
- 🚀 增加了流式输出功能,使AI回答更流畅
- 🎨 新增自定义主题功能,支持多种界面风格切换
- 📚 添加了交互式教程,帮助新用户快速上手
- 🔄 优化了多轮对话体验
v2.0.3
- 🔧 添加自动模式与手动模式切换功能
- 💬 增强了自然语言理解能力
- 🛡️ 增强安全检查机制
版本特性对比
特性 | v1.4.1 | v2.0.3 | v2.0.4 | v2.0.5 (最新) |
---|---|---|---|---|
自然语言理解 | ✓ | ✓ | ✓ | ✓ |
智能命令执行 | ✗ | ✓ | ✓ | ✓ |
安全控制机制 | ✓ | ✓ | ✓ | ✓ |
多轮对话支持 | ✗ | ✓ | ✓+ | ✓+ |
自动/手动模式切换 | ✗ | ✓ | ✓ | ✓ |
流式输出回答 | ✗ | ✗ | ✓ | ✓ |
自定义主题 | ✗ | ✗ | ✓ | ✓ |
交互式教程 | ✗ | ✗ | ✓ | ✓ |
Linux专属优化 | ✗ | ✗ | ✗ | ✓ |
输入阻塞问题修复 | ✗ | ✗ | ✗ | ✓ |
终端状态恢复 | ✗ | ✗ | ✗ | ✓ |
LinuxAgent 功能详解
LinuxAgent是一个基于LLM大模型的Linux运维助手,通过自然语言处理技术实现对Linux终端的智能控制,帮助用户更高效地进行系统运维工作。
核心功能
1. 自然语言理解
LinuxAgent能够理解用户的自然语言指令,无需记忆复杂的Linux命令语法。用户只需用日常语言描述需求,系统会自动解析意图。
- 支持多种自然语言查询形式
- 能够理解复杂的多步骤请求
- 根据上下文自动补充命令参数
2. 智能命令执行
将用户的自然语言意图精准转换为Linux命令并安全执行。
3. 安全控制机制
内置多层安全检查机制,防止执行危险操作。
- 命令白名单和黑名单过滤
- 风险命令执行前的二次确认
- 敏感操作权限检查
- 系统资源使用限制
4. 多轮对话支持
支持上下文相关的多轮对话,系统会记住之前的交互内容,使得连续操作更加自然流畅。
- 保持对话上下文记忆
- 支持指代消解(“它”、"这个文件"等指代词)
- 根据历史交互调整响应策略
5. 模式切换功能
提供多种工作模式,满足不同场景需求。
- 自动模式:根据输入内容自动判断是执行命令还是进行聊天
- 聊天模式:专注于问答交互,不自动执行命令
- 命令执行模式:专注于命令生成和执行
6. 流式输出功能
采用流式输出技术,使AI回答更加流畅自然。
- 实时展示AI思考和生成过程
- 长文本分段流式输出,避免卡顿
- 避开终端30行临界点,防止屏幕冻结
7. 自定义主题功能
支持多种界面风格切换,个性化视觉体验。
- 默认主题:专业清晰的界面风格
- 暗色主题:减轻眼睛疲劳,适合夜间使用
- 亮色主题:高对比度,适合明亮环境
- 复古主题:怀旧终端风格
- 海洋主题:蓝色调柔和界面
8. 交互式教程
内置交互式教程,帮助新用户快速上手。
- 基础操作引导
- 常用功能演示
- 进阶技巧教学
- 实时反馈和指导
9. Linux专属优化
专为Linux环境优化设计,解决常见问题。
- 解决终端状态和键盘输入问题
- 移除对Windows相关依赖
- 针对Linux环境的性能优化
- 与常见Linux发行版的兼容适配
特色功能
1. 智能命令分析
执行命令后,系统会自动分析结果并提供易于理解的解释。
- 命令输出结果解读
- 错误和异常情况分析
- 数据可视化和格式化展示
- 提供进一步操作建议
2. 历史记录管理
完整记录所有操作历史,方便追踪和复用。
- 会话历史浏览和搜索
- 历史命令重新执行
- 支持导出历史记录(Markdown、文本、脚本)
- 历史会话统计分析
3. 复杂命令拆分
对于复杂的多步骤命令,系统可以将其拆分为多个子命令分步执行。
- 多命令序列的智能拆分
- 子命令执行状态监控
- 出错时的自动中断和恢复建议
- 执行结果的整合展示
4. 交互式命令支持
智能识别并支持交互式命令的执行。
- 文本编辑器:vim, nano, emacs等
- 系统监控工具:top, htop等
- 数据库客户端:mysql, psql等
- 终端多路复用器:screen, tmux等
5. API密钥管理
支持多种方式设置和管理API密钥。
- 配置文件设置
- 命令行参数传入
- 运行时动态设置
- 安全的密钥存储机制
6. 错误分析与修复建议
当命令执行失败时,系统会分析错误原因并提供修复建议。
- 错误日志智能解析
- 常见问题识别与解决方案
- 提供修复命令建议
- 引导用户进行故障排除
7. 数据导出功能
支持多种格式导出会话内容。
- Markdown格式:适合文档记录
- 文本格式:纯文本日志
- 脚本格式:提取可执行命令形成脚本
8. 性能监控与优化
内置性能监控机制,确保系统运行高效。
- API调用性能跟踪
- 命令执行时间统计
- 资源使用情况监控
- 自动调整参数优化性能
常用场景
1. 系统信息查询
快速获取系统各项指标和状态信息。
示例命令:
- “显示系统基本信息”
- “查看当前系统负载情况”
- “检查系统已运行时间和登录用户”
2. 文件操作管理
高效执行各类文件操作任务。
示例命令:
- “查找/var目录下最近7天修改的大于100MB的文件”
- “找出/home目录下权限为777的文件并列出”
- “将/tmp目录下30天前的日志文件压缩”
3. 服务管理控制
便捷管理系统服务。
示例命令:
- “查看所有正在运行的服务”
- “检查nginx服务状态并确保它在启动时自动运行”
- “重启MySQL服务并查看最近的错误日志”
4. 网络诊断分析
全面的网络状态监控和分析。
示例命令:
- “检查网络连接状态”
- “显示所有开放的网络端口和对应的进程”
- “测试到百度和谷歌的网络连接”
5. 高级系统维护
执行复杂的系统维护任务。
示例命令:
- “查找占用CPU最高的5个进程,并显示它们的详细信息”
- “备份MySQL数据库,压缩备份文件,然后移动到/backup目录”
- “创建一个cron任务,每天凌晨3点自动清理/tmp目录下的临时文件”
内置命令
LinuxAgent提供了一系列内置命令用于控制和配置系统。
基本命令
help
:显示帮助信息exit
/quit
:退出程序clear
:清屏history
:显示历史记录config
:显示当前配置stats
:显示使用统计analytics
/dashboard
:显示分析仪表板
会话管理
chat history
:显示对话历史clear chat
:清除对话历史save chat
:保存对话历史export chat [format] [filename]
:导出对话内容
设置管理
settings
/set
:进入设置菜单set api_key YOUR_API_KEY
:设置API密钥theme
:自定义主题设置language [lang_code]
:设置界面语言
模式切换
mode
:显示当前模式chat mode
:切换到聊天模式agent mode
:切换到命令执行模式auto mode
:切换到自动模式
学习辅助
tutorial
:启动交互式教程
工作流程
LinuxAgent的整体工作流程如下:
架构设计
LinuxAgent采用模块化设计,由以下核心组件构成:
- 用户界面模块:处理用户输入和结果展示
- LLM接口模块:负责与大模型API的通信
- 命令执行模块:安全执行Linux命令
- 分析引擎:分析命令执行结果
- 安全控制模块:执行安全策略和保护措施
- 历史记录管理:保存和管理交互历史
- 配置管理:处理系统设置和参数
系统要求
- Rocky Linux 9.4 或其他兼容系统
- Python 3.8+
- 网络连接(用于访问DeepSeek API)
- DeepSeek API密钥
重要提示: 从版本2.0.5起,LinuxAgent已专门针对Linux环境进行优化,移除了Windows相关代码,解决了终端状态和键盘输入问题。如果您在之前版本遇到过终端输入阻塞或"msvcrt"模块相关错误,强烈建议升级到最新版本。
安装说明
- 克隆代码库
git clone https://gitcode.com/qq_69174109/LinuxAgent.git
cd LinuxAgent
- 安装依赖
pip install -r requirements.txt
- 配置DeepSeek API密钥
cp config.yaml.example config.yaml
# 编辑config.yaml,填入DeepSeek API密钥
详细使用指南
获取DeepSeek API密钥
- 访问DeepSeek官方网站(https://deepseek.com)注册账号
- 在个人设置或API页面申请API密钥
- 复制获得的API密钥
配置系统
- 编辑
config.yaml
文件:
vi config.yaml
- 将您的API密钥填入配置文件的相应位置:
api:
api_key: "your_deepseek_api_key" # 将此处替换为真实API密钥
-
其他配置项说明:
base_url
: DeepSeek API的基础URL,默认不需要修改model
: 使用的模型名称,默认使用"deepseek-chat"timeout
: API请求超时时间,默认30秒
-
安全设置:
confirm_dangerous_commands
: 是否确认危险命令(建议保持为true)blocked_commands
: 完全禁止执行的命令列表confirm_patterns
: 需要确认才能执行的命令模式
启动运行
- 直接运行主程序:
python linuxagent.py
- 使用调试模式运行(显示更多日志信息):
python linuxagent.py -d
- 指定配置文件路径:
python linuxagent.py -c /path/to/your/config.yaml
日常使用
-
基本交互方式:
- 启动程序后,您会看到提示符
[LinuxAgent] >
- 直接输入自然语言指令,例如:“帮我查看系统内存使用情况”
- 系统会调用DeepSeek API分析您的指令并生成对应的Linux命令
- 显示命令并执行,然后返回结果分析
- 启动程序后,您会看到提示符
-
内置命令:
help
: 显示帮助信息exit
或quit
: 退出程序clear
: 清屏history
: 显示历史记录config
: 显示当前配置
-
常用示例:
系统信息类:
- “显示系统基本信息”
- “查看当前系统负载情况”
- “检查系统已运行时间和登录用户”
文件操作类:
- “查找/var目录下最近7天修改的大于100MB的文件”
- “找出/home目录下权限为777的文件并列出”
- “将/tmp目录下30天前的日志文件压缩”
服务管理类:
- “查看所有正在运行的服务”
- “检查nginx服务状态并确保它在启动时自动运行”
- “重启MySQL服务并查看最近的错误日志”
网络操作类:
- “检查网络连接状态”
- “显示所有开放的网络端口和对应的进程”
- “测试到百度和谷歌的网络连接”
-
高级用法:
-
管道和复杂命令:
“查找占用CPU最高的5个进程,并显示它们的详细信息” -
多步骤任务:
“备份MySQL数据库,压缩备份文件,然后移动到/backup目录” -
定期任务设置:
“创建一个cron任务,每天凌晨3点自动清理/tmp目录下的临时文件”
-
-
设置功能:
-
主题设置:
[LinuxAgent] > theme
可选择不同的界面主题,包括默认、暗色、亮色、复古和海洋等主题风格。
-
语言设置:
[LinuxAgent] > language
支持切换中文、英文等多种语言界面。
-
模式切换:
[LinuxAgent] > mode [LinuxAgent] > chat mode [LinuxAgent] > agent mode [LinuxAgent] > auto mode
在聊天模式、命令执行模式和自动模式之间切换。
-
API密钥设置:
[LinuxAgent] > set api_key YOUR_API_KEY
在不修改配置文件的情况下,直接在程序内设置DeepSeek API密钥。
-
教程启动:
[LinuxAgent] > tutorial
启动交互式教程,学习如何使用LinuxAgent。
-
会话导出:
[LinuxAgent] > export chat
将当前会话内容导出为文档或脚本。
-
安全注意事项
-
命令确认机制:
- 对于潜在危险的命令(如删除文件、修改系统配置等),系统会要求确认
- 确认提示格式为:“此命令可能有风险: [风险原因]。确认执行? [y/N]”
- 输入y或yes确认执行,其他输入会取消执行
-
命令审查建议:
- 即使LinuxAgent有安全机制,仍建议您在执行前仔细审查生成的命令
- 特别是在生产环境中使用时,确保理解命令的作用和可能的影响
-
权限控制:
- LinuxAgent继承您当前用户的权限执行命令
- 建议使用普通用户运行,需要特权时手动确认sudo操作
疑难解答
-
API连接问题:
- 确认网络连接正常
- 验证API密钥正确且未过期
- 检查base_url配置是否正确
-
命令执行失败:
- 查看错误信息和建议修复方法
- 确认系统中已安装相关命令所需的程序
- 检查用户权限是否足够
-
性能问题:
- 如果响应缓慢,可以调整timeout参数
- 对于复杂任务,考虑拆分为多个简单指令
-
日志信息:
- 日志文件默认保存在
~/.linuxagent.log
- 使用
-d
参数启动可查看更详细的调试信息
- 日志文件默认保存在
联系方式
- 作者QQ:3068504755
- QQ群:281392454
许可证
MIT License
特性功能
- 🚀 使用自然语言描述需求,自动转换为Linux命令
- 🔍 命令执行前的安全检查和风险提示
- 📊 命令执行结果的智能分析和解释
- 🔄 多命令序列的拆分执行和状态跟踪
- 📝 支持交互式命令的智能识别与执行(如vim、nano等编辑器)
- ⏱️ 长时间运行命令的智能超时管理
- 🎨 美观的终端用户界面
使用方法
基本用法
# 启动LinuxAgent
./linuxagent.py
输入自然语言命令,LinuxAgent会自动转换为相应的Linux命令并执行:
[LinuxAgent] > 查找最近7天内修改过的大于100MB的日志文件
特殊命令
help
- 显示帮助信息exit
或quit
- 退出程序clear
- 清屏history
- 显示命令历史config
- 显示当前配置
交互式命令
LinuxAgent支持直接使用交互式命令或自然语言描述:
# 直接使用命令
[LinuxAgent] > vim /etc/nginx/nginx.conf
# 使用自然语言描述
[LinuxAgent] > 使用nano编辑apache配置文件
[LinuxAgent] > 编辑/etc/fstab文件用vim
[LinuxAgent] > 用htop查看系统资源占用
支持的交互式命令包括:
- 文本编辑器:vim, vi, nano, emacs
- 命令行工具:top, htop, less, more
- 数据库客户端:mysql, psql, sqlite3
- Shell程序:bash, sh, zsh
- 网络工具:ssh, telnet, ftp, sftp
高级功能
命令拆分执行
对于复杂的多步骤命令,LinuxAgent可以将其拆分为多个步骤执行,提供更好的可控性:
[LinuxAgent] > 更新系统,安装nginx,并设置开机启动
系统会询问是否要将这个复杂命令拆分为多个步骤执行。
交互式编辑
可以通过edit
命令直接编辑文件:
[LinuxAgent] > edit /etc/hosts vim
或者使用自然语言描述:
[LinuxAgent] > 使用nano编辑/etc/resolv.conf