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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
月光博客
月光博客
博客园_首页
博客园 - 叶小钗
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
量子位
小众软件
小众软件
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
IT之家
IT之家
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

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: show fast mode in status · openclaw/openclaw@8714bad
steipete · 2026-04-23 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -39,6 +39,7 @@ Docs: https://docs.openclaw.ai

3939
4040

### Fixes

4141
42+

- Status: show `Fast` in `/status` when fast mode is enabled, including config/default-derived fast mode, and omit it when disabled.

4243

- Models/auth: merge provider-owned default-model additions from `openclaw models auth login` instead of replacing `agents.defaults.models`, so re-authenticating an OAuth provider such as OpenAI Codex no longer wipes other providers' aliases and per-model params. Migrations that must rename keys (Anthropic -> Claude CLI) opt in with `replaceDefaultModels`. Fixes #69414. (#70435) Thanks @neeravmakwana.

4344

- Media understanding/audio: prefer configured or key-backed STT providers before auto-detected local Whisper CLIs, so installed local transcription tools no longer shadow API providers such as Groq/OpenAI in `tools.media.audio` auto mode. Fixes #68727.

4445

- Providers/OpenAI: lock the auth picker wording for OpenAI API key, Codex browser login, and Codex device pairing so the setup choices no longer imply a mixed Codex/API-key auth path. (#67848) Thanks @tmlxrd.

Original file line numberDiff line numberDiff line change

@@ -68,6 +68,7 @@ title: "Thinking Levels"

6868

- For direct public `anthropic/*` requests, including OAuth-authenticated traffic sent to `api.anthropic.com`, fast mode maps to Anthropic service tiers: `/fast on` sets `service_tier=auto`, `/fast off` sets `service_tier=standard_only`.

6969

- For `minimax/*` on the Anthropic-compatible path, `/fast on` (or `params.fastMode: true`) rewrites `MiniMax-M2.7` to `MiniMax-M2.7-highspeed`.

7070

- Explicit Anthropic `serviceTier` / `service_tier` model params override the fast-mode default when both are set. OpenClaw still skips Anthropic service-tier injection for non-Anthropic proxy base URLs.

71+

- `/status` shows `Fast` only when fast mode is enabled.

7172
7273

## Verbose directives (/verbose or /v)

7374
Original file line numberDiff line numberDiff line change

@@ -268,6 +268,23 @@ describe("info command handlers", () => {

268268

);

269269

});

270270
271+

it("forwards resolved fast mode to /status", async () => {

272+

const params = buildInfoParams("/status", {

273+

commands: { text: true },

274+

channels: { whatsapp: { allowFrom: ["*"] } },

275+

} as OpenClawConfig);

276+

params.resolvedFastMode = true;

277+
278+

const statusResult = await handleStatusCommand(params, true);

279+
280+

expect(statusResult?.shouldContinue).toBe(false);

281+

expect(vi.mocked(buildStatusReply)).toHaveBeenCalledWith(

282+

expect.objectContaining({

283+

resolvedFastMode: true,

284+

}),

285+

);

286+

});

287+
271288

it("uses the canonical target session agent when listing /commands", async () => {

272289

const { handleCommandsListCommand } = await import("./commands-info.js");

273290

const params = buildInfoParams("/commands", {

Original file line numberDiff line numberDiff line change

@@ -204,6 +204,7 @@ export const handleStatusCommand: CommandHandler = async (params, allowTextComma

204204

model: params.model,

205205

contextTokens: params.contextTokens,

206206

resolvedThinkLevel: params.resolvedThinkLevel,

207+

resolvedFastMode: params.resolvedFastMode,

207208

resolvedVerboseLevel: params.resolvedVerboseLevel,

208209

resolvedReasoningLevel: params.resolvedReasoningLevel,

209210

resolvedElevatedLevel: params.resolvedElevatedLevel,

Original file line numberDiff line numberDiff line change

@@ -53,6 +53,7 @@ export type HandleCommandsParams = {

5353

opts?: GetReplyOptions;

5454

defaultGroupActivation: () => "always" | "mention";

5555

resolvedThinkLevel?: ThinkLevel;

56+

resolvedFastMode?: boolean;

5657

resolvedVerboseLevel: VerboseLevel;

5758

resolvedReasoningLevel: ReasoningLevel;

5859

resolvedElevatedLevel?: ElevatedLevel;

Original file line numberDiff line numberDiff line change

@@ -276,7 +276,24 @@ describe("buildStatusMessage", () => {

276276

queue: { mode: "collect", depth: 0 },

277277

});

278278
279-

expect(normalizeTestText(text)).toContain("Fast: on");

279+

expect(normalizeTestText(text)).toContain("Fast");

280+

});

281+
282+

it("hides fast mode when disabled", () => {

283+

const text = buildStatusMessage({

284+

agent: {

285+

model: "anthropic/claude-opus-4-6",

286+

},

287+

sessionEntry: {

288+

sessionId: "fast-off",

289+

updatedAt: 0,

290+

fastMode: false,

291+

},

292+

sessionKey: "agent:main:main",

293+

queue: { mode: "collect", depth: 0 },

294+

});

295+
296+

expect(normalizeTestText(text)).not.toContain("Fast");

280297

});

281298
282299

it("shows configured text verbosity for the active model", () => {

Original file line numberDiff line numberDiff line change

@@ -0,0 +1,29 @@

1+

import { describe, expect, it } from "vitest";

2+

import { normalizeTestText } from "../../test/helpers/normalize-text.js";

3+

import { buildStatusMessage } from "./status-message.js";

4+
5+

const buildFastStatus = (model: string, fastMode: boolean) =>

6+

normalizeTestText(

7+

buildStatusMessage({

8+

modelAuth: "api-key",

9+

activeModelAuth: "api-key",

10+

agent: { model },

11+

sessionEntry: {

12+

sessionId: "fast-status",

13+

updatedAt: 0,

14+

fastMode,

15+

},

16+

sessionKey: "agent:main:main",

17+

queue: { mode: "collect", depth: 0 },

18+

}),

19+

);

20+
21+

describe("buildStatusMessage fast mode labels", () => {

22+

it("shows fast mode when enabled", () => {

23+

expect(buildFastStatus("openai/gpt-5.4", true)).toContain("Fast");

24+

});

25+
26+

it("hides fast mode when disabled", () => {

27+

expect(buildFastStatus("anthropic/claude-opus-4-6", false)).not.toContain("Fast");

28+

});

29+

});

Original file line numberDiff line numberDiff line change

@@ -237,6 +237,13 @@ const formatQueueDetails = (queue?: QueueStatus) => {

237237

return detailParts.length ? ` (${detailParts.join(" · ")})` : "";

238238

};

239239
240+

const formatFastModeLabel = (enabled: boolean) => {

241+

if (!enabled) {

242+

return null;

243+

}

244+

return "Fast";

245+

};

246+
240247

const readUsageFromSessionLog = (

241248

sessionId?: string,

242249

sessionEntry?: SessionEntry,

@@ -705,7 +712,7 @@ export function buildStatusMessage(args: StatusArgs): string {

705712

const optionParts = [

706713

`Runtime: ${runtime.label}`,

707714

`Think: ${thinkLevel}`,

708-

fastMode ? "Fast: on" : null,

715+

formatFastModeLabel(fastMode),

709716

textVerbosity ? `Text: ${textVerbosity}` : null,

710717

verboseLabel,

711718

traceLabel,