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 (
{state.icon}
{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;
+}