十五秒内从单一状态栏项发出的五项请求 笔记

十五秒内从单一状态栏项发出的五项请求

Claude Code VS Code 扩展在状态栏中直接显示使用限制,以方便用户。最初,该扩展频繁发起 API 调用,导致触发速率限制错误。经分析,核心问题在于每个 VS Code 窗口都运行一个独立的扩展实例,从而重复发起请求。为解决此问题,实现了共享全局存储文件,用于存储所有窗口可访问的使用数据。该文件允许窗口读取缓存数据,并仅在必要时根据刷新间隔获取更新。引入了一套请求机制,以防止多个窗口同时获取数据。若某窗口检测到其他窗口正在获取数据,则等待其完成。在定时器中加入了随机抖动,以避免多个窗口发起同步请求。当 API 返回 429 速率限制错误时,该信息现在会被存储到共享文件中,从而阻止进一步请求,直到封锁解除。此外,该扩展改进了对失败 API 检查的处理方式:不再立即显示警告,而是保留最后一次已知使用数据,并在递增的时间间隔后重试。仅在连续多次失败后才显示警告。扩展明确声明,其仅读取登录凭证,从不刷新或回写这些凭证。每个窗口仅发起一次共享的 API 请求以获取使用数据,且不进行遥测或其他网络调用。所遵循的原则包括:假设每个窗口拥有一份副本;将 429 错误视为等待指令;将单次失败视为噪声而非关键问题。