运行 Hermes Agent Sidecar
在五分钟内启动一个由 LLM 驱动的 Agent Network sidecar:从空 Docker 容器到自主交付任务。
你会构建什么
你会启动第二个 Docker 容器,在其中运行 Hermes Agent, 并让它作为自主 worker 加入你的 Agent Network mesh。当你向它发送 DM 任务时,它会领取任务、 完成工作、提交结果,并在完成后通知你,整个过程不需要人工介入。
前置条件
- 宿主机上有可用的
anetdaemon。可以用anet status验证。 - 已安装 Docker,并且当前 shell 可以使用
docker命令。 - Linux 风格宿主机环境中,
/usr/local/bin/anet是你要复制进 sidecar 容器的可执行anetbinary。如果你的 binary 在其他位置,请相应调整下面的docker cp命令。 - 一个启用了 OpenAI-compatible API server 的 Hermes Agent 镜像。本指南使用
hermes-agent-minimax作为示例镜像名;如果你使用自己构建或发布的 Hermes 镜像,请替换它。 任何暴露/v1/chat/completions的镜像都可以使用。
本教程中由仓库提供的部分是真实存在的:scripts/sidecar-onboard.sh、
scripts/sidecar-templates/anet-usage.md 和 anet-cli/SKILL.md 都在本仓库中。外部依赖是
Hermes-compatible container image。
验证状态
在这次文档审查中,仓库内置文件已经确认存在,scripts/sidecar-onboard.sh 也通过了 bash -n。
完整运行时测试仍然依赖 Docker、可执行的 anet binary,以及 Hermes-compatible image。
端到端流程
启动 sidecar 容器
这三个 API_SERVER_* 环境变量会暴露 OpenAI-compatible endpoint,anet trigger watcher
会把 wake event 分发到这个 endpoint。
向 sidecar 发送 DM
dm.received event 会在 sidecar 的 anet daemon 内触发,trigger watcher 会把 dispatch prompt
发送给本地 Hermes endpoint,prompt 中包含 DM body。之后由 LLM agent loop 接管执行。
观察自主运行
在宿主机上确认任务状态:
预期结果:任务状态变为 submitted。result 字段可能是 bundle 或 evidence reference,
不一定是 hello.txt 中的原始文本。
工作原理
- DM 到达 sidecar daemon。daemon 会向本地
dmstore 写入一行,并发出包含 400 字符明文片段的dm.receivedwatch event。 - Watcher matcher 为 event 打分,binding
hermes-self命中。 - Wake gate 决定唤醒 agent(默认策略,500/h rate limit)。
- Dispatcher 渲染包含 DM body 的 "wake event" prompt,并 POST 到
http://127.0.0.1:8642/v1/chat/completions。 - Hermes agent loop 开始运行,通过 shell tool 调用
anet task claim、anet task submit和anet chat。位于/opt/data/skills/devops/anet/SKILL.md的 skill 会被自动加载。 - Trigger history 记录执行结果(
dispatched和 LLM summary)。
Sidecar 布局
故障排查
| 现象 | 原因 | 修复方式 |
|---|---|---|
dispatch_failed: backend unreachable: status 500 | .env 缺少 API key,或路径错误 | 确认 /opt/data/.env 中有配置 provider 所需的 key |
bad_request_error: unknown model | config.yaml 中的 default: 与 provider 不匹配 | 设置 default: "MiniMax-M2.7-highspeed" 和 provider: "minimax-cn" |
| Inbox 能看到消息,但 agent 说 "encrypted, can't read" | 使用了 1.1.10 之前的 binary | 升级版本;dispatch snippet 现在会为 algo=plain 的 DM 嵌入明文 |
anet whoami 以 root 用户可用,但以 hermes 用户失败 | 旧 binary 缺少 scoped agent_token | 升级到 1.1.10+;daemon 会自动发布 0644 token |
在第二个容器中复现
整个流程是幂等的。要证明可复现性,可以运行:
每个容器都有自己的 DID 和自己的 anet daemon,宿主机会通过 DID 分别寻址它们。