Fusion 运维
本页回答“Fusion 在日常维护里到底怎么跑”,重点不是旧的 definition 编辑体验,而是 run 为什么失败、为什么输出不合约、为什么 binding 看起来没生效。
日常维护对象
Fusion 运行面至少有 4 个核心对象:
- live
agentdraft - immutable
agent_versionsnapshot fusion_rungovernance_context
其中真正可执行的是 immutable agent_version,而不是 live draft。
标准运维路径
- 创建或更新 live Fusion draft
- 显式 publish,生成新的
agent_version - 发起 run,并确认选中的
agent_version_id - 查看 run 的输入、输出、状态和治理快照
- 若结果异常,判断是 contract、binding、artifact 还是模型输出问题
- 修 draft 后重新 publish 新 snapshot,而不是直接篡改历史 run
发版前检查
在把某个 published snapshot 给业务方或评测使用前,至少检查:
input_contract和output_contract是否可被当前前端或上游满足execution_policy是否符合当前运行模式- capability binding 是否都能解析到真实资源
- owning agent 上的治理配置是否仍然有效
- 需要文件输入时,artifact 准备路径是否可达
Run 排查顺序
1. 先确认 run 绑定了哪个 snapshot
不要先看模型输出。先看 run record 的:
agent_idagent_version_idexecution_modegovernance_context_json
这是最常见的误判点之一。很多“同一个 Agent 为什么今天结果不一样”本质上是 snapshot 变了。
兼容性说明:
- 新创建的 run 仍应绑定一个明确的
agent_version_id - 如果读取到历史或迁移前遗留的 run 返回
agent_version_id = null,说明该行缺少快照绑定;当前 API 会继续返回该 run,避免整个列表因单条坏数据而500
2. 再看输入有没有在 contract 层被拒绝
当前运行时会先做:
- snapshot contract 自校验
- run 输入校验
- 通过后再持久化成
FusionRunInput
如果 run 很早失败,优先怀疑:
- required input slot 缺失
- 输入类型不匹配
- output contract 本身不合法
3. 再看 governance context 和 binding
FusionRunService.create_run() 在创建 run 时就会持久化治理快照,而不是执行时临时推断。
排查时重点看:
rag_enabledrag_agent_idrag_top_kmcp_enabledmcp_agent_idallowed_tool_namesmounted_server_ids
如果绑定看起来“没生效”,先看 persisted governance context,而不是只看 live draft。
4. 最后再看模型或工具阶段
当 contract 和 binding 都正常后,再查:
- prompt 构建
- artifact 准备
- RAG retrieval
- MCP invocation
- output normalization
常见症状与动作
Run 一创建就报 version_not_runnable
先看:
- 是否没有 published
agent_version - 请求里传入的
agent_version_id是否不存在 - snapshot 是否与当前
agent_id不匹配
Run 状态成功,但输出为空或缺 slot
先看:
output_contract是否要求结构化 slotoutput_mapper是否把模型返回映射到了正确 keyvalidate_output_payloads()是否拒绝了不合法字段
Binding 已配置,但运行时没走 RAG 或 MCP
先看:
governance_context_json是否已持久化成启用状态- owning agent 的挂载是否有效
- 绑定解析后是否被执行模式或 policy 跳过
live draft 改了,但旧 run 没变化
这是正常行为。run 绑定 immutable snapshot,历史 run 不会追随 live draft 变化。
某次 run 和上一版结果差异很大
优先确认:
agent_version_id是否变化- binding 是否变化
- owning agent 的治理上下文是否变化
- execution mode 是否变化
代码入口
| 路径 | 作用 |
|---|---|
ai_service/api/routers/agents.py |
live draft 更新、publish、rollback |
ai_service/fusion/application/use_cases/create_run.py |
run 创建、snapshot 选择 |
ai_service/fusion/infrastructure/adapters/governance.py |
capability binding 到治理快照的解析 |
ai_service/fusion/infrastructure/runtime/runner.py |
run 执行入口 |
ai_service/fusion/infrastructure/runtime/graph.py |
runtime 图执行主链路 |
ai_service/fusion/infrastructure/runtime/output_mapper.py |
输出归一化与 slot 映射 |
ai_service/storage/model_domains/fusion.py |
run / input / output 持久化 |
ai_service/storage/model_domains/agents.py |
live draft 与 immutable snapshot 持久化 |
什么时候该回滚
Fusion 的正确回滚动作通常不是“改历史 snapshot”,而是:
- 将 live agent rollback 到已知稳定的
agent_version - 或基于旧 snapshot 重新 publish 一个修正版
只有这样,run 结果和治理快照才能继续可复盘。
适合谁看
- 维护 Fusion 工作流的研发
- 排查 run 输入输出契约问题的平台同学
- 需要确认 snapshot / binding / 治理快照是否正确的实施同学