awareness-local-first-ai-agent-memory-96-r5-on-longmemeval-r

2026年08月11日 | 来源:
信息源:

📋 多平台草稿预览 (12平台差异化改编)

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。


当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



写于彩虹洋葱 AI 聚合平台 · 如果你也对科技趋势感兴趣,欢迎交流。

🏷️ [AI · Agent] · [记忆系统] · [本地优先] · [MCP] · [基准测试]

快手短视频脚本 | 时长:30-40秒

【封面字幕】(大号字体,居中)

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

【口播文案】(接地气风格,口语化)

老铁们,今天聊个硬核的——当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

核心就三点:

① (从正文提取第一个关键信息)

② (从正文提取第二个关键信息)

③ (从正文提取第三个关键信息)

懂的点个赞,不懂的评论区问我,下条见!💪


🏷️ 推荐标签:[AI, Agent], [记忆系统], [本地优先], [MCP], [基准测试]

【微博短帖 | 140字以内核心版】

本地优先的AI记忆层:96%检索准确率,还公开了复现工具:当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

#[AI #Agent] #[记忆系统]


【微博长帖 | 可配图 9 宫格版】

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

#[AI #Agent] #[记忆系统] 🔗 https://dev.to/everest_an/awareness-local-first-ai-agent-memory-96-r5-on-longmemeval-reproducible-47ki

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

前言

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。


当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



总结

本文梳理了相关技术/事件的核心脉络。如有错误欢迎在评论区指正。


📂 分类:[AI · Agent] · [记忆系统] · [本地优先] · [MCP] · [基准测试]

© 本文由彩虹洋葱 AI 自动聚合,转载请注明出处。

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



总结 & 思考

以上为当前进展的梳理。欢迎在评论区交流技术细节和不同观点。


🏷️ 标签:[AI · Agent] · [记忆系统] · [本地优先] · [MCP] · [基准测试]

👍 如果对你有帮助,请点赞收藏支持

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



信息源:Awareness – local-first AI agent memory, 96% R@5 on LongMemEval, reproducible - Dev.to 标签:[AI, Agent], [记忆系统], [本地优先], [MCP], [基准测试]

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

摘要:当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会……


当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



📌 来源:Dev.to | 标签:[AI · Agent] · [记忆系统] · [本地优先] · [MCP] · [基准测试]

本文由彩虹洋葱 AI 自动聚合生成,仅供参考,不构成任何投资或决策建议。

问题:如何看待「本地优先的AI记忆层:96%检索准确率,还公开了复现工具」?

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。


当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



总结: 以上分析基于公开信息整理。核心在于理解这一事件/技术背后的驱动力,而非停留在表面叙事。欢迎在评论区交流你的看法。

📎 参考来源:Awareness – local-first AI agent memory, 96% R@5 on LongMemEval, reproducible - Dev.to

🔗 原文链接:https://dev.to/everest_an/awareness-local-first-ai-agent-memory-96-r5-on-longmemeval-reproducible-47ki

📺 B站视频脚本 | 时长:3-5分钟

【片头 0:00-0:15】BGM起 → 标题字幕弹出

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

【引子 0:15-0:45】制造悬念

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

【时间轴分镜】

├ [00:02] 当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI……

├ [02:04] AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”……

├ [04:06] 今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测……

├ [06:08] 要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。……

├ [08:10] 主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要……

├ [结尾] 总结 + 求三连关注

【弹幕互动引导】

  • "觉得有用的扣 1"
  • "不同观点的弹幕见"
  • 结尾设置投票:你看好这个方向吗?A.看好 B.观望 C.不看好

🏷️ 标签:[AI, Agent], [记忆系统], [本地优先], [MCP], [基准测试]

🎬 抖音口播脚本 | 时长:45-60秒

【0-5秒 黄金Hook】

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

【5-35秒 核心信息(口语化表达,每句一行)】

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。 AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会

【35-50秒 深度扩展】

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

【50-60秒 强CTO结尾】

觉得有用的话,双击点赞 + 关注,下期继续带你读懂 AI!🔥


