news 2026/10/12 7:20:57

claude-mem实战:给Claude Code外挂一个长期记忆库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
claude-mem实战:给Claude Code外挂一个长期记忆库

1. 从"每次都重新自我介绍"说起

如果你用过 Claude Code 这类命令行 AI 编程工具,大概率经历过一种"既爽又憋屈"的体验:爽的是它真的能撸代码、改 bug、写测试,憋屈的是——它记性太差。上午刚跟它讨论完项目的模块划分,下午新开一个会话,它又一脸茫然地问你"这个项目的技术栈是什么"。你得把项目背景、目录结构、设计决策、依赖关系重新讲一遍。一次两次还能忍,次数多了真的会让人怀疑人生:我是在用 AI,还是在带实习生?

我最初是在一个长期维护的跨平台项目中遇到这个痛点的。项目持续了好几个月,光核心模块就有十几个,很多历史决策散落在几十个会话里。每次新开会话都要花大量时间重新"说服" Claude 理解项目上下文,一天的精力很大一部分浪费在了重复沟通上。后来我试了各种"土办法"——把项目说明塞进 CLAUDE.md、把重要决策写进 docs、甚至尝试过用脚本手动拼接上下文——都只能说勉强能用,离"好用"差着十万八千里。

直到我在几个技术社区的讨论帖里看到有人提及claude-mem这个工具,才意识到这类问题其实有一个系统性的解法:既然 Claude 记不住,那就给它外挂一个"记忆库",让它在每次对话开始前自动把值得记住的东西加载进来。这篇文章就是围绕claude-mem的完整实战记录,包括它是怎么运作的、怎么安装配置、怎么在日常项目中真正用起来,以及我踩过的那些坑。如果你也在用 Claude Code 维持续开发项目,或者对"AI 记忆"这个方向感兴趣,这篇文章应该能帮你省下不少摸索时间。

2. 记忆机制的底层思路与整体设计

2.1 为什么"重新说一遍"这件事成本很高

先说一个反直觉的事实:对于 Claude Code 这类工具,会话隔离既是特性又是缺陷。特性在于,每个会话都像一张白纸,不会因为上一个会话的垃圾信息导致输出质量下降;缺陷在于,长期项目的核心信息——架构决策、代码约定、环境特殊情况——恰恰需要跨会话保留,而默认机制并没有为这种"长期记忆"提供好用的方案。

claude-mem要解决的就是这个错位。它的设计思路并不复杂,核心只有三件事:

  • 把有价值的对话内容沉淀成结构化的记忆片段;
  • 把记忆片段存放在项目本地的文本文件中;
  • 在新会话开始时,自动把相关的记忆片段注入提示词,让 Claude 处于"已经认识你和你的项目"的状态。

这三件事听起来简单,但真正落到实现上,牵扯到几个关键问题:哪些内容值得记忆?记忆以什么格式存储?怎么在恰当的时机注入?通过什么机制触发记忆提取?这些都是需要在设计层面回答的问题。

2.2 "记忆"不是日志,而是有损压缩

很多人容易把"记忆"理解成"完整记录",实际上如果真把每个会话的完整历史都塞给 Claude,效果反而会变差。原因很直接:上下文窗口是有限的,你塞进去 10 万 token 的聊天记录,真正有用的核心信息可能只有 2 千 token,剩下的大部分是客套话、中间探索过程、试错记录。更要命的是,噪声多了,模型对关键信息的注意力会被稀释。

claude-mem的聪明之处在于:它不做"完整备份",而是做"有损压缩"。它通过一个自动提取流程,从对话中挑选出那些具有长期参考价值的信息点,比如:

  • 项目采用的技术栈和版本约束;
  • 你偏爱的工作流程和代码风格;
  • 已经拍板的技术决策及理由;
  • 反复出现的坑和规避方式;
  • 当前进行到一半的任务状态。

然后把这些信息点整理成短小精悍的记忆条目,以 Markdown 文件的形式存放在项目本地。这样做的好处是双重的:一方面压缩了信息量,让核心记忆在上下文中占据的比例大大提升;另一方面,所有记忆都是人类可读的纯文本,你可以随时打开查看、修正、删除,不会出现"黑盒记忆"失控的局面。

