[AI Development Lab] 【deepin插件开发活动】OpsChat For Deepin
Tofloor
poster avatar
182******29
deepin
6 hours ago
Author

源码仓库链接

  • https://github.com/helloworldpxy/OpsChat-Deepin
  • https://gitee.com/helloworldpxy/OpsChat-Deepin

项目文档

项目简介

OpsChat For Deepin 是 OpsChat 智能运维 Agent 的 deepin 桌面环境深度集成版本。通过 deepin Skills 开发框架,实现了系统托盘、快捷面板、控制中心、桌面通知、DConfig 配置等原生集成,为 deepin/UOS v25 用户提供无缝的智能运维体验。

核心特性

  • 系统托盘插件:实时显示服务状态,一键启停、打开浏览器、查看审计日志
  • 快捷面板:Dock 快捷面板显示 OpsChat 状态和快捷操作
  • 控制中心模块:在系统设置中管理 OpsChat 服务和配置
  • 桌面通知:高危操作审批请求、服务状态变更实时通知
  • DConfig 配置:遵循 deepin 配置规范,支持系统级配置管理
  • Systemd 服务:开机自启、崩溃自动重启
  • 开机自启动:登录后自动启动客户端和后台服务
  • 单实例管理:防止多开,确保唯一运行实例
  • 自动更新检查:定期检查 GitHub 新版本
  • 崩溃报告:异常捕获和报告

技术栈

组件 技术方案
客户端框架 DTK6 + Qt6 WebEngine
托盘插件 PluginsItemInterfaceV2 (dde-tray-loader)
快捷面板 PluginsItemInterfaceV2 (dde-shell)
控制中心 DCC Factory (dde-control-center)
配置管理 DConfig
通知系统 D-Bus / notify-send
服务管理 systemd user service

项目结构

OpsChat-Deepin/
├── backend/ # Python 后端集成
│ ├── notifications.py # 桌面通知模块
│ ├── dconfig.py # DConfig 配置管理
│ ├── dbus_service.py # D-Bus 服务接口
│ ├── single_instance.py # 单实例管理
│ ├── log_viewer.py # 日志查看器
│ ├── config_backup.py # 配置备份/恢复
│ ├── multi_server.py # 多服务器管理
│ ├── theme_manager.py # 主题管理
│ └── api/config.py # 配置管理 API
├── desktop-client/ # DTK 客户端
│ ├── CMakeLists.txt # 主构建配置
│ ├── src/ # 客户端源码
│ │ ├── main.cpp
│ │ ├── webview.h
│ │ └── webview.cpp
│ ├── tray-plugin/ # 托盘插件
│ │ ├── CMakeLists.txt
│ │ ├── opschat-trayplugin.h
│ │ └── opschat-trayplugin.cpp
│ ├── quick-panel/ # 快捷面板
│ │ ├── CMakeLists.txt
│ │ ├── opschat-quickpanel.h
│ │ └── opschat-quickpanel.cpp
│ ├── control-center/ # 控制中心模块
│ │ ├── CMakeLists.txt
│ │ ├── opschat-ccmodule.h
│ │ └── opschat-ccmodule.cpp
│ ├── effects/ # DTK 窗口特效
│ │ ├── opschat-effects.h
│ │ ├── opschat-effects.cpp
│ │ ├── opschat-shortcut.h
│ │ ├── opschat-shortcut.cpp
│ │ ├── opschat-crashreporter.h
│ │ ├── opschat-crashreporter.cpp
│ │ ├── opschat-updatechecker.h
│ │ └── opschat-updatechecker.cpp
│ ├── systemd/ # systemd 服务
│ │ └── opschat.service
│ ├── autostart/ # 开机自启动
│ │ └── opschat-autostart.desktop
│ ├── dconfig/ # DConfig 元数据
│ │ └── org.opschat.client.json
│ ├── debian/ # Debian 打包
│ │ ├── control
│ │ ├── rules
│ │ ├── changelog
│ │ ├── compat
│ │ └── install
│ ├── assets/ # 图标和桌面文件
│ │ ├── opschat.desktop
│ │ └── icons/
│ └── install.sh # 安装脚本
├── docs/ # 文档
│ ├── BUILD.md # 构建文档
│ └── USAGE.md # 使用文档
├── LICENSE # PolyForm Noncommercial
└── README.md # 本文件

快速开始

环境要求

  • deepin 25 或 UOS V25
  • Python 3.10+
  • CMake 3.13+
  • Qt6 + DTK6 开发库

安装

# 克隆仓库
git clone https://github.com/helloworldpxy/OpsChat-Deepin.git
cd OpsChat-Deepin

# 运行安装脚本
bash desktop-client/install.sh

使用

  1. 启动 OpsChat 后端服务
  2. 启动桌面客户端 opschat-client
  3. 在系统托盘或 Dock 快捷面板中管理服务

开发说明

本项目使用了以下 deepin Skills:

  • dtk-development:DTK 原生应用开发
  • dde-tray-development:系统托盘插件开发
  • dde-shell-development:快捷面板插件开发
  • dde-control-center-development:控制中心模块开发

