news 2026/7/5 6:24:12

Hermes Agent + OpenClaw + Zotero 构建自动化知识库工作流(完整实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hermes Agent + OpenClaw + Zotero 构建自动化知识库工作流(完整实战)

当 AI Agent 开始打理你的文献库——一个研究者的效率革命。从数据迁移到自动同步,从CLI配置到定时调度,全程记录踩坑与解决方案。


一、写在前面

作为研究生/科研人员,你是不是也有这样的场景:

  • Zotero 里攒了几百篇文献,但每次写论文时总想不起来某篇具体在哪
  • 每天刷 arXiv 加新文献,但没时间整理归档
  • 想做一个个人知识库,但手动搬运元数据太痛苦

本文分享一套全自动的文献知识库构建方案,让你彻底告别手动管理:

Zotero(文献管理) ↕ 自动同步 Hermes Agent(调度中控) ↕ 脚本执行 OpenClaw(自动化助手) ↓ 知识库(Markdown 结构化存储)

二、环境概览

我的系统环境:

项目配置
系统Ubuntu 22.04 LTS
系统盘60GB SSD(sda3)
数据盘200GB HDD(sdb1, 挂载 /mnt/data)
Zotero 版本9.0.4-1
Hermes Agent本地运行
OpenClawNode.js 24.17(nvm 管理)
Python3.10.12
数据库293 篇文献(1.4K 含附件)

前置条件:本文假设你已安装 Zotero 桌面端、Hermes Agent 和 OpenClaw。如果尚未安装,请先参考各项目的官方文档完成基础安装。


三、Step 1:迁移 Zotero 数据到非系统盘

为什么要迁移?系统盘只有 60GB,而 Zotero 的 PDF 附件、索引会持续膨胀。迁移到 200GB 的数据盘可以一劳永逸。

3.1 确认当前数据位置

打开 Zotero → 编辑 → 设置 → 高级 → 文件和文件夹,看到"数据存储位置"是默认的~/Zotero/。或者直接看配置文件:

grep "extensions.zotero.dataDir" ~/.zotero/zotero/*.default/prefs.js # 输出:/home/chester/Zotero

3.2 停止 Zotero + 复制数据

数据迁移需要在 Zotero关闭状态下进行,保证数据库一致性:

# 停止 Zotero kill -TERM $(ps aux | grep zotero-bin | grep -v grep | awk '{print $2}') # 创建目标目录 mkdir -p /mnt/data/Zotero_Library # 完整复制(推荐 rsync,支持断点续传) rsync -avh --progress ~/Zotero/ /mnt/data/Zotero_Library/

3.3 修改配置指向

编辑~/.zotero/zotero/*.default/prefs.js,将extensions.zotero.dataDir改为新路径:

user_pref("extensions.zotero.dataDir", "/mnt/data/Zotero_Library");

3.4 验证迁移

重启 Zotero 后,检查 API 是否正常返回数据:

# Zotero 内置 API 监听端口 23119 ss -tlnp | grep 23119 # 输出:LISTEN 127.0.0.1:23119 # 查询文献数量 curl -sI "http://127.0.0.1:23119/api/users/0/items?limit=1" | grep Total-Results # 输出:Total-Results: 1444 ✅

迁移要点

  • 迁移前必须关闭 Zotero,否则数据库可能损坏
  • 使用rsync而非cp,支持断点续传,大文件迁移更安全
  • 迁移完成后,原目录~/Zotero/可作为备份保留一段时间

四、Step 2:配置 Zotero 自动同步

4.1 坚果云 WebDAV 配置

Zotero 自带的免费同步空间只有 300MB,有 PDF 附件根本不够用。我使用的是坚果云 WebDAV(免费,不限速):

在 Zotero 设置中:

  1. 编辑 → 设置 → 同步
  2. 文件同步 → 选择WebDAV
  3. URL:https://dav.jianguoyun.com/dav/
  4. 用户名:你的坚果云邮箱
  5. 密码:坚果云应用密码(不是登录密码!需在坚果云网页版生成)

4.2 启用自动同步

在 prefs.js 中添加自动同步配置:

user_pref("extensions.zotero.sync.autoSync", true); user_pref("extensions.zotero.sync.autoSyncDelay", 900); // 15分钟 user_pref("extensions.zotero.sync.fulltext.enabled", true);

⚠️注意:Zotero 启动时会从数据库读取配置并覆写 prefs.js。建议同时在 GUI 中确认自动同步已勾选(编辑 → 设置 → 同步 → 勾选"自动同步")。

4.3 验证本地 API

Zotero 的本地 HTTP API 非常强大,所有 Agent 都通过它来读写数据:

http://localhost:23119/api/users/0/items

支持 RESTful 查询、分页、排序。默认已经开启(httpServer.localAPI.enabled = true),无需额外配置。


五、Step 3:安装 pyzotero-cli + 配置 OpenClaw 技能

5.1 安装 pyzotero-cli

pip install pyzotero-cli -U zot --version # 输出:1.0.0

5.2 配置本地模式

pyzotero-cli 支持两种模式:

模式连接方式速率限制读写权限
Web API 模式zotero.org读写
本地模式(推荐)localhost:23119只读

推荐使用本地模式,配置方法:

zot configure set --profile default library_id 12519867 zot configure set --profile default library_type user zot configure set --profile default local true

验证连接:

zot --local items list --top --limit 3 --output table

成功的话会看到类似输出:

| Title | Key | Type | | CA-LDP: Community-aware.. | ABC123 | journalArticle | | Optimal Privacy-Utility.. | DEF456 | preprint | | Personalized Privacy-P.. | GHI789 | journalArticle |

5.3 创建 OpenClaw Zotero 技能

在 OpenClaw 的 workspace 中创建技能文件skills/zotero/SKILL.md,让 Agent 知道如何操作 Zotero:

# Zotero 文献管理技能 ## 可用命令 zot --local items list --top --sort=dateAdded --direction=desc --limit 20 zot --local items get <ITEM_KEY> zot --local collections list zot --local items list --top -q="differential privacy"

这样 OpenClaw Agent 就能通过自然语言指令("帮我查一下最近文献")来操作 Zotero 了。


六、Step 4:创建自动化知识库同步脚本

6.1 同步脚本核心逻辑

# 伪代码 1. zot --local items list --top --sort=dateAdded --direction=desc --limit=50 2. 筛选 dateAdded >= 当前时间 - 24h 的条目 3. 提取:title, creators, abstract, DOI, publication, tags, date 4. 格式化为 Markdown 文件 5. 保存到 ~/knowledge_base/zotero/YYYY-MM-DD-title.md 6. 更新索引文件 ~/knowledge_base/README.md

6.2 完整的脚本实现

我写了一个完整的 Python 脚本~/.hermes/scripts/zotero-kb-sync.py(约 240 行),核心功能:

  • 自动分页获取所有顶级文献(避免 limit 限制)
  • 批量筛选最近 24 小时新增
  • 提取元数据并格式化为标准 Markdown
  • 增量保存(已存在则跳过)
  • 自动维护索引

生成的 Markdown 知识库条目格式:

--- source: zotero key: ABC123 item_type: journalArticle added: 2026-06-15 tags: [差分隐私, 图神经网络] publication_year: 2025 --- # CA-LDP: Community-aware local differential privacy for dynamic graphs **作者:** Liang, Zongwen; Xue, Cheston; ... **期刊:** Symmetry, Vol.18, No.2, pp.1-20 **DOI:** [10.3390/sym18020123](https://doi.org/10.3390/sym18020123) ## 摘要 This paper proposes CA-LDP, a community-aware local differential privacy...

6.3 创建 Hermes Cron 定时任务

使用 Hermes 的 cron 功能,设置每日 08:00 自动执行:

hermes cron create "0 8 * * *" \ --name "Zotero 知识库同步" \ --script zotero-kb-sync.py \ --no-agent

关键词说明:

参数含义
0 8 * * *每天 08:00 执行(cron 表达式)
--name任务名称,用于标识
--script执行的脚本路径(相对~/.hermes/scripts/
--no-agent纯脚本模式,不需要 LLM 参与

关于no_agent 模式:当脚本已经包含完整逻辑时,不需要 LLM 参与,直接让调度器运行脚本并传递 stdout 即可。这比用 LLM 驱动的 cron 任务更轻量、更可靠——不消耗 API token,也不会因为 LLM 输出异常而失败。

6.4 一次性导入历史文献

对于已有的 293 篇文献,我还写了一个一次性导入脚本~/.hermes/scripts/zotero-kb-import-all.py,将所有历史文献一次性导入知识库:

python3 ~/.hermes/scripts/zotero-kb-import-all.py # 输出:📚 共获取 300 篇顶级文献 # 输出:📊 总计: 293 篇文献

脚本会自动分页遍历所有文献,为每篇生成独立的 Markdown 文件,并构建完整的索引页。


七、验证与效果

7.1 验证清单

✅ Zotero 数据目录:/mnt/data/Zotero_Library(迁移完成) ✅ Zotero 自动同步:15分钟间隔 + WebDAV ✅ pyzotero-cli:v1.0.0,本地模式可用 ✅ zot --local 命令:可查询 1400+ 条文献 ✅ Hermes cron 任务:每日 08:00 执行 ✅ 知识库:293 篇文献已结构化存储

7.2 最终工作流

[研究者] │ 添加新文献到 Zotero ▼ [Zotero 桌面端] │ 自动同步到坚果云 WebDAV │ 本地 API(localhost:23119)开放 ▼ [Hermes Cron] 每日 08:00 │ 触发 zotero-kb-sync.py ▼ [Python 脚本] │ zot --local 查询新增文献 │ 提取标题/作者/摘要/DOI │ 格式化为 Markdown ▼ [知识库 ~/knowledge_base/] │ zotero/2026-06-15-xxx.md │ README.md(索引) ▼ [RAG 检索 / LLM 问答 / 论文写作辅助]

八、踩坑记录

⚠️ prefs.js 写入后被 Zotero 覆写

Zotero 启动时会从数据库读取配置并覆写 prefs.js。因此直接编辑 prefs.js 添加sync.autoSync可能不生效。最佳做法是在 GUI 中设置(编辑 → 设置 → 同步)。

⚠️ zot 命令参数差异

pyzotero-cli v1.0.0 的参数名与旧版文档有差异,踩坑记录:

你以为的参数实际参数说明
--order--sort排序字段
--sort(排序方向)--directionasc / desc
不加--top会包含子节点(notes、附件)查询顶级文献必须加
--output json默认就是 JSON可省略

⚠️ 本地 API 是只读的

通过http://localhost:23119/api/的本地 API只能读取,不能写入/修改文献。如果需要增删改,需使用 Zotero Web API(需要 API Key)。

⚠️ 端口 23119 权限

Zotero 的本地 API 默认只监听127.0.0.1,不会暴露到局域网,安全性有保障。无需额外防火墙配置。

⚠️ 非系统盘权限

迁移到/mnt/data/等非系统目录时,确保目录属于当前用户:

sudo chown -R $USER:$USER /mnt/data/Zotero_Library

九、扩展思路

这个工作流还有很多可以扩展的方向:

  1. LLM 自动摘要:新文献入库后,自动调用 LLM 生成中文摘要和关键词,存入知识库
  2. RAG 知识库:将 Markdown 文件接入 RAG 系统(如 LangChain、LlamaIndex),实现"问文献"功能
  3. 标签自动分类:根据摘要内容自动打标签(如方法类、应用类、综述类),便于检索
  4. 日报推送:每天将新增文献汇总为日报,通过 Telegram / 微信推送
  5. 论文写作辅助:在知识库中搜索相关文献,自动生成参考文献列表和引文
  6. 跨库联动:同时管理 Zotero + EndNote + Mendeley 多个文献库

十、总结

一套完整的 Zotero + AI Agent 知识库工作流,核心优势:

  • 数据安全:迁移到数据盘,坚果云 WebDAV 双重备份
  • 自动同步:Zotero 自动同步 + Agent 定时拉取,双重保障
  • 结构化存储:Markdown 格式,便于检索和二次处理(Git 版本控制、全文搜索、RAG 检索)
  • 低维护:全自动化,无需人工干预——只要像往常一样在 Zotero 里添加文献即可
  • 可扩展:支持接入 LLM、RAG、通知推送、论文写作等多场景

整套系统搭建完成后,你只需要做一件事:像往常一样在 Zotero 里添加文献,剩下的一切都交给 Agent。


本文涉及的代码和配置已保存为 Hermes Skill(zotero-kb),可在新环境中一键复用。

技术栈:Hermes Agent + OpenClaw + Zotero + pyzotero-cli + Ubuntu Linux

如有问题欢迎评论区交流~ 🚀

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 6:23:57

3分钟掌握Iwara视频下载:这款工具让你轻松保存喜爱内容

3分钟掌握Iwara视频下载&#xff1a;这款工具让你轻松保存喜爱内容 【免费下载链接】IwaraDownloadTool Iwara 下载工具 | Iwara Downloader 项目地址: https://gitcode.com/gh_mirrors/iw/IwaraDownloadTool 你是否曾在Iwara平台上看到精彩的视频&#xff0c;却苦于无法…

作者头像 李华
网站建设 2026/7/5 6:23:09

AI阅卷系统技术解析:从图像识别到NLP评分全流程

1. 项目概述&#xff1a;当AI走进阅卷室作为一名在教育信息化领域摸爬滚打了十来年的老兵&#xff0c;我亲眼见证了从手动批改、光标阅读机&#xff08;OMR&#xff09;到如今AI阅卷的整个技术变迁。最近&#xff0c;一个叫“小马阅卷”的系统在不少学校&#xff0c;尤其是K12阶…

作者头像 李华
网站建设 2026/7/5 6:19:08

LocalAI:在本地跑通所有 AI 模型的开源引擎

文章目录LocalAI&#xff1a;在本地跑通所有 AI 模型的开源引擎LocalAI&#xff1a;在本地跑通所有 AI 模型的开源引擎 GitHub 上有一个项目叫 LocalAI&#xff0c;目前拿到了 47k 的 Star。它的目标很直接&#xff1a;让你在自己的硬件上跑各种 AI 模型&#xff0c;不需要 GPU…

作者头像 李华
网站建设 2026/7/5 6:19:05

VMWare文件夹共享重启后消失

问题描述&#xff1a;vmware开启时文件夹共享正常使用&#xff0c;但是重启一次后就/mnt/hgfs下就没共享文件夹了排查&#xff1a;$ vmware-hgfsclient embedding说明VMware 已经识别到共享文件夹 embedding&#xff0c;但 Linux 没有自动挂载到 /mnt/hgfs。也就是说 VMware 共…

作者头像 李华