☰
claude-mem:为Claude打造跨会话持久记忆的MCP开源实践
2026/10/9 11:02:19 网站建设 项目流程

1. claude-mem 是什么:一场关于 AI 记忆的实验

1.1 先说说这个项目出现的逻辑

用 Claude API 的朋友多少都会碰到同一个问题:每次打开新会话,它就像一个患了失忆症的天才。你昨天跟它讨论过的架构方案、它帮你整理过的代码规范、你强调过的偏好——今天再问它,一概不记得。这种"一次性对话"模式在写简单问题时没问题,但如果你是拿 Claude 当长期协作者来用,就非常折磨人。

claude-mem 这个开源项目,最核心的定位就是给 Claude 补上这个缺口的"记忆层"。它不是简单的对话日志保存,也不只是把历史聊天记录塞回上下文窗口,而是通过 MCP(Model Context Protocol)协议,让 Claude 在对话中主动沉淀出事实型记忆和对话型记忆,并在后续的对话中自动召回相关片段。简单说,它让 Claude 从"聊完即忘"变成"越聊越懂你"。

我最早注意到这个项目是因为它的名字太直白了——claude-mem,Claude 的记忆。当时我正被"跨会话记忆缺失"折磨得不轻:每天都在重复交代项目背景、代码风格、技术选型偏好。试过用 System Prompt 塞固定背景、用脚本拼接收藏夹,都不够理想。所以看到有人专门做这个方向,我第一时间就装上了,而且用了很长一段时间。坦白讲,这类工具在 AI 应用生态里还处于早期阶段,但 claude-mem 的设计思路,在"如何给大模型做持久记忆"这个问题上,提供了非常扎实的参考。

1.2 适合谁用、能解决什么问题

如果你符合下面任意一条,claude-mem 大概率值得你花半小时装一下:

  • 长期使用 Claude Desktop 和 Claude Code 完成同一个项目的迭代开发,希望它记住你的技术偏好和项目约定;
  • 反复跟 Claude 确认同一类问题,比如公司内部的技术栈规则、命名规范、部署流程;
  • 想让 Claude 具备"越用越智能"的能力,把历史对话里的经验沉淀下来,而不是每次都从零开始;
  • 正在研究 MCP 生态、向量记忆、AI Agent 记忆层设计的开发者。

我把话说在前面:claude-mem 不是一个"装完就一劳永逸"的工具。它有自己的脾气和坑,比如嵌入模型的服务依赖、记忆召回质量参差、数据库膨胀后查询变慢等。但这并不妨碍它是一个思路非常清晰、架构相当优雅的参考实现。就算你不打算实际部署,单纯看它的设计——怎么抽取记忆、怎么向量化、怎么在提示词里注入——也值回票价。

1.3 我用它跑通的三个典型场景

光说概念容易飘,我先放三个我自己真实跑通的场景,方便你判断这玩意儿到底能干嘛。

第一个场景是跨会话的代码风格约束。我有一个长期维护的个人项目,代码风格定了三条规则:函数名用动词开头、禁止在 controller 层写业务逻辑、所有对外接口必须有错误码枚举。以前每次开新对话都要复制粘贴这三条规则。接上 claude-mem 之后,我只需要在第一次对话里说一句"请记住以下项目规范",之后再聊到这个项目,它写出来的代码风格基本是稳的,不用我反复提醒。

第二个场景是知识沉淀。我研究某个框架时,经常是边看文档边跟 Claude 讨论。过去这些讨论内容散落在各个会话里,下一次想查阅非常麻烦。claude-mem 会把关键事实抽取成结构化记忆,下次我问"这个框架的插件机制支持哪些钩子"时,它能基于之前对话沉淀的内容直接给出答案,而不是让我重新贴一遍背景。

第三个场景是偏好记忆。比如我明确说过"反馈问题时先给结论再展开",后续它跟我沟通时就会自动采用先结论后细节的方式。这种基于记忆的行为调整,让我感觉 Claude 从一个冷冰冰的 API 变成了一个了解我工作习惯的协作者。

这些场景单独看都不算惊艳,但叠加在一起,体验提升非常明显。整个工作流的底层逻辑很简单:输入是持续的对话流,输出是越来越懂你的助手。claude-mem 就是这个转化过程里的关键组件。

2. 整体设计与架构选型:为什么这样做

