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
This commit is contained in:
+26
-18
@@ -28,8 +28,8 @@ serverPlugin(input, options)
|
||||
3. detectExternalSkillPlugin() # warn if conflicting plugin loaded
|
||||
4. injectServerAuthIntoClient() # wire auth headers into shared SDK client
|
||||
5. loadPluginConfig() # walk project + user JSONC → Zod safeParse → migrate
|
||||
6. initializeOpenClaw() # if openclaw config present (start reply-listener daemon)
|
||||
6. checkTeamModeDependencies() # if team_mode.enabled (verify git, tmux, ensure ~/.omo/teams/)
|
||||
6a. initializeOpenClaw() # if openclaw config present (start reply-listener daemon)
|
||||
6b. checkTeamModeDependencies() # if team_mode.enabled (verify git, tmux, ensure ~/.omo/teams/)
|
||||
7. createManagers/Tools/Hooks/PluginInterface
|
||||
```
|
||||
|
||||
@@ -50,31 +50,39 @@ loadPluginConfig(directory, ctx)
|
||||
|
||||
## HOOK COMPOSITION (5-tier)
|
||||
|
||||
Counts verified from each composer's return object. Numbers in brackets show counts when `team_mode.enabled`.
|
||||
|
||||
```
|
||||
createHooks()
|
||||
├─→ createCoreHooks()
|
||||
│ ├─ createSessionHooks() # 24: contextWindowMonitor, thinkMode, ralphLoop, modelFallback,
|
||||
│ │ runtimeFallback, anthropicEffort, anthropicContextWindowLimitRecovery,
|
||||
│ │ autoUpdateChecker, agentUsageReminder, nonInteractiveEnv,
|
||||
│ │ interactiveBashSession, editErrorRecovery, delegateTaskRetry,
|
||||
│ │ startWork, prometheusMdOnly, sisyphusJuniorNotepad,
|
||||
│ │ questionLabelTruncator, taskResumeInfo, noSisyphusGpt,
|
||||
│ │ noHephaestusNonGpt, legacyPluginToast, sessionRecovery,
|
||||
│ │ sessionNotification, preemptiveCompaction
|
||||
│ ├─ createToolGuardHooks() # 14: commentChecker, toolOutputTruncator, directoryAgentsInjector,
|
||||
│ │ directoryReadmeInjector, emptyTaskResponseDetector, rulesInjector,
|
||||
│ │ tasksTodowriteDisabler, writeExistingFileGuard, bashFileReadGuard,
|
||||
│ │ readImageResizer, todoDescriptionOverride, webfetchRedirectGuard,
|
||||
│ │ hashlineReadEnhancer, jsonErrorRecovery
|
||||
│ └─ createTransformHooks() # 5: claudeCodeHooks, keywordDetector, contextInjectorMessagesTransform,
|
||||
│ thinkingBlockValidator, toolPairValidator
|
||||
│ ├─ createSessionHooks() # 24: contextWindowMonitor, preemptiveCompaction, sessionRecovery,
|
||||
│ │ sessionNotification, thinkMode, modelFallback,
|
||||
│ │ anthropicContextWindowLimitRecovery, autoUpdateChecker,
|
||||
│ │ agentUsageReminder, nonInteractiveEnv, interactiveBashSession,
|
||||
│ │ ralphLoop, editErrorRecovery, delegateTaskRetry, startWork,
|
||||
│ │ prometheusMdOnly, sisyphusJuniorNotepad, noSisyphusGpt,
|
||||
│ │ noHephaestusNonGpt, questionLabelTruncator, taskResumeInfo,
|
||||
│ │ anthropicEffort, runtimeFallback, legacyPluginToast
|
||||
│ ├─ createToolGuardHooks() # 14 [+1 with team-mode]: commentChecker, toolOutputTruncator,
|
||||
│ │ directoryAgentsInjector, directoryReadmeInjector,
|
||||
│ │ emptyTaskResponseDetector, rulesInjector, tasksTodowriteDisabler,
|
||||
│ │ writeExistingFileGuard, bashFileReadGuard, hashlineReadEnhancer,
|
||||
│ │ jsonErrorRecovery, readImageResizer, todoDescriptionOverride,
|
||||
│ │ webfetchRedirectGuard [+ teamToolGating]
|
||||
│ └─ createTransformHooks() # 5 [+2 with team-mode]: claudeCodeHooks, keywordDetector,
|
||||
│ contextInjectorMessagesTransform, thinkingBlockValidator,
|
||||
│ toolPairValidator [+ teamModeStatusInjector, teamMailboxInjector]
|
||||
├─→ createContinuationHooks() # 7: stopContinuationGuard, compactionContextInjector,
|
||||
│ compactionTodoPreserver, todoContinuationEnforcer (boulder),
|
||||
│ unstableAgentBabysitter, backgroundNotificationHook, atlasHook
|
||||
└─→ createSkillHooks() # 2: categorySkillReminder, autoSlashCommand
|
||||
|
||||
Direct event handlers (src/plugin/event.ts, when team_mode.enabled): +4
|
||||
team-idle-wake-hint, team-lead-orphan-handler,
|
||||
team-member-error-handler, team-member-status-handler
|
||||
```
|
||||
|
||||
Each tier produces an array of `(input, output) => void` handlers; the matching OpenCode handler iterates and calls each in registration order.
|
||||
Total: 52 base, 59 with team-mode. Each tier produces an object whose values are `(input, output) => void` handlers; the matching OpenCode handler invokes them in registration order via `safeHook()` wrappers.
|
||||
|
||||
## SUBSYSTEM INVENTORY
|
||||
|
||||
|
||||
Reference in New Issue
Block a user