赫尔墨斯完成通知脚本说明 | AI生成和翻译

Home 2026.05

问题: 你能解释一下这个 Bash 脚本是做什么的吗?

回答:

这个脚本是 macOS 上 Hermes 代理的一个后处理钩子。它旨在每当 Hermes 完成一次对话轮次时通知用户。让我们逐步解析:


1. 脚本元数据

#!/usr/bin/env bash
# ~/.hermes/agent-hooks/on-agent-done.sh

2. Bash 安全选项

set -euo pipefail

这使得脚本更加健壮,避免静默错误。


3. 读取负载

payload="$(cat -)"

4. 使用 Python 提取数据

extracted=$(echo "$payload" | python3 -c "
import json, sys
data = json.load(sys.stdin)

# 从 cwd 获取目录名
cwd = data.get('cwd', '')
import os
dirname = os.path.basename(cwd) if cwd else 'unknown'

# 用户消息的前10个字符
extra = data.get('extra', {})
user_msg = extra.get('user_message', '')[:10]

# 对话历史记录数量
history = extra.get('conversation_history', [])
hist_count = len(history)

print(f'{dirname}|{user_msg}|{hist_count}')
" 2>/dev/null) || extracted="unknown||0"

5. 分割提取的值

IFS='|' read -r dirname user_preview hist_count <<< "$extracted"

6. 构建通知副标题

subtitle="msg: ${user_preview}  |  turns: ${hist_count}"

7. 发送 macOS 通知

osascript -e "
display notification \"Hermes has completed one turn.\" with title \"Hermes Agent — ${dirname}\" subtitle \"${subtitle}\" sound name \"Glass\"
" >/dev/null 2>&1 || true

8. 返回空 JSON

printf '{}\n'

总结

这是一个简单但有效的方式,用于在 macOS 上直观地跟踪 Hermes 的活动


如果你需要,我还可以画一个小型流程图,展示 JSON 如何从 Hermes → 此脚本 → macOS 通知,这样更容易理解整个流程。

需要我这么做吗?


Back Donate