📐 拍摄建议:竖屏 9:16 · 科技感电子背景乐 · 关键数据配文字弹幕 · 表情自然语速适中

本地优先的AI记忆层:96%检索准确率,还公开了复现工具

【导语】 当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。
本文目录:

(正文见下)


当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。

这在这个充斥着“宣称SOTA”却无法复现的领域,显得尤为另类。

为什么记忆层成了AI Agent的“阿喀琉斯之踵”?

要理解Awareness的价值,首先要明白当前AI Agent记忆方案的根本困境。

主流方案无非三种:一是把整个对话历史塞进上下文窗口,成本高且很快触及长度限制;二是用向量数据库做语义检索,但召回精度在真实场景中往往惨不忍睹;三是各种“记忆摘要”方案,本质上是在用模型能力掩盖架构缺陷。

这三种方案都面临一个共同问题:记忆的写入和读取是割裂的。写入时可能很随意,读取时又缺乏结构化的过滤机制,导致Agent在关键时刻既“记不住”也“想不起”。

我最近在给一个开源项目贡献代码时,用Claude Code处理跨十个文件的类型重构。中途它连续三次忘记了我们约定的类型命名规范,每次都要我重新粘贴规则。这种体验让我深刻意识到:上下文窗口再大,也不等于记忆能力。

Awareness的核心设计:结构化+本地优先

Awareness的架构思路很清晰:把记忆当作一等公民,而不是上下文的附属品。它通过MCP(Model Context Protocol)接入Claude Code、Cursor等工具,但底层存储和检索逻辑是独立实现的。

# Awareness 的核心数据结构示意

from typing import List, Optional

from pydantic import BaseModel

class MemoryEntry(BaseModel):

id: str

content: str

metadata: dict

embedding: Optional[List[float]] = None

created_at: str

last_accessed: str

# 关键设计:每个记忆条目都有明确的元数据结构

# 而不仅仅是“一段文本+向量”

class MemoryStore:

def __init__(self, storage_path: str):

self.storage_path = storage_path

# 本地优先:所有数据存储在用户自己的文件系统

def add(self, entry: MemoryEntry):

# 结构化写入:不仅仅是存向量,还保留原始文本和元数据

...

def search(self, query: str, top_k: int = 5):

# 混合检索:向量相似度 + 元数据过滤 + 时间衰减

...

这个设计的精妙之处在于混合检索策略。Awareness不是单纯依赖向量相似度,而是结合了元数据过滤和时间衰减机制。这意味着Agent在检索记忆时,可以基于时间、项目、任务类型等维度进行精确过滤,而不是把所有历史都混在一起算相似度。

96% R@5背后的Benchmark方法论

Awareness在LongMemEval基准上达到了96%的R@5。但比这个数字更重要的是它的测试方法——通过真实生产检索管道进行测试

// 复现基准测试的核心逻辑

import { AwarenessMemory } from './awareness';

const memory = new AwarenessMemory({

storagePath: './test-memory',

embeddingModel: 'text-embedding-3-small'

});

async function benchmarkLongMemEval() {

const testCases = loadLongMemEvalTestCases();

let hits = 0;

for (const testCase of testCases) {

// 模拟真实使用:先写入记忆

for (const doc of testCase.documents) {

await memory.add({

content: doc.text,

metadata: { source: doc.source, timestamp: doc.timestamp }

});

}

// 再模拟Agent查询

const results = await memory.search(testCase.query, 5);

if (results.some(r => r.id === testCase.expectedId)) {

hits++;

}

}

return hits / testCases.length; // 96%

}

关键在于,这个测试管道和实际生产环境完全一致。不是实验室里的“先索引再检索”的理想化场景,而是模拟了Agent在真实使用中“边写边读”的交互模式。

更难得的是,作者提供了公开的runner脚本。任何人都可以拉取代码,在自己的机器上复现这个96%的成绩。在这个“刷榜”成风的时代,这种透明度几乎是一种美德。

与其他方案的对比:为什么本地优先很重要

在记忆方案这个赛道上,已经有不少玩家。Mem0走的是云端SaaS路线,Letta(原MemGPT)侧重对话状态的显式管理,Zep则偏向生产级的记忆基础设施。