2.3 存储格式与注入策略的设计取舍

在存储格式上,claude-mem选择了 "一条记忆一个 Markdown 片段" 的组织方式。每个记忆条目包含若干结构化字段,大致可以理解为这样一个模板:

# 记忆条目 - 日期:YYYY-MM-DD - 会话:会话摘要标识 - 主题:一句话概括记忆内容 ## 内容 这里用简洁、可执行的语气描述记忆的具体内容,比如: "项目使用 Python 3.12 + FastAPI,虚拟环境固定使用 uv,不要修改 requirements.txt"

这种格式的好处是足够轻量,人类可以直接编辑修正,Claude 也能快速理解。相比 json 或 sqlite 之类的结构化存储,纯 Markdown 的透明度和可维护性更高,对非程序员用户也很友好。而且在 Git 仓库里存放时,每次记忆变更都能形成可追踪的差异记录,这对我来说是一个加分项:我能清楚地知道 AI 的记忆什么时候被更新过、谁改了什么。

注入策略上,claude-mem的思路是"在会话开始时前置加载"。它注册了一个会话启动钩子,在 Claude Code 每次新对话初始化时自动读取记忆库内容,并把相关度较高的条目作为上下文的一部分注入。这样一来,你不再需要手动把项目历史背景贴进 CLAUDE.md,AI 在第一次回答问题时就已经"知道"了足够多的背景。

2.4 和 CLAUDE.md 有什么本质区别

很多人在初次接触claude-mem时的第一反应是:"这不就是 CLAUDE.md 的自动版本吗?" 但实际用下来,两者的定位差异非常明显。

CLAUDE.md 更适合承载的是"静态、稳定、由人主动维护"的项目级规范:项目简介、目录结构、构建命令、代码约定。它本质上是"写给人看、顺便给 AI 用"的说明文档,需要你花精力去维护和更新。

claude-mem则定位为"动态、自动沉淀、持续演进"的对话记忆。它捕捉的是在沟通过程中浮现出的、具有时效性和个人色彩的信息:你刚刚决定的方案、你临时改变的偏好、这次踩坑得出的结论。这些东西你大概率不会主动写进 CLAUDE.md,但对后续会话的质量影响很大。

所以这两者不是二选一的关系,而是互补关系。稳妥的做法是:CLAUDE.md 作为"项目宪法"承载稳定规范,claude-mem作为"对话工作记忆"承载变化中的上下文。二者配合起来,AI 在项目里的表现会上一个台阶。

3. 安装配置与基础使用

3.1 安装过程的两种路径

claude-mem的安装方式取决于你的技术背景。如果你熟悉 Node.js 生态,最简单的方式是通过 npm 全局安装:

npm install -g claude-mem

安装完成后,先做一次初始化检查,确认核心依赖(比如 ripgrep、git)是否就位:

claude-mem doctor

这条命令会检测环境中是否存在必需的依赖项,并给出缺失项的安装建议。整个过程没有交互式确认,输出也比较简明,适合快速验证环境状态。

如果你不太想碰 Node.js 生态,也可以走源码安装的路线:把仓库克隆到本地,然后直接运行入口脚本。这种方式的好处是能看到源码、方便二次修改;坏处是需要自己手动处理依赖安装,对新手不太友好。我个人的建议是:非特殊情况直接用 npm 安装就行,省心。

3.2 在 Claude Code 中接入会话钩子

安装只是第一步,真正让它生效的关键在于 Claude Code 的会话钩子配置。claude-mem提供了自动钩子安装命令:

claude-mem install-on-claude-code

这条命令会修改 Claude Code 的配置文件,注册两个钩子:

  • 会话启动钩子(SessionStart):在新会话开始前触发记忆加载;
  • 会话结束钩子(SessionEnd):在会话结束时触发记忆提取与沉淀。

完成配置后,可以手动查看一下配置文件确认钩子状态。以 Claude Code 为例,配置文件中的钩子部分通常是这个形态:

