lllin000_PaperForge/docs/setup-guide.md
Research Assistant d5818e8acd fix: overhaul install flow clarity and non-destructive incremental setup
- Move Better BibTeX auto-export to post-install step (exports dir created by setup)
- Clarify wizard overview: show resources_dir/literature_dir/control_dir hierarchy
- Fix post-install flow order: BBT export → enable plugin → dashboard → sync
- Split do_ocr and analyze marks into separate steps (OCR before deep-reading)
- Mark all literature flags via Base views, not manual file editing
- Make installer incremental: preserve existing files, only create missing ones
- Remove destructive junction/link deletion in TUI wizard
- Merge .env instead of overwriting; skip overwrite for AGENTS.md, docs, plugin
- Update TUI, headless, and plugin completion output to match corrected flow
- Add regression test for non-destructive setup behavior
2026-05-06 22:47:07 +08:00

593 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PaperForge 安装配置与使用指南
> 本文档面向**首次使用 PaperForge 的新用户**,从零开始覆盖安装、配置、使用全流程。
---
## 目录
1. [前置条件](#1-前置条件)
2. [安装 PaperForge](#2-安装-paperforge)
3. [运行安装向导](#3-运行安装向导)
4. [配置 Zotero 和 Better BibTeX](#4-配置-zotero-和-better-bibtex)
5. [验证安装](#5-验证安装)
6. [首次使用流程](#6-首次使用流程)
7. [日常使用命令](#7-日常使用命令)
8. [更新 PaperForge](#8-更新-paperforge)
9. [故障排除](#9-故障排除)
---
## 1. 前置条件
### 1.1 需要安装的软件
| 软件 | 版本要求 | 用途 | 下载地址 |
|------|---------|------|---------|
| Python | 3.10+ | 运行 PaperForge | https://python.org/downloads/ |
| Zotero | 最新版 | 文献管理 | https://zotero.org/download/ |
| Better BibTeX | 最新版 | Zotero 插件 | https://retorque.re/zotero-better-bibtex/installation/ |
| Obsidian | 最新版 | 笔记软件 | https://obsidian.md/download/ |
| Git | 可选 | 手动更新 | https://git-scm.com/downloads/win |
### 1.2 需要申请的 API Key
- **PaddleOCR API Key**:用于 PDF 自动 OCR 提取
- 访问 https://paddleocr.baidu.com
- 注册账号 → 创建应用 → 获取 API Token
- 免费额度通常足够个人使用
### 1.3 确认 Zotero 已有文献
在开始安装前,确保:
1. Zotero 已安装并打开过至少一次
2. Zotero 中已有至少一篇带 PDF 附件的文献
3. Better BibTeX 插件已安装Zotero → 工具 → 插件 → 搜索 Better BibTeX
> 安装向导是**增量式**的:如果你选择的 Vault 或目录里已经有文件PaperForge 只会创建缺失的目录和文件,不会删除已有内容。
---
## 2. 安装 PaperForge
### 方式 Apip 安装(推荐)
打开 PowerShellWindows或终端macOS/Linux
```powershell
pip install git+https://github.com/LLLin000/PaperForge.git
```
验证安装:
```powershell
paperforge --help
```
如果看到命令列表,说明安装成功。
### 方式 B一键安装脚本Windows 新用户)
如果不太熟悉命令行,使用一键脚本:
```powershell
powershell -c "iwr -Uri https://raw.githubusercontent.com/LLLin000/PaperForge/master/scripts/install-paperforge.ps1 -OutFile install.ps1; ./install.ps1"
```
脚本会自动检查 Python、安装 PaperForge然后提示运行 `paperforge setup`
### 方式 C从源码安装开发者用
```powershell
git clone https://github.com/LLLin000/PaperForge.git
cd PaperForge
pip install -e .
```
---
## 3. 运行安装向导
### 3.1 启动向导
```powershell
paperforge setup
```
你会看到一个图形化界面(终端内的交互式界面)。
这一步会把 PaperForge 需要的文件部署到当前 Vault包括 `.obsidian/plugins/paperforge/`。在这一步完成之前Obsidian 里还不能启用插件,也不能打开 Dashboard。
### 3.2 向导步骤详解
**第 1 步:概览**
- 向导会先展示目录层级,帮助你理解哪些内容在 Vault 根目录,哪些内容在 `resources_dir` 下面
- 重点关系是:
- `<resources_dir>/<literature_dir>/`:正式文献笔记
- `<resources_dir>/<control_dir>/library-records/`:每篇文献的状态跟踪
- `<system_dir>/PaperForge/exports/`Better BibTeX JSON 导出目录
- 这一步也会明确说明:如果目标目录里已有文件,安装只做增量创建,不覆盖已有内容
**第 2 步:目录配置**
- 在这里设置目录名称,而不是手动创建目录
- 默认结构如下:
- `99_System`系统文件、OCR 结果、exports、worker
- `03_Resources`:用户文献数据根目录
- `03_Resources/Literature`:正式文献笔记
- `03_Resources/LiteratureControl/library-records`:状态卡片
- `05_Bases`Obsidian Base 视图
**第 3 步:平台与密钥**
- 选择 Agent 平台OpenCode / Cursor / Claude Code / Windsurf / GitHub Copilot / Cline / Augment / Trae
- **如果不确定,选 OpenCode**
- 填写 PaddleOCR API Key
- 可选填写 Zotero 数据目录,便于自动定位 PDF
**第 4 步:安装**
- 向导会自动:
1. 创建缺失目录
2. 部署 worker、技能和插件文件
3. 写入 `paperforge.json`
4. 创建或补充 `.env`
5. 验证安装结果
**第 5 步:完成**
- 先回到 Obsidian 启用插件:`Settings -> Community Plugins -> Installed -> PaperForge -> Enable`
- 然后再配置 Better BibTeX 自动导出
- 最后才是打开 Dashboard、运行 `Sync Library`、运行 OCR
### 3.3 安装后文件结构
安装完成后,你的 vault 目录结构如下:
```
your-vault/
├── [system_dir]/ # 你自定义的系统目录
│ └── PaperForge/
│ ├── exports/ # Better BibTeX JSON 导出(自动生成)
│ ├── ocr/ # OCR 结果(自动生成)
│ │ └── [zotero_key]/ # 每篇文献一个目录
│ │ ├── meta.json # OCR 状态
│ │ ├── fulltext.md # OCR 全文
│ │ ├── images/ # 图表图片
│ │ └── figure-map.json
│ ├── config/
│ │ └── domain-collections.json
│ ├── worker/scripts/ # 工作流脚本
│ └── .env # PaddleOCR API Key
├── [resources_dir]/ # 你自定义的资源目录
│ ├── [literature_dir]/ # 正式文献笔记
│ │ └── [domain]/ # 按 Zotero 分类
│ │ └── [key] - [Title].md # 正式文献笔记
│ └── [control_dir]/ # 文献状态控制
│ └── library-records/
│ └── [domain]/
│ └── [key].md # 单条文献状态
├── [base_dir]/ # Obsidian Base 视图
│ └── [domain].base # 每个分类一个 Base
├── [skill_dir]/ # Agent 技能
│ └── literature-qa/
│ ├── scripts/ld_deep.py
│ ├── prompt_deep_subagent.md
│ └── chart-reading/ # 19 种图表指南
├── .env # API Key仅供 CLI 读取)
├── paperforge.json # 配置
└── AGENTS.md # 本指南
```
---
## 4. 配置 Zotero 和 Better BibTeX
### 4.1 配置 Better BibTeX 自动导出
这一步要在安装向导完成后再做,因为 `exports/` 目录要先由安装流程创建。
这一步是关键——PaperForge 通过 Better BibTeX 的自动导出 JSON 来感知 Zotero 中的文献变化。
1. 打开 Zotero
2. 对你要同步的文献库或分类右键 → **Export... / 导出...**
3. **导出格式**:选择 **Better BibTeX JSON**
4. **勾选 "Keep updated"**(自动导出)
5. **导出路径**设置为:
```
{你的Vault路径}/[system_dir]/PaperForge/exports/library.json
```
例如:`C:\MyVault\99_System\PaperForge\exports\library.json`
6. **点击保存**
### 4.2 按分类导出(可选)
如果你希望按 Zotero 收藏夹分类导出(推荐),可以:
1. 在 Zotero 中创建多个收藏夹(如:骨科、运动医学、肿瘤学)
2. 在每个收藏夹上右键 → **Export Collection...**
3. 导出为 Better BibLaTeX 格式
4. 保存到 `exports/` 目录:`exports/骨科.json`、`exports/运动医学.json`
5. **勾选 "Keep updated"**
这样 PaperForge 会按分类组织你的文献笔记。
### 4.3 验证 JSON 导出
检查导出文件是否生成:
```powershell
dir {vault_path}/[system_dir]/PaperForge/exports/*.json
```
应该能看到 `.json` 文件。
---
## 5. 验证安装
### 5.1 运行诊断
```powershell
paperforge doctor
```
预期输出包含:
- Python 版本检测 ✓
- Vault 结构检测 ✓
- Zotero 检测 ✓
### 5.2 查看路径
```powershell
paperforge paths
```
显示所有 PaperForge 路径,确认目录结构正确。
### 5.3 查看状态
```powershell
paperforge status
```
显示系统概览,包括:
- PaperForge 版本
- Vault 路径
- 各目录状态
- OCR 配置状态
---
## 6. 首次使用流程
### 6.1 同步 Zotero 文献
```powershell
paperforge sync
```
这个命令会完成两件事:
1. **selection-sync**:读取 BBT JSON 导出,为每篇文献创建 `library-records/[domain]/[key].md`
2. **index-refresh**:生成正式文献笔记 `Literature/[domain]/[key] - [Title].md`,创建 Obsidian Base 视图
预期输出:
```
[INFO] Found 5 new items
[INFO] Created library-records/骨科/XXXXXXX.md
[INFO] Generated 5 formal notes
```
### 6.2 在 Obsidian 中查看
打开 Obsidian你应该能看到
- `[resources_dir]/Literature/` 下有了文献笔记
- `[base_dir]/` 下有了 `.base` 文件Base 视图)
- 在 Obsidian 的 Base 插件中可以看到控制面板
### 6.3 在 Base 视图中标记 OCR
在 Obsidian Base 视图中找到该文献,将 `do_ocr` 设为 `true`。保存后该文献会进入 OCR 队列。
### 6.4 运行 OCR
```powershell
paperforge ocr
```
新版 `paperforge ocr` 是**一步到位**的:
1. **上传阶段**:将 PDF 上传到 PaddleOCR API
2. **等待阶段**:自动轮询,每 15 秒检查一次进度
3. **下载阶段**OCR 完成后自动下载全文和图表
4. 全程不需要用户干预
预期输出:
```
Processing OCR: 100%|████| 2/2 [00:00]
Uploading: 100%|████| 2/2 [00:01]
Waiting OCR: 100%|████| 2/2 [00:30]
ocr: updated 2 records
```
输出文件:
- `[system_dir]/PaperForge/ocr/[key]/fulltext.md` — 全文
- `[system_dir]/PaperForge/ocr/[key]/images/` — 图表图片
- `[system_dir]/PaperForge/ocr/[key]/meta.json` — OCR 元数据
- `[system_dir]/PaperForge/ocr/[key]/figure-map.json` — 图表索引
### 6.5 在 Base 视图中标记精读
OCR 完成后,在 Obsidian Base 视图中找到该文献,将 `analyze` 设为 `true`
### 6.6 执行精读
在 OpenCode 中(或你选择的 Agent 平台)输入:
```
/pf-deep XXXXXXX
```
Agent 会自动:
**第 1 步前置准备prepare**
- 检查 library-record 状态
- 确认 OCR 已完成
- 生成 figure-map 和 chart-type-map
- 插入 `## 🔍 精读` 骨架(包含所有 figure/table 的 callout 块)
- 每个 callout 块内有 6 个固定子标题
**第 2 步Pass 1 概览**
- AI 填写"一句话总览"和"5 Cs 快速评估"
**第 3 步Pass 2 精读还原**
- AI 按顺序逐个填写 figure callout 块
- 每块有固定子标题:图像定位、方法结果、质量审查、作者解释、我的理解、疑点
- AI 读取 chart-type-map参考对应的图表阅读指南
- 每填写完一张图保存一次
- **完成后自动检查**:顺序、图片边界、空块、缺失子标题
**第 4 步Pass 3 深度理解**
- AI 编写假设挑战、结论评估、研究启发
**第 5 步:最终验证**
- 运行 validate-note 检查结构完整性
整个精读过程约 5-15 分钟(取决于论文长度),完成后在 Obsidian 中打开文献笔记即可看到 `## 🔍 精读` 区域。
### 6.6 快速摘要(不要求 OCR
如果只想看论文摘要而不需要完整精读:
```
/pf-paper XXXXXXX
```
这个命令不需要 OCR 完成,只要有正式笔记即可。
---
## 7. 日常使用命令
### 7.1 终端命令
| 命令 | 用途 | 说明 |
|------|------|------|
| `paperforge status` | 查看系统状态 | 诊断各组件健康度 |
| `paperforge sync` | 同步 Zotero 并生成笔记 | 新增/更新文献时运行 |
| `paperforge ocr` | 运行 OCR | 一步到位,等待完成后返回 |
| `paperforge ocr --diagnose` | 诊断 OCR 配置 | 检查 token/URL/API |
| `paperforge deep-reading` | 查看精读队列 | 显示可精读的文献列表 |
| `paperforge doctor` | 诊断整体配置 | 验证安装完整性 |
| `paperforge update` | 更新到最新版 | 自动检测安装方式 |
| `paperforge setup` | 重新运行安装向导 | 修改配置时使用 |
| `paperforge --verbose` | 启用 DEBUG 日志 | 配合任意命令使用 |
### 7.2 Agent 命令(在 OpenCode 中使用)
| 命令 | 用途 |
|------|------|
| `/pf-deep <key>` | 完整三阶段精读 |
| `/pf-paper <key>` | 快速摘要 |
| `/pf-sync` | 同步 ZoteroAgent 解读状态) |
| `/pf-ocr` | 运行 OCRAgent 检查队列) |
| `/pf-status` | 查看状态Agent 解读诊断) |
### 7.3 OCR 配置环境变量
| 环境变量 | 默认值 | 说明 |
|---------|--------|------|
| `PADDLEOCR_API_TOKEN` | — | PaddleOCR API Key |
| `PADDLEOCR_JOB_URL` | `https://paddleocr.aistudio-app.com/api/v2/ocr/jobs` | API 地址 |
| `PADDLEOCR_MODEL` | `PaddleOCR-VL-1.5` | OCR 模型 |
| `PADDLEOCR_MAX_ITEMS` | 3 | 并发 OCR 数 |
| `PAPERFORGE_RETRY_MAX` | 5 | 上传重试次数 |
| `PAPERFORGE_RETRY_BACKOFF` | 2.0 | 重试退避秒数 |
| `PAPERFORGE_POLL_MAX_CYCLES` | 20 | OCR 轮询最大次数 |
| `PAPERFORGE_POLL_INTERVAL` | 15 | 轮询间隔秒数 |
| `PAPERFORGE_ZOMBIE_TIMEOUT_MINUTES` | 30 | 僵尸任务超时(分钟) |
| `PAPERFORGE_LOG_LEVEL` | INFO | 日志级别 |
---
## 8. 更新 PaperForge
### 8.1 自动更新
```powershell
paperforge update
```
自动检测当前安装方式pip / pip editable / git clone执行对应的更新命令。
### 8.2 手动更新
**pip 安装用户:**
```powershell
pip install --upgrade git+https://github.com/LLLin000/PaperForge.git
```
**pip editable 安装用户:**
```powershell
cd {仓库目录}
git pull origin master
pip install -e .
```
**Windows 一键脚本:**
```powershell
.\scripts\install-paperforge.ps1 -Force
```
### 8.3 查看版本
```powershell
python -c "import paperforge; print(paperforge.__version__)"
```
---
## 9. 故障排除
### 9.1 paperforge 命令找不到
```powershell
# 检查 pip 安装
pip list | findstr paperforge
# 如果未安装,重新安装
pip install git+https://github.com/LLLin000/PaperForge.git
# 如果已安装但命令不在 PATH使用 fallback
python -m paperforge status
```
### 9.2 同步后没有生成 library-records
```
# 检查 JSON 导出文件是否存在
dir {vault}/[system_dir]/PaperForge/exports/*.json
# 确认 JSON 文件有内容
python -c "import json; d=json.loads(open('exports/library.json',encoding='utf-8').read()); print(len(d.get('items',[]) if isinstance(d,dict) else d),'items')"
```
**常见原因:**
- Better BibTeX 自动导出路径配置错误
- JSON 文件为空
- Zotero 中没有带 citation key 的条目
**修复:**
1. Zotero → Edit → Preferences → Better BibTeX → 确认"Keep updated"已勾选
2. 确认导出路径正确
3. 手动在 Zotero 中选一篇文献 → 右键 → Generate BibTeX key
### 9.3 OCR 一直显示 pending
```
# 运行 OCR 诊断
paperforge ocr --diagnose
# 查看具体文献的 OCR 状态
cat {vault}/[system_dir]/PaperForge/ocr/[key]/meta.json
```
**常见原因:**
- PaddleOCR API Key 未配置或无效
- 网络连接问题API 地址不可达)
- PDF 文件路径错误
**修复:**
- 检查 `.env``PADDLEOCR_API_TOKEN` 是否正确
- 运行 `paperforge doctor` 查看整体状态
### 9.4 PDF 路径无法解析
```
# 报错信息
ERROR:paperforge.pdf_resolver:PDF path could not be resolved: storage:XXXX/filename.pdf
```
**原因**Zotero 数据目录链接junction/symlink不正确。
**修复:**
1. 确认 Zotero 数据目录位置
2. 重新创建 junction
```powershell
# 删除旧的链接
rmdir "{vault}/[system_dir]/Zotero"
# 创建新链接(管理员终端)
New-Item -ItemType Junction -Path "{vault}/[system_dir]/Zotero" -Target "C:\Users\用户名\Zotero"
```
或者:
```powershell
# 在 .env 中手动指定 Zotero 数据目录
ZOTERO_DATA_DIR=C:\Users\用户名\Zotero
```
### 9.5 Base 视图不显示数据
- Base 视图需要手动刷新:在 Obsidian 中点击 Refresh 按钮
- 或退出 Obsidian 重新打开
### 9.6 更新后出现异常
```powershell
# 查看完整日志
paperforge status --verbose
# 如果问题持续,重新安装
pip install --force-reinstall git+https://github.com/LLLin000/PaperForge.git
```
---
## 附录
### A. Better BibTeX 配置参考
Zotero → Edit → Preferences → Better BibTeX
```
☑ Keep updated
Export format: Better BibLaTeX
Export path: {vault}/[system_dir]/PaperForge/exports/library.json
Citation key format: [auth:lower]_[year]
```
### B. paperforge.json 参考
```json
{
"name": "PaperForge-Lite",
"version": "1.4.1",
"repository": "https://github.com/LLLin000/PaperForge",
"system_dir": "99_System",
"resources_dir": "03_Resources",
"literature_dir": "Literature",
"control_dir": "LiteratureControl",
"base_dir": "05_Bases",
"auto_analyze_after_ocr": false,
"update": {
"channel": "stable",
"auto_check": true,
"check_interval_days": 7
}
}
```
### C. .env 文件参考
```
PADDLEOCR_API_TOKEN=your_api_token_here
PADDLEOCR_JOB_URL=https://paddleocr.aistudio-app.com/api/v2/ocr/jobs
PADDLEOCR_MODEL=PaddleOCR-VL-1.5
ZOTERO_DATA_DIR=C:\Users\用户名\Zotero
```
### D. 目录名称速查
| 配置项 | 默认值 | 用途 |
|-------|--------|------|
| system_dir | `99_System` | 系统文件 |
| resources_dir | `03_Resources` | 文献资源 |
| literature_dir | `Literature` | 正式笔记 |
| control_dir | `LiteratureControl` | 状态控制 |
| base_dir | `05_Bases` | Obsidian Base |
| skill_dir | `.opencode/skills` | Agent 技能 |