Files
oh-my-opencode/src/agents/AGENTS.md
T
YeonGyu-Kim 2dfa6336f5 fix(metis): switch primary model to claude-sonnet-4-6 + correct AGENTS.md inaccuracies
Source code change:
- src/shared/model-requirements.ts: prepend claude-sonnet-4-6 to metis fallback
  chain so Sonnet becomes the default. Opus 4.7 max remains as the immediate
  fallback for callers who want extra reasoning.
- src/shared/model-requirements.test.ts: update assertion to expect Sonnet
  primary + Opus secondary.

AGENTS.md accuracy fixes (verified against source):
- Agent modes: Sisyphus/Hephaestus are 'primary' (not 'all'); Sisyphus-Junior
  is 'subagent' (not 'all'). Confirmed via 'const MODE: AgentMode = ...' in
  each agent file. Also clarified Prometheus has no agentSources factory and
  is built via buildPrometheusAgentConfig.
- Sisyphus fallback chain: corrected order to kimi-k2.6 → k2p5 → kimi-k2.5
  → gpt-5.5 medium → glm-5 → big-pickle (was missing kimi-k2.5).
- Librarian/Explore: added missing minimax-m2.7 step between -highspeed and
  claude-haiku-4-5.
- Metis chain: removed fictitious gemini-3.1-pro entry.
- Sisyphus-Junior chain: spelled out the actual fallback (was 'user-configurable').
- Temperatures: Sisyphus/Hephaestus do not set explicit temperature (model
  default); Sisyphus-Junior is 0.1 via SISYPHUS_JUNIOR_DEFAULTS.
- Quick category default: gpt-5.4-mini (not gpt-5.4-mini-fast).

Team-mode corrections:
- Eligibility registry has 3 verdicts: eligible (sisyphus, atlas, sisyphus-junior),
  conditional (hephaestus — needs D-36 teammate permission), hard-reject
  (oracle, librarian, explore, multimodal-looker, metis, momus, prometheus).
- Schema has 11 fields, not 4: added max_messages_per_run, max_wall_clock_minutes,
  max_member_turns, base_dir, message_payload_max_bytes, recipient_unread_max_bytes,
  mailbox_poll_interval_ms.
- Hooks: 'team-session-events' is 4 sub-handlers in src/plugin/event.ts
  (team-idle-wake-hint, team-lead-orphan-handler, team-member-error-handler,
  team-member-status-handler), not a single Continuation-tier hook.
- Tier counts now show base + team-mode: ToolGuard 14/15, Transform 5/7.
- Total: 52 base hooks, 59 with team-mode.

Doc cascade for the Metis change:
- docs/guide/orchestration.md, agent-model-matching.md, installation.md
- docs/reference/configuration.md, features.md
2026-05-08 13:06:34 +09:00

8.7 KiB

name, description
name description
agents-directory Developer reference for all 11 Oh My OpenAgent agent definitions, factory patterns, tool restrictions, and model routing.

src/agents/ — 11 Agent Definitions

Generated: 2026-05-08

OVERVIEW

11 built-in agents. Type enum: src/config/schema/agent-names.ts BuiltinAgentNameSchema. 10 of them register via builtin-agents.ts agentSources record (factory functions). Prometheus is special-cased — it has no createPrometheusAgent factory; instead prometheus-agent-config-builder.ts constructs its config directly during agent-config-handler Phase 3.

All factories follow createXXXAgent(model) → AgentConfig. Each carries a static mode property (AgentFactory type in src/agents/types.ts). Composed via buildAgent().

AGENT INVENTORY

Modes verified from each agent file's const MODE: AgentMode = ... and (for Prometheus) prometheus-agent-config-builder.ts:100. Chains verified from src/shared/model-requirements.ts.

Agent Default Model Temp Mode Fallback (after default) Purpose
Sisyphus claude-opus-4-7 max (model default) primary kimi-k2.6 → k2p5 → kimi-k2.5 → gpt-5.5 medium → glm-5 → big-pickle Main orchestrator, plans + delegates; thinking: { type: "enabled", budgetTokens: 32000 }
Hephaestus gpt-5.5 medium (model default) primary (single-entry chain — requiresProvider: openai | github-copilot | venice | opencode | vercel) Autonomous deep worker
Oracle gpt-5.5 high 0.1 subagent gemini-3.1-pro high → claude-opus-4-7 max → glm-5.1 Read-only consultation
Librarian gpt-5.4-mini-fast 0.1 subagent qwen3.5-plus → minimax-m2.7-highspeed → minimax-m2.7 → claude-haiku-4-5 → gpt-5.4-nano External docs/code search
Explore gpt-5.4-mini-fast 0.1 subagent qwen3.5-plus → minimax-m2.7-highspeed → minimax-m2.7 → claude-haiku-4-5 → gpt-5.4-nano Contextual grep
Multimodal-Looker gpt-5.5 medium 0.1 subagent kimi-k2.6 → glm-4.6v → gpt-5-nano PDF/image analysis
Metis claude-sonnet-4-6 0.3 subagent claude-opus-4-7 max → gpt-5.5 high → glm-5.1 → k2p5 Pre-planning consultant
Momus gpt-5.5 xhigh 0.1 subagent claude-opus-4-7 max → gemini-3.1-pro high → glm-5.1 Plan reviewer
Atlas claude-sonnet-4-6 0.1 primary kimi-k2.6 → gpt-5.5 medium → minimax-m2.7 Todo-list orchestrator
Prometheus claude-opus-4-7 max (override-only) primary gpt-5.5 high → glm-5.1 → gemini-3.1-pro Strategic planner (interview); built via buildPrometheusAgentConfig (not in agentSources)
Sisyphus-Junior claude-sonnet-4-6 0.1 (SISYPHUS_JUNIOR_DEFAULTS) subagent kimi-k2.6 → gpt-5.5 medium → minimax-m2.7 → big-pickle Category-spawned executor

