章节摘要:你在界面改了一个技能、加了一个 MCP、调了一个配置——这些变更如何让正在运行的引擎「立刻知道」?这就是 Reload 事件系统要解决的问题。OpenWork 的实时性靠一套带指纹(fingerprint)的变更通知:任何配置/技能/MCP 的变更都会触发一个 Reload 事件(附带内容指纹),事件存入一个单调递增序号(seq)的事件存储,客户端通过带游标(cursor)轮询拉取增量事件感知变化,感知后驱动引擎重建实例、重读注入的配置。本章要讲清这套实时协同机制:Reload 事件如何生成与去重(用指纹判断「真的变了吗」)、客户端如何感知(带游标轮询)、引擎重载的触发链(从事件到实例重建),以及这套实时性的边界(哪些能实时、哪些需要重启)。这里最值得讲的工程点是指纹去重——没有它,频繁的保存操作会触发风暴般的重载;有了它,只有内容真正变化才通知。读完本章,你能解释「改了能力后引擎如何实时生效」的完整链路。
阅读完本章,你应当能够:
一句话总结:Reload 事件系统用「指纹去重 + 带游标轮询 + 引擎重建」三步把变更实时送到引擎——指纹防风暴,游标轮询防事件丢失,重建保证配置新鲜,三者共同撑起 OpenWork 的实时性。
讲 Reload 事件的生成:配置/技能/MCP 变更如何触发事件,事件携带什么(变更类型、目标、内容指纹)。重点讲指纹机制——用内容哈希判断「真的变了吗」,避免频繁保存触发重载风暴。
讲客户端如何感知变更:通过带游标(cursor)的轮询端点拉取增量事件。重点说明这套「事件存储 + 游标轮询」相比服务器推送的特点(实现简单、对 HTTP 中间件友好、无长连接负担),以及客户端如何用游标确保不丢事件。
讲从事件到引擎生效的完整链路:客户端感知事件→驱动引擎重建实例→重读注入的运行时配置→新配置生效。重点说明这条链路与第 5 章配置注入的衔接——重载就是重新走一遍注入。
讲实时性的边界:哪些变更能实时生效(技能、命令、MCP、Agent 定义)、哪些需要重启(某些底层配置、引擎二进制更新)。这一节帮读者建立合理预期,避免「为什么我改了这个没生效」的困惑。
本章遵循「生成 → 感知 → 触发 → 边界」的实时协同路径:
事件生成 (01) ──变更如何变成事件 │ ▼ SSE 感知 (02) ──客户端如何收到 │ ▼ 重载触发 (03) ──收到后引擎如何生效 │ ▼ 实时边界 (04) ──哪些能实时哪些不能 │ ▼ 第 9 章:从服务端转到桌面端的主进程
四节构成实时协同的完整链路:源头(事件)、传输(SSE)、落地(重载)、边界(限制)。理解了这四节,你就能解释任何一次「改了能力后」的生效过程。
前置知识:
本章为后续章节奠定的基础: