[分享创造] 做了个菜单栏小工具:找出是哪个进程把 Mac 烤热的,把它挪到能效核继续跑
跑多 agent 的时候遇到一个很烦的问题:Mac 烫到 70℃,风扇全速,但打开活动监视器根本看不出是谁干的。 十几行一模一样的 node ,CPU 百分比还在跳,一行行对下去二十分钟没了。而且很多时候元凶是某个跑了两小时的 agent ,你也不想直接 kill ——中断了上下文就丢。 所以写了个菜单栏 App ,叫 Manatee ,就做两件事:找出谁在烫,把它挪到能效核。 怎么找出「谁」 难点是同一个 agent 会 fork 出一堆同名进程,按可执行名分组没有意义。所以按 rootPid 聚合成会话,一个会话一行,CPU 百分比是整棵进程树求和。 另一个坑是判定。编译的时候瞬时 800% 是正常的,不能算异常。所以记录每个会话最近 6 分钟的采样, 连续 5 分钟超过 200%(两个核) 才标记出来。实测这个窗口能把编译抖动和「真的卡住了」区分开。 相关代码在 SessionHistory.swift : /// 记录每个会话最近 6 分钟的 CPU 采样,用来判断「连续满载」。 /// 只看瞬时值会把编译时的短暂 800% 当成异常,所以必须带时间窗。 private let
Read original sourceSource record
Research analysis
What changed
Source account: 跑多 agent 的时候遇到一个很烦的问题:Mac 烫到 70℃,风扇全速,但打开活动监视器根本看不出是谁干的。 十几行一模一样的 node ,CPU 百分比还在跳,一行行对下去二十分钟没了。而且很多时候元凶是某个跑了两小时的 agent ,你也不想直接 kill ——中断了上下文就丢。 所以写了个菜单栏 App ,叫 Manatee ,就做两件事:找出谁在烫,把它挪到能效核。 怎么找出「谁」 难点是同一个 agent 会 fork 出一堆同名进程,按可执行名分组没有意义。所以按 rootPid 聚合成会话,一个会话一行,CPU 百分比是整棵进程树求和。 另一个坑是判定。编译的时候瞬时 800% 是正常的,不能算异常。所以记录每个会话最近 6 分钟的采样, 连续 5 分钟超过 200%(两个核) 才标记出来。实测这个窗口能把编译抖动和「真的卡住了」区分开。 相关代码在 SessionHistory.swift : /// 记录每个会话最近 6 分钟的 CPU 采样,用来判断「连续满载」。 /// 只看瞬时值会把编译时的短暂 800% 当成异常,所以必须带时间窗。 private let
Version & cost evidence
Recent records to compare: “Show HN: We Gave AI Coding Agents Production Memory” (Show HN, Nov 9, 2026); “Show HN: A doc server where Claude or local agent edits based on added comments” (Show HN, Nov 9, 2026). Shared themes are navigation hints; they have not been verified as the same need or independent corroboration.
Who is affected
Identify the existing workflow this change affects before recommending an upgrade. Launch attention does not establish improvement; an API, pricing or availability change may instead create migration work.
Missing comparison points
Missing checks: old versus new behavior, affected plans and regions, availability date, compatibility, rollback path and cost under the same workload.
Migration check
Save the release or policy notice, run the same task on the old and new option, and compare outputs and the full bill. For retirement notices, verify the deadline before scheduling migration.