DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Oh My Dsh Slim — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@sstreichan/oh-my-dsh-slim

Oh My Dsh Slim

oh-my-opencode-slim 移植到 DeepSeek Harness — 智能体众神殿、斜杠命令、工具、技能、MCP、多路复用器、访谈、伴侣

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @sstreichan/oh-my-dsh-slim@0.1.18
README兼容性版本

兼容性与来源证明

Oh My Dsh Slim 以 @sstreichan/oh-my-dsh-slim 发布,当前版本为 0.1.18。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.1.18stable
2026/9/3
0.1.17stable
2026/9/3
0.1.16stable
2026/9/2
查看其余 14 个版本收起版本
0.1.15stable
2026/9/2
0.1.14stable
2026/9/2
0.1.13stable
2026/9/2
0.1.12stable
2026/9/2
0.1.11stable
2026/9/2
0.1.10stable
2026/9/1
0.1.9stable
2026/9/1
0.1.8stable
2026/8/27
0.1.7stable
2026/8/27
0.1.6stable
2026/8/27
0.1.5stable
2026/8/26
0.1.4stable
2026/8/26
0.1.3stable
2026/8/25
0.1.2stable
2026/8/25

相关插件

正在加载相关插件…

最新版
0.1.18
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
241.9 kB
文件数
22
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
62
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 agents-orchestration 分类下经过校验的插件。

Headless@deepseek-ai/dsh-headlessdsh one-shot bundle:基于 dsh-base 的直接核心 Agent/Session 运行器,不包含 Host、HTTP 或浏览器层Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序Subagent Claude Code@deepseek-ai/dsh-subagent-claude-code基于官方 Agent SDK 的一次性 Claude Code 子代理提供方

README

@sstreichan/oh-my-dsh-slim

English | 中文

A function-form Cordis plugin that ports the oh-my-opencode-slim agent pantheon — Orchestrator + 7 specialists, slash commands, AST-grep + webfetch + task control tools, 9 bundled skills, context7 + gh_grep MCP fallbacks, multiplexer pane adapters, interview dashboard, and a Rust companion window — to DeepSeek Harness.

What it does

Registers the following on the dsh Context:

  • The pantheon as real agents — the bundle layer restates the base agent-loop row so orchestrator + 7 specialists (explorer, librarian, oracle, designer, fixer, council, councillor) exist as selectable agents in every surface. Each gets a stable sessionId (omo-<name>) and the base default model route. observer is omitted to match disabledAgents: ['observer'].
  • A web agent preset — on boot the plugin seeds an orchestrator agent preset (preset.yml + agent.cordis.yml) into $DSH_HOME/.agent-presets/orchestrator/, where dsh web's agent-presets registry discovers it automatically and lists it in the session picker. Seeding is idempotent and never overwrites an existing preset.
  • Specialist delegation — the bundle layer routes the base subagent tool through the plugin's omo subagent provider (ctx.subagents.registerProvider). When the orchestrator delegates with an @handle (e.g. subagent(description: "@explorer: locate route handlers", ...)), the provider swaps the plain-text persona for that specialist's FULL prompt, applies its tool filter (explorer stays read-only, designer may write, ...), and routes its configured model (agents.explorer.model: 'anthropic/claude-3-5-sonnet' → the child runs on anthropic/claude-3-5-sonnet) before spawning the child via the standard in-process driver. Delegations that name no specialist get a neutral fallback identity.
  • UI-configurable models — when @deepseek-ai/dsh-settings is mounted (for example via @deepseek-ai/dsh-settings-file, which the dsh base bundle mounts by default), the plugin registers an oh-my-dsh-slim settings namespace and a dedicated Settings → Oh My DSH Slim menu with one model dropdown per pantheon agent. Options come from dsh's live host-wide model catalog. Edits persist to $DSH_HOME/settings.yaml, apply live to running agent-loop agents, and take effect for future specialist delegations; the Cordis config remains the base layer (see Settings UI: per-agent model selection).
  • System-prompt sections — omo:orchestrator-rules (the delegation prompt with <Role>, <Agents>, <Workflow>, <Communication>) and omo:agent-catalog (display names + roles for each specialist), contributed through ctx.systemPrompt.section({ name, order, text }). Both are orchestrator-scoped: their text provider inspects the assembly's agent and renders nothing for spawned specialists, their descendants, and specialist agent-loop agents — while the main user session (the omo-orchestrator agent-loop session, a headless fresh session, or a preset-less web session) IS the orchestrator lane and gets the full rules.
  • Tools — 11 model-facing tools via ctx.tools.register(defineTool(...)): ast_grep_search, ast_grep_replace, webfetch, acp_run, task_cancel, task_message, task_result, task_revive, task_status, wait_for_user, preset_switch.
  • Slash commands — /deepwork, /reflect, /loop, /preset via ctx.commands.register({ name, description, handler }). Handlers return { kind: 'success', text } and schedule model-visible work through agent.session.append('user/message', ...).
  • Skills — 9 bundled SKILL.md files (simplify, codemap, clonedeps, deepwork, verification-planning, reflect, worktrees, oh-my-opencode-slim, loop-engineering) registered via ctx.skills.registerProvider() when dsh-skill is mounted, or as ctx.systemPrompt.section() fallbacks otherwise.
  • MCP fallbacks — context7_search and gh_grep_search tools that fetch via HTTP when dsh-mcp-client is not mounted in the profile.
  • Hooks — 7 event listeners via ctx.on(event, listener): cache-monitor (agent/request), json-error-recovery (tools/post-execute), phase-reminder (agent/pre-step), image-routing (agent/pre-step), foreground-fallback (agent/request-error), orchestrator-wake (agent/turn-stopping), post-file-tool-nudge (tools/post-execute + agent/pre-step).
  • Multiplexer pane adapters — tmux, zellij, kitty, herdr, cmux with auto-detection via environment variables.
  • Interview subsystem — per-session HTTP server + optional dashboard with SSE.
  • Rust companion — detached egui desktop window that polls a JSON state file.

