omp-advisor

oh-my-pi's advisor for the DeepSeek Harness (DSH). A second model reads every step the main agent takes and adds notes inline: a quiet aside, a concern, or a hard blocker. It runs on its own context and can use its own model, so it catches what the main agent misses while focused on the task.

How it works

  • When it reviews: after each completed step (the agent's message, tool calls and tool results). It gets a compact digest of the conversation: the task at the head, the latest steps at the tail, and long tool output clipped. The digest also lists the advice it already gave, so it doesn't repeat itself.
  • What it answers: {"verdict": "ok" | "note" | "concern" | "blocker", "message": "…"}. ok is the common case, and nothing is shown.
  • How advice reaches the agent:
    • note / concern is appended to the agent's next request as a system reminder.
    • blocker gets the same reminder, marked stop and address this. If it arrives as the agent tries to end its turn, the advisor steers the agent into one more step to deal with it.
  • Cost to the main loop: reviews run in the background and add no latency, unless you set blocking: true.
  • Subagents: skipped by default (skipSubagents).

Blockers are for real damage or clear wrong turns: destructive commands, secret leaks, pushing broken code, ignoring explicit instructions, going in circles. Concerns cover likely bugs, wrong assumptions, unverified claims, or a much better approach.

Picking the advisor in the composer

The plugin adds an Advisor control to the composer bar, next to the model picker:

  • Off: no reviews.
  • Same model as the agent: the default.
  • Any model from DSH's model picker: the same provider-grouped list. Hover a model that has reasoning efforts to open a side menu and pick its effort; clicking the model uses its default effort. The keyboard works too (→ opens the effort menu, ← goes back, Esc closes).

The trigger shows the current choice, e.g. Claude Haiku · Low or Advisor off. The choice is saved on the host (<profile>/omp-advisor.json, through GET/POST /omp-advisor/settings). It applies from the advisor's next review, with no restart, and it overrides enabled, provider, model and reasoningEffort from the config below. Picking an advisor never changes the agent's own model.

Installation

dsh plugin --profile web add git+https://git.rizzy.dev/DSH-Plugins/omp-advisor.git

Or in the Web UI, go to Settings → Plugins → Install. For development, use link: to a clone. Restart DSH afterwards; new sessions are advised automatically.

Configuration

- id: omp-advisor
  config:
    enabled: true
    provider: ''          # advisor model route; empty = same as the agent
    model: ''             #   e.g. provider: omni, model: claude-haiku-4-5 for a cheap fast reviewer
    reasoningEffort: ''   # optional effort for the advisor model
    minLevel: note        # lowest verdict delivered: note | concern | blocker
    everyNSteps: 1        # review every Nth step
    blocking: false       # true = wait for each review before the next request
    maxDigestChars: 24000
    maxToolResultChars: 1500
    timeoutMs: 60000
    skipSubagents: true

To pause it, disable the plugin in Settings → Plugins → OMP Advisor.

Tests

npm test: verdict parsing, injection, ok-silence, blocker steering, minLevel and duplicate suppression (mocked model).

S
Description
oh-my-pi style advisor for DSH: a second model reviews every agent step and injects notes, concerns or blockers.
Readme
90 KiB
0 Stars 2 Watchers 0 Forks
Languages
JavaScript 100%