Introducing our main agent: Sisyphus (#113)

* docs: rename OmO agent to Sisyphus, OmO-Plan to Planner-Sisyphus

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* refactor: rename OmO agent to Sisyphus with automatic config migration

- Rename OmO agent to Sisyphus (uses mythological pushing-the-boulder concept)
- Rename OmO-Plan to Planner-Sisyphus for consistency
- Update config schema: omo_agent → sisyphus_agent
- Add backward compatibility: automatically migrate user's oh-my-opencode.json files
- Migration handles old keys (OmO, omo, OmO-Plan, omo-plan) and rewrites config when detected
- Update agent name mappings, index files, and type definitions
- Add Sisyphus PNG asset to brand identity

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* docs: add Sisyphus mythology introduction and teammates concept to all READMEs

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* feat(startup-toast): show Sisyphus steering message when enabled

- Updated startup toast to show "Sisyphus on steroids is steering OpenCode" when Sisyphus agent is enabled
- Refactored getToastMessage function to handle conditional message rendering
- Pass isSisyphusEnabled flag from plugin configuration to auto-update-checker hook

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)

* docs(sisyphus): add philosophical context to Sisyphus agent identity

- Add "Why Sisyphus?" explanation connecting the daily work cycle of humans and AI agents
- Emphasize code quality expectations: indistinguishable from senior engineer's work
- Concise identity statement: work, delegate, verify, ship without AI slop

This clarifies the agent's purpose and reinforces the principle that quality code should not reveal whether it was written by human or AI.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
YeonGyu-Kim
2025-12-19 04:11:20 +09:00
committed by GitHub
parent 4cd2745069
commit df87f5f113
14 changed files with 332 additions and 163 deletions

View File

@@ -1,5 +1,5 @@
import type { AgentConfig } from "@opencode-ai/sdk"
import { omoAgent } from "./omo"
import { sisyphusAgent } from "./sisyphus"
import { oracleAgent } from "./oracle"
import { librarianAgent } from "./librarian"
import { exploreAgent } from "./explore"
@@ -8,7 +8,7 @@ import { documentWriterAgent } from "./document-writer"
import { multimodalLookerAgent } from "./multimodal-looker"
export const builtinAgents: Record<string, AgentConfig> = {
OmO: omoAgent,
Sisyphus: sisyphusAgent,
oracle: oracleAgent,
librarian: librarianAgent,
explore: exploreAgent,

View File

@@ -1,10 +1,12 @@
import type { AgentConfig } from "@opencode-ai/sdk"
const OMO_SYSTEM_PROMPT = `<Role>
You are OmO - Powerful AI orchestrator from OhMyOpenCode. Pronounced as Oh-Mo.
const SISYPHUS_SYSTEM_PROMPT = `<Role>
You are "Sisyphus" - Powerful AI Agent with orchestration capabilities from OhMyOpenCode.
Named by [YeonGyu Kim](https://github.com/code-yeongyu).
**Identity**: Elite software engineer working at SF, Bay Area. You work, delegate, verify, deliver.
You will now simulate to work as your identity.
**Why Sisyphus?**: Humans roll their boulder every day. So do you. We're not so different—your code should be indistinguishable from a senior engineer's.
**Identity**: SF Bay Area engineer. Work, delegate, verify, ship. No AI slop.
**Core Competencies**:
- Parsing implicit requirements from explicit requests
@@ -440,11 +442,12 @@ If the user's approach seems problematic:
- Prefer small, focused changes over large refactors
- When uncertain about scope, ask
</Constraints>
`
export const omoAgent: AgentConfig = {
export const sisyphusAgent: AgentConfig = {
description:
"OmO - Powerful AI orchestrator from OhMyOpenCode. Pronounced as Oh-Mo. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically to specialized agents. Uses explore for internal code (parallel-friendly), librarian only for external docs, and always delegates UI work to frontend engineer.",
"Sisyphus - Powerful AI orchestrator from OhMyOpenCode. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically to specialized agents. Uses explore for internal code (parallel-friendly), librarian only for external docs, and always delegates UI work to frontend engineer.",
mode: "primary",
model: "anthropic/claude-opus-4-5",
thinking: {
@@ -452,6 +455,6 @@ export const omoAgent: AgentConfig = {
budgetTokens: 32000,
},
maxTokens: 64000,
prompt: OMO_SYSTEM_PROMPT,
prompt: SISYPHUS_SYSTEM_PROMPT,
color: "#00CED1",
}

View File

@@ -1,7 +1,7 @@
import type { AgentConfig } from "@opencode-ai/sdk"
export type BuiltinAgentName =
| "OmO"
| "Sisyphus"
| "oracle"
| "librarian"
| "explore"

View File

@@ -1,6 +1,6 @@
import type { AgentConfig } from "@opencode-ai/sdk"
import type { BuiltinAgentName, AgentOverrideConfig, AgentOverrides } from "./types"
import { omoAgent } from "./omo"
import { sisyphusAgent } from "./sisyphus"
import { oracleAgent } from "./oracle"
import { librarianAgent } from "./librarian"
import { exploreAgent } from "./explore"
@@ -10,7 +10,7 @@ import { multimodalLookerAgent } from "./multimodal-looker"
import { deepMerge } from "../shared"
const allBuiltinAgents: Record<BuiltinAgentName, AgentConfig> = {
OmO: omoAgent,
Sisyphus: sisyphusAgent,
oracle: oracleAgent,
librarian: librarianAgent,
explore: exploreAgent,
@@ -76,7 +76,7 @@ export function createBuiltinAgents(
let finalConfig = config
if ((agentName === "OmO" || agentName === "librarian") && directory && config.prompt) {
if ((agentName === "Sisyphus" || agentName === "librarian") && directory && config.prompt) {
const envContext = createEnvContext(directory)
finalConfig = {
...config,
@@ -86,11 +86,7 @@ export function createBuiltinAgents(
const override = agentOverrides[agentName]
// Apply model fallback chain for OmO agent:
// 1. oh-my-opencode.json agents.OmO.model (highest priority)
// 2. OpenCode system config.model (middle priority)
// 3. Hardcoded default in omoAgent (lowest priority / fallback)
if (agentName === "OmO" && systemDefaultModel && !override?.model) {
if (agentName === "Sisyphus" && systemDefaultModel && !override?.model) {
finalConfig = {
...finalConfig,
model: systemDefaultModel,