用 Claude Code + CLAUDE.md 打造个人助理:把记忆、Skills 与 MCP 串成一套可复用的配置

发布时间:2026/10/11 21:13:43

用 Claude Code + CLAUDE.md 打造个人助理:把记忆、Skills 与 MCP 串成一套可复用的配置 1. 为什么我要给 Claude Code 造一个「数字分身」先说清楚这套东西是什么。Claude Code 是 Anthropic 出的命令行 Agent 工具本身定位是软件工程助手——写代码、调 bug、解释逻辑。但它底层跑的是通用大模型只要你能控制它的上下文注入方式它就能变成任何形态的助手。CLAUDE.md 就是那个入口放在项目根目录内容会被追加进系统提示词不覆盖原有行为定义。Skills 是可插拔的任务能力包MCP 是让模型访问外部数据源的协议层。三者串起来就是一个有记忆、有手脚、有分工的个人助理。适合谁适合已经在用 Claude Code 写代码、但觉得每次对话都从零开始的人适合有大量个人笔记、聊天记录、工作日志散落各处、想统一沉淀的人也适合想把 AI 从「工具」变成「长期协作者」的人。不适合只想问两句就走的场景——那直接开对话就行没必要搭这套。我自己的痛点是和 DeepSeek、Gemini 聊过很多深度内容全散在历史记录里找不回来。投资思考写在备忘录工作日志在另一个 App个人笔记又是第三个地方。每次想让 AI 帮我分析点什么都得手动粘贴一堆背景。所以决定建一个叫smart-me的私有项目把「生产资料」从代码换成我自己的信息。整个落地分三层CLAUDE.md 管偏好和索引OpenSpec 管长短期记忆的归档流程Skills MCP 管能力扩展。下面按可复制的顺序拆开讲。2. 前置准备TaoToken 接入与项目初始化Claude Code 要跑起来得先解决模型调用的问题。我用的是 TaoToken 的 API 接入方式它兼容 Anthropic 的接口格式配置成本低。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点直接用 https://taotoken.net/api 注意这个地址不加 UTM 参数。第一步去控制台拿 Key。打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面创建一个新 Key复制出来存好。这个 Key 后面要写进环境变量别直接硬编码到文件里。第二步确认你要用的模型 ID。在模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 能看到当前可用的模型列表记下你要用的那个 ID比如claude-sonnet-4-20250514这类格式。Model ID 必须和平台列出的完全一致大小写、连字符都不能错。第三步配置环境变量。Claude Code 读取的是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY这两个变量。在终端里执行export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEY你的Key如果你想让这个配置持久化写进~/.bashrc或~/.zshrc。Windows 用户用系统环境变量面板设置或者用 PowerShell 的$env:语法临时设置。第四步创建项目目录。我建的是smart-me在 GitHub 上开一个 private 仓库本地 clone 下来。目录结构先搭成这样smart-me/ ├── CLAUDE.md ├── openspec/ │ └── docs/ │ ├── 投资思考/ │ ├── 工作日志/ │ ├── 个人笔记/ │ ├── 公众号文章/ │ └── AI对话记录/ ├── .claude/ │ ├── settings.json │ └── skills/ └── mcp-config.json这个结构不是随便定的。openspec/docs/下面按内容类型分目录是为了后面 CLAUDE.md 里写索引时路径清晰。.claude/放 Claude Code 的项目级配置和 Skills。mcp-config.json单独放 MCP 的配置方便版本管理。前置准备的核心就一句话让 Claude Code 能通过 TaoToken 正常调用模型并且项目目录结构就位。Key 拿到、环境变量设好、目录建完就可以进下一步了。3. 可复制配置CLAUDE.md 模板与 MCP 配置片段这一节给可直接抄的配置。先讲 CLAUDE.md 怎么写再讲 MCP 怎么配最后讲 Skills 怎么放。3.1 CLAUDE.md 模板CLAUDE.md 的内容会追加到系统提示词后面。原系统提示词里那些「简洁」「避免不必要交流」的设定还在但你可以用 CLAUDE.md 覆盖掉你不想要的部分。我的写法分四块角色定义、个人背景、文件索引、行为约束。# 个人助理配置 ## 角色 你是我的个人助理请用更自然、温暖的方式与我交流保持真诚的对话风格。 不要过度使用「简洁」模式该展开的时候展开该追问的时候追问。 ## 关于我 - 年龄32 - 职业后端工程师目前在做 AI 基础设施相关的工作 - 家庭已婚有一个孩子 - 教育背景计算机科学硕士 - 当前关注方向大模型应用、Agent 架构、个人知识管理 ## 文件索引 以下目录存放我的历史资料你可以按需读取 - 投资思考openspec/docs/投资思考/ - 工作日志openspec/docs/工作日志/ - 个人笔记openspec/docs/个人笔记/ - 公众号文章openspec/docs/公众号文章/ - AI 对话记录openspec/docs/AI对话记录/ ## 行为约束 - 涉及我的个人信息时绝对诚实不要为了让我舒服而美化事实 - 当你不确定我的偏好时直接问不要猜 - 每次对话结束后如果内容有价值提醒我是否要归档 - 不要主动编造我没有提供过的信息这里有个关键点我没有在 CLAUDE.md 里定义自己的价值观。这是故意的。我希望助理在后续对话中自己提取而不是我灌输给它。这样它对我的理解是「观察出来的」不是「被告知的」。3.2 MCP 配置片段MCP 的配置放在.claude/settings.json里或者单独用mcp-config.json。我用的是后者然后在 settings 里引用。配置格式是 JSON{ mcpServers: { web-search: { command: npx, args: [-y, modelcontextprotocol/server-brave-search], env: { BRAVE_API_KEY: 你的搜索API Key } }, web-fetch: { command: npx, args: [-y, modelcontextprotocol/server-fetch] }, github: { command: npx, args: [-y, modelcontextprotocol/server-github], env: { GITHUB_PERSONAL_ACCESS_TOKEN: 你的GitHub Token } }, vision: { command: npx, args: [-y, modelcontextprotocol/server-vision], env: { VISION_API_KEY: 你的视觉API Key } } } }四个 MCP 各管一件事web-search 负责联网搜索web-fetch 负责读取网页内容github 负责操作仓库vision 负责理解图片。配置里的command和args是启动命令env是环境变量。注意 API Key 不要直接写死在文件里用环境变量引用更安全。3.3 Skills 放置Skills 放在.claude/skills/目录下每个 Skill 一个子目录里面放SKILL.md定义能力。我当前装的 Skills 包括doc-coauthoring文档协作、docs文档处理、internal-comms内部沟通、markdown-previewMarkdown 预览、pdfPDF 处理、pptxPPT 处理、skill-creator创建新 Skill、xlsxExcel 处理、react-best-practicesReact 最佳实践、vercel-deploy-claimableVercel 部署、web-design-guidelines网页设计规范。Skills 的加载是自动的Claude Code 启动时会扫描.claude/skills/目录把每个 Skill 的描述注入到可用工具列表里。你不需要手动注册放进去就行。3.4 OpenSpec 改造OpenSpec 原本的工作流是围绕软件开发设计的发起提案、深度对话、规划任务、执行任务、归档提案。用在个人助理上提案阶段的提示词需要改。原版会问「你想实现什么需求变更什么功能」这对个人助理场景不合适。改造方式有两种手动改提示词或者让 AI 自己改。我选后者。直接跟 Claude Code 说「把 OpenSpec 的提案提示词改成适配个人助理场景提案类型包括记录想法、整理笔记、分析问题、归档对话、自定义。」它会自己找到对应的提示词文件并修改。改完之后再发起提案时AI 会给你几个选项让你选而不是硬邦邦地问你要改什么功能。4. 验证请求从提问到调用工具的完整流程配置写完得验证一遍。这一节走一个完整流程启动 Claude Code、发一个需要读文件的问题、看它是否调用工具、检查结果。4.1 启动与基础验证在smart-me目录下打开终端执行claude如果环境变量配对了Claude Code 会正常启动显示一个交互式提示符。先发一个简单问题测试连通性你好请告诉我你当前能访问哪些目录正常情况它会读取 CLAUDE.md然后列出openspec/docs/下的几个子目录。如果它说「我没有文件访问权限」或者「找不到目录」说明 CLAUDE.md 没被正确加载检查文件是否在项目根目录、文件名是否大小写正确。4.2 触发文件读取发一个需要它主动读文件的问题请读取 openspec/docs/投资思考/ 下最近的一个文件总结我的投资偏好。这时候观察它的行为。正常流程是它先列出目录内容找到最新文件读取内容然后给出总结。如果它直接编造内容而没有实际读文件说明 MCP 的文件系统访问没配好或者 CLAUDE.md 里的索引路径写错了。我实测下来第一次跑的时候它确实读了文件但总结得很泛。原因是文件里内容比较散它没有做深度提取。后来我在 CLAUDE.md 里加了一句「读取文件后先提取关键决策点和偏好信号再总结」效果就好多了。4.3 触发 MCP 工具调用测试联网搜索 MCP帮我搜索一下「Claude Code MCP 配置最佳实践」然后总结前三条结果。正常情况它会调用 web-search MCP返回搜索结果然后调用 web-fetch 读取其中一两个页面最后给出总结。如果它说「我没有搜索能力」检查mcp-config.json里的mcpServers配置是否正确以及npx命令是否能正常执行。测试 GitHub MCP列出我 smart-me 仓库最近的 5 个 commit。这会触发 GitHub MCP 调用。如果返回 401说明 Token 没配好或者权限不够。GitHub Token 需要repo权限才能读私有仓库。4.4 触发 Skills测试 doc-coauthoring Skill帮我基于 openspec/docs/个人笔记/ 下的内容起草一篇关于「个人知识管理」的文章大纲。正常情况它会调用 doc-coauthoring Skill先读笔记然后生成大纲。如果它说「我没有这个能力」检查.claude/skills/下是否有对应的 Skill 目录以及SKILL.md是否格式正确。4.5 完整验证清单跑完上面几步用这个清单核对验证项预期结果失败排查启动 Claude Code正常进入交互检查环境变量读取 CLAUDE.md能列出索引目录检查文件位置和名称读取文件内容能总结文件内容检查路径和权限调用 web-search返回搜索结果检查 MCP 配置和 API Key调用 GitHub返回 commit 列表检查 Token 权限调用 Skill生成大纲检查 Skill 目录结构全部通过说明基础链路通了。接下来就是日常使用和迭代。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列我踩过的坑和对应的解法。每个报错都给触发场景、原因、修复步骤。5.1 401 Unauthorized触发场景启动 Claude Code 后发第一条消息就报 401。原因API Key 无效、过期、或者环境变量没生效。排查步骤先在终端里echo $ANTHROPIC_API_KEY确认 Key 被正确设置。如果为空说明 export 没生效检查是否写进了正确的 shell 配置文件。如果 Key 有值但还是 401去 TaoToken 控制台 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 确认 Key 状态是否正常、额度是否充足。另外检查ANTHROPIC_BASE_URL是否设成了https://taotoken.net/api末尾不要多加斜杠。5.2 local proxy failed触发场景Claude Code 启动时报「local proxy failed」或类似网络错误。原因通常是 Base URL 配置错误或者本地网络环境有问题。排查步骤确认ANTHROPIC_BASE_URL的值是https://taotoken.net/api不要写成https://taotoken.net/api/v1或其他变体。然后用curl测试连通性curl -X POST https://taotoken.net/api/v1/messages \ -H x-api-key: 你的Key \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d {model:你的Model ID,max_tokens:10,messages:[{role:user,content:hi}]}如果 curl 也失败说明网络层有问题检查本地防火墙或 DNS 设置。如果 curl 成功但 Claude Code 失败说明 Claude Code 的配置读取有问题检查是否有其他配置文件覆盖了环境变量。5.3 reading choices 报错触发场景调用模型时返回「error reading choices」或类似解析错误。原因通常是 Model ID 写错了或者请求格式和平台不兼容。排查步骤确认 Model ID 和 TaoToken 模型列表里列出的完全一致。去 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 复制准确的 ID。另外检查 Claude Code 的版本是否过旧旧版本可能用了不兼容的请求格式。升级到最新版npm update -g anthropic-ai/claude-code5.4 OAuth 相关报错触发场景Claude Code 提示需要 OAuth 登录或者报「OAuth token expired」。原因Claude Code 默认可能走 OAuth 流程但你用的是 API Key 模式两者冲突。排查步骤确认你没有同时配置 OAuth 和 API Key。如果之前登录过 OAuth先退出claude logout然后确保环境变量里有ANTHROPIC_API_KEY再重新启动。如果还是提示 OAuth检查~/.claude/目录下是否有残留的 OAuth 配置文件有的话删掉。5.5 MCP 连接失败触发场景Claude Code 启动时报「MCP server failed to start」。原因MCP 的启动命令执行失败通常是npx找不到包或者 API Key 没配。排查步骤手动执行 MCP 的启动命令看报什么错。比如npx -y modelcontextprotocol/server-brave-search如果报「command not found」说明 Node.js 或 npx 没装好。如果报「API Key missing」检查mcp-config.json里的env字段。另外注意有些 MCP 包需要特定 Node 版本建议用 Node 18 以上。5.6 CLAUDE.md 不生效触发场景改了 CLAUDE.md但 Claude Code 的行为没变化。原因Claude Code 只在启动时读取 CLAUDE.md运行中修改不会热加载。排查步骤退出当前会话重新执行claude。如果还是不生效检查文件名是否是CLAUDE.md全大写以及是否在项目根目录。另外如果你在子目录里启动 Claude Code它可能读的是子目录的 CLAUDE.md不是根目录的。6. 把助理用起来从归档到长期记忆配置跑通之后日常使用其实就三件事聊天、归档、迭代。聊天就是直接问。想问什么问什么不需要每次都走提案流程。比如「帮我看看最近的投资思考里有没有重复出现的判断偏差」它会自己去读文件、分析、给结论。归档是这套系统的核心。当你聊到有价值的内容时跟它说「把刚才的对话归档到个人笔记」。它会调用 OpenSpec 的归档流程把对话内容整理成结构化文档存到openspec/docs/个人笔记/下。下次再聊相关话题它就能读到这些归档内容。迭代是指 CLAUDE.md 和 Skills 的持续更新。用一段时间后你会发现某些偏好没写进去或者某些 Skill 不常用。直接改 CLAUDE.md或者让 Claude Code 帮你创建一个新 Skill。skill-creator 这个 Skill 就是干这个的——你描述想要的能力它帮你生成SKILL.md。我自己的节奏是每周花 10 分钟回顾一下这周的对话把有价值的归档把新的偏好写进 CLAUDE.md。三个月下来助理对我的理解已经超过了我自己的显性记忆。它能指出我投资决策里的重复模式能提醒我工作日志里连续出现的压力信号能在我写公众号文章时自动引用我之前的观点。这套东西的门槛不在技术在于你愿不愿意持续投入。CLAUDE.md 写一次不难难的是每周都更新。MCP 配一次不难难的是根据实际需求调整。但一旦跑起来它带来的复利是惊人的——你越用它它越懂你它越懂你你越愿意用。最后一个实操建议第一次跑通后别急着加功能。先用一周只聊天和归档感受一下它的记忆能力。一周后再根据实际痛点加 MCP 或 Skills。我见过太多人一上来配十几个 MCP结果一个都用不上。少即是多这条在个人助理场景里尤其成立。
延伸阅读

