IT 换机迁移助手:一键备份恢复 Python 脚本

背景

企业 IT 部门最头疼的场景之一:员工换电脑。

  • Chrome 收藏夹要迁移
  • SharePoint 团队网站挂载要恢复
  • 已安装软件要重新部署
  • 下载文件夹等数据要手动备份到 OneDrive

传统做法是 IT 工程师一台台手动处理,费时且容易遗漏。最近我在 AI 辅助下完成了一套 Python 脚本,实现了旧电脑一键导出 → OneDrive 暂存 → 新电脑一键恢复的全流程自动化。

两个脚本,各司其职

1️⃣ export_tool_admin.py — 旧电脑端(抓取 & 备份)

功能:

  • ✅ 检查管理员权限(必须右键”以管理员身份运行”)
  • ✅ 自动定位当前用户空间和企业 OneDrive 路径
  • ✅ 备份 Chrome 收藏夹(Bookmarks 文件)
  • ✅ 精准抓取 SharePoint 库的 SiteIDWebIDListID(从注册表读取)
  • ✅ 全量扫描已安装软件(用户级 + 系统64位 + 系统32位卸载注册表)
  • ✅ 弹出勾选界面,让员工选择新电脑上需要保留的软件
  • ✅ 生成迁移清单存入 OneDrive 的 IT_Migration_Backup 目录
  • ✅ 弹出红色加粗警告窗口,提醒 IT 现场手动备份无法自动处理的目录(下载文件夹、微信/钉钉本地数据、D盘业务文件等)

2️⃣ restore_tool_admin.py — 新电脑端(恢复 & 部署)

功能:

  • ✅ 检查管理员权限
  • ✅ 从 OneDrive 读取迁移清单
  • ✅ 强杀 Chrome 进程后无缝还原收藏夹
  • ✅ 将 SharePoint 挂载信息注入 HKLM 全局策略(TenantAutoMount),永久生效
  • ✅ 通过 Winget 从公司门户/企业私有源静默安装软件(失败降级为用户级安装)
  • ✅ 弹出绿色交付报告,汇总恢复状态并提醒 IT 工程师:重启电脑、检查手动备份数据

技术亮点

特性 实现方式
SharePoint 配置提取 读取 HKCU\Software\Microsoft\OneDrive\Accounts 注册表,解析 ScopeId 中的 SiteId/WebId/ListId
软件清单扫描 遍历三个注册表路径(HKCU Uninstall + HKLM Uninstall + HKLM Wow6432Node Uninstall)
静默安装 Winget --silent --scope machine,失败自动降级为用户级
全局策略注入 写入 HKLM\SOFTWARE\Policies\Microsoft\OneDrive\TenantAutoMount
管理员权限 ctypes.windll.shell32.IsUserAnAdmin() 检测 + PyInstaller --uac-admin 清单
GUI 界面 Tkinter + 中文界面,大尺寸弹窗确保信息不被忽略

使用流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
旧电脑(管理员运行)

├─ 1. 运行 export_tool_admin.py
├─ 2. 勾选需要保留的软件
├─ 3. 确认后自动备份到 OneDrive
├─ 4. 按提示手动备份下载文件夹等


OneDrive 云端同步


新电脑(管理员运行)

├─ 1. 确保 OneDrive 已同步完成
├─ 2. 运行 restore_tool_admin.py
├─ 3. 自动恢复收藏夹 + SharePoint + 软件
├─ 4. 查看交付报告,重启电脑


✅ 换机完成

打包成 .exe

1
2
3
pip install pyinstaller
pyinstaller --onefile --uac-admin --name "IT换机助手-旧电脑全量备份" export_tool_admin.py
pyinstaller --onefile --uac-admin --name "IT换机助手-新电脑全量恢复" restore_tool_admin.py

--uac-admin 确保生成的 exe 自动请求管理员权限,员工双击即可。

适用场景

  • 🔹 企业 IT 部门批量换机
  • 🔹 员工离职/入职设备交接
  • 🔹 设备故障后快速恢复工作环境
  • 🔹 需要标准化软件部署流程的团队

