Skip to content

【维护】sidecar 性能小项合集:events 判空全量解析 / 发消息双扫 runs / config 零缓存 / journal 全量重读 / task-store journal 平方增长等 #178

Description

@CavinHuang

位置与小项

  • apps/sidecar/src/services/agent-runtime/events/runtime-event-history.ts:35(await bus.read(threadId)).length > 0 全量解析 events.jsonl 只为判空——可先 statSync(file).size;thread-event-bus.ts:116-129 read() 无条件读全文件再按 afterSeq 过滤(GET_EVENTS 续传同理),增量可从尾部读
  • apps/sidecar/src/services/agent/agent-service.ts:326-339:每次发消息并发调 findStaleRunningRun 与 findTurnLimitedRun,二者各自 listByThread(run-state-store.ts:111-125 全目录 readdirSync + 每 run 文件读盘解析);两个判断只依赖同一个 latestRun,一次扫描即可;runs 无清理随使用累积
  • apps/sidecar/src/services/system/lume-config-service.ts:950-951,872-894:getEffectiveLumeConfig 零缓存,每次全量读盘 + YAML.parse + YAML.stringify 比对(normalize 变了还会写盘);调用面 33 文件 48 处(runtime-core/run.ts 单文件 6 处)——配合 watcher 变更做失效缓存即可归零
  • apps/sidecar/src/services/memory-v2/command-service.ts:578-590,649-670:hasMemoryMutationForRun(每次后台提取执行)与 findJournalRecord 每次遍历全部 journal jsonl(含 before/after 快照全文);与 【性能】memory job 文件无限累积(含完整对话明文 payload),每次任务启动全量重读 #166 同族,一并加保留期
  • apps/sidecar/src/services/agent-runtime/task/task-store.ts:453-479:每次 mutate 把整个旧 events.jsonl 写进 journal prepare 项 + 事件内嵌全量 tasks 快照,journal 从不截断、recoverJournal 每次 mutate 全量重放——平方增长(量级受任务数/64KB metadata 上限约束)
  • apps/sidecar/src/services/agent-runtime/runtime-core/coding-run-tracker.ts:160,315:工具执行前置/后置 FIFO 队列无关联 ID——SDK 在 tool.call 抛出/软中止时不调 onToolExecution,被中止 Bash 的预测路径记到下一个成功 Bash 头上;coding-workspace-monitor.ts:177-209 pendingWindows 失败窗口永不关闭 → 外部文件事件持续误归因本 run(配对键改 toolUseId 或超时清窗)

说明

单项量级小,但都落在消息/run 热路径上且随历史线性/平方增长,建议作为一批集中清理。

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