



























@@ -426,20 +426,6 @@ export async function startOrResumeThread(params: {
426426}
427427binding = undefined;
428428}
429-if (
430-binding?.threadId &&
431-params.nativeCodeModeEnabled === false &&
432-!persistentWebSearchRestriction
433-) {
434-embeddedAgentLog.debug(
435-"codex app-server native tool surface disabled for turn; starting transient thread",
436-{
437-threadId: binding.threadId,
438-},
439-);
440-preserveExistingBinding = true;
441-binding = undefined;
442-}
443429if (binding?.threadId && (binding.contextEngine || contextEngineBinding)) {
444430if (
445431!contextEngineBinding ||
@@ -589,12 +575,25 @@ export async function startOrResumeThread(params: {
589575);
590576await clearCodexAppServerBinding(params.params.sessionFile);
591577}
578+} else if (
579+params.nativeCodeModeEnabled === false &&
580+!persistentWebSearchRestriction &&
581+binding.dynamicToolsFingerprint !== EMPTY_DYNAMIC_TOOLS_FINGERPRINT
582+) {
583+embeddedAgentLog.debug(
584+"codex app-server native tool surface disabled for turn; starting transient thread",
585+{
586+threadId: binding.threadId,
587+},
588+);
589+preserveExistingBinding = true;
592590} else {
591+const resumeBinding = binding;
593592try {
594-const authProfileId = params.params.authProfileId ?? binding.authProfileId;
593+const authProfileId = params.params.authProfileId ?? resumeBinding.authProfileId;
595594const finalConfigPatch = params.buildFinalConfigPatch?.({
596595action: "resume",
597- binding,
596+binding: resumeBinding,
598597}) ?? {
599598configPatch: params.finalConfigPatch,
600599nativeHookRelayGeneration: params.nativeHookRelayGeneration,
@@ -606,7 +605,7 @@ export async function startOrResumeThread(params: {
606605);
607606const resumeParams = lifecycleTiming.measureSync("thread-resume-params", () =>
608607buildThreadResumeParams(params.params, {
609-threadId: binding.threadId,
608+threadId: resumeBinding.threadId,
610609 authProfileId,
611610model: startModelSelection.model,
612611modelProvider: startModelProvider,
@@ -634,7 +633,7 @@ export async function startOrResumeThread(params: {
634633const nextMcpServersFingerprint =
635634params.mcpServersFingerprintEvaluated === true
636635 ? params.mcpServersFingerprint
637- : binding.mcpServersFingerprint;
636+ : resumeBinding.mcpServersFingerprint;
638637await lifecycleTiming.measure("thread-resume-write-binding", () =>
639638writeCodexAppServerBinding(
640639params.params.sessionFile,
@@ -650,13 +649,14 @@ export async function startOrResumeThread(params: {
650649 userMcpServersFingerprint,
651650mcpServersFingerprint: nextMcpServersFingerprint,
652651nativeHookRelayGeneration:
653-finalConfigPatch.nativeHookRelayGeneration ?? binding.nativeHookRelayGeneration,
654-pluginAppsFingerprint: binding.pluginAppsFingerprint,
655-pluginAppsInputFingerprint: binding.pluginAppsInputFingerprint,
656-pluginAppPolicyContext: binding.pluginAppPolicyContext,
652+finalConfigPatch.nativeHookRelayGeneration ??
653+resumeBinding.nativeHookRelayGeneration,
654+pluginAppsFingerprint: resumeBinding.pluginAppsFingerprint,
655+pluginAppsInputFingerprint: resumeBinding.pluginAppsInputFingerprint,
656+pluginAppPolicyContext: resumeBinding.pluginAppPolicyContext,
657657contextEngine: contextEngineBinding,
658658 environmentSelectionFingerprint,
659-createdAt: binding.createdAt,
659+createdAt: resumeBinding.createdAt,
660660},
661661{
662662authProfileStore: params.params.authProfileStore,
@@ -686,7 +686,7 @@ export async function startOrResumeThread(params: {
686686});
687687const activeTurnIds = readActiveCodexTurnIds(response.thread);
688688return {
689- ...binding,
689+ ...resumeBinding,
690690threadId: response.thread.id,
691691cwd: params.cwd,
692692authProfileId: boundAuthProfileId,
@@ -698,10 +698,10 @@ export async function startOrResumeThread(params: {
698698 userMcpServersFingerprint,
699699mcpServersFingerprint: nextMcpServersFingerprint,
700700nativeHookRelayGeneration:
701-finalConfigPatch.nativeHookRelayGeneration ?? binding.nativeHookRelayGeneration,
702-pluginAppsFingerprint: binding.pluginAppsFingerprint,
703-pluginAppsInputFingerprint: binding.pluginAppsInputFingerprint,
704-pluginAppPolicyContext: binding.pluginAppPolicyContext,
701+finalConfigPatch.nativeHookRelayGeneration ?? resumeBinding.nativeHookRelayGeneration,
702+pluginAppsFingerprint: resumeBinding.pluginAppsFingerprint,
703+pluginAppsInputFingerprint: resumeBinding.pluginAppsInputFingerprint,
704+pluginAppPolicyContext: resumeBinding.pluginAppPolicyContext,
705705contextEngine: contextEngineBinding,
706706 environmentSelectionFingerprint,
707707lifecycle: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。