注意事项

  1. 必须以管理员身份运行 — 涉及注册表 HKLM 写入和 Winget 系统级安装
  2. OneDrive 必须已登录并同步 — 脚本依赖 OneDrive 作为中转存储
  3. Winget 需要公司门户配置 — 企业私有软件源需提前配置,否则只能从 Winget 公共源安装
  4. 无法自动备份的数据 — 下载文件夹、微信/钉钉本地数据、非系统分区文件需要手动处理

总结

这套脚本的核心思路是:用 OneDrive 作为桥梁,把旧电脑的配置”搬运”到新电脑。在 AI 辅助下,从需求梳理到代码实现、从注册表解析到 GUI 界面,开发效率大幅提升。对于没有专业 IT 运维工具的中小企业,这是一个低成本的换机自动化方案。

💡 完整代码已整理好,需要的话可以联系我要。

树莓派刷 ImmortalWrt:用官方打包工具自定义固件

树莓派刷 ImmortalWrt:用官方打包工具自定义固件

前言

ImmortalWrt 是 OpenWrt 的一个活跃分支,对树莓派等 ARM 设备支持良好。官方提供了 Firmware Selector(固件选择器) 网页工具,让你无需本地编译、无需 Linux 环境,就能在浏览器里自定义插件打包出专属的 .img 固件。


准备工作

项目 说明
树莓派型号 确认具体型号(如 Pi 4B、Pi 5、Pi 3B+),不同型号对应不同固件
SD 卡 建议 ≥ 8GB,Class 10 以上
读卡器 用于电脑写入 SD 卡
网络 有线串口(可选,用于调试)

⚠️ 重要:请确认你的设备型号,选错型号会无法启动或变砖。


第一步:打开 ImmortalWrt Firmware Selector

在浏览器中搜索 “ImmortalWrt Firmware Selector”,进入官方页面。

界面大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌─────────────────────────────────────────────┐
│ ImmortalWrt Firmware Selector │
├─────────────────────────────────────────────┤
│ │
│ 设备型号 (Device): [下拉选择 ▼] │
│ │
│ ┌─ 自定义包列表 (Customize Package List) ─┐│
│ │ ││
│ │ 添加插件(每行一个): ││
│ │ ┌──────────────────────────────────┐ ││
│ │ │ luci-app-passwall │ ││
│ │ │ luci-app-samba4 │ ││
│ │ │ docker │ ││
│ │ │ luci-app-homeproxy │ ││
│ │ │ -luci-proto-ipv6 │ ││
│ │ └──────────────────────────────────┘ ││
│ │ ││
│ │ 💡 在前面加 - 表示移除该包 ││
│ └────────────────────────────────────────┘│
│ │
│ [ Request Build ] │
│ │
└─────────────────────────────────────────────┘

第二步:选择设备型号

Device 下拉框中输入你的树莓派型号,例如:

  • raspberrypi,4-model-b(树莓派 4B)
  • raspberrypi,5-model-b(树莓派 5)
  • raspberrypi,3-model-b-plus(树莓派 3B+)

如果不确定,可以去 ImmortalWrt 设备支持页面 查询。


第三步:自定义包列表

点击 “自定义包列表 (Customize Packet List)” 展开选项。

添加插件(预装到固件中)

在输入框中每行写一个插件名:

1
2
3
4
luci-app-passwall
luci-app-samba4
dockerd
luci-app-homeproxy

移除不需要的插件(精简固件)

在插件名前面加 - 即可:

1
2
-luci-proto-ipv6
-uhttpd

这样生成的固件更小、启动更快、资源占用更少。

常用插件推荐

插件 用途
luci-app-passwall 透明代理(科学上网)
luci-app-homeproxy Homeproxy 代理
luci-app-samba4 Samba 文件共享
dockerd Docker 容器支持
luci-app-ttyd Web 终端(SSH 替代)
luci-app-wol 网络唤醒
luci-app-nlbwmon 流量监控
luci-app-upnp UPnP 服务

精简建议(移除项)

1
2
3
4
5
6
7
8
# IPv6(如果不用 IPv6)
-luci-proto-ipv6

# 不需要的管理界面
-uhttpd

# 不需要的 QoS
-sqm-scripts

第四步:构建固件

点击 Request Build,等待约 2-3 分钟

页面会显示构建进度:

1
[████████████████████░░░░] Building...

