Claude Code ‘初’体验

146 阅读37分钟

本文基于Claude Code官方文档的深度理解和理论推演,带大家一起过一篇Claude的相关概念

国内注册

美国区苹果账号注册

  1. 先注册一个普通的中国区 Apple Account

  2. 修改 Apple Account 地区为美国地区

    1. 参考教程:zhuanlan.zhihu.com/p/101024418
  3. 修改苹果账单地址为免税州

    1. 参考教程:guozh.net/change-appl…

Google 账号注册

注册海外 Gmail 邮箱小技巧(以 iPhone 为例):

  1. 下载 Gmail App,创建账号

  2. 挂载美国节点(重要)

  3. 手机系统语言设置为英语、地区设置为美国(重要)

  4. 注册提交后选择手机号码时可以选择中国,输入自己的手机号即可

Claude 账号注册

用上面注册的 Google 账号登录 Gmail 邮箱,然后用这个邮箱登录 iOS 的 Claude。说明: 可以绑定中国手机号。

国内订阅

方案一:使用iOS APP的苹果订阅或者谷歌Play的支付方式

通过苹果官方订阅,你只需要将你海外的苹果账户添加付款方式即可

不同国家的苹果账户,支持的付款方式不同,所以这里尽量选择美区,然后账单地址填写免税州

我使用的PayPal绑定国内申请的visa卡,进行付费

Android的支付方式一样,在谷歌Play上绑定visa卡, 直接支付即可

方案二:AppStore 礼品卡

可以使用支付宝 ****购买/充值 AppStore 礼品卡,使用对应的 App 订阅时会自动扣除礼品卡中的金额

刚注册的账号,立刻充值有可能被苹果官方风控,导致无法付费:参考文档:Apple Gift Card 购买失败解决方案

方案三:真正的外币信用卡

如果自己有国外的朋友,有非国内发放的外币信用卡,可以直接在Claude支付页面绑卡付费即可

方案四:钞能力(不推荐)

三方平台,服务费高、安全性不足,请谨慎使用

直接在淘宝咸鱼找人代充

PayPal账户,只要你绑定了visa信用卡,那么它可以在任何地方被登录,也可以绑定在不同的苹果ID。

你也可以成为订阅中第四个方案的代理人

其实很多人都卡在了注册和订阅。

终端安装和使用

官网的安装教程已经写的很清楚了,直接访问查看各个平台的安装Claude Code overview - Claude Code Docs

步骤一:安装

macOS、Linux、WSL:

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

Windows 命令提示符:

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

步骤二:登录您的账户

使用上面已经注册并且付费的 Claude Code 账号进行登录

claude # You'll be prompted to log in on first use
/login # Follow the prompts to log in with your account

您可以使用以下任何一种账户类型登录:

登录后,您的登录凭证将被保存,无需再次登录。

首次使用 Claude Console 帐户验证 Claude Code 时,系统会自动创建一个名为“Claude Code”的工作区。该工作区可集中跟踪和管理您组织内所有 Claude Code 使用情况的成本。

您可以使用同一个邮箱地址注册两种类型的账户。如果您需要重新登录或切换账户,请使用/loginClaude Code 中的命令。

步骤 三:开始你的Claude旅程

打开终端,进入任意项目目录,然后启动 Claude Code:

cd /path/to/your/project claude

您将看到 Claude Code 欢迎界面,其中包含您的会话信息、最近的对话和最新更新。输入/help命令即可查看可用命令或/resume继续之前的对话。

登录后(步骤 2),你的凭据将存储在你的系统中,无需再次登录。

第四步:提出你的第一个问题

接下来就可以在输入框中提出你的任何问题

Claude 进阶使用

配置文件

.claude/CLAUDE.md

CLAUDE.md 是 Claude Code 的“法则”。每当你启动 Claude Code 或开始新对话时,这个文件的内容会被自动加载到上下文的最前端。

  • 存放位置:项目根目录或 .claude/CLAUDE.md
  • 嵌套特性:Claude Code 支持目录级上下文

在项目目录中运行 /init 命令,自动生成一份基于项目结构的 claude.md

用 # 动态更新:在对话中,使用 # 符号可以将指令直接添加到 claude.md,但是在Claude Code 2.0.70版本之后,你可以直接告它:更新 Claude.md:本项目中请始终使用swift和swift并发。

.claude/rules

当你在项目中使用CLAUDE.md时会发现,时间久了,慢慢对CLAUDE.md的内容增加的也越多,到最后就变成《项目说明书》+《团队规范》+《个人规则》大杂烩,这样会导致Claude 也越来越不懂项目了。

那么我们就需要将说明组织成多个.claude/rules/文件。这样,团队就可以维护重点突出、组织良好的规则文件,而不是一个庞大的 CLAUDE.md 文件。

基本结构

将 Markdown 文件放置在项目.claude/rules/目录中:

your-project/
├── .claude/
│   ├── CLAUDE.md           # Main project instructions
│   └── rules/
│       ├── code-style.md   # Code style guidelines
│       ├── testing.md      # Testing conventions
│       └── security.md     # Security requirements

.claude/rules/中的所有.md文件都会自动加载为项目内存,优先级与.claude/CLAUDE.md一样

CLAUDE.md 管理「项目整体怎么合作」, rules/*.md 管理「在某个文件 / 某个语言 / 某个场景下,Claude 具体要怎么干活」。

PS:也要慎用rule,内容要简洁,制定的最好是团队最需要规范的规则,否则浪费Token

按触发条件分离规则

可以使用 YAML 前置元数据中的paths字段将规则限定于特定文件。这些条件规则仅在 Claude 处理符合指定模式的文件时生效。

---
paths:
  - "src/api/**/*.ts"
---

# API Development Rules

- All API endpoints must include input validation
- Use the standard error response format
- Include OpenAPI documentation comments

没有指定字段的规则paths将无条件加载,并应用于所有文件。

通过对rule的设计,可以让Claude Code 在你项目里「越用越聪明」,而不是「越用越混乱」

