






















@@ -189,7 +189,7 @@ import {
189189} from "../../tool-search.js";
190190import { shouldAllowProviderOwnedThinkingReplay } from "../../transcript-policy.js";
191191import { normalizeUsage, type NormalizedUsage } from "../../usage.js";
192-import { DEFAULT_BOOTSTRAP_FILENAME } from "../../workspace.js";
192+import { DEFAULT_BOOTSTRAP_FILENAME, type WorkspaceBootstrapFile } from "../../workspace.js";
193193import { isRunnerAbortError } from "../abort.js";
194194import { isCacheTtlEligibleProvider, readLastCacheTtlTimestamp } from "../cache-ttl.js";
195195import { resolveCompactionTimeoutMs } from "../compaction-safety-timeout.js";
@@ -1099,30 +1099,51 @@ export async function runEmbeddedAttempt(
10991099workspaceDir: resolvedWorkspace,
11001100warn: (message) => log.warn(message),
11011101});
1102-const preloadedBootstrapFiles =
1103-isRawModelRun || contextInjectionMode === "never"
1104- ? undefined
1105- : await resolveBootstrapFilesForRun({
1106-workspaceDir: resolvedWorkspace,
1107-config: params.config,
1108-sessionKey: params.sessionKey,
1109-sessionId: params.sessionId,
1110-warn: bootstrapWarn,
1111-contextMode: params.bootstrapContextMode,
1112-runKind: params.bootstrapContextRunKind,
1113-});
1114-const bootstrapRouting = await resolveAttemptWorkspaceBootstrapRouting({
1115- isWorkspaceBootstrapPending,
1116-bootstrapFiles: preloadedBootstrapFiles,
1117-bootstrapContextRunKind: params.bootstrapContextRunKind,
1118-trigger: params.trigger,
1119-sessionKey: params.sessionKey,
1120-isPrimaryRun: isPrimaryBootstrapRun(params.sessionKey),
1121-isCanonicalWorkspace: params.isCanonicalWorkspace,
1122- effectiveWorkspace,
1123- resolvedWorkspace,
1124-hasBootstrapFileAccess: bootstrapHasFileAccess,
1125-});
1102+let completedBootstrapTurn: boolean | undefined;
1103+const hasCompletedBootstrapTurnForAttempt = async (sessionFile: string) => {
1104+completedBootstrapTurn ??= await hasCompletedBootstrapTurn(sessionFile);
1105+return completedBootstrapTurn;
1106+};
1107+const resolveBootstrapRouting = (bootstrapFiles?: readonly WorkspaceBootstrapFile[]) =>
1108+resolveAttemptWorkspaceBootstrapRouting({
1109+ isWorkspaceBootstrapPending,
1110+ bootstrapFiles,
1111+bootstrapContextRunKind: params.bootstrapContextRunKind,
1112+trigger: params.trigger,
1113+sessionKey: params.sessionKey,
1114+isPrimaryRun: isPrimaryBootstrapRun(params.sessionKey),
1115+isCanonicalWorkspace: params.isCanonicalWorkspace,
1116+ effectiveWorkspace,
1117+ resolvedWorkspace,
1118+hasBootstrapFileAccess: bootstrapHasFileAccess,
1119+});
1120+const shouldProbeContinuationSkip =
1121+!isRawModelRun &&
1122+contextInjectionMode === "continuation-skip" &&
1123+(params.bootstrapContextRunKind ?? "default") !== "heartbeat" &&
1124+(await hasCompletedBootstrapTurnForAttempt(params.sessionFile));
1125+let preloadedBootstrapFiles: WorkspaceBootstrapFile[] | undefined;
1126+let bootstrapRouting =
1127+shouldProbeContinuationSkip || isRawModelRun || contextInjectionMode === "never"
1128+ ? await resolveBootstrapRouting()
1129+ : undefined;
1130+if (
1131+!isRawModelRun &&
1132+contextInjectionMode !== "never" &&
1133+(bootstrapRouting === undefined || bootstrapRouting.bootstrapMode === "full")
1134+) {
1135+preloadedBootstrapFiles = await resolveBootstrapFilesForRun({
1136+workspaceDir: resolvedWorkspace,
1137+config: params.config,
1138+sessionKey: params.sessionKey,
1139+sessionId: params.sessionId,
1140+warn: bootstrapWarn,
1141+contextMode: params.bootstrapContextMode,
1142+runKind: params.bootstrapContextRunKind,
1143+});
1144+bootstrapRouting = await resolveBootstrapRouting(preloadedBootstrapFiles);
1145+}
1146+bootstrapRouting ??= await resolveBootstrapRouting(preloadedBootstrapFiles);
11261147const bootstrapMode = bootstrapRouting.bootstrapMode;
11271148const {
11281149bootstrapFiles: hookAdjustedBootstrapFiles,
@@ -1136,7 +1157,7 @@ export async function runEmbeddedAttempt(
11361157bootstrapContextRunKind: params.bootstrapContextRunKind ?? "default",
11371158 bootstrapMode,
11381159sessionFile: params.sessionFile,
1139- hasCompletedBootstrapTurn,
1160+hasCompletedBootstrapTurn: hasCompletedBootstrapTurnForAttempt,
11401161resolveBootstrapContextForRun: async () => {
11411162const bootstrapFiles =
11421163preloadedBootstrapFiles ??
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。