老实说,我第一次在终端里敲下claude这个命令时,习惯性以为它又是一个把对话窗口搬到命令行的玩具。但真正上手之后,我必须承认判断错了——Claude Code 不是聊天框,而是能直接读文件、改代码、跑命令的代理式编程工具。简单来说,它是一个常驻终端的 AI 代理,你用自然语言布置任务,它自己拆解步骤、调用终端工具、检查结果、继续修正,直到把活干完。
这篇文章就来聊聊我在终端里用自然语言驱动 Claude Code 的经验,包括安装、配置、SKILL 扩展、接入第三方模型、以及踩过的一堆坑。无论你是刚听说它、正在纠结要不要装,还是已经安装但用不顺手,下面的内容都值得你花几分钟看完。
1. 先搞懂 Claude Code 本质:为什么是“代理式编程”而不是“聊天补全”
1.1 它和 Copilot、ChatGPT 有什么本质区别
很多人第一次接触 Claude Code,都会拿它跟编辑器里的 AI 插件做对比。我自己也用了很长一段时间的 Copilot,所以特别能理解这种惯性思维。Copilot 的模式本质上是“人在回路里的补全”:你在 IDE 里写代码,它基于上下文给你建议,你手动接受、手动粘贴、手动运行,然后根据报错再回来问一句。整个过程的主导者始终是人,AI 只是一个更聪明的输入法。
Claude Code 不一样。它运行在终端里,拥有读取文件树、搜索代码、修改文件、执行 Shell 命令的完整能力。你给它一个目标,它会把目标拆解成一系列动作,然后自己去完成。比如你说“帮我看看登录接口为什么偶尔返回 401”,它会先搜索相关代码,阅读认证逻辑,再检查 token 校验的调用链,然后给出结论并顺手把可疑的 bug 修掉。整个过程不需要你一步步指挥它。
我用一个生活化的类比来理解这种差别:Copilot 是“随身词典”,你查一个词,它给你解释;Claude Code 更像是“外包的实习生”,你交代一个目标,它自己翻代码、找线索、动手改,跑通了再跟你汇报结果。这背后就是“代理式编程”的核心逻辑——工具调用、任务拆解、反馈闭环,三者缺一不可。
工具调用意味着 AI 不再是“纸上谈兵”,它能真正在系统里产生操作;任务拆解让含糊的自然语言需求能够转成可执行的动作清单;反馈闭环则让 AI 在看到测试失败、报错输出后能自我修正,而不是答非所问。这三板斧叠在一起,才让编程从“对话框里讨论代码”变成了“终端里指挥代理干活”。
1.2 为什么非要跑在终端里,而不是 IDE 里
这个问题我刚接触时也想过。VS Code 插件、JetBrains 插件不是更直观吗?答案藏在终端的“通用性”里。终端是每个开发者电脑上最底层的环境,不管你在 Windows、macOS、Linux,还是 SSH 到远程服务器、容器、嵌入式交叉编译环境,终端永远可用。Claude Code 跑在终端里,就意味着它天然适应这些场景——生态、命令行工具、Git 操作、构建系统,全都能直接调用。
另外,IDE 的 AI 插件往往受限于编辑器提供的上下文窗口,Claude Code 则通过命令行工具主动去“看”整个项目。比如它会用rg搜索关键词,用git diff查看改动,用cat读取文件,这些信息最终汇总成它对项目的理解。说得直白一点,IDE 里的 AI 是在“管中窥豹”,终端里的代理是“拉网排查”。
当然,终端模式也有代价。没有图形界面,没有内联提示,多轮对话的视觉体验不如 IDE 插件。所以更合理的用法是:Claude Code 负责需要深度理解代码库、批量操作、自动执行命令的重活;IDE 插件负责日常写代码时的即时提示。两者互补,而不是谁替代谁。
2. 环境准备与安装:把 Claude Code 跑起来
2.1 前置条件与终端选型
安装 Claude Code 之前,先把基础环境确认一遍。官方要求 Node.js 18 以上,我建议直接装 20 或 22 的 LTS 版本,因为很多新特性在旧版本上会有兼容问题。打开终端验证一下自己的环境:
node -v npm -v如果提示命令不存在,先去 Node 官网或通过 nvm 安装。我个人比较推荐 nvm 方式,因为版本切换方便,遇到 Node 版本兼容问题时不至于抓狂。
然后是终端本身的选择。macOS 用户直接用自带的 Terminal 或者 iTerm2 都没问题;Linux 用户用系统自带的终端模拟器即可;Windows 用户情况比较复杂,我强烈建议用 WSL 2 进入 Ubuntu 终端来安装运行,这样能获得完整的 Linux 命令环境,后续接入各种工具链也少踩坑。如果不想用 WSL,至少也建议用 Git Bash,而不是在 PowerShell 里硬磕,否则路径分隔符、命令兼容性会消耗你大量耐心。
这里顺便提一个 macOS 小技巧:在 Finder 里打开某个项目文件夹后,可以直接右键文件夹选择“新建位于文件夹位置的终端窗口”,快速在当前目录启动终端。Windows 用户则可以在文件资源管理器地址栏输入cmd或wsl回车,直接在该目录打开命令行。这个小习惯能帮你省掉不少cd的时间。
2.2 三种安装方式与登录
Claude Code 的安装方式主要有三种,我都试过,分享下体验差异。
方式一:npm 全局安装,这是最主流的方式,适合大多数开发者:
npm install -g @anthropic-ai/claude-code安装完成后运行claude --version验证版本。如果你看到版本号正常输出,说明安装基本没问题。
方式二:官方安装脚本。这种方式适合不想通过 npm 管理的用户:
curl -fsSL https://claude.ai/install.sh -o install.sh less install.sh bash install.sh注意,我特意把脚本先下载下来再看一遍再执行。网上很多“curl | bash”的教学直接一条命令跑完,但养成先审查脚本内容的习惯,对工程师来说是基本素养。官方脚本本身没问题,但你应该知道自己在执行什么内容。
方式三:桌面版入口。如果你更习惯图形界面,Claude 的桌面应用里也集成了 Claude Code 的入口。但本质上它启动的还是同一个终端会话,只是给你一个更友好的外壳。
安装完成后,运行claude,按提示完成登录授权。如果你有 Anthropic 的账号订阅,可以直接走浏览器授权流程;如果是通过 API 使用,就配置对应的 API 密钥。企业用户可以选择 SSO 方式登录,方便团队统一管理额度。登录这一步卡住的人很多,我见过的主要是网络连通性问题,先确认当前环境能正常访问外部网络,再检查账号资格,基本就能解决。
2.3 融合进 VS Code 与终端复用工具
Claude Code 虽然跑在终端里,但不代表它和 VS Code 没关系。我日常最顺手的用法是:在 VS Code 里打开项目,然后按Ctrl+`` 调出集成终端,直接运行claude。这样对话界面在终端,代码在编辑器,AI 改文件后,我用Ctrl+Z` 回退、看 diff 都非常方便。
更进阶的做法是配合终端复用工具。Claude Code 处理长任务时,可能需要几分钟甚至更久,如果中途关闭了终端窗口,任务就断了。tmux 就是来解决这个问题的。我的习惯是用 tmux 单独开一个会话专门跑 Claude Code:
tmux new -s claude claude任务跑到一半想离开?按Ctrl+b然后按d分离会话,关掉终端也不怕。回来时执行tmux attach -t claude,原封不动接上。这个组合拳在 SSH 远程开发时尤其好使。
如果你对终端本身有审美要求,我非常推荐 Tabby 这款终端工具。界面清爽、多标签、多窗格,还能记住会话。我通常左边窗格跑 Claude Code,右边窗格用 yazi 这类终端文件管理器快速浏览目录结构,需要看哪个文件,直接定位,效率很高。当然,终端工具归根结底是个人偏好,别为了花哨而牺牲稳定性,选一个用得顺手的最重要。
3. 核心实操:让 Claude Code 替你干活
3.1 用什么方式提问更有效:自然语言 vs Markdown
网上经常有人争论“对 AI 提问到底用自然语言还是 Markdown 更容易让它明白指令”。我的实测结论是:自然语言负责表达意图,Markdown 负责结构约束,两者结合才是最优解。
纯自然语言的问题适合简单任务。比如“帮我解释一下src/utils/format.ts里这个函数在干什么”,它读完代码会给你完整解释。但这种对话式提问经不起复杂任务推敲,我问过“把这个项目的日志统一改成结构化输出”,结果它改了 20 多个文件,每个文件改法还不一致,后来我发现问题就出在“统一”这个词太模糊,AI 只能自由发挥。
复杂任务必须用 Markdown 明确结构。我习惯用这个模板:
目标:给项目所有 API 请求增加统一的错误处理拦截器 约束: - 不要修改现有测试文件 - 保持向后兼容 - 只改动 src/api 目录 验收:运行 npm run test 全部通过这样交代之后,它的执行质量完全不一样。“目标 + 约束 + 验收”三件套,本质上是在模仿真实工作场景中的任务工单。你想想,给一个实习生布置任务时,是不是也得说清楚做什么、不做什么、做完怎么样算合格?AI 也需要同样的信息。
另外一个实用的细节是:贴报错信息时用代码块包裹。比如“运行npm run build报这个错误,帮我分析:"然后粘贴报错内容"”。这样能避免 AI 被大量文本干扰,定位精准度明显提升。我踩过几次坑后发现,给 AI 的上下文越干净,它的输出越可靠。
3.2 三个真实案例(逐步演示)
光说不练没有说服力,分享三个我实际用 Claude Code 干活的场景。
第一个场景:接手陌生代码库。我接了一个老项目,几千个文件,完全不知道从哪看起。我在项目根目录运行claude,输入:“这个仓库主要是做什么的?从 package.json 和 README 开始分析,给我一份模块架构说明,标注核心入口文件。”它花了大概一分钟,扫描了目录结构、读取了关键配置文件,输出了一个架构说明。我接着让它把结果写入docs/ARCHITECTURE.md,它真的创建了文档。以前这种活至少需要我半天时间,现在半个小时内就能对全局有一个准确认知。
第二个场景:自动修复失败的测试。有一次 CI 挂了,报错的测试涉及一个公共工具函数。我把报错信息贴给它,要求“运行相关测试,定位失败原因,修复后全部跑通,但不要改动测试逻辑”。它先是调用了npm test,看到了失败输出,然后定位到我代码里一个边界条件处理遗漏,改完之后重新跑测试,确认通过才停下来。这个流程里我唯一做的操作就是输入指令和按了几次确认键,剩下的活全是它干的。
第三个场景:嵌入式项目辅助。你可能觉得终端 AI 离嵌入式很远,其实不然。我在一个 ESP32 项目里让它分析 WiFi 初始化相关代码:“帮我查一下这个项目里 WiFi 初始化部分的实现,重点看断线重连逻辑,然后给出一份代码评审,指出潜在问题。”它通过搜索和读取源码,准确地找到了连接状态机的关键位置,还指出了重连失败后没有重置状态的问题。不过这里有个前提:嵌入式编译工具链必须自己装好并加入 PATH,比如 ESP-IDF 的idf.py,Claude Code 本身不会帮你编译,但它能帮你分析代码、生成初始化模板、排查逻辑缺陷。这类场景对经常写单片机代码的朋友特别实用。
3.3 SKILL:给 Claude Code 定制“手艺”
Claude Code 的能力不仅来源于模型本身,还能通过 SKILL 机制扩展。你可以把 SKILL 理解成给代理增加一套“职业技能包”,它是特定场景下的标准操作流程,比如“Docker 部署助手”“代码评审专家”“提交信息生成器”。
手动安装 GitHub 上的 SKILL 非常简单。先把对应的仓库克隆或下载回来,找到里面的SKILL.md文件,然后放到用户级目录或项目级目录中:
~/.claude/skills/<skill-name>/SKILL.md或者放在当前项目的.claude/skills/<skill-name>/SKILL.md里。项目级目录的好处是可以跟着代码库一起走,团队成员共享同一套技能。
SKILL.md的结构也不复杂,本质上是给 AI 看的一份说明文档:
--- name: commit-message description: 根据 git diff 生成规范的提交信息,在用户要求提交代码时使用 --- 1. 先运行 git diff --stat 查看改动范围 2. 再运行 git diff 查看具体改动内容 3. 根据 Conventional Commits 规范生成提交信息 4. 提交前向用户确认为什么值得花时间做 SKILL?因为编程里的很多操作是可复用的。你把团队规范、代码风格、审查要点固化进去,以后每次让 Claude Code 干活时,它都会自动遵循这套标准。这是复利收益,我第一次写 SKILL 用了半小时,之后每次交互都在受益。不过也别过度设计,本地装 3~5 个高频使用的 SKILL 就足够了,装太多反而会让它在切换技能时产生混乱。
4. 常见问题与排查技巧实录
4.1 终端中文乱码怎么办
用 Claude Code 时中文乱码是最常见的问题之一,尤其集中在 Windows 环境。表现就是 AI 输出的中文变成了“锟斤拷”或者方格,根本没法阅读。
乱码的根源通常是终端代码页不匹配。Windows 默认的代码页可能是 GBK,而 Claude Code 输出的是 UTF-8。解决方法不复杂。
最简单的方式是在当前终端会话执行:
chcp 65001切换到 UTF-8 代码页后重启终端。如果每次都要手动切,就在 VS Code 的设置里搜索terminal.integrated.profiles.windows,把默认终端环境的代码页参数调整好,或者直接把系统区域设置中的“Beta: 使用 Unicode UTF-8 提供全球语言支持”选项打开。WSL 里则要检查 locale 配置,确保LANG环境变量包含 UTF-8 后缀。
另外,有时候乱码并不是编码问题,而是终端字体不支持中文。换成“Cascadia Code”或者“JetBrains Mono”这类支持中文回退的字体,也能缓解显示问题。你排查时可以先用一个简单的echo "中文测试"确认当前终端对中文的支持程度,一步步缩小范围。
4.2 conpty 启动失败、winpty 冲突怎么处理
Windows 上跑 VS Code 集成终端的用户,可能遇到过这个报错:
终端进程启动失败: 启动期间发生本机异常(无法启动 conpty)。已移除 winpty
这个问题的根源在于 Windows 的 ConPTY 终端后端与旧版 winpty 两者之间的兼容性冲突。常见诱因有三个:系统版本太旧缺少 ConPTY 组件;VS Code 与系统版本不匹配;或者杀毒软件拦截了终端核心进程。
我的排查顺序是这样的:先升级 Windows 系统和 VS Code 到最新版本,这一步能解决大部分问题。然后重新安装或卸载 Git Bash 自带的旧版 winpty 相关组件,清理掉可能干扰的环境变量。最后检查杀软的信任列表,放行conhost.exe和OpenConsole.exe。如果问题依然存在,可以尝试在 VS Code 设置里搜索终端相关选项,临时切换终端类型绕开异常组件。
提醒一句,遇到终端异常时,不要急着装一堆终端增强插件,先保证系统层面干净。插件太多往往会让问题更隐蔽,你根本分不清是哪个环节出了故障。
4.3 把 Claude Code 接入 DeepSeek 等第三方模型
很多人不知道,Claude Code 并不只绑定官方模型。它支持通过环境变量改写 API 端点和模型名称,从而接入其他兼容接口,比如 DeepSeek 或者自建的网关服务。如果你所在团队用的是自建大模型网关,这会非常实用。
基本配置思路是设置三个环境变量:
export ANTHROPIC_BASE_URL="https://你的网关地址" export ANTHROPIC_AUTH_TOKEN="你的访问Token" export ANTHROPIC_MODEL="deepseek-chat"设置完成后运行claude,它会请求你指定的模型。这里要强调一个关键点:Claude Code 的代理式工作流依赖模型具备 tool use 能力,也就是模型能不能看懂“工具调用请求”并正确返回调用参数。DeepSeek 新版模型已经支持工具调用,可以试跑。但不同模型在响应质量和稳定性上跟官方版本有明显差异,建议先从简单任务开始冒烟测试,比如“读取 package.json 并总结”,确认它能正常调用文件工具后,再逐步增加复杂度。
另外,不同网关的环境变量名可能有差异,配之前先查一下网关的官方文档,别照抄一个配置就急着上线。我在切换模型时吃过亏,忽略了一个小差异,结果 AI 一直在报 401,排查半天才发现是 Token 字段名不对。
4.4 卸载与完全重置
装了之后想卸载?很简单:
npm uninstall -g @anthropic-ai/claude-code账号相关的本地配置默认存在用户主目录下的.claude文件夹。删除它就能完全重置:
rm -rf ~/.claude不过如果你自定义过 SKILL,建议先备份这个目录再动手。我见过有同事卸载时没备份,重装之后发现自己的技能全丢了,欲哭无泪。
4.5 在 WSL 2 里运行的小提醒与终端复用建议
在 WSL 2 里使用 Claude Code,需要注意一个性能细节:项目文件最好放在 Linux 文件系统内,也就是/home/用户名/下面,而不要放在/mnt/c/这种 Windows 挂载路径上。跨文件系统读写性能会有明显损耗,而且文件权限容易混乱。我第一次在 WSL 里跑 Git 操作时,就是因为在/mnt/c/下开发,结果各种权限问题冒出来,耽误了不少时间。
另外,很基础但很多人还不会的小技巧:在终端里想换行输入多行命令时,用反斜杠\换行,或者直接粘贴多行内容;要回到上一条历史命令,用上方向键;想在长命令里快速移动光标,用Ctrl+A跳到行首、Ctrl+E跳到行尾。这些细节虽然跟 Claude Code 没有直接关系,但终端操作越熟练,你跟 AI 配合的效率就越高。
上面提到 tmux 时我说过,长任务用会话分离很稳。这里再补一个操作顺序:先tmux new -s claude,再启动 Claude Code;中途要离开就Ctrl+b然后d;回来后tmux attach -t claude。这套流程我已经用了很久,从来没有因为终端意外关闭而丢失任务。
5. 更进一步:把 Claude Code 接入日常开发流
5.1 权限边界与安全习惯
Claude Code 能执行命令,这把双刃剑一定要用好。默认情况下,它执行高危命令时会请求你确认,这是第一道防线,我建议保持这个默认设置。--dangerously-skip-permissions参数可以跳过所有确认,但我只在隔离的测试环境里用过,真实项目上绝不轻易开启。
更细的做法是在对话里明确给它划边界。我通常会在任务指令里附带一句“不要动网络层相关代码”“删除文件前先列出清单让我确认”。这些自然语言约束虽然不如系统权限强制,但实践证明它能在大部分情况下降低风险。
还有一条安全底线:不要把生产环境的密钥、密码直接粘进对话里。AI 的上下文会被记录,尤其在使用第三方网关时,敏感信息更应该通过环境变量引用,而不是明文出现在终端会话中。这是一条通用安全习惯,与具体工具无关。
5.2 成本与上下文管理
Claude Code 的多轮对话处理长任务时,上下文会不断膨胀,这既影响响应速度,也增加 token 消耗。我常用的控制手段是记住几个关键斜杠命令:
| 命令 | 作用 |
|---|---|
/init | 生成项目索引,帮 AI 快速理解代码库 |
/compact | 压缩历史对话,保留核心信息 |
/clear | 清空上下文,开启全新会话 |
/review | 让 AI 对当前改动做代码审查 |
/status | 查看当前会话的状态与文件改动 |
判断什么时候该/clear的标准很简单:如果新任务跟之前的对话主题无关,直接开新会话;如果上下文太长导致 AI 开始重复提问或者忘记早前的指令,先用/compact压缩一轮,不行就/clear。当然,/clear之前最好把有用的输出保存到文件里,别把劳动成果丢了。
团队协作中,如果多个人共用同一个模型接口,还要约定好提交、命名、注释的风格规范,避免 Claude Code 给每个成员生成的代码风格不统一。SKILL 就是解决这个问题的最佳工具——把团队规范固化进去,所有成员共享同一套“手艺”。
5.3 从尝鲜到依赖:我的使用体会
用了一段时间后,我最大的变化是工作方式变了:以前是我盯着终端,一有报错就复制粘贴搜索;现在是 Claude Code 盯着终端,跑完任务主动汇报。写代码这件事,从“亲手实现”变成了“交代任务 + 验收结果”。
但我还是想强调,越是好用,越要保持清醒。AI 生成的代码终究需要经过 Code Review,它帮你提高了写代码的速度,但代码能不能上线、有没有隐藏的性能问题,最终责任还是在人。我现在的习惯是:Claude Code 负责执行重复性高、模式清晰的修改;我负责设计架构、定义接口、审查边界。这种分工方式,才是把工具价值发挥到最大又不失控的正确姿势。
如果你还没试过,我建议从今天开始,先在你的一个非核心项目里跑起来,让它帮你做一次代码结构梳理或者补几个单元测试。亲身感受一下“代理式编程”和“聊天式问答”的差别,你就能理解我为什么说它是终端里最值得上手的 AI 工具。