360 Secure SkillHub
360 安全技能中心

Prompt Cache

这是一款轻量缓存层,核心是将提示词归一化后结合上下文键生成SHA-256哈希,查询缓存表返回已有结果;未命中则调用API并存储结果。支持SQLite、Turso、Postgres等数据库,生产环境可节省约60%API配额。适用于重复/相似的LLM、TTS、图像生成等API调用场景,通过Python方法传入提示词及上下文参数获取结果。

nissan
nissan
热度 74.07
最近更新 2026-05-11 17:28:01
分类:开发依赖:代码执行 / 读写文件应用场景:API 集成 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add prompt-cache
Metadata
name
prompt-cache
description
SHA-256 prompt deduplication for LLM and TTS calls — hash normalize prompts, check cache before calling APIs, store results for instant replay. Use when making repeated or similar API calls to avoid redundant spending. Works with any database backend (SQLite, Turso, Postgres).
version
1.0.0
metadata
{"openclaw":{"emoji":"💾","requires":{"bins":[],"env":[]},"primaryEnv":null,"network":{"outbound":false,"reason":"Local cache operations only. No external network calls."}}}

Prompt Cache

A lightweight caching layer that prevents regenerating identical content. Saved approximately 60% of API quota in production by catching duplicate prompts before they hit the API.

How It Works

  1. Normalize the prompt (lowercase, collapse whitespace)
  2. Combine with context keys (user name, language, model)
  3. SHA-256 hash the combined key
  4. Check cache table for existing result
  5. On miss: call API, store result. On hit: return cached result instantly.

Usage

import prompt_cache

# Check before calling expensive API
cached = await prompt_cache.get_cached(
    prompt="Tell me a story about clouds",
    child_name="Sophie",
    language="fr"
)

if cached:
    return cached  # Free! No API call needed.

# Cache miss — call the API
result = await generate_story(prompt, child_name, language)

# Store for next time
await prompt_cache.set_cached(prompt, child_name, language, result)

Schema

CREATE TABLE IF NOT EXISTS prompt_cache (
    prompt_hash TEXT NOT NULL,
    child_name TEXT NOT NULL,
    language TEXT NOT NULL,
    story_json TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (prompt_hash, child_name, language)
);

Adapt the Keys

The default implementation uses (prompt, child_name, language) as the cache key. Adapt to your domain:

  • Chat completions: (system_prompt, user_message, model)
  • TTS: (text, voice_id, model_id)
  • Image gen: (prompt, seed, model, size)

Files

  • scripts/prompt_cache.py — Cache implementation (35 lines)