2.1 无状态 Claude 与记忆层的分工逻辑

要理解 claude-mem 的设计,得先回到一个基本的 API 事实:Claude 的每一次对话请求都是无状态的。服务端不保存你的对话历史,每次请求要么由你带上完整的上下文,要么它就只能看到当前这一轮的内容。业界常用的解法无非几种:手动把历史消息塞进 messages 数组、用摘要压缩历史、搭一个外部向量库做 RAG。claude-mem 用的是第三种思路,但它做得很细致。

它把自己的角色设计成一个介于 Claude 和持久化存储之间的"记忆管家"。在对话过程中,它会周期性地审视当前会话内容,提取出值得长期保留的信息——比如用户身份信息、项目背景、技术决策、偏好与禁忌、任务进度等——然后把这些信息结构化地写入 SQLite 数据库。与此同时,在每一轮新对话开始或进行中,它会根据当前问题做一次语义相似度检索,把相关的历史记忆作为补充材料注入到 Claude 的上下文里。

这套分工的巧妙之处在于:记忆的写入和读取,对 Claude 本身来说几乎是透明的。Claude 只需要配合 MCP 工具调用或者遵循注入的系统提示即可,不需要额外的训练和微调。所有复杂逻辑都收拢在记忆层内部。作为使用方,你感受到的只是"Claude 居然记得我们上次聊了什么",而背后整套写入、索引、检索、注入的链路,都被封装在一个独立进程里。

2.2 为什么选 SQLite 做向量存储

你可能会问:向量数据库不是有 Chroma、Weaviate、Milvus 这些吗,为什么挑 SQLite?这里有一个很实际的产品视角:claude-mem 是一个个人开发者和轻量团队使用的工具,它不需要分布式部署、不需要运维一套独立服务。SQLite 单文件存储,生态成熟,配合 sqlite-vec 这样的扩展就能原生支持向量检索,查询速度在几十万条规模内完全够用。最重要的是它零配置,一个文件跟着项目走,备份和迁移都极其简单。

我觉得这个取舍非常符合"给个人工作流增强记忆"这个场景。如果你在做一个面向万人团队的知识库平台,那当然要考虑专用向量数据库和集群方案;但如果你只是想让本地的 Claude 记住你的项目习惯,SQLite 就是那个"足够好且最简单"的答案。工程上有个朴素的准则:能在单机上解决的事情,不要轻易引入分布式复杂度。claude-mem 的开发者显然深谙此道,它把复杂的部分留给了嵌入模型和 MCP 协议治理,而存储层用最朴实的方式解决了。

2.3 记忆三层模型:实体、事实与会话

claude-mem 的另一个让我印象深刻的点是它把"记忆"做了分层,而不是笼统地存一堆聊天记录。它主要区分了三个层面:

  • 实体(Entities):对话中反复出现的人、组织、项目、工具、概念等;
  • 事实(Facts):与实体绑定的事实性信息,比如"项目 A 使用 PostgreSQL 作为主数据库";
  • 会话(Conversations):整段对话的摘要与关键结论。

这种分层的作用是让检索变得有语义。当你在新对话里问"我们上次确定的数据库方案是什么",它不会傻乎乎地把整段旧日志搬出来,而是沿着"实体 — 事实"的路径,精准地召回那条关于数据库选型的记录。对比简单粗暴的"全文检索 + 塞上下文"方案,这种结构化记忆带来两个好处:一是召回精度更高,二是对上下文的污染更小。

我实际用下来的感受是:搜索质量高的记忆,比堆一大堆历史文本更有效。Claude 的上下文窗口虽然很大,但真正决定回答质量的,是上下文里的"信噪比"。claude-mem 做的事,本质上就是在无限增长的历史记录里,为每一次对话挑选信噪比最高的那几条喂给模型。这个"挑选"的动作,就是这套系统的灵魂。

2.4 MCP 协议的角色与接入方式

MCP 中文叫模型上下文协议,你可以把它理解成 AI 应用界的 USB 接口。以前要给 AI 接一个外部工具,每个应用都得自己定义一套插件规范,互不兼容。MCP 的出现统一了这套规范,让 AI 应用能通过标准接口连接外部数据和工具。claude-mem 选择做成一个 MCP 服务器,等于把记忆能力做成了一个标准的、可以被任意 MCP 客户端调用的服务。

