3 minute read

🔥 本期视频详细演示了Hermes Agent的两大高级功能:个人微信原生集成LLM Wiki知识库构建

📱 首先演示了Hermes Agent连接个人微信的完整流程——扫码登录、配对连接、私聊交互,轻松在微信中调用AI能力。

📚 重点讲解了基于Andrej Karpathy分享的LLM Wiki知识库工作流。通过深入对比传统RAG(无状态碎片检索)与LLM Wiki(有状态知识编辑),揭示了知识复利增长的核心优势。实战演示了:从ArXiv批量摄入论文 → 自动提取结构化知识 → 生成交叉引用的Wiki页面 → 在Obsidian中可视化Graph图谱 → 多Wiki无缝切换与合并。

🏗️ 详细解析了LLM Wiki的三层架构:不可变的原始来源层、Agent驱动的Wiki页面层、人机协同的进化层,真正实现”编译一次,持续更新”的数据飞轮。

🚀本篇笔记所对应的视频:


这个适配器是针对个人微信账号的,使用的是腾讯的 iLink Bot API。它通过 HTTP 长轮询(long-polling)接收消息,因此不需要公网端点或 Webhook。如果你需要企业微信,请使用 WeCom 适配器。


前置条件

  1. 一个个人微信账号
  2. Python 包:aiohttpcryptography
  3. qrcode 包(可选,用于在终端中显示二维码)

安装依赖:

pip install aiohttp cryptography
# 可选:用于终端二维码显示
pip install qrcode

设置步骤

第一步:运行设置向导

执行以下命令:

hermes gateway setup

在提示中选择 Weixin。向导会自动完成以下操作:从 iLink Bot API 请求二维码 → 在终端显示二维码(或提供一个 URL)→ 等待你用微信手机端扫码 → 提示你在手机上确认登录 → 自动将账号凭证保存到 ~/.hermes/weixin/accounts/

成功后你会看到类似消息:微信连接成功,account_id=your-account-id

向导会自动保存 account_idtokenbase_url,无需手动配置。

第二步:配置环境变量

QR 登录完成后,在 ~/.hermes/.env 中至少设置 account ID:

WEIXIN_ACCOUNT_ID=your-account-id

# 可选:访问控制
WEIXIN_DM_POLICY=open
WEIXIN_ALLOWED_USERS=user_id_1,user_id_2

# 可选:定时任务/通知的主频道
WEIXIN_HOME_CHANNEL=chat_id
WEIXIN_HOME_CHANNEL_NAME=Home

第三步:启动网关

hermes gateway

适配器会恢复已保存的凭证,连接 iLink API,并开始长轮询接收消息。


主要功能

该适配器支持非常丰富的功能,包括:长轮询传输(无需公网端点)、二维码扫码登录、私聊和群聊消息(可配置访问策略)、媒体支持(图片/视频/文件/语音)、AES-128-ECB 加密的 CDN 媒体传输(自动加解密)、上下文 Token 持久化(重启后保持回复连续性)、Markdown 格式适配(标题/表格/代码块自动转换为微信可读格式)、智能消息分块(4000 字符以内保持单条发送)、输入中提示(”对方正在输入…”)、消息去重(5 分钟滑动窗口)以及自动重试与退避机制。


访问策略

私聊策略(DM Policy) 默认为 open(任何人可以私聊机器人),可设为 allowlist(仅白名单用户)、disabled(忽略所有私聊)或 pairing(配对模式)。

群聊策略(Group Policy) 默认为 disabled(忽略所有群消息,这是有意为之,因为个人微信可能在很多群中)。可设为 openallowlist


常见问题排查

  • 启动失败提示缺少 aiohttp/cryptography:执行 pip install aiohttp cryptography
  • 提示缺少 WEIXIN_TOKEN:重新运行 hermes gateway setup 完成扫码登录
  • 会话过期(errcode=-14):重新运行 hermes gateway setup 扫描新二维码
  • 机器人不回复私聊:检查 WEIXIN_DM_POLICY 是否设为 allowlist 且发送者不在白名单中
  • 机器人不回复群消息:群策略默认为 disabled,需要设置 WEIXIN_GROUP_POLICY=openallowlist
  • 终端二维码无法显示:安装 pip install qrcode,或使用终端上方打印的 URL 链接

整个流程非常简洁:安装依赖 → 运行 hermes gateway setup 扫码 → 配置环境变量 → 启动 hermes gateway,就可以让 Hermes Agent 通过你的个人微信收发消息了。

Hermes Agent LLM Wiki 深度分析

分析日期: 2026-04-11 数据来源: GitHub PR #5100/#5635、Karpathy Gist、Hermes Agent 官方文档、SkillsLLM


1. 概述