构建完成后会弹出下载链接,下载 .img.gz 文件(压缩格式)。


第五步:写入 SD 卡

Linux / macOS

1
2
3
4
5
6
7
8
9
# 解压
gunzip immortalwrt-*.img.gz

# 确认设备名
lsblk

# 写入 SD 卡(sdX 替换为你的实际设备)
sudo dd if=immortalwrt-*.img of=/dev/sdX bs=4M status=progress
sync

Windows

使用 RufusbalenaEtcher

  1. 解压 .img.gz 得到 .img
  2. 打开 balenaEtcher
  3. 选择镜像文件 → 选择 SD 卡 → Flash!

第六步:启动树莓派

  1. 将 SD 卡插入树莓派
  2. 连接网线(推荐有线)
  3. 上电启动

默认登录信息

项目
IP 地址 192.168.1.1
用户名 root
密码 无(直接回车)
Web 管理 http://192.168.1.1

首次登录后建议立即设置密码:

1
passwd

常见问题

Q: 选错型号怎么办?

重新在 Firmware Selector 选对型号,重新构建。不会影响已写入的 SD 卡——重新刷入正确固件即可。

Q: 构建失败 / 下载链接过期?

重新点击 Request Build。链接有效期有限,建议尽快下载。

Q: 刷完无法启动?

  • 确认型号选择正确
  • 检查 SD 卡接触良好
  • 尝试重新写入
  • 查看串口日志排查原因

Q: 如何更新固件?

在 ImmortalWrt Web 界面 → System → Backup/Flash Firmware → Flash image,上传新的 .img 文件即可。


界面截图参考

下面是 ImmortalWrt Firmware Selector 的自定义包列表界面,实际使用时可以看到完整的插件输入框和构建按钮:

ImmortalWrt Firmware Selector 自定义包列表界面


总结

ImmortalWrt Firmware Selector 的优势:

  • ✅ 无需本地 Linux 环境和编译工具链
  • ✅ 浏览器操作,门槛极低
  • ✅ 2-3 分钟出成品
  • ✅ 插件增删自由,固件按需定制
  • ✅ 官方构建,安全可靠

适合场景:快速部署树莓派做软路由、家庭网关、NAS 代理等。

不是 Hermes 变笨了,是它的"坟场"把你最好的工具收走了

早上我让 Hermes 帮我写一个新 skill,用来规范 API 测试流程。这个任务不复杂,之前我已经把 skill 写作规范整理过一轮,所以我预期它至少会照着现有规则走。

结果它交出来的 SKILL.md 很怪:frontmatter 里少了 license,description 只有一句话,目录结构也没按我刚定下来的规范走。


坟场

.archive/~/.hermes/skills/ 下面,说白了就是 Hermes curator 的”坟场”。

我一直知道 curator 这个东西。v0.12 更新时,官方把它叫成后台维护管家,定期扫描 skill 库,把长期不用的 skill 归档掉。配置里也写得很清楚:30 天不用变 stale,90 天不用进 archive。

我一开始没当回事,像我这种重度用户,真重要的 skill 怎么可能 90 天不用?

现在回头看,这个判断太粗了。

更麻烦的是,curator 不只有”时间到了自动归档”这一条线。它还有一个 LLM review 阶段:每隔 7 天,curator 会 spawn 一个辅助 agent,扫一遍你的 skill 库,判断哪些该保留,哪些该合并,哪些该归档。这个判断不完全按时间来,它还会看”相关性”和”冗余度”。

我的 skill-creator 就死在这里。

我优化过的新版本,和之前那个英文版的 hermes-agent-skill-authoring,在 curator 眼里都是”写 skill 的工具”。它判断了一轮,把新的归档了,留下了旧的。而留下来的,正是那个不太行的版本。

隐蔽的崩塌

这事最坑的地方,不是它归档了 skill,而是它不会报错

如果 skill 彻底没了,你马上能发现:加载失败,文件不存在,命令直接炸。但 skill-creator 不是消失了。它只是被换成了另一个名字相近、功能也相近、但规则落后的版本。

表面上看,Hermes 还在正常工作;实际上一些关键约束已经没了。你很容易顺着别的方向排查:是不是模型今天状态差?是不是 provider 的输出风格变了?是不是上下文压缩把规则压没了?是不是我自己记错了?

