首先,我们可以将标准流程系统化地展开:你需要构建一个可复用的自动化技能库。第一步是确认 Hermes 已成功运行——在终端中输入 hermes,如果看到欢迎界面并显示模型名称(例如 deepseek-v4-pro),说明基础服务已经就绪。
接下来进入技能开发目录:cd ~/.hermes/skills。这是 Hermes 默认读取技能的唯一入口路径,请勿手动新建子文件夹或修改名称,否则启动时会直接加载失败,而且不会有任何提示信息。
创建你的第一个技能文件夹:mkdir weekly-report-gen,然后 cd 进入该目录。这里有一个硬性规则:文件夹名称必须使用小写字母加短横线。空格、中文、大驼峰命名都不被允许——Hermes 的技能加载器只遵循 POSIX 文件系统规范,不符合规范的命名会导致技能静默失效,甚至连错误日志都不会输出。
如何创建这个技能文件夹?推荐使用 skill-creator 快速生成标准结构。如果尚未安装该工具,直接在 Hermes 对话中输入“请使用 skill-creator 帮我创建一个新技能”,AI 会自动触发引导流程。
方法一:通过自然语言定义需求。当 AI 询问技能名称时,回答 weekly-report-gen;当询问核心用途时,回答“从 Outlook 邮件和飞书多维表格中提取本周工作项,合并去重后生成 Markdown 格式周报”;当询问输入输出时,回答“输入是邮箱账号 + 飞书 token + 时间范围,输出是带标题、进度条、阻塞项标记的 .md 文件,保存到 ~/Desktop/weekly/”。
方法二:如果你心里已经明确技能结构,可直接跳过引导,在对话框中粘贴以下指令:skill-creator --name weekly-report-gen --desc "自动生成跨平台周报" --input "email,feishu_token,range" --output "markdown_file",回车后系统会自动创建 SKILL.md 和 config.yaml 骨架。
请注意 config.yaml 中的 requires 字段,必须显式声明依赖的工具,例如 requires: ["outlook", "feishu-api"]。如果遗漏此项,后续执行时会在权限校验环节卡住,而且没有日志反馈,排查起来非常棘手。
接下来是注入真实办公逻辑,你需要落地三类关键文件。
第一步:补全 SKILL.md 中的 execution_steps 区块。用编辑器打开 SKILL.md,找到 ## Execution Steps 部分,将动作链写清晰:
① 调用 outlook.search_mail(from:"me", subject:"周报", date_after:"7d") 获取原始邮件
② 提取正文中的任务列表,用正则过滤掉签名和问候语
③ 调用 feishu.get_table_rows(app_id:"abc123", view_id:"v456") 拉取飞书表格最新数据
④ 合并两路数据,按「进行中/已完成/阻塞」分类,用 Mermaid 语法渲染进度条
⑤ 将结果写入 ~/Desktop/weekly/report_$(date +%Y%m%d).md
第二步:编写实际执行脚本。在 skills/weekly-report-gen/ 目录下新建 run.py,文件开头必须写 #!/usr/bin/env python3,首行不能包含空格或 BOM。此外,脚本中所有的 API 调用都应该用 try/except 包裹,否则一次网络超时就会导致整个技能进程崩溃退出。
第三步:配置权限与凭证。编辑 config.yaml,在 auth: 下添加:outlook: client_id: "your-outlook-client-id" scope: ["Mail.Read", "MailboxSettings.Read"]
这些值必须从 Azure AD 应用注册后台复制,手动输入时哪怕一个字符错误都会返回 401 错误,而且不会提示具体哪个字段出错。
最后,进行本地测试与热重载。在 Hermes 终端中输入:hermes skill reload weekly-report-gen,当看到 [OK] skill weekly-report-gen reloaded 时,说明代码已经成功注入运行时。
发送测试指令:执行本周周报生成,飞书 token 是 fs_abc123,邮箱用 work@company.com。如果返回 ERROR: auth failed for outlook,请立即检查 ~/.hermes/config.yaml 中的 outlook_auth 是否填入了正确的 refresh_token。请注意,这个 token 不是 client_secret,也不是临时 code,必须通过 OAuth2.0 流程首次手动换取并持久化存储。
修改完 run.py 之后不需要重启 Hermes,只需再次执行 hermes skill reload weekly-report-gen,改动就会立即生效。这套完整的流程走下来,你就拥有了一个可以反复调用的自动化技能库,而且今后每个新技能都可以复用这个模板和思路。