{ "hooks": { "SessionStart": [ { "matcher": "", "hooks": [ { "type": "command", "command": "claude-mem collect-session-start" } ] } ], "SessionEnd": [ { "matcher": "", "hooks": [ { "type": "command", "command": "claude-mem collect-session-end" } ] } ] } }

当你看到配置文件中出现这类条目时,就说明钩子已经注册成功。之后每次新会话开始时,claude-mem会自动把记忆注入到系统提示词的尾部。

3.3 找一个最小项目做端到端验证

我不建议直接在大型生产项目上做首次尝试验证,那样出了问题很难定位。更好的做法是准备一个最小可用的测试项目,跑通「对话 → 记忆沉淀 → 新会话记忆生效」的完整闭环。

我用的是一个小工具项目,内容很简单:一个用来管理个人待办事项的命令行程序。整个项目只有几个文件,技术栈是 Node.js + TypeScript。第一次对话时,我特意做了一些会产生"记忆"的操作:

  • 明确说了"待办数据统一存放在 ~/.todo/data.json,不走数据库";
  • 讨论后拍板"日期格式用 YYYY-MM-DD";
  • 踩了一个小坑后总结说"不要在纯函数里直接改文件,要通过封装的 storage 模块"。

结束会话后,打开记忆目录查看沉淀结果,然后新开一个会话,直接问 Claude:"待办数据放在哪里?日期格式有什么约定?" 它回答得几乎一字不差。这个验证流程走通的瞬间,对工具的信心就建立起来了。

3.4 目录结构长什么样

claude-mem默认会把记忆目录放在项目的.claude-mem目录下。目录内部分为两个子目录,职责清晰:

  • sessions/:存储会话摘要文本,记录每个会话的主题、持续时间、核心产出;
  • memories/:存储提取出来的高质量记忆条目,以 Markdown 文件组织。

举个例子,一个已经活跃了几个星期的项目,记忆目录可能是这样:

.claude-mem/ ├── sessions/ │ ├── 2024-11-01_core-refactor.md │ └── 2024-11-03_bug-fix-session.md └── memories/ ├── project-stack.md ├── coding-style.md ├── architecture-decisions.md └── bug-patterns.md

这种结构的好处是:记忆不是一股脑堆在一个大文件里,而是按主题分散在多个小文件中,每个文件聚焦一个方面。注入时也能按需加载,不会把所有记忆全部塞进上下文,减轻窗口压力。

4. 实操过程与核心环节实现

4.1 从"对话"到"记忆"的完整生命周期

要真正用好claude-mem,需要理解一条记忆从产生到发挥作用,会经历哪几个阶段。我用一个实际例子来说明。

假设你在一个全栈项目中跟 Claude 讨论用户认证模块的实现方案。对话中你提到:"密码哈希统一用 Argon2id,别再用 bcrypt,之前那个库有兼容性问题。" 这句话显然是有长期价值的,它会影响后续所有涉及认证模块的开发。

这段对话在会话结束时,claude-mem的提取机制会做这么几件事:

  1. 把整个会话的文本送给 Claude(或使用配置的模型)进行分析;
  2. 识别出哪些内容值得作为长期记忆保留——上述密码哈希的决策就会在这一步被捕捉;
  3. 将提取出的记忆条目写入memories/下的某个 Markdown 文件,同时把会话的整体摘要记录到sessions/目录。

之后,当你开启一个新的 Claude Code 会话,SessionStart钩子触发,claude-mem读取记忆库,把"密码哈希统一用 Argon2id"这条记忆注入到上下文中。此后你不需要再重复这句约定,Claude 在做认证相关任务时就会自动遵守。

这个生命周期里最核心的环节是第一到第三步——提取与沉淀的质量,直接决定了记忆库有没有用。如果提取得太细,记忆库会迅速膨胀,注入时淹没重点;如果提取得太粗,真正关键的信息反而没被记住。claude-mem的默认策略倾向于"宁缺毋滥":优先保存具有约束力、能改变未来行为的信息点,而不是流水账式的对话记录。

4.2 记忆提取的触发与"会话结束关键钩子"

