四象引擎案例 · Hermes Worker

📊 SkyCetus 五行飞轮分析报告
💥 问题

目标:让 Hermes Agent(本地 AI 代码生成器)作为 SkyCetus 协作节点,可靠地接收任务、生成代码。 现实:同步调用 100% 失败。

⏱ SIGKILL 超时

OpenClaw 父进程 90 秒超时 → 强制杀死 Hermes 子进程。每次都在 Hermes 完成工作之前被终止。

📭 stdout 黑洞

Windows PTY 的 stdout 捕获完全失效。Hermes 执行命令后输出永远为空,进入无限验证循环。

💔 PowerShell 展开

多行文本变量在 PowerShell 命令行展开时被拆分成多个参数,Hermes CLI 参数解析失败。

🔄 死循环

Hermes 运行脚本 → stdout 空 → 换方法重试 → 仍然空 → 烧完全部时间预算 → 被 SIGKILL。

🔮 四象飞轮分析

将问题分别放入四个飞轮独立分析,看它们是否收敛。

🐉 青龙 · 源流
Seed — 能力识别
我们在要求鱼爬树。
Hermes 的 Native Ability 是文件写入(< 2 秒),不是终端执行。 write_file 信任分 = HIGH,terminal_tool 信任分 = ZERO。 ZERO × 任何倍数 = ZERO。不要放大不存在的能力。
🐦 朱雀 · 势流
Task — 执行解耦
同步调用 = 单点阻塞。
三次失败的残差积累:PowerShell 展开破坏参数 → stdout 永远为空 → 父进程超时杀子进程。 三个残差收敛到同一个解:独立 Worker 进程,无父进程超时。
🐢 玄武 · 信流
Auth — 信任路由
盲目信任所有能力 = 灾难。
之前没有限制工具 → Hermes 自由选择 terminal → 失败循环。 修复:Prompt 中基于信任分路由——只允许 write_file, 禁用 terminal_toolexecute_code
四象收敛

四个飞轮独立分析,给出同一个答案:
把能力者放在它擅长的位置,用最简单的接口连接,异步执行,只路由到可信能力。

🏗️ 解决方案

架构




┌─────────┐     JSON files     ┌──────────────┐



│  Lucas   │ ─────────────────→│ lucas-to-    │



│(OpenClaw)│                   │ hermes/      │



│          │←─────────────────-│ hermes-to-   │



│          │     JSON files    │ lucas/       │



└─────────┘                   └──────┬───────┘



                                     │ poll 30s



                              ┌──────┴───────┐



                              │Hermes Worker │



                              │ (独立进程)    │



                              │ 无父进程超时  │



                              └──────────────┘



三个关键修复

1. 绕过 PowerShell

subprocess.run(['hermes','chat','-q',prompt_text]) — 参数列表直传,不走 shell 展开

2. Write-Only Prompt

明确禁止 terminal_toolexecute_code,只允许 write_file

3. -Q 静默 + --max-turns 15

抑制 TUI banner/spinner,限制最大迭代次数防止无限重试

🍎 macOS 实测结果(2026-04-24)

在 macOS 上实现相同的 File-as-API 架构,已验证成功。

测试输入输出״̬
数学计算1+1等于几1+1 = 2100% ✅
代码生成用Python写一个快速排序函数完整 Python 代码(quicksort + quicksort_inplace)100% ✅

macOS 文件结构

~/.hermes/hermes-agent/



├── hermes_bridge.py      # 桥接脚本(Python)



└── tasks/



    ├── hermes_worker.py  # Worker 守护进程



    ├── in/               # 任务输入目录



    └── out/              # 结果输出目录

启动 Worker

# 创建目录



mkdir -p ~/.hermes/hermes-agent/tasks/in ~/.hermes/hermes-agent/tasks/out







# 启动 Worker(后台运行)



cd ~/.hermes/hermes-agent



nohup python3 tasks/hermes_worker.py > /tmp/hermes_worker.log 2>&1 &







# 测试桥接



python3 hermes_bridge.py "1+1等于几"
💡 macOS 无需 Windows 的 4 个修复步骤(无 PowerShell 展开、无 PTY 黑洞、无 GBK 编码)—— 直接 pip install -e . 即可。
📊 验证结果
指标之前(同步调用)之后(Worker 架构)
成功率0%(全部 SIGKILL)100% ✅
耗时60-120s → 被杀34.3 秒 ✅
文件产出偶尔写了偶尔没文件 + 结果 JSON 完整 ✅
代码质量类型注解 + docstring + 异常处理 ✅
可复现每次都成功 ✅

测试任务:format_lux.py — Lux 金额格式化工具。Hermes 自主添加了 .rstrip("0").rstrip(".") 处理浮点尾零 —— "意料之外但有用"的行为。

🏛️ 五层能力栈映射
L1 Intent
"让 Hermes 可靠工作" — 意图清晰
L2 Path
四飞轮各自生成路径 → 收敛到同一方案
L3 Capability
识别 Native Ability(write_file)vs 不可用能力(terminal)
L4 Execution
Worker 独立进程 + File Bridge 文件协议
L5 Learning
三次失败的残差变成设计约束 → 架构进化
💎 残差资产

本案例产生的可复用经验:

  • Windows PTY stdout 不可信 — subprocess 的 stdout 捕获对某些 CLI 工具完全失效。不要依赖 stdout 传递结果。
  • PowerShell 参数展开 — 多行文本变量在命令行展开时会被拆分。绕过方法:Python subprocess 传参数列表。
  • 能力者的信任分 — 不要假设工具"理论上可用"就能用。在特定环境下测量实际成功率,基于成功率路由。
  • File-as-API — 当所有"高级"通信通道失败时,文件系统是最后的可靠通道。JSON 文件 = 最简 RPC。
  • 异步解耦 > 超时调大 — 问题不是超时太短,而是同步模型本身不对。
"系统是否还能产生'意料之外但有用'的行为?"
✅ Hermes 自主添加浮点尾零处理 → TEP 活着

"TEP 不是让系统更强,而是让系统永远不会被自己锁死。"
✅ 三次 SIGKILL 失败没有锁死系统,残差驱动了架构进化
📚 完整课程 · 6课时多Agent协作实战 🛠️ 部署指南 ← 案例中心