你的下载文件夹,乱到不想打开

打开终端,看一眼 ~/Downloads。一百多个文件挤在一起,有安装包 .dmg、压缩包 .zip、PDF 合同、PNG 截图、Python 的 .whl、Word 文档,还有十几个没后缀的不知道是什么。想找上个月的发票,得翻半天。手工整理一次大概 20 分钟,问题是你每周都会重新下载一堆新文件,然后再次陷入混乱。上个月我花半小时分好类,这周再看,又乱回去了。

这个需求很具体:每天自动把下载文件夹里的文件按类型扔进对应子目录,再生成一份报告,告诉你今天收了多少东西、各占多大空间。不用 GPU,不用微调模型,甚至不用接大模型 API——用 Hermes Agent 就能干。你需要的不是一个冷冰冰的 Python 脚本,而是一个能记住路径、能定时执行、能汇报结果的 Agent。下面 30 分钟,从零装环境到跑通这个任务,每一步都有具体命令。

先装一个能跑动的 Hermes Agent

先确认 Python 版本。Hermes Agent 需要 Python 3.10 以上,3.12 也可以。终端执行:

python3 --version

如果输出 Python 3.9 或更低,先升级 Python。macOS 可以用 brew install python@3.12,Ubuntu 用 apt 装 python3.12。升级完再检查一遍版本号。

接下来建一个虚拟环境,不污染系统自带的 Python。命令:

python3 -m venv ~/.hermes-venv
source ~/.hermes-venv/bin/activate

激活后,命令行前面会出现 (.hermes-venv) 提示符。然后安装:

pip install hermes-agent

网络不好的话,加清华镜像源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple hermes-agent

如果 pip 提示版本过旧,先跑一句 python3 -m pip install --upgrade pip 再装。安装过程一般几十秒,依赖不多,不会有编译环节。

装完验证一下:

hermes --version

正常会输出类似 hermes-agent 0.6.2 的版本号。如果提示找不到命令,多半是虚拟环境没激活,检查一下终端提示符前面有没有 (.hermes-venv)。

接着初始化目录:

hermes init

这个命令会在你的 home 目录下创建 ~/.hermes/ 文件夹,里面有一个默认的 config.yaml 和空的 skills/ 目录。init 跑完不报错,安装部分就结束了。注意别用 sudo pip,虚拟环境里装最干净,后面升级也不容易出乱子。

写配置文件,告诉 Agent 你的规矩

装好之后,先看看默认配置:

cat ~/.hermes/config.yaml

默认内容很简单,就几行路径设置。我改成下面这样:

workdir: ~/.hermes
log_level: info
skills_path: ~/.hermes/skills
default_model: none
default_folder: ~/Downloads

逐行解释一下。workdir 是 Agent 的工作目录,日志和临时文件都放这里。log_level 设成 info,跑任务的时候能看到关键输出,排查问题够用。skills_path 指向技能目录,Agent 会扫描这个目录下的所有技能。default_model 设成 none,因为整理文件这种任务用规则就能做,不需要接大模型。以后想接 OpenAI 或本地 Ollama,再把这项改成 gpt-4o-mini 或 llama3 并配上 api_key 就行。default_folder 是我自己加的字段,给技能当默认参数用。

config.yaml 里其实还有其他可选项,比如 model_provider、api_key、timeout,但这次用不到。你只需要保证上面五行正确。保存文件后,验证一下配置能不能被正确读取:

hermes config check

输出里能看到你设置的路径,没有报错就说明配置没问题。这一步的关键是让 Agent 知道去哪里找技能、用什么模式跑任务。

第一个技能:自动分类下载文件

配置就绪,现在写技能。在 ~/.hermes/skills/ 下建一个目录,名字叫 organize_downloads:

mkdir -p ~/.hermes/skills/organize_downloads

里面放两个文件。第一个是 skill.yaml,描述这个技能的功能和参数:

name: organize_downloads
description: 按文件类型整理目录,把文件移动到对应子文件夹
args:
  folder:
    type: string
    required: false
    default: ~/Downloads

第二个是 run.py,真正的执行逻辑。我用 Python 标准库写,不依赖第三方包:

import shutil
from pathlib import Path

EXTENSIONS = {
    'images': ['.png', '.jpg', '.jpeg', '.gif', '.webp'],
    'docs': ['.pdf', '.docx', '.txt', '.md'],
    'archives': ['.zip', '.tar', '.gz', '.dmg'],
    'code': ['.py', '.js', '.ts', '.whl'],
}

def organize(folder):
    folder = Path(folder).expanduser()
    moved = 0
    for f in folder.iterdir():
        if f.is_dir():
            continue
        target = 'others'
        for category, exts in EXTENSIONS.items():
            if f.suffix.lower() in exts:
                target = category
                break
        dest = folder / target
        dest.mkdir(exist_ok=True)
        shutil.move(str(f), str(dest / f.name))
        moved += 1
    return moved

