DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Anchored Monitor — DeepSeek Harness 插件(DSH Plugin)
← Plugins

@a9i5k4/dsh-anchored-monitor

Anchored Monitor

DSH 实时思维链锚定监控插件: we/let's/let me 指纹波段检测(spec/mixed/react) + L1温和引导/L2强制重置/L3会话重启分级干预; 左侧栏入口 + 液体毛玻璃浮层 + 变阻器式思考强度条; 独立监控进程 + JSONL 实验日志 + 离线回放/参数校准; 变阻器条可选严肃/「滑动变祖器」梗双皮肤。

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

npx -y @deepseek-ai/dsh plugin --profile web add @a9i5k4/dsh-anchored-monitor@0.3.1
README兼容性版本
dashboard

兼容性与来源证明

Anchored Monitor 以 @a9i5k4/dsh-anchored-monitor 发布,当前版本为 0.3.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.3.1stable
2026/9/5
0.3.0stable
2026/8/19
0.2.9stable
2026/8/18
查看其余 9 个版本收起版本
0.2.7stable
2026/8/18
0.2.6stable
2026/8/18
0.2.5stable
2026/8/18
0.2.4stable
2026/8/18
0.2.3stable
2026/8/18
0.2.2stable
2026/8/17
0.2.1stable
2026/8/17
0.2.0stable
2026/8/17
0.1.0stable
2026/8/17

相关插件

正在加载相关插件…

最新版
0.3.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
655.5 kB
文件数
58
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
122
安全扫描
✓ v0.3.1 扫描通过
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-anchored-monitor

English | 简体中文

In one sentence (一句话说清): it's a whip for DeepSeek V4 Pro. When the model falls from the focused, high-capability mode ("We need…" / "I will…") into the scattered, low-focus mode ("let me…"), the whip cracks — and pulls it back. 这是给 DeepSeek V4 Pro 加的一根鞭子——当它从「We need / I will」的高专注、高能力模式, 跌落到「let me」的发散、低专注、低效率模式时,就抽它一鞭,让它改回去。

Real-time chain-of-thought anchoring monitor & intervention for DeepSeek Harness. Watch the we / let's / let me fingerprint of every reasoning block, stay in the spec band, and pull the model back automatically when the trajectory drifts.

dashboard


What it is, in one line

Don't touch a thing and it's simply a live gauge of how hard your model is thinking right now. Thinking intensity, three-band state and the ECG-style curve, tucked into the corner of your screen — a real-time visualization of your model's thinking efficiency / capability intensity.

  • Visualization first (default — no intervention until you want it): a real-time thinking-efficiency / capability-intensity gauge.
  • Intervention when you need the whip: only cracks when the trajectory drifts into the scattered "let me" band — and it auto-continues the task.
  • 「滑动变祖器」meme skin: flip the gauge into a Liang-o-meter that live-queries DeepSeek V4 Pro's "梁系强度" (from focused-humble to emperor-slacking) while it runs.

Open the settings page and you can tune every parameter — and one-click Reset to defaults if you ever change too much.

Which mode does it pair with?

You don't need to force-install dsh-anchored-standard.