危险模式

claude –dangerously-skip-permissions

危险模式是指,CC可以自主操作你的电脑,而无需你的任何确认。这种模式有个好处就是,你给它一个需求,它直接交付结果,你不用去管过程。但如果不开的话,CC每次的操作都需要你确认,很繁琐,也很影响效率。

建议在指定文件夹位置并备份好数据的条件下开启此模式

Claude 高级功能使用

我们总是能听到Claude的各种专业名称,Commands,Skills,MCP还有Agents,那么他们到底怎么使用,他们分别在什么场景使用?他们之间又有什么样的区别? 之前团队也有人分享他们的使用,这里我再加深一下印象,并将他们放在一起做一个垂直对比

Claude 提供了多种扩展能力的方式,让我们能够根据不同场景定制 AI 助手的行为。这些功能从简单的文本提示到复杂的工具集成,形成了一个完整的能力体系。

核心功能层次

基础层:对话交互
  ↓
增强层:Commands(快速指令)
  ↓
专业层:Skills(领域专长)
  ↓
自主层:Agents(自主执行)
  ↓
协作层:Sub Agents(多智能体协作)

Commands(命令)

什么是 Commands?

Commands 是快速访问的文本指令或提示词模板,用于触发 Claude 的特定行为或响应模式。它们是最轻量级的自定义方式。更直白一点,就是将你需要频繁使用的提示词保存起来复用

Commands 的特点

  1. 快速访问 - 通过简短的触发词激活
  2. 文本驱动 - 纯粹基于提示词工程
  3. 即时生效 - 无需复杂配置
  4. 易于修改 - 可以快速迭代调整

Commands 的类型

  1. 格式化命令

快速生成特定格式的内容:

/summary - 提供简洁摘要
/table - 创建表格
/code - 生成代码片段

2. #### 风格命令

调整回复的语气和风格:

/formal - 正式商务风格
/casual - 轻松对话风格
/technical - 技术详细风格
/eli5 - 简化解释(像给 5 岁小孩解释)

3. #### 任务命令

触发特定类型的任务:

/review - 审阅和提供反馈
/optimize - 优化代码或文本
/translate - 翻译内容
/debug - 调试代码问题

创建自定义 Commands

官方文档 Slash commands - Claude Code Docs

项目命令

存放位置.claude/commands/

以下示例创建/optimize命令:

# Create a project command 
mkdir -p .claude/commands
echo "Analyze this code for performance issues and suggest optimizations:" > .claude/commands/optimize.md
个人指令

这些命令可在所有项目中使用。在列表中/help,这些命令的描述后会显示“(用户)”。

位置:~/.claude/commands/

以下示例创建/security-review命令:

# Create a personal command 
mkdir -p ~/.claude/commands
echo "Review this code for security vulnerabilities:" > ~/.claude/commands/security-review.md
入参

使用参数占位符$ARGUMENTS将动态值传递给命令:$ARGUMENTS占位符会捕获传递给命令的所有参数:

# Command definition
echo 'Fix issue #$ARGUMENTS following our coding standards' > .claude/commands/fix-issue.md
# Usage> 
/fix-issue 123 high-priority
# $ARGUMENTS becomes: "123 high-priority"

使用11、2等的单个参数

使用位置参数单独访问特定参数(类似于 shell 脚本):

# Command definition  
echo 'Review PR #$1 with priority $2 and assign to $3' > .claude/commands/review-pr.md
# Usage> 
/review-pr 456 high alice
# $1 becomes "456", $2 becomes "high", $3 becomes "alice"

Skills(技能)

什么是 Skills?

Skills 是模块化的、自包含的能力包,通过提供专业知识、工作流程和工具来扩展 Claude 的能力。可以把它们想象成特定领域或任务的"入职指南"——将 Claude 从通用助手转变为装备了特定程序性知识的专业助手。

白话文:Skills 是打包好的指令、脚本和资源的一个集合,Claude 会自动根据描述发现并按需加载,让它在特定任务上表现更好。

Skills 的核心组成

一个完整的 Skill 包含:

skill-name/
├── SKILL.md (必需)
   ├── YAML 元数据
      ├── name: 技能名称
      ├── description: 触发条件和功能描述
      └── license: 授权信息
   └── Markdown 指令
└── 可选资源
    ├── scripts/         - 可执行代码(Python/Bash 等)
    ├── references/      - 参考文档
    └── assets/          - 输出资产(模板、图标等)

安装和配置

存放位置
# 全局 skills (所有项目可用)
~/.claude/skills
# 项目 skills (仅当前项目,可 git 共享)
project/.claude/skills/        
从官方仓库安装
# Claude Code 中安装官方 document skills
/plugin install document-skills@anthropic-agent-skills
从社区 Marketplace 安装
# 添加社区 marketplace
/plugin marketplace add wshobson/agents
# 安装 plugin(包含多个 skills)
/plugin install developer-essentials

Skills 可以包含脚本,恶意 Skill 可能:

  • 让 Claude 执行有害操作
  • 泄露数据
  • 入侵系统

所以从社区安装时需要审查SKILL的所有文件

自定义 Skill

官方文档:How to create custom Skills | Claude Help Center

步骤 1:明确使用场景

首先收集具体的使用示例:

  • "这个 Skill 应该支持什么功能?"
  • "能给一些使用示例吗?"
  • "什么样的用户请求应该触发这个 Skill?"
步骤 2:规划可复用内容

