Claude Code

返回工具

Anthropic 官方 CLI 工具,在终端中直接使用 Claude 进行编码,可读写文件、执行命令、搜索代码库,支持完整的软件开发工作流。


安装与启动

npm install -g @anthropic-ai/claude-code
claude                    # 启动交互式会话
claude "解释这个函数"      # 单次查询
claude --help

核心工具

工具能力
Read读取文件内容
Write创建/覆写文件
Edit精准替换文件中的片段
Bash执行 shell 命令
Glob按模式匹配文件路径
Grep正则搜索文件内容
Agent派发子 Agent 执行任务
WebSearch / WebFetch网络搜索与页面抓取

常用斜杠命令

命令说明
/help查看帮助
/clear清空当前会话上下文
/compact压缩对话历史,节省上下文
/config打开配置界面
/cost查看本次会话费用
/doctor诊断环境配置问题
/init在当前项目生成 CLAUDE.md
/model切换使用的模型
/review代码审查
/vim切换 vim 键位模式

快捷键

快捷键说明
Ctrl+C中断当前操作
Shift+Enter多行输入换行
↑ / ↓翻历史消息
Esc Esc编辑上一条消息

MCP(模型上下文协议)

MCP Server 以统一协议向 Claude 暴露工具、数据源和提示模板,无需修改 Claude Code 本身即可扩展能力。

配置位置

~/.claude/settings.json          # 全局,所有项目生效
.claude/settings.json            # 项目级,优先级更高

配置格式

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
      "description": "读写本地文件系统"
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    },
    "custom-server": {
      "command": "python",
      "args": ["/path/to/my_mcp_server.py"]
    }
  }
}

传输方式

方式场景
stdio本地进程,命令行工具(默认)
SSE (HTTP)远程服务,多客户端共享

常用官方 Server

Server能力
server-filesystem读写本地文件
server-github仓库、PR、Issue 操作
server-postgres只读 SQL 查询
server-brave-search网页搜索
server-memory持久化知识图谱

自定义 Python MCP Server

import mcp.server.stdio
from mcp.server import Server
from mcp.types import Tool, TextContent
 
app = Server("my-tools")
 
@app.list_tools()
async def list_tools() -> list[Tool]:
    return [Tool(
        name="query_db",
        description="查询内部数据库",
        inputSchema={
            "type": "object",
            "properties": {"sql": {"type": "string"}},
            "required": ["sql"]
        }
    )]
 
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
    if name == "query_db":
        result = execute_query(arguments["sql"])
        return [TextContent(type="text", text=str(result))]
 
if __name__ == "__main__":
    import asyncio
    asyncio.run(mcp.server.stdio.run(app))

Hooks(钩子)

在工具调用前后自动执行 shell 命令,实现自动化检查、格式化、通知等。

配置结构

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "工具名或正则",
        "command": "shell 命令",
        "description": "说明"
      }
    ],
    "PostToolUse": [...],
    "Stop": [...],
    "Notification": [...]
  }
}

Hook 类型

类型触发时机可阻断
PreToolUse工具调用前是(exit code 2)
PostToolUse工具调用后
StopClaude 停止响应时
Notification收到系统通知时

matcher 语法

"Write"           # 精确匹配工具名
"Write|Edit"      # 匹配多个工具(OR)
"Bash"            # 匹配所有 Bash 调用
".*"              # 匹配所有工具

阻断机制

PreToolUse 中 exit code 返回 2 时,工具调用被阻断,stderr 内容作为错误反馈给 Claude。

#!/bin/bash
# 阻止删除 src/ 下的文件
if echo "$CLAUDE_TOOL_INPUT" | grep -q "rm.*src/"; then
  echo "禁止删除 src/ 目录内容" >&2
  exit 2
fi

