从 IMA 文献分析 skill(ima-paper-analysis)的分析流程中剥离出来的纯本地版本。
去掉了所有 IMA API 调用和 COS 上传依赖,仅保留文献分析的核心能力。
| 来源 | ima-paper-analysis(旧) |
|---|---|
| ------ | -------------------------- |
| 分析流程 | 沿用 12 要素结构化分析框架 |
| 模板格式 | 沿用原有 TEMPLATE.md 格式 |
| 本地存储 | 沿用 ~/.local/share/ima-kb-backup/ 目录结构 |
| 学术诚信要求 | 严格一致 |
| 变更 | 旧版依赖 IMA API | 本版纯本地 |
|---|---|---|
| ------ | ----------------- | ----------- |
| 获取文献 | 自动调用 IMA API | 引导用户手动下载 PDF 到本地 |
| 保存总结 | COS 上传到 IMA 知识库 | 保存到本地文件系统 |
| 凭证要求 | IMA client_id/api_key | 不需要任何 API 凭证 |
| COS 上传 | 复杂凭证处理 | 不需要 |
[推断]。绝不编造数据。%PDF-),非PDF文件不处理。pdfplumber(已安装 v0.11.9)。~/.local/share/ima-kb-backup/paper-summaries/TEMPLATE.md 作为总结模板。# 检查本地知识库目录
BACKUP_DIR="$HOME/.local/share/ima-kb-backup"
mkdir -p "$BACKUP_DIR"/{raw-pdfs,paper-summaries,literature-catalog,scripts}
# 检查 pdfplumber
~/.hermes/hermes-agent/venv/bin/python3 -c "import pdfplumber; print('✅ pdfplumber:', pdfplumber.__version__)" || echo "❌ pdfplumber 缺失"
# 确保模板存在
TEMPLATE="$BACKUP_DIR/paper-summaries/TEMPLATE.md"
if [ ! -f "$TEMPLATE" ]; then
echo "⚠️ 模板不存在,将在 Phase 4 中自动创建"
fi
引导用户提供 PDF 文件。不接受 IMA 知识库自动拉取。
# 用户直接给路径
PDF_PATH="/path/to/paper.pdf"
# 验证文件存在
test -f "$PDF_PATH" && echo "✅ 文件存在" || echo "❌ 文件不存在"
# 验证 PDF 格式
head -c 4 "$PDF_PATH" | grep -q "%PDF" && echo "✅ 有效PDF" || echo "❌ 不是PDF文件"
用户提供路径后,可以选择复制到 raw-pdfs/ 目录归档:
cp "$PDF_PATH" ~/.local/share/ima-kb-backup/raw-pdfs/
当用户说"帮我分析IMA里的那篇论文"时,引导用户:
📋 请按以下步骤操作:
1. 打开 IMA(腾讯元宝)知识库
2. 找到你要分析的那篇文献
3. 右键点击 → 下载/导出 PDF 到本地
4. 告诉我下载后的文件路径,我来分析
本地路径示例:
- ~/Downloads/论文名称.pdf
- ~/Desktop/论文名称.pdf
当用户说"把还没分析过的 PDF 都处理了"时:
BACKUP_DIR="$HOME/.local/share/ima-kb-backup"
RAW_DIR="$BACKUP_DIR/raw-pdfs"
SUMMARY_DIR="$BACKUP_DIR/paper-summaries"
# 列出 raw-pdfs 中所有 PDF
for pdf in "$RAW_DIR"/*.pdf; do
[ -f "$pdf" ] || continue
basename=$(basename "$pdf" .pdf)
# 检查是否已有对应的总结
if [ -f "$SUMMARY_DIR/${basename}*.md" ]; then
echo "⏭️ 已分析: $basename"
continue
fi
echo "📄 待分析: $basename"
done
PYTHON="$HOME/.hermes/hermes-agent/venv/bin/python3"
$PYTHON -c "
import pdfplumber, json, sys
pdf_path = sys.argv[1]
with pdfplumber.open(pdf_path) as pdf:
text_parts = []
tables = []
for i, page in enumerate(pdf.pages, 1):
text = page.extract_text()
if text:
text_parts.append(f'[第{i}页]\\n{text}')
for j, table in enumerate(page.extract_tables()):
if table:
tables.append({'page': i, 'index': j, 'data': table})
print('TEXT_START')
print('\\n\\n'.join(text_parts))
print('TABLES_START')
print(json.dumps(tables, ensure_ascii=False))
" "$PDF_PATH"
对提取的文本,按以下 12 个要素逐一提取:
| 要素 | 提取内容 | 来源位置 |
|---|---|---|
| ------ | ---------- | ---------- |
| 研究背景 | 实践/理论/政策背景 | 引言开头 |
| 研究问题 | 核心研究问题 + 子问题 | 引言/摘要 |
| 研究结论 | 对研究问题的直接回答 | 结论部分 |
| 文献综合 | 已有研究的分类梳理 | 文献综述 |
| 文献批评 | Research Gap | 文献综述结尾 |
| 研究方法 | 范式/数据来源/样本/工具 | 方法论 |
| 理论框架 | 理论基础 + 概念界定 | 理论部分 |
| 一致性发现 | 与已有研究一致的发现 | 讨论部分 |
| 不一致性发现 | 与已有研究不一致的发现 | 讨论部分 |
| 研究贡献 | 理论/实践/方法贡献 | 结论 |
| 研究不足 | 作者自述或推断的局限 | 结论 |
| 未来展望 | 未来研究方向 | 结论 |
TEMPLATE="$HOME/.local/share/ima-kb-backup/paper-summaries/TEMPLATE.md"
if [ ! -f "$TEMPLATE" ]; then
cat > "$TEMPLATE" << 'TMPL'
# {论文标题}
> **文献类型**:{期刊/会议/学位论文}
> **来源**:{期刊名/会议名}
> **年份**:{年份}
## 基本信息
| 项目 | 内容 |
|------|------|
| 标题 | {标题} |
| 作者 | {作者} |
| 年份 | {年份} |
| 期刊/来源 | {来源} |
| 关键词 | {关键词} |
## 摘要
{原文摘要}
## 结构化分析
### 1. 研究背景
{背景}
### 2. 研究问题
{研究问题}
### 3. 研究结论
{研究结论}
### 4. 文献综合
{文献综合}
### 5. 文献批评(Research Gap)
{文献批评}
### 6. 研究方法
{研究方法}
### 7. 理论框架
{理论框架}
### 8. 一致性发现
{一致性发现}
### 9. 不一致性发现
{不一致性发现}
### 10. 研究贡献
{研究贡献}
### 11. 研究不足
{研究不足}
### 12. 未来展望
{未来展望}
## 阅读笔记
{个人笔记区域}
---
*本总结由 AI 辅助生成,所有事实性陈述均来自原文。推断内容已标注 `[推断]`。*
*生成时间:{日期}*
TMPL
echo "✅ 已创建默认模板: $TEMPLATE"
fi
OUTPUT_DIR="$HOME/.local/share/ima-kb-backup/paper-summaries"
# 文件名格式:{论文简称}_{第一作者}.md
# 如果无法确定作者,使用PDF文件名作为基础
FILENAME="{论文简称}_{第一作者}.md"
OUTPUT_PATH="$OUTPUT_DIR/$FILENAME"
# 将分析结果填入模板,写入 OUTPUT_PATH
echo "📝 总结已保存: $OUTPUT_PATH"
交付前执行以下检查:
□ 每个事实性陈述有来源标注(页码/图表编号)
□ 统计数据与原文一致
□ 推断内容标注了 [推断]
□ "阅读笔记"区域与原文内容分隔
□ 没有编造或模糊表述
□ 模板各段落已填充完整(没有残留的 {占位符})
✅ 分析完成!
📄 文献:{论文标题}
📁 PDF 位置:{PDF路径}
📝 总结位置:{输出路径}
📊 标注情况:
- [推断] 标注:N 处
- 引用页码:N 处
⚠️ 需要你手动确认:
1. 检查 [推断] 标注的内容是否需要调整
2. 在"阅读笔记"区域补充你的个人理解
3. 如需引用,建议对照原文PDF核对关键数据
~/.local/share/ima-kb-backup/
├── raw-pdfs/ ← 放下载的 PDF 文件
│ └── 会展企业竞争战略.pdf
├── paper-summaries/ ← 生成的总结 MD 文件
│ ├── TEMPLATE.md ← 总结模板
│ └── 会展企业竞争战略_张三.md ← 具体的总结文件
├── literature-catalog/ ← 文献目录索引(可选)
└── scripts/ ← 辅助脚本(可选)
| 组件 | 路径 | 版本 |
|---|---|---|
| ------ | ------ | ------ |
| Python | ~/.hermes/hermes-agent/venv/bin/python3 | 3.11.15 |
| pdfplumber | Hermes venv | 0.11.9 |
| 目录 | ~/.local/share/ima-kb-backup/ | - |
零外部 API 依赖。 不需要 IMA 凭证、不需要 COS 上传、不需要任何网络请求。
| 错误类型 | 处理方式 |
|---|---|
| ---------- | ---------- |
| PDF 路径不存在 | 提示用户检查路径,引导重新下载 |
| 非 PDF 文件 | 检查 magic bytes 后拒绝,提示用户 |
| 文本提取为空 | 标注 [OCR识别],提醒用户对照原文核对 |
| 模板文件缺失 | 自动创建默认模板 |
| 保存目录不存在 | 自动创建目录 |
> 你: 帮我分析这篇论文,路径是 ~/Downloads/会展企业竞争战略.pdf
>
> Agent 执行:
> 1. 检查 PDF 有效性(%PDF- magic bytes)
> 2. 用 pdfplumber 提取全文文本和表格
> 3. 按 12 要素逐项分析
> 4. 生成总结文件保存到 paper-summaries/
> 5. 给出质量检查和报告
> 你: 帮我分析IMA知识库里那篇关于会展竞争力的文献
>
> Agent 回应:
> ```
> 好的,请按以下步骤操作:
>
> 1. 打开 IMA(腾讯元宝)知识库
> 2. 搜索"会展竞争力"相关的文献
> 3. 右键点击 → 下载 PDF 到本地
> 4. 然后把文件路径发给我
>
> 例如:~/Downloads/会展企业竞争力研究.pdf
> ```
> 你: 把 raw-pdfs 里还没分析的 PDF 都处理了
>
> Agent 执行:
> 1. 扫描 raw-pdfs/ 目录中的所有 PDF 文件
> 2. 检查 paper-summaries/ 中是否有对应总结
> 3. 逐篇分析未处理的 PDF
> 4. 生成每篇的总结文件
> 5. 汇总报告完成数量和位置
共 1 个版本