Metadata-Version: 2.4
Name: kysysops
Version: 2.0.0
Summary: Kylin 服务器操作系统智能诊断平台 - 自动检测、分析根因、提供修复建议
License: Non open source，The copyright belongs to KylinSoft Co., Ltd.
Requires-Python: >=3.10
Requires-Dist: aiosqlite>=0.19.0
Requires-Dist: fastapi>=0.104.0
Requires-Dist: httpx>=0.25.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: prompt-toolkit>=3.0.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: pydantic-ai>=1.0.0
Requires-Dist: pydantic-graph>=0.0.1
Requires-Dist: pydantic>=2.5.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Requires-Dist: sqlalchemy>=2.0.0
Requires-Dist: uvicorn[standard]>=0.24.0
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest>=7.4.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: postgresql
Requires-Dist: asyncpg>=0.29.0; extra == 'postgresql'
Requires-Dist: psycopg2-binary>=2.9.0; extra == 'postgresql'
Description-Content-Type: text/markdown

# kysysops - 智能系统健康守护平台

## 项目简介

kysysops (Health Guardian) 是麒麟软件系统架构部开发的基于 AI 的 Linux 系统健康检测与自愈平台。它结合了传统运维监控能力与大语言模型（LLM）的智能分析能力，能够自动检测系统问题、分析根因、并提供修复建议。

## 核心功能

- **USE 方法论健康评分**：基于 Brendan Gregg 的 USE 方法论对 CPU、内存、磁盘、网络进行全面评估
- **AI 智能诊断**：LLM 自动决策执行诊断命令，安全判断，循环分析直到找到根因
- **知识库支持**：内置 RHEL KB Solutions 知识库，支持 RAG 语义检索
- **安全修复机制**：只读命令自动执行，写操作需人工确认，全程可追溯
- **现代化 Web UI**：React + TypeScript + TailwindCSS

## 系统要求

- 操作系统：RHEL 8/9, CentOS 8/9, Kylin V10, openEuler 22.03+
- Python：3.8+
- Node.js：18+（仅构建前端需要）

## 部署步骤

### 方式一：从源码部署

#### 1. 安装系统依赖

```bash
# RHEL/CentOS/Kylin
dnf install -y python3 python3-pip python3-devel gcc

# 可选：安装 Node.js（如需重新构建前端）
dnf module install -y nodejs:18
```

#### 2. 创建工作目录

```bash
mkdir -p /opt/kysysops
cd /opt/kysysops
tar xzf kysysops-1.0.0.tar.gz --strip-components=1
```

#### 3. 安装 Python 依赖

```bash
# 基础依赖（必需）
pip3 install fastapi uvicorn pydantic httpx requests pyyaml numpy tqdm

# RAG 依赖（可选，用于知识库检索）
pip3 install torch sentence-transformers chromadb transformers

# 使用国内镜像加速
pip3 install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
```

#### 4. 配置 LLM

编辑 `config.yaml`：

```yaml
llm:
  provider: "deepseek"  # 或 "ollama", "openai", "qwen"
  model: "deepseek-chat"
  api_base: "https://api.deepseek.com/v1"
  api_key_env: "DEEPSEEK_API_KEY"  # 环境变量名
```

设置 API Key：

```bash
export DEEPSEEK_API_KEY="your-api-key"
# 或添加到 ~/.bashrc
echo 'export DEEPSEEK_API_KEY="your-api-key"' >> ~/.bashrc
```

支持的 LLM 提供商：
- **DeepSeek**：`api_base: https://api.deepseek.com/v1`
- **OpenAI**：`api_base: https://api.openai.com/v1`
- **Ollama**（本地）：`api_base: http://localhost:11434/v1`
- **Qwen**：`api_base: https://dashscope.aliyuncs.com/compatible-mode/v1`

#### 5. 构建前端（可选）

如果需要修改前端或 `web/dist` 目录不存在：

```bash
cd web
npm install
npm run build
cd ..
```

#### 6. 启动服务

```bash
# 前台运行
python3 api.py

# 后台运行
nohup python3 api.py > /var/log/kysysops.log 2>&1 &

# 使用 systemd（推荐）
cat > /etc/systemd/system/kysysops.service << 'EOF'
[Unit]
Description=KySysops Health Guardian Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/kysysops
Environment="DEEPSEEK_API_KEY=your-api-key"
ExecStart=/usr/bin/python3 /opt/kysysops/api.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now kysysops
```

#### 7. 访问服务

- Web UI: http://localhost:8088
- API 文档: http://localhost:8088/docs

### 方式二：从 RPM 包安装

```bash
# 安装 RPM
rpm -ivh kysysops-1.0.0-1.el9.noarch.rpm

# 或使用 dnf
dnf install kysysops-1.0.0-1.el9.noarch.rpm

# 配置 LLM API Key
echo 'DEEPSEEK_API_KEY=your-api-key' >> /etc/sysconfig/kysysops

# 启动服务
systemctl enable --now kysysops

# 查看状态
systemctl status kysysops
```

## 命令行工具

```bash
# 健康检查
kysysops-cli health

# 执行诊断
kysysops-cli diagnose "系统响应很慢"

# 交互式对话
kysysops-cli chat
```

## 配置说明

### config.yaml 主要配置项

```yaml
# API 服务配置
api:
  host: "0.0.0.0"
  port: 8088

# 健康检查阈值
thresholds:
  cpu:
    utilization:
      good: 60      # 低于 60% 为健康
      warn: 85      # 60-85% 为警告
      critical: 100 # 高于 85% 为严重

# 自愈配置
healing:
  enabled: true
  auto_approve: false  # 是否自动执行修复命令
  dry_run: false       # 仅显示命令不执行
```

## 目录结构

```
kysysops/
├── api.py              # FastAPI 后端主入口
├── cli.py              # 命令行工具
├── diagnosis.py        # 诊断引擎
├── healer.py           # 自愈模块
├── mcp_tools.py        # MCP 工具集成
├── ai_diagnosis_agent.py # AI 诊断 Agent
├── config.yaml         # 配置文件
├── requirements.txt    # Python 依赖
├── web/                # 前端源码
│   ├── src/
│   └── dist/           # 构建产物
├── linux-mcp-server/   # Linux MCP 服务器
├── ebpf-mcp/           # eBPF MCP 工具
└── AIOS/               # 多智能体编排系统
```

## 常见问题

### 1. 前端页面空白

检查 `web/dist` 目录是否存在，如不存在需要构建：
```bash
cd web && npm install && npm run build
```

### 2. LLM 调用失败

- 检查 API Key 是否正确设置
- 检查网络是否能访问 LLM API
- 查看日志：`journalctl -u kysysops -f`

### 3. 端口被占用

修改 `config.yaml` 中的 `api.port` 配置项。

### 4. 权限不足

某些诊断命令需要 root 权限，建议以 root 用户运行或配置 sudo。
