
最近我花了两周时间把 Claude Code 从“听说过”硬生生用成了“日常主力工具”。起因很简单项目里有几个多文件重构的脏活来回切窗口看得眼晕我想找一个能直接蹲在项目目录里、看懂整个仓库上下文、替我跑命令改文件的工具。Claude Code 就是这么个东西它是 Anthropic 出的命令行 AI 编程代理不是网页聊天框也不是那种只会在对话框里给建议的助手而是能真实读写代码、执行命令、操作 Git 的终端工具。这篇内容就是我这段学习过程的一份完整记录从安装、VSCode 配置到 Skills、Workflows、思考等级再到把 DeepSeek 接进来跑通的全过程以及我踩过的各种坑。如果你之前只用过网页版 AI 聊天或者习惯把代码复制给 ChatGPT 看那 Claude Code 的体验完全不一样。它是基于“项目现场”工作的你打开终端进入某个仓库目录敲一条命令它就开始读你的代码结构、分析依赖、定位问题然后直接改文件给你看。它适合已经熟悉命令行和 Git 的开发者适合想在自己项目上下文里用大模型写代码的人也适合被繁琐的跨文件重构折磨到想换工具的人。如果你连 ls 和 cd 都还没用顺建议先把基础命令练一练再回来折腾这个。1. 先想清楚它解决的是哪类问题1.1 一句话讲清 Claude Code 是干什么的Claude Code 是跑在终端里的 AI 编程代理。它的工作方式是你给我一个项目目录我能读里面的源码、配置文件、文档能发现模块之间的关系能提出修改方案并直接动手改还能调用终端命令去跑测试、查报错、看 Git 状态。它本质上是一个“主动执行者”而不是“被动回答者”。传统的 AI 编程助手大多跑在编辑器插件里你选中一段代码它给你补全或者修改建议能不能生效还得你自己粘回去跑一遍。Claude Code 反过来了你要做的是向它描述目标它会自己决定读哪些文件、怎么改、怎么验证。比如我让它“把 utils 目录里的日期处理函数统一改成 dayjs并处理所有引入方”它会先全局搜索注入点列一个改动计划然后逐个文件改好再跑一遍类型检查给我看结果。这种“交活不交步骤”的体验用惯了以后很难回去。1.2 它和普通聊天式 AI 的核心区别在哪最大的区别是“上下文”和“动作”两个维度。在网页聊天里你给它的上下文是你手动粘贴的那几段代码它对项目的了解完全来自你的描述而 Claude Code 活在项目里它的上下文来自仓库本身的文件结构、代码内容、Git 历史甚至当前环境变量。它不需要你喂它会自己去捞。另一个区别是它有“动作能力”。它可以在你的同意下执行终端命令这意味着它能把“发现一个 bug”和“验证修复是否生效”之间的闭环自己跑完。传统聊天工具只能帮你想到修复方案执行还是你的事。Claude Code 这种模式明显更接近“结对程序员”你负责做决策和审查它负责动手干重活。不过这种能力强也意味着风险高。一个能执行命令的 AI 如果不受控可能干出你不想让它干的事。所以从第一天起我养成了一个习惯先搞清楚它的权限配置再让它放开手脚。后面我专门写了这一部分。2. 安装这件事比想象中更吃环境2.1 前置依赖Node.js 和 npm 必须到位Claude Code 的官方安装方式是 npm 全局安装所以第一步不是急着敲命令而是先检查你机器上的 Node.js 环境。我建议 Node.js 版本不要低于 18太老的环境会导致运行时各种奇怪报错。在终端里先执行两个命令确认版本node -v npm -v如果 Node.js 还没装或者版本太低先去 Node.js 官网下载最新的 LTS 版本或者用 nvm 这类版本管理器装一个。我个人强烈建议用 nvm因为后面试新工具、换版本的情况太多了用 nvm 可以随时切换不会把系统环境搞乱。环境没问题之后安装就一条命令npm install -g anthropic-ai/claude-code装完执行claude --version能打印出版本号就说明安装成功。如果提示找不到命令先别急大概率是 npm 全局目录没有加进 PATH后面排查部分我会细讲。2.2 Windows / Linux / macOS 三个平台的实测注意点我在三个平台都装过说点实际感受。Windows 下建议优先用 Windows Terminal PowerShell把终端字体调成支持特殊符号的等宽字体不然界面里的图标会显示成方块。另外就是路径分隔符和换行符的问题Claude Code 生成的文件在 Windows 上默认可能是 LF但你的项目如果是 CRLFGit 对比会刷出一堆噪音。我后来索性养成了习惯在 Windows 上跑 Claude Code 之前先把项目的.editorconfig和 Git 的core.autocrlf理清楚不然它改过的文件经常在 diff 里显得像全文件重写。Linux 上相对干净但还是建议不要用系统自带的旧 Node优先 nvm 或 n 工具。Ubuntu 这类系统上如果遇到权限报错很多人第一反应是加 sudo我的建议是千万别。sudo 装全局 npm 包会把目录权限搞乱后面卸载和升级都会恶心你。macOS 我遇到的主要是 Gatekeeper 对终端的权限限制尤其你要让它执行某些脚本时系统会弹窗确认。如果嫌烦可以提前给终端软件开好“完全磁盘访问权限”否则 Claude Code 读某些受保护目录时会失败。2.3 存储位置和“卸载不干净”的坑Claude Code 的配置和会话数据默认存在用户主目录下的.claude文件夹。在 Linux 和 macOS 是~/.claude在 Windows 是%USERPROFILE%\.claude。里面有settings.json、会话历史、认证信息还有你安装的 Skills 和 Workflows 目录。这个存储位置值得记牢因为大部分“配置不生效”和“卸载不干净”的问题都出在它身上。很多人卸载时只执行了npm uninstall -g anthropic-ai/claude-code以为删干净了其实~/.claude目录还在里面留着旧的 token 和配置文件。重新安装后发现登录状态还在或者旧配置总在干扰新版本行为就是这个原因。真正干净的卸载应该是两条命令加一次手动清理npm uninstall -g anthropic-ai/claude-code rm -rf ~/.claude删掉~/.claude之前想清楚这会清掉所有历史会话和保存的配置。如果你只想重置认证只删里面的credentials.json或类似文件就够了。我踩过的一个典型坑是升级 Claude Code 之后VSCode 里用着旧版缓存新加的配置项完全不生效。最后把~/.claude里的老 settings 备份、删除、重新登录才算干净。后来我学乖了升级前后都会看一下claude --version确认当前跑的是不是新版本。3. VSCode 配置与终端使用姿势3.1 让 VSCode 打开项目后直接开跑Claude Code 本身不需要安装“插件”才能用它只是终端里的一个命令。最顺手的做法是在 VSCode 里打开项目文件夹然后按Ctrl 打开集成终端确保当前目录就是项目根目录敲claude回车就进入了交互界面。首次启动会要求登录授权。它支持多种认证方式最常用的还是 Anthropic 账号或其他支持的登录方式。登录完成后会生成凭证存到~/.claude里后续再启动不需要重新认证。我强烈建议在项目目录先执行git init或者确认已经是一个 Git 仓库因为 Claude Code 的很多操作依赖 Git。它需要 Git 来查看文件变更、生成 diff、回滚操作。如果不在 Git 仓库里它改完文件你就没有后悔药。第一次上手我是在一个临时仓库里试的搞砸了随时git checkout .还原心理负担小很多。3.2 配置项和权限控制Claude Code 的权限控制是我认为最值得花时间研究的部分。它默认不是“什么都能干”而是每做一个高风险操作都会问你确认比如执行任意 Shell 命令、删除文件、安装依赖。这种交互在刚开始很安全但用久了会觉得烦。这时候就需要在settings.json里做配置。配置文件在~/.claude/settings.json也可以放到项目目录下的.claude/settings.json后者优先级更高。我用过一个比较稳妥的配置{ permissions: { allow: [ Read, Write, Edit, Bash(git status), Bash(git diff), Bash(git log) ], deny: [ Bash(rm *), Bash(sudo *) ], ask: [ Bash(npm install *), Bash(pip install *) ] } }加粗提醒先别把Bash(*)无条件放到 allow 里哪怕你觉得自己的机器无所谓。AI 执行命令的时机和顺序不是你逐行控制的有时候它判断“清理临时文件”会直接跑一个rm -rf而你根本没来得及细看上下文。用最小权限开头后面慢慢放开这是我用了很久之后依然坚持的原则。3.3 VSCode 与 CLI 配合的分工很多人以为用上 Claude Code 之后编辑器就变成了摆设其实不是。我的用法是VSCode 负责展示和最终审阅代码Claude Code 负责改动和验证。它会实时让我看 diff我确认没问题再让它继续下一步。这里有一个血的教训不要让 Claude Code 和 VSCode 里的其他 AI 插件同时改同一个文件。两条自动化流水线互相读写很可能互相覆盖。我有一回让 Claude Code 改一个模块同时 VSCode 插件自动格式化结果同一个文件来回跳版本最后整个函数被覆盖丢失。后来我的规矩很明确某一时间段内只有一个自动化工具在干活。Claude Code 在改文件时我把其他插件的自动格式化、自动导入关掉等它全部处理完我再手动调整代码风格。4. 真正拉开差距的玩法Skills、Workflows 和思考等级4.1 Skills它和传统“插件”根本不是一个东西Claude Code 的 Skills 不是传统意义的插件而是一组“任务指南”。一个 Skill 通常是一个目录里面放一个SKILL.md描述文件外加一些参考脚本、提示词、模板。它的作用是告诉 Claude Code遇到某类任务时你应该遵循什么样的流程、注意哪些规范、调用哪些工具。比如我写了一个“Commit Message”的 Skill里面定义了 commit 信息的格式规范、推荐的语气、需要包含哪些信息。当我对 Claude Code 说“帮我提交本次改动”时它会自动应用这个 Skill 里的规则而不是随手生成一句“更新代码”。Skill 的安装方式最简单的是把 GitHub 仓库里的对应目录 clone 下来放到项目下的.claude/skills或者放到用户级的~/.claude/skills。每个 Skill 子目录里必须有SKILL.mdClaude Code 靠这个文件识别 Skill 的用途。放置好之后记得重启会话让 Claude Code 重新扫描 Skills 目录。具体从 GitHub 手动装一个 Skill 的完整流程是git clone https://github.com/某用户/某仓库.git temp-skill-repo mkdir -p .claude/skills cp -r temp-skill-repo/某skill目录 .claude/skills/ rm -rf temp-skill-repo装完进入 Claude Code用/skills之类的命令查看当前已加载的 Skill确认新加的技能已经生效。不同版本对 Skill 的指令和加载方式会有变化但核心逻辑一直是下载目录、放进 skills 路径、重启会话。我建议安装前先看仓库的 README因为有些 Skill 需要额外依赖或者特定版本的 Claude Code。4.2 Workflows把零散指令变成固定流程Workflows 对应的是“可复用工作流”把一整套多步骤操作封装成一个命令。比如我要发布一个新版本流程通常是跑测试、更新版本号、生成 changelog、打 Git tag、推送远程分支。以前每次都要手动给 Claude Code 打一堆字现在可以直接定义一个发布流程让它按顺序执行每步确认。实现方式不复杂核心就是把步骤写清楚Claude Code 会按照你定义的顺序逐步执行。我实践下来Workflows 的价值在于“沉淀”。团队里常用的开发流程、代码审查清单、部署检查项都可以固化成工作流新人不需要理解所有细节照着触发命令就能得到正确的过程。我习惯把 Workflows 当“规范执行器”来用而不是把复杂逻辑全塞进去。每个 Workflow 只做一个连贯的阶段性任务步骤控制在五步以内这样出问题时容易定位。如果中间某一步失败了Claude Code 会停下来问你怎么处理确认清楚再接下一步。4.3 思考等级xhigh 到底要不要开Claude Code 里有控制“思考深度”的选项通常分为 low、normal、high、xhigh 等档次。xhigh 是最高的思考档位模型在输出之前会花更多内部推理来规划步骤、权衡方案。这个功能在复杂任务里确实有效比如大型跨文件重构、算法设计、依赖关系分析。耗时会明显变长token 消耗也会上升但换来的是更少的无效修改。我的建议是不要全局开 xhigh而是按任务开。让 Claude Code 做代码格式化、复制粘贴类的小改动时开 low 或 normal 就够需要它负责任务拆分和方案设计时临时切到 high 或 xhigh。这样既保住了思考质量又不至于让一个简单改动等上两分钟。那“思考等级”到底怎么调不同版本的入口不一致有的是在交互界面里用指令切换有的是通过环境变量或配置文件设定。我在新版本里常用的方式是进入设置界面调整改完立即生效。如果你在当前版本里找不到对应入口先升级 CLI 版本旧版本的选项确实少一些。5. 一次接入 DeepSeek 的折腾记录5.1 为什么要接第二家模型我用官方模型一段时间之后开始琢磨另一个问题Claude Code 只能接 Anthropic 一家吗答案是否定的。Claude Code 本质上通过某套 API 协议在工作只要其他模型厂商提供兼容接口理论上就能把 Claude Code 接到其他模型上。社区里最热门的就是把 DeepSeek 这类成本更低的模型接进来用。这么做最直接的好处是成本。日常小任务、批量重构、跑文档类的杂活用便宜模型完全不心疼难度高的核心任务再切回官方模型。两套模型配合既有质量又省钱。另外某些模型的上下文窗口做得很大有人专门用它处理超大仓库。在这里我要说清楚一个边界不同模型的能力上限是不同的能跑通不代表能做好。如果只切换了 Base URL却发现工具调用频繁失败、代码改得不对劲不用怀疑是配置错了大概率是模型本身的 Agent 能力不够它不擅长这种长链路工具调用场景。5.2 配置思路兼容地址 环境变量通用的接法是通过环境变量告诉 Claude Code 三件事API 地址、认证令牌、模型名称。我整理出的最小配置参考如下export ANTHROPIC_BASE_URLhttps://你的服务商提供的兼容地址 export ANTHROPIC_AUTH_TOKEN你的密钥 export ANTHROPIC_MODEL模型名称 export ANTHROPIC_SMALL_FAST_MODEL轻量模型名称ANTHROPIC_BASE_URL是兼容接口的地址必须指向支持 Anthropic 协议的服务端点。ANTHROPIC_AUTH_TOKEN填服务商给你的 API KeyANTHROPIC_MODEL填你想用的主模型。ANTHROPIC_SMALL_FAST_MODEL是给一些轻量场景用的快速模型比如对话历史摘要、标题生成等如果服务商支持就配上。在 bash 或 zsh 里直接 export 只能临时生效当前终端窗口关闭就失效了。想长期生效需要写进~/.bashrc、~/.zshrc或者系统环境变量配置里。我建议先用临时方式验证配置能跑通再决定要不要永久写进配置文件。5.3 配置完以后怎么确认真的生效了配置完别急着开干先做两个小验证。第一在 Claude Code 交互界面里看状态信息里面通常会显示当前使用的模型名和 API 地址。第二让它做一个最简单的任务比如“读取当前目录下 package.json告诉我项目名称”观察回答是否正常。如果提示模型名不存在多半是你填的模型标识和 API 服务商公示的不一致去查服务商的文档核对。如果提示认证失败检查密钥是不是复制了多余空格或者令牌权限是否足够。如果出现请求超时优先确认网络到服务商的连通性再看并发和限流设置。接完模型之后我还会做一个能力测试清单而不是拿一个 hello world 当成功。测试项包括让它跨文件改代码、让它执行 Git 命令、让它跑测试、让它解释仓库结构。只有这些都能稳定完成我才认为这个模型真的适合在 Claude Code 里用。关于上下文窗口很多服务商会宣传超大上下文但只要涉及多文件工具调用实际可用的有效上下文会受模型策略和中间步骤消耗的影响。1M 参数级别的上下文听起来很美但真实项目里塞满一堆历史步骤之后可用空间要比宣传的数字小得多。我的经验是用大上下文处理“整个仓库的静态分析”还行处理“多轮工具交互的复杂重构”时该压缩还是要压缩。6. 常见报错与问题排查实录6.1 启动时就卡住的“连接”问题我第一次启动其实没成功直接弹出一句unable to connect to Anthropic后面还跟着提示说可能与支持区域有关。这类启动报错通常是三件事网络链路不通、服务商地址配置不对、认证信息失效。第一步先确认配置检查环境变量里有没有残留的ANTHROPIC_BASE_URL如果指向一个旧地址Claude Code 会连到错误的地方。第二步检查认证很多报错本质是 token 过期重新登录一次就能解决。第三步检查网络看你这台机器到服务商官网首页是否正常访问如果基础访问都有问题那说明网络层卡住了先解决网络链路再说。这里要特别提一下企业网络环境。公司内网经常有访问白名单和额外的安全策略你本地明明能访问的资源走公司网络就可能被拦截。遇到这类问题先确认当前网络环境下是否禁止了这类流量再看是否有网络管理员可以协助。个人开发者在家庭网络下遇到这个报错的可能性要小得多。我当时排查的顺序是先检查ANTHROPIC_BASE_URL是否为空再检查 token 文件是否存在最后换了一个网络环境再试确认不是本地网络的问题。问题解决后我把这些排查步骤记成了一个模板后面再遇到类似报错直接照着走。6.2 npm 安装失败和命令找不到npm 全局安装失败最常见的是权限错误。Linux 和 macOS 上经常出现EACCES: permission denied。这时候不要脑袋一热就加 sudo。我推荐用 nvm 重新安装 Node.js让 npm 的全局目录落在用户目录下权限问题自然消失。如果你已经用 nvm执行nvm install --lts然后重新装 Claude Code 就行。装完找不到claude命令多半是 npm 全局目录没有进 PATH。先执行npm prefix -g看全局目录在哪然后把对应的bin目录加进 PATH。在 bash 里就是export PATH$(npm prefix -g)/bin:$PATH临时验证可行之后再把这个 export 写进 shell 配置文件避免每次开终端都要手动设置。还有一类问题出在 registry 镜像上。如果你把 npm 的镜像源换成了第三方源偶尔会遇到缓存不一致导致安装包损坏。实在装不动的时候可以临时切回官方 npm registry 试一次npm config set registry https://registry.npmjs.org装完之后记得按需切回你原来的配置不要长期停留在一个不合适的源上。6.3 配置不生效和“改了又像没改”我经常遇到一种情况在settings.json里加了权限规则也设置了环境变量但 Claude Code 就是不按配置走。后来发现大概率是两个原因一是配置放错了位置二是当前会话还在用旧配置。Claude Code 的配置优先级一般是“项目级配置 用户级配置”。项目里的.claude/settings.json会覆盖用户目录下的~/.claude/settings.json。如果你在用户级设置了 deny但项目级设置了 allow那项目级配置说了算。排查这个问题时我建议先看当前目录下有没有.claude/settings.json有的话留意它设置了什么。配置改完不生效还有个很常见的坑当前会话已经启动配置文件在运行期间被改了但运行时没重新加载。解决办法就是重启会话。很多“玄学”问题退出重进就好了一半。另外有些环境变量是在进程启动时读取的改完之后必须先重启终端进程再启动 Claude Code 才会生效。6.4 关于“enable_prompt_caching_1h1”这类开关网上有人问export enable_prompt_caching_1h1这种配置到底有没有用。我的回答是它开启的是提示词缓存让系统在 1 小时内复用同一前缀的上下文用来省时间和成本。前提是你的 API 服务商支持缓存计费并且这个变量名恰好对应当前版本的实现逻辑。如果服务商不支持或者版本已经换了实现方式设了也白设。我在长会话里实测过开启缓存之后连续的任务处理速度确实会快一点因为它不用每次把相同的前缀重新算一遍。但缓存也有副作用它会增加一些状态层面的复杂度。我的建议是先用默认配置跑几次长任务记录耗时和计费再开缓存对比用数据决定要不要长期开。7. 我踩过的坑和几个实用小技巧7.1 先从小任务开始别第一天上大仓库我犯过的最大的错误是第一次拿到 Claude Code 就直接让它处理一个几万行代码的老项目。它确实启动了但第一步分析就消耗了大量的上下文几轮对话之后就开始“忘事”上下文管理变得混乱。后来我改成小步验证先拿一个只有几十个文件的小项目练手把权限配置、工具调用、上下文压缩这些机制都摸透再逐步扩大到真实项目。每一步都确认改动范围可控保持随时可以git checkout的状态。这样一方面减少事故另一方面你能摸清不同规模任务下它的行为边界。7.2 上下文是稀缺资源学会压缩和重置不管模型宣传多大上下文我的体感是上下文永远不够用。它每读一个文件、每执行一次命令都会占掉一部分上下文。如果你的对话特别长会出现它“忘了开头目标”的情况。一个特别好用的习惯是任务阶段化。做一个大任务时不让它在同一个会话里从头跑到尾而是每完成一个阶段就总结关键产出保存到本地文件或注释里然后/compact压缩对话甚至开新会话让它读取上一阶段的结果继续干。这样上下文干净模型注意力也集中。注意一个细节压缩对话不是把历史全丢了而是保留摘要和关键状态。如果压缩后它开始乱回答说明摘要信息不够检查一下你让它保存的中间文件是否完整。7.3 把它当“结对程序员”而不是“代码生成器”用了一阵子之后我最大的体会是Claude Code 的产出质量高度取决于我给的“任务描述”质量。如果你只丢一句“优化这个函数”它会自行猜测意图结果往往不是你要的。正确的做法是给它约束、背景和验收标准。比如不是让它“重构登录模块”而是说“登录模块的 token 刷新逻辑在并发请求下会重复请求请你先画出当前调用链找出重复刷新的路径改成单飞式刷新并用测试覆盖”。它有了清晰目标真的能自己定位到问题然后一步步执行。我把这个能力看作“结对程序员”而不是“代码生成器”因为它的价值不是帮你写代码而是帮你把工程问题拆解并落地。7.4 个人推荐的“最小可用组合拳”如果你今天刚开始折腾我建议按这个顺序来先装好 Node.js 和 npm全局安装 Claude Code在一个临时 Git 仓库里跑通登录和基础对话然后配置一份最小权限的 settings.json限制危险命令再装上项目级 Skills把这些天的感悟固化成流程这些都顺了再考虑接 DeepSeek 这类第三方模型。最后分享一个小技巧Claude Code 的会话是可以按项目隔离管理的。不同项目最好用不同的工作目录启动让它的配置和会话历史跟着项目走不要所有项目都堆在同一个用户级对话历史里。这个习惯帮我省掉了无数“上个项目的上下文污染了这个项目”的破事。我在实际使用中最大的体会是工具再强也只是把你的工程能力和判断力放大它不会替你思考“这个模块为什么存在、这个改动是否符合架构”。每一次让它动代码之前我脑子里都已经有一版方案它能帮我快速执行、试错、验证。所以别把它当超人把它当手速极快并且愿意陪你反复试错的那个同事你会跟它配合得越来越顺手。