The monitor never checks a preset's name. It reads every session's reasoning blocks (~/.dsh/sessions/*/events.jsonl) and scores them purely by the we / let's / let me fingerprint (spec band < 0.2, mixed 0.2–0.5, react ≥ 0.5). So any preset that implements the anchored-standard discipline — anchor the first turn with the Minimal persona (46-character persona + bash/str_replace_editor), then plan in a collective "we" style without "let me" — pairs with this plugin. Renamed / derivative presets work too: 梁神模式 (Liang-god Mode), liangshen, and any other preset built on the same anchoring idea. The L2 reset payload is fully self-contained (the Minimal 46-character persona + the dual tools ship in this plugin's own config), so nothing is imported from another repo at runtime.

⚠️ One caveat: if the session was never anchored in the first place, it stays in the react band and L2 keeps firing — that's a fight loop, not monitoring. Keep interventions OFF (monitor-only) unless you're on the model this whip was tuned for.

When to turn interventions on / off — the whip is tuned for DeepSeek V4 Pro 0813:

  • ✅ DeepSeek V4 Pro 0813 → interventions ON (recommended).
  • ❌ Any other model → interventions OFF (monitor-only) — keep it as a pure live gauge.

This exact advice is shown right inside the plugin's panels:

ℹ Tip: keep interventions on only for DeepSeek V4 Pro 0813; turn them off (monitor-only) for other models.

Why this exists

DeepSeek V4 Pro conditions heavily on what the first request shows it. The community measured the consequence: the official Minimal preset (46-character persona + bash/str_replace_editor) anchors a collective "we" trajectory and scores 99/96 on Project2, while the full Standard preset anchors an actor-style "let me" trajectory and scores 91. Behavior is path-committed: once anchored, expanding the tool catalog perturbs at most one reasoning block — the mode never flips back on its own.

Anchored presets (dsh-anchored-standard) solve the bootstrap. This plugin solves what happens after anchoring: external factors (imperative hints, oversized injected context) can drag the trajectory out of the spec band, and nothing detects or repairs that drift — until now.

What it does

  • Live fingerprinting — every reasoning block is scored for the spec trajectory markers (we, let's, we'll, we need, …) versus the react marker (let me), over a sliding window.
  • Three-band model — exactly the quantization measured by dsh-router-standard: persona_ratio < 0.2 → spec, 0.2–0.5 → mixed (the unstable transition band), ≥ 0.5 → react.
  • Tiered intervention — automatic, cooldown-gated, with hysteresis recovery:
LevelTriggerAction
L1 hintentering the mixed bandinjects a suggestive hint (never imperative — commands flip we→let me)
L2 resetentering the react bandnext request gets the 46-char Minimal persona + bash/str_replace_editor only; monitor window/baseline reset
L3 restartL2 retries exhaustedrecommends restarting the session
  • Liquid-glass Web UI — a sidebar entry opens a frosted-glass panel floating above the conversation (drag / resize / remembered). Collapsed, it becomes a rheostat-style bar showing thinking intensity as a slider position plus a rolling log ticker. DeepSeek white/gray/blue palette; dark mode uses neutral grays matching the shell. The bar is a fixed-width rounded rectangle (320px, viewport-adaptive) — no size jumping. zh/en language toggle in the panel header and settings.
  • Two skins — the default Serious rheostat bar, or the Meme skin ("滑动变祖器 / Liang-o-meter"): a 52px speech-bubble floats above the intensity knob and slides with it, flipping through Liang Wenfeng faces — from focused (humble) to slacking (emperor) — as thinking intensity rises, pulsing with the band color. The face images are embedded in the client bundle (base64) so they always load. Switch in the settings page (saved locally). Face assets from Lichtspektrum/liang-intensity-calibrator (MIT).
  • Zero-setup auto-start — the host plugin spawns the monitor process when DSH starts (15s watchdog keeps it alive). No manual steps.
  • Live streaming ECG — the host subscribes to llm/stream and pushes reasoning-delta chunks (1s throttle), so the charts and the bar move while the model thinks — not just after each turn. Counts are additive, so window aggregates stay exact.
  • CoT leak / stall guards (0.2.9) — the monitor also receives the visible text channel (text-delta → /api/push-text), so it can flag the two degradations the reasoning fingerprint alone can't see: text_leak (thinking-style prose leaking into the visible body — high text volume AND a high let me/(we+let me) ratio) and streaming_stall (reasoning goes quiet while text keeps flowing). Alert-only, never auto-intervenes; per-session cot counters + guard_triggered events show up in the panel / dashboard.
  • Intervention master switch — a toggle in the panel header turns interventions on/off at runtime (persisted across restarts); off = monitor-only, no interruptions. The panel shows a hint: keep interventions on only when using DeepSeek V4 Pro 0813; turn them off for other models.
  • Full settings page — every parameter (window, lexicon, scoring weights, band boundaries, thresholds, cooldowns, hint templates, bootstrap pair, log rotation) is editable in the DSH settings page with explanations and a floating save bar; saving restarts the monitor to apply changes. Charts only draw threshold lines for trigger rules.

Requirements

  • Node.js ≥ 22.19
  • DeepSeek Harness 0.1.0-rc.5+ (for the web plugin & preset)

Install

# 1) install the web plugin into your web profile (dsh CLI = pnpm forwarder)
dsh plugin --profile web add @a9i5k4/dsh-anchored-monitor

# 2) start the monitor process (default profile = production-safe `default`;
#    `demo` is only for the accelerated L1→L2→L3 demo)
npx anchored-monitor

# 3) restart DeepSeek Harness (host bundle) and refresh the web GUI

You should now see 锚定监控 / Anchored Monitor in the left sidebar footer. Click it to open the glass panel; click the floating bar to expand/collapse.

To change the monitor address: edit ~/.dsh/anchored-monitor.json or POST /api/anchored-monitor/config with { "monitorUrl": "http://127.0.0.1:9301" }.

Quick demo

git clone https://github.com/Aik358/dsh-anchored-monitor.git
cd dsh-anchored-monitor
npm install && npm run build

npm run demo:generate                # 300 synthetic reasoning blocks
npm run dev -- --profile demo        # monitor + dashboard on :9301
npm run demo:feed                    # live-feed the blocks (watch L1→L2 cascade)

Agent-side preset (optional)

Copy preset/ into ~/.dsh/.agent-presets/anchored-monitor to let the harness agent push its own reasoning blocks to the monitor and execute the L1/L2/L3 interventions inside the agent loop (pair it with an anchoring preset such as dsh-anchored-standard for the first-round anchor).

API

The monitor process exposes (default http://127.0.0.1:9301):

MethodPathDescription
GET/api/overviewsessions + selected snapshot + tail events in one call
GET/api/sessionssession summaries
GET/api/sessions/:idfull snapshot (history / interventions / baseline)
GET/api/events?sessionId=&limit=tail of the experiment JSONL
POST/api/pushpush a reasoning block {sessionId, text, sequence?, timestamp?}
POST/api/push-textpush a visible text chunk {sessionId, text, sequence?, timestamp?} (CoT guards)
POST/api/sessions/:id/ackacknowledge an intervention
POST/api/sessions/:id/resettrigger a manual L2 reset
GET/api/streamSSE event stream

The web plugin proxies these through /api/anchored-monitor/* (loopback-only).

Scripts

CommandDescription
npm run demo:generategenerate a synthetic session JSONL (labelled, for calibration)
npm run demo:feedlive-feed blocks into a running monitor
npm run replay -- --file x.jsonloffline replay with a summary report
npm run calibrate -- --file x.jsonlgrid-search window/weights/thresholds
npm run preview:buildsnapshot the dashboard into a standalone HTML

Configuration

See docs/experiment-params.md for the full parameter reference. Everything is YAML — no hardcoded tuning.

FAQ

What happens after an intervention — does the conversation stop? No. Every intervention auto-continues the task: L1 injects a hint and the next turn keeps going; L2 stops the running turn (soft restart) and immediately re-enters context — the next request continues the task under the Minimal persona + bootstrap pair; L3 does the same and adds restart advice.

Why did the chart feel slow / frozen? Before 0.2.0, data only arrived once per finished turn. The host now streams reasoning-delta chunks to the monitor every ~1s, so the curve moves while the model thinks.

How do I disable interventions? Use the panel-header switch (persisted), or set intervention.enabled: false in the settings — monitoring continues, interventions stop.

Does L2 truncate the model's context? No. L2 replaces only the next request's persona section with the 46-char Minimal sentence and narrows the visible tool catalog to the bootstrap pair. All conversation history is preserved; the monitor only resets its own fingerprint statistics (invisible to the model). The plan-mode and all other sections are kept, because dropping them causes re-exploration amnesia (measured by dsh-router-standard).

Why is the transition band treated as a warning? The mixed band (0.2–0.5) is the training-distribution gap: measured scores are lower than either stable band. Entering it triggers the L1 hint; entering the react band escalates.

Is it safe to run? The monitor is read-only with respect to the model: it consumes reasoning text and sends intervention signals. All HTTP routes are loopback-only. Reasoning text may be sensitive — the experiment log is local by default; rotate/disable it in experiment_log.

Plugin author notes (read before extending)

Streaming waterfall rule — llm/stream is a stream-passthrough waterfall: listeners earlier in the chain iterate the return value of the listeners after them. Therefore:

  1. Producer side: an llm/stream listener MUST be a plain function that returns an async generator. Never declare it async — the generator gets wrapped in a Promise and upstream for await consumers crash with next(...) is not a function or its return value is not async iterable.
  2. Consumer side: always for await (const chunk of await next()) — await first, then iterate; safe regardless of what downstream returns.
  3. agent/pre-step / system-prompt/assemble are value-passing events; async + await next() is correct there.

A violation took down every model request with zero logged events — if all sessions suddenly fail after a bundle reorder or a new plugin, audit the llm/stream chain first.

Single-intervention-executor rule — L1/L2/L3 must have exactly one executor. The Web plugin (host half) owns interventions and is the default; the agent preset (preset/) ships with handleInterventions: false and only pushes reasoning. Enabling both would double-register agent/pre-step / system-prompt/assemble and fire L2 resets twice.

Credits

Built on the measured results of these community projects (shallow-cloned in ../references for audit):

  • xiaobright/dsh-anchored-standard — two-phase anchor preset (bootstrap pair, promotion gate, post-promotion resident set)
  • ruler770525/dsh-anchored-flash — fingerprint counting (we/let's/let me) and the E1/E1.5 hint-wording experiments
  • yjh051108/dsh-router-standard — dual-attractor paper and the three-band quantization (bandOf)
  • KDB-Wind/dsh-minimal-anchored — minimal-tool anchoring alternative
  • Lichtspektrum/liang-intensity-calibrator — the meme face frames (MIT) powering the 「滑动变祖器」skin
  • deepseek-ai/deepseek-harness — the host framework this plugin extends

License

MIT © 2026 Aik358

enabled
  • In-loop interventions with auto-continue — the host observes every session's reasoning, executes L1/L2/L3 automatically, and then continues the task instead of stopping: L1 injects a suggestive context hint (never imperative); L2 cancels the running turn and soft-restarts the conversation (the next request runs under the 46-char Minimal persona + bash/str_replace_editor); L3 applies the same soft restart plus restart advice.
  • Experiment-first — every lexicon entry, weight, threshold, window, band boundary and cooldown lives in YAML (config/*.yaml, validated against config/schema.json). JSONL experiment logs, offline replay and grid-search calibration scripts included.
  • Decoupled — the monitor is an independent Node process; it never touches the model's context or compute.