Skip to content

Latest commit

 

History

History
191 lines (142 loc) · 9.73 KB

File metadata and controls

191 lines (142 loc) · 9.73 KB
Wax Banner

Wax 是为 Apple 平台 AI Agent 打造的高性能单文件记忆层。
设备端、私有且便携 —— 无需服务器,无需云端,零基础设施。

Swift Platforms License Stars

[English](../README.md) | [Español](README.es.md) | [Français](README.fr.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Português](README.pt.md) | [中文](README.zh-CN.md)


Wax 是什么?

Wax 是一款专为下一代 AI Agent 设计的 Swift 原生持久化引擎。它将文档、高维嵌入(embeddings)和结构化知识封装到单个便携的 .wax 文件中。

与需要复杂设置或依赖云端的传统数据库不同,Wax 提供了一个完全运行在设备端的统一记忆层,利用 Metal 加速推理,实现低于 10ms 的检索延迟。

为什么选择 Wax?

特性 Wax SQLite (FTS5) 云端向量数据库
搜索 混合(文本 + 向量) 仅文本* 仅向量*
延迟 ~6ms (p95) ~10ms (p95) 150ms - 500ms+
隐私 100% 本地 100% 本地 云端托管
设置 零配置 复杂(需要 API 密钥)
架构 Apple 芯片原生支持 通用 各异

📦 为什么采用单个 .wax 文件?

大多数 RAG 系统需要数据库、向量存储和文件服务器。Wax 将所有内容(文档、元数据和高维索引)捆绑到一个便携的二进制文件中。

  • 零基础设施: 无需 Docker,无需数据库设置,无云端账单。
  • 真正便携: 通过 AirDrop 将 Agent 的记忆发送到另一台 Mac,或通过 iCloud 进行同步。
  • 原子化: 一个文件用于备份,一个文件用于版本控制,一个文件即可删除。

性能

Wax 针对 M 系列芯片架构进行了优化,即使在大规模本地索引下也能提供近乎瞬时的检索。

检索延迟 (p95)

越低越好。以毫秒为单位。

Wax (混合)    |██ 6.1ms
SQLite (文本) |████ 12ms
云端 RAG      |██████████████████████████████████████████████████ 150ms+

冷启动时间 (p95)

越低越好。以毫秒为单位。

Wax           |███ 9.2ms
传统方式      |██████████████████████████████████████ 120ms+

Tip

注入吞吐量: 在 M3 Max 上,Wax 在开启完整混合索引的情况下,处理速度达到 85.9 docs/s。 完整基准测试报告:docs/benchmarks/2026-03-06-performance-results.md


架构

Wax 采用**“数据库中的数据库”**模型。它管理自己的基于帧(frame-based)的存储格式,同时将专用搜索引擎(SQLite FTS5 和 Metal 加速的 HNSW)作为序列化 blob 嵌入到主文件中。

内部文件布局

┌──────────────────────────────────────────────────────────────────────────┐
│                          双 Header 页面 (A/B)                            │
│   (Magic, 版本, 世代, 指向 WAL 和 TOC 的指针, 校验和)                    │
├──────────────────────────────────────────────────────────────────────────┤
│                          WAL (预写日志)                                  │
│   (用于防崩溃的未提交变更的原子环形缓冲区)                               │
├──────────────────────────────────────────────────────────────────────────┤
│                          压缩数据帧                                      │
│   ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐       │
│   │ 帧 0 (LZ4)       │  │ 帧 1 (LZ4)       │  │ 帧 2 (LZ4)       │ ...   │
│   │ [原始文档]       │  │ [元数据/JSON]    │  │ [系统信息]       │       │
│   └──────────────────┘  └──────────────────┘  └──────────────────┘       │
├──────────────────────────────────────────────────────────────────────────┤
│                          混合搜索索引                                    │
│   ┌──────────────────────────────┐  ┌──────────────────────────────┐     │
│   │ SQLite FTS5 Blob             │  │ Metal HNSW 索引              │     │
│   │ (文本搜索 + EAV 事实)        │  │ (向量搜索)                   │     │
│   └──────────────────────────────┘  └──────────────────────────────┘     │
├──────────────────────────────────────────────────────────────────────────┤
│                          TOC (目录)                                      │
│   (所有帧的索引、父子关系及引擎配置清单)                                 │
└──────────────────────────────────────────────────────────────────────────┘
  1. 原子韧性:双 Header 和 WAL 确保即使进程在写入中途崩溃,存储仍保持一致。
  2. 统一检索:单个查询即可触发 BM25(文本)和 HNSW(向量)引擎的并行执行。
  3. 结构化知识:内置 EAV(实体-属性-值)存储,用于持久化事实和长期推理。

快速开始

将以下代码粘贴到 main.swift 文件中即可立即开始。

import Foundation
import Wax
import WaxVectorSearchMiniLM

@main
struct AgentMemory {
    static func main() async throws {
        let url = URL(fileURLWithPath: "agent.wax")

        // 1. 初始化记忆存储(设备端 MiniLM 嵌入)
        let memory = try await MemoryOrchestrator.openMiniLM(at: url)

        // 2. 存入一条新记忆
        try await memory.remember("用户正在使用 SwiftUI 开发一个习惯追踪器。")

        // 3. 执行语义检索
        let context = try await memory.recall(query: "用户正在开发什么?")

        if let bestMatch = context.items.first {
            print("检索结果:\(bestMatch.text)") 
            // 输出:"检索结果:用户正在使用 SwiftUI 开发一个习惯追踪器。"
        }
    }
}

想要存储持久化事实和长期推理?请参阅 结构化记忆


安装

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/christopherkarani/Wax.git", from: "0.1.8")
]

生态系统工具

🤖 MCP 服务

Wax 提供一流的 Model Context Protocol (MCP) 服务。将您的本地记忆连接到 Claude Code 或任何兼容 MCP 的 Agent。

npx -y waxmcp@latest mcp install --scope user

🔍 WaxRepo

针对 git 历史记录的语义搜索 TUI。索引任何代码库,并使用自然语言查找代码或提交记录。

# 在任何 git 代码库中运行
wax-repo index
wax-repo search "我们在哪里实现了 WAL?"

许可证

Wax 采用 Apache License 2.0 发布。详见 LICENSE

为坚信“用户数据应属于用户设备”的开发者而打造。