dshplugin.devDeepSeek Harness Plugins
DSH Sisyphus Presets plugin logo
DeepSeek Harness Plugin

DSH Sisyphus Presets

0
Published by hnlg-coder

DeepSeek Harness agent presets: Sisyphus orchestrator (6 expert subagent lanes) + Sisyphus Oracle read-only consultant. Ported from oh-my-openagent workflow.

Automationagent-presetai-agentdeepseek-harnessdsh

Get this plugin

Review the source, then continue to the publisher.

Get this plugin
Share on X ↗

About this plugin

Source snapshot 8/15/2026

DSH Sisyphus Presets

DeepSeek Harness agent presets: Sisyphus (orchestrator) and Sisyphus Oracle (read-only consultant), ported from the oh-my-openagent (OMO) Sisyphus workflow.

中文说明

PresetRoleSummary
sisyphusOrchestratorDecomposes work, delegates to six expert subagent lanes in parallel, verifies results, and drives tasks to completion.
sisyphus-oracleRead-only consultantDiagnosis, architecture design, trade-off evaluation, security/perf review. Never edits anything.

This is a derivative work of oh-my-openagent's Sisyphus persona and workflow philosophy, licensed under SUL-1.0 (see LICENSE).


Table of Contents

  • Features
  • Comparison with official presets
  • Comparison with oh-my-openagent (OMO)
  • Installation
  • Deploying & using the presets
  • AI-assisted deployment prompt
  • Prerequisites
  • Model policy
  • Sisyphus (orchestrator)
  • Sisyphus Oracle (read-only consultant)
  • Verification
  • FAQ
  • License

Features

Sisyphus — orchestrator with six expert delegation lanes

  • Intent gate: classifies every request (explain / implement / investigate / evaluate / fix / refactor) before acting; never implements for a question.
  • Three modes: Orchestrate (default), Advise (questions), Execute (trivial single-file work).
  • Six read-only, continuable subagent lanes (background-capable, send_message continuation):
LanePurposeToolFilter highlights
subagent_exploreInternal codebase search ("contextual grep")read/glob/grep/lsp/session_*
subagent_oracleHigh-IQ consultation for hard problems+ get_goal/job_list/job_output
subagent_visionImage understanding (multimodal)read_image/read/glob/grep
subagent_librarianExternal reference search (docs/OSS)web_search/read/glob/grep
subagent_metisPre-planning analysis: hidden intentions, ambiguities, AI failure pointsread/glob/grep/lsp/session_*
subagent_momusAdversarial plan review (PASS / PASS-WITH-FIXES / FAIL)read/glob/grep/lsp/session_*
  • Planning loop: METIS → plan → MOMUS → revise → user approval (skipped for small tasks).
  • Parallel execution discipline: fires 2–5 background subagents for multi-angle work; never duplicates delegated searches.
  • Validation loop: grounding, lsp diagnostics, tests, build, manual QA, independent verification of delegated work.
  • Hard invariants: no type-error suppression, no empty catch blocks, no destructive git, no fake citations/verification.
  • Category routing: workflow + team-orchestration skill's category-router.js template routes units to different models at runtime by task domain (visual → multimodal, hard logic → heavy model, trivial → cheap model).

Sisyphus Oracle — read-only consultant

  • Read-only enforced at three layers:
    1. restrict.js plugin — listens on agent/created, applies tools.restrict({allow: [...]}) on the agent's own scope, masking every inherited global tool (MCP github/playwright/blender, write/edit, bash/pwsh, schedule, goals, jobs).
    2. Persona hard constraints (never edit, never run side-effect commands).
    3. Host approval policy (ask).
  • Tools kept: read, read_image, glob, grep, lsp, web_search, ask_user_question (+ harmless agent-scoped schedule_*).
  • Model: follows the user's current session model (see Model policy).

Comparison with official presets

DSH ships four official presets. Here is how sisyphus / sisyphus-oracle relate to them:

Capabilitystandardcodecordisminimalsisyphussisyphus-oracle
Personashortshortlong (two-plane)fixed (complete: true)~500-line orchestrator protocolread-only consultant
bash / pwshpersistent PTY✅ (masked by restrict.js)
fs read/writefs-localread-only (restrict.js)
str_replace_editor
background jobs
goal
plan mode
compaction
skills✅ + authoring skill
subagent delegation✅ + 6 role lanes
workflow / ralph
run_code (Code Mode)✅ (mode: both)
tool-cordis (self-modify)
lsp
session recall
role lanes (explore/oracle/vision/librarian/metis/momus)
registry-level read-only enforcement✅ (restrict.js)
per-lane model config (lane-models.js)n/a

How to choose:

  • standard — clean baseline for everyday coding.
  • code — same as standard, but batch multi-step work through run_code.
  • cordis — when you want the agent to author/modify DSH presets itself (self-referential toolset + authoring skill).
  • minimal — fixed prompt, two persistent tools, maximum determinism, no agent machinery.
  • sisyphus — when you want orchestration: intent gating, six expert lanes, METIS→plan→MOMUS loop, parallel delegation, category routing. Superset of standard's tools plus LSP/session-recall/run_code/cordis.
  • sisyphus-oracle — when you want consultation with a hard guarantee of zero side effects (registry-level tool masking).

Comparison with oh-my-openagent (OMO)

sisyphus is a port of OMO's Sisyphus workflow to the DSH platform. It shares the orchestration philosophy but differs in mechanisms:

Aspectoh-my-openagent (opencode plugin)DSH SisyphusNotes
Agent constructiondynamic (createSisyphusAgent(model, availableAgents, tools, skills, categories) — prompt varies by model family and injects live environment)static persona (hand-written, model-agnostic)DSH presets are declarative files; no runtime prompt generation
Delegation APItask() + category (8 categories) + subagent_type (explore/librarian/oracle/metis/momus)subagent tool + 6 fixed lanes (explore/oracle/vision/librarian/metis/momus)same role set, different carrier
Dynamic category routingnative category parameter selects model at call timeworkflow script agent(prompt, {provider, model}) — runtime override, category-router.js templateDSH equivalent implemented via workflow engine
Metis / Momuspre-planning consultant + plan critic (expensive models)✅ ported as subagent_metis / subagent_momus lanesplanning loop: METIS → plan → MOMUS
Librarianexternal reference agent (GitHub/Context7/Web)✅ ported as subagent_librarian lane (web_search)
Visionmultimodal-lookersubagent_vision lane
Skill injectiondynamic availableSkills injected into personastatic skill references + tool-skillpersona lists skill usage rules, not a live catalog
Session continuitycontinuation session idsend_message on durable subagent idequivalent
Parallel background explorationrun_in_background + background_outputbackgroundMode: continuable + completion noticeequivalent
Workflow engineno native equivalent (hyperplan = skill simulation)native workflow tool (JS orchestration scripts)DSH advantage
Ralph loopno native equivalentnative ralph tool (self-referential loop)DSH advantage
Self-modificationnonetool-cordis (inspect/define/run/stop/undefine live runtime)DSH advantage
Code Modenonerun_code (TypeScript SDK batch execution)DSH advantage
Read-only guaranteepersona-onlyregistry-level (restrict.js masks tools from the catalog)DSH advantage for sisyphus-oracle
LicenseSUL-1.0SUL-1.0 (derivative)see LICENSE