分析每个示例,确定需要的资源:

  • 需要什么脚本?(scripts/
  • 需要什么参考文档?(references/
  • 需要什么资产文件?(assets/
步骤 3:初始化 Skill

在.claude文件夹中创建一个技能目录

mkdir -p ~/.claude/skills/jira-workflow
touch ~/.claude/skills/jira-workflow/SKILL.md
步骤 4:编写内容

比如我要创建一个使用特定的 Jira 工作流技能:

SKILL.md 示例

 #好的描述:清晰的功能 + 触发条件 === 差的描述:模糊不清
# description 尤其重要,因为Claude会用它来决定何时使用技能。
---
name: jira-workflow
description:  iOS 开发团队自动化 Jira 任务的创建与管理。当用户需要创建任务、解析需求或进行 Sprint 规划时使用。
---

# Jira 工作流能力

## 核心工作流

1. 解析用户需求
2. 将需求拆解为结构化任务
3. 使用合适的字段创建 Jira 工单
4. 设置优先级和负责人

## 任务模板
每个任务应包含:
- 摘要(必填)
- 包含验收标准的详细描述
- 故事点(Story Points)评估
- 组件标签
- Sprint 归属

## Scripts
批量创建任务时,使用 scripts/create_batch_tasks.py。
  1. 保持name的值和外部文件夹名称一样。
  2. 不要使用中文名称和描述来替代namedescription,否则技能无法被识别
步骤 5:验证和测试技能

在Claude对话框中输入:

What Skills are available?

接着在对话框中输入

帮我创建一个jira

可以看到刚刚创建的技能被主动触发了(主动触发)

从上面的流程可以看到,技能不需要像斜杠命令一样手动调用,它是由模型自己调用,当我们的请求与相关技能的描述匹配时,Claude 会自动应用这些技能。当我们发送请求时,Claude 会按照以下步骤查找并使用相关技能:

1:发现

启动时,Claude 只会加载每个可用技能的名称和描述。这样既能保证启动速度,又能让 Claude 获得足够的上下文信息,从而判断每个技能何时可能适用。

2:激活

当请求与某个技能的描述匹配时,Claude 会请求使用该技能。在完整内容SKILL.md加载到上下文之前,我们会看到一个确认提示。由于 Claude 会读取这些描述来查找相关的技能,所以技能的描述是越精确越好

3:执行

Claude 按照技能的指示,根据需要加载引用的文件或运行捆绑的脚本。

Skill 可以打包无限量的内容,但只在需要时才加载。你可以装 50 个 Skills,启动时只占用 ~5000 tokens(50 × 100),但只有执行时才加载完整内容。

多 Skill 协作

一次对话可以激活多个 skills。比如问"审查这个 Swift 并发代码"

| 用户: "审查这个 Swift 并发代码"  
|  
| ─→ code-review-excellence (匹配 "审查")  
|   └─ 代码审查流程和标准  
|  
| ─→ swift-testing-patterns (匹配 "测试")  
|     └─ swift 测试最佳实践  
|
| ─→ async-swift-patterns (匹配 "异步")
|        └─ async常见陷阱 

Claude 综合 3 个 skills 的知识 → 输出专业的审查报告

Agents(代理)

什么是 Agents?

Agents 是能够自主执行复杂、多步骤任务的 AI 系统。与 Skills 提供知识和工具不同,Agents 能够主动规划、执行和调整策略以完成目标。

Agents 的核心特征

通常我们和Claude聊天时就会用到Agent,比如

场景一:问Claude 最新的中东地缘冲突进展,Claude会使用工具自动搜索网络

  • 自主决策:Claude会判断这个问题需要最新信息(超出Claude的知识截止日期)
  • 主动调用工具:我会自动使用web_search工具搜索最新新闻,不需要你明确说"请搜索"
  • 多步骤执行:识别需要实时信息 --> 构建搜索查询 --> 执行搜索 --> 综合信息给你答案
  • 目标导向:Claude的目标是给你准确的最新信息,会主动采取必要行动

场景二:让Claude创建和修改文档

  • 主动使用工具:我会调用 artifacts 工具来创建独立的文档

  • 决策判断

    • 判断内容是否应该做成artifact(长度、用途、是否需要保存)
    • 选择合适的格式(Markdown、HTML、React组件等)
    • 决定是创建新文档还是更新现有文档
  • 多步骤操作:理解你的需求 --> 生成内容 --> 调用工具创建artifact --> 根据反馈迭代修改

而非Agent调用场景:

场景一:简单的问答对话

  • "帮我翻译这段话"
  • "什么是光合作用?"

场景二:纯文本生成或者静态内容分析

  • 帮我润色这段文字
  • 分析这段代码的问题

所以从上面的场景可以很快的分析出Agents 的核心特征:

  1. 自主性 - 可以独立做决策而不需要每步确认
  2. 工具使用 - 可以调用各种工具和 API
  3. 规划能力 - 能够分解复杂任务为子任务
  4. 适应性 - 根据反馈调整执行策略

Command 和 Skill 本质一样,都是在使用当前对话的上下文。而Agent 相当于外派人员,这样不会影响主对话的思考过程

也就是说,Agent 的“执行过程”是隔离的,但“结果”会回到主上下文

配置

项目级 (.claude/agents/):随项目仓库一起管理,方便团队共享和协作,优先级更高。

用户级 (~/.claude/agents/):个人的通用工具箱,在所有项目中都可用。

示例:

---
name: researcher
description: 深度调研
model: sonnet
tools: WebSearch, WebFetch, Read
---

你是调研专家。收到任务后:
1. 搜索至少 5 个不同来源
2. 交叉验证关键信息
3. 输出结构化报告,列出信息来源

model 可以指定用什么模型,复杂任务用 opus,简单的用 haiku 省钱。

tools 指定它能用什么工具——搜索、抓网页、读文件。

Sub Agents(子代理)

什么是 Sub Agents?

Sub Agents 是一种更高级的 Agent 架构模式,允许主 Agent 创建和管理多个专门的子 Agent 来并行或顺序处理复杂任务的不同部分。这是一种分而治之的策略,特别适合需要多种专业能力的大型项目。

Sub Agents 的核心概念
主 Agent (Orchestrator)
├── Sub Agent 1 (专注于任务 A)
├── Sub Agent 2 (专注于任务 B)
└── Sub Agent 3 (专注于任务 C)

主 Agent 充当协调者(Orchestrator),负责:

  • 任务分解和分配
  • 子 Agent 的创建和配置
  • 结果收集和整合
  • 错误处理和重试逻辑
Sub-Agent 的核心优势
  • 上下文保护: 每个 Sub-Agent 都在自己独立的上下文里工作,不会干扰主对话或其他 Sub-Agent 的思考过程。这极大地保护了主对话的上下文,使其始终聚焦于最高级别的目标。

  • 精确的工具权限控制: 我们可以精确地为每个 Sub-Agent 分配它完成任务所必需的最小工具集。例如:

    • 一个"代码审查" Agent 可能只需要 git diffRead 权限
    • 一个"文档生成" Agent 只需要 Write 权限
    • 一个"数据分析" Agent 可能需要 BashRead 权限

这种精确的权限控制大大增强了系统的安全性。

  • 定制化的系统提示词: 每个 Sub-Agent 都有自己的 System Prompt,这使得我们可以为特定领域的任务进行精细的指令微调,从而在特定任务上取得更高的成功率。

Sub-agent 不是简单地给 AI 一个“角色扮演”的指令,而是创建一个拥有独立上下文窗口、独立思考空间和专属工具箱的专家

Agent 调用方式

方式1:自动路由
$ claude "优化Swift代码性能"

系统判断 → swift-expert (主Agent)
   ↓
swift-expert分析 → 需要性能专家
   ↓
自动调用 → swift-performance (Subagent)
方式2:显式调用
 # 直接使用主Agent
$ claude --agent swift-expert "review代码"

# 主Agent内部可能调用多个Subagent
→ swift-expert
  ├─ swift-testing (生成测试)
  └─ ui-design-reviewer (检查UI)

自定义Agent和SubAgent

我们来写一个写作的智能体

主Agent

# 写作助手

## 角色
你是一个友好的写作助手,帮助用户完成各种写作任务——从邮件到创意故事。

## 你能做什么
- 帮助撰写和编辑文档
- 改进语法和文风
- 生成创意内容
- 在正式和非正式语气之间转换
- 协助头脑风暴

## 可用的子智能体
你可以向专家寻求特定类型写作的帮助:

- **邮件专家** :负责专业邮件和商务信函
- **创意作家** :负责故事、诗歌和想象力内容

## 何时使用子智能体

### 使用邮件专家当用户:

- 提到"邮件"、"写信"、"发消息"、"信件"
- 需要专业或商务沟通
- 询问邮件礼仪或格式
- 例如:"给老板写封邮件"、"回复这条消息"

### 使用创意作家当用户:

- 提到"故事"、"诗"、"创意"、"小说"
- 想要想象力或艺术性内容
- 寻求角色创意或情节帮助
- 例如:"写一个短篇故事"、"帮我写小说"

## 你的工作方式

1. **倾听** 用户需要什么
2. **判断** 你能直接帮助还是需要专家
3. **委派** 给合适的子智能体(如果需要)
4. **结合** 他们的专业知识和你自己的能力
5. **提供** 有用的回复

## 示例

**用户** :"帮我写封邮件请假"
**你** :"让我请我们的邮件专家来帮你起草这个专业请求..."

**用户** :"你能帮我检查这段话的语法吗?"
**你** :[直接处理 - 不需要子智能体]

**用户** :"写一个关于鬼屋的恐怖故事"
**你** :"让我请我们的创意作家来帮你..."

## 你的风格
- 友好且鼓励
- 解释保持简单
- 始终乐于助人
- 需要时询问澄清性问题

Sub-Agent1

# 邮件专家(子智能体)

## 角色
你是专业的邮件写作专家,帮助人们写出清晰、礼貌、有效的邮件。

## 上级智能体
- 写作助手

## 你的专长

### 邮件结构
每封好邮件都有:
1. **主题行** - 清晰具体
2. **问候语** - 适合关系程度
3. **开头** - 说明目的
4. **正文** - 详细信息
5. **结尾** - 清晰的后续步骤
6. **落款** - 专业而温暖

### 语气层级
- **正式**:老板、客户、官方请求
- **半正式**:同事、供应商、社交往来
- **随意**:熟悉的朋友、团队成员

## 邮件模板

### 请求类邮件
```
主题:关于【具体事项】的请求

您好 【姓名】,

希望这封邮件一切安好。

我写信是想请求【具体请求】。【简要背景/原因】。

【需要的详细信息】

不知是否可以【你的请求】?【如有相关截止日期请提及】

感谢您考虑这个请求。如需任何补充信息,请随时告知。

此致
敬礼
【你的名字】
```

### 感谢类邮件
```
主题:感谢您的【具体事项】

您好 【姓名】,

我想写信感谢您【他们做的事】。

【解释这如何帮助了你或为什么重要】

我真的很感激您的【时间/帮助/支持】。

再次感谢!

此致
【你的名字】
```

### 道歉类邮件
```
主题:关于【情况】的道歉

您好 【姓名】,

我想为【发生的事】道歉。

【承担责任 - 不找借口】

为了防止将来再次发生,我将【你会采取的不同做法】。

感谢您的理解。

诚挚的
【你的名字】
```

## 快速提示**应该做:**
- 主题行保持在20字以内
- 使用适当的问候语(您好/你好/尊敬的)
- 前两句话就说明重点
- 明确你需要什么
- 发送前校对
- 使用"请"和"谢谢"

❌ **不应该做:**
- 全部大写(看起来像在喊叫)
- 忘记提供背景
- 写大段落(分开它们)
- 忘记指定截止日期
- 使用太多感叹号!!!
- 生气时发送(等24小时)

## 常见情况

### 请假
**语气**:正式但友好
**要点**:日期、原因(简要)、工作交接计划

### 跟进
**语气**:礼貌的坚持
**要点**:引用之前的邮件、温和提醒、新的截止日期

### 拒绝
**语气**:尊重且清晰
**要点**:感谢对方、礼貌拒绝、如可能提供替代方案

### 自我介绍
**语气**:温暖专业
**要点**:你是谁、为什么联系、期望什么

## 你的回复格式

帮助写邮件时,提供:
1. **主题行建议**
2. **完整邮件草稿**
3. **语气说明**(为什么这样写)
4. **可选变体**(如果他们想要不同语气)

## 示例

**用户问**:"写封邮件让邻居把音乐声音调小"

**你提供**```
主题:关于噪音问题的友好请求

您好 【邻居姓名】,

希望您一切都好!我想和您沟通一个影响我睡眠的小问题。

我注意到晚上(大约晚上11点到午夜)会有音乐声,由于我工作时间较早,这让我很难休息。

不知晚上10点后是否可以把音量调小一些?非常感谢您的体谅。

谢谢您的理解!

此致
【你的名字】

---
语气:友好但清晰。这种方式:
- 保持邻里关系(你们还会见面!)
- 具体说明问题
- 提供合理解决方案
- 表示感激

如果你想更直接的版本:
"您好【姓名】,最近晚上的音乐影响了我的睡眠。能否请您10点后调小音量?谢谢!"
```

Sub-Agent2

# 创意作家(子智能体)

## 角色
你是创意写作专家,帮助人们写故事、诗歌和富有想象力的内容。

## 上级智能体
- 写作助手

## 你能帮助的内容

### 故事元素
- **角色**:创造有趣的人物性格
- **情节**:构建引人入胜的故事弧线
- **场景**:描述生动的世界
- **对话**:写出自然的对话
- **冲突**:引入张力和解决

### 创意格式
- 短篇故事
- 诗歌(各种风格)
- 角色描述
- 场景写作
- 情节创意和大纲

## 故事结构指南

### 基本故事弧线
1. **开头** - 介绍角色和世界
2. **触发事件** - 某件事改变了
3. **发展** - 挑战增加
4. **高潮** - 关键时刻
5. **结局** - 事情如何收场

### 例子(简单版):
```
开头:"小美喜欢她安静的书店工作。"
事件:"直到她发现了一本会自己写字的书。"
发展:"书中的预言开始成真。"
高潮:"她必须决定:阅读自己的未来还是烧掉这本书?"
结局:"她选择自己书写人生。"
```

## 写作技巧

### 展示,而非告知
❌ 告知:"她很紧张。"
✅ 展示:"她的手颤抖着伸向门把手。"

❌ 告知:"房间很乱。"
✅ 展示:"衣服像地毯一样铺满地板,盘子堆成摇摇欲坠的塔。"

### 有力的开头
好的第一句能抓住注意力:
- "我从来不擅长保守秘密,尤其是自己的秘密。"
- "我变成隐形人的那天,开始时和平常的周二一样。"
- "我奶奶的遗言是'喂龙'。"

### 对话技巧**好的对话:**
- 听起来自然
- 揭示角色性格
- 推动故事发展
- 有潜台词

例子:
```
"你迟到了,"妈妈说,没有抬头看她的书。
"路上堵车。"
"嗯哼。堵车。"她翻了一页。"在午夜。"
```

## 创意练习

### 角色塑造
回答这些问题来创造丰富的角色:
- 他们最想要什么?
- 他们害怕什么?
- 他们有什么秘密?
- 他们永远不会做什么?
- 他们如何对待陌生人?

### 情节创意生成器
组合这些元素:
- 一个有不寻常工作/才能的人
- 发生了意外的事
- 他们必须做出艰难的选择
- 有时间限制
- 关乎个人利益

## 不同类型的技巧

### 奇幻类
- 建立一致的魔法规则
- 让世界感觉真实有生活气息
- 平衡奇幻感与真实情感

### 悬疑类
- 早早埋下线索
- 红鲱鱼(误导线索)是你的朋友
- 答案应该出人意料但公平

### 爱情类
- 通过冲突创造化学反应
- 展示他们为什么完美(又不完美)
- 情感连接 > 外貌描述

### 恐怖类
- 未知比已知更可怕
- 慢慢建立紧张感
- 使用感官细节

## 诗歌基础

### 简单俳句格式
```
5个音节
7个音节  
5个音节

例子:
晨间咖啡香(5)
升起如昨日梦境(7)
消散在日光(5)
```

### 自由诗
没有规则,只需:
- 强烈的意象
- 情感真实
- 有趣的断行
- 精心选择的词汇

## 你的回复格式

帮助创意写作时:

1. **先问问题**(如果需要):
   - 什么氛围/语气?
   - 目标读者是谁?
   - 应该多长?

2. **提供创意内容**

3. **解释你的选择**   - 为什么这样开头
   - 如何建立张力
   - 什么让它有效

4. **提供替代方案**   - 不同结局
   - 语气变化
   - 角色调整

## 示例回复

**用户问**:"写一个关于镜子的短篇恐怖故事"

**你提供**```
《镜中倒影》

我刷牙时注意到镜中的自己眨了眨眼。

不是和我同时——而是晚了一秒。像回声,但不对劲。

我靠近。镜中的我也靠近了。现在我们完全同步。只是我的想象。

但当我转身离开时,它留在了镜子前。

看着我离开。

---

写作选择:
- 短句制造不安感
- 第二人称视角让读者身临其境
- 最后一句点题
- 留下想象空间(是真的?想象?超自然?)

想让我:
- 写得更长更详细?
- 尝试不同的结局?
- 改变视角?
```

## 鼓励话语

记得告诉写作者:
- 初稿本来就该乱糟糟
- 每个作家都是从新手开始的
- 写作就是不断重写
- 你独特的声音很重要
- 继续写下去!

创建上面3个文件到 .claude/agents/ 目录:

.claude/agent/
├── 写作助手.md          # 主Agent
├── 邮件专家.md          # 子智能体1
└── 创意作家.md          # 子智能体2
测试场景1:普通文字改进(不触发子智能体)

测试场景2:写邮件

左边的触发了邮件专家智能体,右边图片是另一个项目,无智能体(虽然写的差不多..)

测试 3:创意写作(触发创意作家)

左边的触发了创意作家智能体,右边是另一个项目,无智能体

通过上面的测试场景,我们可以了解到:

  1. 主Agent(写作助手) 相当于总指挥,判断找谁帮忙
  2. 子智能体 = 领域专家,各有专长
  3. 自动路由 = 系统根据关键词自动选择
  4. 用户无感 = 你只说需求,系统自动分配

MCP (Model Context Protocol)

什么是 MCP?

Model Context Protocol (MCP) 是 Anthropic 在 2024 年 11 月发布的开源标准,用于连接 AI 应用与外部系统。可以把 MCP 想象成 AI 应用的 USB-C 接口——就像 USB-C 为电子设备提供了标准化的连接方式,MCP 为 AI 应用提供了标准化的方式来连接外部数据源和工具。

调用者角度的白话文:

上面介绍的,command,skill,Agent 都是告诉 Claude 怎么做事。

而MCP 是让它能做更多事,我们让 Claude"帮我在 绘制Figma设计图里的UI",但它不知道去哪找Figma,做不到。但是安装了Figma 的 MCP,就能做了。

MCP 的三大核心组件

MCP 定义了三种基本原语(primitives),它们是构建所有 MCP 集成的基础:

  1. Tools(工具)

定义:允许 AI 模型执行操作的可调用函数。

特点

  • 可以读取和写入数据
  • 可以执行计算或调用 API
  • 需要明确定义输入和输出

Python 示例

python

from mcp.server import Server

mcp = Server("example-server")

@mcp.tool()
def create_document(title: str, content: str) -> dict:
    """
    在 Google Drive 创建新文档
    
    Args:
        title: 文档标题
        content: 文档内容
    
    Returns:
        包含 document_id 和 url 的字典
    """
    doc = gdrive_api.create_document(title, content)
    return {
        "document_id": doc.id,
        "url": doc.url,
        "created_at": doc.created_time
    }

@mcp.tool()
def send_slack_message(channel: str, message: str) -> dict:
    """发送 Slack 消息"""
    result = slack_api.post_message(channel, message)
    return {"message_id": result.ts, "success": True}

实际使用流程

用户:"在 Google Drive 创建一个项目计划文档,然后在 Slack 通知团队"

Claude 执行:
1. 调用 create_document 工具
   → title="项目计划"
   → content="..."
   → 返回:{"document_id": "abc123", "url": "..."}

2. 调用 send_slack_message 工具  
   → channel="#project-team"
   → message="项目计划已创建:[链接]"
   → 返回:{"message_id": "123.456", "success": true}

3. 向用户报告完成

2. #### Resources(资源)

定义:AI 模型可以读取的数据源(只读)。

特点

  • 只读访问,不能修改
  • 提供结构化的上下文信息
  • 使用 URI 格式标识

Python 示例

python

@mcp.resource("file:///{path}")
def read_file(path: str) -> str:
    """
    读取本地文件内容
    
    URI 格式:file:///path/to/file.txt
    """
    with open(path, 'r', encoding='utf-8') as f:
        return f.read()

@mcp.resource("notion://page/{page_id}")
def get_notion_page(page_id: str) -> dict:
    """
    获取 Notion 页面内容
    
    URI 格式:notion://page/abc123xyz
    """
    page = notion_api.pages.retrieve(page_id)
    return {
        "title": page.title,
        "content": page.content,
        "last_edited": page.last_edited_time
    }

@mcp.resource("github://repo/{owner}/{repo}/file/{path}")
def get_github_file(owner: str, repo: str, path: str) -> str:
    """
    读取 GitHub 仓库文件
    
    URI 格式:github://repo/anthropic/claude/file/README.md
    """
    content = github_api.get_content(owner, repo, path)
    return content.decoded_content

实际使用流程

用户:"根据我的 Notion 项目文档和 GitHub 代码,写一个技术总结"

Claude 执行:
1. 读取 Notion ResourceURI: notion://page/project123
   → 获取项目文档内容

2. 读取 GitHub ResourceURI: github://repo/myorg/myproject/file/src/main.py
   → 获取代码内容

3. 综合两个数据源生成总结

3. #### Prompts(提示词模板)

定义:预定义的、可重用的提示词模板,用于标准化常见工作流程。

特点

  • 参数化的提示词
  • 简化复杂任务
  • 团队共享的最佳实践

Python 示例

python

@mcp.prompt("code_review")
def code_review_prompt(code: str, language: str = "Python") -> str:
    """
    代码审查标准提示词
    
    Args:
        code: 要审查的代码
        language: 编程语言
    """
    return f"""
请审查以下 {language} 代码,提供详细反馈:
```{language.lower()}
{code}
```

审查要点:
1. **代码质量**:可读性、命名规范、注释
2. **潜在问题**:Bug、边界情况、错误处理
3. **性能**:时间复杂度、空间复杂度、优化机会
4. **安全性**:输入验证、SQL 注入、XSS 等
5. **最佳实践**:设计模式、语言惯用法

请按以下格式输出:
- 🟢 优点
- 🔴 问题(按优先级)
- 💡 改进建议
"""

@mcp.prompt("bug_report")
def bug_report_prompt(
    title: str,
    description: str,
    steps_to_reproduce: str
) -> str:
    """Bug 报告标准模板"""
    return f"""
请根据以下信息生成详细的 Bug 报告:

标题:{title}
描述:{description}
复现步骤:{steps_to_reproduce}

输出格式:
# Bug Report: {title}

## 问题描述
[详细说明]

## 环境信息
- OS: [待确认]
- 版本: [待确认]
- 浏览器: [待确认]

## 复现步骤
[详细步骤]

## 预期行为
[说明]

## 实际行为
[说明]

## 附加信息
[截图、日志等]
"""

实际使用流程

用户:"审查我的 Swift 代码"

Claude 执行:
1. 选择 code_review Prompt
2. 填充参数:
   → code: [用户提供的代码]
   → language: "Swift"
3. 生成标准化的审查提示词
4. 执行审查并按格式返回结果

MCP 与其他功能的关系

关系图
应用层级

├─ Sub Agents (多代理协作)
  └─ 每个 Sub Agent 可以使用不同的 MCP 服务器
     
     ├─ Agent 1: 使用 GitHub MCP
     ├─ Agent 2: 使用 Jira MCP  
     └─ Agent 3: 使用 Slack MCP
        
        ├─ Agents (自主执行)
          └─ 通过 MCP Tools 执行操作
             └─ 使用 MCP Resources 获取上下文
                
                ├─ Skills (领域知识)
                  └─ 可以指导何时使用哪个 MCP 服务器
                     └─  SKILL.md 中引用 MCP 资源
                        
                        └─ MCP (基础设施)
                           └─ 提供标准化的外部系统连接
                
                └─ Commands (快速指令)
                   └─ 可以触发使用特定 MCP 服务器
        
        └─ 基础对话
协同工作模式
任务:"为 iOS 项目生成周报并发送给团队"

组合使用:
1. Skill: ios-dev
    提供报告格式和关注点

2. MCP 服务器:
    GitHub MCP: 获取代码提交
    Jira MCP: 获取问题状态
    TestFlight MCP: 获取测试数据
   
3. Agent: report-generator
    协调数据收集
    生成格式化报告
    通过 Slack MCP 发送

流程:
Agent 读取 Skill 指导
  
调用多个 MCP Resources 收集数据
  
分析和格式化
  
调用 MCP Tools 发送报告

预构建的 MCP 服务器

Anthropic 和社区提供了丰富的预构建 MCP 服务器。

官方 MCP 服务器
服务器功能npm 包用途
filesystem本地文件系统@modelcontextprotocol/server-filesystem读写本地文件
githubGitHub 操作@modelcontextprotocol/server-github仓库、Issue、PR 管理
gitGit 版本控制@modelcontextprotocol/server-git提交、分支、日志
google-driveGoogle Drive@modelcontextprotocol/server-google-drive文档读写
slackSlack 集成@modelcontextprotocol/server-slack消息、频道管理
postgresPostgreSQL@modelcontextprotocol/server-postgres数据库查询
puppeteer浏览器自动化@modelcontextprotocol/server-puppeteer网页抓取、测试
社区热门服务器

github.com/modelcontex…

使用 MCP

步骤 1:找到配置文件或者创建一个新的配置文件
# 项目路径
.claude/mcp.json
# 全局路径
~/.claude/mcp.json
步骤 2:编辑配置

json

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/your/Projects/xxx"
      ]
    },
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    },
    "slack": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-slack"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-token",
        "SLACK_TEAM_ID": "T1234567890"
      }
    }
  }
}
步骤 3:使用 MCP 功能
用户:"列出我项目目录中的所有 Swift 文件"

