English | 简体中文
carton 是一个基于 sing-box 的桌面客户端,交互和信息组织尽量贴近官方 SFM,同时更看重性能、响应速度,以及一些更实用的增强功能。
目前支持 Windows 和 Linux。暂不提供 macOS 版本,因为 macOS 上已经有 SFM。
项目方向:
- 尽量贴近官方 SFM 的体验,降低迁移成本
- 更看重界面响应、启动速度和长期运行时的资源占用
- 直接使用你自己的配置和规则启动
sing-box,只额外提供少量开关式选项 - 在不打乱主流程的前提下补上一些实用能力
- 使用非 Electron / Tauri / Web 技术栈的桌面实现,内存占用更低、性能更好
carton 启动时不会直接整份覆盖你的 sing-box 配置,而是在原配置基础上生成运行时配置,只修改少量和桌面开关直接相关的内容。
这样设计是因为很多用户都很反感第三方 GUI 大面积覆盖自己已经配好的配置和规则,carton 会尽量少碰你原本手写或订阅生成的内容。
log:只会更新log.level;如果原配置没有log,才会补一个最小可用的log对象inbounds:只会处理mixed和tun两类入口- 对已有
mixedinbound,只更新listen、listen_port、set_system_proxy,其他字段保持原样 - 对已有
tuninbound,优先保留原配置中的address,缺失时才补上默认地址;auto_route和strict_route会更新为true - 如果配置里原本没有对应的
mixed/tuninbound,运行时才会补上;如果关闭tun,则会移除对应的tuninbound
carton不是官方 SFM 客户端,也不隶属于 sing-box 官方团队。
| Dashboard | Groups |
|---|---|
![]() |
![]() |
| Connections | Profiles |
![]() |
![]() |
- Dashboard / Groups / Profiles / Connections / Logs / Settings 六个核心页面
- 启动、停止、查看状态、切换分组等常用操作集中在主流程中
- 内置 Clash API / WebUI 入口,方便和现有使用习惯衔接
- 基于
Avalonia+.NET 10 - 非 Electron、Tauri 和其他基于 Web 技术的桌面框架
- 很多同类方案在实际使用里,启动后内存占用很容易来到
200MB+ - 提供
NativeAOT发布脚本,用来进一步改善启动速度和运行开销 - 页面按需加载,并对后台页面做了释放和刷新控制,减少长期运行时的资源占用
- 支持本地配置创建、导入、编辑
- 支持远程订阅导入、手动更新、自动更新间隔
- 启动前可为不同配置保存独立运行参数
- 如果你没有
sing-box订阅地址,可以使用sublink-worker进行转换;它提供了app.sublink.works在线工具,可将多种订阅或协议链接转换为sing-box配置。若是机场用户,请在User Agent中输入clash或xray
- 读取并展示
outbound groups - 支持节点切换、延迟测试、URLTest 结果刷新
- 托盘菜单可直接查看和切换分组
- 可选在切换节点后自动断开受影响的连接
- 系统代理切换
- TUN / 监听端口 / LAN 访问 / 日志级别等运行时选项
- 实时流量、内存占用、会话时长、连接列表、日志查看
- 支持 sing-box 内核下载、更新、自定义内核安装与内核切换
- 应用更新通道、备份导出/导入、便携模式数据目录切换
- 中英文界面与主题设置
Avalonia UI.NET 10CommunityToolkit.Mvvmsing-boxVelopack
WindowsLinux
.NET 10 SDK- Windows 本地调试 TUN 提权或发布包需要
Rust toolchain(cargo) - Windows NativeAOT 发布需要安装
Desktop development with C++或等效的 MSVC / Windows SDK 构建工具链 - 如需生成 Windows 安装包,还需要
NSIS,并确保makensis可用;GitHub Actions 会自动安装 NSIS
dotnet build carton.slnxdotnet run --project src\carton.GUI\carton.GUI.csprojWindows Debug 构建会在检测到 cargo 时自动构建并复制 carton-helper.exe 到 GUI 输出目录;如果未安装 Rust,应用仍可启动,但本地调试时的 Windows TUN 提权启动不可用。
dotnet test src\carton.GUI.Tests\carton.GUI.Tests.csproj
cargo test --manifest-path src\carton.Helper\Cargo.toml向 main 的 push / PR 会通过 .github/workflows/ci.yml 自动跑上述构建与测试。
scripts\test-publish-win-aot.bat win-x64 Release或使用带安装包封装的脚本:
scripts\build-release-win-x64.bat其中:
scripts\test-publish-win-aot.bat只执行 NativeAOT 发布scripts\build-release-win-x64.bat会执行scripts\build-release-win-x64.ps1,并额外生成便携压缩包和 NSIS 安装包
./scripts/test-publish-linux-aot.sh linux-x64 Release输出目录为 artifacts/publish/<rid>。
仓库里已经包含多个运行时目标,现成脚本主要围绕 Windows AOT 构建流程整理。
如果你更在意:
- 尽量接近官方 SFM 的体验
- 更偏性能取向的实现
- 一些官方客户端之外但又不喧宾夺主的实用功能
那么 carton 基本就是按这个方向来做的。
本项目基于 GNU General Public License v3.0(GPL-3.0)开源,详见 LICENSE。



