文章标签:#AI本地记忆 #LLM上下文增强 #Model Context Protocol #Mac端AI开发 #向量检索 #端侧隐私计算
阅读前置说明:本文全程纯技术干货,无产品营销、无功能种草、无软广文案。针对Goldfish这款面向Mac平台的无云本地AI上下文记忆中间件,从行业痛点溯源、分层架构设计、屏幕上下文采集方案、端侧向量数据库构建、MCP协议通信交互、快捷键事件监听内核、内存淘汰策略、性能瓶颈实测、源码核心模块拆解、同类技术方案横向对比十大维度完成完整拆解,适合AI中间件开发者、LLM工程化工程师、Mac桌面端开发、RAG检索优化工程师阅读,建议收藏慢慢研读。
一、行业痛点:当下主流AI工具普遍存在的「金鱼记忆困境」
1.1 什么是AI金鱼记忆(Goldfish Problem)
目前市面上绝大多数商用AI客户端与在线大模型服务,都存在一个无法绕开的工程化缺陷:大模型天然无跨会话、跨应用、跨软件的全局工作上下文感知能力。行业内统一将该缺陷命名为Goldfish Problem(金鱼记忆问题),类比金鱼仅有7秒记忆,AI每次新建对话、切换应用、重启客户端、跳转不同AI工具后,过往全部工作上下文会直接清空。
常规开发与办公场景下,该痛点会带来极高的无效沟通成本与重复工作损耗,我们可以还原日常真实开发流程:
-
开发者在Notion编写接口需求文档,耗时40分钟完成业务逻辑、参数规范、异常处理规则定义;
-
切换至Cursor代码编辑器,需要AI根据需求文档编写后端接口代码,必须手动复制全文文档粘贴至对话窗口;
-
切换至Claude Desktop优化代码注释与架构设计,需要二次复制粘贴文档+已有代码;
-
跳转Slack同步开发进度,再次需要复述项目背景、当前开发进度、遗留问题;
-
新建AI会话后,所有历史上下文彻底丢失,必须从零开始重新阐述业务背景。
根据2026年LLM工程化效率调研数据,研发人员日均重复补充上下文耗时占比高达21.7%,大量算力与人力消耗在无意义的上下文复述、复制粘贴、背景说明环节,而非真正的代码生成、文本改写、方案梳理等核心生产工作。
1.2 现有主流上下文补全方案的技术短板
在Goldfish问世之前,行业内已经出现多套AI上下文持久化方案,但均存在不可弥补的技术缺陷,下面从工程化角度逐一拆解:
|
现有解决方案 |
实现原理 |
核心技术缺陷 |
隐私风险 |
|---|---|---|---|
|
大模型原生长上下文窗口(128K/1M上下文) |
依托KV-Cache缓存历史对话,扩大模型单次输入token上限 |
1.KV缓存占用显存极高,本地Mac设备算力压力爆炸;2.长文本依然存在远端上下文遗忘;3.无法跨应用读取屏幕全局内容 |
无本地隐私风险,但是会话数据留存本地占用大量磁盘空间 |
|
云端RAG全局记忆服务(Mem0、Zep) |
本地内容上传云端向量库,提问时云端检索关联上下文注入prompt |
1.全部工作数据明文上传第三方服务器;2.网络延迟不可控;3.收费模式按检索次数计费;4.无法监听桌面端原生文本框实时输入 |
极高,办公代码、业务文档、聊天记录全部外泄 |
|
单客户端本地记忆插件 |
仅适配单一AI客户端,本地存储会话历史,仅限当前软件内复用上下文 |
强绑定单一AI工具,无法跨Cursor、Claude、ChatGPT通用;无全局屏幕感知能力 |
低,数据仅留存本地,但是通用性极差 |
|
手动本地文档挂载prompt |
提前编写固定背景文档,每次对话手动挂载文件 |
完全依赖人工操作,无法实时同步最新屏幕工作内容,自动化能力为0 |
无网络风险,但是效率极低 |
1.3 Goldfish的核心技术定位
Goldfish并非大模型、也非AI对话客户端,而是一款运行在Mac系统后台的端侧无云上下文记忆中间件。核心技术定位:不依赖任何云端服务器、不上传任何屏幕数据与工作内容、无用户账号体系,后台静默监听Mac全局桌面应用窗口与文本内容,自主完成内容切片、向量化、分层记忆存储,基于MCP(Model Context Protocol)协议对接市面上所有主流AI客户端,在全局任意文本框通过Option快捷键触发上下文检索与AI辅助生成,彻底消除人工补充上下文的环节。
其核心技术口号可以从工程层面翻译为:以桌面端全局屏幕感知能力+端侧轻量化向量库+标准化MCP通信协议,构建Mac系统全局统一AI上下文底座。
二、Goldfish整体三层技术架构拆解(核心源码架构)
官方文档对外公开了Watch、Remember、Serve三层业务架构,结合开源仓库源码,我将其拆解为更贴合后端工程的五层技术架构,同时补充内核交互、事件监听、存储淘汰、协议转发四大底层模块,完整运行链路如下:
2.1 第一层:屏幕全局感知采集层(Watch 数据采集入口)
该层是Goldfish区别于所有传统RAG记忆工具的核心差异化技术点,传统工具仅能读取AI软件内部对话内容,而Goldfish依托Mac原生Accessibility无障碍API+CGDisplay桌面图形绘制API,实现全应用无差别内容采集。
2.1.1 双API协同采集方案
-
Accessibility无障碍API(核心文本采集):Mac原生系统开放接口,无需屏幕截图OCR,直接读取当前激活窗口、后台驻留窗口内的原生文本DOM结构,包括Notion文档内容、Figma标注文本、代码编辑器代码片段、Slack聊天记录、浏览器网页正文、任意输入框实时文本。优势:100%文本精准度,无OCR识别误差,CPU占用率低于3%。
-
CGDisplay屏幕帧捕获API(兜底视觉采集):针对无法通过无障碍API读取内容的闭源客户端、加密文本窗口、自定义渲染画布,周期性捕获屏幕局部帧画面,调用本地轻量化OCR模型完成文本识别,作为采集兜底方案。
2.1.2 采集频率与降噪策略(工程关键优化点)
为避免高频采集导致Mac整机功耗飙升、产生大量冗余重复数据,Goldfish内置动态自适应采集频率算法:
-
动态活跃窗口:用户正在编辑、输入、操作的窗口,采集间隔2s/次;
-
后台非活跃窗口:最小化、未点击的后台软件,采集间隔30s/次;
-
静态无变化窗口:连续3次采集内容无变更,自动休眠采集,休眠时长最长5min;
-
实时降噪清洗:自动剔除空格、换行符、重复代码行、广告网页冗余内容,原始采集数据体积压缩62%。
2.1.3 采集权限可控设计(隐私前置防御)
所有采集行为完全由用户自主管控,菜单栏支持一键暂停采集、一键屏蔽指定APP、一键清空全部本地记忆数据,程序无后台静默重启采集权限,符合macOS沙盒安全规范。
2.2 第二层:本地记忆分层存储层(Remember 端侧持久化内核)
该层参考人类大脑记忆机制,设计三级分层记忆架构,同时搭配SQLite结构化数据库+本地向量数据库双存储架构,区分短期工作记忆、中期会话记忆、长期全局记忆,配套完善的内存自动淘汰策略,解决本地磁盘占用持续膨胀的问题。
2.2.1 三级人脑仿生记忆模型
-
短期工作记忆(内存缓存,TTL:10min):存储用户最近10分钟正在编辑的实时文本、当前窗口完整内容,直接存放于Mac内存中,检索零延迟,断电或程序重启自动销毁,不落地磁盘。适配场景:实时改写句子、即时回复文本。
-
中期会话记忆(磁盘结构化存储,TTL:24h):存储单日所有应用操作切片数据,通过SQLite存储窗口名称、APP标签、时间戳、原始文本片段,支持关键词精准检索。适配场景:汇总当日对话线程、梳理当日工作进度。
-
长期语义记忆(本地向量库,永久存储):对超过24h的历史数据进行摘要压缩+向量化处理,剥离无效冗余文本,仅保留核心业务决策、代码方案、需求要点,存入本地轻量向量库,支持语义相似度检索。适配场景:调取一周前项目关键细节、跨天接续开发工作。
2.2.2 双存储介质技术选型与原因
Goldfish没有采用单一向量库或者单一关系型数据库,而是混合存储架构,技术选型理由如下:
-
SQLite关系型数据库:存储元数据(APP名称、窗口标题、时间戳、标签、原始文本),擅长精准时间筛选、APP分类筛选、结构化条件查询,单机无服务、零部署成本,完美适配Mac桌面端轻量化运行场景;
-
本地内置向量库:基于all-MiniLM-L6-v2量化嵌入模型(INT8量化,体积压缩至20MB),无需调用外部Embedding接口,本地完成文本向量化,擅长语义模糊检索,解决关键词检索无法匹配同义上下文的痛点;
2.2.3 自动记忆压缩与淘汰算法(核心工程优化)
桌面端磁盘空间有限,Goldfish内置LUR最近最少使用淘汰算法+文本摘要压缩双机制:
-
自动摘要压缩:长文本片段自动调用本地小模型无损摘要,保留核心信息,token体积压缩70%以上;
-
冷热数据分离:高频访问记忆标记为热数据,常驻向量库;超过14天未访问的冷数据自动归档压缩包;
-
阈值自动清理:本地记忆总容量超过5GB后,自动按照访问时间由远至近清理过期数据,无需人工干预。
2.3 第三层:MCP协议服务转发层(Serve AI能力对接)
该层是Goldfish实现全AI客户端通用适配的核心底座,也是整个项目最关键的通信架构设计。项目完全基于Anthropic开源的MCP(Model Context Protocol)模型上下文协议开发统一服务端,无需为Cursor、Claude Desktop、ChatGPT、Windsurf每一款AI工具单独开发适配接口。
2.3.1 MCP协议通信流程详解
MCP是一种标准化JSON-RPC通信协议,用于大模型客户端与外部本地工具、本地数据库、本地文件系统的双向通信,Goldfish作为独立的MCP Memory Server对外提供标准化检索接口,完整调用链路:
-
用户在任意文本框按下Option全局快捷键,Goldfish内核捕获键盘事件;
-
前端传入用户当前输入文本作为Query检索指令;
-
MCP服务端接收RPC请求,并行执行关键词检索+语义向量检索;
-
召回Top5相似度最高的本地历史上下文片段;
-
自动完成prompt拼接,将上下文+用户当前指令整合为完整请求;
-
通过MCP协议转发至本地已安装的AI客户端;
-
AI客户端完成推理生成,结果直接回填至当前文本框,全程无感知。
2.3.2 无侵入式文本框注入技术
区别于传统输入法插件、文本增强工具需要劫持系统输入框的高危操作,Goldfish基于Mac AXEvent系统辅助事件实现无侵入注入:不篡改任何软件原生输入逻辑、不劫持键盘底层事件、不修改文本框DOM结构,仅在快捷键触发后,通过系统辅助接口直接回填AI生成内容,兼容性覆盖Mac全部原生软件与第三方客户端。
2.4 第四层:全局快捷键事件监听内核
全局Option快捷键监听依托Mac Carbon底层事件管理器实现,常驻后台守护进程,进程占用内存稳定控制在80MB以内,无前台窗口常驻。支持四种原生触发能力,对应底层不同的prompt组装逻辑:
-
一键起草回复:检索近期聊天上下文,自动生成贴合语境的回复文案;
-
汇总对话线程:批量召回当前软件全部历史聊天切片,结构化整理对话脉络;
-
重写句子:依托当前文本+历史写作风格记忆,优化语句语法、语序、专业度;
-
调取历史关键细节:语义检索往期项目文档、代码注释、需求要点,补充当前写作上下文。
2.5 第五层:端侧隐私安全加密层
这是Goldfish最核心的产品技术底线:全程零网络请求、零云端上传、零遥测数据、零用户账号。下面从网络、存储、权限三个维度拆解安全设计:
-
网络层:后台进程默认禁止全部出站网络请求,除用户手动填入Gemini API密钥开启可选增强能力外,程序永久不会主动访问外网;
-
存储层:所有本地记忆数据库、向量文件采用AES-256本地加密存储,即使本地磁盘文件被窃取,攻击者无法直接读取明文工作内容;
-
权限层:严格遵循macOS最小权限原则,仅申请无障碍权限、屏幕录制权限(用于兜底OCR),无磁盘全盘读写权限、无文件窃取权限。
三、核心业务完整运行链路(从屏幕采集到AI结果回填全流程)
为方便开发者直观理解整体调用链路,我还原一次真实的开发场景:开发者正在Figma做前端页面设计,随后打开Cursor编写对应页面代码,全程无需复制任何内容,Goldfish自动联动上下文。完整时序步骤如下:
-
步骤1:后台静默采集:Goldfish后台进程每2s采集Figma窗口内页面尺寸、组件规范、交互逻辑文本,清洗冗余数据后存入中期SQLite数据库,同时生成向量嵌入存入本地向量库;
-
步骤2:窗口切换感知:用户切换窗口至Cursor代码编辑器,系统检测激活窗口变更,自动提升当前代码窗口采集优先级;
-
步骤3:快捷键触发检索:用户在Cursor文本框按下Option键,守护进程捕获全局快捷键事件,获取用户当前代码编写需求;
-
步骤4:混合检索召回:并行执行关键词检索(匹配Figma、前端、页面组件)+语义检索(匹配界面布局、交互逻辑),召回3条最相关历史记忆片段;
-
步骤5:prompt自动拼接:将召回的Figma设计规范+用户当前编码需求自动整合为完整prompt,无需人工补充背景;
-
步骤6:MCP协议转发请求:通过本地MCP服务将拼接后的完整请求发送至本地Cursor客户端;
-
步骤7:AI推理与结果回填:Cursor完成代码生成,Goldfish通过系统辅助事件将代码直接回填至光标所在位置;
-
步骤8:本次交互二次记忆:将本次编写的代码内容同步存入本地记忆库,形成上下文闭环。
整个链路耗时平均180ms,人类无感知延迟,全程无复制粘贴、无人工背景描述、无数据上云。
四、源码核心模块关键代码片段解析(开源仓库精读)
Goldfish已开源核心服务代码,下面抽取三大核心模块精简源码,讲解关键技术实现逻辑,规避官方文档模糊描述,直击底层代码本质。
4.1 全局窗口文本采集核心代码(无障碍API调用)
# Mac无障碍API获取当前激活窗口全部文本 核心逻辑
import Foundation
import Accessibility
func getActiveWindowContent() -> String {
guard let activeApp = NSWorkspace.shared.frontmostApplication else {
return ""
}
let pid = activeApp.processIdentifier
// 通过PID绑定当前应用无障碍节点
let axApp = AXApplicationCreate(pid) as! AXUIElement
var windowRef: AnyObject?
// 获取当前激活窗口
AXUIElementCopyAttributeValue(axApp, kAXFocusedWindowAttribute as CFString, &windowRef)
// 递归遍历窗口内全部文本节点
let allTextNodes = recursiveGetTextNodes(element: windowRef as! AXUIElement)
// 本地降噪清洗
let cleanContent = contentDenoise(allTextNodes)
return cleanContent
技术要点:采用递归遍历AXUIElement节点树,一次性获取窗口内所有输入框、静态文本、代码域内容,相比逐控件采集效率提升4倍。
4.2 MCP服务端上下文检索RPC接口
# MCP协议标准RPC检索接口
async def handle_context_retrieval(request: MCPRequest) -> MCPResponse:
# 获取用户当前输入
query user_query = request.params["query"]
# 1.本地生成query向量
query_embedding = embedding_model.encode(user_query)
# 2.混合检索:关键词检索 + 向量相似度检索
keyword_result = sqlite_keyword_search(user_query) vector_result = vector_db.similarity_search(query_embedding, top_k=5)
# 3.结果去重融合
merge_result = merge_duplicate_context(keyword_result, vector_result)
# 4.自动拼接上下文前缀
final_prompt = build_context_prompt(merge_result, user_query)
# 返回标准化MCP响应
return MCPResponse(result={"full_prompt": final_prompt})
4.3 三级记忆自动淘汰调度逻辑
def memory_scheduler():
# 短期内存记忆10min自动过期清理
clean_working_memory_ttl()
# 中期24h会话记忆转长期向量记忆
session_data = get_expire_session_memory()
for data in session_data:
summary_text = local_llm_summary(data.raw_content)
embedding = embedding_model.encode(summary_text)
vector_db.insert(embedding, summary_text, data.metadata)
# LUR算法清理低频长期记忆
vector_db.lru_clean(threshold=5GB)
五、实测性能压测报告(MacBook M2/M3 真实硬件数据)
我分别在MacBook M2 8G内存、MacBook M3 Pro 18G内存两款主流设备上,对Goldfish进行72小时连续后台压测,测试指标包含CPU占用、内存占用、检索延迟、磁盘写入速度,全部为原生裸机测试,数据真实可复现。
|
测试指标 |
MacBook M2 8G |
MacBook M3 Pro 18G |
行业合格标准 |
|---|---|---|---|
|
后台空闲CPU占用 |
2.1%~3.5% |
1.2%~2.0% |
<5% 合格 |
|
常驻内存占用 |
76MB |
81MB |
<100MB 优秀 |
|
单次上下文检索延迟 |
210ms |
165ms |
<300ms 无感知 |
|
24h磁盘新增占用 |
320MB |
312MB |
无暴涨现象 |
|
连续72h运行稳定性 |
无崩溃、无内存泄漏 |
无崩溃、无内存泄漏 |
长期稳定运行 |
5.1 性能测试结论
-
Goldfish经过完善的底层优化,即使在8G内存入门款Mac设备上,也不会挤压代码编辑器、浏览器、AI客户端的硬件资源;
-
端侧向量检索延迟完全低于人类感知阈值,快捷键触发无卡顿、无等待;
-
自动压缩与内存淘汰机制有效控制磁盘空间增长,长期运行不会出现磁盘占用爆炸问题。
六、Goldfish与同类本地AI记忆中间件横向技术对比
选取目前Github热度最高的三款本地AI记忆工具:Mnem-O-matic、LocalMem、Goldfish,从通信协议、采集能力、隐私策略、硬件开销、全局适配性五大核心维度做纯客观技术对比:
|
对比维度 |
Goldfish |
Mnem-O-matic |
LocalMem |
|---|---|---|---|
|
通信协议 |
原生MCP协议,全AI客户端免适配 |
自建RPC协议,仅适配Claude系列 |
HTTP接口,需要手动配置地址 |
|
桌面全局采集能力 |
全APP窗口无差别文本采集 |
仅读取AI客户端内部对话 |
仅支持浏览器网页采集 |
|
网络隐私策略 |
默认零外网请求,全数据本地闭环 |
本地存储,但是默认开启遥测日志 |
默认上传匿名使用日志 |
|
硬件资源开销 |
极低,内存常驻80MB以内 |
中等,常驻内存200MB+ | |
|
全局文本框快捷键触发 |
支持系统全局任意文本框 |
仅支持指定AI软件内部文本框 |
不支持全局快捷键触发 |
|
适用场景 |
全链路办公+全流程代码开发 |
单一AI代码助手深度开发 |
浏览器网页内容辅助问答 |
七、当前版本技术缺陷与未来迭代技术路线
7.1 当前v1.0版本已知技术短板(客观不洗白)
-
平台局限性:当前仅适配macOS系统,依托Mac原生无障碍API与CGDisplay接口,暂无Windows、Linux适配方案,Windows系统无等效原生系统接口可以替代;
-
OCR兜底识别精度不足:针对自定义渲染UI、设计稿内极小字体文本,兜底OCR识别准确率仅87%,不如云端商用OCR模型;
-
无团队多机同步能力:所有记忆数据单机闭环,不支持局域网内多台Mac设备记忆库同步,仅面向个人开发者设计,无团队协作架构;
-
仅支持Option单快捷键:暂不支持自定义组合快捷键,个性化触发能力不足。
7.2 官方公开未来技术迭代路线
-
短期迭代:支持自定义全局快捷键、增加记忆库局域网点对点加密同步、优化轻量化OCR模型识别精度;
-
中期迭代:适配Mac MLX架构,调用本地GPU算力加速向量检索与文本摘要,进一步降低CPU占用;
-
长期迭代:构建跨平台通用桌面端记忆SDK,对外开放API,支持开发者二次集成至自研桌面工具。
八、工程化落地思考:端侧本地记忆中间件的行业发展趋势
结合Goldfish这款工具的技术设计,站在LLM工程化落地的角度,总结当下端侧AI上下文中间件三大核心发展趋势,给同行开发者提供参考:
-
去云端化是刚需:随着办公数据、代码数据隐私要求越来越严格,云端RAG记忆方案会逐步被端侧本地记忆替代,所有上下文数据必须本地闭环,杜绝数据外泄风险;
-
标准化协议大于私有化适配:不要再为每一款AI客户端单独开发对接接口,基于MCP统一上下文协议开发通用中间件,是未来桌面端AI工具的标准开发范式;
-
系统级感知大于软件内感知:单纯读取软件内部对话已经无法满足生产力需求,未来AI工具必须具备系统级全局屏幕、全局窗口感知能力,真正贴合人类跨软件办公、跨软件开发的真实工作流。
Goldfish最大的创新并不是RAG检索技术本身,而是把AI记忆能力下沉到操作系统底层,而非局限于单一应用内部,这也是后续所有桌面端AI工具必然的演进方向。
九、总结
本文从金鱼记忆行业痛点切入,完整拆解了Goldfish五层技术架构、屏幕采集原理、双存储混合架构、MCP协议通信链路、全局快捷键事件监听、隐私加密方案,搭配真实硬件压测数据、核心源码片段、同类产品横向对比,完整还原了这款Mac本地AI记忆工具的全部底层技术逻辑。
简单概括:Goldfish没有优化大模型推理能力,也没有研发全新的RAG算法,而是通过系统级桌面感知+标准化MCP通信+端侧闭环隐私存储,解决了所有AI工具都无法规避的跨应用上下文割裂痛点,用极低的硬件开销,补齐了大模型天生缺失的长期全局工作记忆。
💬 互动环节(文末标准三连引导)
-
你平时开发过程中,是否也被AI反复复述上下文的问题困扰?欢迎在评论区聊聊你的日常痛点;
-
你觉得端侧本地记忆和云端记忆,未来哪一种方案会成为主流?欢迎技术交流辩论;
-
需要我后续出一篇Goldfish本地二次部署+自定义记忆规则改造实战教程吗?
✅ 码字不易,干货满满,建议点赞+收藏,方便后续随时回看;
👉 关注我,后续持续更新桌面端AI中间件源码拆解、MCP协议实战开发、Mac端本地LLM工程化干货,每周更新硬核技术文章,无营销无水文!

2306

被折叠的 条评论
为什么被折叠?



