可借助Debezium直接对接MySQL Binlog实现Hermes Agent的实时数据库变更捕获与跨系统同步:需启用ROW格式binlog、部署Debezium MySQL Connector至Kafka Connect、在Hermes Agent中通过自定义工具消费Kafka Topic、配置最小权限复制用户,并端到端验证事件可达性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望在Hermes Agent中实现数据库变更的实时捕获与跨系统数据同步,但缺乏轻量、可靠且无需消息队列介入的机制,则可借助Debezium直接对接底层数据库日志。以下是将Debezium集成至Hermes Agent数据流的关键实践步骤:
一、启用MySQL Binlog并验证配置
Debezium依赖数据库的二进制日志(binlog)获取行级变更事件,因此必须确保MySQL已开启ROW格式的binlog,并具备相应复制权限。未启用或格式不匹配将导致连接失败或事件丢失。
1、登录MySQL服务器执行:SHOW GLOBAL VARIABLES LIKE 'log_bin';
2、确认返回值为ON;若为OFF,需编辑my.cnf并添加:log-bin=mysql-bin
3、执行:SHOW GLOBAL VARIABLES LIKE 'binlog_format';
4、确保返回值为ROW;若非此值,添加配置:binlog_format=ROW
5、重启MySQL服务使配置生效。
二、部署Debezium MySQL Connector并注册到Kafka Connect
该步骤将Debezium作为Kafka Connect插件运行,负责从MySQL拉取变更事件并写入Kafka主题,为Hermes Agent后续消费提供结构化数据源。
1、下载与Kafka版本兼容的Debezium MySQL Connector ZIP包(如debezium-connector-mysql-2.6.0.Final-plugin.zip)
2、解压后将plugin.path指向该目录,例如:plugin.path=/opt/kafka/connect/debezium
3、启动Kafka Connect分布式模式(确保offset.storage.topic等配置已就绪)
4、通过REST API提交MySQL连接器配置:POST /connectors,负载中包含database.hostname、database.port、database.user、database.password及table.include.list
三、在Hermes Agent中接入Debezium输出的Kafka Topic
Hermes Agent本身不内置Kafka消费者,但可通过自定义工具(tool)调用Python脚本或CLI命令订阅指定topic,解析Avro/JSON格式变更事件,并触发对应技能逻辑,如自动更新缓存、写入云存储或触发工作流。
1、在environments/tool_context.py中新增debezium_kafka_consumer工具定义
2、编写Python脚本,使用kafka-python库连接集群,订阅由Debezium生成的topic(如mysql.inventory.products)
3、对每条消息调用json.loads(value)提取op(c/r/u/d)、after、before字段
4、根据op类型分发至不同处理函数,例如op == 'u'时调用update_cloud_storage_record
5、将该脚本路径注册进run_tool_call_in_thread支持的可执行列表
四、配置MySQL用户权限以满足Debezium最小化访问要求
Debezium需要特定权限读取binlog及系统表,但不应授予SUPER或ALL PRIVILEGES等高危权限,否则违反Hermes Agent系统权限加固原则。
1、创建专用复制用户:CREATE USER 'debezium'@'%' IDENTIFIED BY 'StrongPass_2026!';
2、授权必要权限:GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debezium'@'%';
3、刷新权限:FLUSH PRIVILEGES;
4、验证用户能否登录并执行SHOW MASTER STATUS;和SHOW BINLOG EVENTS LIMIT 1;
五、验证Debezium事件端到端可达性
该步骤用于确认从MySQL写入、Debezium捕获、Kafka投递到Hermes Agent工具消费的完整链路无丢帧、无解析错误,是上线前必检环节。
1、在MySQL中对测试表执行INSERT语句
2、使用kafka-console-consumer.sh监听对应topic,确认收到JSON格式事件,含"op":"c"及完整"after"字段
3、在Hermes Agent CLI中手动触发debezium_kafka_consumer工具,并传入相同topic名
4、观察日志输出是否打印出解析后的主键值与字段快照
5、检查Hermes Agent MEMORY.md中是否自动追加了本次变更摘要记录


