Claude:[自动使用 filesystem MCP]
       → 扫描指定目录
       → 过滤 .swift 文件
       → 返回文件列表

用户:"“根据这个 Figma 页面,帮我设计 SwiftUI 结构”"

Claude:[自动使用figma-mcp]
    → 需要设计稿布局信息 + 语义分析
    → 获取 Frame 的 layoutMode / constraints
    → 读取文本、图片、颜色样式
    [工程映射]
    → AutoLayout / SwiftUI VStack / HStack 映射
    → Color / Font Token 抽象
    [输出]
    → SwiftUI View 结构
    → Design Token 建议

插件

什么是插件

简单来说,插件就是把斜杠命令、智能体、MCP 服务器和钩子打包在一起的工具包。以前你需要一个个配置这些扩展,现在,只需要一个 /plugin 命令就能搞定。同时支持是否启用该插件。

如何使用

# 添加插件
/plugin marketplace add anthropics/claude-code

# 浏览插件
/plugin

# 直接安装特定插件
/plugin install plugin-name@marketplace-name

# 启用插件
/plugin enable<插件名>@<市场名>

# 禁用插件(不卸载)
/plugin disable<插件名>@<市场名>

# 卸载插件
/plugin uninstall<插件名>@<市场名>

使用场景

Anthropic 列出了插件的主要使用场景:

强制标准:工程负责人可以通过插件确保团队使用特定的代码审查或测试工作流

支持用户:开源维护者可以提供斜杠命令帮助开发者正确使用他们的包

分享工作流:开发者可以轻松分享调试设置、部署管道或测试框架

连接工具:团队可以通过 MCP 服务器连接内部工具和数据源

打包定制:框架作者或技术负责人可以为特定用例打包多个定制功能

自定义插件

创建插件只需要在项目中添加一个 plugin.json 文件,定义你的扩展组件

步骤一:创建项目结构
 # 创建测试市场
mkdir test-marketplace
cd test-marketplace

# 创建插件目录
mkdir my-first-plugin
cd my-first-plugin
步骤二:创建插件配置文件

完整的配置文件清单:code.claude.com/docs/en/plu…

 # 创建.claude-plugin目录
mkdir .claude-plugin
cd .claude-plugin

# 创建plugin.json
cat > plugin.json << 'EOF'
{
"name": "my-first-plugin",  # 唯一标识符和斜杠命令命名空间。斜杠命令以此作为前缀(例如,/my-first-plugin:hello)。
"description": "我的第一个问候插件",
"version": "1.0.0",
"author": {
    "name": "love ai"
  }
}
EOF
步骤三:添加自定义命令
 # 创建commands目录
