Phase 0-2: Schema cleanup, typed relations, event-driven automation

- Phase 0: AGENTS.md cleanup (dedup quotes, renumber sections, merge qmd)
- Phase 1: typed relations (manage-relations.py, graph-search.py, check-staleness.py, detect-conflicts.py)
- Phase 2: frontmatter validator, weekly lint, knowledge promotion, git hooks
- Fix .gitignore to track tools/ and .githooks/
- Fix git remote URL (remove plaintext token)
- New wiki pages: 504 pages, 34 raw sources
This commit is contained in:
hehaiguang1123
2026-07-01 08:05:43 +08:00
parent e544d6e04a
commit a6f05ab2d5
1067 changed files with 522992 additions and 819 deletions
@@ -0,0 +1,221 @@
---
created: 2026-04-14
title: 学术论文下载工具 (Academic Paper Downloader)
tags: [文献, 论文]
category: 文献库
---
# 学术论文下载工具 (Academic Paper Downloader)
> 为教育AI研究项目创建的学术论文批量下载工具,支持HTTP(S)/HTTPS重试、大文件分块下载、进度显示、日志记录
---
## 📋 功能特性
-**跨平台支持**Windows/Linux/macOS
-**自动重试**:默认3次,可自定义
-**超时控制**:默认300秒,可自定义
-**分块下载**:支持大文件(默认8KB/块)
-**进度显示**:实时显示下载进度和百分比
-**日志系统**:记录每次下载结果(成功/失败)
-**批量下载**:支持从配置文件批量下载
-**UTF-8编码**:强制UTF-8输出,避免中文路径问题
-**统计功能**:显示下载成功率、平均大小等
---
## 🚀 快速开始
### 方式1:单篇论文下载
```bash
python paper_downloader.py download https://cs.harvard.edu/malan/publications/V1fp0567-liu.pdf
```
**功能**
- 自动从URL提取文件名
- 自动创建目标目录
- 实时进度显示
- 完整错误处理
---
### 方式2:批量下载
1. **创建配置文件** `my_papers.json`
```json
{
"name": "我的论文集合",
"papers": [
{
"name": "Teaching CS50 with AI (SIGCSE 2024)",
"url": "https://cs.harvard.edu/malan/publications/V1fp0567-liu.pdf",
"filename": "Teaching_CS50_with_AI_SIGCSE2024.pdf",
"enabled": true
},
{
"name": "Improving AI in CS50 (SIGCSE 2025)",
"url": "https://cs.harvard.edu/malan/publications/fp0627-liu.pdf",
"filename": "Improving_AI_in_CS50_SIGCSE2025.pdf",
"enabled": true
}
]
}
```
2. **执行批量下载**
```bash
python paper_downloader.py config my_papers.json
```
**功能**
- 读取JSON配置
- 下载所有`enabled: true`的论文
- 显示下载统计
- 自动跳过`enabled: false`的论文
---
### 方式3:查看下载日志
```bash
python paper_downloader.py logs
```
**统计信息**
- 总下载次数
- 成功次数
- 失败次数
- 成功率
- 总下载大小
- 平均大小
---
## ⚙️ 高级选项
```bash
# 自定义超时时间(默认300秒)
python paper_downloader.py config my_papers.json --timeout 600
# 自定义重试次数(默认3次)
python paper_downloader.py config my_papers.json --retry 5
# 自定义分块大小(默认8192字节)
python paper_downloader.py config my_papers.json --chunk-size 16384
```
---
## 📂 配置文件结构
### 完整示例
```json
{
"name": "学术论文集合",
"description": "教育AI研究相关的学术论文下载配置",
"papers": [
{
"name": "论文标题",
"url": "https://example.com/paper.pdf",
"filename": "自定义文件名.pdf",
"enabled": true
}
]
}
```
### 配置文件管理
**创建示例配置**
```bash
python paper_downloader.py create-sample
```
**说明**:工具会在`configs/`目录下生成示例配置文件,可以直接修改使用。
---
## 🔧 优化建议
### 1. 网络优化
- 使用稳定的网络连接
- 避免高峰时段下载
- 启用下载加速(如果支持)
### 2. 批量下载策略
- **分批下载**:不要一次性下载太多论文,每次5-10篇
- **添加延迟**:每批之间添加10-30秒延迟
- **优先级排序**:重要论文优先下载
### 3. 存储管理
- **定期清理日志**:日志文件会持续增长,建议每月清理
- **分类存储**:按主题/机构创建子目录
- **文件验证**:下载后检查文件完整性
### 4. 错误处理
**常见错误及解决方案**
| 错误 | 原因 | 解决方案 |
|------|--------|----------|
| `URLError: <urlopen error>` | 网络连接问题 | 检查网络、重试 |
| `HTTPError: 404 Not Found` | 论文URL失效 | 更新URL或手动下载 |
| `HTTPError: 403 Forbidden` | 访问被拒绝 | 检查User-Agent、添加延迟 |
| `UnicodeEncodeError` | 文件名编码问题 | 使用UTF-8编码 |
---
## 📊 成功案例
已成功下载论文:
1.**Teaching CS50 with AI (SIGCSE 2024)** - 1,688,180 字节(~1.6 MB
2.**Improving AI in CS50 (SIGCSE 2025)** - 823,527 字节(~823 KB
下载位置:`D:\TC_UP\2023card\projects\openclaw\教育AI研究\高等教育AI专题\文献库\`
---
## 🎯 最佳实践
### 学术诚信
⚠️ **重要提醒**
- 下载的论文仅限个人学习和研究使用
- 请勿用于商业用途或大规模分发
- 遵守论文的版权协议
- 引用时请注明作者和来源
### 工作流建议
```
1. 下载论文 → 文献库/
2. 阅读论文 → 提取关键信息
3. 创建读书笔记 → Knowledge/
4. 更新Obsidian笔记链接
```
---
## 🔗 相关资源
- **论文下载工具**`D:\TC_UP\2023card\projects\openclaw\教育AI研究\高等教育AI专题\tools\paper_downloader.py`
- **文献库目录**`D:\TC_UP\2023card\projects\openclaw\教育AI研究\高等教育AI专题\文献库\`
- **示例配置**`configs/sample_config.json`
---
**版本**1.0.0
**更新时间**2026-04-14
**作者**Sisyphus (AI助手)
**许可证**MIT