出站事件推送契约。
Gateway 是 Kernel 与外部系统之间的单向通信抽象层,负责把 Agent 运行时事件 推送到外部(Web 管理层、监控系统、日志收集等)。
设计原则
- 只出不入:Gateway 只负责向外推事件,不接收外部指令(入站直接调公开 API)
- 极简抽象:不做业务逻辑
- 三种部署模式:嵌入式(Local)、分布式(Distributed,未来)、HTTP(未来)
实现示例
defmodule MyApp.Gateway.Phoenix do
@behaviour CMDC.Gateway
@impl true
def report_event(session_id, %CMDC.Event{} = event) do
MyApp.Endpoint.broadcast("agents:" <> session_id, "event", event)
end
@impl true
def report_agent_state(session_id, state_info) do
MyApp.Endpoint.broadcast("agents:" <> session_id, "state", state_info)
end
endreport_agent_state/2 的 state_info 格式
%{
state: :idle | :running | :streaming | :executing_tools,
session_id: String.t(),
turns: non_neg_integer(),
cost_usd: float(),
uptime_ms: non_neg_integer(),
timestamp_ms: integer()
}
Summary
Callbacks
上报 Agent 状态变更快照。
session_id— 产生状态变更的会话 IDstate_info— 状态信息 map,含:state/:session_id/:turns/:cost_usd/:uptime_ms/:timestamp_ms
@callback report_event(session_id :: String.t(), event :: CMDC.Event.t()) :: :ok
上报一个 Agent 运行时事件。
session_id— 产生事件的会话 IDevent—CMDC.Event.t()struct