运维123 - Qt
type: channel
link: https://www.sddts.cn/index.php/tag/Qt/
items: AyuGram Desktop Telegram 客户端架构技术分析

AyuGram Desktop Telegram 客户端架构技术分析
type: item
date: 2026-01-26T21:35:50+00:00
description: AyuGram Desktop Telegram 客户端架构技术分析一、项目概述1. 项目背景A. 基本信息AyuGram Desktop 是一个基于 Telegram Desktop 的第三方修改版客户端，由 AyuGram 团队开发并维护。该项目 fork 自 telegramdesktop/tdesktop，在保持原有功能的基础上，增加了大量定制化功能和隐私保护特性。B. 核心定位具有强大定制功能的桌面 Telegram 客户端提供完整的 Ghost 模式（隐私保护）支持开源项目，遵循 GPL-3.0 许可证C. 项目规模GitHub Stars：4.6k+Forks：330+主要编程语言：C++（70.1%）、C（28.0%）代码提交：超过 22,000 次提交开发周期：持续更新中2. 技术特征A. 基础架构基于 Telegram Desktop（tdesktop）分支开发当前分支：dev，领先上游 587 次提交，落后 150 次提交跨平台支持：Windows、macOS、LinuxB. 核心差异与官方 Telegram Desktop 相比，AyuGram 在以下方面有显著不同：隐私保护功能增强用户界面深度定制消息管理功能扩展多平台包管理器支持二、核心功能分析1. 隐私保护功能A. Ghost 模式（幽灵模式）Ghost 模式是 AyuGram 的核心特色功能，提供灵活的隐私控制：graph TD A[Ghost 模式] --> B[阅读状态控制] A --> C[输入状态控制] A --> D[在线状态控制] B --> B1[已读回执隐藏] B --> B2[选择性已读] B --> B3[延迟已读] C --> C1[正在输入隐藏] C --> C2[录音状态隐藏] D --> D1[伪装在线] D --> D2[最近上线时间控制]实现机制：客户端拦截发送给 Telegram 服务器的状态更新包本地维护状态机，区分真实状态和展示状态通过配置文件精细控制各类状态的展示行为B. 消息历史管理本地缓存已删除消息防止消息被撤回（Anti-recall）消息过滤器功能（v4.2.0+ 新增）支持按条件筛选和搜索历史消息C. 隐私状态控制独立控制每聊天的阅读状态全局或按联系人设置输入状态灵活的在线时间伪装选项2. 用户界面定制A. 字体定制支持自定义字体族和大小分别设置界面字体和消息字体支持等宽字体配置（代码块显示）B. 外观增强自定义聊天背景消息气泡样式调整图标主题替换（Solar Icon Set）macOS 的 Force Touch 快捷操作C. 界面布局可调整聊天列表宽度消息密度控制显示/隐藏界面元素（如顶部标签页通知计数）3. 高级功能A. 本地 Telegram Premium解锁部分 Premium 功能限制无需官方订阅即可使用本地模拟 Premium 状态B. 翻译器集成内置翻译功能支持多语言即时翻译可配置翻译服务提供商C. 直播模式（Streamer Mode）隐藏敏感信息自动屏蔽通知内容适合直播或录屏场景D. 媒体预览增强快速媒体查看macOS 上的 Force Click 快速反应媒体文件管理优化三、技术架构1. 代码结构graph LR A[Telegram Desktop tdesktop] --> B[AyuGram 修改层] B --> C[UI 层] B --> D[网络层] B --> E[存储层] B --> F[功能扩展] C --> C1[Qt/QML 界面] C --> C2[自定义样式] D --> D1[MTProto 协议] D --> D2[状态拦截器] E --> E1[SQLite 数据库] E --> E2[本地缓存] E --> E3[sqlite_orm] F --> F1[Ghost 模式] F --> F2[消息过滤] F --> F3[翻译器]2. 核心依赖库A. 基础框架Qt Framework：跨平台 UI 框架CMake：构建系统C++17/C++20：主要编程语言B. 数据处理nlohmann/json：JSON 解析库SQLite：本地数据库sqlite_orm：ORM 框架C. 平台适配Windows：MSVC + Visual StudiomacOS：Xcode + HomebrewLinux：GCC/Clang + 各发行包管理器3. 构建系统A. CMake 配置项目采用现代 CMake 构建系统：模块化子目录结构跨平台编译配置依赖项自动检测B. 平台特定构建不同平台有不同的构建要求和依赖：graph TB A[构建系统] --> B[Windows] A --> C[macOS] A --> D[Linux] B --> B1[MSV…