这里我想特别强调SessionEnd钩子的价值。有人可能会问:"为什么不实时记录?对话中每产生一条值得记忆的信息就立刻写入,不是更及时吗?" 理论上可行,但实操中会有问题:对话中途的信息往往还没定型,可能是探索中的假设,也可能是随后就被推翻的临时方案。如果每个中间产物都写入记忆库,最终只会得到一堆互相矛盾的记忆碎片。

claude-mem选择在会话结束时做一次性提取,本质上是"站在终点回看全程"。在这个时点,对话已经形成了结果,哪些是最终决策、哪些是废弃探索,相对容易分辨。提取质量比实时记录高得多,代价是:如果会话中途崩溃、强制退出,没走完正常结束流程,这部分对话内容可能不会被提取。这是我遇到的一个实际问题,后面会细说。

4.3 用命令行管理记忆库

日常使用中,claude-mem提供了几条高频命令,掌握它们基本就够用了。

查看记忆库状态:

claude-mem status

输出会告诉你当前记忆库的大小、记忆条目数量、最近一次记忆更新的时间。

搜索历史会话:

claude-mem search "密码哈希方案"

当你隐约记得某个旧会话讨论过某件事,但记不清具体内容时,这条命令能快速定位相关会话摘要和记忆条目。

手动添加记忆条目:

claude-mem add "项目命名约定:接口文件统一使用 I 前缀(仅作示例),保持前后端一致"

有些约定你可能并不想在对话中花时间讨论,直接在命令行里手动写入更高效。这条命令在各种自动化脚本中也很有用。

查看完整命令帮助:

claude-mem --help

claude-mem的子命令不算多,看一眼帮助就能对整体工具有个全景认知。不要只靠记忆零散的命令,随时查帮助是好习惯。

4.4 会话启动钩子的上下文注入细节

机制上,SessionStart钩子做的事情可以理解为一次"记忆装配"。它读取记忆库中的所有记忆条目,将它们拼接成一个结构化的文本块,然后添加到系统提示词中。最终 Claude 实际看到的内容类似于:

以下是与用户合作时需要记住的长期记忆: - 项目使用 Python 3.12 + FastAPI,依赖管理使用 uv - 密码哈希统一使用 Argon2id,不使用 bcrypt - 所有数据库迁移必须通过迁移工具,不允许手改 schema - 用户偏好:提交代码前先运行完整测试套件 请在所有回答中遵循以上记忆。

这里有一个重要的细节:注入内容是纯文本,不是工具调用结果。它不依赖任何运行时 API,因此即使你只在本地使用 Claude Code、没有复杂的网络环境,也完全不受影响。数据始终留在你的机器和项目目录里,不会上传到任何第三方服务。

另外一个实际体验是:注入记忆后,Claude 的回答质量会有一个"整体性的提升",而不是只在特定问题上有改进。因为记忆给了它一个更完整的人设与上下文画像,它对你的表述方式、项目风格的适配程度会高不少。

4.5 模型选择与成本控制

claude-mem的记忆提取环节需要调用大模型来做分析,所以涉及一个配置项:用哪个模型来做提取。默认情况下,它会用与 Claude Code 关联的模型(通常是最新的 Claude 系列模型),保证提取质量。但如果你想要更快的处理速度,或者想节省 token 配额,可以配置一个更轻量的模型用于记忆提取。

这个取舍很像"主力模型负责干活,助理模型负责做会议纪要":主力模型能力强但贵,助理模型便宜但够用就行。如果你用的是带 token 计量和成本上限的服务,把提取模型换成低成本选项是一种非常实用的省钱策略。

配置方式很简单,在claude-mem的配置文件里指定模型标识即可。具体字段名以你安装版本的文档为准,但逻辑很直白——把"提取用模型"和"对话用模型"解耦,互不影响。

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

5.1 钩子没有生效,记忆注入不出现

这是我见过最多的一个问题。安装完成后,开了新会话,但 Claude 表现得完全不像有记忆的样子。排查思路如下:

第一步:检查钩子是否真的注册成功。打开 Claude Code 的配置文件,确认SessionStart和SessionEnd钩子条目确实存在。有时install-on-claude-code命令会因为配置格式兼容问题没有改到正确的位置,或者用户后来手动编辑过配置文件导致钩子丢失。

第二步:直接手动执行钩子命令,看是否有报错。