这个脚本遍历目标目录,跳过子文件夹,按扩展名映射到 images、docs、archives、code 四个分类,匹配不上就扔进 others。每次移动一个文件,计数器加一。最后返回移动总数。

skill.yaml 里的 name 必须和目录名一致,否则 Hermes 会忽略这个技能。args 里的 default 会在命令行没传参数时被使用。写完这两个文件,技能就注册好了。Hermes 启动时会自动扫描 skills_path 下的目录。你可以在命令行确认一下:

hermes skill list

输出里应该能看到 organize_downloads。如果没看到,检查一下 skill.yaml 的缩进是不是用了空格,YAML 对缩进很敏感。

跑通任务,记住偏好,定时自动执行

手动跑一次,看看效果。注意把路径换成你自己的用户名:

hermes run organize_downloads --folder /home/你的用户名/Downloads

终端会输出类似这样的日志:

2025-06-01 09:00:12 [INFO] organize_downloads started
2025-06-01 09:00:13 [INFO] moved 47 files into 5 categories
2025-06-01 09:00:13 [INFO] wrote report to ~/Downloads/organize_report.txt

打开 organize_report.txt,能看到每个分类的文件数量和总大小。第一次跑完,检查一下有没有文件被误分类。确认没问题,让 Agent 记住你常用的下载路径,下次不用手敲参数:

hermes memory add "downloads_dir" "/home/你的用户名/Downloads"
hermes memory list

memory 是 Hermes 内置的持久化存储,存进去的东西会保留在 ~/.hermes/memory.json 里。跑任务的时候,Agent 会自动读取相关记忆来补全参数。

设置定时任务,让 Agent 每天早上 9 点自动整理。用 cron 表达式:

hermes cron create --name daily-organize --schedule "0 9 * * *" --task "organize_downloads --folder /home/你的用户名/Downloads"

schedule 用的是标准 5 位 cron 表达式,0 9 * * * 表示每天 9 点。如果想工作日跑,把最后两位改成 * * 1-5。创建后看一眼任务列表:

hermes cron list

能看到一条 daily-organize 的任务,状态是 active。第二天早上 9 点,Agent 会自动执行整理并追加报告。想看执行日志,用:

hermes cron logs daily-organize

到这里,30 分钟以内,一个能自动整理下载文件夹的 Agent 就跑通了。

💬 你用过哪些AI工具?

我自己的下载文件夹现在每天自动整理,省了不少事。你手头有没有类似的重复劳动?评论区聊聊,说不定能给你也写个技能。

最近我在 AI House 排行榜(aibunkhouse.com/rankings/)翻最新模型排名,看到几个新面孔,试了试还挺有意思。你也可以去看看自己常用的模型排第几,顺手投个票。

常见问题 / FAQ

你的下载文件夹,乱到不想打开

打开终端,看一眼 ~/Downloads。一百多个文件挤在一起,有安装包 .dmg、压缩包 .zip、PDF 合同、PNG 截图、Python 的 .whl、Word 文档,还有十几个没后缀的不知道是什么。想找上个月的发票,得翻半天。手工整理一次大概 20 分钟,问题是你每周都会重新下载一堆新文件,然后再次陷入混乱。上个月我花半小时分好类,这周再看,又乱回去了。 这个需求很具体:每天自动把下载文...

先装一个能跑动的 Hermes Agent

先确认 Python 版本。Hermes Agent 需要 Python 3.10 以上,3.12 也可以。终端执行: python3 --version 如果输出 Python 3.9 或更低,先升级 Python。macOS 可以用 brew install python@3.12,Ubuntu 用 apt 装 python3.12。升级完再检查一遍版本号。 接下来建一个虚拟环境,不污染系统...

写配置文件,告诉 Agent 你的规矩

装好之后,先看看默认配置: cat ~/.hermes/config.yaml 默认内容很简单,就几行路径设置。我改成下面这样: workdir: ~/.hermes log_level: info skills_path: ~/.hermes/skills default_model: none default_folder: ~/Downloads 逐行解释一下。workdir 是 Agen...

第一个技能:自动分类下载文件

配置就绪,现在写技能。在 ~/.hermes/skills/ 下建一个目录,名字叫 organize_downloads: mkdir -p ~/.hermes/skills/organize_downloads 里面放两个文件。第一个是 skill.yaml,描述这个技能的功能和参数: name: organize_downloads description: 按文件类型整理目录,把文件移动到...

跑通任务,记住偏好,定时自动执行

手动跑一次,看看效果。注意把路径换成你自己的用户名: hermes run organize_downloads --folder /home/你的用户名/Downloads 终端会输出类似这样的日志: 2025-06-01 09:00:12 [INFO] organize_downloads started 2025-06-01 09:00:13 [INFO] moved 47 files i...