Claude Code 命令行实战:从安装配置到第一次代码修改
发布时间:2026/10/4 11:51:58 锦皓数字建站

1. 为什么我建议你从命令行开始用 Claude Code很多人第一次听说 Claude Code脑子里浮现的画面是在 IDE 里点一个按钮然后 AI 自动把代码改好。实际用下来你会发现Claude Code 最舒服的形态恰恰是命令行——它不是一个插件而是一个跑在终端里的智能体能直接读写你项目目录下的文件、执行 shell 命令、跑测试、看 git diff然后根据结果自己决定下一步做什么。这种能动手的能力是它和普通代码补全工具最本质的区别。我自己的使用场景是这样的手头有一个跑了两年多的 Python 后端项目代码结构不算干净历史遗留的命名混乱、测试覆盖不全。以前改一个跨模块的小需求我得先 grep 找调用点再逐个文件改改完跑测试测试挂了再回头查。现在我把这个流程交给 Claude Code它自己会去搜、去读、去改、去跑测试我只需要在关键节点确认它的判断对不对。效率提升不是线性的是那种原来要一下午现在四十分钟的跃迁。这篇内容适合三类人一是完全没接触过 Claude Code想从零跑通第一次代码修改的新手二是装过但卡在环境配置、认证、权限这些环节的人三是想把它接进自己现有工作流VS Code、Git、本地模型的中级用户。我会从安装讲到第一次真实改代码中间所有容易踩的坑都会点出来。你不需要是命令行高手但得愿意打开终端敲几行命令——这是唯一的门槛。关键词里提到的 Git、CLAUDE.md、VS Code 配置、本地模型接入我都会在对应章节展开。先把最核心的一条讲清楚Claude Code 的工作方式是读你的项目、理解你的意图、动手改文件、验证结果所以它天然依赖两样东西——一个干净的 Git 仓库方便回滚和一份说清楚项目规则的 CLAUDE.md方便它理解上下文。这两样东西准备好了后面的体验会顺很多。2. 安装前的环境盘点Node.js、Git 和终端选择2.1 Node.js 版本是硬门槛别用系统自带的旧版本Claude Code 是通过 npm 分发的所以第一步是确认你的 Node.js 版本。官方要求 Node 18 以上我实测下来建议直接上 Node 20 LTS 或 22 LTS因为一些依赖包在 18 上会有警告。很多人踩的坑是用系统包管理器装的 Node——比如 Ubuntu 上apt install nodejs装出来的往往是 12 或 14版本太低直接跑不起来。检查版本很简单node -v npm -v如果版本低于 18别去折腾升级系统自带的 Node直接用 nvm 管理多版本最省心# 安装 nvmmacOS/Linux curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 装完重开终端然后 nvm install 20 nvm use 20 nvm alias default 20Windows 用户如果不想折腾 nvm-windows直接去 Node.js 官网下载 LTS 的 msi 安装包双击一路下一步就行。装完记得重开终端否则 PATH 不生效。提示如果你之前装过旧版 Node装新版后一定要确认which node指向的是新版本而不是残留的旧路径。这个坑我见过太多次表现是明明装了 20node -v还是 14。2.2 Git 不只是为了版本控制它是 Claude Code 的安全网Claude Code 会直接修改你的文件这意味着你必须有一个能随时回滚的机制。Git 就是这个机制。哪怕你平时不用 Git用 Claude Code 之前也务必把项目初始化成 Git 仓库。Git 安装本身没什么难度Windows 去官网下安装包macOS 用brew install git或者装 Xcode Command Line Tools 自带Ubuntu 用apt install git。装完配置一下身份git config --global user.name 你的名字 git config --global user.email 你的邮箱这里有个新手常忽略的点Claude Code 在执行某些操作时会调用 git 命令如果你的 git 没配置 user.name 和 user.email某些操作会报错或者卡住。所以这一步别跳过。初始化项目仓库cd 你的项目目录 git init git add . git commit -m 初始提交Claude Code 操作前的基线这个初始提交非常关键。它相当于给项目拍了一张快照之后 Claude Code 改坏了任何东西你都能git checkout .一键回到干净状态。我个人的习惯是每次让 Claude Code 做一批改动之前先确保工作区是干净的git status没有未提交的改动这样出问题能精准回滚。2.3 终端的选择会影响体验尤其是 WindowsClaude Code 是 TUI终端用户界面程序对终端的渲染能力有要求。macOS 上默认的 Terminal 就够用iTerm2 更好。Linux 上随便一个现代终端都行。Windows 上要特别注意不要用老的 cmd.exe它的字符渲染和 ANSI 转义支持很差界面会花。推荐两个选择——Windows Terminal微软商店直接装或者 Git Bash。如果你装了 WSL2那直接在 WSL 里跑是最顺的因为 Claude Code 在类 Unix 环境下行为最稳定。我实测下来Windows 原生环境跑 Claude Code 是可行的但涉及路径分隔符、权限、shell 命令差异时偶尔会有小问题。如果你主要做的是跨平台项目WSL2 是更省心的选择。3. 安装 Claude Code 与认证配置的完整链路3.1 全局安装与版本确认环境准备好之后安装本身只有一行命令npm install -g anthropic-ai/claude-code装完验证claude --version能打印出版本号就说明装好了。如果报command not found八成是 npm 全局 bin 目录不在 PATH 里。查一下npm config get prefix这个路径下的 bin 目录应该在你的 PATH 中。macOS/Linux 上通常是/usr/local/bin或~/.npm-global/binWindows 上是%APPDATA%\npm。注意不要用sudo npm install -g。用 sudo 装会导致后续权限混乱而且 Claude Code 需要读写你的项目文件用 root 权限跑反而不安全。如果遇到权限报错正确做法是配置 npm 的用户级全局目录而不是加 sudo。3.2 首次启动与认证方式选择在项目目录下直接敲claude第一次启动会引导你完成认证。这里有个关键点Claude Code 需要的是 Claude 订阅账号或者 API 密钥两者体验不同。订阅账号Pro/Max走的是包月额度适合高频使用API 密钥走的是按量计费适合偶尔用或者想精确控制成本的场景。认证流程会打开浏览器让你登录登录完把授权码粘回终端。如果你在无图形界面的服务器上比如远程 Linux浏览器打不开这时候需要用 API 密钥的方式通过环境变量配置export ANTHROPIC_API_KEY你的密钥想让它永久生效写进~/.bashrc或~/.zshrc。有个常见报错值得单独说Your organization has disabled Claude subscription access for Claude Code。这个提示的意思是你登录的账号所属组织在管理后台关闭了 Claude Code 的访问权限。如果你用的是公司统一管理的账号需要找管理员开通如果是个人账号出现这个提示检查一下是不是登录错了账号或者账号类型不支持。3.3 认证失败时的排查顺序认证环节出问题按这个顺序排查效率最高现象可能原因处理方式浏览器授权后终端无反应回调端口被占用或防火墙拦截换用 API 密钥方式提示密钥无效密钥复制时带了空格或换行重新复制确认无多余字符登录后仍提示未认证凭证缓存目录权限问题检查~/.claude目录权限组织禁用提示账号策略限制联系管理员或换个人账号我踩过的一个坑是在服务器上通过 SSH 跑 Claude Code认证时它尝试打开浏览器失败卡在那里。解决办法是本地生成 API 密钥通过环境变量传进去完全绕开浏览器流程。这个方式在 CI/CD 或者远程开发场景下特别实用。4. CLAUDE.md让 Claude Code 真正懂你项目的关键文件4.1 为什么需要 CLAUDE.md不写会怎样Claude Code 每次启动会读取项目根目录下的CLAUDE.md文件把它作为系统提示的一部分。这个文件的作用是告诉 Claude Code 你这个项目的规则——用什么语言、什么框架、代码风格、测试怎么跑、哪些目录不要动。不写 CLAUDE.md 会怎样它也能工作但每次都要重新摸索你的项目结构容易做出不符合你习惯的改动。比如你的项目用 4 空格缩进它可能给你改成 2 空格你的测试命令是pytest -x它可能去跑python -m unittest。这些小事累积起来就是AI 改的代码还得手动调半天的体验。我自己的 CLAUDE.md 大概长这样你可以参考# 项目说明 这是一个 Python 后端服务使用 FastAPI SQLAlchemy。 ## 代码规范 - 缩进用 4 空格 - 类型注解必须写 - 函数命名用 snake_case类名用 PascalCase ## 常用命令 - 跑测试pytest -x --covapp - 格式化black . isort . - 启动开发服务uvicorn app.main:app --reload ## 目录约定 - app/ 是主代码 - tests/ 是测试 - migrations/ 不要手动改用 alembic 生成 ## 注意事项 - 不要修改 config/production.yaml - 数据库迁移必须配套写 downgrade4.2 CLAUDE.md 该写什么、不该写什么写 CLAUDE.md 的核心原则是写每次都需要知道的稳定信息不写这次任务特有的临时信息。前者比如技术栈、目录结构、命令后者比如这次要改登录逻辑——这种应该在你和 Claude Code 对话时说而不是塞进 CLAUDE.md。具体来说值得写进去的技术栈和版本Python 3.11、Node 20、PostgreSQL 15 这类避免它用错 API。构建和测试命令这是它验证自己改动是否正确的手段必须准确。代码风格约定缩进、命名、导入顺序减少后续手动调整。禁区哪些文件或目录不能碰比如生成的代码、配置文件、密钥文件。架构说明如果项目有特殊的分层或设计模式简单说一句能省很多解释。不值得写进去的详细的业务逻辑它读代码能懂一次性的任务描述大段的文档复制粘贴浪费上下文窗口提示CLAUDE.md 支持分层。项目根目录一份子目录也可以放一份Claude Code 会按就近原则叠加。比如前端目录放一份讲前端规范后端目录放一份讲后端规范这样上下文更精准。4.3 用 /init 命令快速生成初版如果你不想从零写Claude Code 提供了一个/init命令它会扫描你的项目自动生成一份 CLAUDE.md 草稿。用法是在 Claude Code 会话里直接输入/init它会分析你的项目结构、依赖文件、已有配置生成一份基础版本。我的建议是把它当起点不要当终点。生成完自己过一遍把不准确的、缺失的补上。自动生成的版本通常偏通用缺少你项目特有的约定。我实测下来/init生成的版本对中小型项目已经够用但有几个地方需要手动补一是测试命令它不一定能猜准二是禁区目录它不知道哪些是生成代码三是团队特有的命名约定。补完这三块基本就到位了。5. 第一次真实代码修改从提需求到验证结果5.1 选一个小而完整的任务作为第一次尝试第一次用 Claude Code别上来就让它重构整个模块。选一个边界清晰、能独立验证的小任务比如给某个函数加参数校验、修复一个已知的小 bug、给一个工具函数补单元测试。这样你能完整走一遍流程也能快速判断它的输出质量。我拿一个真实例子演示。假设项目里有个函数def calculate_discount(price, discount_rate): return price * (1 - discount_rate)这个函数没有校验传负数或者超过 1 的折扣率会算出离谱结果。我想让 Claude Code 加上校验。启动 Claude Codecd 你的项目 claude进入会话后直接用人话描述需求calculate_discount 函数缺少参数校验。请加上校验 price 必须是非负数discount_rate 必须在 0 到 1 之间。 校验失败时抛出 ValueError错误信息要清楚。 改完给这个函数补上对应的单元测试。5.2 观察它的工作过程而不是只看结果Claude Code 接到需求后会做一系列动作先搜索calculate_discount在哪些文件里被定义和调用读取相关文件然后提出修改方案。这个过程是可见的你能看到它在读哪些文件、执行什么命令。这里有个使用习惯很重要在它动手改文件之前看清楚它打算怎么改。Claude Code 默认会在修改文件前展示 diff 或者征求确认取决于你的权限配置。别一路回车放行尤其是第一次用的时候。看它的方案是否符合你的预期不符合就打断它补充说明。它改完之后会自己跑测试验证。如果测试通过它会告诉你结果如果失败它会尝试修复。这个改-测-修的循环是它最有价值的地方也是它区别于普通代码生成工具的核心。5.3 验证改动git diff 是你的第一道检查Claude Code 说改完了别急着信。先看 diffgit diff这一步能让你快速判断改动范围是否符合预期。我见过的情况包括它顺手改了不相关的文件、它把格式全改了导致 diff 巨大、它漏改了某个调用点。这些在 diff 里一眼就能看出来。看完 diff再跑一遍完整测试pytest -x如果测试全绿再手动验证一下边界情况。比如上面那个例子我会手动试几个输入calculate_discount(100, 0.2) # 应该返回 80 calculate_discount(-10, 0.2) # 应该抛 ValueError calculate_discount(100, 1.5) # 应该抛 ValueError确认无误后提交git add . git commit -m 为 calculate_discount 添加参数校验和单元测试5.4 权限模式什么时候该放行什么时候该拦Claude Code 有几种权限模式理解它们能让你在效率和安全性之间找到平衡。默认模式下它每次要执行命令或改文件都会问你。这个模式最安全但交互频繁。适合第一次用、或者在不熟悉的项目里操作。自动接受编辑模式下文件修改不用确认但执行 shell 命令还是要问。适合你已经信任它的改动方向、想加快节奏的场景。完全自动模式下什么都不问。这个模式我只在两种情况下用一是在一个全新的、可以随时丢弃的临时目录里做实验二是在有完整测试覆盖、且工作区干净、随时能回滚的项目里。绝对不要在有未提交改动、或者没有版本控制的项目里用完全自动模式这是血泪教训。切换模式可以在会话里用命令也可以在启动时加参数。具体命令随版本有变化用/help查当前版本的说明最准。6. 把 Claude Code 接进 VS Code 和现有工作流6.1 VS Code 集成终端里跑还是用扩展Claude Code 在 VS Code 里有两种用法。一种是在 VS Code 的集成终端里直接跑claude这是最通用的方式任何编辑器都能这么用。另一种是装官方扩展能在编辑器侧边栏里对话diff 直接在编辑器里展示体验更顺。我个人的偏好是日常小改用集成终端因为切换成本低涉及多文件重构时用扩展因为 diff 可视化更清楚逐个文件 review 更方便。装扩展的方式是在 VS Code 扩展市场搜 Claude Code装完在命令面板里找对应命令启动。启动后它会自动识别当前工作区CLAUDE.md 也会被读取。6.2 和 Git 工作流的配合分支策略用 Claude Code 做改动我强烈建议走分支。流程是git checkout -b feature/xxx # 在分支上让 Claude Code 干活 # 验证通过后 git checkout main git merge feature/xxx这样做的好处是如果 Claude Code 的改动方向不对你直接删掉分支就行主分支完全不受影响。我见过有人直接在 main 上让 AI 改改乱了想回滚结果发现中间还夹杂着自己的其他改动回滚起来很痛苦。分支粒度上一个任务一个分支。别在一个分支上让 Claude Code 连续做多个不相关的任务那样 diff 会混在一起review 和回滚都麻烦。6.3 接入本地模型什么时候值得折腾Claude Code 支持通过配置接入兼容的第三方模型接口包括本地跑的模型。关键词里提到的 LM Studio、Ollama 都属于这类。什么时候值得折腾这个如果你的代码涉及敏感信息不能外传或者你想在断网环境下用本地模型是唯一选择。但要清楚代价本地模型的代码理解和生成能力和 Claude 系列差距明显尤其是涉及多文件推理、复杂重构时本地模型经常看不懂项目结构。我的建议是本地模型适合做简单的、单文件的、模式化的改动复杂任务还是用云端模型。配置方式通常是通过环境变量指定 API 端点和模型名具体参数随版本变化以官方文档为准。这里不展开具体配置因为不同版本的配置项差异较大照抄容易出错。7. 新手最容易卡住的几个问题和我的处理经验7.1 认证和网络相关的报错除了前面说的组织禁用问题另一个高频报错是连接超时。这类问题通常和网络环境有关排查思路是先确认基础网络连通性再检查是否有代理配置冲突。如果你在公司网络下可能需要配置 HTTP 代理环境变量export HTTPS_PROXYhttp://你的代理地址:端口但要注意代理配置不对反而会导致连不上所以配之前先确认代理地址是准确的。7.2 它改错了怎么办回滚的正确姿势改错了不可怕可怕的是不知道怎么回滚。分几种情况还没提交git checkout .丢弃所有未提交改动或者git checkout 文件名只丢弃某个文件。已经提交但没 pushgit reset --hard HEAD~1回退到上一个提交。已经 push用git revert生成一个反向提交别用 reset 强推会污染历史。我自己的习惯是让 Claude Code 做一批改动就提交一次提交信息写清楚改了什么。这样回滚粒度细不会一次丢掉太多工作。7.3 上下文窗口用满导致它变笨长时间会话后Claude Code 可能会开始忘记前面的约定或者重复问已经回答过的问题。这是上下文窗口被占满的表现。处理方式是开新会话或者用/clear清空当前上下文。CLAUDE.md 的好处在这里体现出来——它是每次启动都重新读取的所以开新会话后项目规则还在不用重新交代。我的经验是一个会话专注一个任务任务完成就开新会话。别在一个会话里连续做五六个不相关的任务那样上下文会混乱输出质量下降。7.4 关于直接执行终端命令的边界Claude Code 能直接执行终端命令这是它的能力也是需要警惕的地方。它能跑测试、装依赖、启动服务但它也可能执行一些你不想让它执行的命令比如删除文件、修改系统配置。我的做法是在权限配置里把危险命令rm、chmod、系统级操作设为需要确认把安全命令ls、cat、git status、pytest设为自动放行。这样既保证了效率又守住了安全底线。具体怎么配看当前版本的权限设置文档不同版本支持的命令白名单机制不太一样。8. 我用了几个月之后的一些真实体会Claude Code 最大的价值不是帮你写代码而是帮你完成一个完整的改动闭环。它自己搜、自己读、自己改、自己测、自己修这个循环跑通之后你从执行者变成了审核者。这个角色转变带来的效率提升比单纯的代码补全大得多。但它不是万能的。项目越乱、约定越不清晰它的表现越差。所以用它的过程其实也是倒逼你把项目规范理清楚的过程——CLAUDE.md 写明白了测试覆盖上去了Git 历史干净了它的输出质量自然就上来了。这算是意外收获。最后分享一个我常用的小技巧让 Claude Code 在改代码之前先用一两句话复述它理解的需求。如果它复述得不对你立刻就能发现省得它改完一堆再返工。这个习惯帮我避免了很多次方向性错误。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。