Awareness的差异化在于本地优先。所有数据存储在用户自己的文件系统中,不经过任何第三方服务器。这对于处理敏感代码库的开发者来说意义重大——你写的每一行代码、每一个决策记录,都不应该被发送到外部API。

而且,本地优先带来了一个被低估的优势:可预测的延迟。在云端记忆方案中,每次检索都要经过网络往返,延迟可能在100ms到数秒之间波动。而本地方案,检索延迟稳定在个位数毫秒级。

一个让开发者“真香”的细节

Awareness最打动我的一点,是它对“记忆写入”的独特处理。它不要求开发者显式地调用API去保存记忆,而是通过MCP与Claude Code等工具深度集成,在Agent的自然交互中自动捕获关键信息。

# 通过MCP配置接入Claude Code

{

"mcpServers": {

"awareness": {

"command": "npx",

"args": ["-y", "@everest/awareness-mcp"],

"env": {

"STORAGE_PATH": "~/.awareness/memory"

}

}

}

}

配置完成后,Claude Code会自动将项目上下文、决策记录、约束条件等结构化信息写入本地记忆库。下次启动新会话时,Agent可以通过自然语言查询这些记忆,而不需要重新阅读整个代码库。

这种“无感记忆”的体验,才是Agent记忆的正确打开方式。

局限性:不是银弹

当然,Awareness也不是没有问题。96%的R@5是在LongMemEval这个特定基准上取得的,真实场景的复杂程度远超测试集。此外,本地优先意味着记忆无法跨设备同步——如果你在多台机器上工作,每台机器的记忆是孤立的。

但瑕不掩瑜。Awareness代表了一种值得关注的方向:在AI Agent的记忆问题上,与其追逐更大的上下文窗口或更复杂的模型,不如把基础的数据工程做扎实。结构化存储、混合检索、可复现的基准测试——这些“笨功夫”才是让Agent真正“记住”的关键。

如果你正在构建AI Agent应用,或者对Claude Code/Cursor的“失忆”深恶痛绝,不妨试试Awareness。至少,它给了你一个可以自己验证的96%。



关键词:[AI, Agent], [记忆系统], [本地优先], [MCP], [基准测试] 声明:本文由彩虹洋葱 AI 智能聚合生成,仅供信息参考。

本地优先的AI记忆层:96%检索准确率,还公开了复现工具 🔥

当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。


当所有AI创业公司都在追逐“记忆”这个风口时,一位独立开发者却选择了一条最不性感的路径——把记忆层做成结构化、本地优先,并公开了完整的基准测试工具。这可能是AI Agent记忆赛道最扎实的一次开源实践。

AI Agent的记忆问题,正在成为大模型落地最大的瓶颈之一。无论是Claude Code、Cursor还是Windsurf,这些编码助手在长会话中频繁“失忆”的痛点,几乎每个深度用户都深有体会。

今天要介绍的Awareness,是一个专为AI Agent设计的记忆层。它的核心卖点可以用一句话概括:本地优先、结构化存储,并且通过真实生产检索管道进行了基准测试——96%的R@5成绩,公开可复现。


📌 来源:Dev.to

#[AI #Agent] #[记忆系统] #[本地优先] #[MCP]

#科技资讯 #彩虹洋葱AI

🚀 多平台发布

点击「复制」获取平台专属文案,到各平台编辑器(App/网页)粘贴即可发布。
有密钥的 4 个平台(微信服务号 / 头条 / 百家号 / 微博)可自动发布,密钥填好后自动点亮。

平台状态操作
✍️ 简书📋 手动复制
快手📋 手动复制
🐦 微博🔑 待配置密钥
💻 CSDN📋 手动复制
⛏️ 掘金📋 手动复制
💬 公众号🔑 待配置密钥
📰 今日头条🔑 待配置密钥
🤔 知乎📋 手动复制
📺 B站📋 手动复制
🎵 抖音📋 手动复制
📝 百家号🔑 待配置密钥
📕 小红书📋 手动复制