diff --git a/web/src/components/canvas/canvas-cloud-agent-chat-ui.tsx b/web/src/components/canvas/canvas-cloud-agent-chat-ui.tsx index 35a57e31b..508ec3905 100644 --- a/web/src/components/canvas/canvas-cloud-agent-chat-ui.tsx +++ b/web/src/components/canvas/canvas-cloud-agent-chat-ui.tsx @@ -273,13 +273,17 @@ export function AgentToolCard({ title, text, detail, theme, references = [], onF const toolName = agentToolName(title, detail); const summary = friendlyAgentToolSummary(toolName, text, detail); const actions = agentCanvasActions(toolName, detail, references); + const visibleActions = actions.slice(0, 8); + const readNodeCount = toolName === "canvas_get_state" && !state.isError ? readCanvasNodeCount(detail) : 0; + const hiddenReadNodeCount = Math.max(0, readNodeCount - visibleActions.length); const conciseError = text.length > 180 ? `${text.slice(0, 180)}…` : text; return (
{actions.length ?
- {actions.map((action) => )} + {visibleActions.map((action) => )} + {hiddenReadNodeCount > 0 ? 已读取 {readNodeCount} 个节点,已折叠其余 {hiddenReadNodeCount} 个 : null}
: summary} {state.isError && actions.length ? {summary} : null} {state.isError && text && text !== summary ? {conciseError} : null} @@ -744,3 +748,9 @@ function agentToolName(title: string, detail?: unknown) { function objectField(value: unknown, key: string) { return value && typeof value === "object" ? (value as Record)[key] : undefined; } + +function readCanvasNodeCount(detail: unknown) { + const result = objectField(detail, "result"); + const nodes = objectField(result, "nodes"); + return Array.isArray(nodes) ? nodes.length : 0; +}