私有部署的 AI 运维数字员工
让每家企业拥有自己的智能运维助手
企业运维团队每天被重复性咨询淹没——密码重置、权限申请、系统报障。这些工作消耗运维人员 40% 以上的时间,却无法沉淀为可复用的知识。
OpsMind 不是另一个 ChatGPT 套壳。它是一个从检索管道到业务流程都自建的运维数字员工系统:
- 自建 RAG 引擎 — BM25 + 向量混合检索 + RRF 融合 + 重排序,全程可控可审计
- 知识资产化 — 每次问答、每条申告处理记录都可转化为知识库文章,审核后发布
- 数据不出域 — 全部存储在自有 PostgreSQL + pgvector,支持本地 llama.cpp 推理
graph LR
A["👤 用户提问"] --> B["🔍 RAG 检索"]
B --> C["📚 知识库"]
B --> D["🤖 LLM 生成"]
D --> E["📝 答案"]
E -->|"置信度低"| F["🎫 自动转申告"]
F --> G["👷 运维处理"]
G -->|"沉淀"| C
flowchart LR
Q["🧠 智能问答"] -->|"低置信度转申告"| T["🎫 申告管理"]
T -->|"沉淀经验"| K["📚 知识库"]
K -->|"向量检索"| Q
style Q fill:#e8f0fe,stroke:#1a56db,color:#1a56db
style T fill:#fef3c7,stroke:#d97706,color:#92400e
style K fill:#f0fdf4,stroke:#16a34a,color:#166534
| 🧠 智能问答 | 📚 知识管理 | 🎫 申告管理 | 🔐 权限看板 |
|---|---|---|---|
| 自建 7 步 RAG 管道 | 手动录入 / 文档上传 | 完整状态机流转 | JWT 双令牌 + RBAC |
| SSE 流式逐 token 输出 | 草稿→审核→发布→停用 | 站内消息实时通知 | 4 个预设角色,菜单动态渲染 |
| 失败自动降级,不中断 | 发布自动向量化到 pgvector | 7 天无操作自动关闭 | 实时统计卡片 + 趋势图 |
| 多轮对话 + 会话管理 | 支持 PDF · DOCX · MD · TXT | 处理记录 → 知识候选 | 敏感操作全量审计日志 |
graph TB
subgraph Frontend["web/ — Next.js"]
UI["App Router · Radix UI · SWR"]
end
subgraph Backend["server/ — Go · Gin"]
H["Handler"] --> S["Service"]
S --> R["Repository"]
H --> RAG["RAG 引擎"]
H --> ADP["Adapter"]
end
subgraph Infra["基础设施"]
PG[("PostgreSQL<br>+ pgvector")]
MinIO[("MinIO")]
LLM[("llama.cpp<br><small>可选</small>")]
end
Frontend -->|"REST + SSE"| Backend
ADP --> PG
ADP --> MinIO
ADP --> LLM
RAG --> ADP
style Frontend fill:#f0f0f0,stroke:#333
style Backend fill:#e8f0fe,stroke:#1a56db
style Infra fill:#fef3c7,stroke:#d97706
RAG 引擎完全自建,不依赖 LangChain 或 LlamaIndex。BM25 算法纯 Go 实现,向量检索走 pgvector HNSW 索引 + halfvec 半精度。
前置条件: Docker + Docker Compose v2 · 8 GB 内存 · 10 GB 磁盘
git clone https://github.com/int2t05/OpsMind.git && cd OpsMind
copy .env.example .env
# 编辑 .env:设置 JWT_SECRET(必填)和 LLM 配置
docker compose up -d --build启动后:
| 服务 | 地址 |
|---|---|
| 前端 | http://localhost:3000 |
| 后端 API | http://localhost:8080 |
# 下载 GGUF 模型到 ./models/ 目录(魔塔 ModelScope,~3 GB)
pip install modelscope
python -c "from modelscope import snapshot_download; snapshot_download('Qwen/Qwen3-4B-GGUF', allow_patterns='*Q4_K_M*', local_dir='./models')"
python -c "from modelscope import snapshot_download; snapshot_download('Qwen/Qwen3-Embedding-0.6B-GGUF', allow_patterns='*Q8_0*', local_dir='./models')"
docker compose --profile ai-local up -d --build| 模型 | 用途 | 大小 |
|---|---|---|
| Qwen3-4B-Q4_K_M | 对话(LLM) | ~2.4 GB |
| Qwen3-Embedding-0.6B-Q8_0 | 向量(Embedding) | ~0.6 GB |
初始化数据库并加载种子数据:
docker compose exec -T postgres psql -U opsmind -d opsmind < server/migrations/seed_essential.sql # 角色 + 用户 + LLM 配置预置账号:
| 账号 | 密码 | 角色 |
|---|---|---|
admin |
Admin@123 |
系统管理员 |
operator1 |
OpsMind@123 |
运维人员 |
knowledge |
Knowledge@123 |
知识库管理员 |
reporter1 |
Reporter@123 |
报障人 |
也支持 OpenAI / DeepSeek 等任何 OpenAI-compatible API。LLM 与 Embedding 可独立配置不同服务商,热替换即时生效。
stateDiagram-v2
direction LR
[*] --> 待处理
待处理 --> 处理中 : 接单
待处理 --> 已关闭 : 关闭
处理中 --> 已解决 : 解决
处理中 --> 需补充 : 索要信息
处理中 --> 已关闭 : 关闭
需补充 --> 处理中 : 用户补充
需补充 --> 已关闭 : 关闭
已解决 --> [*]
已关闭 --> [*]
OpsMind/
├── server/ # Go 后端(Gin + GORM)
│ ├── internal/
│ │ ├── handler/ # HTTP Handler(11 个 API 域)
│ │ ├── service/ # 业务逻辑 + 状态机
│ │ ├── rag/ # 自建 RAG 引擎(12 个模块)
│ │ ├── adapter/ # LLM / Embedding / pgvector / MinIO
│ │ └── middleware/ # JWT / RBAC / CORS
│ ├── migrations/ # DDL + 种子数据
│ └── tests/ # Go 集成测试
├── web/ # Next.js 前端
│ └── src/
│ ├── app/ # App Router(portal / admin)
│ ├── components/ # UI 组件 + 布局
│ └── lib/api/ # API 客户端
├── docs/ # PRD / TECH / API 文档
├── test/ # 验收测试文档与数据
└── docker-compose.yml
| 文档 | 说明 |
|---|---|
| PRD | 产品需求 — 功能定义、业务规则 |
| TECH | 技术架构 — 分层设计、DDL、ADR |
| API | 9 份接口文档,覆盖全部端点 |
| 测试流程 | 验收测试 — 9 大场景、完整步骤 |
完整改进清单见
docs/TODO.md。以下为已规划的演进方向。
| 方向 | 说明 |
|---|---|
| 本地 Agent | 支持在线深度搜索,智能化收集运维数据 |
| 知识库模板系统 | 常见运维场景(新员工入职、设备申领)一键创建知识库结构 |
| 看板增强 | 自定义日期范围、数据导出 |
| 申告满意度评价 | 闭环反馈机制 |
| 方向 | 优先级 | 说明 |
|---|---|---|
| BM25 索引增量更新 | 🟡 P2 | 全量重建 → 增量更新,支撑大规模文档 |
| 文档处理器重试 + 死信队列 | 🟡 P2 | embedding API 瞬时失败自动重试,持久失败入死信 |
| DOCX/PDF 流式解析 | 🟡 P2 | 替代全量读入内存,消除大文件 OOM 风险 |
| 前端代码分割 | 🟡 P2 | next/dynamic 按路由懒加载,优化首屏加载 |
| 上传上限配置化 | 🟡 P2 | 50MB 硬编码改为按 KB 粒度可配置 |
| 方向 | 说明 |
|---|---|
| 外部 ITSM 对接 | Jira Service Management、ServiceNow 等 |
| 自然语言转 SQL | 非技术人员直接查询运维数据 |
| 知识库覆盖度分析 | 识别高频未命中问题,指导知识补充 |
欢迎提交 Issue 和 PR。详见 CONTRIBUTING.md。
- 确保通过现有测试
- 遵循项目代码风格和注释规范
- API 变更同步更新
docs/API/