LLM Wiki 是 Andrej Karpathy 于 2026 年 4 月 4 日提出的一种持久化知识编译模式,旨在用 LLM 增量构建和维护一个结构化的 Markdown 知识库,取代传统 RAG(检索增强生成)每次查询都从头发现知识的低效方式。

Hermes Agent(Nous Research 开发的自改进 AI Agent)在 PR #5100 中首次引入 LLM Wiki 作为内置 Skill,并在 PR #5635 中正式合并,成为第一个使用全新 Skill Config 接口的技能

核心差异:LLM Wiki vs 传统 RAG

维度 传统 RAG LLM Wiki
知识发现 每次查询重新检索 编译一次,持续更新
检索单元 原始文档片段 结构化 Wiki 页面
交叉引用 预先构建
矛盾检测 查询时可能发现 摄入时主动标记
知识积累 无累积效应 每个源使 Wiki 更丰富

2. 三层架构 (Three-Layer Architecture)

2.1 原始来源层 (Raw Sources) — 不可变

  • 存放文章、论文、图片、数据文件等原始材料
  • 不可变 (Immutable) — LLM 只读不改
  • 这是事实的源头 (Source of Truth)
  • 建议通过 chmod -R a-w raw/ 强制文件系统级不可变
  • 位置:~/wiki/raw/

2.2 Wiki 页面层 (Wiki Pages) — Agent 拥有

  • LLM 完全拥有和维护的 Markdown 文件目录
  • 包含:摘要页面、实体页面、概念页面、比较页面、综述、综合分析
  • LLM 创建页面、更新内容、维护交叉引用、保持一致性
  • 人类阅读,LLM 编写
  • 使用 YAML frontmatter 进行搜索和过滤
  • 使用 [[wikilink]] 进行交叉引用
  • 位置:~/wiki/wiki/

