For the complete documentation index, see llms.txt. This page is also available as Markdown.

7.2 Claude Code CLI 入门与基础运维

Claude Code 是 Anthropic 推出的专为开发者设计的终端工具。它不仅仅是一个 API 包装器,而是一个具有 Agentic Capabilities 的编程助手——可以直接读取文件系统、运行终端命令、甚至自动提交 Git commit。

7.2.1 安装与认证

安装

Claude Code 当前推荐优先使用原生安装器或系统包管理器;npm 仍可用,但更适合作为兼容路径。安装前先确认操作系统、shell、网络和账号满足 官方 Advanced setup 的要求。

macOS、Linux 或 WSL:

curl -fsSL https://claude.ai/install.sh | bash

在受管环境或生产工作站上,不要盲目执行远程脚本;可先下载脚本审阅,或优先使用 Homebrew、WinGet、apt/dnf/apk 等可审计的包管理器路径。

macOS 也可以使用 Homebrew:

brew install --cask claude-code

如果团队仍采用 npm 分发,可以使用:

npm install -g @anthropic-ai/claude-code

认证

安装后直接运行:

claude

CLI 会引导浏览器完成登录。Claude Code 需要 Pro、Max、Team、Enterprise 或 Console 等具备 Claude Code 权限的账号;免费 claude.ai 账号不等于拥有 Claude Code 访问权。脚本和 CI 场景不要复用交互式登录流程,应按官方 CLI 文档生成长期 token 或使用企业授权方式,例如:

claude setup-token

7.2.2 运行模式与认证机制

来源说明:本节部分内容基于社区对 Claude Code 源代码的逆向分析(HitCC 项目,CC BY 4.0),具体行为可能随版本更新而变化。

多种运行模式

Claude Code 支持多种运行模式以适应不同场景:

模式
用途
典型场景

TUI 交互模式

终端内的富文本交互界面

日常开发:claude 直接启动

Headless 无头模式

非交互式处理,输出文本或 JSON

CI/CD 流水线、脚本集成

Bridge 远程控制

允许外部程序(如 claude.ai)远程接管会话

/remote-control 跨端协作

SDK 模式

程序化调用 Claude Code 能力

应用程序集成、自动化工作流

IDE 插件

VS Code、JetBrains 等编辑器集成

IDE 内编码辅助

不同模式在启动时就会进入各自的代码路径,避免加载不必要的模块。

认证排障顺序

当你遇到认证问题时,先按当前官方文档列出的凭据来源逐层确认,不要把历史逆向结果当作稳定 ABI:

  1. 云供应商路径:如果启用了 Bedrock 或 Vertex AI,先检查对应的环境变量和云侧凭据链。

  2. 自定义 Authorization headerANTHROPIC_AUTH_TOKEN 会作为 Authorization: Bearer ... 使用。

  3. Anthropic API KeyANTHROPIC_API_KEY 会作为 API key 使用;交互式订阅用户仍应优先通过 /login 登录。

  4. apiKeyHelper:适合网关、Vault 或短期凭据轮换;官方文档明确其优先级低于 ANTHROPIC_AUTH_TOKENANTHROPIC_API_KEY

  5. Claude.ai 登录态:面向订阅账户,由 Claude Code 管理本地安全存储。

CLAUDE_CODE_OAUTH_TOKEN 不应作为通用 API key 覆盖方案;只有在当前版本文档或企业部署说明明确要求时再使用。

此外,如果使用 Amazon BedrockGoogle Vertex AI 作为后端,需要通过专用环境变量启用:

不同的后端提供商有各自独立的认证实现,不共享代码路径。排查认证问题时,务必先确认当前使用的是哪个后端。

7.2.3 核心命令

交互模式

直接运行 claude 进入对话模式:

单次任务

Unix 哲学与管道:Piping

Claude Code 拥有高度的可组合性,遵循 Unix 哲学。你可以将日志、命令输出通过管道符 (|) 传给 Claude,进行串联处理:

7.2.4 CLAUDE.md:项目记忆文件