What OMO has that DSH Sisyphus does not:

  • Dynamic prompt generation per model family (OMO bakes different prompt bodies for kimi/gpt/claude families).
  • Live environment injection (persona literally lists the session's real available agents/tools/skills).
  • Native category parameter on task() (DSH needs a workflow script for the equivalent).

What DSH Sisyphus has that OMO does not:

  • Native workflow engine, ralph loop, run_code, tool-cordis self-modification.
  • Registry-level read-only enforcement (restrict.js).
  • Declarative preset files that install by copying a directory (no build step).

1. Install the presets

Copy each preset directory into your DSH user preset root ($DSH_HOME/.agent-presets/):

# from this repository
Copy-Item .\sisyphus        <DSH_HOME>\.agent-presets\sisyphus        -Recurse
Copy-Item .\sisyphus-oracle <DSH_HOME>\.agent-presets\sisyphus-oracle -Recurse

The presets appear in the web UI's preset picker under the names "Sisyphus" and "Sisyphus Oracle".

2. Install the team-orchestration skill (recommended)

sisyphus's persona references the team-orchestration skill for workflow templates (hyperplan, security research, parallel exploration, category routing):

Copy-Item .\skills\team-orchestration <DSH_HOME>\skills\team-orchestration -Recurse

3. Restart DSH

Stop and start your harness instance (however you normally restart DSH — the launcher command, a service manager, or the web UI's restart action). A fresh session will pick up the new presets.


Deploying & using the presets

Where the files must live

FileMust be at
sisyphus/ (whole directory)<DSH_HOME>\.agent-presets\sisyphus\
sisyphus-oracle/ (whole directory)<DSH_HOME>\.agent-presets\sisyphus-oracle\
skills/team-orchestration/ (whole directory)<DSH_HOME>\skills\team-orchestration\

DSH_HOME is the harness home directory (the launcher sets it; on this repo's reference machine it is D:\DeepSeek Harness\home). Keep the whole directory, not just the files inside — the preset directory carries its own lane-models.js and restrict.js siblings that the composition references by relative path.

Making a preset the default

To make sisyphus the default preset for all new sessions, set it in settings.yaml:

agent-presets:
  default: sisyphus

The value is read per session creation — no restart needed for this change alone. You can also keep the official default and pick a preset per session instead.

Using the presets

  • Web UI: open the preset picker when creating a new session; choose Sisyphus or Sisyphus Oracle.
  • API: pass "agentPreset": "sisyphus" (or "sisyphus-oracle") in session.create:
$body = '{"type":"client-request","rpcId":"t","method":"session.create","payload":{"workspaceId":"<ws-id>","agentPreset":"sisyphus"}}'
Invoke-WebRequest -Uri "http://127.0.0.1:3080/api/session.create" -Method POST -ContentType "application/json" -Body $body -UseBasicParsing
  • Switching a blank session: a session that has not produced any turns yet can switch presets via agentPreset.select (a session that has run is locked to its preset).
  • Restart note: changing lane-models.js (pinned lane models) or any file inside a preset directory requires a DSH restart — the composition is read at preset mount. settings.yaml changes (default preset, model provider) apply without restart.

Post-deployment checklist

  1. Both presets mount: create a session with each — expect ok: true.
  2. Oracle session shows only read-only tools (see Verification).
  3. Sisyphus session exposes all six lanes (subagent_explore/oracle/vision/librarian/metis/momus) plus workflow, ralph, run_code, cordis_*.
  4. Lane models resolve: ask an oracle subagent to self-report {{model}} — should match your session model (or the lane-models.js pin).

AI-assisted deployment prompt

If you want an AI coding assistant (Claude Code, opencode, Cursor, etc.) to deploy these presets for you, paste the prompt below. It is written to be self-contained: it tells the AI exactly what to copy, where, and how to verify — no further context needed.

Prompt: deploy the presets

Deploy the DSH Sisyphus presets to a DeepSeek Harness installation.

Context:
- The presets are in this repository: the `sisyphus/` and `sisyphus-oracle/`
  directories (each is an agent preset = a directory with agent.cordis.yml
  plus sibling files), and the `skills/team-orchestration/` directory
  (a DSH skill with a SKILL.md and references/).
- DSH_HOME is the harness home directory. On Windows it is typically
  D:\DeepSeek Harness\home; on Linux/macOS it is $HOME/.dsh. Find the real
  one by checking the launcher scripts for the DSH_HOME environment
  variable, or look for the `profiles/` and `sessions/` directories.

Steps:
1. Copy the whole `sisyphus/` directory to <DSH_HOME>\.agent-presets\sisyphus\
   (copy the directory itself, not just its files).
2. Copy the whole `sisyphus-oracle/` directory to
   <DSH_HOME>\.agent-presets\sisyphus-oracle\.
3. Copy the whole `skills/team-orchestration/` directory to
   <DSH_HOME>\skills\team-orchestration\.
4. Restart DSH (stop then start the harness using whatever restart
   procedure this deployment normally uses).

Verification (required, report the results):
- Create a session with agentPreset "sisyphus": expect ok:true and no
  "failed to mount" error.
- Create a session with agentPreset "sisyphus-oracle": expect ok:true.
- In the oracle session, prompt "List every tool name in your catalog" —
  the visible tools must be exactly: read, read_image, glob, grep, lsp,
  web_search, ask_user_question, schedule_create, schedule_delete,
  schedule_list. There must be NO write/edit/pwsh/mcp__* tools.
- In the sisyphus session, verify the six subagent lanes exist:
  subagent_explore, subagent_oracle, subagent_vision, subagent_librarian,
  subagent_metis, subagent_momus.

Constraints:
- Do NOT modify any file inside the preset directories after copying.
- Do NOT create a git repo, do not push anything.
- If a copy target already exists, report it and stop rather than
  overwriting.

Prompt: verify an existing deployment

Verify that the DSH Sisyphus presets are correctly deployed on this
DeepSeek Harness installation.

Check:
1. <DSH_HOME>\.agent-presets\sisyphus\ exists and contains
   agent.cordis.yml + lane-models.js (plus preset.yml).
2. <DSH_HOME>\.agent-presets\sisyphus-oracle\ exists and contains
   agent.cordis.yml + restrict.js (plus preset.yml).
3. <DSH_HOME>\skills\team-orchestration\ exists with SKILL.md and
   references/ (hyperplan.js, security-research.js,
   parallel-exploration.js, category-router.js).
4. The presets mount: call session.create with each preset id and report
   ok:true / any mount errors.
5. sisyphus-oracle tool restriction is active: in an oracle session, ask
   "List every tool name in your catalog" and confirm only read-only tools
   are visible (no write/edit/pwsh/mcp__*).
6. Lane model config is wired: check that sisyphus/agent.cordis.yml lane
   rows reference lane-models.js via agentOptions !!js expressions, and
   that lane-models.js has entries for all six lanes.

Report a pass/fail table for each check with the evidence you found.

Tip: the second prompt is also useful after a DSH upgrade — preset compositions and restrict.js live in the harness home, so an upgrade that rewrites the app directory does not touch them, but re-verifying is cheap.


Prerequisites

RequirementDetail
DSH version0.1.0-rc.6 (built against; newer rc releases should work)
Host-plane serviceslsp (LSP), session-query (session recall), schedule, tool-web (web_search) must be mounted in your host composition (cordis.patch.yml). These are standard in the shipped web profile.
Plugin versionsProfile plugins must match the app's main package version — see DSH's own AGENTS.md §1 for the latest-tag pitfall.
Model providerAny provider configured in settings.yamlllm-pi-ai.providers (see Model policy below).

Model policy

Both presets do NOT pin a model. All subagent lanes and the Oracle preset inherit the parent agent's model route, snapshotted at session/agent creation — the model selected when the session started (defaulting to your deployment default). This keeps the presets portable across deployments: no provider or model names are hardcoded, so they work on any DSH installation regardless of which LLM providers are configured.

⚠️ Switching the session model mid-flight does NOT re-route subagents. Subagents inherit parent.options.model at delegation time (verified: after session.selectModel to a heavier model, the parent's own requests switch but already-delegated lanes keep the creation-time model). The Oracle preset's top-level agent does follow a session switch (its requests resolve the current session model); its subagent lanes do not.

Lane model resolution priority

1. lane-models.js pinned { provider, model }   ← explicit per-lane override
2. otherwise: parent agent's model at creation  ← default (session's model when session started)

Customize per-lane models — edit lane-models.js, no YAML editing

Each lane's model is resolved from sisyphus/lane-models.js (a plain JS module that travels with the preset). null = inherit the session model (default); { provider, model } = pin that lane. Edit the file, then restart DSH:

// sisyphus/lane-models.js
module.exports = {
  explore:   null,                                                    // inherit
  oracle:    { provider: 'deepseek-official', model: 'deepseek-v4-pro' },  // pinned example
  vision:    { provider: 'opencode-go', model: 'mimo-v2.5' },         // read_image needs multimodal
  librarian: null,
  metis:     null,
  momus:     null,
};
  • provider must be a key in your settings.yamlllm-pi-ai.providers.
  • The six lanes in agent.cordis.yml read their entry from this file via the loader's !!js + createRequire mechanism — you never edit the YAML structure.
  • Changing a pinned lane requires a DSH restart (config is read at preset mount).

⚠️ Vision lane caveat: read_image only works when the routed model declares image input. If the session model is text-only, either switch the session to an image-capable model or pin subagent_vision via lane-models.js to a multimodal model.

Runtime category routing (workflow)

For multi-domain tasks, the workflow tool's agent(prompt, { provider, model }) supports runtime model overrides. The team-orchestration skill ships references/category-router.js — a template that routes each unit to the model its category deserves:

categorymodel
visual-engineeringmimo-v2.5 (multimodal)
ultrabrain / deepdeepseek-v4-pro (heavy reasoning only)
artistry / writing / quick / unspecified-lowdeepseek-v4-flash
unspecified-high / unset / inheritcurrent session model

Sisyphus (orchestrator) — what it does

  • Intent gate — classifies before acting (explain/implement/investigate/evaluate/fix/refactor).
  • Three operating modes — Orchestrate (default), Advise (questions), Execute (trivial single-file work).
  • Six expert delegation lanes — all read-only, all continuable (background-capable, durable subagent id, send_message to continue, completion notice on settle).
  • Planning loop — METIS → plan → MOMUS → revise → user approval (skipped for small tasks).
  • Parallel execution discipline — fires 2–5 background subagents for multi-angle work; never duplicates delegated searches.
  • Validation loop — grounding, lsp diagnostics, tests, build, manual QA, independent verification of delegated work.
  • Hard invariants — no type-error suppression, no empty catch blocks, no destructive git, no fake citations/verification, never deliver while a consulted subagent is still running.

Sisyphus Oracle (read-only consultant) — what it does

  • Read-only enforced at three layers:
    1. restrict.js plugin — listens on agent/created, applies tools.restrict({allow: [...]}) on the agent's own scope, masking every inherited global tool (MCP github/playwright/blender, write/edit, bash/pwsh, schedule, goals, jobs).
    2. Persona hard constraints (never edit, never run side-effect commands).
    3. Host approval policy (ask).
  • Tools kept: read, read_image, glob, grep, lsp, web_search, ask_user_question (+ harmless agent-scoped schedule_*).
  • Model: follows the current session model (switchable at any time).

Verification

# 1) Both presets mount (ok: true)
$body = '{"type":"client-request","rpcId":"t","method":"session.create","payload":{"workspaceId":"<ws-id>","agentPreset":"sisyphus"}}'
Invoke-WebRequest -Uri "http://127.0.0.1:3080/api/session.create" -Method POST -ContentType "application/json" -Body $body -UseBasicParsing
# repeat with agentPreset "sisyphus-oracle"

# 2) Oracle session exposes no mutating tools
#    prompt: "List every tool name in your catalog" → should show only
#    read/read_image/glob/grep/lsp/web_search/ask_user_question/schedule_*

FAQ

Q: Why do subagents keep using the old model after I switch the session model? A: Subagents inherit the parent agent's model route snapshotted at session/agent creation (parent.options.model). Switching the session model only affects the parent's own future requests. To change lane models: open a new session, or edit lane-models.js, or pass {provider, model} in a workflow agent() call.

Q: I use a different LLM provider than the examples. What do I change? A: Nothing, for default (inherit) behavior — lanes follow the session model. If you pin lanes, use your own provider key from settings.yaml → llm-pi-ai.providers.

Q: Does the Oracle preset really never modify anything? A: Yes. restrict.js masks write/edit/bash/pwsh and all MCP tools from the tool catalog at the registry level, plus persona constraints and the host approval policy (ask). Verified end-to-end: a prompt attempting write gets "no such tool exists in my available function set".

Q: Can I add my own lane? A: Yes. Copy any lane block in sisyphus/agent.cordis.yml, give it a unique toolName and id, add a matching entry to lane-models.js, and (optionally) a toolFilter allow-list.

Q: Do I need the team-orchestration skill? A: Only for the workflow templates (hyperplan, security research, parallel exploration, category routing). The six subagent lanes work without it.


License

SUL-1.0 (Sustainable Use License v1.0) — derivative of oh-my-openagent (© YeonGyu-Kim), which is itself licensed under SUL-1.0. See LICENSE for the full terms.

Non-commercial/personal use is free. Commercial use requires separate authorization. Redistribution must retain this notice and the original license terms.