Specialist delegation requires the subagent spine (dsh-subagent + dsh-subagent-spawn-in-process + dsh-tool-subagent, all mounted by the base bundle). The plugin layers an omo provider on top: the bundle patch points tool-subagent at it with backgroundMode: one-shot, so every delegation (foreground and background) flows through the provider, which resolves each delegation's specialist @handle to the specialist's full prompt + tool set + model (see Specialist delegation).

Export shape

A function/namespace plugin: it exports name / inject / Config / apply and NO default. A stray export default would collapse the module via the Loader's unwrapExports and drop inject (see docs/postmortem/0001).

inject: ['tools', 'agents', 'systemPrompt', 'llm', 'sessions']. Optional services (subagents, skills, commands) are resolved via ctx.get(name).

Configuration

FieldDefaultMeaning
preset—Active preset name (must exist in presets).
setDefaultAgenttrueAccepted for backwards compatibility but inert — dsh has no per-plugin default-agent knob (the web surface picks its default via the agent-presets row). The pantheon is registered through agent-loop.agents.
autoUpdatetruePeriodic npm registry poll; surfaces a notice when an update is available.
seedWebPresettrueSeed the orchestrator agent preset into $DSH_HOME/.agent-presets/ so it appears in dsh web's picker. Idempotent; set to false to stop seeding (and delete the dir to remove an existing one).
presets—Named sets of per-agent overrides; selected by preset.
agents—Per-agent overrides applied on top of the active preset. model accepts a string or an ordered fallback chain [{id, variant?}].
disabledAgents['observer']Agents to omit from the prompt catalog. orchestrator and councillor are protected. The bundle layer's agent-loop.agents list is what makes an agent exist as a real selectable agent — remove a row there (or in your profile's cordis.patch.yml) to disable it outright.
disabledMcps[]MCPs to skip (context7, gh_grep).
disabledTools[]Tools to skip.
disabledSkills[]Skills to skip.
imageRouting'auto''auto' routes images through @observer; 'direct' never intercepts.
multiplexer

Install

Install the plugin into a profile with one command:

dsh plugin --profile web add @sstreichan/oh-my-dsh-slim

This does three things:

  1. Installs the package via pnpm into $DSH_HOME/profiles/web.
  2. Detects the dsh.bundle declaration and appends it to the profile's bundle stack.
  3. On the next boot, applies the bundle's cordis.patch.yml layer — no manual config editing.

Then run dsh (restart if already running):

dsh web

Use any profile name (e.g. dsh plugin --profile my-profile add ...; dsh web is an alias for dsh --profile web).

Upgrade

dsh plugin --profile web add @sstreichan/oh-my-dsh-slim

Re-running add is idempotent and pulls the latest version. Pin a version with @sstreichan/oh-my-dsh-slim@0.1.0.

Uninstall

dsh plugin --profile web remove @sstreichan/oh-my-dsh-slim

Customizing config

Override the plugin's config in your profile's $DSH_HOME/profiles/web/cordis.patch.yml:

- id: oh-my-dsh-slim
  name: '@sstreichan/oh-my-dsh-slim'
  config:
    preset: openai
    setDefaultAgent: true
    agents:
      explorer:
        model: anthropic/claude-3-5-sonnet
        temperature: 0.1

