你有没有遇到这样的场景:和 Claude Code 一起调了两天的架构细节,关掉终端再开,它又变回了对你项目一无所知的「陌生 AI」。每次都要重新解释目录结构、技术选型、团队规范……这不是模型的问题,而是上下文持久化从未被认真解决。
Semantica 是 2026 年专为 Claude Code 设计的长期记忆框架,解决的正是这个问题:让 Claude Code 在多个 session 之间保持对代码库的理解、项目偏好与用户习惯。本文从「Semantica 是什么」到「怎么配置落地」,附踩坑记录与 Cloud Mac 实践,给一个可直接照着做的完整指南。
一、Semantica 是什么
Semantica 是一个为 AI 编码助手设计的持久化记忆中间件,2026 年 Q1 开源后迅速在 Claude Code 社区获得关注。它的核心思路是:不依赖模型原生的上下文窗口来「记住事情」,而是在模型之外维护一个结构化的记忆数据库,每次 session 启动时按语义相关性自动检索并注入最有价值的记忆片段。
从架构上看,Semantica 由三个部分组成:
- Memory Store:底层持久化存储,默认支持 Postgres + pgvector(也可用 Qdrant、Weaviate)
- Memory Manager:负责记忆的写入、去重、合并与过期清理
- Retrieval Engine:在每次 session 开始时语义检索最相关的记忆,构建注入 prompt
对 Claude Code 来说,Semantica 通过 hooks 机制接入,在 PreToolUse、PostToolUse 和 Stop 事件时自动完成记忆读写,无需修改任何 Claude Code 原生配置。
二、Claude Code 的记忆困境
Claude Code 本身并没有跨 session 记忆机制。官方推荐的 CLAUDE.md 文件是一种变通方案——把项目说明写进去,每次 session 自动加载。但 CLAUDE.md 有明显局限:
- 全量加载,不区分相关性:无论当前任务是什么,整个 CLAUDE.md 都会占用 token
- 静态,无法自动更新:新的项目决策、修复历史、用户偏好不会自动沉淀
- 无个性化:不同开发者的习惯、偏好无法分开存储
- 单节点:多人协作时,A 积累的记忆 B 看不到
Semantica 解决的正是这四个问题:按语义检索(只注入相关片段)、自动写入(每次 session 结束自动总结新增记忆)、支持多用户命名空间、以及通过共享 Memory Store 实现团队记忆同步。
三、三层记忆模型
Semantica 参考认知科学的记忆层级,将 Claude Code 的记忆划分为三层:
短期记忆(Short-term Memory)
即当前 session 的上下文窗口。这部分由 Claude Code 原生管理,Semantica 不干预,但会在 session 结束时提取有价值的片段写入长期记忆。
工作记忆(Working Memory)
当前任务相关的临时状态,比如「正在重构 auth 模块」「上次卡在 JWT 刷新逻辑」。工作记忆的生命周期比 session 长(跨几天的任务),但比长期记忆短(任务完成后可归档)。Semantica 用一个轻量的 task_context 表维护工作记忆,优先级最高,每次检索时必然注入。
长期记忆(Long-term Memory)
持久化的项目知识与用户偏好,包括:
| 记忆类型 | 示例内容 | TTL 建议 |
|---|---|---|
| 代码库知识 | 「auth 模块用 Passport.js,JWT 有效期 15 分钟」 | 永久(随代码变更自动更新) |
| 架构决策 | 「数据库用 Postgres,禁止引入 ORM」 | 永久 |
| 用户偏好 | 「代码注释用中文」「错误处理优先用 Result 类型」 | 永久 |
| 历史 Bug | 「2026-07 并发写 Redis 时出现竞争条件,已用分布式锁修复」 | 1 年 |
| 任务进度 | 「payment 重构已完成 60%,剩余 webhook 处理」 | 任务完成后归档 |
四、与 Claude Code 集成
安装与初始化
# 安装 Semantica CLI
npm install -g @semantica/cli
# 在项目根目录初始化
cd /your/project
semantica init
# 初始化会创建 .semantica/config.json 和 .semantica/hooks/
初始化完成后,.semantica/ 目录结构如下:
.semantica/
├── config.json # 主配置文件
├── hooks/
│ ├── pre-session.sh # session 开始时触发(注入记忆)
│ └── post-session.sh # session 结束时触发(写入记忆)
└── memory/
└── local.db # 本地开发用 SQLite(生产换 Postgres)
配置 Memory Store
Semantica 支持三种后端,按场景选择:
| 后端 | 适用场景 | 配置复杂度 |
|---|---|---|
| SQLite(本地) | 单人本地开发、快速验证 | 零配置 |
| Postgres + pgvector | 团队协作、Cloud Mac 节点 | 低(一条 docker 命令) |
| Semantica Cloud | 零运维、多设备同步 | 极低(填 API Key) |
推荐配置(Postgres + pgvector):
# 启动 Postgres + pgvector
docker run -d \
--name semantica-db \
-e POSTGRES_PASSWORD=yourpassword \
-e POSTGRES_DB=semantica \
-p 5432:5432 \
pgvector/pgvector:pg16
# .semantica/config.json
{
"memory_store": {
"backend": "postgres",
"connection_string": "postgresql://postgres:yourpassword@localhost:5432/semantica",
"embedding_model": "text-embedding-3-small",
"vector_dimensions": 1536
}
}
Cloud Mac 推荐共享 Postgres 实例
在 Vuncloud Cloud Mac 上,把 Postgres 跑在一个固定节点,其他开发机器通过内网连接同一个 Memory Store,团队记忆自动共享,无需额外同步步骤。
配置 Retrieval 层
Retrieval 层决定每次 session 注入多少记忆、如何排序。核心参数:
{
"retrieval": {
"top_k": 15,
"similarity_threshold": 0.72,
"recency_weight": 0.3,
"relevance_weight": 0.7,
"max_tokens": 2000,
"namespace": "project:my-app"
}
}
top_k:每次最多检索多少条记忆。建议 10–20,过多会稀释信噪比similarity_threshold:语义相似度阈值,低于此值的记忆不注入。0.7 是经验值recency_weight/relevance_weight:新近度与相关性的权重比。交互型任务偏新近,代码架构查询偏相关性max_tokens:注入记忆的 token 上限,保护上下文窗口namespace:记忆命名空间,可按项目、用户、环境隔离
Session 持久化
Semantica 通过 Claude Code 的 hooks 机制实现 session 级别的记忆读写。在 ~/.claude/settings.json 中添加:
{
"hooks": {
"PreToolUse": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "semantica inject --session-id $CLAUDE_SESSION_ID"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "semantica consolidate --session-id $CLAUDE_SESSION_ID --auto-extract"
}
]
}
]
}
}
semantica inject 会在每次工具调用前检索相关记忆并注入系统提示;semantica consolidate 会在 session 结束后提取新增的有价值信息写入 Memory Store。
PreToolUse 还是 PreCompact?
如果你的 session 经常触发 context compaction,建议同时在 PreCompact hook 中运行 semantica inject,确保压缩前的重要上下文不丢失。
五、配置最佳实践
经过几个月的实际使用,总结了以下最有效的实践:
-
给记忆打标签(Tag):写入记忆时附带
tags,例如["auth", "architecture", "bug-fix"],检索时可按标签过滤,精准度大幅提升。semantica add "JWT 刷新 token 有效期从 7 天缩短为 24 小时,原因是安全审计" \ --tags auth,security --importance high -
为不同项目使用独立 namespace:避免项目 A 的记忆污染项目 B 的上下文。
# config.json "namespace": "project:my-saas-backend:v2" -
定期 compact 记忆:同一主题的多条记忆可以合并,减少重复注入。
semantica compact --namespace project:my-saas-backend:v2 --dry-run -
重要决策手动添加:自动提取擅长「做了什么」,不擅长「为什么这么做」。架构决策、技术选型建议手动
semantica add,写清楚背景和理由。 -
调低
max_tokens保护上下文:Claude Code 的上下文窗口有限,记忆注入控制在 1500–2000 token 以内,剩余空间留给实际任务。
六、常见踩坑
踩坑一:hooks 路径写死导致跨机器失效
如果 settings.json 中的 command 写了绝对路径(如 /Users/noah/.nvm/bin/semantica),换机器后 hook 会静默失败。建议用 npx semantica 或把 semantica 加入 PATH。
踩坑二:向量维度不匹配
切换 embedding 模型(如从 text-embedding-3-small 换到 text-embedding-3-large)时,旧记忆的向量维度不同,检索会返回错误或空结果。需要先 semantica migrate --reembed 重新生成向量,或清空后重建。
踩坑三:similarity_threshold 设太低导致噪音注入
阈值低于 0.60 时,与当前任务几乎不相关的陈旧记忆也会被注入,反而干扰 Claude Code。建议从 0.72 开始,根据实际效果微调。
踩坑四:consolidate 重复写入
如果 Stop hook 触发了多次(Claude Code 有时会多次触发 Stop 事件),同一 session 的记忆会被重复写入。建议在 consolidate 命令中加 --idempotent 参数,Semantica 会自动去重。
七、与 Mem0、Zep 的对比
| 框架 | 设计定位 | Claude Code 集成 | 自托管 | 适用场景 |
|---|---|---|---|---|
| Semantica | 专为 AI 编码助手设计 | 原生 hooks 支持,零配置 | Postgres / SQLite | Claude Code 长期记忆 |
| Mem0 | 通用 AI 记忆层 | 需手动接入 SDK | 支持(OSS) | 通用 AI 应用、聊天机器人 |
| Zep | 对话历史 + 事实提取 | 需手动接入 SDK | 支持(OSS) | 多轮对话、CRM 类应用 |
选型建议:
- 主力工具是 Claude Code → 优先 Semantica,集成成本最低
- 需要在多个 AI 工具间共享记忆(如 Claude Code + 自定义 Agent)→ 考虑 Mem0(API 更通用)
- 主要需求是对话摘要与事实提取 → Zep 更成熟
八、Cloud Mac 上运行 Semantica 的优势
在本地 Mac 上运行 Semantica 的最大问题是:关机就断连。Memory Store 依赖的 Postgres 服务随笔记本休眠而停止,下次开机还需要重新启动,跨 session 的连续性大打折扣。
Vuncloud Cloud Mac 在这方面有明显优势:
- 7×24 在线:Memory Store 节点持续运行,不受关机影响
- 多节点共享:团队多台 Cloud Mac 连接同一 Postgres 实例,记忆自动同步
- 固定 IP / 内网访问:配置一次
connection_string,跨 session 永久有效 - SSD 持久化:1TB/2TB 附加存储选项,记忆数据库不占用系统盘
- 与 CI/CD 集成:可以在 CI 构建完成后,自动把新的架构变更写入 Semantica,下次 Claude Code 开发时自动感知
推荐在 Cloud Mac 上的部署方案:用一个专用节点跑 Postgres + pgvector(docker compose up -d),其他开发节点通过内网 IP 连接。Memory Store 挂载到附加存储卷,与系统镜像解耦,节点重置不丢数据。
Claude Code + Semantica 要一个稳定的运行环境?
Cloud Mac 24 小时在线,Memory Store 不随关机消失。一台专用 M4 节点跑 Postgres,其他开发机器共享同一套长期记忆。适合独立开发者与小团队。
FAQ
Semantica 和 CLAUDE.md 有什么区别?
CLAUDE.md 是静态的项目说明文件,每次 session 全量载入;Semantica 是动态记忆系统,根据查询语义检索最相关的记忆片段注入上下文,更省 token、更具个性化。两者不冲突,可以同时使用——CLAUDE.md 放固定的项目规范,Semantica 负责动态的任务进度与用户偏好。
Semantica 免费吗?
Semantica 核心 SDK 开源免费;云端托管的 Memory Store 有免费额度(约 10 万条记忆/月),超出按量计费。自托管 Postgres/pgvector 方案可完全零成本。
记忆数据存在哪里?安全吗?
默认托管在 Semantica Cloud(SOC 2 认证);也可配置为自托管 Postgres + pgvector,数据完全不出本地网络,适合代码保密要求高的团队。
Claude Code 重启后记忆会丢失吗?
配置 Semantica 后不会丢失。记忆写入 Memory Store(持久化数据库),下次 session 启动时通过 hooks 自动检索并注入,与 session 生命周期解耦。
在 Cloud Mac 上运行 Semantica 有什么优势?
Cloud Mac 节点 24 小时在线,本地 Memory Store 不会因为关机而断连;多节点共享同一 Postgres 实例,团队协作时记忆自动同步;跨 session 持久化无需本地磁盘挂载。
结语
Claude Code 的「失忆」问题本质上是 AI 工具的上下文持久化困境——模型越来越聪明,但每次 session 还是从零开始。Semantica 给出了一个工程上可落地的解法:把记忆外置到持久化数据库,用语义检索替代全量加载,用 hooks 机制实现零侵入接入。
配置要点总结:
- Memory Store 选 Postgres + pgvector,兼顾性能与自托管灵活性
- Retrieval 参数从默认值开始,
top_k=15、similarity_threshold=0.72,用一周再微调 - 同时在 Stop 和 PreCompact 注册 hook,防止 context compaction 时记忆丢失
- 重要架构决策手动
semantica add,不要只依赖自动提取 - Cloud Mac 用户:把 Postgres 跑在专用节点,挂载附加存储,记忆库与系统盘解耦
相关阅读
- 2026 最好的 AI Agent Memory 框架推荐
- 2026 最好的 AI 编程工具排名
- Claude Code CLAUDE.md 实测:Karpathy Skills 有没有用?
- Claude Code 月账单从 $800 降到 $150:成本优化实录
框架版本与 API 以 Semantica 官方文档为准。最后更新:2026 年 8 月 11 日。