feat(agents): add gpt-5.5 native sisyphus-junior prompt

The base prompt is category-agnostic; the actual category context (deep,
quick, ultrabrain, writing) layers on top at runtime via the
promptAppend parameter resolved by resolvePromptAppend.

Distinctive elements:
- Closing '# Category context' section explicitly telling the agent
  to read the appended block as overriding defaults on conflict
- Orchestrator-facing final-answer structure (What changed / Key
  decisions / Verification / Observations / Blockers) instead of a
  user-facing conversational close
- Sparse commentary cadence; the orchestrator synthesizes progress
  for the user, so mid-task narration is mostly noise

getSisyphusJuniorPromptSource() checks gpt-5-5 before the gpt-5.4 /
gpt-5.3-codex path so the new prompt takes precedence for gpt-5.5
deployments.
This commit is contained in:
YeonGyu-Kim
2026-04-24 13:06:18 +09:00
parent a432e29ae3
commit c57d08c0b4
3 changed files with 267 additions and 2 deletions
+12 -2
View File
@@ -12,7 +12,7 @@
import type { AgentConfig } from "@opencode-ai/sdk"
import type { AgentMode } from "../types"
import { isGlmModel, isGptModel, isGeminiModel } from "../types"
import { isGlmModel, isGpt5_5Model, isGptModel, isGeminiModel } from "../types"
import type { AgentOverrideConfig } from "../../config/schema"
import {
createAgentToolRestrictions,
@@ -23,6 +23,7 @@ import { getGptApplyPatchPermission } from "../gpt-apply-patch-guard"
import { buildDefaultSisyphusJuniorPrompt } from "./default"
import { buildGptSisyphusJuniorPrompt } from "./gpt"
import { buildGpt54SisyphusJuniorPrompt } from "./gpt-5-4"
import { buildGpt55SisyphusJuniorPrompt } from "./gpt-5-5"
import { buildGpt53CodexSisyphusJuniorPrompt } from "./gpt-5-3-codex"
import { buildGeminiSisyphusJuniorPrompt } from "./gemini"
@@ -38,10 +39,17 @@ export const SISYPHUS_JUNIOR_DEFAULTS = {
temperature: 0.1,
} as const
export type SisyphusJuniorPromptSource = "default" | "gpt" | "gpt-5-4" | "gpt-5-3-codex" | "gemini"
export type SisyphusJuniorPromptSource =
| "default"
| "gpt"
| "gpt-5-5"
| "gpt-5-4"
| "gpt-5-3-codex"
| "gemini"
export function getSisyphusJuniorPromptSource(model?: string): SisyphusJuniorPromptSource {
if (model && isGptModel(model)) {
if (isGpt5_5Model(model)) return "gpt-5-5"
const lower = model.toLowerCase()
if (lower.includes("gpt-5.4") || lower.includes("gpt-5-4")) return "gpt-5-4"
if (lower.includes("gpt-5.3-codex") || lower.includes("gpt-5-3-codex")) return "gpt-5-3-codex"
@@ -64,6 +72,8 @@ export function buildSisyphusJuniorPrompt(
const source = getSisyphusJuniorPromptSource(model)
switch (source) {
case "gpt-5-5":
return buildGpt55SisyphusJuniorPrompt(useTaskSystem, promptAppend)
case "gpt-5-4":
return buildGpt54SisyphusJuniorPrompt(useTaskSystem, promptAppend)
case "gpt-5-3-codex":