Claude Code / 使用教程

Claude Code 使用教程:安装、登录、CLAUDE.md、权限模式与常用命令

本文面向用 Claude Code 写科研代码和做数据分析的研究生与工程师。内容按官方文档 code.claude.com/docs 当前版本核对,命令、settings 字段和报错在 Claude Code 2.1.296(macOS arm64)上实测,不涉及登录和付费调用。

直接答案

Claude Code 是 Anthropic 的终端编程智能体。安装用官方原生脚本 curl -fsSL https://claude.ai/install.sh | bash(Windows 用 PowerShell 的 irm 命令),也可以用 Homebrew、WinGet 或 npm(需 Node.js 22+)。登录需要 Claude Pro(每月 20 美元)或更高的订阅,或 Console API Key;免费计划不含 Claude Code。通过网关使用时,在 ~/.claude/settings.json 的 env 中设置 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN。项目规则写在根目录 CLAUDE.md,硬性限制写成 settings.json 的 deny 规则或 hook。2.1.283 起交互会话默认进入 auto 权限模式,用 Shift+Tab 切换;长任务用 nohup 或作业调度器独立运行,会话用 claude --resume 恢复。

第 1 步

所有路线装的是同一个原生二进制。差别在于是否自动更新、是否需要 Node.js,以及在哪个界面里用。

旧教程要求先装 Node.js。当前只有 npm 路线需要 Node.js 22 或以上;版本更低时 npm 只打印 EBADENGINE 警告,安装仍会完成。