TOOL RESTRICTIONS

Defined in src/shared/agent-tool-restrictions.ts.

Agent Denied Tools
Oracle write, edit, task, call_omo_agent
Librarian write, edit, task, call_omo_agent
Explore write, edit, task, call_omo_agent
Multimodal-Looker ALL except read
Atlas task, call_omo_agent
Momus write, edit, task
Prometheus enforces .md-only writes via prometheus-md-only hook (path-based, not tool-based)

TEAM-MODE ELIGIBILITY

Authoritative registry: AGENT_ELIGIBILITY_REGISTRY in team-mode/types.ts. Three verdict tiers:

Verdict Agents
eligible sisyphus, atlas, sisyphus-junior
conditional hephaestus (lacks teammate: "allow" permission by default — see D-36 / tool-config-handler.ts; use subagent_type: "sisyphus" instead)
hard-reject oracle, librarian, explore, multimodal-looker, metis, momus, prometheus (each with a specific rejection message)

Read-only agents are rejected at TeamSpec parse time. For those, the lead delegates via task (delegate-task) instead. See team-mode/AGENTS.md.

STRUCTURE

agents/
├── sisyphus.ts                                # Main orchestrator router
├── sisyphus/                                  # Model-specific variant prompts
│   ├── default.ts, gemini.ts, gpt-5-4.ts, gpt-5-5.ts
├── hephaestus.ts                              # Routes to model variant
├── hephaestus/                                # gpt.ts, gpt-5-3-codex.ts, gpt-5-4.ts, gpt-5-5.ts
├── oracle.ts                                  # Read-only consultant
├── librarian.ts                               # External search
├── explore.ts                                 # Codebase grep
├── multimodal-looker.ts                       # Vision/PDF
├── metis.ts                                   # Pre-planning
├── momus.ts                                   # Plan review
├── atlas/agent.ts                             # Todo orchestrator
├── prometheus/                                # Strategic planner — system-prompt.ts, identity-constraints.ts, interview-mode.ts, plan-template.ts, gemini.ts, gpt.ts
├── types.ts                                   # BuiltinAgentName, AgentMode, AgentConfig
├── builtin-agents.ts                          # agentSources registry (10 → 11 with sisyphus-junior)
├── builtin-agents/                            # maybeCreateXXXConfig conditional factories + general-agents.ts + available-skills.ts
├── agent-builder.ts                           # buildAgent() composition
├── utils.ts                                   # agent utilities
├── env-context.ts                             # environment context for prompts
├── custom-agent-summaries.ts                  # custom-agent prompt summaries
├── dynamic-agent-prompt-builder.ts            # dynamic prompt builder
├── dynamic-agent-core-sections.ts             # core prompt sections
├── dynamic-agent-policy-sections.ts           # policy sections
├── dynamic-agent-tool-categorization.ts       # tool categorization for prompt
└── dynamic-agent-category-skills-guide.ts     # category-skill guidance

FACTORY PATTERN

const createXXXAgent: AgentFactory = (model: string) => ({
  instructions: "...",
  model,
  temperature: 0.1,
  // ...config
})
createXXXAgent.mode = "subagent" // or "primary" or "all"

Model resolution: 4-step pipeline → override → category-default → provider-fallback → system-default. Defined in shared/model-resolution-pipeline.ts.

MODES

Definition (from src/agents/types.ts):

  • primary — respects user's UI-selected model. Used by: sisyphus, hephaestus, atlas, prometheus.
  • subagent — uses own fallback chain, ignores UI selection. Used by: oracle, librarian, explore, multimodal-looker, metis, momus, sisyphus-junior.
  • all — declared in the type for OpenCode compatibility but no built-in agent currently uses it.

CANONICAL ORDER

Sisyphus → Hephaestus → Prometheus → Atlas (primary core agents) then alphabetical for the rest. Enforced by installAgentSortShim() — patches Array.prototype.{toSorted,sort} narrowly when ≥2 canonical core agents are in the array. See src/plugin-handlers/AGENTS.md for the full history.

DYNAMIC PROMPT BUILDER

dynamic-agent-prompt-builder.ts composes per-agent system prompts at runtime by stitching:

  • Core sections (identity, mode, restrictions)
  • Policy sections (citation, verification, anti-patterns)
  • Tool categorization (per-domain tool guidance)
  • Category-skills guide (which skills load with which categories)

This is what the Sisyphus prompt's "AGENTS / CATEGORY + SKILLS" tables come from.