第 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)。
# 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 |
| Homebrew | brew install --cask claude-code | 否,brew upgrade | macOS 已用 brew 管理软件 | claude-code 跟 stable 通道,claude-code@latest 跟 latest 通道 |
| WinGet | winget install Anthropic.ClaudeCode | 否,winget upgrade | Windows 原生 | 运行中升级可能因文件被占用失败 |
| npm | npm 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 里看 diff | VS Code 插件的起始权限模式读插件自己的设置,不读项目 settings |
| Web 云端会话 | claude.ai/code | 不需要 | 长任务、离线后继续 | 只能用订阅账号,需要连接 GitHub 仓库;本地设置的 API Key 不生效 |
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 Key | export ANTHROPIC_API_KEY=...,交互模式下首次要确认使用 | 按 token 计费,见下文价格表 | 提示缓存默认 5 分钟;/usage 显示的美元数按列表价本地估算 |
| 网关或中转(ANTHROPIC_BASE_URL) | ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY | 按网关方规则 | 不能用 Remote Control;MCP 工具搜索默认关闭;模型名需要用环境变量映射 |
| Bedrock / Agent Platform / Foundry | CLAUDE_CODE_USE_BEDROCK=1 等,或在登录页选 3rd-party platform | 按云厂商账单 | auto 模式只支持 Sonnet 5、Opus 4.7 及以上等较新模型 |
| 长期令牌 | claude setup-token 生成一年期令牌,设为 CLAUDE_CODE_OAUTH_TOKEN | 订阅 | 用于 CI 和无浏览器的服务器;--bare 模式不读它 |
国内使用
国内使用的方案选择(官方订阅、中转、国产模型、云端环境)见《国内怎么用 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 里 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 两行{
"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 token | AUTH_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 证书文件 |
价格
每天用几个小时选订阅;偶尔用、用在脚本或 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 | 最强档 |
第 3 步
CLAUDE.md 是每次会话开始时读入的说明文件。它影响 Claude 怎么做,不限制 Claude 能做什么;必须遵守的限制写成权限规则或 hook。
# 项目:单细胞数据的差异表达分析
## 目录约定
- 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.md | Claude 读写该子目录中的文件时才加载 | 只对某个子模块有效的规则 |
| 路径规则 | .claude/rules/*.md,frontmatter 写 paths | 匹配的文件被读写时加载 | 只对 R 脚本、只对 notebook 等生效的规则 |
第 4 步
权限模式决定哪些操作不用你确认;settings.json 中的规则在模式之上逐条放行或拦截。deny 规则在所有模式下都生效,包括 bypassPermissions。
{
"$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
}# 原始数据设为操作系统级只读(本页实测:之后 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 运行时会拒绝启动 |
常用命令
旧教程中几条已失效的写法: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 | 输入换行 | 所有终端可用 |
扩展
四者分工不同:子 agent 在独立上下文里完成一类任务;hook 在固定时点执行 shell 命令,结果不取决于模型判断;skill 是按需加载的操作步骤;MCP 接入外部工具和数据。
---
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/ 中的脚本重新生成。只报告问题与证据,不修改文件。#!/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{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-raw.sh" }
]
}
]
}
}---
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 服务器(默认 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 前部。
脚本与会话
# 单次运行,结果写成 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 白名单,结果最可预期。
上下文
- 01
先看占用
/context 显示系统提示、Memory files、MCP 工具和对话各占多少。启动时就占了一大块,说明 CLAUDE.md、skill 或 MCP 太多,需要精简。
- 02
换任务就 /clear
与当前任务无关的旧对话在每次请求中都会被重新计费。换任务前用 /rename 命名,再 /clear;/clear 本身不产生费用,/compact 会读取整段对话,大上下文时本身就是一次大请求。
- 03
压缩时指定保留内容
/compact 保留参数表、最后一次报错和尚未完成的步骤。也可以在 CLAUDE.md 中写一节 # Compact instructions 说明压缩时保留什么。/autocompact 300000 可以让自动压缩提前触发。
- 04
大数据文件不要整读
让 Claude 用 head、wc -l、pandas 的 nrows 或 df.info() 看结构,不要读整个 CSV。一次读入过大的输出会触发 Autocompact is thrashing:压缩后立刻又被填满,Claude Code 停止重试。处理办法是分段读取,或把大文件的处理交给子 agent,在它的独立上下文中完成。
- 05
命令输出的上限
Bash 输出默认只有约 30000 字符直接进入上下文,超过的部分存为文件,Claude 按需读取;失败的命令只保留约 10000 字符的首尾。冗长的日志先 grep 或 tail 再交给 Claude。
科研经验
科研任务的特点是运行时间长、原始数据不可再生、结果要能复现。以下做法针对这三点。
# 让 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 汇报进度,而不是在前台等待- 01
先用 plan 模式确认方案
改分析流程前用 Shift+Tab 进入 plan 模式,或在提示前加 /plan。Claude 只读文件、写计划;用 Ctrl+G 在编辑器里改计划,确认后再执行。计划文件在压缩后会从磁盘重新注入,适合作为长任务的提纲。
- 02
长任务与 Claude 的进程分开
Bash 工具前台命令默认 2 分钟超时、最长 10 分钟,超时后转入后台;本地交互会话中的后台命令不限时,但 claude -p 中默认 10 分钟、最长 2 小时后被停止。模型训练、分子模拟这类任务用 nohup 或 sbatch 启动,日志写入文件,让 Claude 读日志汇报。
- 03
在启动 claude 之前激活环境
每条 Bash 命令在独立进程中执行,export 设置的环境变量不会保留到下一条命令,所以 Claude 在会话中途执行的 conda activate 只对那一条命令有效。先 conda activate 再运行 claude;需要额外变量时用 CLAUDE_ENV_FILE 指定一个启动脚本。
- 04
保存过程记录
会话记录以 JSONL 存在 ~/.claude/projects/<目录名>/,默认 30 天后静默删除。需要留档的课题在 settings.json 中把 cleanupPeriodDays 调大(例如 365),关键会话用 /export 导出为文本,与 logs/ 中的运行日志一起提交到仓库。
- 05
让结果可复现
在 CLAUDE.md 中要求结果中的数字必须由脚本生成、随机种子固定、参数变更写入参数表;在 skill 中固定运行方式(记录 git 提交号与 conda env export)。交付前让 stats-reviewer 这类子 agent 单独审一遍。
- 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 |
交给 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 Docs:Advanced setup — 安装路线、自动更新、npm 的 Node 版本要求、NFS 上的 Bus error、Windows 原生与 WSL 对照
- Claude Code Docs:Authentication — 账号类型、凭据优先级、凭据存储位置、setup-token
- Claude Code Docs:Connect Claude Code to an LLM gateway — ANTHROPIC_BASE_URL 与凭据变量写法、curl 验证、网关故障表
- Claude Code Docs:Environment variables — 超时、重试、上下文窗口、模型映射等变量的含义与默认值
- Claude Code Docs:Network configuration — HTTPS_PROXY、不支持 SOCKS、需要放行的域名
- Claude Code Docs:How Claude remembers your project — CLAUDE.md 层级、加载顺序、@ 导入、AGENTS.md、长度建议
- Claude Code Docs:Choose a permission mode — 六种模式、auto 默认起始模式、受保护路径与关键路径
- Claude Code Docs:Configure permissions — 规则判定顺序、通配符、路径写法、Read/Edit 规则的作用范围
- Claude Code Docs:Settings files and precedence — 四个 settings 文件的作用范围与优先级、只能在用户级设置的值
- Claude Code Docs:Commands 与 Interactive mode — 斜杠命令与快捷键,已移除的命令
- Claude Code Docs:Create custom subagents — 子 agent 文件格式与被静默跳过的情形
- Claude Code Docs:Automate actions with hooks — PreToolUse 拦截脚本、hook 与权限模式的关系
- Claude Code Docs:Run Claude Code programmatically — claude -p、输出格式、后台任务等待、无人值守参数
- Claude Code Docs:Manage sessions — --resume / --continue、会话记录位置与 30 天保留期
- Claude Code Docs:Tools reference — Bash 超时、后台命令时限、输出上限、环境激活
- Claude Code Docs:Explore the context window — 压缩后保留和丢失的内容
- Claude Code Docs:Manage costs effectively — 平均花费、缓存寿命、长会话用量上升的原因
- Claude Code Docs:Troubleshoot installation and login 与 Error reference — 报错原文与处理方法
- Claude Code Docs:Changelog — claude config、/agents 向导、# 快捷记忆等命令的移除版本
- Claude 定价页 — Free、Pro、Max 价格与是否含 Claude Code
- Claude API Pricing — 各模型每百万 token 价格
- GitHub anthropics/claude-code #12507 — HPC 计算节点上启动即退出,2.1.76 修复
- GitHub anthropics/claude-code #4928 — Windows 上生成 nul 文件
- GitHub anthropics/claude-code #2544 — CLAUDE.md 中的强制规则被忽略
- 经验帖:CSDN《解决 Claude Code 初次引导未完成的问题》 — hasCompletedOnboarding 与报错原文,另有两位作者给出相同做法
- 经验帖:CSDN《无 Root 权限远程服务器配置 Claude Code》 — 无 root 服务器部署思路;文中退役模型与覆盖 ~/.claude.json 的写法需修正
- 经验帖:CSDN《claude --version 报错 requires git-bash》 — Windows 上设置 CLAUDE_CODE_GIT_BASH_PATH
- 经验帖:阿里云开发者社区《Claude Code 国内安装》 — 第三方模型 adaptive thinking 报错;变量名大小写需修正