具体来说,claude-mem 有两种接入形态。一种是进程内模式,直接作为 Claude Code 的插件运行,部署简单,性能好;另一种是独立 MCP 服务器模式,适合 Claude Desktop 或其他 MCP 客户端调用。两种模式的存储层是共通的,都用同一个 SQLite 文件,所以你在 Claude Desktop 里积累的记忆,在 Claude Code 里也能读到。这个设计很贴心,意味着我不需要为不同入口分别维护记忆。

从开发者角度看,这种"标准协议 + 模块化存储"的组合也很容易扩展。如果你不想用 SQLite,想换成 Postgres 或者别的存储,理论上只需要实现对应的存储适配器。这种面向接口的设计让 claude-mem 不只是工具,更是一个可研究的记忆层模板。

3. 安装与配置实操:一步一步跑通

3.1 环境准备与前置条件

在动手之前先把需要的原料备齐:

  • Node.js 18 或更高版本(claude-mem 是基于 Node 的,低版本装不上,建议直接用最新的 LTS);
  • Claude Desktop 和 Claude Code,至少有一个,两个都装体验最完整;
  • 一个可用的嵌入模型服务,默认实现依赖外部嵌入 API,你可以理解为它需要把文字转成向量,这一步必须有模型服务支撑;
  • 基本的命令行使用经验,会改环境变量即可。

这里有一个需要提前确认的重点:嵌入模型服务所在的域名,在你的网络环境下必须能正常访问。如果你所处的是内网隔离环境,或者外网访问不可达,那 claude-mem 会出现一个很诡异的状态——服务能启动、Claude 能连上、工具看起来都正常,但记忆永远是空的。我在第五部分会详细讲这个坑的排查过程,这里先记住一个原则:装好之后第一件事,先手动验证记忆写入和召回,不要直接开聊。

3.2 安装与启动的完整命令流程

先说标准安装路径。在终端里执行:

npm install -g @thedotmack/claude-mem

如果你用的是 Claude Code 插件模式,通常需要执行它提供的插件安装命令,把 claude-mem 注册到 Claude Code 的插件列表里,例如:

claude-mem install

具体命令以项目 README 为准,不同版本可能略有差异。装完之后,在项目目录下启动 MCP 服务的方式一般是:

npx claude-mem run

如果一切正常,你会看到它监听了本地端口,或者以 stdio 模式接入 Claude Desktop。这时再打开 Claude Desktop 的 MCP 配置界面,把刚才启动的服务地址填进去,并启用相关记忆工具权限,就能在对话面板里看到 memory 相关的工具标识。

如果上面这段让你觉得有点抽象,我用我自己的环境举个例子。我平时主要用 Claude Code,所以走的是插件模式。装完之后,我在项目里直接跟 Claude 说了一句"请记住:我们项目的接口规范遵循 Google Style,禁止在 controller 层写业务逻辑"。过了一会儿我执行记忆查看命令,这条记录已经出现在列表里了。整个过程不到五分钟。如果这步跑不通,那大概率是嵌入模型没配好或者网络不通,往下看排查部分。

3.3 核心配置项:从默认到贴合自己

claude-mem 提供了若干环境变量来调整行为,我把常见且重要的几个列成表格:

配置项作用我的建议
CLAUDE_MEM_EMBEDDING_MODEL指定嵌入模型名称默认可用,追求中文效果可换成中文友好的模型
CLAUDE_MEM_MAX_MEMORIES单次对话最多注入几条记忆默认值已经比较克制,不建议超过 5~8 条
CLAUDE_MEM_SIMILARITY_THRESHOLD相似度召回阈值,低于该值不召回阈值太高会漏,太低会塞垃圾,建议先默认再微调
CLAUDE_MEMORY_CUTOFF记忆的时间窗口,只召回该时间之后的适合项目初期或敏感场景
CLAUDE_MEM_DB_PATH指定 SQLite 数据库文件路径建议放到项目目录或固定数据目录,方便备份
FORCE_MCP_MODE强制用 MCP 模式某些模式下需要开启

配置环境变量时,在启动 claude-mem 之前用 export 方式设置即可,比如:

export CLAUDE_MEM_DB_PATH="$HOME/.claude-mem/store.db" export CLAUDE_MEM_MAX_MEMORIES=6

