目的

集成 prompts.chat 开源提示词库,为 AI 对话提供丰富的提示词模板。

📊 执行摘要

结论

可以集成 - prompts.chat 与 OpenClaw 具有良好的集成潜力,主要通过以下方式:

  1. MCP 协议集成 - prompts.chat 提供 MCP 服务器,OpenClaw 支持 MCP 客户端
  2. API 调用集成 - prompts.chat 提供 REST API,可在 OpenClaw 技能中调用
  3. 技能融合 - 将 prompts.chat 提示词融入 OpenClaw 技能系统
  4. 本地数据同步 - 下载 prompts.chat 数据集本地使用

🔍 技术方案分析

方案 1: MCP 协议集成(推荐)⭐⭐⭐⭐⭐

prompts.chat MCP 能力

prompts.chat 提供标准的 MCP (Model Context Protocol) 服务器:

{
  "mcpServers": {
    "prompts.chat": {
      "url": "https://prompts.chat/api/mcp"
    }
  }
}
OpenClaw MCP 支持

OpenClaw 支持通过 MCP 协议连接外部服务:

  • 支持 MCP 客户端功能
  • 可配置外部 MCP 服务器
  • 支持工具调用和数据交换
集成方法

步骤 1: 配置 MCP 连接

在 OpenClaw 配置中添加 MCP 服务器:

{
  "mcp": {
    "servers": {
      "prompts": {
        "url": "https://prompts.chat/api/mcp",
        "enabled": true
      }
    }
  }
}

步骤 2: 创建提示词检索技能

# prompts_chat_mcp.py
import requests

class PromptsChatMCP:
    def __init__(self, api_url="https://prompts.chat/api/mcp"):
        self.api_url = api_url
    
    def search_prompts(self, query, category=None):
        """搜索提示词"""
        params = {"q": query}
        if category:
            params["category"] = category
        
        response = requests.get(f"{self.api_url}/prompts", params=params)
        return response.json()
    
    def get_prompt_by_id(self, prompt_id):
        """获取单个提示词"""
        response = requests.get(f"{self.api_url}/prompts/{prompt_id}")
        return response.json()
    
    def list_categories(self):
        """获取所有类别"""
        response = requests.get(f"{self.api_url}/categories")
        return response.json()

优势:

  • ✅ 标准化协议
  • ✅ 实时数据访问
  • ✅ 支持搜索和过滤
  • ✅ 官方支持

劣势:

  • ⚠️ 依赖网络连接
  • ⚠️ API 速率限制

方案 2: REST API 集成 ⭐⭐⭐⭐

prompts.chat API 端点
GET https://prompts.chat/api/prompts
GET https://prompts.chat/api/prompts/{id}
GET https://prompts.chat/api/categories
POST https://prompts.chat/api/prompts/search
OpenClaw 技能实现
#!/usr/bin/env python3
"""
prompts_chat_skill.py - prompts.chat 提示词检索技能
"""

import requests
import json
from pathlib import Path

class PromptsChatSkill:
    """prompts.chat 提示词技能"""
    
    def __init__(self, cache_dir="~/.openclaw/workspace/cache/prompts"):
        self.api_base = "https://prompts.chat/api"
        self.cache_dir = Path(cache_dir).expanduser()
        self.cache_dir.mkdir(parents=True, exist_ok=True)
    
    def search_prompts(self, query, limit=10):
        """
        搜索提示词
        
        Args:
            query: 搜索关键词
            limit: 返回数量限制
        
        Returns:
            list: 提示词列表
        """
        cache_file = self.cache_dir / f"search_{query}.json"
        
        # 尝试从缓存读取
        if cache_file.exists():
            with open(cache_file, 'r', encoding='utf-8') as f:
                return json.load(f)
        
        # API 调用
        try:
            response = requests.get(
                f"{self.api_base}/prompts",
                params={"q": query, "limit": limit},
                timeout=10
            )
            data = response.json()
            
            # 缓存结果
            with open(cache_file, 'w', encoding='utf-8') as f:
                json.dump(data, f, ensure_ascii=False, indent=2)
            
            return data
        except Exception as e:
            print(f"搜索失败:{e}")
            return []
    
    def get_prompt_template(self, prompt_id):
        """
        获取提示词模板
        
        Args:
            prompt_id: 提示词 ID
        
        Returns:
            str: 提示词模板
        """
        try:
            response = requests.get(
                f"{self.api_base}/prompts/{prompt_id}",
                timeout=10
            )
            data = response.json()
            return data.get('prompt', '')
        except Exception as e:
            print(f"获取失败:{e}")
            return ""
    
    def list_categories(self):
        """获取所有类别"""
        try:
            response = requests.get(f"{self.api_base}/categories", timeout=10)
            return response.json()
        except Exception as e:
            print(f"获取类别失败:{e}")
            return []
    
    def apply_prompt(self, prompt_id, **kwargs):
        """
        应用提示词到 OpenClaw 会话
        
        Args:
            prompt_id: 提示词 ID
            **kwargs: 提示词参数
        """
        template = self.get_prompt_template(prompt_id)
        if template:
            # 格式化提示词
            formatted = template.format(**kwargs)
            return formatted
        return ""