常用 Hook 示例

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx prettier --write \"$FILE_PATH\"",
        "description": "保存后自动格式化"
      },
      {
        "matcher": "Write|Edit",
        "command": "npx eslint --fix \"$FILE_PATH\" 2>/dev/null || true",
        "description": "自动修复 lint 问题"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "node scripts/hooks/block-dangerous-commands.js",
        "description": "阻止危险命令"
      }
    ],
    "Stop": [
      {
        "command": "npm run build 2>&1 | tail -5",
        "description": "会话结束验证构建"
      }
    ]
  }
}

Hook 环境变量

变量说明
$FILE_PATH被操作的文件路径(Write/Edit)
$CLAUDE_TOOL_NAME当前工具名
$CLAUDE_TOOL_INPUT工具输入参数(JSON)

Rules(规则)

Rules 是写给 Claude 的持久指令,控制行为风格、代码规范、工作流约定,每次会话自动加载。

配置层级

优先级(高→低):
1. 对话中的用户消息
2. 项目 CLAUDE.md(.claude/rules/)
3. 用户全局规则(~/.claude/rules/)

CLAUDE.md(项目说明)

项目根目录,描述架构、命令、约定:

# CLAUDE.md
 
## 命令
npm run dev        # 开发服务器 http://localhost:5173
npm run build      # 生产构建(先 tsc 再 vite build)
npm run test       # 运行测试
 
## 架构
src/
├── views/         # 路由级页面
├── components/    # 通用组件
├── composable/    # Vue composable(状态逻辑)
├── utils/         # HTTP 工具层
└── router/        # 路由定义 + 守卫
 
## 约定
- TypeScript 严格模式,禁止 any
- 组件 PascalCase,文件 camelCase
- 提交格式:feat/fix/refactor: <描述>
- 禁止直接修改 main 分支

全局规则文件(~/.claude/rules/)

按主题拆分,模块化管理:

~/.claude/rules/
├── common/
│   ├── coding-style.md    # 不可变性、命名约定、文件组织
│   ├── git-workflow.md    # 提交格式、PR 流程
│   ├── testing.md         # TDD、覆盖率要求
│   ├── security.md        # 安全检查清单
│   └── agents.md          # Agent 编排规则
└── web/
    ├── coding-style.md    # 前端组织结构
    └── performance.md     # Web 性能指标

规则文件示例:

# coding-style.md
 
## 不可变性(关键)
始终创建新对象,永远不要 in-place 修改:
- 错误:array.push(item)
- 正确:return [...array, item]
 
## 文件大小
- 单文件上限 800 行
- 函数上限 50 行
- 嵌套深度上限 4 层

Memory(内存系统)

跨会话的文件持久化记忆,Claude 在会话开始时自动加载,积累用户偏好、项目上下文和协作反馈。

存储位置

~/.claude/projects/<project-hash>/memory/
├── MEMORY.md           # 索引文件(必须),会话开始自动读取
├── user_profile.md     # 用户角色、技术背景、偏好
├── project_xxx.md      # 项目上下文、架构决策、里程碑
├── feedback_xxx.md     # 协作反馈(做什么/不做什么)
└── reference_xxx.md    # 外部资源指针(Linear、Grafana等)

MEMORY.md 索引格式

# Memory Index
 
- [用户信息](user_profile.md) — 全栈工程师,Vue + Java 技术栈
- [项目:博客前端](project_blog.md) — Vue3 博客,知识仓库集成 Quartz
- [反馈:代码风格](feedback_style.md) — 不要在回复末尾总结已做的事
- [参考:外部资源](reference_tools.md) — 常用工具链接

记忆类型

类型内容示例
user用户角色、技术背景「有10年Java经验,Vue新手」
project项目上下文、决策背景「auth 重写是合规要求,非技术债」
feedback协作规范、行为纠正「不要 mock 数据库,上次出了生产事故」
reference外部资源指针「Bug 追踪在 Linear INGEST 项目」

记忆文件格式

---
name: 反馈:测试规范
description: 集成测试必须使用真实数据库
type: feedback
---
 
不要 mock 数据库做集成测试。
 
**Why:** 上季度 mock 测试全通过,但生产迁移失败,因为 mock 没有模拟真实的事务行为。
 
**How to apply:** 所有涉及数据库的测试必须连接真实测试库。

