节点被合并,边变成自环
可视化扩展直接用 Agent、Tool、MCP Server 与 Handoff 的显示名生成 Graphviz node ID。不同实体一旦同名,就会被 DOT 合并为同一节点,真实连接退化成伪自环;同名 Agent 还可能被 `visited` 提前判定为已遍历,导致后续分支和节点完全消失。

面向生产级 Agent 应用的轻量编排框架,统一 Agent、Tool、Handoff、Guardrail、Tracing 与 MCP 接入,支持构建可观测的多 Agent 工作流。
显示名称用于阅读,稳定身份用于建图。把两者拆开,图才能忠实表达真实工作流。
可视化扩展直接用 Agent、Tool、MCP Server 与 Handoff 的显示名生成 Graphviz node ID。不同实体一旦同名,就会被 DOT 合并为同一节点,真实连接退化成伪自环;同名 Agent 还可能被 `visited` 提前判定为已遍历,导致后续分支和节点完全消失。
显示名称只负责可读性,不能同时承担实体身份。一次渲染中的节点注册、递归遍历和边生成必须共享按对象区分的稳定 ID;同时还要兼容调用方传入的 visited 名称、虚拟 start 节点以及 DOT 转义后才发生的 CR/LF 名称碰撞。
新增每次渲染独立的实体身份注册表,以对象身份分配 node ID、保留原名称作为 label,并让直接 Handoff 与动态 `handoff()` 目标走同一遍历链;只在发生冲突或命中保留虚拟名时生成确定性后缀,避免改变无冲突图的既有 DOT 输出。
不同类型或不同实例即使同名也会保留为独立节点,边不再折叠成自环,所有可达 Agent 都能被完整遍历;转义碰撞、虚拟节点冲突和外部 visited 状态均有回归覆盖,19 项可视化测试锁定新的身份模型。

界面把 Agent、模型请求、工具调用与 Handoff 展开成同一条追踪树。节点名称若被非字符串对象意外覆盖,列表标题、层级检索和详情定位都会失去稳定标识;修复通过局部名称变量隔离 SDK 节点与应用对象,避免写回污染。