# 使用示例
if __name__ == "__main__":
    skill = PromptsChatSkill()
    
    # 搜索提示词
    results = skill.search_prompts("marketing")
    print(f"找到 {len(results)} 个提示词")
    
    # 获取类别
    categories = skill.list_categories()
    print(f"类别:{categories}")

方案 3: 本地数据集集成 ⭐⭐⭐⭐⭐

下载 prompts.chat 数据集

prompts.chat 提供完整数据集下载:

# CSV 格式
wget https://raw.githubusercontent.com/f/prompts.chat/main/prompts.csv

# Hugging Face 数据集
pip install datasets
python -c "
from datasets import load_dataset
dataset = load_dataset('fka/prompts.chat')
print(dataset)
"
OpenClaw 本地技能实现
#!/usr/bin/env python3
"""
prompts_local.py - 本地 prompts.chat 数据集技能
"""

import csv
import json
from pathlib import Path
from typing import List, Dict, Optional


class LocalPromptsSkill:
    """本地提示词技能(无需 API)"""
    
    def __init__(self, data_path="~/.openclaw/workspace/data/prompts.csv"):
        self.data_path = Path(data_path).expanduser()
        self.prompts = []
        self._load_data()
    
    def _load_data(self):
        """加载 CSV 数据"""
        if not self.data_path.exists():
            print(f"数据文件不存在:{self.data_path}")
            return
        
        with open(self.data_path, 'r', encoding='utf-8') as f:
            reader = csv.DictReader(f)
            self.prompts = list(reader)
        
        print(f"已加载 {len(self.prompts)} 个提示词")
    
    def search(self, query: str, limit: int = 10) -> List[Dict]:
        """
        搜索提示词
        
        Args:
            query: 搜索关键词
            limit: 返回数量
        
        Returns:
            匹配的提示词列表
        """
        query_lower = query.lower()
        results = []
        
        for prompt in self.prompts:
            title = prompt.get('act', '').lower()
            prompt_text = prompt.get('prompt', '').lower()
            
            if query_lower in title or query_lower in prompt_text:
                results.append(prompt)
            
            if len(results) >= limit:
                break
        
        return results
    
    def get_by_category(self, category: str, limit: int = 10) -> List[Dict]:
        """
        按类别获取提示词
        
        Args:
            category: 类别名称
            limit: 返回数量
        
        Returns:
            提示词列表
        """
        results = []
        category_lower = category.lower()
        
        for prompt in self.prompts:
            title = prompt.get('act', '').lower()
            if category_lower in title:
                results.append(prompt)
            
            if len(results) >= limit:
                break
        
        return results
    
    def get_random(self, count: int = 1) -> List[Dict]:
        """
        随机获取提示词
        
        Args:
            count: 数量
        
        Returns:
            随机提示词列表
        """
        import random
        return random.sample(self.prompts, min(count, len(self.prompts)))
    
    def export_to_json(self, output_path: str):
        """导出为 JSON"""
        with open(output_path, 'w', encoding='utf-8') as f:
            json.dump(self.prompts, f, ensure_ascii=False, indent=2)
        print(f"已导出到:{output_path}")


# 使用示例
if __name__ == "__main__":
    skill = LocalPromptsSkill()
    
    # 搜索
    results = skill.search("writer")
    for r in results:
        print(f"- {r.get('act')}: {r.get('prompt')[:50]}...")
    
    # 按类别
    marketing = skill.get_by_category("marketing", limit=5)
    print(f"\n营销类提示词:{len(marketing)} 个")

方案 4: OpenClaw 技能系统融合 ⭐⭐⭐⭐⭐

创建 prompts-chat 技能包
~/.openclaw/workspace/skills/prompts-chat-integration/
├── SKILL.md
├── scripts/
│   ├── prompts_search.py        # 提示词搜索
│   ├── prompts_apply.py         # 提示词应用
│   └── sync_prompts.py          # 数据同步
├── data/
│   └── prompts.csv              # 本地数据集
└── references/
    └── prompt-library.md        # 提示词库文档
SKILL.md 示例
---
name: prompts-chat-integration
description: |
  集成 prompts.chat 提示词库到 OpenClaw。
  提供提示词搜索、应用、管理功能。
  Use when: (1) 需要 AI 提示词,(2) 搜索特定场景提示词,
  (3) 应用提示词到当前会话,(4) 管理提示词库。
---

# Prompts.chat Integration

## 快速开始

