你运行的 Kimi Code 版本是?
0.40.1
你使用的是哪个开放平台/订阅?
未登录,本地 Kimi Code Web UI。
你使用的是哪个模型?
gpt-5.6-luna max(该问题看起来与模型无关)
你的电脑平台是?
Darwin 24.5.0 arm64 arm
你遇到了什么问题?
打开一个包含大量历史工具调用输出的会话后,Web 页面持续占用较高 CPU。即使点击停止、页面显示“已手动终止”,CPU 占用仍不会恢复正常;其他较小会话页面正常。
对问题页面进行运行时检查后得到:
- DOM 节点约 136,000 个,页面文本约 5.77 MB。
- 页面包含约 94 个 activity run、693 条 tool line、6,692 条搜索匹配结果;历史工具输出被全量挂载。
- 运行中测得 5 秒仅产生 134 帧,平均帧间隔约 37.4 ms(约 27 FPS),并出现 52 ms long task。
- 执行
document.getAnimations().forEach(a => a.pause()) 后,同一页面 5 秒产生 597 帧,平均帧间隔约 8.38 ms(约 119 FPS)。DOM 未减少。
- 手动停止后已不再观察到该会话的 task API 轮询,但页面仍保留 13 个无限动画:7 个历史
.kw-dot--running、3 个 .ui-spinner、3 个头像动画。
- 页面加载期间还观察到 108 个
.activity-run 的 kimi-card-in 动画。
- 控制台存在 WASM MIME 报错,但正常会话也有同样报错,因此不是本次高 CPU 的主要原因。
看起来是大型会话全量 DOM 挂载与未清理的运行态动画叠加导致的前端持续重绘/合成开销。停止任务只终止后端执行,没有清理历史卡片中的运行动画状态。
复现步骤?
- 创建或打开一个包含大量工具调用、搜索结果和长输出的会话。
- 在 Kimi Code Web 页面打开该会话。
- 观察浏览器页面 CPU 占用明显升高。
- 点击停止,确认页面出现“已手动终止”。
- 再次观察 CPU,占用仍持续。
- 在 DevTools Console 执行:
document.querySelectorAll('*').length
document.getAnimations().map(a => ({
state: a.playState,
target: a.effect?.target?.className,
timing: a.effect?.getTiming?.()
}))
- 再执行以下临时规避代码,CPU/帧率会明显恢复:
document.getAnimations().forEach(a => a.pause())
复现会话 ID:session_8a40b5e6-7cef-4e40-8b09-8320582c21e2(本地实例)。
期望的行为是什么?
任务停止后应清除所有历史运行态动画;大型会话中的历史消息和工具输出应采用虚拟列表、按需挂载或 content-visibility,不可让视口外的十万级 DOM 持续参与渲染。
轮询与动画状态更新也应与整棵会话树隔离;页面不可见或任务结束后应停止相关动画和轮询。
补充信息
作为对照,普通会话约 9,971 个 DOM 节点、38 万字符,5 秒约 601 帧且无 long task。问题会话的节点数约为其 13.6 倍。
当前临时规避方式是打开 DevTools Console 执行:
document.getAnimations().forEach(a => a.pause())
刷新页面后需要重新执行。
你运行的 Kimi Code 版本是?
0.40.1
你使用的是哪个开放平台/订阅?
未登录,本地 Kimi Code Web UI。
你使用的是哪个模型?
gpt-5.6-luna max(该问题看起来与模型无关)
你的电脑平台是?
Darwin 24.5.0 arm64 arm你遇到了什么问题?
打开一个包含大量历史工具调用输出的会话后,Web 页面持续占用较高 CPU。即使点击停止、页面显示“已手动终止”,CPU 占用仍不会恢复正常;其他较小会话页面正常。
对问题页面进行运行时检查后得到:
document.getAnimations().forEach(a => a.pause())后,同一页面 5 秒产生 597 帧,平均帧间隔约 8.38 ms(约 119 FPS)。DOM 未减少。.kw-dot--running、3 个.ui-spinner、3 个头像动画。.activity-run的kimi-card-in动画。看起来是大型会话全量 DOM 挂载与未清理的运行态动画叠加导致的前端持续重绘/合成开销。停止任务只终止后端执行,没有清理历史卡片中的运行动画状态。
复现步骤?
复现会话 ID:
session_8a40b5e6-7cef-4e40-8b09-8320582c21e2(本地实例)。期望的行为是什么?
任务停止后应清除所有历史运行态动画;大型会话中的历史消息和工具输出应采用虚拟列表、按需挂载或
content-visibility,不可让视口外的十万级 DOM 持续参与渲染。轮询与动画状态更新也应与整棵会话树隔离;页面不可见或任务结束后应停止相关动画和轮询。
补充信息
作为对照,普通会话约 9,971 个 DOM 节点、38 万字符,5 秒约 601 帧且无 long task。问题会话的节点数约为其 13.6 倍。
当前临时规避方式是打开 DevTools Console 执行:
刷新页面后需要重新执行。