From 2f361e0e65cdcb227e13de006b7a460e86d431fe Mon Sep 17 00:00:00 2001 From: Ayush Ojha Date: Fri, 30 Jan 2026 00:40:52 -0800 Subject: [PATCH] fix(hooks): slug generator respects configured default model The slug generator was always using the hardcoded DEFAULT_MODEL (Opus) because it never passed provider/model to runEmbeddedPiAgent. Now it resolves the user's configured primary model via resolveConfiguredModelRef. Closes #4315 --- src/hooks/llm-slug-generator.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/hooks/llm-slug-generator.ts b/src/hooks/llm-slug-generator.ts index c52627176..a554e9bb2 100644 --- a/src/hooks/llm-slug-generator.ts +++ b/src/hooks/llm-slug-generator.ts @@ -5,6 +5,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; +import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../agents/defaults.js"; +import { resolveConfiguredModelRef } from "../agents/model-selection.js"; import { runEmbeddedPiAgent } from "../agents/pi-embedded.js"; import type { OpenClawConfig } from "../config/config.js"; import { @@ -38,6 +40,13 @@ ${params.sessionContent.slice(0, 2000)} Reply with ONLY the slug, nothing else. Examples: "vendor-pitch", "api-design", "bug-fix"`; + // Respect the user's configured default model instead of always using Opus. + const modelRef = resolveConfiguredModelRef({ + cfg: params.cfg, + defaultProvider: DEFAULT_PROVIDER, + defaultModel: DEFAULT_MODEL, + }); + const result = await runEmbeddedPiAgent({ sessionId: `slug-generator-${Date.now()}`, sessionKey: "temp:slug-generator", @@ -46,6 +55,8 @@ Reply with ONLY the slug, nothing else. Examples: "vendor-pitch", "api-design", agentDir, config: params.cfg, prompt, + provider: modelRef.provider, + model: modelRef.model, timeoutMs: 15_000, // 15 second timeout runId: `slug-gen-${Date.now()}`, });