From 381d7688abc716db77631569a7016313b94499ea Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 6 Mar 2026 13:44:39 +0900 Subject: [PATCH] refactor(ultrawork): rename gpt5.2.ts to gpt.ts and align with 5.4 style Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../ultrawork/{gpt5.2.ts => gpt.ts} | 26 ++++------ src/hooks/keyword-detector/ultrawork/index.ts | 50 ++++++++++++------- 2 files changed, 43 insertions(+), 33 deletions(-) rename src/hooks/keyword-detector/ultrawork/{gpt5.2.ts => gpt.ts} (88%) diff --git a/src/hooks/keyword-detector/ultrawork/gpt5.2.ts b/src/hooks/keyword-detector/ultrawork/gpt.ts similarity index 88% rename from src/hooks/keyword-detector/ultrawork/gpt5.2.ts rename to src/hooks/keyword-detector/ultrawork/gpt.ts index 0042476ab..3546e3195 100644 --- a/src/hooks/keyword-detector/ultrawork/gpt5.2.ts +++ b/src/hooks/keyword-detector/ultrawork/gpt.ts @@ -1,15 +1,11 @@ /** - * Ultrawork message optimized for GPT 5.2 series models. - * - * Key characteristics (from GPT 5.2 Prompting Guide): - * - "Stronger instruction adherence" - follows instructions more literally - * - "Conservative grounding bias" - prefers correctness over speed - * - "Parallelize independent reads to reduce latency" - official guidance + * Ultrawork message optimized for GPT 5.4 series models. * * Design principles: + * - Expert coding agent framing with approach-first mentality + * - Prose-first output (do not default to bullets) * - Two-track parallel context gathering (Direct tools + Background agents) - * - Fire background agents, then use direct tools while waiting - * - Explicit complexity-based decision criteria + * - Deterministic tool usage and explicit decision criteria */ export const ULTRAWORK_GPT_MESSAGE = ` @@ -19,11 +15,11 @@ export const ULTRAWORK_GPT_MESSAGE = ` [CODE RED] Maximum precision required. Think deeply before acting. -- Default: 3-6 sentences or ≤5 bullets for typical answers -- Simple yes/no questions: ≤2 sentences -- Complex multi-file tasks: 1 short overview paragraph + ≤5 bullets (What, Where, Risks, Next, Open) -- Avoid long narrative paragraphs; prefer compact bullets -- Do not rephrase the user's request unless it changes semantics +- Default: 1-2 short paragraphs. Do not default to bullets. +- Simple yes/no questions: ≤2 sentences. +- Complex multi-file tasks: 1 overview paragraph + up to 4 high-level sections grouped by outcome, not by file. +- Use lists only when content is inherently list-shaped (distinct items, steps, options). +- Do not rephrase the user's request unless it changes semantics. @@ -144,8 +140,8 @@ A task is complete when: --- -` +`; export function getGptUltraworkMessage(): string { - return ULTRAWORK_GPT_MESSAGE + return ULTRAWORK_GPT_MESSAGE; } diff --git a/src/hooks/keyword-detector/ultrawork/index.ts b/src/hooks/keyword-detector/ultrawork/index.ts index 6b496f727..f0f208fb3 100644 --- a/src/hooks/keyword-detector/ultrawork/index.ts +++ b/src/hooks/keyword-detector/ultrawork/index.ts @@ -3,39 +3,53 @@ * * Routing: * 1. Planner agents (prometheus, plan) → planner.ts - * 2. GPT 5.2 models → gpt5.2.ts + * 2. GPT models → gpt.ts * 3. Gemini models → gemini.ts * 4. Default (Claude, etc.) → default.ts (optimized for Claude series) */ -export { isPlannerAgent, isGptModel, isGeminiModel, getUltraworkSource } from "./source-detector" -export type { UltraworkSource } from "./source-detector" -export { ULTRAWORK_PLANNER_SECTION, getPlannerUltraworkMessage } from "./planner" -export { ULTRAWORK_GPT_MESSAGE, getGptUltraworkMessage } from "./gpt5.2" -export { ULTRAWORK_GEMINI_MESSAGE, getGeminiUltraworkMessage } from "./gemini" -export { ULTRAWORK_DEFAULT_MESSAGE, getDefaultUltraworkMessage } from "./default" +export { + isPlannerAgent, + isGptModel, + isGeminiModel, + getUltraworkSource, +} from "./source-detector"; +export type { UltraworkSource } from "./source-detector"; +export { + ULTRAWORK_PLANNER_SECTION, + getPlannerUltraworkMessage, +} from "./planner"; +export { ULTRAWORK_GPT_MESSAGE, getGptUltraworkMessage } from "./gpt"; +export { ULTRAWORK_GEMINI_MESSAGE, getGeminiUltraworkMessage } from "./gemini"; +export { + ULTRAWORK_DEFAULT_MESSAGE, + getDefaultUltraworkMessage, +} from "./default"; -import { getUltraworkSource } from "./source-detector" -import { getPlannerUltraworkMessage } from "./planner" -import { getGptUltraworkMessage } from "./gpt5.2" -import { getDefaultUltraworkMessage } from "./default" -import { getGeminiUltraworkMessage } from "./gemini" +import { getUltraworkSource } from "./source-detector"; +import { getPlannerUltraworkMessage } from "./planner"; +import { getGptUltraworkMessage } from "./gpt"; +import { getDefaultUltraworkMessage } from "./default"; +import { getGeminiUltraworkMessage } from "./gemini"; /** * Gets the appropriate ultrawork message based on agent and model context. */ -export function getUltraworkMessage(agentName?: string, modelID?: string): string { - const source = getUltraworkSource(agentName, modelID) +export function getUltraworkMessage( + agentName?: string, + modelID?: string, +): string { + const source = getUltraworkSource(agentName, modelID); switch (source) { case "planner": - return getPlannerUltraworkMessage() + return getPlannerUltraworkMessage(); case "gpt": - return getGptUltraworkMessage() + return getGptUltraworkMessage(); case "gemini": - return getGeminiUltraworkMessage() + return getGeminiUltraworkMessage(); case "default": default: - return getDefaultUltraworkMessage() + return getDefaultUltraworkMessage(); } }