SxDevOps 是一个面向真实运维现场的开源智能运维 Agent 平台。它把 可观测性、事件中心、任务中心、工单审批、容器管理、RBAC 等平台能力组织成 Agent 可调用、可审计、可确认的运维工作流。
项目不是简单做一个聊天框,而是希望让运维从“到处查系统”升级为:
看态势、找证据、问系统、确认动作。
Django + Django REST framework + Channels + Vue 3 + Element Plus
传统运维现场里,信息和动作经常被拆散:
SxDevOps 的目标是把这些碎片化能力收敛成一条链路:可观测性取证,事件中心复盘,任务中心行动,AIOps 负责理解、规划和结构化输出。
SxDevOps AI Agent = 可观测性 + 事件中心 + 任务中心 + AIOps
| 层次 | 说明 |
|---|---|
| 可观测性事实层 | 聚合告警、指标、日志、Trace、Grafana 和系统态势,形成 Agent 可查询的证据来源。 |
| 事件中心 | 沉淀最终执行结果、关键写操作、失败定位线索和复盘上下文。 |
| 任务中心 | 承接主机巡检、批量命令、脚本模板、任务草稿、执行历史和计划任务。 |
| AIOps 智能体 | 使用 LLM 做理解与规划,使用 MCP 工具取数,使用 Skill 约束输出,使用后端完成权限、确认、执行和审计。 |
一句话理解:
模型负责理解,平台负责边界;Agent 可以分析和生成草稿,但关键动作必须通过权限校验和人工确认。
| 模块 | 能力 |
|---|---|
| AIOps 智能体 | 自然语言排障、工具调用、二阶段回答、Skill 模板、Action 预检、待确认动作、模型调用审计 |
| 可观测性 | 平台总览、系统态势、指标查询、日志检索、链路追踪、Grafana 看板承接、数据源管理 |
| 事件中心 | 失败事件定位、关键操作沉淀、事件源接入、操作审计、按系统/环境/应用/时间过滤 |
| 任务中心 | 主机任务、批量命令、脚本模板、资源分组、任务草稿、执行历史、计划任务 |
| 工单系统 | 应用发布、审批流、SQL 审计、事务工单、变更留痕 |
| 容器管理 | Kubernetes 集群、工作负载、Pod 终端、ConfigMap / Secret、Docker 环境管理 |
| 权限与审计 | 后端 API、前端路由、菜单、按钮和 WebSocket 场景统一接入 RBAC |
以“生产 order-center 异常分析”为例。
传统方式通常要人工切换多个系统:
在 SxDevOps 里,可以让 Agent 串起这条链路:
SxDevOps 的 Agent 运行逻辑不是“用户提问 -> 大模型自由回答”,而是一套受控编排链路:Action Router 先判断任务类型,Agent Mode 决定推理方式,Preflight 守住执行边界,Skill/SOP 约束专业过程,MCP 连接外部与平台工具,最终由审计和反馈闭环沉淀结果。
%%{init: {"flowchart": {"nodeSpacing": 10, "rankSpacing": 14, "curve": "basis"}, "themeVariables": {"fontSize": "12px"}}}%%
flowchart TB
input["用户问题 / 页面上下文 / 外部协同任务"] --> router["Action Router
识别任务入口与风险边界"]
router --> mode{"Agent Mode"}
mode --> direct["Direct
直接执行单个动作"]
mode --> react["ReAct
推理 -> 行动 -> 观察"]
mode --> plan["Plan + ReAct
规划 -> 多步执行 -> 验证"]
direct --> preflight["Preflight
权限校验 / 风险评估 / 缺参补齐 / 依赖检查"]
react --> preflight
plan --> preflight
preflight -->|未通过| form["预检表单 / 待确认信息"]
preflight -->|通过| skill["Skill + SOP
证据清单 / 查询规范 / 输出合同 / 安全边界"]
skill --> mcp["MCP / Tool Registry
可观测性 / 事件 / 任务 / 工单 / K8s / 自定义工具"]
mcp --> facts["结构化事实
日志 / 指标 / Trace / 告警 / 事件 / 执行结果"]
facts --> answer["二阶段整形
结论 / 依据 / 风险 / 建议动作"]
answer --> action{"是否写入或执行类动作"}
action -->|否| done["返回答案与证据"]
action -->|是| confirm["Pending Action
用户确认"]
confirm --> execute["平台 API 执行
RBAC / 参数清洗 / 超时控制"]
execute --> feedback["结果反馈
任务中心 / 事件中心 / 审计 / 后续学习"]
这条链路里几个核心概念的职责是:
| 层次 | 职责 |
|---|---|
| Action Router | 识别本次问题属于告警根因、日志查询、K8s 诊断、变更关联、任务生成等哪类 Action,并声明风险等级、所需上下文、输出结构和确认策略。 |
| Agent Mode | 按任务复杂度选择执行方式:Direct 适合单步只读或明确动作,ReAct 适合边查边判断,Plan + ReAct 适合多步骤深度排障和协同任务。 |
| Preflight | 在进入写入、生成或执行前做权限校验、风险评估、依赖检查、缺参补齐和回滚就绪检查;不满足条件时返回预检表单或待确认信息。 |
| Skill / SOP | 沉淀领域能力包,约束证据清单、查询规范、判断规则、输出格式和安全边界,避免模型自由发挥。 |
| MCP / Tool Registry | 把平台能力和外部系统封装成可治理工具,最终可用工具由 Skill 工具依赖 ∩ MCP 可用性 ∩ 用户 RBAC ∩ Action 安全策略 决定。 |
| Pending Action | 所有写入和执行类动作先变成待确认动作,用户确认后才由平台 API 执行。 |
| 审计与反馈 | 会话、工具调用、预检、待确认动作、执行结果和关键事件都会留痕,执行结果继续回写任务中心和事件中心。 |
当前实现遵循几个原则:




更多截图保存在 docs/screenshots。
| 层级 | 技术 |
|---|---|
| 后端 | Django、Django REST framework、Channels、Daphne |
| 前端 | Vue 3、Vue Router、Pinia、Element Plus、ECharts、Vite |
| 数据库 | 本地默认 SQLite,Docker Compose 默认 MySQL 8 |
| 缓存与实时通信 | Redis、Channels Redis |
| 外部集成 | Kubernetes API、Docker、SSH、Prometheus / Grafana、SkyWalking、Tempo、Jaeger、Zipkin、Loki / ELK / SLS |
flowchart LR
user["用户 / 运维人员"] --> frontend["Vue 3 前端工作台"]
frontend --> api["Django REST API"]
frontend --> ws["Channels WebSocket"]
api --> rbac["RBAC / 审计"]
api --> aiops["AIOps 智能体"]
api --> ops["任务 / 工单 / 事件"]
aiops --> facts["可观测性事实层"]
ops --> facts
facts --> integrations["Prometheus / Grafana / Logs / Trace / K8s / SSH"]
api --> db["MySQL 或 SQLite"]
ws --> redis["Redis"]
(目前是自己build镜像,后面稳定版我推到 dockerhub 镜像仓库,这样首次部署可以不用拉依赖了) 仓库内置应用、MySQL 和 Redis 编排,适合最快体验完整功能:
docker compose up -d --build
启动后访问:
http://localhost:8000首次启动时容器会自动执行:
python manage.py migrate
python manage.py seed_data
python manage.py seed_templates
如需关闭初始化数据,可在 docker-compose.yml 中把 SXDEVOPS_SEED_DATA 或 SXDEVOPS_SEED_TEMPLATES 设置为 0。
后端:
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py seed_data
python manage.py seed_templates
python -m daphne -b 0.0.0.0 -p 8000 sxdevops.asgi:application
前端:
cd frontend
npm install
npm run dev
本地开发地址:
http://localhost:3000http://localhost:8000Windows 下也可以使用开发辅助脚本一键启动或停止前后端:
.\tools\dev\start-dev.ps1
.\tools\dev\stop-dev.ps1
执行初始化数据后可使用以下账号登录,默认密码均为:
Admin@123456
常用账号:
adminops_demodev_demoaudit_demoviewer_demo这些账号仅用于本地演示和开发环境。公开部署前请修改默认密码或禁用演示账号。
后端支持通过环境变量或 backend/config.json 覆盖关键配置。需要本地 MySQL 或 Redis 时,可以参考 backend/config.example.md 和 backend/config.example.json。
常用环境变量:
DATABASE_ENGINE=mysql
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_DATABASE=sxdevops
MYSQL_USER=sxdevops
MYSQL_PASSWORD=sxdevops_password
REDIS_URL=redis://redis:6379/0
CHANNEL_REDIS_URL=redis://redis:6379/1
SECRET_KEY=change-me
DEBUG=0
ALLOWED_HOSTS=localhost,127.0.0.1
CORS_ALLOW_ALL_ORIGINS=0
本地开发不配置数据库时会自动使用 backend/db.sqlite3;Docker Compose 默认使用 MySQL 与 Redis。
# 后端测试
cd backend && python manage.py test
# 前端构建
cd frontend && npm run build
# 重新生成基础演示数据
cd backend && python manage.py seed_data
# 重新生成智能体与任务模板
cd backend && python manage.py seed_templates
# Docker Compose 停止服务
docker compose down
.
├── backend/ # Django 后端项目
│ ├── sxdevops/ # 项目设置、ASGI/WSGI、路由入口
│ ├── aiops/ # AIOps 智能体、模型、工具、审计
│ ├── ops/ # 运维任务、可观测性、发布、告警等
│ ├── eventwall/ # 事件中心
│ ├── rbac/ # 权限、角色、菜单与审计
│ └── ... # marketplace、sqlaudit、iac、multicloud 等模块
├── frontend/ # Vue 3 前端项目
│ └── src/
│ ├── views/ # 页面
│ ├── layout/ # 布局
│ ├── api/ # API 封装
│ ├── router/ # 路由
│ └── stores/ # Pinia 状态
├── docs/ # 产品截图与设计文档
├── docker/ # 容器入口脚本
├── tools/dev/ # Windows 本地开发辅助脚本
├── docker-compose.yml # 本地容器化部署
└── Dockerfile # 前后端一体镜像
欢迎提交 Issue、讨论需求、补充文档或贡献代码。开始前建议先阅读 CONTRIBUTING.md。
适合优先参与的方向:
SECRET_KEY、DEBUG=0、ALLOWED_HOSTS、数据库和 Redis。SxDevOps 基于 Apache License 2.0 开源。分发或二次开发时请保留项目中的 NOTICE 文件。
SxDevOps 目前是一个纯个人开源项目,UI 设计、架构设计、功能开发、测试验证和模型调用成本都主要来自个人业余时间与个人 Token 投入。受限于个人精力,项目现阶段一定还有不少不完善的地方,也难免存在 Bug,欢迎大家多提 Issue、建议和 PR,我会在能力范围内持续迭代。
如果这个项目、实现方式或产品思路对你有帮助,也欢迎小额打赏支持,帮我分担一点 Token 成本,也给后续继续迭代多一点动力。

最后特别鸣谢阿铭老师为本项目提供思路启发和大力宣传。如果你有 AIOps、大模型运维、自动化运维相关学习需求,可以通过阿铭老师的公开渠道添加微信咨询:铭科智联 - 跟阿铭学大模型/AIOps。
$ claude mcp add sxdevops \
-- python -m otcore.mcp_server <graph>