共享 home 目录(NFS,多数 HPC 集群)上要注意:会话运行中会持续读取可执行文件,另一台节点用 npm 原地升级会删掉旧二进制,正在运行的会话报 Bus error 退出。集群上应把二进制装在本地磁盘,或设置 DISABLE_UPDATES 后由管理员统一升级。旧版本在 SLURM 计算节点上启动后立即退出的问题已在 2.1.76 修复(GitHub #12507)。

安装与验证bash
# macOS / Linux / WSL:原生安装(推荐,后台自动更新)
curl -fsSL https://claude.ai/install.sh | bash
# 想要比 latest 晚约一周、跳过有严重回归版本的 stable 通道
curl -fsSL https://claude.ai/install.sh | bash -s stable

# Windows PowerShell(提示符以 PS 开头)
irm https://claude.ai/install.ps1 | iex
# Windows CMD(提示符不带 PS)
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

# 包管理器(不自动更新)
brew install --cask claude-code          # stable 通道;claude-code@latest 为 latest 通道
winget install Anthropic.ClaudeCode

# npm(要求 Node.js 22+;不要加 sudo)
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code@latest   # 升级用这条,不用 npm update -g

# 验证
claude --version     # 本页实测输出:2.1.296 (Claude Code)
claude doctor        # 只读诊断:安装方式、自动更新、settings 文件校验
路线命令或入口自动更新适合注意
原生安装脚本curl -fsSL https://claude.ai/install.sh | bash是,后台更新个人电脑、WSL、无 root 的服务器装到 ~/.local/bin,不需要管理员权限;装完开新终端再运行 claude
Homebrewbrew install --cask claude-code否,brew upgrademacOS 已用 brew 管理软件claude-code 跟 stable 通道,claude-code@latest 跟 latest 通道
WinGetwinget install Anthropic.ClaudeCode否,winget upgradeWindows 原生运行中升级可能因文件被占用失败
npmnpm install -g @anthropic-ai/claude-code可以,但全局目录需可写已有 Node 22+ 环境npm 只负责下载原生二进制,运行时不调用 Node;不要 sudo
apt / dnf / apk官方签名仓库否集群管理员统一部署适合 NFS 共享 home 的机器,见下文 Bus error
桌面应用claude.com/download是不想用终端Linux 版另有文档;GUI 中可看 diff 和并行会话
VS Code / JetBrains 插件扩展市场搜索 Claude Code随插件在 IDE 里看 diffVS Code 插件的起始权限模式读插件自己的设置,不读项目 settings
Web 云端会话claude.ai/code不需要长任务、离线后继续只能用订阅账号,需要连接 GitHub 仓库;本地设置的 API Key 不生效
来源:官方 Advanced setup、Platforms 与 Authentication 文档。

Windows

项目和工具链在 Windows 上就用原生;依赖 Linux 工具链(conda、gcc、HPC 脚本)或需要沙箱,就用 WSL 2。

原生 Windows

不需要管理员权限。Git for Windows 是可选项:装了就用 Git Bash 执行命令,没装就退回 PowerShell 工具。Claude Code 找不到 Git Bash 时,在 settings.json 的 env 中设置 CLAUDE_CODE_GIT_BASH_PATH 为 C:\Program Files\Git\bin\bash.exe。原生 Windows 不支持 Bash 沙箱。

WSL 2

在 WSL 终端里运行 Linux 安装脚本,不要在 PowerShell 里启动。项目放在 /home 下:放在 /mnt/c 时跨文件系统读写慢,官方说明搜索会返回偏少的结果,而 claude doctor 仍显示 Search OK。

WSL 里用 npm 安装

which node 输出以 /mnt/c/ 开头,说明用到了 Windows 的 Node,会报 exec: node: not found 或平台不匹配。先 npm config set os linux,或用 nvm 在 WSL 内装 Node。改用原生安装脚本可以绕开这类问题。

WSL、SSH 和容器里登录

浏览器无法回调本地端口时,登录页会显示一段代码,粘贴到终端的 Paste code here if prompted 处即可。浏览器没自动打开时按 c 复制登录链接。

工作目录里出现名为 nul 的文件

这是早期版本把 Unix 的 /dev/null 重定向写到 Windows 上产生的(GitHub #4928)。升级到最新版本;已经生成的 nul 文件在资源管理器里删不掉时,在 Git Bash 中用 rm ./nul 删除。

安装命令选错 shell

看到 The token '&&' is not a valid statement separator 说明在 PowerShell 里跑了 CMD 命令;看到 'irm' is not recognized 说明在 CMD 里跑了 PowerShell 命令。提示符以 PS 开头的是 PowerShell。

第 2 步

首次运行 claude 会打开浏览器登录。多种凭据同时存在时,Claude Code 按固定顺序选一个,用 /status 查看当前生效的是哪一个。

凭据优先级从高到低是:云厂商变量(CLAUDE_CODE_USE_BEDROCK 等)、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_API_KEY、apiKeyHelper 脚本、CLAUDE_CODE_OAUTH_TOKEN、浏览器登录。订阅用户在 shell 里残留一个过期的 ANTHROPIC_API_KEY,会出现登录正常但请求报认证失败;unset ANTHROPIC_API_KEY 后用 /status 确认回到订阅。

登录凭据在 macOS 存入钥匙串,在 Linux 和 Windows 存入 ~/.claude/.credentials.json。同一台机器用两个账号时,用 CLAUDE_CONFIG_DIR 区分,例如 alias claude-lab='CLAUDE_CONFIG_DIR=~/.claude-lab claude'。

在 claude.ai 升级套餐后,已有会话里的令牌仍是旧套餐,选 Opus 会提示 not available with the Claude Pro plan;运行 /logout 再 /login 即可。

方式怎么设置计费差异
Claude 订阅(Pro、Max、Team、Enterprise)运行 claude,在浏览器登录 claude.ai 账号包含在订阅内,按 5 小时会话额度和周额度限制提示缓存寿命 1 小时;可用 Web 云端会话、Remote Control;免费计划不含 Claude Code
Console API Keyexport ANTHROPIC_API_KEY=...,交互模式下首次要确认使用按 token 计费,见下文价格表提示缓存默认 5 分钟;/usage 显示的美元数按列表价本地估算
网关或中转(ANTHROPIC_BASE_URL)ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY按网关方规则不能用 Remote Control;MCP 工具搜索默认关闭;模型名需要用环境变量映射
Bedrock / Agent Platform / FoundryCLAUDE_CODE_USE_BEDROCK=1 等,或在登录页选 3rd-party platform按云厂商账单auto 模式只支持 Sonnet 5、Opus 4.7 及以上等较新模型
长期令牌claude setup-token 生成一年期令牌,设为 CLAUDE_CODE_OAUTH_TOKEN订阅用于 CI 和无浏览器的服务器;--bare 模式不读它
来源:官方 Authentication、Setup、Costs 文档。

国内使用

国内使用的方案选择(官方订阅、中转、国产模型、云端环境)见《国内怎么用 Codex 和 Claude Code》对比页。本节只讲操作:变量写在哪里、如何验证、出错怎么查。

ANTHROPIC_DEFAULT_HAIKU_MODEL 指定的模型还承担后台任务(会话标题、摘要等)。不少中转教程把它指向已退役的 claude-3-5 系列,结果是后台请求反复报错;应指向网关当前提供的模型。

同一变量在 shell 和 settings.json 的 env 中都设置时,以 settings.json 为准。设置 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 会同时关闭自动更新,需要定期手动 claude update。

先在 shell 中验证网关bash
# 先在 shell 里 export 两个变量,再用 1 个 token 的请求验证地址和凭据
export ANTHROPIC_BASE_URL=https://gateway.example.com
export ANTHROPIC_AUTH_TOKEN=sk-xxxx
curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-4-6","max_tokens":1,"messages":[{"role":"user","content":"."}]}'
# 返回 {"id":"msg_... 说明通;报“未知模型”也说明地址和凭据是对的;401 就换成 x-api-key 头和 ANTHROPIC_API_KEY
# 进入 claude 后运行 /status,确认出现 Anthropic base URL 和 Auth token 两行
验证通过后写入 ~/.claude/settings.json(用户级;凭据不要放进会提交到仓库的 .claude/settings.json)json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://gateway.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-xxxx",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "网关提供的模型名",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "网关提供的轻量模型名",
    "CLAUDE_CODE_MAX_CONTEXT_TOKENS": "128000",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "API_TIMEOUT_MS": "600000"
  }
}
现象原因处理
curl 能通,claude 仍要求登录凭据写在项目 .claude/settings.json,交互会话要先过首次向导和信任对话框才读取把 env 移到 ~/.claude/settings.json,或在启动 claude 的 shell 里 export
401 invalid tokenAUTH_TOKEN 走 Authorization: Bearer,API_KEY 走 x-api-key,网关只认其中一种换另一个变量名;两者不要同时设置
启动提示两个凭据来源、auth may not work as expected网关变量和已保存的登录同时存在要用网关就 /logout;要用订阅就 unset 变量
400 Extra inputs are not permitted 或 context_management上游不接受 Claude Code 发送的预发布字段env 中加 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
400 Input tag 'adaptive' 或 thinking type should be enabled or disabled上游模型不支持 adaptive thinking官方变量 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 只对 Opus 4.6 和 Sonnet 4.6 生效;其他模型需网关方升级上游
400 ContextWindowExceededError 或 prompt token count exceeds the limit网关的上下文比 Claude Code 假设的小,错误被改写后不触发自动压缩先 /compact;再设 CLAUDE_CODE_MAX_CONTEXT_TOKENS 或 CLAUDE_CODE_AUTO_COMPACT_WINDOW(写纯整数,500k 会被读成 500)
/model 里没有网关的模型模型名不在内置列表设 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1,或用 ANTHROPIC_DEFAULT_SONNET_MODEL 等变量映射
长时间无响应后报 Connection refused (ECONNREFUSED)地址错或网关停了,Claude Code 默认重试 10 次本页实测默认 2 分 56 秒才报错,设 CLAUDE_CODE_MAX_RETRIES=0 后 5.9 秒报错;排查完再删掉该变量
代理设置后仍连不上Claude Code 不支持 SOCKS 代理HTTPS_PROXY 指向代理软件的 HTTP 端口,例如 http://127.0.0.1:<HTTP 端口>
SSL certificate verification failed,curl 却正常运行时不信任公司或代理软件的根证书设 NODE_EXTRA_CA_CERTS 指向 CA 证书文件
来源:官方 Connect to an LLM gateway 故障表、Network configuration、Model configuration;重试耗时为本页实测。