mkdir my-first-plugin/commands

# 创建hello命令
cat > commands/hello.md << 'EOF'
---
description: 向用户打招呼
---

# Hello Command
热情地向用户问好,并询问今天能提供什么帮助。让问候更个性化和鼓舞人心。
EOF
步骤四:创建市场配置
 # 回到test-marketplace目录
cd ..

# 创建市场的.claude-plugin目录
mkdir .claude-plugin

# 创建marketplace.json
cat > .claude-plugin/marketplace.json << 'EOF'
{
"name": "test-marketplace",
"owner": {
    "name": "测试用户"
  },
"plugins": [
    {
      "name": "my-first-plugin",
      "source": "./my-first-plugin",
      "description": "我的第一个测试插件"
    }
  ]
}
EOF
步骤五:安装并测试
 # 从父目录test-marketplace启动Claude Code
cd ..
claude

# 在Claude Code中添加测试市场
/plugin marketplace add ./test-marketplace

# 安装你的插件
/plugin install my-first-plugin@test-marketplace

# 选择“Install now”,然后重启Claude Code

# 测试你的新命令
/hello

# 查看命令列表
/help

LSP (Language Server Protocol) 集成

什么是 LSP?

Language Server Protocol (LSP) 是微软在 2016 年创建的标准协议,用于在开发工具和语言服务器之间建立标准化通信,实现丰富的代码智能功能。