claude-mem collect-session-start --debug

如果命令本身报错,大概率是依赖缺失或者配置错误,去doctor那条命令的输出里找线索。如果命令正常但没有产生注入效果,问题多半出在 Claude Code 侧的钩子配置路径上。

第三步:确认会话是否是全新会话。有一种情况是:用户以为开的是新会话,实际上通过--continue或恢复历史的模式继续了旧会话。这种场景下钩子行为与全新会话不同,记忆注入的逻辑可能不会触发。测试时一定要开一个干净的全新会话。

5.2 记忆提取时的 token 消耗

用了一段时间后,你会发现SessionEnd的提取操作是有 token 成本的,会话越长,提取时需要处理的文本越多,成本越高。这个成本不是每次会话都相同,而是跟会话长度成正比。

我的优化经验是:如果某个会话只是快速问一两个问题就走,没产生什么有长期价值的信息,那让提取流程空跑一遍确实有点亏。claude-mem提供了一些控制项,可以让用户调整提取频率和触发条件。我通常会把提取触发条件设定得保守一些,比如只有会话满足一定长度时才触发,短会话直接跳过。这样既保证了核心的记忆沉淀,又不会每次都付出完整的提取成本。

5.3 记忆库膨胀了怎么办

claude-mem一直用下去,记忆库会越来越庞大,最终出现两个问题:一是注入的上下文中记忆占比过高,挤压了实际工作窗口;二是记忆条目之间可能出现冲突(比如早期的某个决策后来被推翻了,但旧记忆还在)。

针对记忆库膨胀,我的建议是定期"修剪"。具体操作上:打开记忆目录,逐条审视记忆的价值,删除已经过时的、被推翻的、没实际意义的内容。这看起来像是维护负担,但它本质上是在做"信息质量管理"——AI 工具的记忆库跟代码库一样,不维护就会腐烂。

我在实际项目中的节奏是:每隔一两周做一次记忆库 review,结合 Git 的提交历史,把已经不成立的约定找出来修正或删除。这个过程大约持续二十分钟,但换来的收益是后续每轮对话都能保持较高的上下文纯度。

5.4 多项目之间的记忆串扰

claude-mem按项目隔离记忆,这一点设计得很合理——每个项目有独立的记忆目录。但实际操作中,我还是遇到过一次"串扰"现象:

在两个项目目录之间切换时,某个项目里出现了另一个项目的记忆内容。排查后发现原因不在claude-mem本身,而是在于 Claude Code 的工作目录没有切换干净。启动会话时的工作目录决定了claude-mem读取哪个项目的记忆库。如果在一个项目目录里执行了另一个项目的启动命令,记忆加载的自然是错误的那一套。

所以我的建议是:养成"项目启动前先确认当前目录"的好习惯,或者在项目工作区中明确指定打开方式。另外,不同项目如果通过符号链接、共享目录做联动,记忆目录也会跟着解析到同一位置,需要注意规避。

5.5 中间崩溃导致记忆丢失

前面提到过,claude-mem的提取逻辑依赖SessionEnd钩子。如果会话是非正常终止——比如终端被强杀、电脑突然断电、进程崩溃——SessionEnd钩子不一定会执行,导致这段时间的对话没有被提取为记忆。

针对这个情况,我摸索出一个实用的兜底方案:定期在对话过程中手动执行一次提取命令,主动把有价值的对话内容沉淀下来,不要等着会话结束。命令大致是:

claude-mem collect-session-end

在对话进入一个自然段落、且产生了重要决策时,手动跑一次,相当于给记忆做一个"中途保存点"。这样即使后半段会话意外崩溃,也不会丢掉前面已经确认的核心信息。

5.6 常见问题速查表

问题现象可能原因首选排查动作
新会话没有记忆注入钩子未注册或路径错误检查配置文件钩子条目;手动执行 SessionStart 钩子看报错
记忆提取太慢会话文本太长,模型处理慢调整提取模型为轻量模型;对超长会话分段处理
记忆库越来越大长期使用没有修剪定期打开记忆目录做 review,删除过期条目
记忆内容重叠或冲突旧记忆未被标记废弃手动修改或删除旧条目,保持记忆单一来源
跨会话记忆时灵时不灵工作目录切换不正确确认启动会话时所在的项目目录正确
终端崩溃后记忆丢失SessionEnd 钩子未执行手工运行提取命令做中途保存