更多相关文章

2026/10/11 21:13:43

Python图书推荐系统实战:从数据清洗到FastAPI服务化

简介:这份资源是面向高校学生与Python初学者的图书推荐系统课程设计完整源码包,围绕数据处理、特征工程、模型训练与结果展示四个环节展开,帮助读者理解推荐系统的基本原理与工程实现。包内共33个文件,以16个Python脚本为核心&…

2026/10/11 21:13:43

Claude Code安装配置实战:终端AI编程助手从零上手

如果你平时写代码经常被重复劳动拖住,或者在改一个跨多个文件的功能时反复切窗口、翻上下文、人工比对调用链,那Claude Code这个命令行编程工具值得你花十分钟装起来试试。它是官方推出的终端编程助手,不是又一个聊天框,而是直接跑…

2026/10/11 21:08:42

骨龄检测实战:YOLOv5+ResNet18两阶段回归方案解析

简介:基于YOLOv5与ResNet18的骨龄检测毕业设计项目包,面向计算机视觉方向的学生和研究者,适用于手部X光片骨龄评估任务。整体思路是先用YOLOv5定位手骨关键区域,再由ResNet18完成骨龄回归预测;流程覆盖数据准备、模型训…

2026/10/11 22:08:49

解释器模式实战:用DSL与抽象语法树构建可配置规则引擎