```bash
# 搜索提示词
python scripts/prompts_search.py "marketing copy"

# 应用提示词
python scripts/prompts_apply.py --id 123 --apply

# 同步最新数据
python scripts/sync_prompts.py

功能

1. 提示词搜索

from prompts_search import PromptsSearch

search = PromptsSearch()
results = search.search("code review")
for r in results:
    print(f"{r['title']}: {r['prompt']}")

2. 提示词应用

from prompts_apply import PromptsApply

apply = PromptsApply()
prompt = apply.get_prompt(123)
apply.apply_to_session(prompt)

3. 数据同步

# 从 prompts.chat 同步最新数据
python scripts/sync_prompts.py --source github

# 从 Hugging Face 同步
python scripts/sync_prompts.py --source huggingface

数据集

本地数据集位置:
~/.openclaw/workspace/skills/prompts-chat-integration/data/prompts.csv

数据源:

  • GitHub: https://raw.githubusercontent.com/f/prompts.chat/main/prompts.csv
  • Hugging Face: https://huggingface.co/datasets/fka/prompts.chat

提示词类别

  • 写作助手
  • 编程助手
  • 学习辅导
  • 商业分析
  • 创意创作
  • 健康建议
  • 旅行规划
  • 生活建议

API 参考

详见 references/prompt-library.md

---
## 🧪 实践测试

### 测试 1: 下载数据集

```bash
# 创建数据目录
mkdir -p ~/.openclaw/workspace/data

# 下载 prompts.csv
curl -o ~/.openclaw/workspace/data/prompts.csv \
  https://raw.githubusercontent.com/f/prompts.chat/main/prompts.csv

# 验证
wc -l ~/.openclaw/workspace/data/prompts.csv

测试 2: 创建集成技能

# 创建技能目录
mkdir -p ~/.openclaw/workspace/skills/prompts-chat-integration/{scripts,data,references}

# 复制数据集
cp ~/.openclaw/workspace/data/prompts.csv \
   ~/.openclaw/workspace/skills/prompts-chat-integration/data/

测试 3: 实现搜索功能

创建 scripts/prompts_search.py(使用上面的 LocalPromptsSkill 类)

cd ~/.openclaw/workspace/skills/prompts-chat-integration
python scripts/prompts_search.py "marketing"

测试 4: 集成到 OpenClaw 会话

在 OpenClaw 中加载技能:

# 在 OpenClaw 会话中
import sys
sys.path.insert(0, '/Users/jerry/.openclaw/workspace/skills/prompts-chat-integration/scripts')

from prompts_search import LocalPromptsSkill

skill = LocalPromptsSkill()
results = skill.search("code review")

# 应用提示词到当前会话
for r in results[:3]:
    print(f"提示词:{r.get('act')}")
    print(f"内容:{r.get('prompt')[:100]}...")
    print()

📊 集成方案对比

方案 实时性 依赖网络 速率限制 推荐度
MCP 协议 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
REST API ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
本地数据集 ⭐⭐⭐ ⭐⭐⭐⭐⭐
技能融合 ⭐⭐⭐⭐ 可选 可选 ⭐⭐⭐⭐⭐

🎯 推荐实施方案

阶段 1: 本地数据集集成(立即实施)

  1. 下载 prompts.csv 到本地
  2. 创建 LocalPromptsSkill 类
  3. 实现搜索和过滤功能
  4. 测试基本功能

阶段 2: API 集成(可选)

  1. 配置 prompts.chat API 访问
  2. 实现实时搜索
  3. 添加缓存机制
  4. 处理速率限制

阶段 3: MCP 集成(长期)

  1. 等待 OpenClaw 完整 MCP 支持
  2. 配置 MCP 服务器连接
  3. 实现工具调用
  4. 测试端到端流程

📁 推荐文件结构

~/.openclaw/workspace/
├── data/
│   └── prompts.csv                    # 主数据集
├── skills/
│   └── prompts-chat-integration/      # 集成技能
│       ├── SKILL.md
│       ├── scripts/
│       │   ├── prompts_search.py
│       │   ├── prompts_apply.py
│       │   └── sync_prompts.py
│       ├── data/
│       │   └── prompts.csv
│       └── references/
│           └── prompt-library.md
└── cache/
    └── prompts/                       # API 缓存

✅ 下一步行动

  1. 立即下载数据集

    curl -o ~/.openclaw/workspace/data/prompts.csv \
      https://raw.githubusercontent.com/f/prompts.chat/main/prompts.csv
    
  2. 创建集成技能

    mkdir -p ~/.openclaw/workspace/skills/prompts-chat-integration
    
  3. 实现搜索功能

    • 复制 LocalPromptsSkill 代码
    • 测试搜索功能
  4. 测试应用提示词

    • 在 OpenClaw 会话中加载技能
    • 搜索并应用提示词

🔗 相关资源

  • prompts.chat GitHub: https://github.com/f/prompts.chat
  • Hugging Face 数据集:https://huggingface.co/datasets/fka/prompts.chat
  • prompts.chat API 文档:https://prompts.chat/docs/api
  • OpenClaw 技能文档:~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/docs/
  • MCP 协议:https://modelcontextprotocol.io

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