6. 一些实战经验与心得

在多个项目中使用claude-mem之后,我逐渐形成了自己的一套使用哲学。首先是"记忆要克制":只让 AI 记住那些真正会影响未来行为、且你希望它长期遵守的信息。不要试图把什么都丢给它记,否则记忆库很快会变成一个信息垃圾桶,注入时反而起反作用。判断一条信息该不该记,标准很简单——你愿不愿意在新会话中亲口再对它说一遍?如果不愿意,说明它在长期协作中确实重要,值得沉淀;如果无所谓,那就别浪费记忆空间。

其次是"定期审查记忆是使用者的责任"。AI 工具的记忆系统再强,也不能替你判断"这条约定现在还有效吗"。项目在发展,技术选型会变,偏好会变,如果你不去维护记忆库,它就会慢慢变成一份过期的档案。把这当作项目维护的一部分,和更新文档、清理依赖同等重要。

第三是善用"手工干预"。claude-mem不是只能被动地自动提取,你也可以主动往里写入。比如团队新定了一条规范,不等对话中出现,直接用claude-mem add写入记忆库,后续所有新会话都默认带上就是。这很像给 AI "提前打个招呼",使用体验非常自然。

最后说一个扩展思路:claude-mem的记忆文件是纯文本 Markdown,这意味着它不局限于 Claude Code。理论上你可以写一个脚本,在跟任何 AI 工具交互前,先读取这些记忆文件注入上下文。比如在 Web UI 的对话中,你可以把记忆库内容手动粘贴进去,让模型获得同样的"长期记忆"效果。对喜欢折腾的人来说,这相当于拥有了一套"可移植的 AI 协作记忆",把一份记忆用在多个工具上,也算物尽其用。

如果你刚接触claude-mem,我的建议是先别急着上复杂配置。装好之后,找一个实际推进中的项目,连续用上四五天,期间保持"每天查看一次记忆库、每周做一次修剪"的节奏,你会很快感受到它带来的变化。那种"不用再重复交代背景,AI 直接进入状态"的爽快感,一旦习惯了就回不去了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/12 7:20:49

SAM-3 Lite-Text模型ONNX到TensorRT推理部署与优化实战

1. 拆解这个标题背后的真实需求1.1 标题里藏着的三个关键词“SAM-3 Lite-Text onnx/tensorrt模型推理”这个标题,乍一看像是某个开源项目的部署记录,但拆开来看,它其实包含了三层信息。第一层是模型本身——SAM-3 Lite-Text,这是一…

作者头像 李华
网站建设 2026/10/12 7:15:45

5ire 开源桌面 AI 助手:MCP 客户端配置与 TaoToken 接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/12 7:14:35

C/C++ JSON实战:字符串转JSON、数组解析与序列化避坑指南

1. 从一段字符串说起:为什么C/C里处理JSON总让人头疼如果你写过C或者C,大概率遇到过这样的场景:设备上报了一串数据,格式是JSON,你需要把它解析出来,取出某个字段做判断;或者反过来,…

作者头像 李华
网站建设 2026/10/12 7:10:10

SQL Server数据库质疑与损坏修复:DBCC CHECKDB实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/12 7:09:05

pstack命令实战:Linux线程死锁与假死排查指南

你有没有遇到过这种情况:线上服务进程明明还活着,端口也通,请求却全部卡住不返回。CPU 不高,日志没有异常,内存也不见涨,就像一个人睁着眼睛但已经没有反应了。我第一次处理这种“假死”问题时,…

作者头像 李华
网站建设 2026/10/12 7:07:37

Claude Code Mod定制全攻略:从配置到自定义命令与钩子脚本

如果你已经装了Claude Code并且觉得它的默认行为不够顺手,大概率会产生一个念头:能不能把它改了?能,而且可改的空间比你想的大不少。这篇文章讲的是Claude Code Mod——从零把官方版本装好,再用配置、指令文件、自定义…

作者头像 李华