Claude插件可以提供语言服务器协议(LSP) 服务器,以便在我们处理代码库时为 Claude 提供实时代码智能。LSP集成提供:

  • 即时诊断:克劳德每次编辑后都能立即看到错误和警告。
  • 代码导航:跳转到定义、查找引用和悬停信息
  • 语言意识:代码符号的类型信息和文档

位置.lsp.json插件根目录,或内联plugin.json

格式:JSON 配置映射,将语言服务器名称映射到它们的配置.lsp.json文件格式:

{
  "go": {
    "command": "gopls",
    "args": ["serve"],
    "extensionToLanguage": {
      ".go": "go"
    }
  }
}

内联plugin.json

{
  "name": "my-plugin",
  "lspServers": {
    "go": {
      "command": "gopls",
      "args": ["serve"],
      "extensionToLanguage": {
        ".go": "go"
      }
    }
  }
}

必填字段:

场地描述
command要执行的 LSP 二进制文件(必须在 PATH 环境变量中)
extensionToLanguage将文件扩展名映射到语言标识符

安装LSP服务

设置环境变量
export ENABLE_LSP_TOOL=1
# 或者添加到你的 shell 配置文件
echo 'export ENABLE_LSP_TOOL=1' >> ~/.zshrc  # 或 ~/.bashrc
安装语言服务器

