From 21b059bd41471d28f333639702fe34d683521945 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Fri, 18 Sep 2026 13:45:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=B7=A5=E5=85=B7=E7=BB=84?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E8=AE=A1=E6=97=B6=E5=B9=B6=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=95=B4=E8=BD=AE=E8=80=97=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 每个工具组只计算自身调用跨度,已完成组立即停止增长与进行中标记。 整轮总耗时仅在回合状态或完成小结显示一次,单工具仍按百毫秒动态更新。 补齐前组已完成后组运行、边界缺失与倒序的回归及浏览器证据。 --- .../ProjectSupervisorView.tsx | 2 - .../project-workspace/ToolCallGroup.tsx | 63 ++-- .../toolCallGroupPresentation.ts | 74 +++++ .../appSurface/project-development.suite.ts | 70 +++-- .../tests/appSurface/tool-call-group.suite.ts | 291 ++++++++++++++---- ...计划】对话总耗时与动态工具计时-2026-09-18.md | 8 +- ...程碑】对话总耗时与动态工具计时-2026-09-18.md | 4 +- ...方案】GameAgent对话工具调用卡片-2026-09-14.md | 20 +- 8 files changed, 392 insertions(+), 140 deletions(-) diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx index 3bf77bfb4..8e10c1b89 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx @@ -495,8 +495,6 @@ export function ProjectSupervisorView({ diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ToolCallGroup.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ToolCallGroup.tsx index 64be2a863..f62c66b23 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ToolCallGroup.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ToolCallGroup.tsx @@ -12,7 +12,7 @@ import { AgentMessageContent } from '../../../../../packages/shared/src/componen import type { DirectChatToolCard } from './directThreadChat'; import { formatToolCallDuration, - resolveTurnTiming, + resolveToolGroupTiming, toolCallDurationMs, toolCallGroupSummary, toolCallInputText, @@ -22,12 +22,13 @@ import { useLiveNow } from './useLiveNow'; /** * 一回合的工具调用折叠块(Codex 风格): - * 块头一行汇总 + 整轮总耗时 + 时间范围,展开态每行一条工具(行可二级展开看命令 / 文件明细 / 输出)。 + * 块头一行汇总 + 本组用时,展开态每行一条工具(行可二级展开看命令 / 文件明细 / 输出)。 * 契约见 `docs/technical/【技术方案】GameAgent对话工具调用卡片-2026-09-14.md`。 * - * 计时口径(总耗时与单条耗时各一套,都是 100ms 粒度、始终一位小数): - * - 总耗时属于**整轮**:从用户实际发送到明确终态,跨多个工具块共用同一组边界,包含 - * 没有工具的 LLM 等待;不是本块工具的时间跨度,本块工具全部结束后只要回合还在跑就继续增长。 + * 计时口径(组用时与单条耗时各一套,都是 100ms 粒度、始终一位小数): + * - 本组用时属于**这一组工具**:`min(工具开始)` → `max(工具完成)`。同轮另一组还在跑不会让它 + * 继续增长;本组工具全部拿到终态就立即冻结。缺开始 / 缺终态边界时隐藏,不借别组或整轮边界。 + * 整轮总耗时(用户发送 → 回合终态)只在对话底部渲染一处,不在这里重复。 * - 单条耗时只认该工具的事件级边界(`item.started` → `item.completed`),不看条目展示时间。 * * 无障碍:块头与每一行都是 `