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