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": "…"}.okis 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).