Gemini CLI 修历史截断性能:unshift 换 push 消除 O(n²) 开销
Kaushik2210 · ghdev · 2026-09-26
google-gemini/gemini-cli 的一个社区 PR 优化了 truncateHistoryToBudget() 的数组重建逻辑。
- 问题:该函数按新到旧遍历消息以优先保留近期 tool 响应,再用 unshift() 逐个恢复时间顺序;JS 数组头部插入是 O(n),整体复杂度达 O(H² + ΣPᵢ²),且开销作用于整个历史,包括之后会被摘要掉的消息。
- 修复:改用 push() 追加,最后对 parts 数组和总历史各 reverse 一次;遍历方向与预算/截断决策完全不变,属行为保持型重构。
- 测试:新增回归测试锁定无截断时的消息与 parts 顺序,37/37 测试通过,eslint 与 tsc 检查干净。
「编程与Agent」频道最新
- Matt Pocock:课程最惊艳的不是 Agent,而是 DDD 领域驱动设计 — mattpocockuk · 2026-11-11
- AI 智能体日夜运转一个月,复现法国气象局 AROME 天气模型 — IgorCarron · 2026-11-11
- 让 AI 角色扮演「高执行力传奇玩家」,提示词的隐藏秘诀 — tokenbender · 2026-11-11
- Agent 验证不设截止时间等于没验证:一份防护设计准则 — Key-Register-1969 · 2026-11-11
- 免费开源课程:从零构建 Claude Code 克隆,8 文章 6 视频讲透 harness 工程 — blaizedsouza · 2026-11-11
- 百度开源文心 5.5 Flash Preview:连写 11 小时代码做出武侠游戏 — xiaohu · 2026-11-11