三、Skills 进阶:Fork 模式与上下文控制

上一篇介绍了 Skills 的基础用法。本篇深入高级特性,让你的 Skill 更强大、更灵活。

Fork vs Inline 模式

Skill 有两种执行模式:

Inline 模式(默认)

Skill 内容注入当前对话,共享上下文:

bash 复制代码
用户: /review src/auth.ts
     │
     ▼
Skill 内容注入当前对话
     │
     ▼
Claude 在当前对话中执行
     │
     ▼
结果直接显示

特点

  • 共享对话历史
  • 共享 token 预算
  • 工具输出进入当前上下文
  • 用户可以中途干预

Fork 模式

Skill 启动独立子 Agent,隔离执行:

bash 复制代码
用户: /research "find all API endpoints"
     │
     ▼
启动子 Agent(独立上下文)
     │
     ├─► 主对话继续(可以聊天)
     │
     └─► 子 Agent 执行完毕后通知

特点

  • 独立对话历史
  • 独立 token 预算
  • 工具输出不污染主上下文
  • 用户可以继续其他对话

如何选择?

场景 推荐模式
简单操作(commit、review) Inline
复杂研究(大量搜索、多文件) Fork
不需要中途干预 Fork
需要与用户交互 Inline
工具输出很多(Grep、Read) Fork

配置 Fork 模式

在 frontmatter 中设置:

yaml 复制代码
---
name: research
description: Research a topic in the codebase
context: fork
agent: Explore
---

# Research Skill

Explore the codebase to find information about...

context : fork 启用 Fork 模式,默认 inline

agent: Fork 时使用的 Agent 类型:

  • Explore:快速探索(适合研究)
  • Plan:规划实现(适合设计)
  • general-purpose:通用任务

model 属性:选择执行模型

为 Skill 指定专用模型:

yaml 复制代码
---
name: quick-fix
description: Fix simple bugs quickly
model: haiku
---

# Quick Fix

Fix the bug described in the argument...

可选值

  • opus:最强,复杂推理
  • sonnet:平衡,大多数任务
  • haiku:最快,简单任务

场景示例

Skill 类型 推荐模型
代码审查(复杂) opus
常规操作(commit) sonnet
快速搜索(Grep) haiku
规划实现(Plan) opus

effort 属性:控制投入程度

effort 决定 AI 的"思考深度":

yaml 复制代码
---
name: deep-analysis
description: Deep analysis of complex issues
effort: high
---

# Deep Analysis

Analyze the issue thoroughly...

可选值

  • low:快速、直接,最小开销
  • medium:平衡,标准实现
  • high:全面,大量测试和文档
  • max:极致推理(仅 Opus 4.6 支持)

官方描述

Level 描述
low Quick, straightforward implementation with minimal overhead
medium Balanced approach with standard implementation and testing
high Comprehensive implementation with extensive testing and documentation
max Maximum capability with deepest reasoning (Opus 4.6 only)

注意

  • max 仅在 Opus 4.6 模型上可用
  • 其他模型使用 max 会被降级为 high

hooks 属性:Skill 内置钩子

Skill 可以定义自己的 Hooks:

yaml 复制代码
---
name: deploy
description: Deploy to production
allowedTools: [Bash]
hooks:
  PreToolUse:
    - matcher: Bash
      hooks:
        - type: command
          command: 'echo "Checking deployment safety..."'
---

# Deploy Skill

Deploy the application following these steps...

Hook 在 Skill 执行期间生效,Skill 结束后失效。

files 属性:附带参考文件

内置 Skill 可以附带参考文件,供 AI 查阅:

typescript 复制代码
registerBundledSkill({
  name: 'claude-api',
  description: 'Build apps with Claude API',
  files: {
    'examples/chat.ts': '// Example chat implementation...',
    'examples/stream.ts': '// Example streaming...',
  },
  getPromptForCommand: async (args) => [...]
})