CLAUDE.md 是 Claude Code 的项目记忆机制,让 Claude 在会话开始时获得稳定的项目上下文。它适合记录长期有效的规则、架构说明、常用命令和注意事项,不适合记录一次性任务状态、密钥、私人 token 或会频繁过期的事实。

什么是 CLAUDE.md?

CLAUDE.md 是一个特殊的 Markdown 文件,Claude Code 会在合适的位置读取它,并把内容作为项目上下文提供给模型。这意味着你无需重复解释项目结构、编码规范和常用命令;但它仍然是给模型看的上下文,不应被当成不可变的系统级安全边界。

文件位置

位置
作用域
典型用途

~/.claude/CLAUDE.md

用户级

个人偏好、常用工具、通用工作习惯

项目根目录 CLAUDE.md

项目级

架构、命令、编码规范、测试入口

.claude/CLAUDE.md

项目级

与项目内 .claude/rules/ 搭配的主项目说明

CLAUDE.local.md

本地个人覆盖

不提交的本机路径、个人偏好、实验设置

.claude/rules/*.md

项目规则

可按路径或文件类型组织的规则文件

更稳妥的使用方式不是维护一份神秘的“优先级链”,而是把记忆按稳定性拆开:项目级事实写进项目记忆,个人偏好写进用户记忆,临时任务状态写进 issue、plan 或 checkpoint,密钥和敏感信息一律放在受控 secret 系统。

@import 文件导入

CLAUDE.md 支持 @path/to/import 语法导入其他文本文件:

导入路径可以是相对路径或绝对路径;相对路径按包含该导入语句的文件所在目录解析,而不是按当前 shell 工作目录解析。导入可以递归,但官方文档限制最大深度为 4 跳。首次导入项目外文件时,按当前客户端策略可能需要用户批准。

CLAUDE.local.md:本地覆盖

CLAUDE.local.md 是专为个人配置设计的覆盖文件,典型用途包括:

  • 个人的 API 密钥路径或环境变量

  • 本地特有的构建命令(如不同的 Python 版本路径)

  • 开发者个人偏好(如 diff 格式、日志级别)

因为 .local.md 通常被添加到 .gitignore,所以不会影响团队其他成员。

示例 CLAUDE.md

使用 /init 自动生成

运行 /init 命令可以自动分析项目并生成初始 CLAUDE.md

Claude 会检查 package.json、README、配置文件等,生成一份针对你项目的配置文件。

自动记忆

你不必总是手动更新 CLAUDE.md,Claude Code 具备 自动记忆能力。在日常的交叉任务中,Claude Code 能够自我学习,并将经常用到的构建命令、特殊的调试发现保存下来,并在跨会话中持续起作用,无需你额外操心。

出错即学:把单次纠错变成持久规则

CLAUDE.md 的真正价值是 复利。最简单的复利习惯是:每次 Claude 因为不知道某条项目约定而出错时,在 prompt 末尾追加一句:

Claude 会自己把这条经验提炼成 CLAUDE.md 里的一行规则。下一次新会话开始,这条规则就已经随项目上下文自动加载了。Boris(Anthropic Claude Code 团队)形容 Claude “出奇地擅长给自己写规则”。

这个习惯比手动维护 CLAUDE.md 更可持续,因为:

  1. 触发条件明确:只在 Claude 实际犯错时写,避免预设过多不必要规则

  2. 来源真实:每条规则都对应一次真实的错误,而不是想象中可能的问题

  3. 复利可见:几周后回看 CLAUDE.md,能直接看到团队踩过的坑被沉淀

判断哪些经验值得写进 CLAUDE.md 的简单筛选问题:“如果删除这一行,Claude 还会不会再犯这个错?” 答案是会,就留下;答案是不会,就删除。CLAUDE.md 不该比一屏内容更长。

上下文喂养:Reference,不要 Describe

给 Claude 喂上下文有两种方式,效果差距很大:

反模式
推荐做法
原因

“看看 auth 模块”

@src/auth/login.py

@path 让 Claude 精确读到文件

把错误日志粘贴进 prompt

cat error.log | claude

管道把完整日志喂给 Claude,不丢上下文

“我们项目用 FastAPI”

把这条事实写进 CLAUDE.md

项目级事实只需要写一次

@path/to/file 语法在 CLAUDE.md 和交互式 prompt 中都支持,相对路径按当前文件所在目录解析。Pipe 模式让 Claude 直接消化外部工具输出(构建错误、测试结果、gh pr view 输出),避免你手动复制粘贴时丢失信息。

Hooks:拦截命令体系

为了在流程中更自如地植入代码质量检测,Claude Code 引入了 Hooks 机制: 你可以约定让 Shell 命令在 Claude 发生相关行为前/后自动执行。例如修改完任何文件后必须走一遍代码格式化(自动运行 Prettier/Black);再比如可以在让 Claude 代码修改准备 Commit 提交之前执行全量的 Lint 检测,确保不引入新的问题。

7.2.5 自定义 Slash Commands

将常用的提示词封装为自定义命令,避免重复输入。

注意:自定义命令功能可用性取决于当前 Claude Code 版本。建议参考官方文档了解最新支持。

创建自定义命令

在项目根目录创建 .claude/commands/ 目录并添加 Markdown 文件:

创建 .claude/commands/security-review.md

使用自定义命令

$ARGUMENTS 会被替换为命令后的参数。

内部机制提示:内置命令(如 /clear/compact)由 CLI 本地处理;自定义 commands/skills 是提示词工作流,调用后其内容会渲染并发送给 Claude。理解这一区别有助于排查“为什么模型没有响应我的斜杠命令”类问题。

7.2.6 上下文管理技巧

使用 /clear 重置上下文

长时间对话会累积无关上下文。在切换任务时使用:

这会清除对话历史,但保留 CLAUDE.md 配置。

使用 Subagent 隔离上下文

对于需要不同视角的任务(如实现后的安全审查),指示 Claude 使用子代理:

子代理拥有独立的上下文,不会被前序开发思路影响。

技术细节:通过远程控制(/remote-control)接管的会话有命令限制——能产生文本输出的命令(如 /compact/clear/context/usage/exit/recap 等,新版本还包括 /mcp)可在移动端/网页端使用;需要本地交互式选择器的命令(如 /plugin/resume)仅限本地,触发时返回 “isn't available over Remote Control”。具体清单以官方 remote-control 文档为准。

7.2.7 权限模式

为了安全,Claude Code 把“能否直接修改文件、执行命令、跳过确认”拆成多个权限模式。不要把它简化成 Safe / Auto 二分;不同客户端和账号可见的模式也可能不同。

模式
适用场景
关键边界

default

日常开发

需要用户确认写入和多数命令

acceptEdits

让 Claude 连续编辑文件

文件编辑和部分工作区内文件系统命令可自动批准,其他命令仍会询问

plan

先审方案再动手

适合高风险任务、重构和部署前规划

auto

账号和环境满足要求后的自动执行

依赖官方分类器和客户端设置,不应当作简单 allowlist

dontAsk

CI 脚本等非交互/自动化场景

不弹窗确认:未经 /permissionspermissions.allow 规则预先批准的操作会被自动拒绝,只读命令仍可执行

bypassPermissions

容器、一次性 VM 或强隔离环境

会跳过权限层和大多数安全确认,不应在普通工作机或生产环境使用

CLI 可以用 --permission-mode 指定起始模式。--dangerously-skip-permissions / bypassPermissions 只应在隔离沙箱中使用;在真实项目中,更好的做法是缩小工作区、明确 allowed tools,并保留人工确认门槛。

7.2.8 内部架构揭秘

来源说明:本节内容基于社区对 Claude Code 源代码的逆向分析和工程推断。虽然反映了合理的架构设计方向,但具体技术实现细节、API 参数和隐藏特性描述可能与实际产品有所不同。本节 不应作为官方功能承诺,仅供架构学习之用。关于生产环境中 Claude Code 的确切行为,请以官方文档和实际使用为准。

基于社区对源代码的分析,Claude Code 的内部架构展现了 Anthropic 对 AI 编程助手的深刻理解。

分层模块化架构

Claude Code 采用 5 层架构设计,从高到低分别为:

这种分层设计允许 Claude Code 在不加载无关模块的情况下独立运行各个层级。例如,在 REPL 模式下无需加载完整的 SDK 通信层,在 Bridge 远程模式下也无需启用交互式 UI 组件。

4 种运行时模式

Claude Code 在启动时进入不同代码路径以匹配运行环境:

运行模式
默认入口
场景
核心特征

REPL

bin/claude

终端交互

Ink 实时渲染,Readline 输入

SDK (Headless)

node_modules/claude-code/sdk.js

程序调用

返回 JSON,无 UI

Print

单次命令执行

claude "task"

输出结果即退出

Bridge (CCR)

Websocket 服务器

远程控制

允许 claude.ai 接管会话

每种模式有独立的事件处理、状态管理和输出格式。

状态管理:AppStateStore

Claude Code 维护一个 150+ 字段的应用状态存储。核心字段包括:

状态管理采用 35 行的发布-订阅实现

所有状态变更通过 DeepImmutable 包装器进行,确保不可变性和可追溯性。

对话引擎:QueryEngine

整个会话的生命周期由一个 1,295 行的 QueryEngine 类 管理:

主要职责

  • 消息归一化(处理不同格式输入:自然语言、结构化任务、工具输出)

  • 令牌预算管理(跟踪上下文窗口使用,触发压缩)

  • 对话流控制(回合制管理、暂停、恢复)

  • 缓存整合(自动检测缓存命中,调整成本计算)

核心方法

系统提示词架构

Claude Code 使用 模块化可缓存的系统提示词片段

关键优化是 SYSTEM_PROMPT_DYNAMIC_BOUNDARY 分割策略

这种策略减少了每次会话中的缓存写入成本 75%

功能开关与编译时优化

Claude Code 在构建时包含 70+ 功能开关

这些开关进行 编译时常量折叠和死代码消除,确保:

  • 生产构建不包含调试代码

  • 某些功能可通过环境变量动态启用

  • 减少二进制大小和运行时开销

UI 层:Ink 与 React

Claude Code 的终端 UI 基于 React + Ink 架构,包含:

  • 50+ 自定义组件(MessageBox、CodeBlock、Spinner、ProgressBar 等)

  • Yoga 布局引擎(CSS Flexbox 的移植)

  • 87 个 React Hooks(包括自定义 Hook 如 useTokenCount、useStreamingResponse)

关键的 UI 架构:

隐藏特性

源代码中发现了三项产品文档未公开的实验特性:

特性名
特性门
作用

KAIROS

编译时 feature('KAIROS')

持久运行的后台助手,维护每日日志,通过 <tick> 提示主动行动,设有 15 秒阻塞预算

BUDDY

编译时 feature('BUDDY')

虚拟宠物伴侣系统,含 18 个物种、5 级稀有度、确定性抽卡(同一用户永远得到同一伴侣)

ULTRAPLAN

编译时特性门

将复杂规划卸载到远程 CCR 会话,最多 30 分钟思考时间

这些特性通过 Bun 的编译时特性门控制,在外部构建中被死代码消除,仅内部版本可用。

推测执行引擎

Claude Code 包含一个 推测执行模块,在等待 API 响应时预执行可能的下一步操作:

  • 隔离机制:写入操作(Edit、Write)被重定向到 overlay 文件系统 ${CLAUDE_TEMP_DIR}/speculation/${PID}/${id},读取操作在 overlay 上隔离进行

  • 安全边界:Bash 命令不允许在推测执行中运行(可能产生不可逆副作用),权限被拒的工具也会终止推测

  • 结果处理:用户确认 → 合并 overlay 到主目录;用户拒绝 → 丢弃 overlay;主响应到达 → 中止推测

  • ROI 追踪:系统记录每次推测执行的时间节省,用于量化推测执行的投入产出比

核心设计约束是可逆性:文件操作通过 overlay 实现可逆,但 bash 命令(如 git commit)可能产生不可逆副作用,因此是推测执行的硬边界。


CLI 工具非常适合个人开发者在本地终端使用。若想体验 Claude 的进阶特性并在多平台上发挥它更广阔的能力,请延伸阅读本章 7.6 小节。

➡️ Agent SDK 集成 等相关内容,或者直接了解 Claude Code 高阶特性与多端生态

最后更新于