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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点直接用 https://taotoken.net/api ,注意这个地址不加 UTM 参数。
第一步,去控制台拿 Key。打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在 API Keys 页面创建一个新 Key,复制出来存好。这个 Key 后面要写进环境变量,别直接硬编码到文件里。
第二步,确认你要用的模型 ID。在模型对话页面 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 能看到当前可用的模型列表,记下你要用的那个 ID,比如claude-sonnet-4-20250514这类格式。Model ID 必须和平台列出的完全一致,大小写、连字符都不能错。
第三步,配置环境变量。Claude Code 读取的是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY这两个变量。在终端里执行:
export ANTHROPIC_BASE_URL="https://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-preview(Markdown 预览)、pdf(PDF 处理)、pptx(PPT 处理)、skill-creator(创建新 Skill)、xlsx(Excel 处理)、react-best-practices(React 最佳实践)、vercel-deploy-claimable(Vercel 部署)、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_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 确认 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_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 复制准确的 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,结果一个都用不上。少即是多,这条在个人助理场景里尤其成立。