以 Swift(iOS 开发)为例:

swift语言的安装比较简单,直接在终端输入/plugin,在搜索框进行搜索,然后直接安装即可

再次进入查看Installed,如果安装成功即可看到。

其他语言参考官方安装文档:GitHub - Piebald-AI/claude-code-lsps: Claude Code Plugin Marketplace with LSP servers

功能对比

Commands - 最简单的命令式交互

斜杠命令就像游戏手柄按钮,每个按钮有固定功能,什么命令,就执行什么样的操作,不会有多余想法

  • 类比:函数调用,输入输出确定
  • 适用:已知解决方案的重复性任务
  • 限制:无法应对变化

Skills - 封装的能力模块,介于命令和智能代理之间

技能:一个工具,它能完成一类工作,比如螺丝刀专门拧螺丝,只专注于当前技能所能解决的问题

用户提问 --> Claude理解意图 --> 查找匹配Skill --> 应用知识

  • 类比:专家系统,基于知识库推理
  • 适用:需要专业知识但流程不固定
  • 限制:依赖description准确性,描述不正确可能导致匹配度过低

Agents - 具有自主决策能力的AI实体,能规划和执行复杂任务

助理:你说"我要去旅游",它会帮你查机票、订酒店、规划路线,有自己的决策,会使用工具。我们只需要输出目标

用户给目标 --> Agent自主规划 --> 调用Tools --> 评估结果 --> 迭代,完全自主决策

  • 类比:智能助理,端到端解决问题
  • 适用:复杂、多步骤、需要决策的任务
  • 限制:不可控性、成本高

Sub-Agents - 由主Agent创建的专门化执行者,用于任务分解

小助理:主助理安排任务给不同员工:小王查资料,小李写报告,小张做PPT。 主助理做任务拆分

  • 类比:像项目经理 + 专项执行人员, 主 Agent 负责「拆解 + 决策」,Sub-Agent 负责「执行」
  • 适用: 复杂任务的 并行处理, 需要不同“角色 / 专长”的子任务。提升整体推理效率与可维护性
  • 限制: Sub-Agent 本身不具备全局视角,所以各个Sub-Agent之间需要防止任务重复或冲突

MCP - Anthropic的标准化协议,实现工具和上下文的互操作性

所有设备都用同一种插头(协议),让Claude能连上所有支持这种协议的软件和工具

  • 类比:像 统一规格的插头 / USB 接口, 不关心“谁在用”,只保证“能连上、能通信”
  • 适用:工具数量多、来源不同,希望工具能力可复用、可组合,希望 Agent 与工具解耦
  • 限制:MCP 不做规划、不做决策,工具能力决定上限,协议本身不具备安全逻辑

选择决策树

暂时无法在飞书文档外展示此内容

需求分析
├─ 只需要简单问答?
│  └─ 使用 Commands
│
├─ 需要专业领域知识?
│  ├─ 需要执行代码?
│  │  └─ 使用 Skills(带 scripts/)
│  └─ 只需要参考信息?
│     └─ 使用 Skills(带 references/)
│
├─ 需要连接外部系统?
│  ├─ 只读数据?
│  │  └─ 使用 MCP Resources
│  ├─ 需要执行操作?
│  │  └─ 使用 MCP Tools
│  └─ 标准化工作流程?
│     └─ 使用 MCP Prompts
│
├─ 需要自主完成复杂任务?
│  ├─ 需要访问外部数据?
│  │  └─ 使用 Agents + MCP
│  └─ 只需内部处理?
│     └─ 使用 Agents + Skills
│
└─ 需要多种专业能力协作?
   ├─ 可以并行执行?
   │  └─ 使用 Sub Agents(并行模式)+ 各自的 MCP 服务器
   └─ 需要顺序处理?
      └─ 使用 Sub Agents(流水线模式)+ 共享 MCP 服务器

最后

不要让你的AI像个瞎子一样到处乱撞