:CLI 命令行模式 — 基础命令与高效操作)
1. 终端里第一次跑通 Claude Code CLI从安装后启动到会话内基础命令Claude Code 的 CLI 命令行模式简单说就是让你在终端里直接跟一个能读写文件、执行命令、理解整个项目上下文的 AI 结对。它不是一个聊天窗口而是一个能真正动手改代码的终端代理。适合谁适合已经装好 Claude Code、但每次只会敲claude然后干瞪眼的新手也适合想把 AI 塞进脚本和 CI 的老手。这一篇聚焦命令行模式的上手路径首次启动、会话内常用基础命令、批量文件操作、快捷键提效最后把 endpoint 改到 TaoToken 统一 Key/API 通道让你在终端里稳定跑通一次完整编码任务。我试过最典型的翻车场景是这样的装完 Claude Code兴冲冲cd进项目敲claude结果第一句话就卡住——要么认证报错要么模型名不认识要么它想写文件时弹出一堆权限确认你手忙脚乱点了 Deny然后它就再也不动了。问题不在你笨而在于 CLI 模式有一套自己的启动参数、会话命令和权限模型没人系统讲一遍你只能靠猜。先把最基本的启动方式摆出来。Claude Code 的 CLI 入口就是claude这个命令后面可以跟参数也可以跟一个 prompt# 最基本的启动方式进入交互会话 claude # 指定项目目录启动推荐让 AI 拿到正确的项目上下文 cd ~/my-project claude # 非交互式直接发一个 prompt输出结果后退出 claude -p 解释这段代码的作用这里有个新手最容易忽略的点启动目录就是 AI 的工作根目录。你在~下敲claude它看到的是你的整个家目录你在项目根目录敲它才理解src/、package.json这些结构。所以养成习惯先cd到项目再启动。启动参数里最值得先记住的是这几个参数缩写说明示例--print-p非交互模式输出后退出claude -p 写一个快排--continue-c继续上次对话claude -c--resume-r恢复指定会话claude -r session-id--model指定模型claude --model sonnet--effort思考深度级别claude --effort high--version-v查看版本号claude -v思考深度Effort是 Claude Code 一个很实用的设计它控制模型在回答前想多久。简单查询用low最快日常编码medium是推荐默认架构设计和复杂重构上high疑难杂症才需要xhigh或max。别一上来就max又慢又费简单格式化任务用low就够了。进入交互模式后真正提效的是那些以/开头的斜杠命令。/model查看和切换当前模型/clear清空上下文/compact在上下文快满时压缩历史/help看全部命令/init生成CLAUDE.md项目配置文件/memory管理跨会话记忆/permissions查看权限设置/review发起代码审查。这几个命令里/compact和/clear是保命用的——对话一长上下文塞满模型开始胡言乱语这时候/compact压缩一下或者/clear直接重开比硬撑着强。文件操作是 CLI 模式的核心价值。你不需要记任何文件 API直接用自然语言描述 读取 src/main.ts 的内容找出潜在的 bug 在 package.json 中添加 lodash 依赖 删除 src/temp 目录下所有 .tmp 文件 把 UserService.java 中的 findUser 方法重命名为 findById 给所有 public 方法添加单元测试Git 操作同样深度支持。让它看未提交改动生成 commit message、创建 feature 分支、squash 最近三个 commit、review 分支差异都能直接说。权限管理这块要重点理解Claude Code 在执行写文件、跑命令前会请求确认弹出[Allow] [Deny] [Allow All]。选 Allow 是本次允许Allow All 是永久允许这类操作会写进settings.local.jsonDeny 是拒绝。新手常见错误是乱点 Allow All结果它把你不想动的文件也改了。稳妥做法是先 Allow 几次观察行为确认靠谱了再考虑预配置权限。2. 把 endpoint 改到 TaoToken 统一 Key/API 通道的前置准备在讲配置之前得先说清楚为什么要改 endpoint。Claude Code 默认走的是官方通道但很多人在国内环境下会遇到网络不稳定、认证反复失败、模型名对不上等问题。TaoToken 提供的是一个统一的 Key/API 通道把模型调用收敛到一个 Base URL 和一把 Key 上配置一次Claude Code、Cline、Codex 这些工具都能复用同一套凭证。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。前置准备其实就三件事拿到 Key、确认 Base URL、想清楚用哪个 Model ID。这三件套是后面所有配置的基础缺一个都跑不起来。第一件拿 Key。登录 TaoToken 控制台在 API Keys 页面创建一个新的 Key。创建时给它起个能认出来的名字比如claude-code-cli方便以后区分是哪个工具在用。Key 只在创建时完整显示一次复制下来存好别等关了页面再找。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API Keys 页面是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。第二件确认 Base URL。TaoToken 的 API 根地址是https://taotoken.net/api。注意这里不要加 UTM 参数配置里写的是纯 API 地址。很多工具要求 Base URL 不带尾部斜杠写https://taotoken.net/api就行。第三件选 Model ID。这是新手最容易踩坑的地方——Claude Code 默认认的是opus、sonnet、haiku这类别名但走统一通道时你需要填通道实际支持的模型 ID。具体有哪些模型、各自的 ID 叫什么去接入文档里查别凭记忆瞎填。文档地址是 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。注意Key 属于敏感凭证不要提交到 Git 仓库不要贴在公开的 issue 或聊天记录里。建议放在环境变量或本地的 settings 文件里并且把 settings 文件加进.gitignore。如果你同时用 Claude Code 和 Cline或者还在折腾 Codex那三件套的概念要刻进脑子里Base URL Key Model ID。这三个值在任何一个工具里配置逻辑都是一样的只是填的位置不同。Claude Code 走的是 settings 文件和环境变量Cline 走的是插件设置面板Codex 走的是auth.json。把这三个值记在一个安全的地方换工具时直接复用能省掉大量重复排查。还有一个前置认知改 endpoint 不是破解或绕过而是把工具指向你自己有权使用的 API 通道。TaoToken 是正规的 API 服务你用的是自己账号下的 Key 和额度。理解这一点后面配置时心态就稳了不会因为看到非官方地址就心虚。准备阶段最后一步验证你的 Key 是否有效。在正式改 Claude Code 配置前先用一条最简单的 curl 确认通道通不通curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY如果返回模型列表说明 Key 和 Base URL 都没问题可以进入下一步配置。如果返回 401说明 Key 不对或没带上如果连接超时检查网络和 Base URL 拼写。这一步花两分钟能帮你把后面 80% 的报错提前排掉。3. 可复制的 settings 配置片段Claude Code CLI 接入统一通道这一节是全文最核心的部分直接给可复制的配置。Claude Code 的配置分两层全局配置在~/.claude/settings.json项目级配置在项目根目录的.claude/settings.json本地私有覆盖在.claude/settings.local.json。权限相关的 Allow All 会写进settings.local.json而 endpoint 和认证相关的配置我们主要动全局的settings.json和环境变量。先看环境变量方式这是最干净、最不容易污染项目配置的做法。Claude Code 认ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN这两个环境变量# 写入 shell 配置~/.bashrc 或 ~/.zshrc export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKEN你的_TaoToken_Key # 让配置立即生效 source ~/.zshrc # 验证环境变量已生效 echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_AUTH_TOKEN把 Key 直接写在 shell 配置里有泄露风险更稳妥的做法是单独放一个文件然后 source 进来# ~/.taotoken_env记得 chmod 600并加入 .gitignore export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的实际Key # 在 ~/.zshrc 里引用 [ -f ~/.taotoken_env ] source ~/.taotoken_env然后是 settings 文件方式。如果你希望配置跟着 Claude Code 走而不是跟着 shell 走就写~/.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的实际Key }, model: 你的ModelID, permissions: { allow: [ Bash(git *), Bash(npm *), Read, Edit, Write ] } }这里的model字段填你在接入文档里查到的 Model ID。permissions.allow是预授权列表把常用的只读和 Git 操作放进去能减少反复确认的打断。但注意Write和Edit放进去意味着 AI 可以不经确认直接改文件新手建议先别加这两个等熟悉它的行为模式后再放开。如果你用的是 CC Switch 这类多模型切换工具配置逻辑是一样的只是填的位置在它的图形界面里。核心还是那三件套Base URL 填https://taotoken.net/apiKey 填你的 TaoToken KeyModel ID 填通道支持的模型。CC Switch 的好处是可以在多个通道之间快速切换适合同时用多个 API 服务的场景。项目级配置.claude/settings.json适合放跟项目强相关的东西比如这个项目专用的权限白名单、项目级的 model 偏好。但不要把 Key 写进项目级配置因为项目配置通常会提交到 Git。Key 只放全局配置或环境变量。配置写完后用claude doctor检查安装和配置健康状态claude doctor这个命令会检查 Claude Code 的安装完整性、认证状态、配置是否可读。如果它报认证失败回去检查ANTHROPIC_AUTH_TOKEN是否拼对、有没有多余空格。如果报 Base URL 无法访问检查ANTHROPIC_BASE_URL是不是写成了带 UTM 的地址——配置里必须是纯 API 地址https://taotoken.net/api。提示改完配置后已经打开的 Claude Code 会话不会自动读取新配置需要退出重开。用Esc按两次退出或者CtrlC中断然后重新claude启动。配置这块还有一个容易忽略的细节不同版本的 Claude Code 对配置字段的支持可能不同。如果你写了model字段但启动时报unknown model先claude -v看版本再去文档确认该版本支持的字段名。别硬猜文档里都有。4. 逐条验证从一次问答到完整编码任务的跑通流程配置写完不算完得逐条验证确认每一层都通了。这一节给一套从简到繁的验证流程你照着敲一遍就能确认整条链路是活的。第一步验证非交互模式能出结果。这是最小验证单元不涉及文件操作只测通道和认证claude -p 用一句话解释什么是快速排序 --effort low如果这条命令能正常输出一句话说明 Base URL、Key、Model ID 三件套都对了。如果报 401回去查 Key如果报 model not found回去查 Model ID如果连接超时查 Base URL 和网络。这一步过了后面才有意义。第二步验证交互模式能启动并识别项目上下文cd ~/my-project claude进入交互界面后先敲/status看当前会话状态确认模型和 token 使用情况。然后问一个跟项目相关的问题 这个项目用的是什么语言和框架入口文件在哪如果它能准确说出你的项目结构说明它正确读取了当前目录的上下文。这一步验证的是工作目录即上下文根这个机制。第三步验证文件读取能力。让它读一个具体文件并分析 读取 src/main.ts告诉我这个文件导出了哪些函数它会请求读取权限选 Allow。如果它能列出正确的函数名说明文件读取链路通了。第四步验证文件写入能力。这一步要谨慎先在一个临时文件上试 在项目根目录创建一个 test-claude.md写入一行 hello from claude code它会请求写入权限选 Allow。然后你在另一个终端cat test-claude.md确认内容写进去了。确认后删掉这个测试文件。这一步验证的是写权限和文件系统操作。第五步跑一次完整的编码任务。这是本篇的目标——在终端里稳定跑通一次完整编码任务。找一个真实的小需求比如 在 src/utils 目录下创建一个 date.ts 工具文件包含 formatDate() 和 dateDiff() 两个函数 用 TypeScript 写加上类型定义和 JSDoc 注释观察它的行为它会先创建文件写入代码可能还会提示你运行类型检查。整个过程你能看到它调用了哪些工具、改了哪些文件。完成后用cat src/utils/date.ts检查产物再跑一下项目的类型检查命令确认没引入错误。第六步验证非交互模式的管道集成。这是 CLI 模式区别于 GUI 的核心能力# 把 git diff 喂给它做代码审查 git diff | claude -p review 这些改动只列出严重问题 --effort medium # 生成 commit message git diff --staged | claude -p 为这些改动生成一个简洁的 commit message如果这两条能正常输出说明你已经能把 Claude Code 当成一个标准的 Unix 命令行工具来用了可以嵌进脚本和 CI。第七步验证会话恢复。退出后重新进来用claude -c继续上次对话或者claude -r列出历史会话选择恢复。这一步验证的是会话持久化对长任务很重要——你不可能一次会话就把大重构做完。把这七步走完你对 Claude Code CLI 的掌握就从能启动进阶到能干活了。每一步都是一个独立的验证点哪一步失败就针对性排查不用从头再来。5. 本篇常见报错排查401、local proxy failed、reading choices、OAuth配置和验证过程中报错是必然的。这一节把最常见的几类报错和排查路径列清楚你对着症状找原因。401 Unauthorized。这是最高频的报错几乎都跟 Key 有关。排查顺序先echo $ANTHROPIC_AUTH_TOKEN确认环境变量真的生效了很多人改了.zshrc但没source或者改的是.bashrc但用的是 zsh再确认 Key 没有多余空格或换行复制时容易带上然后确认 Key 没有过期或被删除去控制台 API Keys 页面核对最后确认请求头格式对Claude Code 用的是Authorization: Bearer key如果你手动 curl 测试别漏了Bearer前缀。如果环境变量和 settings 文件都配了 Key注意优先级——通常环境变量会覆盖文件配置两边不一致时以环境变量为准。local proxy failed / connection refused。这类报错说明 Claude Code 尝试连接 Base URL 但连不上。先确认ANTHROPIC_BASE_URL写的是https://taotoken.net/api没有多余路径、没有尾部斜杠、没有 UTM 参数。然后用 curl 直接测curl -v https://taotoken.net/api/v1/models \ -H Authorization: Bearer $ANTHROPIC_AUTH_TOKEN如果 curl 也连不上是网络或地址问题如果 curl 能通但 Claude Code 报错是 Claude Code 的配置读取问题检查 settings 文件 JSON 格式是否合法少个逗号、多个括号都会导致解析失败。JSON 格式错误可以用python -m json.tool ~/.claude/settings.json验证。reading choices / unexpected response format。这类报错通常出现在模型返回的内容格式跟 Claude Code 预期不一致时。常见原因Model ID 填错了通道返回的是另一个模型的响应格式或者--output-format参数跟当前用法冲突。排查先确认 Model ID 是从文档里查的、通道确实支持的再检查是不是在非交互模式里用了交互模式才支持的参数。如果用了--output-format json但模型返回的不是合法 JSON也会报这个。解决方法是去掉--output-format用默认文本输出或者换一个明确支持结构化输出的模型。OAuth / authentication failed。Claude Code 默认可能走 OAuth 流程当你改成 API Key 认证时如果旧的 OAuth 凭证还在会冲突。排查检查~/.claude/下有没有残留的认证缓存文件必要时清理掉重新认证。另外确认你没有同时配置 OAuth 和 API Key 两套认证方式二选一。如果用的是claude auth子命令管理认证先claude auth看当前认证状态再决定是登出重来还是补 Key。权限确认死循环。AI 反复请求同一个权限你点了 Allow 但下次还问。这通常是因为你点的是单次 Allow 而不是 Allow All或者settings.local.json没写成功。检查.claude/settings.local.json里的permissions.allow数组确认规则写对了。规则格式是Bash(git *)这种通配符位置要对。如果文件写对了还反复问可能是项目级配置和全局配置冲突检查两处。模型名不认识 / unknown model。claude --model opus在官方通道能用但走统一通道时opus这个别名可能不被识别。解决方法是查接入文档用通道实际支持的 Model ID 替换别名。这也是为什么前面强调三件套里的 Model ID 必须从文档查不能凭记忆。排查的通用心法从最小验证单元开始。先用 curl 测通道再用claude -p测非交互最后才测交互和文件操作。哪一层断了就修哪一层不要一上来就在复杂场景里 debug。另外claude doctor是你的朋友配置类问题先跑它。6. 把 CLI 用顺手批量操作、快捷键与长期编码的通道选择基础命令和配置都通了之后真正拉开效率差距的是批量操作和快捷键。这一节讲怎么把 Claude Code CLI 用成你终端里的常规武器。批量文件操作的核心思路是用自然语言描述批量意图让它自己遍历。比如给所有 Java 类生成 Javadoc你不需要写循环直接说 为 src/main/java 下所有 .java 文件中的 public 方法生成 Javadoc 注释它会自己找文件、逐个处理。但批量操作要注意两点一是先在小范围试确认产物符合预期再放开二是批量写操作前先git commit或git stash万一改坏了能回滚。批量删除类操作尤其危险 删除 src/temp 下所有 .tmp 文件这种执行前一定确认路径没写错。管道集成是 CLI 模式的杀手锏。把 Claude Code 当成一个能理解代码的grep或awk嵌进你的 shell 脚本#!/bin/bash # review-all.sh - 审查所有未合并的 PR for pr in $(gh pr list --state open --json number -q .[].number); do echo PR #$pr gh pr diff $pr | claude -p 审查这个 PR只列出严重问题 --effort medium done这种脚本能直接进 CI比如在 GitHub Actions 里对每个 PR 自动跑一遍 AI 审查把结果写进review-report.md。注意 CI 环境里 Key 要通过 secrets 注入不要硬编码。快捷键这块记住几个高频的就够Enter发送ShiftEnter换行多行输入必备CtrlC中断当前操作Esc按两次退出CtrlL清屏。ShiftEnter特别重要写复杂 prompt 时不用它你只能写一行很难受。上下文管理是长期使用的关键。对话一长/compact压缩历史/clear完全重置/status看 token 使用。重要信息用/memory add存进跨会话记忆比如 /memory add 本项目使用 Java 17 Spring Boot 3.2 MySQL 8.0下次会话它还记得。/init生成CLAUDE.md项目配置文件把项目约定写进去比每次口头交代高效。如果你打算长期用 Claude Code 做编码和 Agent 任务通道选择上可以考虑 Coding Plan。它适合高频、长时间的编码场景比按量计费更可控。具体方案在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果你只是想先验证模型效果、跑几个 prompt 看看输出质量用模型对话页面就够了https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。而配置和排障过程中需要反复查的 Key 和文档分别在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 和 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后给一个我踩过的坑别在同一个项目里同时用多套配置。环境变量一套、全局 settings 一套、项目 settings 一套、CC Switch 里还存一套出问题时你根本不知道哪套生效了。统一到一处——要么全用环境变量要么全用全局 settings项目级只放权限白名单。配置越简单排查越快。把 CLI 用顺手之后你会发现终端里的 AI 结对比任何 GUI 都直接因为它就在你原本的工作流里不用切窗口、不用复制粘贴git diff | claude -p一条命令就把审查做了。