Skills(技能)

Skills 是通过插件加载的可复用工作流文档,/skill-name 触发后 Claude 读取技能内容并按其流程执行。

触发方式

/tdd              # 测试驱动开发
/code-review      # 代码审查
/feature-dev      # 完整功能开发流程
/security-scan    # 安全扫描
/plan             # 制定实现计划

技能执行流程

用户输入 /skill-name
    → Claude 加载技能文档(Skill 工具)
    → 宣告「使用 [skill] 来 [目的]」
    → 按技能文档中的步骤逐一执行
    → 每步完成后更新 TodoWrite 任务状态

自定义 Skill

~/.claude/skills/ 或项目 .claude/skills/ 下创建 .md 文件:

---
name: api-review
description: 审查 REST API 设计,检查命名规范、幂等性、错误码
---
 
# API 审查流程
 
1. 检查 URL 命名:是否使用名词复数、kebab-case
2. 检查 HTTP 方法语义:GET 无副作用、POST 创建、PUT/PATCH 更新
3. 检查状态码:4xx 客户端错误、5xx 服务端错误、201 创建成功
4. 检查错误响应格式:统一 { code, message, data } 结构
5. 检查幂等性:PUT/DELETE 多次调用结果一致
6. 输出审查报告

内置 Skills(ECC 插件提供)

详见 Everything Claude Code


多 Agent 模式

Claude Code 通过 Agent 工具将任务委派给子 Agent,支持并行执行和专业化分工。

基本模式

主 Agent(主对话)
├── 子 Agent 1:独立上下文,执行子任务 A
├── 子 Agent 2:独立上下文,执行子任务 B
└── 子 Agent 3:独立上下文,执行子任务 C
         ↓
主 Agent 汇总结果

子 Agent 特性:

  • 拥有独立上下文,不共享主 Agent 的对话历史
  • 可以使用全套工具(Read/Write/Bash 等)
  • 完成后将结果作为文本返回给主 Agent

并行 vs 串行

# 并行(推荐,互不依赖的任务)
同时派发:
- Agent A:分析 auth 模块安全问题
- Agent B:分析 cache 模块性能瓶颈
- Agent C:检查 utils 类型错误

# 串行(有依赖关系时)
先 Agent A 研究方案 → 根据结果让 Agent B 实现

专用子 Agent 类型

通过 subagent_type 参数调用预定义的专业 Agent:

subagent_type专长
planner制定实现计划
architect系统架构设计
code-reviewer代码质量审查
security-reviewer安全漏洞检测
tdd-guide测试驱动开发
build-error-resolver构建错误修复
typescript-reviewerTypeScript 专项
performance-optimizer性能优化

典型使用场景

代码审查(多视角并行):

主 Agent 发现代码变更
├── security-reviewer:检查安全漏洞
├── typescript-reviewer:检查类型问题
└── performance-optimizer:检查性能问题
主 Agent 汇总三份报告

功能开发(串行流水线):

planner → 输出实现计划
    → tdd-guide → 编写测试
    → 主 Agent → 实现功能
    → code-reviewer → 审查代码
    → security-reviewer → 安全扫描

大规模重构(并行分模块):

主 Agent 分析模块依赖
├── Agent 1:重构 auth 模块
├── Agent 2:重构 api 模块
└── Agent 3:重构 utils 模块
主 Agent 整合并解决冲突

Worktree 隔离模式

子 Agent 在独立 git worktree 中工作,不影响主分支,完成后合并:

{
  "isolation": "worktree"
}

权限控制

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Read(**)",
      "Write(src/**)",
      "Edit(src/**)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force*)"
    ]
  }
}

环境变量

变量说明
ANTHROPIC_API_KEYAPI 密钥
CLAUDE_MODEL默认模型
MAX_THINKING_TOKENS扩展思考 token 上限
CLAUDE_PLUGIN_ROOT插件根目录路径

IDE 集成

提供 VS Code 和 JetBrains 插件,在编辑器侧边栏直接使用,与终端版功能一致。


相关文档