@@ -581,18 +581,11 @@ if (snipResult !== undefined) {
581581
582582### 问题详情
583583
584- ` LSPServerManager ` 中的 ` openedFiles: Map<string, string> ` 追踪所有通过 ` didOpen ` 打开的文件。` closeFile ()` 方法存在可以发送 ` didClose ` 通知并清理 Map 条目,但代码注释明确标注:
584+ ` LSPServerManager ` 中的 ` openedFiles: Map<string, string> ` 追踪所有通过 ` didOpen ` 打开的文件。` closeAllFiles ()` 方法已实现,在 compaction 后通过 ` postCompactCleanup ` 自动调用,释放所有 LSP 服务器端的文件状态。
585585
586- ```
587- NOTE: Currently available but not yet integrated with compact flow.
588- TODO: Integrate with compact - call closeFile() when compact removes files from context
589- ```
586+ ### 修复方式(已完成)
590587
591- 长时间会话中,每次读取/编辑文件都会通过 ` openFile() ` 添加条目,但 compaction 不会清理这些条目,导致 Map 无限增长。
592-
593- ### 修复方式
594-
595- 1 . ** 添加 ` closeAllFiles() ` 方法** :遍历 ` openedFiles ` Map,对每个文件发送 ` didClose ` 通知,然后清空 Map。Best-effort 错误处理。
588+ 1 . ** ` closeAllFiles() ` 方法** (LSPServerManager.ts:414):遍历 ` openedFiles ` Map,对每个文件发送 ` didClose ` 通知,然后清空 Map。Best-effort 错误处理。
596589
597590``` typescript
598591async function closeAllFiles(): Promise <void > {
@@ -612,18 +605,16 @@ async function closeAllFiles(): Promise<void> {
612605}
613606```
614607
615- 2 . ** 集成到 ` postCompactCleanup ` ** :在 compaction 后自动调用 ` closeAllFiles() ` ,释放所有 LSP 服务器端的文件状态 。
608+ 2 . ** 集成到 ` postCompactCleanup ` ** (已完成) :在 compaction 后自动调用 ` closeAllFiles() ` ,使用 fire-and-forget async 模式(与 sweepFileContentCache 一致) 。
616609
617610``` typescript
618- // postCompactCleanup.ts
619- try {
620- const lspManager = getLspServerManager ()
621- if (lspManager ) {
622- await lspManager .closeAllFiles ()
623- }
624- } catch {
625- // LSP module may not be available in all environments
626- }
611+ // postCompactCleanup.ts — isMainThreadCompact guard
612+ void import (' ../lsp/manager.js' )
613+ .then (m => {
614+ const manager = m .getLspServerManager ()
615+ if (manager ) return manager .closeAllFiles ()
616+ })
617+ .catch (error => { logError (error ) })
627618```
628619
629620---
@@ -632,7 +623,7 @@ try {
632623
633624```
634625确认已实现 (12): #1 图片 #2 /usage #3 进度消息 #4 空闲渲染 #5 虚拟滚动器 #6 管道输出 #10 MCP缓冲区
635- 已修复 (7 ): #7 语法加载 #8 NO_FLICKER #9 RC权限 #11 LRU缓存键 #12 snipCompact #17 LSP文件追踪 #18 Permission Polling
626+ 已修复 (8 ): #7 语法加载 #8 NO_FLICKER #9 RC权限 #11 LRU缓存键 #12 snipCompact #14 LSP compact集成 #17 LSP文件追踪 #18 Permission Polling
636627
637628### 测试覆盖
638629
0 commit comments