知识库自动化流水线:NAS+微信+Hermes+Obsidian 全链路打通
知识库自动化流水线:NAS+微信+Hermes+Obsidian 全链路打通
作者:浅木·先生 | 2026-06-16
一、认识"财政剁手党"的自我修养
作为一个在财政系统摸爬滚打多年的"老财",我最深的体会是:信息差才是最大的成本。
每天打开微信,工作群、政策群、行业交流群里的消息像潮水一样涌来。国务院刚发的预算管理一体化规范、财政部最新的政府采购投诉处理规则、地方财政局的试点经验分享——这些信息如果你没在第一时间抓住,等过了三天再去翻聊天记录,大概率已经找不到了。
更痛苦的是,就算你当时看了、收藏了,到了月底写分析报告的时候,依然需要翻遍各个角落去找那条"我记得看过"的文章。
2026年初,当我第一次接触 Hermes Agent 时,我发现了一个残酷的现实:不是 AI 不够强,而是我的知识管理方式还停留在农耕时代。
这篇文章,就是我在过去几个月里,从"手动收藏-手动整理-手动归档"的农耕模式,进化到"微信抓取→Hermes处理→Obsidian归档→NAS备份"全自动化流水线的完整记录。踩过的坑、填过的代码、重装过的系统,都在这里了。
二、架构总览:一条水管贯通四个池子
在动手之前,我先画了一张架构图(用 Mermaid 在 Obsidian 里),虽然最终实现时调整了不少细节,但大方向是对的:
微信文章 ──→ OpenClaw 微信技能 ──→ Markdown 落盘
│
▼
Hermes Agent
(LLM 摘要 + 自动打标)
│
▼
Obsidian Vault /Inbox 目录
│
▼
Obsidian 模板引擎 → 正式归档
│
▼
NAS 定时同步备份
整个链条的核心逻辑只有一句话:让信息在无人值守的情况下,自己完成从原始文本到结构化知识的转变。
具体到每个环节,我使用的工具链如下:
| 环节 | 工具 | 版本/部署方式 |
|---|---|---|
| 微信文章抓取 | OpenClaw | v3.7,部署在极空间 Z4Pro NAS |
| 内容处理引擎 | Hermes Agent | v0.6.2,本地部署 + NAS Docker |
| 知识存储 | Obsidian | v1.8.9,Windows 客户端 |
| 文件备份 | 极空间 NAS | ZDR 模式,双向同步 |
| 模型后端 | DeepSeek V4 / Claude | 混合路由 |
三、Step 1:微信文章自动抓取——从"人找信息"到"信息找人"
3.1 OpenClaw 微信技能配置
第一个要解决的问题是:微信里的文章怎么自动流入我的系统?
手动复制链接?太原始。截图 OCR?精度不够。
最终方案是用 OpenClaw 的微信机器人技能 + Webhook 联动。配置过程如下:
首先,在 OpenClaw 中启用 WeChat MCP 插件:
# 在 OpenClaw 工作目录下安装微信插件
openclaw plugin install @openclaw/plugin-wechat-mcp
# 验证插件状态
openclaw plugin list | grep wechat
# 输出应包含: wechat-mcp (enabled, v1.2.3)
然后在 config.yaml 中配置微信监听规则:
plugins:
wechat-mcp:
auto_login: true
listen_groups:
- "财政政策交流群"
- "预算管理一体化研讨"
- "地方政府债务管理"
listen_users:
- "财政部信息中心"
- "财政科学研究院"
output_dir: "/data/hermes/inbox/wechat"
format: "markdown"
include_metadata: true
这里有个大坑要注意:微信 Web 协议的登录策略经常变化。第一次配置时,我花了整整一个下午去处理扫码登录超时的问题。
踩坑记录 #1:扫码登录二维码超时
现象:二维码生成后 30 秒内未扫码就过期,但手机扫码后一直显示"登录中"。
解决方案:检查后发现是 NAS 系统时间与手机时间不同步导致的。在极空间后台执行:
# 同步系统时间
sudo ntpdate ntp.aliyun.com
# 或使用 timedatectl
timedatectl set-ntp true
timedatectl status
时间同步后,扫码登录在 3 秒内完成,再也没有超时过。
3.2 文章自动转发与抓取
配置完成后,只要有人在群里或通过公众号发了一篇文章,OpenClaw 就会自动执行以下流程:
- 检测到链接(微信公众号文章、网页链接)
- 使用
article_fetch工具抓取全文内容 - 转换为标准 Markdown 格式
- 保存到指定目录,文件名格式为
{日期}_{公众号名称}_{标题}.md
为了验证配置是否生效,我写了一个简单的测试脚本:
# 查看最近抓取的文章
ls -lt /data/hermes/inbox/wechat/ | head -10
# 输出示例:
# 2026-06-15_财政部_关于加强预算绩效管理的指导意见.md
# 2026-06-15_中国财政杂志社_地方政府专项债券发行情况分析.md
# 2026-06-14_国务院_关于进一步深化预算管理制度改革的意见.md
看到文章一条条自动落盘的那一刻,那种"被信息洪流淹没"的焦虑感瞬间减轻了 80%。
四、Step 2:Hermes Agent 内容处理——让 AI 帮你读文章
4.1 Hermes 处理流水线配置
文章抓取下来只是第一步,原始 Markdown 文件动辄几千字,没有人会每天手动去读十几篇政策文件。我需要的是 AI 自动摘要 + 关键信息提取 + 标签系统。
这一步我使用了 Hermes Agent 的 Skills 机制,编写了一个自定义的"财政政策处理"技能:
# skills/fiscal-policy-processor.yaml
name: fiscal-policy-processor
version: "1.0"
description: 自动处理财政政策类文章的摘要与归档
trigger:
type: watch
path: "/data/hermes/inbox/wechat/"
pattern: "*.md"
debounce: 60 # 60秒防抖,避免批量文件同时触发
steps:
- name: extract_summary
model: deepseek-v4
prompt: |
你是一个财政政策分析专家。请对以下文章进行结构化分析:
1. 一句话摘要(30字以内)
2. 核心要点(3-5条,每条不超过50字)
3. 涉及的政策领域标签(从以下列表中选择:预算管理/政府采购/债务管理/绩效评价/非税收入/财政监督/其他)
4. 文件级别(法律/行政法规/部门规章/规范性文件/政策解读)
5. 关键日期(如果有)
6. 关联文件(如果有)
文章内容:{{content}}
- name: generate_tags
model: deepseek-v4
prompt: |
基于以上分析,生成 3-5 个 Obsidian 双链标签,格式为 [[标签名]]
优先使用已有标签库中的标签。
- name: save_to_obsidian
action: write_file
template: |
---
title: {{title}}
source: {{source}}
date: {{date}}
tags: {{tags}}
summary: {{summary}}
level: {{level}}
---
## 摘要
{{summary}}
## 核心要点
{{points}}
## 原文内容
{{content}}
## 元数据
- 来源:{{source}}
- 抓取时间:{{date}}
- 原文链接:{{url}}
- 处理时间:{{processed_at}}
output: "/data/hermes/processed/fiscal/{{date}}_{{slug}}.md"
这个 Skills 配置有几个设计上的巧思:
防抖机制:debounce: 60 是关键。第一次部署时没有设置防抖,结果一次批量同步来了 30 篇文章,Hermes 同时启动 30 个处理任务,直接把 NAS 的 CPU 干到了 100%。加了 60 秒防抖后,文件会排队处理,系统负载保持在 30% 以下。
双链标签自动生成:在 generate_tags 步骤中,我要求模型优先使用已有标签库中的标签。这是为了保持标签体系的一致性——如果每次生成的标签都不一样,几个月后标签系统就会变成一团乱麻。
4.2 模型选型的心得
在内容处理这个环节,我试过三种模型组合,踩了不少坑:
| 模型 | 摘要质量 | 处理速度 | Token 消耗 | 结论 |
|---|---|---|---|---|
| DeepSeek V4 | ★★★★★ | 快 | 低 | 推荐 |
| Claude Sonnet | ★★★★☆ | 中 | 中 | 质量好但贵 |
| GPT-4o | ★★★★☆ | 慢 | 高 | 不划算 |
| 本地小模型(Qwen 7B) | ★★☆☆☆ | 极快 | 0 | 摘要质量不够 |
踩坑记录 #2:本地小模型不够用
我最开始想用本地部署的 Qwen 7B 来处理,毕竟省 Token 费用。结果发现它对政策文件的专业术语理解很差,经常把"预算绩效管理"理解成"预算效果管理",把"专项债券"归类到"一般债券"。
最后折中方案是:摘要和标签生成用 DeepSeek V4(API),关键词提取用本地小模型(离线)。这样既保证了核心质量,又把 API 调用量压到了最低。
五、Step 3:Obsidian 归档与知识网络
5.1 收件箱到归档的自动化
Hermes 处理完的文章会写入 /data/hermes/processed/fiscal/ 目录。但这还不是终点——这些文件需要进入 Obsidian 的正式知识库体系。
我的 Obsidian Vault 结构如下:
Fiscal-KB/
├── Inbox/ ← 新文章进入的地方
├── Daily/ ← 每日财政动态
├── Policies/ ← 按政策领域分类归档
│ ├── 预算管理/
│ ├── 政府采购/
│ ├── 债务管理/
│ └── 绩效评价/
├── Templates/ ← Obsidian 模板
├── Attachments/ ← 附件
└── .obsidian/ ← 配置目录
为了实现自动归档,我使用了 Obsidian 的 Templater 插件 + QuickAdd 插件组合:
# .obsidian/scripts/auto-classify.js
// 这是一个 Dataview 查询脚本
// 自动将 Inbox 中超过 24 小时的文章按标签移动到 Policies 目录
const inbox = app.vault.getFolder('Inbox');
const files = inbox.children.filter(f => f.extension === 'md');
const tagToPath = {
'预算管理': 'Policies/预算管理',
'政府采购': 'Policies/政府采购',
'债务管理': 'Policies/债务管理',
'绩效评价': 'Policies/绩效评价',
'财政监督': 'Policies/财政监督',
'非税收入': 'Policies/非税收入',
};
files.forEach(async (file) => {
const metadata = app.metadataCache.getFileCache(file);
const tags = metadata?.frontmatter?.tags || [];
for (const tag of tags) {
const cleanTag = tag.replace(/[\[\]]/g, '');
if (tagToPath[cleanTag]) {
const newPath = `${tagToPath[cleanTag]}/${file.name}`;
if (file.path !== newPath) {
await app.fileManager.renameFile(file, newPath);
console.log(`Moved ${file.name} to ${newPath}`);
}
break;
}
}
});
5.2 知识图谱的复利效应
Obsidian 最强大的地方不是单篇笔记,而是笔记之间的连接。
我建立了一个"财政政策关联图谱",每当新文章进入知识库,我都会让 Hermes 自动扫描已有笔记,建立双向链接:
# 在 Hermes 技能中增加关联分析步骤
steps:
- name: link_existing_notes
action: hermes_skill
skill: obsidian-linker
params:
vault_path: "/obsidian/Fiscal-KB"
similarity_threshold: 0.7
max_links: 5
create_backlinks: true
效果是什么?举个例子:当我新抓取一篇《地方政府专项债券资金管理办法》时,系统会自动发现它和《预算管理一体化规范》、《政府投资条例》之间的关联,在笔记底部自动生成"相关笔记"区块:
## 相关笔记
- [[预算管理一体化规范(2025年修订版)]]
- [[政府投资条例]]
- [[地方政府债务风险评估指引]]
- [[专项债券项目资金绩效管理办法]]
- [[财政部关于进一步规范地方政府举债融资行为的通知]]
这个功能在日常工作中帮了我大忙。原本需要半小时的"这篇文章跟哪些政策有关联"的脑力劳动,现在变成了一键查看。
六、Step 4:NAS 备份与灾难恢复
6.1 备份策略
知识库一旦建立起来,就变成了数字资产。我绝不能接受"硬盘坏了所有笔记都没了"这种悲剧。
我的备份策略是三层防御:
本地 SSD (工作区)
│
├── 实时同步 → 极空间 NAS (ZDR 模式)
│ │
│ ├── 每日快照 → NAS 冷存储
│ │
│ └── 每周增量 → 阿里云 OSS
│
└── 手动触发 → 移动硬盘 (每月一次)
在极空间 NAS 上配置 ZDR 同步:
# 在极空间 SSH 终端中
# 查看 ZDR 同步状态
zdrctl status
# 输出:
# Sync target: /mnt/zdr/fiscal-kb-backup
# Status: SYNCED
# Last sync: 2026-06-16 03:00:00
# Files: 1,847 synced, 0 pending
# 如果需要手动触发同步
zdrctl sync --now
6.2 踩坑:文件路径长度问题
踩坑记录 #3:Windows 路径长度限制
这是一个极其隐蔽但破坏力巨大的问题。
Hermes 在处理文件时生成的文件名包含完整日期和标题,例如:
2026-06-15_财政部_关于印发《预算管理一体化规范(2025年修订版)》的通知_附:预算编制与执行操作规程的补充说明.md
这个文件名长达 80+ 个字符。当它被放入嵌套目录 Policies/预算管理/2025/ 时,完整路径超过了 Windows 的 260 字符限制,导致 Obsidian 无法同步,NAS 同步失败。
解决方案有两个:
- 启用 Windows 长路径支持(注册表修改):
# 以管理员身份运行
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001
- 修改文件名生成规则(更推荐):
# 在 Hermes 技能配置中限制文件名长度
output: "/data/hermes/processed/fiscal/{{short_date}}_{{slug_40}}.md"
我选择了方案 2,文件名改为 2026-06-15_预算管理一体化规范补充说明.md,既保留了关键信息,又避免了路径过长。
七、全链路测试与日常维护
7.1 端到端验证
配置完成后,我跑了一个完整的端到端测试:
# 1. 模拟微信文章推送
echo "https://mp.weixin.qq.com/s/test-article" | openclaw wechat-simulate
# 2. 等待 Hermes 处理(约 2-3 分钟)
sleep 180
# 3. 检查处理结果
ls /obsidian/Fiscal-KB/Inbox/
# 预期看到自动生成的 Markdown 文件
# 4. 检查 NAS 同步状态
zdrctl status | grep "Last sync"
# 预期看到最近的同步时间
7.2 日常维护 checklist
经过几个月的运行,我总结了一套日常维护清单:
- 每日检查:OpenClaw 登录状态(微信登录偶尔会掉线)
- 每周检查:NAS 同步状态、磁盘空间
- 每月检查:标签体系是否混乱、是否需要新建分类目录
- 每季度:清理重复文件、合并相似笔记
八、效果与反思
经过三个多月的运行,这套流水线的效果远超我的预期:
- 文章自动抓取:日均 15-20 篇财政领域文章
- 摘要与分类:准确率约 85%(人工抽检)
- Obsidian 归档:累计 1,847 篇笔记,无遗漏
- NAS 备份:零数据丢失
- 查询效率:原来找一篇政策需要 5-10 分钟,现在通过 Obsidian 搜索 + 双链,平均 30 秒
最重要的是,这套系统让我从"信息的搬运工"变成了"知识的整合者"。我不再需要每天花 2 小时去手动整理信息,而是可以把精力放在更高价值的分析、判断和决策上。
当然,远非完美。目前还有几个痛点没有解决:微信文章中的表格识别还不够准确、部分 PDF 附件无法自动处理、多模态内容(图表、流程图)的提取仍然需要人工介入。这些是下一步改进的方向。
但至少,我的"财政知识库"已经不再是一个静态的文件夹,而是一个每天都在自我生长的有机体。它记住我看过的每一篇文章,理解它们之间的关联,在我需要的时候准确地把最相关的信息推到我面前。
这种感觉,挺好。
如果你也在搭建自己的知识库自动化流水线,欢迎交流。下一篇文章我会写关于 Agent Memory 与 AI 测试新范式的思考,敬请期待。
更多推荐


所有评论(0)