我就是这么绕进去的。半小时里,我重启 session、换 provider、查配置,最后才发现不是模型变笨,是我调好的 skill 被 curator 收走了。

更烦的是,这半小时里我还顺手写了三个不合格的 skill,全部得返工。

还有一个很讽刺的点:我优化过的 skill-creator 里面,明明写了”重要 skill 需要 pin 保护”。

我自己写的规则,我自己忘了执行。

怎么查、怎么救

先看坟场:

1
ls ~/.hermes/skills/.archive/

如果 skill 已经进去,先救回来:

1
hermes curator restore skill-creator

但这只是把它从坟场拖出来。下次 curator review,它仍然可能被判断成”可归档”。

真正要做的是 pin 住

1
hermes curator pin skill-creator

然后验证一下:

1
2
cat ~/.hermes/skills/.usage.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['skill-creator'].get('pinned'))"
# → true

这一步不要省,尤其是你自己调过的 skill。

restore 解决的是”现在能不能用”,pin 解决的是”下次会不会又被收走”。这两个动作不是一回事。

哪些必须 pin

我现在会优先 pin 这几类:

  • skill-creator:低频,但一旦失效,后面写出来的 skill 会断崖下跌
  • para:文档治理规范,丢了以后落盘路径会乱
  • cronjob-operations:定时任务总控,缺了它就容易把 cron 配错
  • hot-news:热点新闻规范,事实核查标准不能丢

我的判断标准很简单:只要一个 skill 是你花时间调过的,而且不是每天都会用,就应该 pin。

高频 skill 反而没那么危险,因为 curator 容易看到它被使用。真正危险的是那些”平时不用、用时必须准”的 skill。它们在系统里看起来最像可以被清理的冗余项,也最容易被清错。

这个标准不需要搞得太复杂。你可以先从两个问题开始:

  1. 这个 skill 我是不是亲手改过?
  2. 它失效之后,会不会污染后面一串输出?

如果两个答案都是”是”,就别等它出事。

不是 Hermes 变笨了

这件事我一开始真的以为是 Hermes 变笨了。

后来发现不是。

curator 本身不是 bug。skill 用久了肯定会膨胀,如果没有整理机制,最后上下文里全是旧规则、重复规则、半成品 skill,agent 反而更难判断该听谁的。

问题在于,LLM review 对”重要但低频”的东西判断不稳。它能看到两个 skill 都在写 skill,也能看到其中一个最近没怎么用;但它看不到你为了那个版本改过多少细节,更看不到它一旦被归档,后面的输出质量会掉多少。

我的建议很直接:别把 pin 当成可选项。

凡是你认真打磨过、但不一定高频使用的 skill,先 pin 住。否则哪天 Hermes 突然开始”退化”,你可能会先怀疑模型、怀疑配置、怀疑上下文。

最后才发现,它只是把你最重要的工具,安静地收进了坟场。

114年前的光影記憶

看著這些114年前的照片,搭配著配樂與旁白解說,不禁讓人感嘆歲月如梭、時光飛逝。那一幕幕繁華場景,如今已成昨日雲煙,落寞之感油然而生。

照片中的街道、建築、人群,無不透露出當年蓬勃的氣息。繁榮的當下被鏡頭定格,成為永恆的見證。

感恩當年拍攝者的用心記錄,讓我們這些後代子孫得以一窺百年前的真實面貌,體會那曾經的當下。

影片時長約11分鐘,檔案大小約204MB,建議在Wi-Fi環境下觀看。

AI 幫我幹完了體力活,剩下的最難的事才是我

我偶爾會希望進度能再快一點,最好直接幹到 AGI / ASI 已經到來。這樣我就可以為所欲為,幹些想幹但一直沒空的事。

所以每次新模型發布,總感覺這事又進了一步。而 Fable(一個用得很順的模型)沒法用之後,感覺這事又特么遠了幾步……

但現實是,每有更強大的新模型發布,只會讓我更加筋疲力盡。每天到了深夜都很難停下來,身體每況愈下,睡眠嚴重不足,體力非常之差——上次跑半馬都是上次了。


我發現了原因

