做了个工具,用自然语言和服务器聊天排查问题

1 天前
 hmmmbiubiubiu

一个完全由 AI 编写的开源运维工具,支持中文交互,多模型自动切换

写在前面

作为运维工程师,你是否遇到过这些场景:

现在,你可以直接问 AI:"服务器负载很高,帮我排查原因"

项目简介

AI Shell Assistant (aiassist) 是一个基于大语言模型的智能终端工具,通过自然语言交互为运维人员提供诊断分析、方案建议和命令执行指导。

GitHub: https://github.com/llaoj/aiassist

核心特点

自然语言交互 - 用人话提问,AI 给出专业诊断
智能命令建议 - 自动分析并给出最合适的 Shell 命令
连续对话分析 - 自动传递上一条命令的输出,支持最多 10 层递归诊断
管道模式 - 直接分析日志输出,支持 13,000 行 nginx 日志
多模型支持 - 通义千问、GPT-4 、DeepSeek 等,自动切换
安全可控 - 查询命令和修改命令差异化展示,严格确认机制
完美中文 - 支持中文输入、光标编辑、Ctrl+C 退出

实际使用场景

场景 1:服务器负载异常排查

$ aiassist "服务器负载很高,帮我排查原因"

[AI] 让我们先检查系统负载和 CPU 使用情况:

[查询命令]
top -b -n 1 | head -20

是否执行此命令? (y/n, exit 退出): y

[执行成功]
top - 03:24:15 up 127 days,  5:32,  2 users,  load average: 8.45, 7.23, 6.89
Tasks: 256 total,   3 running, 253 sleeping...
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 nginx     20   0 2.156g 1.234g  12.3m R  98.3  15.6   124:56 nginx

[AI] 发现 nginx 进程 (PID 1234) CPU 占用 98.3%,内存使用 1.2GB 。
让我们查看 nginx 的连接状态:

[查询命令]
ss -ant | grep :80 | wc -l

是否执行此命令? (y/n, exit 退出): y

[执行成功]
15234

[AI] 发现当前有 15,234 个活跃连接到 80 端口。建议检查是否遭受 DDoS 攻击...

场景 2:管道模式分析日志

# 直接分析 nginx 访问日志
$ tail -1000 /var/log/nginx/access.log | aiassist "分析访问日志"

[AI] 分析结果:
1. 发现来自 192.168.1.100 的异常请求:1 分钟内发起了 523 次请求
2. 路径 /api/login 被频繁访问,可能存在暴力破解
3. 建议执行:
   - 检查该 IP 的请求模式
   - 临时封禁该 IP
   - 启用限流策略

# 分析 Docker 容器状态
$ docker ps -a | aiassist "帮我看看容器有什么问题"

[AI] 发现 3 个容器处于 Exited 状态:
- redis-cache (退出码: 137) - 内存不足被 OOM Killer 杀死
- app-worker (退出码: 1) - 启动失败,建议查看日志
- nginx-proxy (退出码: 0) - 正常退出

场景 3:交互式问题诊断

$ aiassist

??? 请输入问题: 为什么我的磁盘满了

[AI] 让我们先查看磁盘使用情况...
[查询命令] df -h

??? 请输入问题: /var 目录占用最大

[AI] 让我们查看/var 目录下哪些子目录占用空间最大...
[查询命令] du -sh /var/* | sort -hr | head -10

??? 请输入问题: /var/log 占了 80GB

[AI] 让我们查看具体是哪些日志文件...

技术亮点

1. 智能递归分析

支持最多10 层递归命令分析,AI 会:

2. 内存保护机制

3. 严格的安全控制

4. 完美的中文支持

5. 多模型自动切换

# 配置文件按优先级排列
providers:
  qwen:      # 优先使用
    enabled: true
  gpt4:      # Qwen 失败后切换


```yaml
# 配置文件按优先级排列
providers:
  qwen:      # 优先使用
    enabled: true
  gpt4:      # Qwen 失败后切换
    enabled: true
  deepseek:  # 最后备选## 快速开始

### 一键安装


```bash
curl -fsSL https://raw.githubusercontent.com/llaoj/aiassist/main/scripts/install.sh | bash

配置大模型

aiassist config

按向导提示配置:

  1. 选择语言(中文/English )
  2. 添加 LLM Provider (支持 OpenAI 兼容接口)
  3. 输入 API Key
  4. 配置模型列表
  5. (可选)设置 HTTP 代理

支持的模型:

开始使用

# 交互式对话
aiassist

# 单次问答
aiassist "服务器负载很高,帮我排查"

# 管道模式
tail -f /var/log/nginx/access.log | aiassist "分析日志"
docker ps -a | aiassist "检查容器状态"

项目背景

这个项目有个特别之处:完全由 AI 编写

从需求分析、架构设计、代码实现、文档编写,全部由 AI ( Claude )完成。这也从侧面证明了 AI 在代码生成领域的能力已经相当成熟。

技术栈:

适用人群

运维工程师 - 快速诊断生产环境问题
SRE - 自动化故障排查流程
DevOps - CI/CD 环境调试
新手运维 - 学习 Shell 命令最佳实践
开发者 - 快速解决服务器问题

429 次点击
所在节点    分享创造
3 条回复
vodmaker
7 小时 40 分钟前
我也做了一个: https://github.com/YUHAI0/shex
hmmmbiubiubiu
5 小时 33 分钟前
@vodmaker 想到一块去了. 就是不知道各位运维老哥们是否喜欢这样的工具.
hmmmbiubiubiu
5 小时 32 分钟前
@vodmaker 你自己手撸的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1188837

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX