























@@ -1,7 +1,12 @@
11import { randomUUID } from "node:crypto";
22import path from "node:path";
33import type { Bot, Context } from "grammy";
4-import { resolveDefaultModelForAgent } from "openclaw/plugin-sdk/agent-runtime";
4+import {
5+buildConfiguredModelCatalog,
6+resolveAgentConfig,
7+resolveDefaultModelForAgent,
8+resolveThinkingDefault,
9+} from "openclaw/plugin-sdk/agent-runtime";
510import { resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-streaming";
611import {
712resolveCommandAuthorization,
@@ -203,7 +208,7 @@ function resolveTelegramCommandMenuModelContext(params: {
203208cfg: OpenClawConfig;
204209agentId: string;
205210sessionKey: string;
206-}): { provider?: string; model?: string } {
211+}): { provider?: string; model?: string; thinkingLevel?: string } {
207212if (!params.sessionKey.trim()) {
208213return {};
209214}
@@ -215,8 +220,13 @@ function resolveTelegramCommandMenuModelContext(params: {
215220});
216221const store = loadSessionStore(storePath);
217222const entry = resolveSessionStoreEntry({ store, sessionKey: params.sessionKey }).existing;
223+const thinkingLevel = normalizeOptionalString(entry?.thinkingLevel);
218224if (entry?.modelOverrideSource === "auto" && normalizeOptionalString(entry.modelOverride)) {
219-return { provider: defaultModel.provider, model: defaultModel.model };
225+return {
226+provider: defaultModel.provider,
227+model: defaultModel.model,
228+ ...(thinkingLevel ? { thinkingLevel } : {}),
229+};
220230}
221231const override = resolveStoredModelOverride({
222232sessionEntry: entry,
@@ -228,6 +238,7 @@ function resolveTelegramCommandMenuModelContext(params: {
228238return {
229239provider: override.provider || defaultModel.provider,
230240model: override.model,
241+ ...(thinkingLevel ? { thinkingLevel } : {}),
231242};
232243}
233244const provider =
@@ -238,12 +249,54 @@ function resolveTelegramCommandMenuModelContext(params: {
238249return {
239250 ...(provider ? { provider } : {}),
240251 ...(model ? { model } : {}),
252+ ...(thinkingLevel ? { thinkingLevel } : {}),
241253};
242254} catch {
243255return {};
244256}
245257}
246258259+function resolveTelegramThinkMenuCurrentLevel(params: {
260+cfg: OpenClawConfig;
261+agentId: string;
262+provider?: string;
263+model?: string;
264+thinkingLevel?: string;
265+}): string {
266+const explicit = normalizeOptionalString(params.thinkingLevel);
267+if (explicit) {
268+return explicit;
269+}
270+const agentThinkingDefault = normalizeOptionalString(
271+resolveAgentConfig(params.cfg, params.agentId)?.thinkingDefault,
272+);
273+if (agentThinkingDefault) {
274+return agentThinkingDefault;
275+}
276+const defaultModel = resolveDefaultModelForAgent({
277+cfg: params.cfg,
278+agentId: params.agentId,
279+});
280+return resolveThinkingDefault({
281+cfg: params.cfg,
282+provider: params.provider ?? defaultModel.provider,
283+model: params.model ?? defaultModel.model,
284+catalog: buildConfiguredModelCatalog({ cfg: params.cfg }),
285+});
286+}
287+288+function formatTelegramCommandArgMenuTitle(params: {
289+command: NonNullable<ReturnType<typeof findCommandByNativeName>>;
290+menu: NonNullable<ReturnType<typeof resolveCommandArgMenu>>;
291+currentThinkingLevel?: string;
292+}): string {
293+const title = formatCommandArgMenuTitle({ command: params.command, menu: params.menu });
294+if (params.command.key !== "think" || !params.currentThinkingLevel) {
295+return title;
296+}
297+return `Current thinking level: ${params.currentThinkingLevel}.\n${title}`;
298+}
299+247300function resolveTelegramNativeReplyChannelData(
248301result: TelegramNativeReplyPayload,
249302): TelegramNativeReplyChannelData | undefined {
@@ -1006,7 +1059,18 @@ export const registerTelegramNativeCommands = ({
10061059})
10071060 : null;
10081061if (menu && commandDefinition) {
1009-const title = formatCommandArgMenuTitle({ command: commandDefinition, menu });
1062+const title = formatTelegramCommandArgMenuTitle({
1063+command: commandDefinition,
1064+ menu,
1065+currentThinkingLevel:
1066+commandDefinition.key === "think"
1067+ ? resolveTelegramThinkMenuCurrentLevel({
1068+cfg: runtimeCfg,
1069+agentId: route.agentId,
1070+ ...menuModelContext,
1071+})
1072+ : undefined,
1073+});
10101074const rows: Array<Array<{ text: string; callback_data: string }>> = [];
10111075for (let i = 0; i < menu.choices.length; i += 2) {
10121076const slice = menu.choices.slice(i, i + 2);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。