20年持续进化:Sloth从2004到2025的版本迭代全记录
Sloth作为一款专为macOS设计的开源工具,自2004年首次发布以来,历经20年持续迭代,已成为开发者和系统管理员分析进程资源占用的重要工具。这款被定义为"lsof图形化界面"的应用README.md,通过直观的可视化方式展示所有进程打开的文件、目录、套接字(Socket)和管道(Pipe)等资源,帮助用户快速定位系统资源占用问题。
早期奠基(2004-2009):从命令行到图形界面的跨越
2004年2月21日,Sloth 1.0版本正式发布CHANGES.md,标志着这款工具的诞生。作为lsof命令的GUI前端,初代版本就实现了进程资源监控的核心功能,但界面和交互相对基础。当时的开发团队面临的主要挑战是如何将lsof输出的复杂文本信息转化为用户友好的可视化展示。
2004年3月5日发布的1.3版本CHANGES.md引入了两项关键改进:搜索过滤器实时更新和列排序功能,同时通过Cocoa绑定重构代码提升了性能。这些改进显著提升了工具的实用性,为后续发展奠定了基础。这一时期的代码主要集中在基础UI框架搭建和lsof输出解析,对应源码文件如SlothController.h和Item.h至今仍保留着早期设计的痕迹。
2006年7月28日,Sloth发布了1.3.1版本CHANGES.md,成为支持PowerPC和Intel架构的通用二进制应用,适应了当时苹果芯片架构的转型。这一版本的图标设计也进行了更新,对应资源文件可在assets/old_icon/目录中找到历史版本。
功能拓展(2010-2016):从基础监控到专业分析
2010年7月8日,1.5版本CHANGES.md实现了列排序和列重排功能,并修复了多个稳定性问题。这一阶段的开发重点开始转向提升用户体验和功能丰富度,如支持复制和拖放选中项,增强了工具的实用性。
2016年2月24日发布的1.6版本CHANGES.md是一个重要里程碑,引入了异步刷新机制和全新过滤选项,使应用性能大幅提升。更重要的是,开发团队将项目迁移到ARC(自动引用计数)和现代Objective-C语法,并使用Xcode 7进行构建CHANGES.md,这一重构为后续功能开发提供了更坚实的代码基础。源码中的LsofTask.h和LsofTask.m文件记录了这一时期异步处理lsof输出的实现逻辑。
现代转型(2017-2020):适配新系统与UI革新
2017年6月7日,Sloth 1.9版本CHANGES.md引入了文件拖放功能和Cmd-F聚焦过滤器等便捷操作,同时增加了紧凑界面尺寸选项。这些改进显示开发团队对用户体验的持续关注。同年10月1日发布的2.0版本CHANGES.md则新增了卷过滤功能和"按PID排序"子菜单,进一步强化了工具的专业性。
2018年成为Sloth功能迭代最为频繁的一年,先后发布了多个重要版本。3月7日的2.2版本CHANGES.md引入了访问模式过滤(读/写/读写)和用户ID排序功能,并更新了高分辨率的管道和套接字图标,对应资源文件为assets/pipe-240px.png和assets/socket-512px.png。5月10日的2.4版本CHANGES.md则实现了TCP socket状态显示(如LISTEN、ESTABLISHED)和IPv6支持,这些功能通过IPUtils.h等工具类实现。
2020年11月24日,3.0版本CHANGES.md实现了对Apple Silicon芯片的原生支持,成为通用二进制应用,同时更新了Big Sur风格的方形图标assets/SlothIcon.iconset/。信息面板新增了卷名称和挂载点显示,进一步完善了资源监控的信息维度。
成熟稳定(2021-2025):专注体验优化与架构升级
2021-2025年间,Sloth进入了成熟稳定期,版本迭代节奏放缓,但持续进行体验优化和架构升级。2021年3月18日的3.1版本CHANGES.md引入了可配置的刷新间隔和默认正则过滤器设置,满足了不同用户的使用习惯。
2025年5月19日发布的3.4版本CHANGES.md是目前的最新版本,主要改进包括:应用/进程或文件的"复制"功能现在同时复制文件系统表示和字符串,信息面板中的异步文件信息处理速度提升,以及多项细微改进。这些优化体现了开发团队对性能和用户体验的持续追求。
这一时期的技术架构升级主要体现在Util/目录下的工具类完善,如ProcessUtils.h进程信息处理、FSUtils.h文件系统工具等,构建了更健壮的底层工具链。同时,通过sparkle/目录下的Sparkle框架实现了应用自动更新功能,确保用户能够及时获取最新版本。
技术架构解析:从lsof解析到UI呈现的完整链路
Sloth的核心技术架构围绕lsof命令输出解析和可视化展示展开,主要包含三个层次:数据采集层、数据处理层和UI展示层。
在数据采集层,LsofTask.h和LsofTask.m实现了对lsof命令的封装和执行,通过异步任务获取系统进程信息。为支持特权操作,应用集成了STPrivilegedTask.h特权任务执行框架,允许用户在不重启应用的情况下切换root权限CHANGES.md。
数据处理层负责解析lsof输出并构建内存数据模型,关键类包括Item.h(资源项模型)和SlothController.h(控制器核心)。这一层还实现了复杂的过滤和排序逻辑,如正则表达式过滤CHANGES.md和多维度排序功能CHANGES.md。
UI展示层则通过InfoPanelController.h实现详细信息面板,展示进程和资源的详细属性。界面组件如卷过滤弹出按钮由VolumesPopUpButton.h实现,图标工具类IconUtils.h负责不同类型资源的图标展示。
开源协议与生态:20年持续迭代的保障
Sloth采用BSD 3-Clause开源协议LICENSE.txt,这一宽松的开源许可允许用户自由使用、修改和分发软件,只要保留原始版权声明。这种开源模式为项目吸引了持续的社区贡献,也是其能够20年持续迭代的重要因素之一。
项目构建系统通过Makefile实现,支持命令行构建,同时提供Sloth.xcodeproj/工程文件方便Xcode开发。自动化更新功能由sparkle/Sparkle.framework/提供支持,确保用户能够无缝获取更新。
结语:20年演进的启示
Sloth的20年迭代史折射出macOS应用开发的变迁历程:从PowerPC到Apple Silicon的架构迁移、从OS X到macOS的系统升级、从Carbon到Cocoa的框架转型。这款工具能够历久弥新的关键在于始终聚焦用户需求——将复杂的系统信息以直观方式呈现,并随着技术趋势不断演进。
对于当代开发者,Sloth的演进史提供了宝贵启示:保持核心功能的稳定性、渐进式而非颠覆性升级、关注性能优化和用户体验。这些原则使得Sloth在同类工具竞争中始终保持竞争力,成为macOS平台上进程资源监控的首选工具之一。随着macOS生态的持续发展,我们有理由相信Sloth将继续进化,为用户提供更强大的系统资源分析能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



