惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
D
DataBreaches.Net
腾讯CDC
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
罗磊的独立博客
月光博客
月光博客
MyScale Blog
MyScale Blog
U
Unit 42
Martin Fowler
Martin Fowler
Stack Overflow Blog
Stack Overflow Blog
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
G
Google Developers Blog
博客园 - 【当耐特】
D
Docker
I
InfoQ
雷峰网
雷峰网

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
fix(ui): label inherited thinking overrides · openclaw/op...
BunsDev · 2026-05-07 · via Recent Commits to openclaw:main

@@ -5,7 +5,11 @@ import { icons } from "../icons.ts";

55

import { pathForTab } from "../navigation.ts";

66

import { formatSessionTokens } from "../presenter.ts";

77

import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "../string-coerce.ts";

8-

import { normalizeThinkLevel } from "../thinking.ts";

8+

import {

9+

formatInheritedThinkingLabel,

10+

formatThinkingOverrideLabel,

11+

normalizeThinkingOptionValue,

12+

} from "../thinking-labels.ts";

913

import type {

1014

AgentIdentityResult,

1115

GatewaySessionRow,

@@ -88,27 +92,42 @@ function getAgentIdentity(

8892

: null;

8993

}

909491-

function normalizeThinkingOptionValue(raw: string): string {

92-

return normalizeThinkLevel(raw) ?? normalizeLowercaseStringOrEmpty(raw);

95+

function rowMatchesSessionDefaults(

96+

row: GatewaySessionRow,

97+

defaults: SessionsListResult["defaults"] | undefined,

98+

): boolean {

99+

return (

100+

(!row.modelProvider || row.modelProvider === defaults?.modelProvider) &&

101+

(!row.model || row.model === defaults?.model)

102+

);

93103

}

9410495105

function resolveThinkLevelOptions(

96106

row: GatewaySessionRow,

107+

defaults?: SessionsListResult["defaults"],

97108

): readonly { value: string; label: string }[] {

98-

const defaultLabel = row.thinkingDefault

99-

? t("sessionsView.defaultOption", { value: row.thinkingDefault })

100-

: t("sessionsView.inherit");

109+

const sessionModelMatchesDefaults = rowMatchesSessionDefaults(row, defaults);

110+

const defaultLabel = formatInheritedThinkingLabel(

111+

row.thinkingDefault ?? (sessionModelMatchesDefaults ? defaults?.thinkingDefault : undefined),

112+

);

101113

const options: readonly GatewayThinkingLevelOption[] = row.thinkingLevels?.length

102114

? row.thinkingLevels

103-

: (row.thinkingOptions?.length ? row.thinkingOptions : DEFAULT_THINK_LEVELS).map((label) => ({

104-

id: normalizeThinkingOptionValue(label),

105-

label,

106-

}));

115+

: sessionModelMatchesDefaults && defaults?.thinkingLevels?.length

116+

? defaults.thinkingLevels

117+

: (row.thinkingOptions?.length

118+

? row.thinkingOptions

119+

: sessionModelMatchesDefaults && defaults?.thinkingOptions?.length

120+

? defaults.thinkingOptions

121+

: DEFAULT_THINK_LEVELS

122+

).map((label) => ({

123+

id: normalizeThinkingOptionValue(label),

124+

label,

125+

}));

107126

return [

108127

{ value: "", label: defaultLabel },

109128

...options.map((option) => ({

110129

value: normalizeThinkingOptionValue(option.id),

111-

label: option.label,

130+

label: formatThinkingOverrideLabel(option.id, option.label),

112131

})),

113132

];

114133

}

@@ -133,10 +152,7 @@ function withCurrentLabeledOption(

133152

if (options.some((option) => option.value === current)) {

134153

return [...options];

135154

}

136-

return [

137-

...options,

138-

{ value: current, label: t("sessionsView.customOption", { value: current }) },

139-

];

155+

return [...options, { value: current, label: formatThinkingOverrideLabel(current) }];

140156

}

141157142158

function buildVerboseLevelOptions(): Array<{ value: string; label: string }> {

@@ -689,7 +705,10 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) {

689705

const updated = row.updatedAt ? formatRelativeTimestamp(row.updatedAt) : t("common.na");

690706

const rawThinking = row.thinkingLevel ?? "";

691707

const thinking = rawThinking ? normalizeThinkingOptionValue(rawThinking) : "";

692-

const thinkLevels = withCurrentLabeledOption(resolveThinkLevelOptions(row), thinking);

708+

const thinkLevels = withCurrentLabeledOption(

709+

resolveThinkLevelOptions(row, props.result?.defaults),

710+

thinking,

711+

);

693712

const fastMode = row.fastMode === true ? "on" : row.fastMode === false ? "off" : "";

694713

const fastLevels = withCurrentLabeledOption(buildFastLevelOptions(), fastMode);

695714

const verbose = row.verboseLevel ?? "";