用户 Skill 不支持 files,但可以用另一种方式:在 prompt 中引用外部文件:

markdown 复制代码
---
name: api-guide
---

# API Guide

Reference the API documentation in this project:
- Read docs/api.md for general guide
- Read docs/examples.md for code examples

完整示例:Fork 模式研究 Skill

markdown 复制代码
---
name: investigate
description: Investigate a bug or issue thoroughly
context: fork
agent: Explore
model: sonnet
effort: medium
allowedTools: [Read, Grep, Glob, WebSearch]
argumentHint: [bug description or issue]
---

# Investigation Skill

Investigate the described issue systematically.

## Steps

1. **Understand the Issue**: Parse the user's description to identify:
   - Error messages or symptoms
   - Affected components or files
   - When it occurs (trigger conditions)

2. **Search Evidence**:
   - Grep for error messages in logs
   - Grep for related function names
   - Glob to find potentially affected files

3. **Analyze Code**:
   - Read relevant files
   - Trace the execution path
   - Identify potential root causes

4. **Web Research** (if needed):
   - Search for similar issues online
   - Check framework/library documentation

5. **Report Findings**:
   - Summarize root cause
   - List evidence with file:line references
   - Suggest potential fixes

## Output Format

Provide a structured report:
- **Summary**: One paragraph overview
- **Root Cause**: Most likely explanation
- **Evidence**: List of findings
- **Recommendations**: Suggested fixes

使用:

vbnet 复制代码
/investigate login fails with 500 error after deploy

Fork 模式下,主对话可以继续,研究完成后收到通知。

最佳实践

1. Fork 用于隔离大量输出

arduino 复制代码
// ❌ Inline:大量 Grep 输出污染主上下文
用户: /search "function.*auth"
     │
     ▼
主对话充满 500 行 grep 结果

// ✅ Fork:输出隔离
用户: /search "function.*auth"
     │
     ├─► 主对话继续聊天
     │
     └─► 子 Agent 完成后返回摘要

2. 模型选择考虑成本

  • 简单任务用 haiku 节省成本
  • 复杂任务用 opus 保证质量
  • 大多数任务用 sonnet

3. effort 与任务复杂度匹配

任务类型 effort
快速修复 low
标准功能 medium
关键模块 high
极难问题 max (Opus 4.6)

4. allowedTools 防止"越权"

yaml 复制代码
# 只允许读取,不允许修改
allowedTools: [Read, Grep, Glob]

# 只允许 Bash,限制危险操作
allowedTools: [Bash]

下一步

下一篇将介绍 Hooks 入门:

  • 24 种 Hook 事件
  • 配置格式
  • 简单 Hook 示例

本篇要点

  1. context: fork 启动独立子 Agent
  2. agent 指定 Fork 时的 Agent 类型
  3. model 选择执行模型(opus/sonnet/haiku)
  4. effort 控制思考深度(low/medium/high/max)
  5. hooks 为 Skill 定义内置钩子
  6. Fork 模式适合大量输出、不需要中途干预的任务
相关推荐
雨落Re19 小时前
如何设计一个高质量Skill
人工智能
Token炼金师20 小时前
大模型权重文件全指南:从格式选择到优化实战
人工智能
阿牛哥_GX20 小时前
CDP 浏览器操控原理:让脚本接管你的浏览器
人工智能
ThreeS20 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路
人工智能·python
米小虾21 小时前
Loop Engineering —— 循环的设计与自主执行
人工智能·agent
米小虾21 小时前
Harness Engineering —— 系统的安全护栏
人工智能·agent
火山引擎开发者社区21 小时前
积分当钱花,火山引擎开发者激励计划首月消费双倍回馈
人工智能
aqi001 天前
15天学会AI应用开发(十)把文本嵌入模型换成国产模型
人工智能·python·ai编程
MobotStone1 天前
为什么在AI时代,“好奇心”成了最值钱的能力?
人工智能