价格

每天用几个小时选订阅;偶尔用、用在脚本或 CI 里、或需要精确记账选 API。下表为 2026-10-10 官方公开价格(美元,不含税)。

实际花费参照

官方给出的企业部署数据:平均每人每个活跃日约 $13,每月 $150–250,90% 的用户每个活跃日低于 $30。

缓存寿命决定离开后的成本

订阅的提示缓存寿命 1 小时,API Key 默认 5 分钟。用 API Key 时离开超过 5 分钟再提问,整段上下文按未缓存价格重新读取。长会话里一句短问题也会按整段上下文计费。

查看用量

/usage(/cost 和 /stats 是别名)显示本会话 token 与估算金额;订阅用户看额度条和重置时间。额度用到 85% 左右会提示。Opus 或 Sonnet 单独的额度用完时,/model 切到另一个家族可以继续,周额度和会话额度跨模型共享。

给脚本设上限

claude -p 支持 --max-budget-usd 和 --max-turns,到达上限即停止。金额按客户端估算,可能略超,需要留余量。

方案价格说明
Free$0不含 Claude Code
Pro月付 $20;年付折合 $17/月(一次付 $200)含 Claude Code,额度按 5 小时会话窗口和周窗口计算
Max$100/月起,可选 Pro 的 5 倍或 20 倍用量高峰期优先访问,含每月 API 额度
API:Claude Sonnet 5.5输入 $2 / 输出 $10 每百万 token;缓存命中 $0.10日常编码的默认选择
API:Claude Opus 5.5输入 $4 / 输出 $20;缓存命中 $0.20复杂规划与多步推理
API:Claude Haiku 5.5输入 $0.10 / 输出 $0.50(提示超过 10 万 token 时为 $0.50 / $2.50)子 agent 的简单任务
API:Claude Fable 5.1输入 $10 / 输出 $50;缓存命中 $0.25最强档
来源:claude.com/pricing 与 Claude API Pricing 页面。

第 3 步

CLAUDE.md 是每次会话开始时读入的说明文件。它影响 Claude 怎么做,不限制 Claude 能做什么;必须遵守的限制写成权限规则或 hook。

科研项目 CLAUDE.md 示例markdown
# 项目:单细胞数据的差异表达分析

## 目录约定
- data/raw/:原始数据,只读。不修改、不移动、不删除,也不在原地解压或排序。
- data/processed/:由 scripts/ 中的脚本从 raw 生成,可以随时删除重建。
- scripts/:所有分析步骤,按 01_、02_ 编号,每个脚本可独立运行。
- results/:图表与表格,文件名带脚本编号,例如 03_volcano.pdf。
- logs/:每次运行的日志,文件名带时间戳。

## 运行环境
- 用 conda 环境 scrna-2026(environment.yml 已锁版本)。安装新包前先问我。
- 运行脚本:python scripts/<名称>.py 2>&1 | tee logs/$(date +%Y%m%d-%H%M%S)-<名称>.log

## 可复现要求
- 所有随机过程固定 seed=20261010,并写进结果表的元数据。
- 结果里的每个数字必须能由 scripts/ 中的某个脚本重新生成,不在对话里手算。
- 修改分析参数时,同时更新 docs/params.md 中的参数表与修改理由。

## 统计约定
- 差异表达用 Wilcoxon 检验,BH 校正,padj < 0.05 且 |log2FC| > 1。
- 样本信息以 data/raw/metadata.csv 为准,分组名保持原样。

## 长任务
- 预计超过 5 分钟的命令用 nohup 后台运行并写日志,之后读日志汇报进度。

<!-- 维护说明:这行 HTML 注释不会进入 Claude 的上下文 -->
See @docs/params.md for current parameters.

多个文件是拼接关系

所有找到的文件按从根目录到启动目录的顺序拼接,不互相覆盖。两条规则冲突时 Claude 可能任选一条,所以不同层级不要写互相矛盾的要求。

@ 导入

@path 相对于写这行的文件所在目录解析,最多递归 4 层;路径有空格要用反斜杠转义,加引号则不导入;写在反引号里不导入。导入的文件在启动时全部载入,不节省上下文。项目文件导入项目外的路径时会弹出一次批准对话框。

长度

官方建议每个文件 200 行以内,超过会在启动和 /status 中提示,超过 4 MiB 的文件被跳过。只在部分目录有用的规则移到子目录 CLAUDE.md 或 .claude/rules/。HTML 注释 <!-- --> 不进入上下文,可用来给人看的维护说明。

确认是否加载

运行 /context,在 Memory files 下查看启动时加载的文件;子目录 CLAUDE.md 不在其中,加载时终端会出现 Loaded 行。/memory 可以直接打开编辑。/init 会根据代码生成初稿,已有文件时只提出修改建议。