Restart dsh for the change to take effect (hot-reload picks up cordis.patch.yml edits).

The pantheon agents

The bundle layer registers the orchestrator + specialists as real agents by overriding the base agent-loop row. Each row carries a stable sessionId (so remounts resume the same history) and the base default route (deepseek-official / deepseek-v4-flash). To customize, restate the whole list in your profile's cordis.patch.yml — a patch replaces a row's entire config, so include every agent you want to keep:

- id: agent-loop
  config:
    agents:
      - id: orchestrator
        sessionId: omo-orchestrator
        provider: deepseek-official
        model: deepseek-v4-flash
      - id: explorer
        sessionId: omo-explorer
        provider: deepseek-official
        model: deepseek-v4-flash
      # ...
  • Disable an agent — remove its row from the list.
  • Re-enable observer (disabled by default) — add its row.
  • Pick different models — set provider/model per agent; they must name a route with a registered adapter (the llm-deepseek row is the default).

The web agent preset

dsh web composes every session from an agent preset — that is what its session picker lists. On boot the plugin seeds an orchestrator preset into the harness-home user preset root ($DSH_HOME/.agent-presets/orchestrator/), which the agent-presets registry scans by default, so the orchestrator shows up in the web picker with no manual steps. The preset is minimal on purpose: the orchestrator's delegation rules, specialist catalog, and tools come from the plugin's registrations — the omo prompt sections render only for the orchestrator lane, so a session created from this preset sees the full orchestrator surface while spawned specialists never inherit it.

  • Set it as the web default — the agent-presets settings namespace holds the default ($DSH_HOME/settings.yaml → agent-presets: { default: orchestrator }, or the web UI's settings).
  • Customize it — edit $DSH_HOME/.agent-presets/orchestrator/agent.cordis.yml; the plugin never overwrites it.
  • Remove it — delete the $DSH_HOME/.agent-presets/orchestrator/ directory and set seedWebPreset: false in the plugin's config (otherwise the next boot re-seeds it).

Settings UI: per-agent model selection

When the settings service is mounted, the plugin publishes an oh-my-dsh-slim namespace to dsh's settings system and ships a web client bundle that renders a dedicated Settings → Oh My DSH Slim menu in the dsh web UI. The page lists one model dropdown per pantheon agent (orchestrator, explorer, librarian, oracle, designer, fixer, observer, council, councillor) in pantheon order.

Each dropdown is populated from dsh's live host-wide llm.models catalog and stores the selected value as provider/model (for example anthropic/claude-sonnet-4-5). The catalog refreshes when dsh reports adapter or settings changes. Previously saved values that are temporarily absent from the catalog remain available as a current compatibility option until replaced.

How edits behave:

  • Persistence — saving writes the user layer into $DSH_HOME/settings.yaml under oh-my-dsh-slim: (one flat key per agent). Fields left empty inherit the base layer.
  • Reset — the · marker next to a field label means the value is a user override; clearing the field (and saving) removes the override and restores the configured base value.
  • Live application — saved values are pushed into the running agent-loop agents' option objects, so the next request from that agent uses the new model without restarting dsh or losing session history.
  • Delegation routing — future specialist delegations resolve the model through the same value (UI override first, then agents.<name>.model config).

Precedence for an agent's effective model, highest first:

  1. The settings UI value (oh-my-dsh-slim user layer in $DSH_HOME/settings.yaml).
  2. The Cordis config's agents.<name>.model (plugin config / preset / profile patch).
  3. The base agent-loop row's route (default: deepseek-official / deepseek-v4-flash).

Requirements and notes:

  • The settings provider row (@deepseek-ai/dsh-settings-file, mounted by the dsh base bundle) must be active; without it the plugin logs a debug line and runs without UI settings — models then come from config only.
  • The section schema is flat (one top-level field per agent). That shape is required by the web settings scope, which writes top-level path edits; do not restate it as a nested agents object.
  • Staged edits that do not parse are rejected at save time (the Save button stays disabled) rather than silently dropped; a failed save keeps the drafts so they can be corrected.

Manual profile (no dsh plugin)

If you cannot or prefer not to use dsh plugin, use the standalone profile template at examples/oh-my-dsh-slim-profile/cordis.yml. Mount it in $DSH_HOME/profiles/oh-my-dsh-slim/cordis.yml and run:

npm i -g @sstreichan/oh-my-dsh-slim
dsh --profile oh-my-dsh-slim web

Migrating from a manual insert? If your profile's cordis.patch.yml already inserts an oh-my-dsh-slim row by hand, remove it before running dsh plugin add. Otherwise the bundle layer and your manual insert both contribute the same row id, which crashes dsh on boot with duplicate loader entry id.

MCP servers (context7, gh_grep), drop the sample mounting configs from examples/mcp-context7.cordis.yml and examples/mcp-gh-grep.cordis.yml into your profile. These mount @deepseek-ai/dsh-mcp-client rows that provide the full MCP tool surface. Without them, this plugin registers degraded HTTP-fetch fallback tools.

Composition

The sample profile composes the dsh base (settings, credentials, llm-deepseek, session, agent-loop, tools, system-prompt, sandbox, bash, fs, todo, subagent spine, skill subsystem, commands adapter) plus this plugin:

PluginRole
@deepseek-ai/dsh-session + persistence + projectionEvent-sourced session log with JSONL persistence and SQLite query.
@deepseek-ai/dsh-agent + dsh-agent-loopAgent factory + agent loop.
@deepseek-ai/dsh-tools + dsh-system-promptTool registry + system-prompt assembly.
@deepseek-ai/dsh-subagent + dsh-subagent-spawn-in-process + dsh-tool-subagentSpecialist delegation spine.
@deepseek-ai/dsh-skill + dsh-skill-filesystem + dsh-tool-skillSkill registry + filesystem provider + skill tool.
@deepseek-ai/dsh-commandsSlash command adapter.
@deepseek-ai/dsh-tool-bash + dsh-tool-fs + dsh-tool-todoBash, filesystem, and todo tools.
@deepseek-ai/dsh-sandbox + dsh-sandbox-policy + dsh-approvalSandbox + permission gate.
@sstreichan/oh-my-dsh-slimThis plugin: orchestrator + 7 specialists + tools + commands + skills + hooks + multiplexer + interview + companion.

Model Experience

Orchestrator system prompt

What the model sees

The orchestrator sees a ~3k-token system prompt assembled from omo:orchestrator-rules (the delegation prompt with <Role>, <Agents>, <Workflow>, <Communication>) and omo:agent-catalog (specialist display names + descriptions). Specialist prompts add ~1k token each but are only visible when the orchestrator dispatches via the subagent tool.

Token effect

Fixed cost on every orchestrator turn. Specialist prompts are per-delegation, not per-turn.

KV Cache effect

Prefix-stable while the orchestrator prompt text and per-agent overrides are unchanged. Switching presets, disabling an agent, or hot-reloading a prompt invalidates reuse from the first affected system-prompt token.

Specialist delegation

The orchestrator delegates with the subagent tool (from dsh-tool-subagent), naming the specialist lane with its @handle in the description argument:

subagent(description: "@explorer: locate route handlers", prompt: "...", run_in_background: true)

The plugin's omo provider intercepts the call and:

  1. resolves the @handle (canonical name, display name, or alias — in persona, description, or the prompt) against the configured pantheon;
  2. replaces the persona with the specialist's full prompt (e.g. the read-only @explorer prompt, the write-capable @designer prompt) and applies the specialist's tool filter;
  3. routes the specialist's configured model into the child's agentOptions — agents.<name>.model: 'anthropic/claude-3-5-sonnet' becomes provider: 'anthropic', model: 'claude-3-5-sonnet'; a bare model id ('deepseek-v4-flash') overrides just the model and keeps the parent's provider route;
  4. hands off to the same in-process driver the standard spawn provider uses.

The delegation lane is backgroundMode: one-shot (not the base bundle's continuable), so every delegation flows through the provider, where the harness honors the specialist's persona, tool filter, AND model. One-shot background runs return a job id — collect with job_output, stop with job_kill.

If you switch the lane back to continuable (for durable child conversations and send_message follow-ups), the omo provider is bypassed — but the plugin's registerContinuableSetup contribution then installs the specialist's full prompt + tool filter into each continuable child from its durable descriptor, so only the specialist's MODEL is lost on that lane (continuable children materialize with the tool request's agent options).

The specialist child's own prompt assembly never includes the orchestrator's delegation rules: the omo prompt sections render only for the orchestrator agent. Delegations that name no specialist keep an explicitly configured persona or get a neutral fallback identity. To bypass resolution, point tool-subagent back at provider: spawn in your profile's cordis.patch.yml.

Token effect

Fixed schema cost. Each delegation adds the specialist's full prompt + result to the turn's token budget (a specialist prompt is ~1k tokens; the child keeps it in its own context, not the parent's).

KV Cache effect

Append-only; delegation results follow the reusable request prefix and do not invalidate existing KV-cache entries.

Skill catalog

What the model sees

When dsh-tool-skill is mounted, the model sees the skill tool schema plus a <system-reminder> catalog listing available skills. Without dsh-tool-skill, skills are injected as ctx.systemPrompt.section() entries visible only to the orchestrator.

Token effect

Catalog cost scales with the number of enabled skills (9 by default, minus disabledSkills).

KV Cache effect

Prefix-stable while the skill set is unchanged. Adding or removing a skill invalidates reuse from the catalog section.

Phase reminder and post-file-tool nudge

What the model sees

The agent/pre-step waterfall appends a <system-reminder> to the orchestrator's latest user message: the phase reminder (workflow discipline) and the post-file-tool nudge (todo update reminder).

Token effect

~50 tokens per injection, only on eligible orchestrator turns.

KV Cache effect

These are appended to the user message, not the system prompt, so they do not invalidate the system-prompt KV cache. They may invalidate the user-message cache if the message was previously cached.

Known Limitations and Deferred Work

  • Subagent delegation requires the subagent spine — dsh-subagent + dsh-subagent-spawn-in-process + dsh-tool-subagent (all part of the base bundle) must be mounted; the plugin's omo provider sits on top of them. Without the spine the provider is not registered and the subagent tool does not exist.
  • Specialist resolution is lexical — the omo provider matches @handle mentions (or bare specialist names) in the delegation request; it is not a registry of named personas. Delegations that phrase the specialist differently (e.g. "the frontend engineer") fall back to the neutral identity. The orchestrator prompt teaches the @handle convention to keep matches reliable.
  • Omo-section identity is session-based — the orchestrator-scoped rendering matches the omo-orchestrator agent-loop session id, the orchestrator agent preset, or any root (non-subagent, non-omo--specialist) session. A profile that renames the orchestrator's sessionId (or uses a differently-named orchestrator preset) must update OMO_ORCHESTRATOR_SESSION_ID / the preset match accordingly, or the omo--prefix specialist exclusion and the agent-preset check stop applying.
  • Specialist model format is provider/model — a specialist's agents.<name>.model string is split on the first / into dsh provider/model for delegated children. A bare model id keeps the parent's provider route. The route must name a registered adapter (the base default is deepseek-official / deepseek-v4-flash).
  • Specialist tool filters name the base-bundle surface — the read-only filter's allow list names tools that ship in the base bundle plus this plugin's own (read, glob, grep, ast_grep_search, webfetch, gh_grep_search, context7_search, job_output, job_list, list_agents). tools.restrict() rejects unknown names, so a profile that disables one of those tools (or mounts a minimal bundle without it) must trim the filter, or delegated specialists fail to start. The OpenCode-era names from oh-my-opencode-slim (lsp, list, codesearch, apply_patch, task, ) are gone.
{type:'none',...}
Pane adapter config (auto, tmux, zellij, herdr, kitty, cmux, none).
interview{maxQuestions:2,...}Interview subsystem config.
backgroundJobs{maxSessionsPerAgent:2,...}Background task limits + wake scheduler.
fallback{enabled:true,maxRetries:3}Model fallback on retryable errors.
companion—Rust desktop window config.
question
  • Continuable lane lacks specialist model routing — the default lane is backgroundMode: one-shot, where persona + tool filter + model all resolve through the omo provider. Switching the tool-subagent row back to continuable restores durable child conversations (send_message); the plugin's registerContinuableSetup contribution still installs specialist personas + tool filters on those children (from their descriptor), but their model is fixed by the tool request and inherits the parent's route — the continuation manager has no provider hook for agent options.
  • MCP integration is fallback-only without dsh-mcp-client — context7 and gh_grep are exposed as single HTTP-fetch tools instead of full MCP servers. Mount @deepseek-ai/dsh-mcp-client rows in the profile for the full tool surface.
  • Companion binary must be built separately — the Rust source ships under companion/; run cargo build --release and either install the binary on PATH or set config.companion.binaryPath.
  • No skill sync from GitHub — the skills-lock.json mechanism from oh-my-opencode-slim is not ported; only the 9 bundled skills are available.
  • No ACP permission flow — acp_run spawns the agent but does not implement the full ACP permission negotiation.
  • Webfetch HTML extraction is simplified — the full Readability + Turndown pipeline is not ported; HTML is stripped to text via regex.
  • Multiplexer pane registry is not persisted — tmux pane registry files are not written; child panes target the parent via env vars only.
  • Cache-safety discipline is partial — tagged synthetic parts are not ported; the phase-reminder and post-file-tool-nudge hooks inject plain text blocks.
  • No README.i18n.yaml consistency record — the Chinese mirror exists but the i18n pairing file is not yet generated.