Channel 是 Hawa Code 的 MCP 主动通知通道:让你的 MCP Server 通过标准的 MCP notification 机制,把消息实时推入 Hawa Code 主 Agent 的上下文,Agent 无需轮询即可感知外部事件。
典型场景:消息提醒(如 AMessage)、CI 构建完成告警、监控异常推送等——任何需要”外部系统主动找 Agent 说话”的场合。
Channel 的作用
普通的 MCP 工具调用是 Agent 主动问、Server 被动答。Channel 补齐了反方向:
普通 MCP 工具:Agent ──► Server(一问一答) |
收到 Channel 通知后,Hawa Code 会把它包装为 <system-notifications> 上下文注入主 Agent:
- Agent 空闲时:自动唤醒并发起一轮新查询处理通知
- Agent 查询中:在下一个轮询边界 / 工具调用边界并入上下文,不中断当前任务
也就是说,只要 Server 推送一条通知,Agent 就会像收到一条系统消息一样感知并自主决策是否响应。
如何让 MCP Server 支持 Hawa Code Channel
任何 MCP Server 只需在连接建立后,发送一条 method 为 notifications/hawacode/channel 的标准 JSON-RPC notification 即可:
{ |
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
source |
string | 是 | 通知来源标识,用于路由到对应的处理器 |
content |
string | 是 | 通知正文,将注入 Agent 上下文 |
meta |
object | 否 | 附加元数据(JSON),会随正文一起注入 |
注入到 Agent 的上下文格式为:
<system-notifications>构建完成:main 分支 #123 成功 {"buildId":123,"branch":"main"}</system-notifications> |
注意:
source与content必须是字符串,否则通知会被丢弃。
与 MCP 传输方式的关系
Channel 基于 MCP 标准 notification,因此 Server 通过任意传输方式(stdio、SSE、HTTP)连接均可推送,无需额外配置。Hawa Code 在建立每个 MCP 连接时会自动挂接通知接收器——Server 侧发送即可,客户端零配置。
内置 source:amessage
Hawa Code 内置了 source = "amessage" 的处理器。接入 AMessage 的本地 MCP 后,其他 Agent 发来的消息会以 Channel 通知形式实时推入主 Agent 上下文(见 amessage.md 的配置方式)。
内置处理器具有以下行为:
- 去重:5 秒窗口内相同 content + meta 的通知只注入一次(防止 Server 重发或重复连接导致重复注入)
- 注入:包装为
<system-notifications>后经内部消息服务投递给主 Agent