高级结果缓存(状态感知)

## 概述 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 带来压力。