跳转至

第五章:进阶设计模式

模式概述

本章介绍几种常用的 Skill 设计模式,帮助处理复杂场景。

模式一:高层指南 + 详细引用

适用场景

  • 功能丰富但核心流程简单
  • 有多个高级功能分支
  • 需要保持 SKILL.md 精简

结构

pdf-skill/
├── SKILL.md              # 核心流程 + 导航
└── references/
    ├── forms.md          # 表单处理
    ├── security.md       # 安全功能
    └── optimization.md   # 性能优化

SKILL.md 示例

---
name: pdf-advanced
description: 高级 PDF 处理技能。支持表单、安全、优化等功能。
---

# PDF 高级处理

## 快速开始

基础文本提取:
```python
import pdfplumber
with pdfplumber.open("file.pdf") as pdf:
    text = pdf.pages[0].extract_text()

功能导航

选择指南

需求 参考文档
填写 PDF 表单 forms.md
添加数字签名 security.md
减小文件大小 optimization.md
## 模式二:领域分离

### 适用场景

- Skill 覆盖多个独立领域
- 不同领域有不同的 Schema/规则
- 用户请求通常针对特定领域

### 结构
bigquery-skill/
├── SKILL.md # 概述 + 领域导航
└── references/
├── finance.md # 财务数据
├── sales.md # 销售数据
├── product.md # 产品数据
└── marketing.md # 营销数据
### SKILL.md 示例

```markdown
---
name: bigquery-analytics
description: BigQuery 数据分析技能。分析财务、销售、产品、营销数据。
---

# BigQuery 分析

## 领域导航

### 财务数据
收入、成本、利润分析。
→ 见 [finance.md](references/finance.md)

### 销售数据
机会、管道、转化分析。
→ 见 [sales.md](references/sales.md)

### 产品数据
使用量、功能、留存分析。
→ 见 [product.md](references/product.md)

### 营销数据
活动、归因、ROI 分析。
→ 见 [marketing.md](references/marketing.md)

## 通用查询

```sql
-- 查看表结构
SELECT column_name, data_type
FROM `dataset.INFORMATION_SCHEMA.COLUMNS`
WHERE table_name = 'your_table'
### references/finance.md 示例

```markdown
# 财务数据分析

## 可用表

### revenue
| 字段 | 类型 | 说明 |
|------|------|------|
| date | DATE | 日期 |
| amount | FLOAT | 金额 |
| category | STRING | 类别 |

## 常用查询

### 日收入趋势
```sql
SELECT date, SUM(amount) as daily_revenue
FROM finance.revenue
GROUP BY date
ORDER BY date

按类别汇总

SELECT category, SUM(amount) as total
FROM finance.revenue
WHERE date >= '2024-01-01'
GROUP BY category
## 模式三:条件详情

### 适用场景

- 基础用法简单,高级用法复杂
- 不同条件需要不同处理
- 需要根据用户选择加载不同内容

### 结构
docx-skill/ ├── SKILL.md # 基础用法 + 条件导航 └── references/ ├── tracked-changes.md # 修订跟踪 ├── ooxml.md # OOXML 细节 └── templates.md # 模板系统
### SKILL.md 示例

```markdown
---
name: docx-editor
description: Word 文档编辑技能。创建、修改、格式化文档。
---

# Word 文档编辑

## 基础操作

### 创建文档
```python
from docx import Document
doc = Document()
doc.add_heading('标题', level=1)
doc.add_paragraph('内容')
doc.save('output.docx')

修改文档

doc = Document('input.docx')
for para in doc.paragraphs:
    if '旧文本' in para.text:
        para.text = para.text.replace('旧文本', '新文本')

高级功能

功能 说明 参考
修订跟踪 跟踪文档修改 tracked-changes.md
OOXML 操作 直接操作 XML ooxml.md
模板系统 使用模板生成 templates.md

条件选择

简单编辑: 使用上面的基础操作即可。

需要修订跟踪: 见 tracked-changes.md

需要精确控制: 见 ooxml.md

## 模式四:脚本驱动

### 适用场景

- 需要确定性执行
- 操作步骤固定
- 需要处理复杂逻辑

### 结构
image-processor/ ├── SKILL.md # 脚本使用指南 └── scripts/ ├── resize.py # 调整大小 ├── convert.py # 格式转换 ├── watermark.py # 添加水印 └── batch.py # 批量处理
### SKILL.md 示例

```markdown
---
name: image-processor
description: 图像处理技能。调整大小、转换格式、添加水印。
---

