# 고급 결과 캐싱(상태 인식) ## 개요 Aura는 중복 처리를 제거하도록 설계된 지속적이고 상황을 인식하는 결과 캐시를 제공합니다. 음성 명령이 인식되고 규칙과 일치하면 Aura는 이전에 동일한 상황에서 정확히 동일한 결과가 생성되었는지 확인합니다. 일치하는 항목이 발견되면 Aura는 **LanguageTool 문법 검사** 또는 **Ollama LLM 생성**과 같은 비용이 많이 드는 작업을 우회하여 거의 0에 가까운 지연 시간으로 결과를 제공합니다. ## 주요 기능 - **컨텍스트 인식:** 캐시는 활성 창 제목에만 적용됩니다. "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. 기본 동작(자동 캐싱) 기본적으로 캐싱은 활성화되어 있으며 파일 수정 시간을 사용합니다. ```python # No extra attributes needed. # If this file is saved, the cache for this rule refreshes. ('Bold', r'^make it bold$', 100) ``` ### 2. 캐시 비활성화 명령이 동적 데이터(예: 현재 시간 또는 무작위 농담)를 생성하는 경우 캐시를 비활성화해야 합니다. ```python ('Current Time', r'^what time is it$', 100, { 'cache': False }) ``` ### 3. 수동 타임스탬프(고정 버전 관리) 파일 편집에 관계없이(버전을 변경하지 않는 한) 캐시를 유지하려면 수동 타임스탬프를 사용하세요. ```python ('Stable Command', r'^run complex task$', 100, { 'timestamp': '2026-05-09-v1' }) ``` ## 성능 영향 - **캐시 부적중:** 표준 처리(LLM 사용량에 따라 0.05초 - 5.0초). - **캐시 적중:** 즉시 처리됩니다. 이 메커니즘은 CPU에 부담을 주지 않고 명령이나 수정된 오타가 즉시 반환됩니다.