提到“解释器模式”,很多人第一反应是“编译器才用的东西”“八股文里凑数的一个设计模式”。说实话,在没真正拿它解决过问题之前,我也这么觉得。直到有一次做一个多规则的风控引擎,if-else嵌套到第六层,每加一条规则都…

2026/10/11 22:08:49

PyTorch手语识别系统源码与数据集:从训练到ONNX部署全流程

简介:这份资源是面向高校学生与深度学习初学者的Python毕业设计完整项目,基于PyTorch框架实现手语识别系统,将手语图像序列转换为对应文字,帮助听障人士跨越沟通障碍。项目采用中科大CSL连续手语数据集,验证集最高准确…

2026/10/11 22:08:49

FSR信号链分压电阻温漂问题:精度影响与工程解决方案

在FSR薄膜压力传感器量产与精密项目落地中,多数研发团队重点关注传感器本体线性度,却极易忽略分压电阻温度漂移(TC)带来的精度误差。普通贴片电阻的温漂偏差,在常温下几乎无感知,但高低温工况下会直接导致F…

2026/10/11 22:08:49

防震锤检测数据集:2721张双格式标注图与YOLO训练实战

简介:电力场景下的输电线防震锤检测数据集,面向电力巡检视觉识别、无人机巡检图像处理及目标检测算法开发者,提供包含DamperSpiral(螺旋防震锤)和DamperStockbridge(斯托克布里奇防震锤)两类目标…

2026/10/11 22:03:49

OpenClaw Windows部署全流程:从源码编译到游戏数据导入运行

最近把 OpenClaw 在 Windows 上完整跑了一遍,从环境搭建、源码编译到最终把游戏数据导入运行,中间踩了不少坑。这篇东西就当作一份带时间戳的实操备忘录,把整个部署流程原原本本记下来,给想在 Windows 平台折腾 OpenClaw 的朋友做…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