# 图像处理

## 可用脚本

### resize.py

调整图像大小。

```bash
python scripts/resize.py \
    --input image.jpg \
    --output resized.jpg \
    --width 800 \
    --height 600

参数: - --input: 输入文件 - --output: 输出文件 - --width: 目标宽度 - --height: 目标高度 - --keep-ratio: 保持宽高比

convert.py

转换图像格式。

python scripts/convert.py \
    --input image.png \
    --output image.jpg \
    --quality 90

watermark.py

添加水印。

python scripts/watermark.py \
    --input image.jpg \
    --output watermarked.jpg \
    --text "Copyright" \
    --position bottom-right

batch.py

批量处理。

python scripts/batch.py \
    --input-dir ./images \
    --output-dir ./processed \
    --script resize.py \
    --args "--width 800"
## 模式五:模板生成

### 适用场景

- 生成特定格式的输出
- 需要保持一致的样式
- 有标准模板可复用

### 结构
report-generator/ ├── SKILL.md # 生成流程 ├── scripts/ │ └── generate.py # 生成脚本 └── assets/ ├── report.html # HTML 模板 ├── report.docx # Word 模板 └── styles.css # 样式文件
### SKILL.md 示例

```markdown
---
name: report-generator
description: 报告生成技能。生成 HTML、Word 格式报告。
---

# 报告生成器

## 可用模板

| 模板 | 文件 | 用途 |
|------|------|------|
| HTML 报告 | assets/report.html | 网页报告 |
| Word 报告 | assets/report.docx | 文档报告 |

## 生成流程

1. 准备数据
2. 选择模板
3. 运行生成脚本

### HTML 报告

```bash
python scripts/generate.py \
    --template assets/report.html \
    --data data.json \
    --output report.html

Word 报告

python scripts/generate.py \
    --template assets/report.docx \
    --data data.json \
    --output report.docx

数据格式

{
  "title": "月度报告",
  "date": "2024-01-31",
  "sections": [
    {"heading": "概述", "content": "..."},
    {"heading": "数据", "content": "..."}
  ]
}
## 模式选择指南
┌─────────────────────────────────────────────────────────────┐ │ │ │ 如何选择设计模式? │ │ │ │ ┌─────────────────────────────────────────────────────────┐│ │ │ 功能是否复杂多样? ││ │ └─────────────────────────────────────────────────────────┘│ │ │ │ │ │ │ 是 │ 否 │ │ ▼ ▼ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 是否有多个领域? │ │ 是否需要脚本? │ │ │ └─────────────────┘ └─────────────────┘ │ │ │ │ │ │ │ │ │ 是 │ 否 │ 是 │ 否 │ │ ▼ ▼ ▼ ▼ │ │ 领域分离 高层指南+引用 脚本驱动 条件详情 │ │ │ │ ┌─────────────────────────────────────────────────────────┐│ │ │ 是否生成标准格式输出? ││ │ └─────────────────────────────────────────────────────────┘│ │ │ │ │ │ 是 │ │ ▼ │ │ 模板生成 │ │ │ └─────────────────────────────────────────────────────────────┘ ```

小结

本章介绍了五种进阶设计模式:

  • 高层指南 + 详细引用:功能丰富但核心简单
  • 领域分离:覆盖多个独立领域
  • 条件详情:基础简单,高级复杂
  • 脚本驱动:需要确定性执行
  • 模板生成:生成标准格式输出

下一章将介绍测试与调试。