2.3 Schema 配置层 (Schema Config) — 协同进化

  • 一个告诉 LLM Wiki 结构和约定的文档(如 SCHEMA.md
  • 定义工作流程:摄入源、回答问题、维护 Wiki
  • 将 LLM 从通用聊天机器人变为纪律严明的 Wiki 维护者
  • 人类和 LLM 共同演化
  • 位置:~/wiki/SCHEMA.md

3. 三大核心操作 (Three Core Operations)

3.1 Ingest(摄入)

流程步骤:

  1. 用户将新源丢入 raw/ 目录
  2. LLM 读取源文档
  3. 与用户讨论关键要点
  4. 在 Wiki 中写入摘要页面
  5. 更新 index.md
  6. 更新相关实体和概念页面(一次摄入可能触及 10-15 个 Wiki 页面)
  7. 追加 log.md 条目
  8. 重要:当更新超过 10 个页面时,先询问再批量更新

Hermes 增强特性:

  • Session 导向:每次会话开始时读取 index.md 定位
  • Tag 分类法 (Tag Taxonomy)
  • 更新策略 (Update Policy)
  • 扩展指导 (Scaling Guidance)
  • 日志轮转 (Log Rotation)
  • 归档工作流 (Archiving Workflow)

3.2 Query(查询)

流程步骤:

  1. 用户提出查询问题
  2. LLM 读取 index.md 找到相关页面
  3. 深入读取相关页面
  4. 从已编译知识中综合答案(带引用)
  5. 答案可以是多种格式:Markdown 页面、比较表、幻灯片、图表
  6. 关键洞察:好的答案应被归档回 Wiki 作为新页面
  7. 探索成果像摄入源一样在知识库中复利增长

3.3 Lint(健康检查)

检查维度(Hermes 实现 8 类检查):

  1. 孤立页面 (Orphan Pages) — 无入链的页面
  2. 死链 (Dead Wikilinks) — 指向不存在页面的链接
  3. 矛盾检测 (Contradictions) — 页面间冲突的声明
  4. 缺失页面 (Missing Pages) — 被提及但未创建的概念
  5. 未链接提及 (Unlinked Mentions) — 提到但未建立链接的实体
  6. 不完整元数据 (Incomplete Metadata) — frontmatter 缺失字段
  7. 空白段落 (Empty Sections) — 内容不完整的页面
  8. 过期索引 (Stale Index) — index.md 与实际内容不一致

4. 导航与索引系统

4.1 index.md — 内容导向

  • Wiki 中所有内容的目录
  • 每个页面含:链接、一行摘要、可选元数据(日期、源数量)
  • 按类别组织(实体、概念、来源等)
  • LLM 每次摄入时更新
  • 查询时 LLM 先读 index 再定位相关页面
  • 在中等规模(约 100 个源、数百个页面)下效果很好

4.2 log.md — 时间线导向

  • 追加式的事件记录
  • 格式:## [YYYY-MM-DD] action | subject
  • 可用 Unix 工具解析:grep "^## \[" log.md | tail -5
  • 记录:摄入、查询、Lint 操作
  • 帮助 LLM 理解最近发生了什么

4.3 hot.md — 热缓存(Hermes 增强)

  • 约 500 词的会话上下文持久化
  • 消除”我们上次聊到哪里了?”的重新解释问题
  • 占用不到 0.25% 的上下文窗口
  • 每次会话节省 2-3K token 的重新解释

5. Hermes Agent 集成细节

5.1 Skill Config 接口

LLM Wiki 是第一个使用 Hermes 新 Skill Config 接口的技能:

# config.yaml
skills:
  config:
    wiki:
      path: ~/wiki  # LLM Wiki 路径

实现组件:

  • agent/skill_utils.py: extract_skill_config_vars(), discover_all_skill_config_vars(), resolve_skill_config_values(), SKILL_CONFIG_PREFIX
  • agent/skill_commands.py: _inject_skill_config() — 将配置注入技能上下文
  • hermes_cli/config.py: get_missing_skill_config_vars(), migrate_config(), show_config()

5.2 可配置项

  • 通过 wiki.path 配置 Wiki 存储路径
  • 默认路径:~/wiki
  • 通过 hermes config migrate 扫描并提示配置
  • 通过 hermes config show 显示所有技能配置

5.3 与 Hermes 记忆系统的协作

  • Hermes 自身的 MEMORY.md / USER.md 用于短期交互记忆
  • LLM Wiki 用于长期领域知识编译
  • FTS5 跨会话搜索与 LLM 摘要互补
  • Honcho 用户建模提供用户偏好上下文

6. 使用场景

6.1 研究深潜

  • 数周/数月阅读论文、文章、报告
  • 增量构建综合 Wiki,形成演进论述
  • lint 发现知识空白并指导下一步阅读

6.2 读书笔记

  • 按章节归档
  • 构建角色页面、主题页面、情节线索页面
  • 类似 Tolkien Gateway 级别的个人读书 Wiki

6.3 商业/团队知识库

  • 摄入 Slack 对话、会议记录、项目文档、客户电话
  • LLM 做人类不想做的维护工作
  • 通过 Hermes Gateway 跨 15+ 平台自动化

6.4 竞争分析与尽职调查

  • 长期追踪公司、市场、技术
  • 交叉引用多源信息
  • 自动标记矛盾与过期信息

6.5 个人知识管理

  • 追踪目标、健康、心理、自我提升
  • 归档日记、文章、播客笔记
  • 构建结构化的自我认知画像

7. Obsidian 集成

  • Wiki 目录直接作为 Obsidian Vault 使用
  • 使用 Obsidian Graph View 查看知识结构
  • Obsidian Web Clipper 快速将网页文章转为 Markdown
  • Dataview 插件查询 YAML frontmatter
  • Marp 插件直接从 Wiki 内容生成演示文稿
  • Wiki 本身是 Git 仓库 — 免费版本历史

8. 扩展生态

8.1 社区实现

  • SwarmVault: 50+ 格式支持、混合搜索、commit-on-write
  • agent-wiki: Python 工具包、链接感知移动/合并、PDF 转 Markdown
  • knowledge-pipline: BFS 推理链、知识图谱、Louvain 社区检测
  • Cortex: OWL-RL 本体、Oxigraph SPARQL + SQLite FTS5
  • ΩmegaWiki: 北京大学团队的全生命周期研究平台

8.2 CLI 工具

  • qmd: 本地 Markdown 搜索引擎、BM25/向量混合搜索、LLM 重排
  • 支持 CLI 和 MCP Server 两种接入方式

9. 设计哲学

Karpathy 将此理念追溯到 Vannevar Bush 的 Memex (1945):

  • 个人化、主动策展的知识存储
  • 文档间的关联和通道与文档本身同等重要
  • Bush 无法解决的部分 — 谁来维护 — LLM 解决了这一问题

“人类的工作是策展来源、指导分析、提出好问题、思考这一切的意义。LLM 的工作是其他一切。” — Andrej Karpathy


10. 已知局限与解决方案

局限 解决方案
raw/ 不可变仅是口头约定 chmod -R a-w raw/ 文件系统强制
log.md 格式漂移 宽松正则 + 格式修复指导
search_files 工具名可能不匹配 运行时工具名验证
Schema 迁移路径 Lint 检查 frontmatter 与当前 SCHEMA 一致性
大规模更新风险 10+ 页面阈值,先确认再批量更新
知识规模增长后的检索效率 qmd 混合搜索引擎
持久化错误复合传播 矛盾标记 [!contradiction] + 定期 Lint

Comments