场景:用户说"帮我发一封邮件"
#### 用户输入(自然语言)
"帮我给 test@example.com 发一封邮件,主题是'会议提醒',内容是明天下午3点开会"
#### 智能体 自动发现 Skill(无需用户指定)
系统会自动扫描所有 skills,找到匹配的:
skills_list → 发现 "send-email-go"
描述匹配: "Send emails via pre-built `send-email` binary"
#### 自动加载 Skill 内容
智能体 会自动调用 skill_view(name='send-email-go') 加载完整说明:
markdown
# 加载到的内容
## Binary location
~/.hermes/skills/email/send-email-go/scripts/send-email
## Usage
1. Create a JSON config file
2. Run with env overrides
...
#### 大模型自动执行(用户无感知)
基于 skill 的说明,我会自动完成以下步骤:
python
# 步骤 1: 创建临时配置文件
write_file("/tmp/email_config.json", {
"host": "smtp.gmail.com",
"port": "587",
"from": user_email,
"to": ["test@example.com"],
"subject": "会议提醒",
"body": "明天下午3点开会",
"is_html": false
})
# 步骤 2: 调用二进制文件
terminal(
'SMTP_PASS=<从配置读取> ~/.hermes/skills/email/send-email-go/scripts/send-email /tmp/email_config.json'
)
#### 用户看到的只是结果
邮件已发送到 test@example.com
完整自动调用流程图
用户自然语言请求
↓
Hermes 扫描 skills_list
↓
匹配到 "send-email-go"(描述包含 "send emails")
↓
自动 skill_view(name='send-email-go') 加载说明
↓
大模型阅读 SKILL.md 了解:
- 二进制位置
- 配置格式
- 环境变量覆盖
- 常见陷阱(Gmail 需要 app password)
↓
自动生成 JSON 配置 + 调用命令
↓
执行 terminal() 发送邮件
↓
返回结果给用户
关键优势
| 特性 | 说明 |
|---|---|
| 零配置 | 用户不需要知道命令、参数、路径 |
| 自动发现 | 系统根据描述自动匹配最合适的 skill |
| 包含最佳实践 | Skill 中内置了 pitfalls(如 Gmail 需要应用密码) |
| 可复用 | 一次编写,所有会话自动使用 |
对比:有 Skill vs 无 Skill
| 场景 | 无 Skill | 有 Skill |
|---|---|---|
| 用户说"发邮件" | ❌ 需要问用户用什么工具、SMTP 配置 | ✅ 自动调用预配置的工具 |
| 大模型需要知道 | 自己摸索或搜索文档 | 直接读取 SKILL.md |
| 错误处理 | 可能遇到未知错误 | Skill 已记录常见陷阱 |
📝 你的 send-email-go Skill 实际工作示例
当用户说:
"给老板发个邮件,说项目延期了"
我会自动:
- 加载
send-email-goskill - 读取其中的 SMTP 配置模式
- 询问用户发件人信息(如果是第一次)
- 自动生成 JSON 并调用二进制
- 返回发送结果
用户全程只需要说自然语言,不需要知道任何技术细节。
这就是 Skills 的核心价值:把复杂工具的使用流程封装起来,让大模型能自动、正确地调用。
- THE END -
最后修改:2026年5月26日
非特殊说明,本博所有文章均为博主原创。