# 增强的 Skill 生成功能 - 使用指南

## 📋 概述

本次更新为 Creative Studio 添加了**文档驱动的 Skill 生成工作流**，完全集成到现有架构中。

---

## ✨ 新功能

### 1. 文档获取 API

| 端点 | 功能 |
|-----|------|
| `POST /api/v1/skills/fetch-doc` | 从 URL 获取文档内容 |
| `POST /api/v1/skills/fetch-github-doc` | 从 GitHub 获取 README/docs |

**请求示例：**
```json
// 获取网页文档
{
  "url": "https://docs.example.com",
  "selector": "article"  // 可选 CSS 选择器
}

// 获取 GitHub 文档
{
  "repo_url": "https://github.com/owner/repo",
  "docs_path": "README.md"
}
```

---

### 2. 文档驱动的 Skill 生成

**端点：** `POST /api/v1/skills/generate-from-docs`

**完整工作流：**
```
用户输入 → 文档获取 → LLM 生成 → 预览 → 调整 → 保存
   ↓           ↓          ↓       ↓       ↓      ↓
 名称/URL   自动爬取    AI生成   即时预览  AI/手动  统一管理
```

**请求示例：**
```json
{
  "skill_name": "React 开发助手",
  "description": "帮助开发者使用 React 框架",
  "category": "development",
  "tags": ["react", "frontend", "javascript"],
  "doc_urls": [
    "https://react.dev/learn",
    "https://react.dev/reference/react"
  ],
  "github_repos": [
    {
      "repo_url": "https://github.com/facebook/react",
      "docs_path": "README.md"
    }
  ],
  "uploaded_references": {
    "custom_notes.md": "# 自定义笔记\n..."
  },
  "temperature": 0.7,
  "include_doc_summary": true
}
```

**响应示例：**
```json
{
  "success": true,
  "preview_id": "550e8400-e29b-41d4-a716-446655440000",
  "skill_content": "---\nname: react-assistant\ndescription: ...\n\n# React 开发助手\n...",
  "skill_name": "React 开发助手",
  "suggested_id": "react-assistant",
  "category": "development",
  "tags": ["react", "frontend"],
  "doc_summary": "- React Learn (https://react.dev/learn)\n- README.md",
  "references_count": 5,
  "explanation": "已基于 React 官方文档生成 Skill"
}
```

---

### 3. Skill 预览

**端点：** `POST /api/v1/skills/preview`

在保存前预览和验证 Skill 内容。

**请求示例：**
```json
{
  "skill_content": "---\nname: my-skill\n...\n",
  "skill_name": "My Skill",
  "category": "通用",
  "tags": ["custom"]
}
```

**响应示例：**
```json
{
  "preview_id": "...",
  "skill_content": "...",
  "parsed_metadata": {
    "name": "my-skill",
    "description": "..."
  },
  "validation_warnings": [
    "缺少 description 字段"
  ],
  "word_count": 1250,
  "estimated_tokens": 1625
}
```

---

### 4. AI 调整/优化

**端点：** `POST /api/v1/skills/refine`

使用自然语言提示词让 AI 调整 Skill。

**请求示例：**
```json
{
  "skill_content": "---\nname: my-skill\n...",
  "refinement_prompt": "把行为指导改得更简洁，增加代码示例",
  "temperature": 0.5
}
```

**提示词示例：**
- "把行为指导改得更简洁"
- "增加一个快速开始部分"
- "添加更多代码示例"
- "优化描述，让它更清晰"
- "用更专业的语气重写"

**响应示例：**
```json
{
  "success": true,
  "refined_content": "---\nname: my-skill\n...",
  "changes_summary": "根据提示词「把行为指导改得更简洁，增加代码示例」进行了调整",
  "original_length": 2500,
  "new_length": 3200
}
```

---

### 5. 保存到系统

**端点：** `POST /api/v1/skills/save-from-preview`

将预览的 Skill 保存到系统（统一后端管理）。

**请求示例：**
```json
{
  "preview_id": "550e8400-e29b-41d4-a716-446655440000",
  "skill_id": "my-skill",
  "skill_content": "---\nname: my-skill\n...",
  "references": {
    "api_reference.md": "# API 参考\n...",
    "examples.md": "# 示例\n..."
  }
}
```

**保存位置：**
```
backend/skills_storage/user_skills/my-skill/
├── SKILL.md
└── references/
    ├── api_reference.md
    └── examples.md
```

---

## 🔄 完整工作流示例

### 前端流程