我对新手的建议是:先全部用默认配置跑通一遍,确认记忆能写入、能召回,再逐步调整阈值和模型。一上来就改参数,出了问题你都分不清是配置问题还是网络问题。

3.4 第一次验证:写入一条记忆并召回

配置好之后,我强烈建议做一个最小验证:主动让 Claude 记住一条事实,换一个新会话,再主动问它这条事实。举个例子,第一轮对话里说:

"请记住:我们团队的代码评审规则是:超过 200 行的 PR 必须拆分,每个 PR 只聚焦一个改动点。"

然后开启一个新的会话(注意,是全新的会话,不是同一个会话继续聊),问它:

"我们团队的 PR 拆分规则是什么?"

如果 claude-mem 工作正常,它会从记忆库里召回这条规则,并根据记忆给出准确回答,而不是说"我不知道"。我在多个环境里测过,只要嵌入模型和检索链路是通的,这个验证流程都能跑通。

这个验证的意义在于:它把"记忆写入"和"记忆召回"拆成两个独立环节,能帮你快速定位问题出在哪个环节。如果第一步就失败,说明写入链路有问题;如果第一步成功但第二步失败,说明问题出在检索、注入或阈值配置上。这个排查思路我后来用得非常顺手,基本可以帮你省掉一大半调试时间。

4. 记忆系统的工作原理:写入、存储与检索全链路

4.1 一条记忆是怎么被"沉淀"下来的

很多人的第一反应是:Claude 不就是在对话里把内容存到数据库吗?这有什么难的。但真正做过记忆系统的人会告诉你,难点在三个环节:什么时候存、存什么、怎么判断"值得存"。

claude-mem 的思路是:在每轮对话之后,让 Claude 按照预设的结构化格式审视当前会话,把"值得记住"的信息抽取出来。它会要求 Claude 返回包含实体名称、实体类型、事实内容、置信度、时间上下文等字段的记忆记录。随后系统再对这些内容做嵌入向量化,写入 SQLite 的对应表。这套"让模型自己决定记什么"的方式,比硬编码规则要灵活得多——你不可能预先把所有值得记的信息列成规则,但模型可以基于语义理解判断。

这里有一个容易被忽视的设计:写入之前它通常还会做一步相似度判断,避免同一条信息被反复记录造成污染。我做测试时遇到过一种情况——连续几轮都在讨论同一个 API 报错,结果记忆库里出现了五六条高度重复的记录,导致后续召回时同一条信息被重复塞进上下文。后来我清理了库,并调高了去重阈值,情况好了很多。这说明"去重"和"抽取"一样,是记忆系统里不可缺的一环。

4.2 检索召回:语义向量与 Top N 选择

你问 Claude 一个问题,claude-mem 会先把你的问题做嵌入向量化,然后去 SQLite 里按相似度做最近邻搜索,召回 Top N 条记忆。这个 N 就是 CLAUDE_MEM_MAX_MEMORIES 控制的。之后这些记忆会被整理成一段"附加背景信息",通过工具结果或系统提示注入给 Claude。

为什么用语义相似度而不是关键词匹配?举个例子。你问"上次说的那个缓存方案还生效吗",传统全文检索很难把这句话和库里的"Redis 作为缓存层,TTL 设置为 24 小时"关联起来,但向量语义检索可以。这是这类记忆系统能"懂人话"的关键。

代价是:嵌入计算需要请求模型服务,每次对话都有额外的网络耗时。如果你用的是本地嵌入模型,这部分延迟和资源占用会更明显。在我自己的老笔记本上,纯本地方案大约会让每次预检索多出 1~2 秒;云端 API 方案则通常更快一些,但有网络稳定性要求。

4.3 记忆注入:如何影响 Claude 的回答

记忆检索完之后,最终效果取决于注入方式。claude-mem 会把召回的几条记忆包装成特定提示段落,附在当前会话的上下文里,让 Claude 意识到"这些是之前对话中确定过的信息"。聪明的模型会把这些记忆当作背景约束,而不是当作最新的事实。这也是为什么它要求召回内容标注时间和置信度——模型需要一个判断依据。

我实测过几个典型场景:

  • 让 Claude 记住"文档目录放在 docs/ 下,所有接口文档必须同步更新"之后,后续讨论中它写文档时真的会主动检查 docs/ 路径;
  • 记住"禁止使用 lodash"之后,它给出的代码里基本不会再出现 lodash,而是用原生实现;
  • 记住技术偏好后,跨会话的代码评审意见明显更贴合我的风格。

