175 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

# 🛡️ 铸渊运维守卫 · ZY-OPS-001 v2.0
> 光湖系统智能运维 Agent · 常驻服务器终端 · 多轮对话 + 自动巡检 + 自修复 + 工单推送
## 概述
铸渊运维守卫是一个 **PM2 常驻 AI Agent**7×24 小时守护光湖系统服务器。
| 能力 | 说明 |
|------|------|
| 🔍 自动巡检 | 每5分钟快速巡检 · 每小时深度巡检 · 每天全量报告 |
| 🔧 自修复 | PM2重启 · 日志清理 · Nginx重载 · 依赖重装 |
| 💬 多轮对话 | 终端CLI + 网页面板 · DeepSeek LLM · **会话记忆** |
| 🧠 智能诊断 | 意图识别 → 自动执行工具 → LLM 分析 → 中文回答 |
| 🎫 工单推送 | 修不了的自动生成工单 · 邮件通知冰朔 |
| 📋 PM2日志 | 终端/网页直接查看任意进程日志 |
| 💻 系统监控 | 实时内存/磁盘/PM2状态面板 |
## 快速开始
### 服务器部署
```bash
# 1. 安装依赖
cd /opt/zhuyuan/ops-agent && npm install --production
# 2. 启动 PM2 服务
pm2 start ecosystem.config.js
# 3. 创建终端命令(可选)
ln -s /opt/zhuyuan/ops-agent/cli.js /usr/local/bin/zy-ops
chmod +x /opt/zhuyuan/ops-agent/cli.js
```
### 终端交互 (Phase 2)
```bash
# 进入多轮对话模式(记住上下文!)
zy-ops
# 单次提问
zy-ops --ask "为什么MCP连不上"
# 快速巡检
zy-ops --check
# 深度巡检
zy-ops --deep
# 查看PM2日志
zy-ops --logs zhuyuan-server
zy-ops --logs age-os-mcp 50
# 系统信息
zy-ops --sysinfo
# 查看工单
zy-ops --tickets
# 查看状态
zy-ops --status
```
### 交互模式命令
进入 `zy-ops` 后可以使用:
```
/check — 快速巡检
/deep — 深度巡检
/sysinfo — 系统信息(内存/磁盘/PM2/Nginx
/logs <名字> — 查看PM2日志
/tickets — 查看工单
/status — 守卫状态
/session — 查看当前会话
/new — 开始新对话(清除上下文)
/help — 帮助
/exit — 退出
其他 — 直接中文提问(多轮对话,记得上下文)
```
### 网页面板
访问 `http://服务器IP:3950/ops/` 即可使用运维面板(含对话+工单+系统信息)。
## 对话能力 (Phase 2 增强)
### 多轮对话
- 运维守卫记住你之前问过的问题
- 可以追问:"刚才说的第二步怎么做?"
- `/new` 命令开始新会话
### 智能工具调用
问问题时,运维守卫会根据意图自动执行诊断:
- 问"MCP连不上" → 自动执行健康检查 → 附上结果给 LLM 分析
- 问"内存够用吗" → 自动获取系统资源 → 告诉你具体数字
- 问"GLADA报什么错" → 自动读取PM2日志 → 分析最近错误
- 问"有什么工单" → 自动查询工单列表 → 汇总告诉你
### 意图识别
| 问法 | 识别意图 | 自动执行 |
|------|---------|---------|
| 连不上/离线/打不开 | diagnose | 健康检查 |
| 内存/磁盘/CPU | resources | 系统资源 |
| 日志/报错/error | logs | PM2日志 |
| PM2/进程/重启 | process | PM2状态 |
| Nginx/域名/SSL | nginx | Nginx状态 |
| 工单/ticket | tickets | 工单查询 |
## 架构
```
ops-agent/
├── index.js 主入口 · HTTP API + 定时调度 + 工具执行
├── cli.js 终端交互 v2 · 多轮对话 + 系统信息
├── health-checker.js 健康检查 · 三层巡检
├── repair-engine.js 自修复 · 白名单安全执行
├── memory.js 记忆系统 · 文件持久化
├── notifier.js 通知系统 · 邮件 + 工单
├── llm-client.js LLM推理 v2 · 多轮会话 + 意图识别
├── ecosystem.config.js PM2配置
├── package.json
├── web/
│ ├── index.html 运维面板 UI v2含系统信息
│ ├── app.js 前端逻辑 v2多轮对话
│ └── style.css 样式 v2打字指示器+系统面板)
└── data/ 运行时数据(自动创建)
├── events.jsonl 事件日志
├── tickets.json 工单列表
└── stats.json 统计数据
```
## API 端点
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/health` | 守卫健康检查 |
| GET | `/api/ops/check/quick` | 快速巡检 |
| GET | `/api/ops/check/deep` | 深度巡检 |
| GET | `/api/ops/tickets` | 获取工单列表 |
| PATCH | `/api/ops/tickets/:id` | 更新工单状态 |
| POST | `/api/ops/chat` | 对话接口(支持 sessionId 多轮) |
| GET | `/api/ops/sessions` | 列出活跃会话 |
| GET | `/api/ops/sessions/:id/history` | 获取会话历史 |
| GET | `/api/ops/pm2-logs/:name` | 查看PM2日志 |
| GET | `/api/ops/system-info` | 系统信息(资源+PM2+Nginx |
| GET | `/api/ops/stats` | 统计数据 |
| GET | `/api/ops/events` | 历史事件 |
| GET | `/ops/events` | SSE 实时推送 |
| GET | `/ops/` | 网页面板 |
## 环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `OPS_AGENT_PORT` | 服务端口 | 3950 |
| `OPS_MAX_REPAIR_RETRIES` | 最大自修复次数 | 3 |
| `ZY_LLM_API_KEY` | LLM API密钥 | - |
| `ZY_LLM_BASE_URL` | LLM API地址 | https://api.deepseek.com/v1 |
| `ZY_LLM_MODEL` | LLM模型 | deepseek-chat |
| `ZY_SMTP_USER` | SMTP邮箱 | - |
| `ZY_SMTP_PASS` | SMTP授权码 | - |
| `OPS_NOTIFY_EMAIL` | 告警接收邮箱 | =ZY_SMTP_USER |
| `OPS_EMAIL_ENABLED` | **邮件总开关** · D72 翻转默认为 `false`(持续噪音) · 设 `true`/`1`/`yes`/`on` 才发件 | **false** |
| `OPS_ALERT_COOLDOWN_MINUTES` | 告警冷却(分钟) | 360 |
## 安全原则
1. **白名单制度**: 自修复只允许预定义操作重启、清日志、重载Nginx、重装依赖
2. **修复上限**: 同一问题最多修3次超过自动升级为工单
3. **不碰数据**: 绝不删数据库、不改代码、不碰密钥文件
4. **可追溯**: 每次修复都记录日志
5. **日志安全**: PM2日志查看限白名单进程不可查看系统敏感文件
---
编号: ZY-OPS-001 v2.0
签发: 铸渊 · ICE-GL-ZY001
版权: 国作登字-2026-A-00037559