AI 只是幫我把簡單的體力活都幹完了,剩下最難的事則還得我來做。

如果你幹過古法程式設計、還做過管理打過雜,應該會很有體會:在 3D 框架(我瞎取的)——

  • Decide(決策)
  • Develop(開發)
  • Deliver(交付)

三件事中,Develop 其實是最舒服的一環。它有明確的邊界、即時的回饋、可控的目標,是心流最容易發生的地方。

而現在,最舒服的 Develop 這一環沒了。需要我做的是最難的 Decide 和 Deliver——沒有邊界、沒有盡頭、沒有喘息。

更進一步,隨著模型越來越強,需要我做的事也將變得越來越難,因為 AI 會蠶食掉那些「簡單」的事。我甚至有種預感:可能用不了多久,許多人將無法勝任 AI 留下來的工作,於是便不再被需要了。

所以——還是慢點兒,別快進了??


關於「超級個體」

公司裡不同的人用 AI 幹的事和效果差別很大,完全跟他的認知廣度和深度成正比。

以前聽一些博客說「超級個體」,一個人做的事可以是普通人的幾千倍——那時候感覺太誇張了。但現在覺得,頂級的人藉助 AI 把簡單的事全包了,做的事情比一般人效率強 100 倍 確實是可以的。

目前比較明顯的收益是存量收益:現在能跑通的業務,其實可以大量裁員。裁一半問題不大,AI 把大部分工作自動化,剩下幾個人盯著別出問題就行。

存量收益有天花板——大量裁員一定導致大量需求也消失。

所以還要看 AI 和超級個體能不能快速做出新業務、產生新的收益。我感覺這是後面 AI 有沒有泡沫的關鍵:AI 的能力跟上了,但配套的產出模式變化很慢——或者說,生產力到了,生產關係還沒跟上。

當然,也可能是我見識太少。大公司推 AI 到底是為了讓你能裁員,還是為了讓你去到新地方,這還不好說。


從這個角度看

如果留下來的一半人加上 AI,能把原本一家的產出變成三到五家,那裁員就不是「省錢」而是「資源重配置」。如果不能,AI 投資回報率就在邊際遞減。

歷史上看,每次技術革命都經歷了這個階段——蒸汽、電氣、互聯網——新東西先被用來做舊事情,然後才慢慢長出新模式。這次大概也不例外。

所以如果身體已經在抗議了,或許真正該做的不是讓 AI 跑得更快,而是重新想想:什麼事留給自己做,什麼事交給 AI 做——不是按難易分,是按什麼能讓自己活下去、回得了血來分。

就算 AI 能 10 秒搞定的事,我想花 10 分鐘慢慢寫也沒關係吧。那不是效率問題,那是生存策略。

从零搭建 Hermes Agent —— Windows 安装、模型配置、微信网关接入全教程

读完这篇文章,你将在自己的 Windows 电脑上跑起一个全功能的 AI Agent,连上微信随时对话。


一、什么是 Hermes Agent

Hermes Agent 是 Nous Research 开源的 AI Agent 框架。它能:

  • 连接 20+ 大模型提供商(OpenRouter、Anthropic、OpenAI、DeepSeek、Google、本地模型等)
  • 接入 10+ 聊天平台(Telegram、Discord、微信、Signal、Matrix 等)
  • 跨会话记忆 —— 它记得你是谁、你的偏好、你的环境
  • 自我进化 —— 通过 Skill 机制从经验中学习,越用越顺手
  • 定时任务、子代理、浏览器自动化、MCP 工具一应俱全

简单说:你的专属 AI 助手,住在你自己的机器上,通过你最喜欢的聊天软件跟你对话。

Hermes Agent 架构示意图

安装过程

微信网关配置

聊天效果演示


二、Windows 安装(WSL2)

Hermes 原生支持 Linux/macOS/WSL。Windows 用户通过 WSL2 获得最佳体验。

