# 高级结果缓存(状态感知) ## 概述 Aura 具有持久的、上下文感知的结果缓存,旨在消除冗余处理。当语音命令被识别并匹配规则时,Aura 会检查之前在相同情况下是否生成了完全相同的结果。如果找到匹配项,Aura 会绕过 **LanguageTool 语法检查** 或 **Ollama LLM 生成** 等昂贵的操作,以接近零延迟的方式提供结果。 ## 主要特点 - **上下文感知:** 缓存特定于活动窗口标题。 “LibreOffice”中的命令可能与“终端”中的相同命令具有不同的缓存结果。 - **自我修复(自动失效):** 如果修改底层规则文件(`.py`映射),缓存会自动过期。 - **隐私第一:** 所有缓存结果都存储在本地 SQLite 数据库 (`data/_aura_result_cache.db`) 中。 - **零维护:** 对于大多数用户来说,这完全在后台运行,无需配置。 ## 它是如何工作的 系统根据三个变量生成唯一的“cache_id”: 1. **规则输出:** 地图生成的文本。 2. **语言:** 当前活动的语言代码(例如`de-DE`)。 3. **活动窗口:** 当前焦点窗口的标题。 ### 有效性逻辑 缓存可确保您永远不会收到“过时”的信息。它使用两种类型的有效性检查: |类型 |名称 |逻辑|使用案例| | :--- | :--- | :--- | :--- | | **类型 0** | **文件自动同步** |使用映射文件的修改时间(`mtime`)。 | **标准。** 如果您编辑沙盒或地图,所有关联的缓存条目将立即失效。 | | **类型 1** | **手动时间戳** |使用规则属性中提供的固定“时间戳”。 | **开发人员。** 对版本/时间戳进行硬编码以强制或维护特定的结果状态。 | ## 规则配置示例 您可以直接在“FUZZY_MAP_pre.py”或“FUZZY_MAP.py”文件中控制缓存行为。 ### 1. 默认行为(自动缓存) 默认情况下,启用缓存并使用文件的修改时间。 __代码_块_0__ ### 2. 禁用缓存 如果命令生成动态数据(例如当前时间或随机笑话),您应该禁用缓存。 __代码_块_1__ ### 3. 手动时间戳(固定版本控制) 如果您希望缓存无论文件编辑如何都持续存在(除非您更改版本),请使用手动时间戳。 __代码_块_2__ ## 性能影响 - **缓存未命中:** 标准处理(0.05 秒 - 5.0 秒,具体取决于 LLM 使用情况)。 - **缓存命中:**即时处理。 这种机制是命令或更正的拼写错误立即返回,而不会给 CPU 带来压力。