AMQP
amqp 通道从 AMQP 0-9-1 broker(RabbitMQ 及兼容项)消费消息。每次投递都可以驱动 agent 循环、启动一次 SOP 运行,或两者兼有,由 dispatch 字段按别名选择。
这是一个 SOP 事件源。 关于触发器语法、routing-key 匹配以及接线的 SOP 端,请参阅 SOP Fan-In: AMQP。本页涵盖代理连接和分发模式。
配置
从实时 schema 派生的完整字段列表。对于基本消费者,你需要设置 amqp_url、exchange 和 routing_keys。
amqp_url* 🔑
AMQP broker URL。使用 amqp:// 表示明文,或使用 amqps:// 表示 TLS(例如 amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub)。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.amqp_url 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.amqp_url 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.amqp_url # 掩码输入,加密存储
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__amqp_url=
ca_cert
amqps:// 连接的 CA 证书捆绑包路径。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.ca_cert 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.ca_cert 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.ca_cert <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__ca_cert=
client_cert 🔑
用于 broker 双向 TLS 身份验证的客户端证书路径(Fedora Messaging 需要客户端证书)。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.client_cert 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.client_cert 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.client_cert # 掩码输入,加密存储
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__client_cert=
client_key 🔑
与 client_cert 匹配的客户端私钥路径。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.client_key 字段。
zerocode
在 Config 窗格中,设置 channels.amqp.<alias>.client_key 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.client_key # 掩码输入,加密存储
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__client_key=
content_template
入站消息内容的模板。{field} 占位符会从 JSON 投递正文的顶级键中插值。当为空时,将逐字使用原始投递正文。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.content_template 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.content_template 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.content_template <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__content_template=
dispatch
已消费的投递路由到哪里:驱动 agent 回合(agent_loop,默认)、分发到 SOP 引擎(sop),或两者都执行(sop_and_agent_loop)。sop 和 sop_and_agent_loop 模式会根据路由键将投递与 SOP amqp 触发器进行匹配。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.dispatch 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.dispatch 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.dispatch <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__dispatch=
durable_ack
确认模式。为 true(默认)时,只有在消息已持久化交给 agent 循环后才会确认投递,从而提供至少一次语义:在交接前崩溃会重新投递该事件。将其设为 false 可实现至多一次(broker 在分发时确认),这会在崩溃时静默丢弃飞行中的事件,仅适用于不会产生副作用、在过载时可丢弃的消费者。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.durable_ack 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.durable_ack 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.durable_ack <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__durable_ack=
exchange*
Exchange 用于将 consumer queue 绑定到(例如 amq.topic)。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.exchange 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.exchange 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.exchange <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__exchange=
excluded_tools
从此通道的工具规范中排除的工具。设置后,通过此通道响应时不会向模型公开这些工具。
将它放置在任何表面上:
网关仪表板
打开/config/channels/amqp并设置channels.amqp.<alias>.excluded_tools字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.excluded_tools 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.excluded_tools <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__excluded_tools=
queue
队列名称。对于由服务器生成、临时、自动删除、独占的队列,请留空。仅在需要跨重连实现持久投递时,设置一个稳定的名称(建议使用 UUID)。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.queue 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.queue 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.queue <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__queue=
routing_keys
要绑定的路由键。将其范围限定为感兴趣的主题;绑定 # 会消费整个交换机,几乎从来都不是你想要的。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.routing_keys 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.routing_keys 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.routing_keys <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__routing_keys=
sender_label
此来源的每次投递中放入 ChannelMessage.sender 的值(例如 anitya)。让编排器的自环保护和按通道路由识别来源。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp 并设置 channels.amqp.<alias>.sender_label 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.sender_label 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.sender_label <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__sender_label=
thread_id_field
指向 JSON 发送正文的点号路径,其值将成为消息 thread_ts,用于将回复关联到原始事件(例如 message.project.name)。留空可禁用线程。
将它放置在任何表面上:
网关仪表板
打开 /config/channels/amqp,并设置 channels.amqp.<alias>.thread_id_field 字段。
zerocode
在 Config 面板中,设置 channels.amqp.<alias>.thread_id_field 字段。
zeroclaw config
zeroclaw config set channels.amqp.<alias>.thread_id_field <value>
环境变量
导出此覆盖配置(POSIX shell;可放入 ~/.bashrc、~/.zshrc、.env 或 Dockerfile 中)。将 <alias> 替换为实际的别名:
export ZEROCLAW_channels__amqp__<alias>__thread_id_field=
完整字段参考:配置参考。
调度模式
dispatch 字段决定一个交付会执行什么:
agent_loop(默认):投递会作为消息交给 agent loop。这样可保留原始行为;现有消费者不受影响。sop:投递会提升为一个 SOP 事件(路由键进入事件主题,正文进入载荷),并分发到 SOP 引擎。参见 SOP Fan-In: AMQP。sop_and_agent_loop:以上两者都会为每次交付运行。
TLS
对于 TLS 传输,请将 amqp_url 指向一个 amqps:// 端点,并提供 ca_cert。对于双向 TLS,还要设置 client_cert 和 client_key。没有这些配置时,连接将是明文;不要在不受信任的网络上暴露明文消费者。
故障排除
| 症状 | 可能的原因 | 修复 |
|---|---|---|
| 未消费消息 | 交换器或路由键与发布者不匹配 | 验证 exchange 和 routing_keys 是否与发布者发出的内容一致 |
| TLS 握手失败 | amqps:// 不含 ca_cert,或者证书与密钥不匹配 | 提供 ca_cert;对于 mTLS,请验证 client_cert 和 client_key 配对 |
| 送达已到达,但没有启动 SOP | dispatch 是 agent_loop,或者 SOP 触发器不匹配 | 将 dispatch 设置为 sop 或 sop_and_agent_loop;检查 trigger 路由键 |
另见
- SOP Fan-In: AMQP:触发语法和 routing-key 匹配
- MQTT
- 通道概述