remem-ai 0.6.93

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
use std::collections::HashMap;
use std::sync::LazyLock;

const CJK_EN_PAIRS: &[(&str, &str)] = &[
    ("encrypt", "加密"),
    ("encryption", "加密"),
    ("database", "数据库"),
    ("db", "数据库"),
    ("api", "接口"),
    ("interface", "接口"),
    ("hook", "钩子"),
    ("hooks", "钩子"),
    ("trait", "特征"),
    ("adapter", "适配器"),
    ("benchmark", "基准测试"),
    ("eval", "评测"),
    ("bench", "基准测试"),
    ("compression", "压缩"),
    ("compaction", "压缩"),
    ("timeout", "超时"),
    ("worker", "工作线程"),
    ("memory", "记忆"),
    ("memories", "记忆"),
    ("search", "搜索"),
    ("retrieval", "检索"),
    ("query", "查询"),
    ("fts", "全文搜索"),
    ("fts5", "全文搜索"),
    ("tokenizer", "分词器"),
    ("tokenize", "分词"),
    ("prompt", "提示词"),
    ("publish", "发布"),
    ("posting", "发帖"),
    ("deploy", "部署"),
    ("deployment", "部署"),
    ("config", "配置"),
    ("configuration", "配置"),
    ("port", "端口"),
    ("session", "会话"),
    ("scope", "作用域"),
    ("global", "全局"),
    ("summary", "摘要"),
    ("format", "格式"),
    ("server", "服务器"),
    ("service", "服务"),
    ("twitter", "推特"),
    ("promote", "提升"),
    ("auto", "自动"),
    ("automatic", "自动"),
    ("performance", "性能"),
    ("video", "视频"),
    ("quality", "质量"),
    ("cost", "成本"),
    ("context", "上下文"),
    ("competitive", "竞品"),
    ("comparison", "对比"),
    ("optimization", "优化"),
    ("optimize", "优化"),
    ("preference", "偏好"),
    ("sharing", "共享"),
    ("hang", "挂起"),
    ("stuck", "卡住"),
    ("architecture", "架构"),
    ("design", "设计"),
    ("rules", "规则"),
    ("rule", "规则"),
    ("failure", "失败"),
    ("failed", "失败"),
    ("error", "错误"),
    ("task", "任务"),
    ("job", "任务"),
    ("mechanism", "机制"),
    ("implementation", "实现"),
    ("implement", "实现"),
    ("cross-project", "跨项目"),
];

pub(super) static CJK_EN_TRANSLATIONS: LazyLock<HashMap<&'static str, Vec<&'static str>>> =
    LazyLock::new(|| {
        let mut translations: HashMap<&str, Vec<&str>> = HashMap::new();
        for (english, cjk) in CJK_EN_PAIRS {
            insert_translation(&mut translations, english, cjk);
            insert_translation(&mut translations, cjk, english);
        }
        translations
    });

fn insert_translation(
    translations: &mut HashMap<&'static str, Vec<&'static str>>,
    from: &'static str,
    to: &'static str,
) {
    let values = translations.entry(from).or_default();
    if !values.contains(&to) {
        values.push(to);
    }
}