当然也有翻车的时候:记忆过期了还在生效。比如项目早就迁移到 ClickHouse 了,但旧记忆里写的还是 MySQL,如果召回时不注意置信度和时间过滤,Claude 就会被旧信息带偏。所以我对时间窗口参数和定期清理记忆库非常重视,后面会详细说。

4.4 阈值调优:找到"不多不少"的边界

配置里最值得花时间调的是 CLAUDE_MEM_SIMILARITY_THRESHOLD。这个阈值决定了"多像才算相关"。我刚开始用默认值,结果发现一些问题:某些记忆确实相关,但被阈值挡在外面没召回;另一些时候又召回了很多八竿子打不着的记录,把上下文污染得乱七八糟。

调优的方法其实不复杂。我建议分三步走:第一步,用默认值跑几天,把"漏召回"和"误召回"的情况记录下来;第二步,如果误召回多,就把阈值往上调 0.01 或 0.02,观察召回数量变化;第三步,如果漏召回多,就往下调。每次只调一点点,不要一次改太多。阈值和模型、语言、数据分布都有关系,不存在一个普适的最优值,只有适合你使用场景的值。

我在中文内容里实测下来,默认阈值偶尔会漏掉一些语义接近但表达差异大的记忆。如果你也遇到类似情况,可以适当放宽阈值,但同时调小 MAX_MEMORIES,用"量少但相关"的召回策略来对冲噪声。这是个组合拳,光调一个参数效果有限。

5. 常见问题与排查技巧实录

5.1 高频问题速查表

现象可能原因解决思路
启动后 MCP 连接不上Node 版本过低 / 端口被占用升级 Node 或更换监听端口
记忆能写入但检索不到嵌入模型更换导致旧向量不可比清空重建嵌入索引,或保持同一模型不切换
召回内容明显不相关相似度阈值过低调高 CLAUDE_MEM_SIMILARITY_THRESHOLD
同一记忆反复出现去重机制没生效升级版本,清理重复记录
对话变慢明显每次检索链路网络耗时长换更快的嵌入模型或本地服务
数据库文件越来越大记忆累积太碎增加写入门槛,定期合并清理
中文记忆乱码或效果差嵌入模型对中文支持弱更换面向中文的嵌入模型

这张表基本覆盖了我最初两周遇到的大部分问题。越到后面我越发现,这个系统的"水桶效应"主要卡在嵌入模型和配置参数上,而不是 SQLite 本身。

5.2 我踩过的三个坑(重要)

第一个坑:嵌入模型不可达。我最初的部署环境是在内网虚拟机里,对外访问受限。结果是 claude-mem 服务能启动、Claude 也显示工具正常,但所有记忆写入操作都静默失败——对,是静默失败,连报错都不明显。这个问题排查了我整整一个下午。所以提醒大家:装好之后第一件事别急着聊需求,先随手造一条记忆,然后立刻检索验证。如果写入和召回都有问题,优先怀疑网络和嵌入服务,而不是项目本身的逻辑。

第二个坑:不要频繁切换嵌入模型。有一次我把嵌入模型从 A 换到 B,想着试试中文效果,结果发现旧记忆没有被重新向量化,新旧向量完全不兼容,导致检索质量急剧下降。这件事提醒我,嵌入模型选定之后最好固定下来,不要为了"试试看"随意切换。如果一定要换,记得把旧库重建一遍。

第三个坑:上下文被垃圾记忆污染比没记忆更糟。默认参数可能偏向多召回几条,但如果你对话里残留的碎片信息太多,召回出来的东西会淹没真正有用的背景。我后来把 MAX_MEMORIES 调小,并适当提高阈值,回答质量反而上升了。这个反直觉的体验很有意思——不是记忆越多越好,而是恰到好处才最好。

5.3 数据维护实操:备份、清理与迁移

数据库文件就是一切,所以备份策略很简单:复制那个 .db 文件。我自己的习惯是定期把数据库文件备份到项目的 backups 目录:

cp "$HOME/.claude-mem/store.db" "$HOME/.claude-mem/backups/store-$(date +%F).db"

清理重复和过时记忆,目前没有特别完美的一条命令,我通常用 sqlite3 进去手动处理。比如查看事实表里最近一周的记录:

sqlite3 "$HOME/.claude-mem/store.db" "select * from facts order by created_at desc limit 20;"

如果某条记忆是过时的,直接按 id 删掉即可。这个操作不频繁,但每做一次都能明显感觉到后续对话的"纯净度"提升。记忆库跟人的长期记忆一样,定期整理和遗忘,反而让重要的东西更突出。

5.4 性能观察与优化经验

运行一段时间后,我顺手记了一些性能数据:在几万条记忆的规模下,一次语义检索通常耗时几十毫秒到几百毫秒,加上嵌入计算和网络往返,整体增加的时间大约在几百毫秒到一两秒之间。对于大多数交互场景,这个延迟可以接受,但如果你特别在意响应速度,有几个优化方向:

  • 把嵌入模型换成速度更快的版本,牺牲一点精度换来更快的响应;
  • 调小 MAX_MEMORIES,减少下游模型的上下文处理负担;
  • 定期清理过期记忆,让向量索引保持精简;
  • 不要让数据库文件躺在网络盘上,本地 NVMe 磁盘的性能会好很多。

我还发现一个规律:记忆库规模在十万条以下时,SQLite 的表现很稳定;但如果你的记忆增长速度非常快,建议引入定期合并机制,把相似度极高的记忆合并成一条,避免库无限膨胀。

6. 进阶玩法与扩展思路

6.1 多项目隔离与团队共享

如果你的项目不止一个,建议按项目隔离数据库。实现方式很简单:启动时给不同项目指定不同的 CLAUDE_MEM_DB_PATH。比如 A 项目用 store-a.db,B 项目用 store-b.db。这样每个项目的记忆不会互相污染,检索也更精准。

如果是团队使用,可以约定一个共享存储位置,比如 NAS 或多人可读的路径,把 SQLite 文件放上去。但要清楚:SQLite 不适合高并发写入,团队规模大了以后会出现锁等待。小团队(三五个人)用共享文件问题不大,再往上就得考虑迁移到真正的数据库或者独立向量服务了。

6.2 自定义嵌入模型与离线部署

如果你对数据隐私要求极高,或者在线 API 不可用,可以尝试接入本地嵌入模型。思路是跑一个 OpenAI 兼容的本地推理服务,然后把嵌入模型的请求地址配置到 claude-mem 里。这对内网环境非常友好,唯一要接受的是本机向量化速度和资源占用。我在一台只有 CPU 的旧机器上跑过小型嵌入模型,单条记忆向量化约耗时几百毫秒到 1 秒,可以接受,但如果你一分钟要写入十几次记忆,就要掂量掂量了。

如果你更在意中文场景的效果,也可以试试中文语料上表现更好的嵌入模型。这里有一个通用经验:不同嵌入模型在文本相似度判断上各有偏好,最好在自己的语料上做一轮小规模测试,再看看哪款召回效果最贴合你的使用场景。

6.3 与 n8n、Dify 等平台的组合可能性

claude-mem 本质是一个 MCP 服务,而 MCP 客户端正在快速普及。这意味着理论上你可以把 claude-mem 接进更多支持 MCP 的 AI 应用中台。比如在 n8n 里通过 MCP 节点调用 claude-mem 的记忆读写能力,在 Dify 里通过 MCP 接入记忆插件,给工作流增加跨会话记忆。目前生态还在早期,但方向是对的——记忆层正在从"某个 AI 产品的附属功能"变成"独立的基础设施"。

我个人对这个趋势的判断是:未来 AI 应用的竞争力,很大程度取决于记忆和上下文管理的精细度。谁能用最低的成本把"该记的记下来,该忘的忘掉"做好,谁就能让模型在真实复杂任务中表现得更像一位靠谱的同事。

最后再分享一个小技巧:如果你经常用 Claude 处理同一类重复性任务,我建议你在项目开始前先主动喂给 claude-mem 几条"元记忆",比如项目目录结构、命名规范、关键技术变量。这就像给新同事做的入职培训,前期花十分钟,后面能省下无数重复解释的时间。我不会告诉你这条路没有坑,但走通之后的体验确实是质的提升——至少对我来说,Claude 从一个每次见面都要重新自报家门的天才,变成了一个真正记得我们合作过什么的老搭档。实践出真知,建议你也动手试一遍。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询