压缩后还在吗

/compact 后项目根目录 CLAUDE.md 和无 paths 的规则会从磁盘重新注入;子目录 CLAUDE.md 和带 paths 的规则要等再次读写相关文件才回来;只在对话里说过的要求会被概括掉。必须一直有效的要求放在根目录 CLAUDE.md。

与 AGENTS.md 共存

目录中同时有 CLAUDE.md 和 AGENTS.md 时,默认只读 CLAUDE.md(2.1.277 起才直接读 AGENTS.md)。同时使用 Codex 的课题组,可以在 CLAUDE.md 里写一行 @AGENTS.md,两边维护同一份规则。

层级位置加载时机放什么
组织级macOS /Library/Application Support/ClaudeCode/CLAUDE.md;Linux /etc/claude-code/CLAUDE.md启动时管理员统一下发的规则
用户级~/.claude/CLAUDE.md启动时,所有项目个人习惯:回复语言、代码风格
项目级./CLAUDE.md 或 ./.claude/CLAUDE.md启动时目录约定、运行命令、统计约定,随仓库共享
本地级./CLAUDE.local.md(加入 .gitignore)启动时,排在同目录 CLAUDE.md 之后只属于你的路径、测试数据
上级目录启动目录之上每一层的 CLAUDE.md启动时多个课题共用的约定
子目录启动目录之下的 CLAUDE.mdClaude 读写该子目录中的文件时才加载只对某个子模块有效的规则
路径规则.claude/rules/*.md,frontmatter 写 paths匹配的文件被读写时加载只对 R 脚本、只对 notebook 等生效的规则
来源:官方 How Claude remembers your project。

第 4 步

权限模式决定哪些操作不用你确认;settings.json 中的规则在模式之上逐条放行或拦截。deny 规则在所有模式下都生效,包括 bypassPermissions。

课题组共用的 .claude/settings.json(本页用 claude doctor 校验通过)json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Bash(python scripts/*)",
      "Bash(Rscript scripts/*)",
      "Bash(git diff *)",
      "Bash(git status)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(pip install *)",
      "Bash(conda install *)"
    ],
    "deny": [
      "Edit(data/raw/**)",
      "Bash(rm -rf *)",
      "Read(./.env)"
    ]
  },
  "env": { "BASH_DEFAULT_TIMEOUT_MS": "600000" },
  "cleanupPeriodDays": 365
}
原始数据用文件系统权限兜底bash
# 原始数据设为操作系统级只读(本页实测:之后 Python 追加写入报 PermissionError,rm -f 报 Permission denied)
chmod -R a-w data/raw
# 需要更新原始数据时由你自己解除
chmod -R u+w data/raw

规则的判定顺序

先 deny,再 ask,最后 allow,命中即停,与写法的具体程度无关。Bash(git *) 的 deny 会挡住 Bash(git status) 的 allow。多个 settings 文件中的同名列表会合并,不会互相覆盖。

通配符的位置

* 放在子命令之后。Bash(git log *) 只放行 git log;Bash(git *) 放行所有 git 子命令,包括可以执行任意程序的 git -c。Bash(ls *) 不匹配 lsof,Bash(ls*) 会匹配。

路径写法

Edit(/data/**) 中单个斜杠相对于 settings 文件所在的项目,绝对路径要写 //home/me/data/**,家目录写 ~/。写在用户级 settings 中的 /secrets/** 指的是 ~/.claude/secrets。Write(...)、NotebookEdit(...) 形式的路径规则会被接受但从不生效,要写成 Edit(...)。

deny 管不到脚本

Read 和 Edit 规则作用于内置文件工具和 Claude Code 能识别的 cat、sed、tee、重定向,不作用于 Python、R 脚本内部的 open() 或 write.csv()。.claudeignore 文件没有任何作用。保护原始数据的可靠做法是 chmod -R a-w,加一个拦截写入的 PreToolUse hook。

放得过宽的实际后果

acceptEdits 会自动批准工作目录内的 rm;检查点(Esc Esc 或 /rewind)只回滚 Claude 用编辑工具改过的文件,不追踪 Bash 命令删除或移动的文件。官方的关键路径保护只拦截对根目录、家目录、工作目录本身的 rm,不保护工作目录下的 data/。

哪些设置只能放在用户级

defaultMode 设为 auto 或 bypassPermissions 时,写在项目 .claude/settings.json 或 settings.local.json 中不生效,要写在 ~/.claude/settings.json 或用 --permission-mode。本页实测 claude doctor 不会对这种写法报错。

模式无需确认即可执行科研场景的用法
default(界面中显示为 Manual)只读操作第一次接触陌生代码、处理敏感数据
acceptEdits读、编辑文件,以及工作目录内的 mkdir、touch、rm、rmdir、mv、cp、sed边改边用 git diff 审阅;原始数据必须另行保护
plan读文件、探索性命令;批准计划前不改源码改分析流程前先出方案;也可用 /plan 前缀单次进入
auto几乎所有操作,由另一个分类器模型在后台审查方向明确的长任务;2.1.283 起交互会话默认进入此模式
dontAsk只执行已在 allow 中放行的操作,其余直接拒绝无人值守的 claude -p 批处理和 CI
bypassPermissions全部(deny 规则、ask 规则和关键路径删除除外)只在无网络的容器或虚拟机中使用;以 root 或 sudo 运行时会拒绝启动
来源:官方 Choose a permission mode。Shift+Tab 在会话中循环切换,bypassPermissions 只在启动时用参数启用后才出现在循环里。

常用命令

旧教程中几条已失效的写法:claude config set 在 1.0.7 弃用、2.0.0 移除,改为编辑 settings.json 或用 /config(本页实测 2.1.296 的子命令列表中没有 config);以 # 开头快速写入记忆在 2.0.70 移除;/vim 在 2.1.92 移除,改在 /config 的 Editor mode 中设置;npm update -g 可能停留在旧版本,升级要用 npm install -g @anthropic-ai/claude-code@latest。

命令或按键作用使用要点
/init生成项目 CLAUDE.md 初稿已有文件时只提出修改建议
/context以网格显示上下文占用查看 Memory files、MCP 工具和对话各占多少
/compact [重点]概括对话以释放上下文附带重点,例如 /compact 保留参数表和最后的报错
/clear [名称]开始新对话不产生费用;之前的对话可以 /resume 找回
/resume、/rename恢复和命名会话先命名再 /clear,便于之后按名称恢复
/rewind(Esc Esc)回到之前的消息并可回滚代码不回滚 Bash 命令造成的改动
/model、/effort切换模型与推理强度/model 会保存为新会话的默认模型
/permissions、/config、/status管理规则、设置,查看账号与网关/status 是排查登录与网关问题的第一步
/usage用量与费用/cost、/stats 是别名
/memory、/hooks、/mcp、/skills管理对应扩展/agents 向导已在 2.1.198 移除,直接让 Claude 创建子 agent 或编辑 .claude/agents/
/export [文件名]导出当前对话为纯文本用于保存过程记录
/doctor会话内的配置体检/doctor prompt-audit 检查 CLAUDE.md 冲突与过时内容
Shift+Tab循环切换权限模式Windows 部分终端用 Alt+M
Esc中断当前回复或工具调用已完成的工作保留
Ctrl+O打开完整记录视图查看每次工具调用的细节和所用模型
Ctrl+B把正在运行的命令或子 agent 转入后台tmux 中按两次
Ctrl+G在外部编辑器中编辑提示或计划适合写长指令
! 开头直接执行 shell 命令,输出进入对话例如 !nvidia-smi
@ 开头引用文件路径带自动补全
\ + Enter 或 Ctrl+J输入换行所有终端可用
来源:官方 Commands 与 Interactive mode 文档,按 2.1.296 核对。

扩展

四者分工不同:子 agent 在独立上下文里完成一类任务;hook 在固定时点执行 shell 命令,结果不取决于模型判断;skill 是按需加载的操作步骤;MCP 接入外部工具和数据。

.claude/agents/stats-reviewer.md(统计审阅子 agent)markdown
---
name: stats-reviewer
description: Reviews analysis scripts and result tables for statistical errors. Use after an analysis script changes or before results go into a figure or manuscript.
tools: Read, Grep, Glob, Bash
model: sonnet
---

你是统计方法审阅者。检查:样本量与分组是否与 data/raw/metadata.csv 一致;多重比较是否校正;
随机种子是否固定;结果表中的数字能否由 scripts/ 中的脚本重新生成。只报告问题与证据,不修改文件。
.claude/hooks/protect-raw.sh(本页实测:写 data/raw 返回 2 并拦截,写 results 返回 0)bash
#!/bin/bash
# .claude/hooks/protect-raw.sh:拦截 Edit/Write 对 data/raw/ 的写入
# 退出码 2 表示阻止,stderr 内容会作为理由反馈给 Claude
INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
FILE_PATH="${FILE_PATH//\\//}"
if [[ "$FILE_PATH" == *"/data/raw/"* ]]; then
  echo "Blocked: $FILE_PATH is raw data (read-only). Write to data/processed/ or results/." >&2
  exit 2
fi
exit 0
在 .claude/settings.json 中注册 hook(先 chmod +x 脚本)json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-raw.sh" }
        ]
      }
    ]
  }
}
.claude/skills/run-analysis/SKILL.md(用 /run-analysis 03_de.py 调用)markdown
---
name: run-analysis
description: Run one analysis script reproducibly and log the environment. Use when the user asks to run or rerun an analysis.
disable-model-invocation: true
---

1. 记录 `git rev-parse --short HEAD`、`python --version` 与 `conda env export --no-builds` 到 logs/。
2. 用 `python scripts/$ARGUMENTS 2>&1 | tee logs/$(date +%Y%m%d-%H%M%S)-run.log` 运行。
3. 汇报输出文件路径与关键数字,不修改 data/raw/。
MCP 与格式检查bash
# 添加 MCP 服务器(默认 local 作用域,只对你在当前项目生效,写入 ~/.claude.json)
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
claude mcp add my-db -e DB_URL=postgres://... -- npx -y some-db-mcp
# 与课题组共享:写入项目根目录的 .mcp.json(队友首次运行 claude 时需要批准)
claude mcp add --scope project zotero -- npx -y zotero-mcp
claude mcp list            # 未批准的 .mcp.json 服务器显示为 Pending approval
# 检查 agent 与 skill 文件格式(本页实测:缺 description 只给 warning,但运行时会跳过该 agent)
claude plugin validate .claude/agents

子 agent 文件被静默跳过

frontmatter 缺 name、缺 description、YAML 无法解析,或开头的 --- 不在第一行,该文件都不会加载,会话中也不提示。用 claude plugin validate .claude/agents 检查,再用 claude --debug 看日志。子 agent 的系统提示只有文件正文和工作目录等环境信息,看不到主会话的对话,需要的背景写进正文或在委派时说明。

hook 比 CLAUDE.md 可靠

PreToolUse hook 返回 deny 或退出码 2,即使在 bypassPermissions 模式下也会拦截。hook 返回 allow 不能越过 settings 中的 deny 规则。PostToolUse 在工具执行之后运行,不能撤销操作。command 类 hook 默认超时 10 分钟。

MCP 配置不写在 settings.json

个人 MCP 服务器存在 ~/.claude.json,项目共享的存在项目根目录 .mcp.json。能用命令行工具(gh、aws)完成的事优先用命令行,MCP 服务器会占用上下文;用 /mcp 停用暂时不用的服务器。通过 ANTHROPIC_BASE_URL 使用网关时,MCP 工具搜索默认关闭,所有工具定义都会进入上下文。

skill 与 CLAUDE.md 的分工

每次都要遵守的事实写在 CLAUDE.md;多步骤的操作流程写成 skill,只在调用时加载。disable-model-invocation: true 表示只能由你用 /名称 调用。压缩后每个 skill 最多保留开头 5000 token,关键步骤放在 SKILL.md 前部。

脚本与会话

claude -p 批处理与会话恢复bash
# 单次运行,结果写成 JSON,便于脚本读取 result、session_id、total_cost_usd
claude -p "读取 results/03_de_genes.csv,列出 padj 最小的 20 个基因及其 log2FC" \
  --output-format json --permission-mode dontAsk --allowedTools "Read" \
  --max-turns 5 --max-budget-usd 0.50 < /dev/null > logs/summary.json
jq -r '.result' logs/summary.json

# 批量:每个样本一次独立运行,失败时退出码非 0
for s in S01 S02 S03; do
  claude -p "检查 data/processed/$s.h5ad 的细胞数、基因数和线粒体比例分布,写一段 QC 结论" \
    --permission-mode dontAsk --allowedTools "Read" "Bash(python scripts/qc_summary.py *)" \
    < /dev/null > logs/qc-$s.md || echo "$s failed" >> logs/failed.txt
done

# 会话恢复
claude --continue                 # 当前目录最近一次交互会话
claude --resume                   # 打开会话列表(Ctrl+A 显示本机所有项目)
claude --resume de-analysis       # 按名称恢复(会话中用 /rename de-analysis 命名)
claude -p --resume <session-id> "总结这次改了哪些参数" --output-format json | jq -r '.result'

先在目录里交互式运行一次

本页实测:在未信任的目录运行 claude -p,会输出 Ignoring 4 permissions.allow entries from .claude/settings.json: this workspace has not been trusted,项目中的 allow 规则全部不生效,而同一 settings 文件中的 env 仍然生效。新克隆的仓库或集群上的新目录,先运行一次 claude 接受信任对话框。

stdin 与退出码

stdin 不是终端时,claude -p 会等待 3 秒并打印 Warning: no stdin data received in 3s,脚本中加 < /dev/null。未登录时 stdout 输出 Not logged in · Please run /login,退出码为 1(本页实测)。-p 模式下校验失败的 settings 文件会被静默忽略,批处理前先跑 claude doctor。

-p 的会话不在列表里

claude -p 创建的会话不出现在 claude --resume 的列表中,claude --continue 也不会选中它们;用 --output-format json 返回的 session_id 配合 claude --resume <id> 继续。恢复会话时 --mcp-config、--add-dir、--settings 等启动参数需要重新传入。

-p 的起始权限模式

claude -p 的起始模式随版本和是否拉取 feature flag 而变化,可能是 default,也可能是 auto。脚本中显式写 --permission-mode dontAsk 加 --allowedTools 白名单,结果最可预期。

上下文

  1. 01

    先看占用

    /context 显示系统提示、Memory files、MCP 工具和对话各占多少。启动时就占了一大块,说明 CLAUDE.md、skill 或 MCP 太多,需要精简。

  2. 02

    换任务就 /clear

    与当前任务无关的旧对话在每次请求中都会被重新计费。换任务前用 /rename 命名,再 /clear;/clear 本身不产生费用,/compact 会读取整段对话,大上下文时本身就是一次大请求。

  3. 03

    压缩时指定保留内容

    /compact 保留参数表、最后一次报错和尚未完成的步骤。也可以在 CLAUDE.md 中写一节 # Compact instructions 说明压缩时保留什么。/autocompact 300000 可以让自动压缩提前触发。

  4. 04

    大数据文件不要整读

    让 Claude 用 head、wc -l、pandas 的 nrows 或 df.info() 看结构,不要读整个 CSV。一次读入过大的输出会触发 Autocompact is thrashing:压缩后立刻又被填满,Claude Code 停止重试。处理办法是分段读取,或把大文件的处理交给子 agent,在它的独立上下文中完成。

  5. 05

    命令输出的上限

    Bash 输出默认只有约 30000 字符直接进入上下文,超过的部分存为文件,Claude 按需读取;失败的命令只保留约 10000 字符的首尾。冗长的日志先 grep 或 tail 再交给 Claude。

科研经验

科研任务的特点是运行时间长、原始数据不可再生、结果要能复现。以下做法针对这三点。

长任务的启动方式bash
# 让 Claude 启动长任务时用这种写法:任务独立于 Claude 的进程,日志落盘
nohup python scripts/05_train.py --config configs/run3.yaml \
  > logs/run3-$(date +%Y%m%d-%H%M).log 2>&1 &
echo $! > logs/run3.pid
# HPC 上提交到调度器,不在登录节点上跑
sbatch scripts/05_train.slurm
# 之后让 Claude 读 tail -n 50 logs/run3-*.log 汇报进度,而不是在前台等待
  1. 01

    先用 plan 模式确认方案

    改分析流程前用 Shift+Tab 进入 plan 模式,或在提示前加 /plan。Claude 只读文件、写计划;用 Ctrl+G 在编辑器里改计划,确认后再执行。计划文件在压缩后会从磁盘重新注入,适合作为长任务的提纲。

  2. 02

    长任务与 Claude 的进程分开

    Bash 工具前台命令默认 2 分钟超时、最长 10 分钟,超时后转入后台;本地交互会话中的后台命令不限时,但 claude -p 中默认 10 分钟、最长 2 小时后被停止。模型训练、分子模拟这类任务用 nohup 或 sbatch 启动,日志写入文件,让 Claude 读日志汇报。

  3. 03

    在启动 claude 之前激活环境

    每条 Bash 命令在独立进程中执行,export 设置的环境变量不会保留到下一条命令,所以 Claude 在会话中途执行的 conda activate 只对那一条命令有效。先 conda activate 再运行 claude;需要额外变量时用 CLAUDE_ENV_FILE 指定一个启动脚本。

  4. 04

    保存过程记录

    会话记录以 JSONL 存在 ~/.claude/projects/<目录名>/,默认 30 天后静默删除。需要留档的课题在 settings.json 中把 cleanupPeriodDays 调大(例如 365),关键会话用 /export 导出为文本,与 logs/ 中的运行日志一起提交到仓库。

  5. 05

    让结果可复现

    在 CLAUDE.md 中要求结果中的数字必须由脚本生成、随机种子固定、参数变更写入参数表;在 skill 中固定运行方式(记录 git 提交号与 conda env export)。交付前让 stats-reviewer 这类子 agent 单独审一遍。

  6. 06

    控制费用

    状态栏可以配置显示上下文占用和费用(/statusline)。日常用 Sonnet,复杂规划再切 Opus;简单的子 agent 指定 model: haiku。每个独立问题开新会话,长会话即使只问一句也按整段上下文计费。批处理加 --max-budget-usd。

中文社区经验

以下经验来自 CSDN、阿里云开发者社区的实操帖,均与官方文档或本页实测对照过,并标出适用条件和需要修正之处。

首次运行卡在 Unable to connect to Anthropic services

三位作者独立报告(CSDN,2026 年 3–6 月):使用中转时首次运行报 Failed to connect to api.anthropic.com: ERR_BAD_REQUEST,在 ~/.claude.json 中加 "hasCompletedOnboarding": true 后可以进入。官方文档说明首次向导会探测 api.anthropic.com 和 platform.claude.com。修正:用编辑器添加这个键,不要用 cat > ~/.claude.json 覆盖整个文件,该文件还保存项目信任、OAuth 和个人 MCP 服务器;这个键写进 settings.json 无效,本页实测 claude doctor 也不提示。

requires git-bash 报错

CSDN 作者在 Windows 上遇到 Claude Code on Windows requires git-bash,设置 CLAUDE_CODE_GIT_BASH_PATH 后解决。当前版本在没有 Git for Windows 时改用 PowerShell,报错原文变为 requires either Git for Windows (for bash) or PowerShell,只在两者都不可用时出现。

第三方模型报 thinking type should be enabled or disabled

阿里云社区帖给出的原因(上游不支持 adaptive thinking)与官方故障表一致,但文中把变量写成小写 claude_code_disable_adaptive_thinking,环境变量区分大小写,应为 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING;官方说明它只对 Opus 4.6 和 Sonnet 4.6 生效。

无 root 的实验室服务器

CSDN 帖用 nvm 装 Node 再 npm 安装,在无 root 服务器上可行。原生安装脚本本身就装在 ~/.local/bin,不需要 Node 和 root。同一帖把 ANTHROPIC_DEFAULT_HAIKU_MODEL 指向已退役的 claude-3-5-haiku,这个模型还用于后台任务,应改为网关当前提供的模型。

把“删除前先问我”写进 CLAUDE.md

多篇教程把删除文件、git push 等写成 CLAUDE.md 中的“红线”。官方说明 CLAUDE.md 是上下文而非强制配置,GitHub #2544 也记录了此类规则被忽略的情况。这类要求应写成 settings.json 的 ask 或 deny 规则,或 PreToolUse hook。

报错

排查顺序:claude --version 确认版本;claude doctor 检查安装与 settings 文件;会话内 /status 确认账号、网关和生效的配置文件;仍无法定位时用 claude --debug 启动,日志在 ~/.claude/debug/ 下;怀疑是自定义配置导致时用 claude --safe-mode 启动对照。

报错原文原因处理
command not found: claude / 'claude' is not recognized安装目录不在 PATH,或仍在安装前打开的终端里开新终端;把 ~/.local/bin(Windows 为 %USERPROFILE%\.local\bin)加入 PATH
syntax error near unexpected token '<'安装地址返回了网页而不是脚本,常见于网络路由或地区限制稍后重试,或改用 brew / winget;输出中有 App unavailable in region 表示所在地区不在支持列表
curl: (22) ... error: 403代理或防火墙拦截下载,或地区限制检查到 downloads.claude.ai 的连通性和代理设置
Killed(Linux 安装时)内存不足官方最低 4 GB 内存;释放内存或加 swap 后重装
Bus error / oh no: Bun has crashed运行中的可执行文件被删除或截断,多见于 NFS 共享 home二进制装在本地磁盘,关闭自动更新统一升级
OAuth error: Invalid code登录代码过期或复制不完整重新 /login,在浏览器打开后尽快粘贴
API Error: 403 Request not allowed订阅未生效、Console 账号缺 Claude Code 角色,或代理干扰检查 claude.ai/settings 的订阅状态;Console 账号请管理员分配 Developer 或 Claude Code 角色
Not logged in · Please run /login没有任何可用凭据/login,或设置 ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN
Unable to connect to API (ECONNREFUSED / ENOTFOUND / ERR_PROXY_TUNNEL)网络不通、代理未设置,或 ANTHROPIC_BASE_URL 残留了已失效的地址curl -I https://api.anthropic.com 测试;echo $ANTHROPIC_BASE_URL 检查残留;WSL 检查 /etc/resolv.conf
You've hit your session limit · resets 3:45pm订阅额度用完等待重置;/usage 查看;Opus 或 Sonnet 单独额度用完时用 /model 换家族
Context limit reached · /compact or /clear to continue对话加附件超过上下文窗口/compact 并指定保留内容;不需要旧对话时 /clear
Autocompact is thrashing某个大文件或大输出在压缩后立刻又填满上下文分段读取;把大文件处理交给子 agent;/compact 时丢弃大输出
Claude Opus is not available with the Claude Pro plan套餐不含所选模型,或升级后令牌未刷新/model 换模型;刚升级则 /logout 再 /login
--dangerously-skip-permissions cannot be used with root/sudo privileges以 root 运行 bypass 模式用普通用户运行,或在官方 dev container 中运行
Claude Code on Windows requires either Git for Windows (for bash) or PowerShell两种 shell 都找不到安装 Git for Windows,或设置 CLAUDE_CODE_GIT_BASH_PATH
来源:官方 Troubleshoot installation and login、Error reference、Choose a permission mode;GitHub issue。

交给 Agent

指令示例:“这是我的分析仓库。请先只读浏览代码和 data/README.md,按本页的目录约定写一份 CLAUDE.md 和 .claude/settings.json,把 data/raw 设为只读;然后用 scripts/ 中的流程从原始计数重跑差异表达分析,长步骤后台运行并写日志,最后给出结果表、图和一份参数与环境记录。”

智能体会执行的步骤:在隔离云电脑中克隆仓库并按 environment.yml 建环境;先出计划,再生成 CLAUDE.md 与权限配置;需要 GPU 时按任务自动租用,长步骤后台运行并读取日志汇报;对结果做对抗审阅,核对样本分组、多重比较校正和随机种子。

产出文件:CLAUDE.md、.claude/settings.json、每一步的运行日志、results/ 中的表格与图、记录 git 提交号与 conda 环境的复现说明。关闭本机后任务继续运行。

你仍需自己核对:统计方法是否适合你的实验设计,分组与协变量是否与样本信息一致,以及阈值和参数是否与课题组此前的分析口径相同。

检查清单

  • claude --version 不低于你所依赖功能的版本要求;集群上二进制在本地磁盘
  • /status 显示的是你预期的账号或网关,没有残留的 ANTHROPIC_API_KEY
  • 项目根目录有 CLAUDE.md,写明目录约定、运行命令、随机种子和统计约定,200 行以内
  • data/raw 已 chmod -R a-w,settings.json 中有 Edit(data/raw/**) 的 deny 规则
  • 需要确认的操作(git push、安装依赖)写成 ask 规则,没有用 bypassPermissions
  • cleanupPeriodDays 已调大,logs/ 目录存在,关键会话会用 /export 保存
  • 批处理脚本使用 --permission-mode dontAsk、--allowedTools 白名单、< /dev/null 和 --max-budget-usd,并已在该目录交互式运行过一次 claude
  • 长任务用 nohup 或 sbatch 启动,Claude 只负责读日志

资料来源

常见问题

Claude Code 免费版能用吗?

不能。官方说明 Claude Code 需要 Pro、Max、Team、Enterprise 订阅或 Console 账号,免费的 claude.ai 计划不含 Claude Code。按量付费可以用 Console 的 API Key。

Claude Code 价格多少,订阅和 API 哪个划算?

Pro 月付 20 美元(年付折合 17 美元/月),Max 每月 100 美元起;API 的 Sonnet 5.5 为每百万 token 输入 2 美元、输出 10 美元。官方统计企业用户平均每个活跃日约 13 美元,每天都用几个小时选订阅更划算,偶尔使用或用于脚本选 API。

国内怎么用 Claude Code?

操作上有三种接入:官方账号登录;通过网关,在 ~/.claude/settings.json 的 env 中设置 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN;或改用国产模型。各方案的费用、模型来源和风险对比见《国内怎么用 Codex 和 Claude Code》。代理只能用 HTTP 代理,Claude Code 不支持 SOCKS。

CLAUDE.md 写了规则,Claude 为什么不遵守?

CLAUDE.md 以用户消息的形式进入上下文,不是强制配置。先用 /context 确认文件已加载,再检查不同层级之间有没有矛盾的要求。必须遵守的限制改写为 settings.json 的 ask、deny 规则或 PreToolUse hook。

Claude Code 现在为什么不再每一步都问我?

2.1.283 起,交互式终端和 VS Code 会话在没有配置权限模式时默认进入 auto 模式,由分类器模型审查操作。想恢复逐项确认,按 Shift+Tab 切到 Manual,或在 ~/.claude/settings.json 中设置 permissions.defaultMode 为 default。

关掉终端后怎么接着上次的对话?

在同一目录运行 claude --continue 回到最近一次会话,或 claude --resume 打开会话列表。claude -p 创建的会话不在列表中,要用其 session_id 运行 claude --resume <id>。会话记录默认保留 30 天。

把长时间运行的科研计算交给 Scientify

科学智能体在隔离云电脑中运行,预装分子模拟、生物信息和 AI 计算环境;需要 GPU 时按任务自动租用,关闭本机后任务继续,代码、参数、日志和结果保留在工作区中。同等模型用量价格约为标准 API 的 30%,新注册用户免费获得 5 美元等值额度。