Hermes 代理回合完成通知器 | 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 = 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