{{ node.systemAgentId }}
attempt {{ (node.attempt || 0) + 1 }}
{{ node.nodeKind === 'subgraph' ? '⊞ 子图节点' : 'agent 调用' }}
子 run 复用中(服务 attempt #{{ (node.childRunAttempt || 0) + 1 }})
{{ live.last.kind }} · {{ live.last.text }}
({{ live.last.ago }} 前)
SSE 已接上,但本节点还没有任何事件
?
{{ failInfo.reason }}
null(没有匹配上精确 fail 边 → 走兜底边)
{{ failInfo.text }}
{{ failInfo.hint }} — 引擎没给 fail_reason,事件轨里也没有本轮(attempt #{{ (node.attempt || 0) + 1 }})的node.output / node.error / node.triage。
去「运行日志」tab 看完整事件轨。
—
{{ failRef.orgNode || '(按回退边的目标)' }} / {{ failRef.workNode }}
归因指向的 work graph 节点(跨层)
—
跨层定点重置 → {{ refOf(r).orgNode }} / {{ refOf(r).workNode }}
(复用子 run {{ refOf(r).childRunId }},只重跑这一个节点,
contract 未变的下游不动)
整张 work graph 重跑(归因没点名具体节点,或地址解析不了)
{{ r.remediation_note }}
这个节点没有参与过回退。
这块要读 R-19 的两张表(graph_edge_contracts 声明的契约 ×
graph_files 落盘的实例)。GET /api/graph-runs/:id
还没返回 {{ f }},
所以下面只有节点级指针 output_ref 那一行是真的,
输入解析与出边契约都显示不了 —— 不猜、不推断。
{{ f.fromName }}
的出边,产出方不必是它
不受拓扑相邻性限制(R-9.3)
⚠️ 图上声明了这份输入,索引里查不到实例 —— 先确认是不是上游没产出
可选 + 无实例 → 引擎不会把这一行拼进提示词,agent 看不到它(describeInputs 的取舍)
这个节点的入边上没有任何数据契约声明(graph_edge_contracts 里没有它的行)。
规划这张图的 agent 没声明「这条边传什么」,于是引擎不会给它拼上游输入 ——
第四次真跑 org-planner-prd 说的「不是上游没产出,是它的产出结构上到不了我手上」就是这个形态。
output_ref 是节点级指针(我这次跑出了什么),
graph_files 是公司级索引(这家公司有哪些产物、谁能用);后者由前者派生。
{{ node.outputRef }}
还没有产出(output_ref 为空)。
索引里没有本节点名下的产物实例:要么产出目录里只有引擎自读的
attempt-*.json(不算给下游的产物),要么同路径产物已被后续 attempt 取代
(taskFiles 只回当前有效行)。
{{ e.toName }}
{{ e.condition }}
{{ c.kind }}{{ c.required ? '' : '?' }} {{ c.state === 'missing' ? '⚠️' : '✓' }} · 由 {{ c.by }} 产出
标 ⚠️ 的 kind 在这条边上声明了,而索引里整个 task 都没有这个 kind 的实例 —— 下游到那一步只会拿到「⚠️ 查不到实例」,这是跑之前就能看出来的图结构错误(R-19.4)。
本节点的出边上没有数据契约声明,产出不会沿边递给任何下游节点
(acceptance / contract 这两类仍会按任务级共享被下游检索到)。
正向边上与原始产出相同;经过回退后会拼上上一轮的 remediation_note,两者不能假设相等(§四.B.3)。
{{ consumedNote }}
本节点没有收到上一轮判词,消费形态 = 原始产出。
下面是子 run 的只读缩略图;「进入子图」把它推到中间画布,那一层的五个控制按钮会作用在子 run 上, 面包屑可以逐层返回(§四.B.3)。
subgraph,它的一步 = 「把子 run 交给引擎」,
子图内部的节点要进入子图后再单步。