Anthropic 官方终端 AI 编程代理 —— 从安装、日常交互、权限与记忆系统,到 Skills、Hooks、子代理、MCP、无头模式与 Agent SDK,每项能力附具体操作教程与可复制示例。
Claude Code 是 Anthropic 官方的终端 AI 编程代理(agentic coding tool)。它不是聊天窗口,而是一个能直接在你的电脑上读写文件、执行命令、搜索代码、操作 Git、调用外部服务的智能体。你用自然语言描述目标,它自己规划步骤、调用工具、验证结果。
claude -p 可嵌入脚本和 CI;Hooks 在关键节点强制执行 lint / 校验;定时任务可跑例行工作。macOS 13+ / Windows 10 1809+ / Ubuntu 20.04+ / Debian 10+,4GB 内存以上,需联网。Shell 支持 Bash / Zsh / PowerShell / CMD。
# 方式1:官方安装器(推荐,自带自动更新)—— macOS / Linux / WSL
curl -fsSL https://claude.ai/install.sh | bash
# Windows PowerShell
irm https://claude.ai/install.ps1 | iex
# 方式2:Homebrew(macOS)
brew install --cask claude-code
# 方式3:npm
npm install -g @anthropic-ai/claude-code
# 验证安装 + 健康检查
claude --version
claude doctor
claude,首次运行会打开浏览器完成 OAuth 授权,无需 API Key,用量计入订阅额度。export ANTHROPIC_API_KEY=sk-ant-xxx,按 token 计费。也支持走 Amazon Bedrock / Google Vertex / Microsoft Foundry(设置 CLAUDE_CODE_USE_BEDROCK=1 等环境变量)。# CI / 脚本用:生成一年期长效 token
claude setup-token
export CLAUDE_CODE_OAUTH_TOKEN=<生成的token>
cd 你的项目目录
claude # 进入交互式会话
# 会话里直接说人话:
> 这个项目是做什么的?入口在哪?
> 给 src/auth.ts 加上登录失败次数限制,并补测试
> 跑一下测试,失败的话修到通过为止
它会自动读文件、搜代码、提出修改;每次要写文件或跑命令时弹出确认,你按回车批准或拒绝。
| 参数 | 示例 | 说明 |
|---|---|---|
-p, --print | claude -p "总结这个项目" | 非交互模式:输出结果后退出,适合脚本 |
-c, --continue | claude -c | 继续最近一次对话 |
--resume <id> | claude --resume abc123 | 恢复指定会话 |
--model | claude --model opus | 指定模型(opus / sonnet / haiku / fable) |
--permission-mode | claude --permission-mode plan | 以指定权限模式启动 |
--allowedTools | --allowedTools "Read,Edit,Bash" | 预批准工具列表(无头模式常用) |
--output-format | -p --output-format json | 输出 text / json / stream-json |
--add-dir | --add-dir ~/other-repo | 授予当前目录之外的目录访问权 |
--max-budget-usd | -p --max-budget-usd 5 | 为本次运行设花费上限 |
--bare | claude --bare -p "..." | 裸模式:禁用 hooks / skills / MCP / 记忆,快速启动 |
| 前缀 | 作用 | 示例 |
|---|---|---|
/ | 打开斜杠命令 / skill 菜单 | /model、/compact |
! | 直接执行 shell 命令,输出进入对话 | ! npm test |
@ | 文件引用自动补全(可带行号) | @src/auth.ts#1-50 |
# | 快速把一句话存进记忆(CLAUDE.md) | # 本项目一律用 pnpm |
| 快捷键 | 功能 |
|---|---|
| Esc | 随时打断 Claude(已完成的工作保留) |
| Esc Esc | 输入为空时双击:打开 Rewind 回滚菜单(见第 15 节) |
| Shift+Tab | 循环切换权限模式(default → acceptEdits → plan → …) |
| Ctrl+R | 反向搜索历史输入 |
| Ctrl+O | 展开 Transcript 视图,看工具调用细节 |
| Ctrl+T | 显示 / 隐藏 Claude 的待办任务列表 |
| Ctrl+B | 把当前长任务丢到后台继续跑 |
| Ctrl+V / Cmd+V | 粘贴剪贴板里的截图 / 图片给 Claude 看 |
| Ctrl+G | 调用外部编辑器写长 prompt |
| Ctrl+L | 重绘屏幕 |
| Ctrl+C×2 / Ctrl+D | 退出 |
行尾 \ + 回车(所有终端通用);或 Shift+Enter(iTerm2 / Warp / Ghostty / Windows Terminal 等);或 Ctrl+J。
在 /config 里把 Editor mode 设为 vim,输入框即支持 NORMAL / INSERT / VISUAL 模式,h j k l、dd、ciw 等常用操作可用。
会话中输入 / 即可唤出菜单。以下按用途分组,均可输入 /help <命令名> 查看详情。
| 命令 | 作用 |
|---|---|
/clear | 清空对话开新会话(记忆保留)。可命名:/clear 调试会话 |
/compact [指示] | 把长对话压缩成摘要释放上下文,如 /compact 只保留代码改动 |
/context | 可视化当前上下文窗口被什么占用了多少 token |
/resume | 交互式选择并恢复历史会话 |
/rewind | 打开回滚菜单,回退代码 / 对话到某个检查点 |
/rename | 给当前会话命名,方便日后 resume |
/export | 把对话导出为文本文件 |
/cd / /add-dir | 切换工作目录 / 增加可访问目录 |
| 命令 | 作用 |
|---|---|
/model | 切换模型:/model opus、/model sonnet、/model haiku |
/effort | 调思考深度:low / medium / high / xhigh / max |
/fast | 切换 Fast 模式(Opus 更快输出,不降级模型) |
/plan | 进入计划模式:先出方案、批准后再动手 |
| 命令 | 作用 |
|---|---|
/config | 交互式设置面板(主题 / vim 模式 / 默认模型等) |
/permissions | 查看与编辑权限规则 |
/status / /usage / /cost | 会话状态 / 用量与配额 / 花费 |
/doctor | 诊断安装与配置问题 |
/login / /logout | 切换账号 / 登出 |
/memory | 编辑 CLAUDE.md 与自动记忆 |
/statusline | 自定义底部状态栏 |
| 命令 | 作用 |
|---|---|
/init | 扫描项目自动生成 CLAUDE.md |
/review | 审查一个 GitHub PR |
/code-review [级别] | 审查当前分支改动,如 /code-review high;ultra 级别启动多代理云审查 |
/security-review | 对当前改动做安全审查 |
/simplify | 对改动做简化 / 复用 / 效率清理(不找 bug) |
/diff | 查看当前改动 diff |
| 命令 | 作用 |
|---|---|
/mcp | 管理 MCP 服务器(连接 / 认证 / 启停) |
/agents | 查看与管理子代理定义 |
/ide | 把终端会话接到 IDE(diff 在 IDE 里看) |
/plugins | 安装 / 管理插件 |
/loop | 定时重复执行某个命令,如 /loop 5m /check |
/tasks | 查看后台任务与子代理运行状态 |
CLAUDE.md 是每次会话开始时自动加载的"项目说明书",用来告诉 Claude 你的规范和习惯;自动记忆(Auto-Memory)则是 Claude 自己跨会话记笔记。
| 位置 | 作用域 |
|---|---|
~/.claude/CLAUDE.md | 用户级 —— 你的所有项目 |
./CLAUDE.md | 项目级 —— 提交 git 全队共享 |
./CLAUDE.local.md | 本地个人配置(加 .gitignore) |
子目录 CLAUDE.md | 进入该目录工作时按需加载 |
# 1. 在项目根目录运行,自动扫描生成初版
/init
# 2. 工作中随手补充 —— # 前缀一句话入库
# 测试一律用 vitest,不要用 jest
# 3. 定期整理
/memory # 打开编辑界面
# 项目概览
- TypeScript + React,pnpm monorepo
# 构建与测试
- 构建:pnpm build 测试:pnpm test Lint:pnpm lint
# 代码规范
- 2 空格缩进;用 async/await 不用裸 Promise
- API handler 统一放 src/api/handlers/
# 引用其他文档(@ 导入语法,启动时自动展开,最多递归4层)
@docs/git-workflow.md
@README.md
.claude/rules/*.md 目录,并用 frontmatter 的 paths: 让规则只在匹配的文件上生效。Claude 会把跨会话有用的事实(调试结论、你的偏好、项目约束)写进 ~/.claude/projects/<项目>/memory/,其中索引文件 MEMORY.md 每次开新会话自动载入。无需配置,可在 /memory 或 settings 里关闭。
Claude Code 的安全基石:每个工具调用都要经过权限规则。规则写在 settings.json 里,支持用户级、项目级、项目本地级、企业管控级四层。
--settings.claude/settings.local.json(项目·个人,gitignore).claude/settings.json(项目·团队共享)~/.claude/settings.json(用户全局){
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run lint)", // 精确匹配
"Bash(npm test *)", // 前缀通配
"Bash(git diff *)"
],
"deny": [
"Read(./.env)", // 保护密钥文件
"Read(./secrets/**)",
"Bash(curl *)"
]
},
"env": { "NODE_ENV": "development" },
"model": "claude-sonnet-5"
}
规则语法为 工具名(模式):Bash(git commit *) 放行所有 git commit;Edit(src/**) 允许编辑 src 下所有文件;Read(~/.ssh/*) 可用于 deny 保护敏感路径。
/permissions 直接编辑;也可以让 Claude 自己帮你改 settings("把 npm 命令加进允许列表")。| 模式 | 免确认范围 | 适用场景 |
|---|---|---|
| default | 只读操作 | 敏感项目、初学阶段 |
| acceptEdits | 读 + 文件编辑 + 常规文件命令 | 日常迭代自己的代码 |
| plan | 只读 + 出方案,不改任何东西 | 大改动前先看计划 |
| auto | 基本全部(有独立安全分类器兜底) | 长任务、减少打断(需较新模型与订阅) |
| dontAsk | 仅预批准工具,其余直接拒绝 | CI 里跑确定性脚本 |
| bypassPermissions | 全部放行,无检查 | 只能在隔离容器 / VM 里用 |
claude --permission-mode plan # 或会话内 Shift+Tab 切到 plan
> 把项目的鉴权从 session 改成 JWT,先给我完整方案
# Claude 只读代码 → 输出分步计划(改哪些文件、什么顺序、风险点)
# 你批准后它自动切回可执行模式开始动手;不满意就继续讨论方案
.git/、.claude/、.env.local、.zshrc 等受保护路径在任何自动模式下都不会被免确认修改。bypassPermissions 请只在一次性容器里使用。Skills 是可复用的工作流包:平时不占上下文,输入 /名字 调用(或 Claude 判断相关时自动加载)。适合把团队的固定流程(审片、发布、部署、review 清单)固化成一条命令。
# 目录结构
.claude/skills/
└── deploy/
├── SKILL.md # 技能定义
└── checklist.md # 附属资料(按需被读取)
---
description: "部署当前项目到 staging,含构建、检查、通知全流程"
---
# Deploy 流程
1. 运行 `pnpm build`,失败则停止并报告
2. 运行 `pnpm test`,全绿才继续
3. 执行 `./scripts/deploy-staging.sh`
4. 部署后 curl 健康检查接口,贴出结果
5. 按 @checklist.md 逐项确认
## 注意
- 永远不部署 main 以外的分支到 production
- 部署失败时收集最近 50 行日志一并报告
# 使用
/deploy
# 无头模式同样可用:
claude -p "/deploy" --allowedTools "Bash,Read"
Hooks 是在生命周期节点必定执行的 shell 命令 —— 不依赖模型"记得做",适合强制 lint、格式化、审计、拦截危险命令。
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
PreToolUse | 工具执行前 | 校验 / 拦截 / 改写命令 |
PostToolUse | 工具执行后 | 编辑后自动 lint、格式化 |
Stop | Claude 结束回合前 | 收尾检查、通知 |
SessionStart / SessionEnd | 会话启停 | 环境检查、清理 |
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "npm run lint --silent" }
]
}
]
}
}
#!/bin/bash
# hook 从 stdin 收到 JSON,含 tool 与 tool_input
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command // empty')
if [[ "$cmd" == *"rm -rf /"* ]]; then
echo '{"hookSpecificOutput":{"permissionDecision":"deny","reason":"危险命令已拦截"}}'
exit 0
fi
echo "{}"
hook 输出 JSON 可以三选一:放行(allow)、拒绝(deny + 理由)、改写输入(updatedInput)。配置可放用户级或项目级 settings。想让 Claude 帮你配,直接说"每次改完文件自动跑 prettier"即可。
子代理是运行在独立上下文里的专职 Claude 实例:主会话把任务委派出去,只收回结论摘要 —— 既能并行加速,又避免海量搜索结果污染主上下文。
# .claude/agents/code-reviewer.md
---
name: code-reviewer
description: 专职代码审查,检查 bug 与最佳实践
tools: Read, Grep, Glob
model: sonnet # 可选:给简单任务配便宜模型
---
你是资深代码审查员。只读不改,输出:问题列表(带文件行号)+ 修复建议。
# 使用:直接在对话里点名
> 用 code-reviewer 审查 src/pay/ 目录
# 或者让 Claude 自主并行:
> 同时从安全、性能、可读性三个角度审这次改动,各起一个子代理
model: haiku,复杂推理留给主会话的大模型 —— 大幅降低长任务成本。运行状态用 Ctrl+T 或 /tasks 查看。MCP(Model Context Protocol)是开放协议,让 Claude Code 接入数据库、Slack、GitHub、Jira、Sentry、浏览器、Figma 等外部系统 —— 接入后这些服务的操作就变成 Claude 可调用的工具。
# 远程 HTTP 服务(例:GitHub 官方 MCP)
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer YOUR_GITHUB_PAT"
# 本地 stdio 服务(例:PostgreSQL)
claude mcp add postgres -- npx @modelcontextprotocol/server-postgres \
"postgresql://user:pass@localhost/db"
# 查看 / 管理已连接的服务器
/mcp
团队共享可把配置写进项目根目录 .mcp.json 提交 git,队友打开项目即用。
> 查一下数据库:近30天注册用户按渠道分组的数量
> 把这次发布摘要发到 Slack #engineering 频道
> 从 Sentry 拉过去一小时的报错,按频次排序并定位代码
> 用 Chrome DevTools MCP 打开预发环境页面,截图检查布局
claude -p 让 Claude Code 变成一个可以放进管道、脚本、CI 的命令行工具。
# 把任何东西喂给它
cat build-error.log | claude -p "这个报错的根因是什么?"
git diff main | claude -p "审查这次改动的安全问题"
# JSON 输出,配 jq 取字段
claude -p "列出项目里所有 TODO" --output-format json | jq -r '.result'
# 严格结构化输出(给定 JSON Schema,保证可解析)
claude -p "提取本文件所有函数名" \
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}}}'
- name: Claude review
run: |
gh pr diff ${{ github.event.pull_request.number }} | \
claude -p "做安全向代码审查,输出问题清单" \
--allowedTools "Read,Bash(git *)" \
--output-format json | jq -r .result
env:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_TOKEN }}
另有官方 GitHub App:在 PR / Issue 里 @claude 即可让它修 bug、实现需求并自动提交(安装:会话内运行 /install-github-app)。
--max-budget-usd 与 --allowedTools 白名单;确定性流水线用 --permission-mode dontAsk,白名单之外一律拒绝。> 把当前改动分成两个逻辑独立的 commit,写好 message
> 开个分支 fix/login-rate-limit,把刚才的修复提交上去
> 基于这个分支发 PR,描述里带上改动摘要和测试说明
> 看下 PR #128 的 review 意见,逐条修复并回复
> rebase main 之后把冲突解掉
Claude 会遵循你项目的 commit 规范(写进 CLAUDE.md 即可),GitHub 操作走 gh CLI。/review 128 可直接审查某个 PR。
| 形态 | 安装 / 入口 | 特点 |
|---|---|---|
| VS Code 扩展 | 扩展市场搜 "Claude Code" | 侧边栏对话、行内 diff、@ 引用当前选区、多标签会话;Cmd/Ctrl+Esc 唤起 |
| JetBrains 插件 | Plugins 市场搜 "Claude Code" | diff 在 IDE 查看器中展示,自动同步 lint 诊断;Cmd+Option+K 插入文件引用 |
| 终端 CLI | claude | 本手册主体;外部终端可用 /ide 连到已打开的 IDE |
| 桌面应用 | Mac / Windows 下载 | 多会话并行管理,适合同时看多个项目 |
| Web / 移动端 | claude.ai/code | 云端沙箱跑会话,手机也能发任务、批准权限,回终端可无缝接管 |
Claude 每次改文件前自动打检查点(最近 100 个)。改崩了不用慌 —— 双击 Esc 或 /rewind 打开回滚菜单。
rm / mv、数据库变更、会话外的手改不被跟踪;检查点约 30 天清理,长期版本管理仍然靠 Git。/context # 可视化:系统提示 / CLAUDE.md / MCP工具 / 对话历史各占多少
/usage # 本会话用量与订阅配额
/clear,别让无关历史堆积。/compact 保留代码决策,丢弃调试过程;上下文快满时系统也会自动压缩,压缩后工作无缝继续。/model haiku 或 sonnet,硬骨头再上 opus;子代理单独指定便宜模型。--max-budget-usd 设硬上限。想把 Claude Code 的代理能力(工具循环、权限、子代理、hooks)嵌进你自己的程序?用 Agent SDK。
# 安装
npm install @anthropic-ai/claude-agent-sdk # TypeScript
pip install claude-agent-sdk # Python
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="找出并修复 auth.py 里的 bug",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Bash"],
permission_mode="acceptEdits",
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
SDK 同样支持:会话恢复(resume)、结构化输出(json_schema)、自定义子代理、Hooks 回调、MCP 接入 —— 与 CLI 是同一套引擎。典型产品形态:代码审查机器人、客服代理、数据管道里的智能处理节点。
.env、secrets/ 写进 deny;对外发布代码前跑 /security-review。| # | 场景 | 怎么说 / 怎么做 |
|---|---|---|
| 1 | 摸底新项目 | claude → "这个项目的架构和入口讲一遍" |
| 2 | 实现新功能 | "给用户模块加邮箱验证,含测试" (大改先 Shift+Tab 切 plan) |
| 3 | 修报错 | ! npm test 让报错进对话 → "修到全绿" |
| 4 | 解释一段代码 | @src/utils/retry.ts#20-60 这段在干嘛?有坑吗 |
| 5 | 跨文件重构 | "把所有 axios 调用换成 fetch,保持行为一致" |
| 6 | 补测试 | "给 payment 模块补单测,覆盖边界情况" |
| 7 | 写文档 | "根据代码生成 API 文档" / /init 生成 CLAUDE.md |
| 8 | 代码审查 | /code-review high;PR 用 /review 128 |
| 9 | 安全体检 | /security-review |
| 10 | 写 commit / 发 PR | "提交并发 PR,message 按项目规范" |
| 11 | 查 git 历史 | "这行代码谁改的?为什么?查 blame 和相关 PR" |
| 12 | 分析日志 | tail -200 app.log | claude -p "哪里出问题了" |
| 13 | 数据分析 | cat data.csv | claude -p "给出关键洞察";接 MCP 直接查库 |
| 14 | 看图改 UI | Cmd+V 粘贴设计稿截图 → "照这个改页面" |
| 15 | 批量整理文件 | "把 downloads 里的发票按月份归档重命名" |
| 16 | CI 自动审查 | GitHub Actions 里 claude -p(见第 12 节) |
| 17 | 定时例行任务 | /loop 30m /check-status 或 schedule 定时代理 |
| 18 | 并行多任务 | 多开终端各跑一个 claude,互不干扰;或用子代理 |
| 19 | 改崩了回滚 | EscEsc → 选检查点 → 只回滚代码 |
| 20 | 固化团队流程 | 写成 .claude/skills/ 技能,全队一条命令复用 |
| 变量 | 说明 |
|---|---|
ANTHROPIC_API_KEY | API 计费方式的密钥 |
CLAUDE_CODE_OAUTH_TOKEN | setup-token 生成的长效 token(CI 用) |
CLAUDE_CODE_USE_BEDROCK / _VERTEX / _FOUNDRY | 走 AWS / GCP / Azure 三方推理平台 |
CLAUDE_CONFIG_DIR | 自定义配置目录位置 |
ENABLE_TOOL_SEARCH | MCP 工具延迟加载开关(auto / false) |
DISABLE_AUTOUPDATER | 设为 1 关闭自动更新 |