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:
2026-04-18 11:17:41 +08:00
commit c3ea38c045
33 changed files with 2677 additions and 0 deletions

View 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
# 注意: 需要浏览器扩展已连接
```