feat(repo): 整理 Qoder Skills 和 MCP 配置到仓库
- 添加 5 个用户级别 Skills: - auto-commit: 自动 Git 提交 - karpathy-guidelines: 编码规范指南 - opencli-websearch: 多源网络搜索 - pdf-reader: PDF 内容提取 - repo-analyzer: 项目深度分析 - 添加 Playwright MCP 配置 (21 个浏览器自动化工具) - 创建完整的 README.md 文档说明
This commit is contained in:
286
skills/opencli-websearch/SKILL.md
Normal file
286
skills/opencli-websearch/SKILL.md
Normal file
@@ -0,0 +1,286 @@
|
||||
---
|
||||
name: opencli-websearch
|
||||
description: 使用 Qoder WebSearch 和 OpenCLI 同时进行多源网络搜索,合并结果并提供全面的信息检索。支持谷歌、知乎、ArXiv、小红书、StackOverflow、HackerNews 等多个数据源。当用户需要搜索信息、研究话题或获取多源数据时自动使用。
|
||||
---
|
||||
|
||||
# OpenCLI 多源 Web 搜索
|
||||
|
||||
## 概述
|
||||
|
||||
本 Skill 提供**并行搜索能力**,同时使用 Qoder 内置 WebSearch 和 OpenCLI 的多源适配器进行搜索,合并结果以提供更全面的信息覆盖。
|
||||
|
||||
## 搜索策略
|
||||
|
||||
### 并行搜索架构
|
||||
|
||||
```
|
||||
用户查询
|
||||
├──→ Qoder WebSearch (通用搜索)
|
||||
└──→ OpenCLI 多源搜索
|
||||
├──→ 学术源: arxiv
|
||||
├──→ 技术源: stackoverflow, hackernews
|
||||
├──→ 社交源: xiaohongshu, zhihu (需浏览器)
|
||||
├──→ 新闻源: 36kr, bbc, reuters
|
||||
└──→ 通用源: google (需浏览器)
|
||||
```
|
||||
|
||||
### 数据源分类
|
||||
|
||||
| 类别 | 数据源 | 模式 | 适用场景 |
|
||||
|-----|-------|------|---------|
|
||||
| **学术** | arxiv | 公开 | 论文、研究 |
|
||||
| **技术** | stackoverflow, hackernews | 公开 | 编程、技术讨论 |
|
||||
| **中文社交** | zhihu, xiaohongshu | 浏览器 | 中文社区内容 |
|
||||
| **新闻** | 36kr, bbc, reuters | 公开 | 时事新闻 |
|
||||
| **通用** | google | 浏览器 | 广泛搜索 |
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 基本搜索
|
||||
|
||||
当用户需要搜索信息时,自动执行以下流程:
|
||||
|
||||
1. **启动并行搜索**
|
||||
- 调用 Qoder WebSearch
|
||||
- 同时调用 OpenCLI 多源搜索
|
||||
|
||||
2. **OpenCLI 搜索执行**
|
||||
|
||||
```bash
|
||||
# 学术搜索
|
||||
opencli arxiv search "{query}" --limit 5
|
||||
|
||||
# 技术搜索
|
||||
opencli stackoverflow search "{query}" --limit 5
|
||||
opencli hackernews top # 或搜索相关
|
||||
|
||||
# 新闻搜索 (36kr 支持中文)
|
||||
opencli 36kr search "{query}" --limit 5
|
||||
|
||||
# 其他公开源
|
||||
opencli gitee search "{query}" --limit 5
|
||||
```
|
||||
|
||||
3. **结果合并与去重**
|
||||
- 合并所有来源的结果
|
||||
- 按相关性和来源多样性排序
|
||||
- 标注每个结果的来源
|
||||
|
||||
### 深度内容获取
|
||||
|
||||
对于重要结果,使用 OpenCLI 下载完整内容:
|
||||
|
||||
```bash
|
||||
# 下载网页内容为 Markdown
|
||||
opencli web read --url "{url}" --output "{output_path}"
|
||||
```
|
||||
|
||||
### 临时数据存储
|
||||
|
||||
所有下载的内容存储在:
|
||||
```
|
||||
~/Downloads/opencli-websearch-data/
|
||||
├── {timestamp}_{query_hash}/
|
||||
│ ├── metadata.json # 搜索元数据
|
||||
│ ├── results.json # 合并后的搜索结果
|
||||
│ └── content/
|
||||
│ ├── arxiv_{id}.md
|
||||
│ ├── web_{hash}.md
|
||||
│ └── ...
|
||||
```
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Step 1: 分析查询意图
|
||||
|
||||
判断查询类型以选择最佳数据源:
|
||||
- **学术/研究** → 优先 arxiv, google-scholar
|
||||
- **编程/技术** → 优先 stackoverflow, hackernews
|
||||
- **中文内容** → 优先 zhihu, xiaohongshu, 36kr
|
||||
- **新闻/时事** → 优先 bbc, reuters, 36kr
|
||||
- **通用查询** → 全源搜索
|
||||
|
||||
### Step 2: 并行执行搜索
|
||||
|
||||
```python
|
||||
# 伪代码示意
|
||||
sources = select_sources(query_intent)
|
||||
results = {}
|
||||
|
||||
# Qoder WebSearch
|
||||
results['qoder'] = websearch(query)
|
||||
|
||||
# OpenCLI 多源搜索
|
||||
for source in sources:
|
||||
results[source] = opencli_search(source, query)
|
||||
```
|
||||
|
||||
### Step 3: 结果处理
|
||||
|
||||
1. **格式化**: 统一不同来源的结果格式
|
||||
2. **去重**: 基于 URL 和标题相似度去重
|
||||
3. **排序**: 按来源权威性和相关性排序
|
||||
4. **摘要**: 为每个结果生成简要摘要
|
||||
|
||||
### Step 4: 深度获取(可选)
|
||||
|
||||
对于高相关性结果:
|
||||
1. 使用 `opencli web read` 获取完整内容
|
||||
2. 存储到本地临时目录
|
||||
3. 提供内容摘要给用户
|
||||
|
||||
## 输出格式
|
||||
|
||||
### 搜索结果报告
|
||||
|
||||
```markdown
|
||||
## 搜索结果: {query}
|
||||
|
||||
### 概览
|
||||
- 搜索源: {sources}
|
||||
- 总结果数: {count}
|
||||
- 存储位置: ~/Downloads/opencli-websearch-data/{timestamp}/
|
||||
|
||||
### 按来源分类
|
||||
|
||||
#### 学术来源
|
||||
1. [标题](url) - arxiv
|
||||
- 摘要: ...
|
||||
|
||||
#### 技术来源
|
||||
1. [标题](url) - stackoverflow
|
||||
- 摘要: ...
|
||||
|
||||
#### 中文来源
|
||||
1. [标题](url) - zhihu
|
||||
- 摘要: ...
|
||||
|
||||
### 推荐深度阅读
|
||||
- [文档1](path) - 已下载完整内容
|
||||
- [文档2](path) - 已下载完整内容
|
||||
```
|
||||
|
||||
## 工具函数
|
||||
|
||||
### 执行 OpenCLI 搜索
|
||||
|
||||
```python
|
||||
def opencli_search(source: str, query: str, limit: int = 5) -> list:
|
||||
"""
|
||||
使用 OpenCLI 搜索指定数据源
|
||||
|
||||
Args:
|
||||
source: 数据源名称 (arxiv, stackoverflow, etc.)
|
||||
query: 搜索查询
|
||||
limit: 结果数量限制
|
||||
|
||||
Returns:
|
||||
搜索结果列表
|
||||
"""
|
||||
# 构建命令
|
||||
cmd = f"opencli {source} search '{query}' --limit {limit}"
|
||||
# 执行并解析结果
|
||||
...
|
||||
```
|
||||
|
||||
### 下载文档内容
|
||||
|
||||
```python
|
||||
def download_content(url: str, output_dir: str) -> str:
|
||||
"""
|
||||
使用 OpenCLI web read 下载文档
|
||||
|
||||
Args:
|
||||
url: 文档 URL
|
||||
output_dir: 输出目录
|
||||
|
||||
Returns:
|
||||
下载文件的本地路径
|
||||
"""
|
||||
filename = hash(url) + ".md"
|
||||
output_path = os.path.join(output_dir, filename)
|
||||
cmd = f"opencli web read --url '{url}' --output '{output_path}'"
|
||||
# 执行命令
|
||||
...
|
||||
return output_path
|
||||
```
|
||||
|
||||
### 创建存储目录
|
||||
|
||||
```python
|
||||
def create_storage_dir(query: str) -> str:
|
||||
"""
|
||||
创建临时存储目录
|
||||
|
||||
Returns:
|
||||
存储目录路径
|
||||
"""
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
query_hash = hashlib.md5(query.encode()).hexdigest()[:8]
|
||||
dir_name = f"{timestamp}_{query_hash}"
|
||||
storage_path = os.path.expanduser(f"~/Downloads/opencli-websearch-data/{dir_name}")
|
||||
os.makedirs(storage_path, exist_ok=True)
|
||||
os.makedirs(os.path.join(storage_path, "content"), exist_ok=True)
|
||||
return storage_path
|
||||
```
|
||||
|
||||
## 错误处理
|
||||
|
||||
### 常见错误
|
||||
|
||||
| 错误码 | 原因 | 解决方案 |
|
||||
|-------|------|---------|
|
||||
| BROWSER_CONNECT | 浏览器扩展未连接 | 提示用户打开 Chrome 并启用扩展 |
|
||||
| TIMEOUT | 搜索超时 | 减少结果数量或更换数据源 |
|
||||
| NOT_FOUND | 无搜索结果 | 尝试其他数据源或修改查询词 |
|
||||
|
||||
### 降级策略
|
||||
|
||||
当某个数据源失败时:
|
||||
1. 记录错误信息
|
||||
2. 继续处理其他数据源
|
||||
3. 在结果中标注失败的数据源
|
||||
4. 建议用户可选的替代方案
|
||||
|
||||
## 最佳实践
|
||||
|
||||
1. **查询优化**: 对于中文查询,优先使用中文数据源
|
||||
2. **结果数量**: 每个源默认获取 5 条,避免过多噪声
|
||||
3. **深度获取**: 只对高相关性结果下载完整内容
|
||||
4. **存储管理**: 定期清理 ~/Downloads/opencli-websearch-data/ 下的旧数据
|
||||
5. **来源标注**: 始终标注每个结果的来源,便于用户判断可信度
|
||||
|
||||
## 示例
|
||||
|
||||
### 示例 1: 学术研究
|
||||
|
||||
用户: "搜索关于大语言模型路由的论文"
|
||||
|
||||
执行:
|
||||
```bash
|
||||
# 并行搜索
|
||||
opencli arxiv search "large language model routing" --limit 5
|
||||
opencli arxiv search "LLM router" --limit 5
|
||||
# Qoder websearch 同时执行
|
||||
```
|
||||
|
||||
### 示例 2: 技术问题
|
||||
|
||||
用户: "Python 异步编程最佳实践"
|
||||
|
||||
执行:
|
||||
```bash
|
||||
opencli stackoverflow search "python async best practices" --limit 5
|
||||
opencli hackernews top | grep -i python
|
||||
# Qoder websearch 同时执行
|
||||
```
|
||||
|
||||
### 示例 3: 中文内容
|
||||
|
||||
用户: "小红书上的 AI 工具推荐"
|
||||
|
||||
执行:
|
||||
```bash
|
||||
opencli xiaohongshu search "AI工具推荐" --limit 5
|
||||
# 注意: 需要浏览器扩展已连接
|
||||
```
|
||||
Reference in New Issue
Block a user