许可证

本项目采用 PolyForm Noncommercial License 1.0.0 许可证

使用限制

  • 禁止商业用途:本软件仅供个人学习、研究、非商业开源项目等非商业用途使用,严禁用于任何商业目的(包括但不限于出售、租赁、收费培训、收费服务、商业广告推广等)。
  • 禁止比赛用途:严禁将本软件用于任何形式的比赛、竞赛、评比活动(包括但不限于编程竞赛、开源比赛、项目评选等)。
  • 商业授权:如需商业使用(含比赛等有偿场景),请先联系开发者获取商业授权。

联系方式:请通过 OpsChat 仓库或 GitHub 私信联系开发者 helloworldpxy。

致谢

演示截图

00对话界面.png

01系统监控.png

02审计日志.png

03工具管理.png

04设置.png

开发过程说明

本文是开发过程记录,与 README 互补:README 介绍项目功能、技术栈、安装与使用;本文只讲如何借助 deepin Skills 一步步完成原生集成开发

1. 背景

OpsChat 是 B/S 架构的智能运维 Agent(FastAPI + Web 前端),原需浏览器访问 http://localhost:8000。本项目把它的 Web 服务以"类原生应用"方式集成进 deepin/UOS v25 桌面(功能清单见 README,不在此重复)。核心思路:客户端只做"原生壳",后端复用原项目全部逻辑。

2. 为什么用 deepin Skills

deepin Skills 是官方维护的 Skill 集合(框架知识、插件接口、工程实践),供支持 SKILL.md 的 AI Agent 加载,使生成代码符合 deepin 规范,减少对内部接口的猜测。安装:

bash <(curl -fsSL https://raw.githubusercontent.com/linuxdeepin/deepin-skills/master/scripts/install.sh)

3. 开发流程

需求分析 → 加载对应 Skill → 自然语言描述需求 → Agent 按规范生成代码与 CMake → 构建验证 → 迭代优化。

4. 各模块的开发要点

  • DTK 客户端DApplication 入口 + DWidget 内嵌 WebEngine 加载 Web 界面,关闭最小化到托盘,QLockFile 单实例;effects/DBlurEffectWidget/DPlatformWindowHandle 做模糊与圆角;CMake 用 QT_VERSION_MAJOR/DTK_SUFFIX 兼容 Qt5/Qt6。
  • 托盘插件:实现 PluginsItemInterfaceV2,每 5 秒探测 /health 显示状态,右键菜单按协议返回 JSON 数组分发(启停/打开浏览器/审计/设置),按 Dock::ThemeType_Dark 切换亮暗图标。
  • 快捷面板:复用 V2 基座,flags()Type_Quick | Quick_Panel_Single,面板内置打开 Web/审计/设置按钮,状态更新与托盘一致。
  • 控制中心:服务状态监控、启停、网络与安全设置,配置存 QSettings,状态经 systemctl 查询,按 DCC 规范注册模块。
  • 后端集成:新增 dconfig.py(DConfig→环境变量→默认值)、notifications.py(D-Bus 优先 + notify-send 兜底)、dbus_service.py 等模块,均带"失败非致命"降级保护,非 deepin 环境可运行。

5. 与 AI 协作的方法

提示词模板:

请加载  并按其中规范,帮我 <任务描述>。
目标环境:deepin 25 / UOS V25,Qt6 + DTK6。
约束:遵循 deepin 规范,中文注释,完善错误处理与日志。
  • 先明确目标 Skill 再提问,避免 Agent 采用通用(非 deepin 规范)方案。
  • 人工核对接口版本(V2 接口、QT_VERSION_MAJOR 适配);关键接口要求 Agent 回溯 SKILL.md 原文。
  • 排障时借助 Skill 定位:托盘不显示重启 dde-dock,面板不显示重启 dde-shell

6. 常见问题

问题 解决
找不到 DTK6 安装libdtk6*-dev
托盘/面板不显示 重启dde-dock / dde-shell
DConfig、通知在非 deepin 环境失败 回退环境变量/notify-send,失败非致命
服务状态不准 调整/health 探测超时与轮询间隔

7. 总结

  • 开发模式:自然语言描述 → Agent 按 Skill 规范生成代码 → 构建验证 → 迭代。
  • 降级兼容:deepin 专属能力均"失败非致命",非 deepin 平台仍可运行。
  • 复用而非重写:客户端仅做 Web 壳层,核心逻辑完全复用原项目。

功能与安装使用见 README;构建、使用、Skill 细节见 docs/BUILD.mddocs/USAGE.mddocs/SKILLS.md

AI对话截图1.png

AI对话截图2.png

AI对话截图3.png

Reply Favorite View the author
All Replies
avatar
骑🐖追帅哥bot
Moderator
5 hours ago
#1

企业微信截图_20260813093031.png这个是开源的?

Reply View the author
avatar
182******29
deepin
2 hours ago
#2
骑🐖追帅哥bot

企业微信截图_20260813093031.png这个是开源的?

现在更新成GPL v3了,前面没注意💦💦💦

Reply View the author