背景
对齐 Claude Code 2.1.208 内存泄漏 cap 特性 (fusion-code-enhance-0819.md Tier-1 #7 )。
CC 2.1.208 为长会话加 3 处内存 cap: LSP LRU 50 文档 / MCP stderr 64MB / 文件编辑读缓存 16MB。
审计结果 (对照 main 实际)
子项
状态
MCP stderr 64MB
✅ 已落地 — src/services/mcp/client.ts:1009 if (stderrOutput.length < 64 * 1024 * 1024)
LSP open-docs 50 上限
⬜ 缺 — src/services/lsp/LSPServerManager.ts:66 openedFiles: Map<string,string> 无 LRU 无 max, 仅 shutdown/closeFile/closeFilesNotIn 删, 压缩间无界增长
fileReadCache 16MB
⬜ 缺 — src/utils/fileReadCache.ts:16 仅 entry-count cap (1000), 无字节 cap, 1000×10MB=10GB 风险
本 issue 范围
补两处真 gap (MCP stderr 已 cap, 不动):
LSP open-docs 50 上限 : LSPServerManager.openFile() set 前, 若 openedFiles.size >= 50, 淘汰最旧 (Map 插入序首项) 经 closeFile() 发 didClose 释放。LRU 近似 (与 fileReadCache FIFO 风格一致)。
fileReadCache 16MB 字节上限 : fileReadCache.ts 加 maxCacheBytes = 16 * 1024 * 1024, 累积字节超限触发 10% 批淘汰 (复用现有 entry-count 淘汰路径, 合并判断)。
验收
typecheck 0 / build + dev:full / 测试全绿
新增 cap 单测 (LSP 51 文件触发淘汰; fileReadCache 超 16MB 淘汰)
enhance-0819.md 请求: CLAUDE.md 解析库抽离为独立模块 #7 标 ✅
Co-Authored-By: Claude Fable 5 [email protected]
背景
对齐 Claude Code 2.1.208 内存泄漏 cap 特性 (fusion-code-enhance-0819.md Tier-1 #7)。
CC 2.1.208 为长会话加 3 处内存 cap: LSP LRU 50 文档 / MCP stderr 64MB / 文件编辑读缓存 16MB。
审计结果 (对照 main 实际)
src/services/mcp/client.ts:1009if (stderrOutput.length < 64 * 1024 * 1024)src/services/lsp/LSPServerManager.ts:66openedFiles: Map<string,string>无 LRU 无 max, 仅 shutdown/closeFile/closeFilesNotIn 删, 压缩间无界增长src/utils/fileReadCache.ts:16仅 entry-count cap (1000), 无字节 cap, 1000×10MB=10GB 风险本 issue 范围
补两处真 gap (MCP stderr 已 cap, 不动):
LSPServerManager.openFile()set 前, 若openedFiles.size >= 50, 淘汰最旧 (Map 插入序首项) 经closeFile()发 didClose 释放。LRU 近似 (与 fileReadCache FIFO 风格一致)。fileReadCache.ts加maxCacheBytes = 16 * 1024 * 1024, 累积字节超限触发 10% 批淘汰 (复用现有 entry-count 淘汰路径, 合并判断)。验收
Co-Authored-By: Claude Fable 5 [email protected]