Skip to content

【性能】readPreviewableText 先 readFileSync 全量载入再截断,无大小上限——点选大文件即分配等量内存并阻塞事件循环 #171

Description

@CavinHuang

位置

  • apps/sidecar/src/services/agent/agent-files-service.ts:1415-1427
  • IPC 暴露:apps/sidecar/src/rpc/agent-handlers.ts:1548-1590(READ_FILE / READ_WORKSPACE_FILE / READ_PROJECT_FILE)
  • 对照同文件 :534-546 readFileRefDocument 在 readFileSync 前有 20MB 上限检查

问题

const bytes = readFileSync(resolvedPath);   // 1GB 文件即分配 1GB Buffer
const limit = 512 * 1024;                    // 读完才截断

项目内点选一个 1GB 二进制文件(readProjectPath 走 resolveExistingProjectTarget 可达项目内任意文件)即长时间阻塞 sidecar 事件循环。

修复建议

statSync 先取 size,超限直接返回 too-large;或 openSync+readSync 只读头部 2048B 做二进制检测、最多读 512KB。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions