Persist active run state for replay

This commit is contained in:
wuyang6
2026-05-14 11:47:37 +08:00
parent e3569b6901
commit 105d287ebd
4 changed files with 423 additions and 19 deletions
@@ -1884,7 +1884,6 @@ const ActivityChainSummary: FC<{
partIndex: number | undefined;
}> = ({ messageId, partIndex }) => {
const { openItem } = useActivityPanel();
const startedAtRef = useRef(Date.now());
const metadataRunStartedAtMs = useAuiState((s) => {
const value = readMetadataValue(s.message.metadata, "runStartedAtMs");
return typeof value === "number" && Number.isFinite(value) ? value : null;
@@ -1933,9 +1932,11 @@ const ActivityChainSummary: FC<{
const startedAt =
metadataRunStartedAtMs ??
contentRunStartedAtMs ??
(storedElapsedMs === null
? startedAtRef.current
: Date.now() - storedElapsedMs);
(storedElapsedMs === null ? null : Date.now() - storedElapsedMs);
if (startedAt === null) {
setElapsedMs(storedElapsedMs);
return;
}
setElapsedMs(Math.max(0, Date.now() - startedAt));
const timer = window.setInterval(() => {
setElapsedMs(Math.max(0, Date.now() - startedAt));
@@ -2021,11 +2022,12 @@ function summarizeActivityChainLabel(
(isGenericActivityLine(lastReasoningLine) ? "" : lastReasoningLine);
if (status === "running") {
const elapsed = `用时 ${formatActivityDuration(elapsedMs ?? 0)}`;
const elapsed =
elapsedMs === null ? "" : `,用时 ${formatActivityDuration(elapsedMs)}`;
if (activeDetail) {
return `${compactActivityLabel(activeDetail, 15)}${elapsed}`;
return `${compactActivityLabel(activeDetail, 15)}${elapsed}`;
}
return `思考中${elapsed}`;
return elapsed ? `思考中${elapsed}` : "思考中";
}
const label = compactActivityLabel(