```javascript
// 步骤 1: 用户输入并生成
const response = await fetch('/api/v1/skills/generate-from-docs', {
  method: 'POST',
  body: JSON.stringify({
    skill_name: 'React 助手',
    description: 'React 开发辅助',
    doc_urls: ['https://react.dev/learn'],
    temperature: 0.7
  })
});
const { preview_id, skill_content } = await response.json();

// 步骤 2: 显示预览
// 显示 skill_content，让用户查看

// 步骤 3: 用户调整（可选）
// 方式 A: 手动编辑
let editedContent = skill_content;

// 方式 B: AI 调整
const refineResponse = await fetch('/api/v1/skills/refine', {
  method: 'POST',
  body: JSON.stringify({
    skill_content: editedContent,
    refinement_prompt: '增加代码示例',
    temperature: 0.5
  })
});
const { refined_content } = await refineResponse.json();

// 步骤 4: 保存到系统
await fetch('/api/v1/skills/save-from-preview', {
  method: 'POST',
  body: JSON.stringify({
    preview_id: preview_id,
    skill_id: 'react-assistant',
    skill_content: refined_content
  })
});
```

---

## 🎨 前端页面建议

### Skill 创建页面布局

```
┌─────────────────────────────────────────────────────────────┐
│  创建新 Skill                                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  基础信息                                                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Skill 名称: [React 开发助手                    ]    │   │
│  │ 描述:       [帮助开发者使用 React 框架         ]    │   │
│  │ 分类:       [development ▼]  标签: [+ Add tag]    │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  文档来源                                                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ URLs:                                               │   │
│  │   [+ Add URL]                                       │   │
│  │   • https://react.dev/learn              [×]        │   │
│  │   • https://react.dev/reference/react    [×]        │   │
│  │                                                     │   │
│  │ GitHub:                                             │   │
│  │   [+ Add GitHub Repository]                         │   │
│  │   • facebook/react (README.md)           [×]        │   │
│  │                                                     │   │
│  │ 上传 References:                                    │   │
│  │   [Drag & drop files or click to upload]           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  选项                                                       │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Temperature: [━━●━━] 0.7                            │   │
│  │ ☑ 包含文档摘要                                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│                    [生成 Skill]                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 预览/编辑页面

```
┌─────────────────────────────────────────────────────────────┐
│  预览 Skill: React 开发助手                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  元数据                                                     │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ ✅ name: react-assistant                             │   │
│  │ ✅ description: 帮助开发者使用 React 框架           │   │
│  │ ✅ category: development                             │   │
│  │ ✅ tags: react, frontend, javascript                │   │
│  │ ⚠️ 内容较长 (3200 tokens)                            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  内容编辑器                                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ ---                                                │   │
│  │ name: react-assistant                              │   │
│  │ description: 帮助开发者使用 React 框架             │   │
│  │ ---                                                │   │
│  │                                                    │   │
│  │ # React 开发助手                                    │   │
│  │                                                    │   │
│  │ ## 使用场景                                         │   │
│  │ ...                                                │   │
│  │                    [Markdown 编辑器]               │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  AI 调整                                                    │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ 提示词: [让内容更简洁              ]                 │   │
│  │         [AI 调整]                                      │   │
│  │                                                     │   │
│  │ 快捷提示词:                                          │   │
│  │ • [增加代码示例]  • [添加快速开始]  • [优化描述]    │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  References (5 个文件)                                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ • react_learn.md (1250 词)                    [查看] │   │
│  │ • react_reference.md (800 词)                  [查看] │   │
│  │ • github_readme.md (450 词)                  [查看] │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│           [取消]              [保存 Skill]                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

---

## 🔧 依赖安装

确保安装以下依赖：

```bash
cd backend
pip install httpx beautifulsoup4
```

更新 `requirements.txt`：
```
httpx>=0.27.0
beautifulsoup4>=4.12.0
```

---

## 📝 API 端点总览

| 端点 | 方法 | 功能 |
|-----|------|------|
| `/api/v1/skills/fetch-doc` | POST | 获取网页文档 |
| `/api/v1/skills/fetch-github-doc` | POST | 获取 GitHub 文档 |
| `/api/v1/skills/generate-from-docs` | POST | 基于文档生成 Skill |
| `/api/v1/skills/preview` | POST | 预览 Skill |
| `/api/v1/skills/refine` | POST | AI 调整 Skill |
| `/api/v1/skills/save-from-preview` | POST | 保存 Skill |
| `/api/v1/skills/preview/{preview_id}` | GET | 获取预览数据 |
| `/api/v1/skills/preview/{preview_id}` | DELETE | 删除预览 |

---

## 🚀 后续优化建议

1. **预览存储优化**
   - 当前使用内存存储（`_preview_storage`）
   - 生产环境建议使用 Redis 或数据库

2. **异步处理**
   - 文档获取可以异步进行
   - 大文档处理可以返回任务 ID

3. **缓存机制**
   - 缓存已获取的文档
   - 避免重复获取相同 URL

4. **批量处理**
   - 支持批量生成 Skills
   - 批量导入文档

---

## 🐛 故障排除

### httpx 未安装

```bash
pip install httpx beautifulsoup4
```

### 文档获取失败

- 检查 URL 是否正确
- 确认目标网站是否允许爬取
- 尝试使用 CSS 选择器指定主内容区域

### LLM 生成质量不佳

- 调整 `temperature` 参数
- 提供更详细的描述
- 添加更多文档来源

---

生成时间：2025-01-26
