ChatGPT
一次编写、七端运行:Avalonia驱动的原生ChatGPT客户端,支持桌面/移动/Web全平台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一次编写、七端运行:Avalonia驱动的原生ChatGPT客户端,支持桌面/移动/Web全平台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你同时是 Windows 程序员、macOS 设计师和 Linux 服务器管理员,却只想在一个地方和 ChatGPT 对话——不必每次切换浏览器 tab、不必忍受网页版的卡顿和不稳定。wieslawsoltes/ChatGPT 正是为这类需求而生:它是一个用 C# 构建的原生 ChatGPT 客户端,通过 Avalonia UI 框架实现"一次编写、七端运行"的跨平台体验,覆盖 macOS、Windows、Linux、Android、iOS 和 Web 浏览器六大平台。
作者 wieslaw soltes 是 .NET 生态的资深贡献者(GitHub UID: 2297442),长期活跃于 Avalonia UI 社区。该项目从 2023 年初开始维护,至今已积累 1474 颗星、222 个 Fork,显示出其在跨平台 AI 客户端领域的稳定用户基础。
该项目并非一个单体应用,而是由多个分工明确的模块构成的解决方案(ChatGPT.sln),整体可分为三层:
第一层:核心库(ChatGPT.Core)
所有与 OpenAI API 的通信逻辑都封装在这里。它是一个标准的 .NET 类库(net8.0 + net462 双目标框架),对外暴露 ChatGPT 的调用接口。库本身不依赖任何 UI 框架,可以在任何 .NET 环境中复用——无论是桌面应用、CLI 工具还是服务端后台。
第二层:CLI 工具(ChatGPT.CLI)
基于 System.CommandLine 构建的命令行界面,是该项目的轻量级入口。CLI 工具以 .NET Tool 的形式发布(chatgpt),支持文件输入(-f/-d 批量处理文件)、目录递归(-r)、模式匹配(-p)、自定义输出(-o)等丰富参数,可以融入 shell 脚本实现自动化工作流。例如,用它批量翻译一批 markdown 文件、批量生成代码注释:
dotnet tool install --global ChatGPT.CLI
chatgpt -d ./docs/ -s settings.json --temperature 0.7
CLI 工具使用 AOT 裁剪模式发布,TrimMode=full,配合 .NET 9.0 的发布工具可生成各平台原生可执行文件(win-x64、linux-x64、linux-arm64、osx-x64、osx-arm64)。
第三层:跨平台 GUI(ChatGPT.UI 系列)
这是项目最亮眼的一部分。ChatGPT.UI 是 Avalonia UI 框架的应用实例,继承了 WPF/XAML 的声明式 UI 编程范式,同时支持各平台原生渲染:
GUI 版集成了 Markdown.Avalonia 渲染器,ChatGPT 返回的 Markdown 内容可以直接渲染为富文本;还集成了 Avalonia.HtmlRenderer 用于显示 HTML 内容。消息编辑支持快捷键:Enter 发送、F2 编辑、Shift+Enter 插入换行。
这个项目有几个值得关注的技术细节:
ChatGPT 聊天记录导入:支持从 chat.openai.com 导出的 JSON 备份文件(由 abacaj/chatgpt-backup 工具生成),这对于从网页版迁移过来的用户非常友好。
API URL 覆盖:通过 OPENAI_API_URL_CHAT_COMPLETIONS 环境变量,可以将 API 端点指向兼容 OpenAI 格式的第三方服务(如本地部署的 LLaMA 模型 API),使项目具备扩展到其他大语言模型的能力。
Samples 示例生态:项目自带多个示例程序:
部署路径有两条:
路径一:CLI 工具(推荐,非开发者用户)
仅需一行命令即可安装,无需克隆仓库或编译:
dotnet tool install --global ChatGPT.CLI --version 1.0.0-preview.17
安装后设置 API Key:
export OPENAI_API_KEY=sk-xxxx # Linux/macOS
set OPENAI_API_KEY=sk-xxxx # Windows
然后直接运行 chatgpt 即可进入交互模式。CLI 工具不需要图形环境,是服务器场景下的理想选择。
路径二:桌面 GUI(开发者/普通用户)
需要 .NET 7.0 SDK,克隆仓库后:
git clone https://github.com/wieslawsoltes/ChatGPT.git
cd ChatGPT
dotnet run --project src/ChatGPT.UI.Desktop # 直接运行
# 或发布为原生应用
dotnet publish -c Release src/ChatGPT.UI.Desktop -r win-x64
移动端构建需要额外安装移动端 workload:
dotnet workload install ios android wasm-tools
Web 版本托管在 GitHub Pages,访问 https://wieslawsoltes.github.io/ChatGPT/ 即可使用,无需任何安装步骤。
项目最后一次活跃提交是 2024 年 12 月底,距今已超过一年(截至 2026 年 6 月)。在此期间,OpenAI API 已经历了多次重大更新(如 Assistants API、GPT-4o 模型、全新 SDK 等),而该项目仍停留在基础的 Chat Completions API 层面。
不兼容问题:OpenAI 已弃用 chat/completions API 中的部分参数和模型名称(如 gpt-3.5-turbo),使用新版 API Key 可能导致响应异常。CLI 工具依赖 .NET 9.0(预览版),而非 LTS 版本,长期维护风险较高。
API Key 安全:应用要求用户输入 OpenAI API Key,但没有提供加密存储方案,Key 以明文保存在本地配置文件或环境变量中,在多用户共享设备上存在泄露风险。
GUI 跨平台一致性:Avalonia UI 在各平台的控件渲染效果存在细微差异,特别是中文输入法和复杂布局在非 Windows 平台的表现不如 Electron/Flutter 方案成熟。
wieslawsoltes/ChatGPT 代表了一类"轻量级 AI 客户端"的开发思路:利用成熟的跨平台 UI 框架(Avalonia),绕过 Electron 的性能缺陷,用原生代码实现更轻快的桌面体验。它的 CLI 工具链设计(dotnet tool + 参数化命令)也为 AI 工具的工程化落地提供了参考样本——将 AI 能力嵌入命令行工作流,比网页界面更适合开发者集成。
对于想要深入 .NET 生态 AI 应用开发的读者,这个项目的模块化设计值得学习:核心库与 UI 层完全解耦,使测试和复用变得简单;对 CommunityToolkit.Mvvm 的运用展示了 MVVM 模式在跨平台场景中的优雅实践。