Msg — API 参考
Package: io.kairo.api.message稳定性: @Stable(since = "1.0.0")——「核心消息类型;v0.1 起形态冻结」 源码: Msg.java
各组件共享的中立消息载体:agent 输入、模型输出、工具调用、工具观察。一个 role (user / assistant / system / tool)、文本内容、可选工具调用、可选 metadata—— provider 特有形态不会跨边界泄漏。
签名(摘要)
java
public class Msg {
public static Msg user(String content);
public static Msg assistant(String content);
public static Msg system(String content);
public static Msg tool(String toolName, String result);
public String role();
public String content();
public List<ToolCall> toolCalls();
public Map<String, Object> metadata();
}稳定性承诺
- v1.x 内工厂方法签名与 getter 名字冻结。
- 可新增工厂 / default 访问器。
- 序列化字段顺序不属于契约。
默认实现
Msg 本身是具体、约定不可变的类型——不做多态设计。Provider 在 ProviderPipeline 的 request-builder / response-parser 阶段把 Msg 转 provider 线格式、再回转。
用法
java
Msg reply = agent.call(Msg.user("起草一条 changelog")).block();
System.out.println(reply.content());配置
会话级 metadata(session id / trace id / user id)挂在 Msg.metadata() 上。provider 应把 metadata 复制到请求载荷用于可观测关联,但不得依赖任何特定 key。
生命周期
- 由调用方或 agent step 产生(
AgentState保留由ContextManager管理)。 - 流经
ReActLoop——model call → tool dispatch → observation → next model call。 - 循环终止时落定;保留到
AgentState供后续回合使用。
迁移策略
@Stable——新增字段增量式,不做破坏式变更。任何变更走 ADR + japicmp。
相关
- SPI:
ToolCall - 上下文:
ContextManager/ 压缩流水线