WorkBuddy 吃了 10GB 磁盘之后,我终于看懂了它的内存账单
上周三下午,我在寝室赶一篇课程论文,电脑风扇突然开始狂转。打开任务管理器一看,WorkBuddy 占了 1.8GB 内存,C 盘可用空间从 40GB 掉到 12GB。我当时有点懵,这工具我记得昨天还好好儿的。顺手点开资源监视器查了一下,C:\ProgramData\WorkBuddy 加上用户目录下的 .workbuddy,加起来超过了 10GB。刚好那几天刷到一篇 CSDN 文章,标题写着「优化 WorkBuddy 模型内存占用:从吃内存到按需加载」,我点进去看了一圈,又翻了其他几篇讲 WorkBuddy 磁盘占用的帖子,才把这笔账彻底算明白。
先说我自己的环境。我用的是一台 Windows 笔记本,32GB 内存,今年年初才买的,配置不算差。我之前写帖子提过,用 WorkBuddy 整理报销单、做表格,这些活儿它干得挺好,所以我顺手就把它设成了开机启动,图个方便。
结果这个方便后面全是代价。WorkBuddy 的安装包只有 150 到 180MB,看着很轻巧,但解压之后实际占用的空间超过 2.3GB。好几篇相关文章里都提到过这个数字,我这边实测也差不多,装完当天右键看了一下安装目录,2.4GB,还包括了 Python 插件宿主和 Electron 渲染进程那一套东西。Electron 应用大家都懂,本身就是个浏览器套壳,内存开销天然比原生应用高一截。
然后是缓存。WorkBuddy 跑起来之后,会建索引、写快照、存日志,还有各种模型缓存。我那天去找它到底什么东西占了 10GB,发现大部分是这类文件。对我这种用了一阵子的人来说,它每次处理报销单、解析文档、跑技能,都会留下痕迹。日积月累,体积就爆炸了。我看了几篇清理教程,比较关键的一点是删之前得先弄清哪些是资产,哪些是垃圾。比如 workspace 里我自己建的文件夹和导出的数据是资产,要留着;traces 和 logs 这种纯记录性的东西可以清掉。我照着操作,把日志关了,把临时目录清理了一遍,删完大约释放了 4.5GB。
但磁盘只是一部分,内存才是更要命的。前文提到那篇 CSDN 文章把内存吃在哪里拆成四个来源:模型权重、激活与 KV 缓存、常驻服务、多会话叠加。模型权重不用多说,7B 的模型用 FP16 就是大约 14GB,量化为 INT4 大约 4GB。WorkBuddy 集成多模型推理,这部分开销绕不开。激活和 KV 缓存是推理过程中的临时状态,对话越长占用越大,这个也能理解。真正让我膈应的是后两条,常驻服务和多会话叠加。
我最开始不知道 WorkBuddy 会在后台挂这么多进程。关掉窗口之后,Python 插件宿主、推理线程、Electron 渲染进程居然还留在后台,每个几十到几百 MB 不等。论坛里搜了一下,有人反映 Mac 版的 WorkBuddy 卡顿掉帧,说关掉之后这些进程依然常驻,持续占用内存。虽然我不是 Mac,但这个描述跟我这边的现象是一致的。而且默认设置下,它会预加载 NLP 和 OCR 子模型,一次占用可能就超过 3GB 堆内存。我一看这个数据,再看自己那 1.8GB 的占用,突然觉得合情合理了。合情合理归合情合理,不代表我乐意接受。
我的处理方式是改配置。那篇文章提到一个参数叫按需加载,原话是 -Dworkbuddy.model.load.strategy=on-demand,意思是模型别全都提前塞进内存,用哪个技能再加载哪个。另外还有一个参数是对文档解析类任务做分块处理,避免一次性吃太多。我试了一下,按这个思路调整之后,WorkBuddy 启动时不再预加载全部模型,内存占用从之前的 1.8GB 左右降到了 500MB 上下,打开会话之后才涨到 1.2GB 左右。启动速度也从原本的二十几秒变成八九秒。当然,代价是第一次跑某个技能的时候会慢一点,要现场加载模型。但对我来说,这个取舍完全值得。
还有几个细节是我折腾过程中发现的。WorkBuddy 的默认设置里,常驻后台和开机自启是打开的,这两个选项直接导致了我之前遇到的状况。另外,多会话叠加的问题也需要注意。如果你习惯一次性开五六个窗口,每个都带着独立的上下文,内存翻着倍地涨。我现在的习惯是开一个会话,用完就关,最多开两个,一个跑数据一个写文档,再多了我自己也乱。
不过话说回来,我看了五六篇关于 WorkBuddy 内存的文章,发现很多人的讨论方向偏了。一种观点是「内存占用高是正常设计,吃内存是因为 AI 工具本来就这么重」,这话没错,但问题是「正常」不等于「不能优化」。另一种观点是教你配一台 64GB 内存的电脑来跑,我觉得这是在逃避问题。用户装工具是为了干活,不是为了跟内存打架。WorkBuddy 让我比较满意的地方在于,它的配置项是开放的,按需加载、分块处理、关闭常驻,这些参数都允许用户自己调整。但我也要说它的不是:默认设置对低配用户太不友好了。一个学生党如果只有 16GB 内存,装完默认设置直接跑,可能什么都还没干,电脑先卡成幻灯片。
我在论坛里回过一个帖子,说 WorkBuddy 好用的前提是会用,别把它当许愿池。同样的话再重复一次:内存优化这件事,工具本身给不给开关是一回事,用户愿不愿意动手调是另一回事。如果你愿意花二十分钟看一看设置和配置项,这台工具其实能比默认状态轻得多。当然,我不是说每个用户都应该去研究 JVM 参数,我理解普通人的心态是装了就想用。但至少,它在文档里把这些选项写明白了,对我这种愿意折腾的人,这个自由度很重要。
这次清理之后,我重新算了一笔账,同样是处理报销单,优化前 WorkBuddy 峰值内存 2.1GB,优化后全程在 1.3GB 左右,磁盘占用从 10GB 降到了大约 5.5GB。数据没有多夸张,但在五月这波 AI 工具里,能让我自己控制资源开销的,WorkBuddy 算做得比较到位的了。
过两天我打算再看看它新版本里那个灵感分享口令的功能,感觉跟团队协作场景挺配的。到时候顺便看新版本的资源策略有没有变化,有结果的话再来更新。
物界前沿