2.1 前提条件

  • Windows 10/11
  • 已安装 WSL2(管理员 PowerShell 运行 wsl --install
  • 已安装 Ubuntu(wsl --install -d Ubuntu

2.2 安装步骤

打开 WSL2 Ubuntu 终端,依次执行:

1
2
3
4
5
6
7
8
9
# 1. 安装基础依赖
sudo apt update && sudo apt install -y curl git python3 python3-venv python3-pip build-essential

# 2. 克隆 Hermes Agent
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent

# 3. 运行安装脚本
bash scripts/install.sh

安装脚本会自动:

  • 创建 Python 虚拟环境
  • 安装所有依赖
  • hermes 命令加入 PATH

2.3 验证安装

1
hermes --version

看到版本号就说明安装成功。

2.4 启动交互式聊天

1
hermes

你会看到一个命令行聊天界面,可以直接开始对话。

Ctrl+C 退出。


三、配置自己的模型

Hermes 需要一个大模型后端才能工作。你可以选择云端 API 或本地模型。

3.1 方案一:云端 API(推荐新手)

获取 API Key

以下是常用提供商,注册并获取 API Key:

提供商 免费额度 注册链接
OpenRouter 注册送额度 openrouter.ai/keys
DeepSeek 注册送 1000 万 token platform.deepseek.com
Anthropic 注册送额度 console.anthropic.com
OpenAI 注册送额度 platform.openai.com

推荐新手用 OpenRouter —— 一个 Key 访问多家模型,切换方便。

配置 API Key

1
2
# 打开配置文件
nano ~/.hermes/.env

添加:

1
2
3
4
5
6
7
8
# 以 OpenRouter 为例
OPENROUTER_API_KEY=sk-or-v1-xxxxx

# 或 DeepSeek
DEEPSEEK_API_KEY=sk-xxxxx

# 或 Anthropic
ANTHROPIC_API_KEY=sk-ant-xxxxx

保存退出(Ctrl+OEnterCtrl+X)。

选择模型

1
hermes model

交互式选择界面会列出所有可用模型。也可以用命令直接设置:

1
2
3
4
5
6
7
8
9
10
11
# 用 Claude
hermes config set model.default anthropic/claude-sonnet-4
hermes config set model.provider anthropic

# 用 GPT-4o
hermes config set model.default openai/gpt-4o
hermes config set model.provider openai

# 用 DeepSeek
hermes config set model.default deepseek/deepseek-chat
hermes config set model.provider deepseek

测试

1
hermes chat -q "你好,请用一句话介绍你自己"

收到回复 = 模型配置成功。

3.2 方案二:本地模型(进阶,隐私优先)

适合有较强显卡(至少 8GB 显存)的用户。

安装 Ollama

1
curl -fsSL https://ollama.com/install.sh | sh

下载模型

1
2
3
ollama pull llama3.2        # Meta Llama 3.2
ollama pull qwen2.5 # 通义千问 2.5
ollama pull codellama # 代码专用

配置 Hermes 连接 Ollama

1
2
3
4
hermes config set model.default llama3.2
hermes config set model.provider openai
hermes config set model.base_url http://localhost:11434/v1
hermes config set model.api_key not-needed

Ollama 默认端口 11434,Hermes 通过 OpenAI 兼容接口连接。

3.3 多模型自动切换

Hermes 支持配置主模型 + 备用模型:

1
2
3
4
5
6
7
8
# ~/.hermes/config.yaml
delegation:
model: deepseek-v4-pro
provider: deepseek

compression:
enabled: true
threshold: 0.12

主模型正常时走主模型,挂了会自动切换备用模型。


四、配置微信网关

这是最精彩的部分 —— 让 Hermes 通过微信跟你对话。

4.1 原理

1
你发微信 → 微信服务器 → Hermes Gateway → AI 模型 → 回复 → 微信 → 你

Hermes 通过微信 Web 协议接入,需要一个微信账号作为”助手”。

⚠️ 风险提示:使用个人微信号接入存在封号风险。建议使用备用微信号。Hermes 官方推荐用企业微信或微信公众号。

4.2 配置步骤

第一步:创建 Profile(隔离环境)

1
hermes profile create wechat --no-skills --description "微信助手"

这会创建独立的配置目录 ~/.hermes/profiles/wechat/

第二步:在新 Profile 里配置模型

1
nano ~/.hermes/profiles/wechat/config.yaml

写入:

1
2
3
4
5
6
7
8
9
model:
default: openrouter/anthropic/claude-3-7-sonnet
provider: openrouter
api_key: ${OPENROUTER_API_KEY}

gateway:
platforms:
weixin:
enabled: true

第三步:设置环境变量

~/.hermes/profiles/wechat/ 下创建 .env

1
OPENROUTER_API_KEY=sk-or-v1-xxxxx

第四步:启动网关

1
2
wechat gateway setup    # 交互式引导,按提示扫码登录微信
wechat gateway start

启动后终端会显示二维码,用微信助手号扫码登录。

第五步:验证

在微信上给你的助手号发一条消息,看看能不能收到回复。

4.3 常用网关命令

1
2
3
4
5
6
7
8
# 查看状态
wechat gateway status

# 重启网关(修改配置后需要重启)
wechat gateway restart

# 查看日志
tail -n 50 ~/.hermes/profiles/wechat/logs/gateway.log

4.4 多账号配置(进阶)

Hermes 支持多 Profile 并行运行,每个 Profile 绑定不同微信号:

1
2
3
4
5
6
7
# 主账号
hermes profile create main --description "主微信"
main gateway start

# 副账号
hermes profile create alt --description "备用微信"
alt gateway start

两个微信号互不干扰,各自有独立的记忆和配置。


五、更多平台接入

除了微信,Hermes 还支持:

平台 配置难度 说明
Telegram ⭐ 简单 BotFather 创建 Bot,一行命令搞定
Discord ⭐ 简单 创建 Bot,开启 Message Content Intent
Signal ⭐⭐ 中等 需要 Signal 桌面端
Slack ⭐⭐ 中等 创建 Slack App,订阅事件
邮件 ⭐ 简单 IMAP/SMTP 配置

Telegram 配置示例:

1
2
3
4
5
6
7
# 1. 从 @BotFather 获取 Token
# 2. 设置环境变量
echo "TELEGRAM_BOT_TOKEN=123456:ABC-xxx" >> ~/.hermes/.env
echo "TELEGRAM_PROXY=http://127.0.0.1:7890" >> ~/.hermes/.env

# 3. 重启网关
hermes gateway restart

六、进阶玩法

6.1 定时任务

1
2
3
4
5
# 每天早上 9 点推送天气
hermes cron create "0 9 * * *" --prompt "查询北京天气并发送给我"

# 每 30 分钟检查一次
hermes cron create "30m" --prompt "检查是否有待处理任务"

6.2 Skill 机制

Hermes 的 Skill 是它最强大的特性 —— 可复用的操作手册。

1
2
3
4
5
6
7
8
# 搜索社区共享的 Skill
hermes skills browse

# 安装一个 Skill
hermes skills install github:xxx/skill-name

# 查看已安装的 Skill
hermes skills list

6.3 子代理

复杂任务可以派给子代理并行处理:

1
2
3
# Hermes 自动判断何时需要使用子代理
# 也可以手动指定
hermes chat -q "同时帮我做三件事:查天气、搜新闻、写周报"

七、常见问题

Q: 安装报错 python3: command not found

1
sudo apt install python3 python3-venv python3-pip

Q: 微信登录后没反应

  1. 检查网关日志:grep "error" ~/.hermes/logs/gateway.log | tail -20
  2. 确认模型 API Key 正确
  3. 重启网关:hermes gateway restart

Q: 模型返回 “401 Unauthorized”

API Key 过期或错误。在 对应平台 重新生成。

Q: 切换模型后没生效

1
2
# 需要重启网关使配置生效
hermes gateway restart

八、总结

你现在应该有了:

  • ✅ 一个运行在 Windows(WSL2)上的 Hermes Agent
  • ✅ 配置好的 AI 模型(云端或本地)
  • ✅ 接入微信的网关,随时通过微信和 AI 对话

接下来你可以:

  • 探索更多 Skill 让 Agent 更聪明
  • 接入更多平台(Telegram、Discord)
  • 配置定时任务让 Agent 主动帮你干活
  • 尝试本地模型保护隐私

Happy building! 🚀


参考链接

昨天遇到了一只三花猫

昨天在路上遇到了一只三花猫,它蹲在路边晒太阳。我蹲下来和它打了个招呼,它看了我一眼,喵了一声就走了。

三花猫真的很漂亮,白色、橘色、黑色交织在一起,每只的花纹都独一无二。

三花猫