DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-agents-notch

i

dsh-agents-notch

Discovered★ 3

An always-on-top notch for DeepSeek Harness that shows which sessions are working, which need you, and which are done. Windows.

Agents Notch: a dark notch hanging from the top of the screen, unfolded into a board that shows one bot per DeepSeek Harness session — one of them wearing an amber ring because it needs you

An always-on-top notch for DeepSeek Harness that answers one question: which of my sessions needs me right now?

npm DSH plugin Windows 10/11 license MIT

Install · What it shows · Configure · Limits · Develop · 中文


The folded notch with three working bots; one turns amber and the tab says 'needs you'; the board unfolds on it; it goes back to work, finishes with a ^^ face and a green ring, and the board folds away

Recorded from the window itself (--record), frame by frame — not a mock-up.


Why

If you run more than a couple of sessions, finding out whether anything is waiting on you costs a context switch every time:

what you do todaywhat it costs
alt-tab between windows and read each sidebarthe thing you were doing, every time
wait for a desktop notificationone per session, and none of them say which one is blocked
leave the sidebar visibleit is only visible when the app is in front — which is when you do not need it

The notch is 220×30 px of always-on-top that never takes focus, hides under a full-screen app, and shows the one thing the sidebar cannot while you are in another window: a session stuck on you. Hover it and the board unfolds — who is working, who is waiting on you, who failed, who finished and you have not looked yet. Double-click the tab or a row and DeepSeek Harness comes to the front.

What it shows

Four cards, one per state of the folded tab: working (no ring), needs you (amber ring), done (green ring and the ^^ face), failed (red ring)

That strip is the whole visual language. Working has no ring, because working is the quiet default. Needs you wears amber, done wears green and the ^^ face, failed wears red. Every session keeps its own colour on the bot's rim, so three sessions read as three sessions rather than three copies of one.

The big bot in each state: working with open eyes, needs you with wide eyes and an amber ring, done with the ^^ squint and a green ring, failed with a tilted frown and a red ring

The big bot on the board wears whichever session changed most recently, so a finish or a question is what you see first. It blinks, follows your pointer with its eyes, widens them when a session asks for you, and squints ^^ when one is done — once, and then it rests. A board that keeps celebrating something that finished an hour ago is noise.

🫥 Never in the way
Topmost, but never takes focus. Clicks pass through everywhere it is not drawn. Hides under a full-screen app.

📏 Honest numbers
No context percentage without a real budget, no "2m ago" without a timestamp, and a grey tab when the host stops answering.

🎛️ A Settings pane of its own
Settings → Agents Notch: size, anchor, display, rows, opacity, motion. A change lands on the next tick — nothing restarts.

📦 One command to install
~30 KB of JavaScript. The window fetches itself from the matching GitHub release, hash-verified.

🧘 Respects reduce-motion
motion: auto follows Windows. With it off you get the settled pose and nothing else.

🖥️ No runtime to install
The window is one self-contained file. No .NET runtime, no prerequisites.

Requirements

  • Windows 10/11, x64. The window is WPF and Win32 (topmost, no-activate, fullscreen detection): there is no macOS or Linux build. package.json declares "os": ["win32"].
  • DeepSeek Harness. Built and verified on 0.2.1-rc.2. The host half reads session/event ({ global: true }), ctx.webServer, ctx.agents and sessionQuery; an older build may lack a field. Nothing is checked before mounting — see Limits.
  • Node ≥ 22 for the plugin. No .NET runtime: the released window is self-contained.
  • Optional: the session-finished plugin, which is what retires a finished row (What earns a row).

Install

dsh plugin --profile web add dsh-agents-notch

Running the harness under another profile? Put its name in place of web.

The plugin is ~30 KB. The first time it runs, it downloads its window (one 65 MB file, no .NET runtime needed) from this repo's GitHub release and checks it against the published SHA-256. A few seconds later the notch is at the top of your screen.

No notch? Look at the last line of $DSH_HOME\state\agents-notch\host-report.jsonl: it says where the host looked for the window, whether the download worked, and the command that fixes it.

Configure

The notch has a pane of its own: Settings → Agents Notch. Size, anchor, display, rows, opacity, motion and the three text switches live there, and a change lands on the notch immediately — the window re-reads its state on the next tick, so nothing restarts.

Three layers decide a value, each beating the one above it:

  1. the built-in defaults;
  2. the plugin row's config: — the file you edit, which nothing overwrites;
  3. $DSH_HOME/state/agents-notch/settings.json, written by the pane, one click at a time.

Both doors are clamped by the same rules, so a slider and a YAML line behave identically. Reset in the pane clears the third layer and the row decides again. The pane keeps its own file because a browser cannot safely rewrite YAML that other sessions also edit.

Every key, and how to set it in YAML

Defaults live in the package's own cordis.patch.yml. To change one, put a row with the same id in your profile's patch layer ($DSH_HOME/profiles/<profile>/cordis.patch.yml) — a row without insert: is an override of a row that already exists:

- id: agents-notch
  config:
    contextBudget: 1000000     # your route's context window, in tokens
    anchor: top-right
    scale: 1.25
keydefaultmeaning
spawnWindowtruefalse runs the host without a window — useful for tests
pollMs340how often the state file is rebuilt
maxRows63–10, how many sessions the board may show
contextBudgetnullyour route's context window in tokens; null = unknown (see below)
contextHotAt0.5the fraction where the bar turns amber — the route's compaction trigger
anchortop-centertop-center · top-left · top-right
screenprimaryprimary · cursor · 1 · 2 … (as Windows numbers them)
scale10.75–2
hideFullscreentruehide under a full-screen app
opacity10.35–1, how much of the desktop the notch sits in front of
motionautoauto follows Windows' reduce-motion setting; on forces the animation, off draws the settled pose and nothing else
showProjecttruethe project name in the sub line (the colour chips at right stay)
showDonetruefalse keeps finished sessions off the board entirely (and out of the count)
finishedFallbackMs900000how long a settled row survives when session-finished is absent
stateDir$DSH_HOME/state/agents-notchwhere the state file, the log and the window live
exePath—force one window binary
autoDownloadtruefetch the window from the release when it is missing
downloadUrl—fetch from a mirror instead of the release

Honest numbers

contextBudget is not guessed. The context window belongs to the model route, and nothing in the session feed carries it, so this plugin defaults it to null — and with null you get a token count and no percentage, no bar and no amber. A percentage against an invented denominator is a lie that looks like information, which is worse than a number with units.

The same board with no budget: a token count under the bot and no bar

Set it to your route's real window (this build's DeepSeek V4 routes: 1000000) and the bar appears.

What earns a row

A session is on the board because something happened to it: it is working, it is blocked on an approval or a question, it failed, or it finished and you have not closed it out. Merely being open never earns a row, however many sessions are attached.

Finished and failed rows do not expire on a timer. They leave when the harness's own close-out verdict says so — the ✓ that the session-finished plugin puts in the sidebar, read over that plugin's HTTP route. If it is not installed, this one notices after three failed probes and retires settled rows after 15 minutes instead, and says so in the tooltip.

When the host stops answering, the board stops pretending — the tab goes grey and the sub line dates the last heartbeat instead of repeating a summary nobody is updating:

Host offline: the tab is grey and the board says when it last heard from the host

Limits, stated plainly

  • Windows only, x64. No macOS or Linux build, and no partial one.
  • No DSH version is declared in the manifest, so nothing gates a wrong install. It was built and tested on 0.2.1-rc.2; if a field is missing on your build, the host keeps serving and the log says what failed rather than the tab lying.
  • session-finished is optional but recommended — without it, closed-out sessions linger for the 15-minute fallback.
  • The window is not draggable, by design: it is a fixed surface at the top of the screen, and a draggable one got dragged by accident. Move it with anchor and screen.
  • Two windows cannot coexist — a named mutex makes the second instance exit.
  • The binary is unsigned, so SmartScreen warns the first time you run it.
  • Quitting it from the tray is a one-hour dismissal, not forever: the host brings the notch back, because a status board that can be lost by accident is worse than one that returns.

Uninstall

dsh plugin --profile web remove dsh-agents-notch
Remove-Item -Recurse "$env:DSH_HOME\state\agents-notch"    # state, log, window binary, unpack cache

Develop

npm test                      # 60 tests, node --test, no harness, no window, no network
npm run window:build          # dotnet build desktop/AgentsNotch.csproj -c Release
npm run window:publish        # self-contained single file + SHA256 into dist/win-x64

# a still of the board, from a fixture, without a harness:
desktop/bin/Release/net9.0-windows/AgentsNotch.exe --state desktop/fixtures/working.json --open --shot dist/shots/working.png

The window takes --shot, --record, --open, --freeze, --log, --fps, --no-effects and --probe-rect, and desktop/fixtures/ holds schema-3 state files, so every state can be photographed with no harness running. Every picture in this README is drawn by the window itself: python tools/readme-media.py shots|record|art renders the stills, records the demo frame by frame on the window's own clock, and lays them out.

Installing the window by hand (offline, or a build of your own): autoDownload: false in the plugin row turns the download off, downloadUrl: <url> points it at a mirror, and tools/install-window.ps1 -Url <release asset> or -FromPath dist\win-x64 puts a window where the host looks for one.

  • docs/CONTRACT.md — the interface between the two halves; frozen, and both halves and the tests are written against it.
  • docs/INTERNALS.md — the engineering record: every measurement that decided a shape, and the traps that cost a day each. The most useful file here if you change something.
  • CHANGELOG.md — what changed, per version.
  • docs/PUBLISHING.md — the checklist for cutting a release.

中文

Agents Notch 是一个 DeepSeek Harness 插件:在屏幕顶部挂一个始终置顶的“刘海”,每个会话一个小机器人,一眼就能看出 哪个会话正在等你。

  • 工作中没有光圈(安静的默认状态);需要你是琥珀色光圈;完成是绿色光圈和 ^^ 表情;失败是红色光圈。
  • 鼠标悬停即展开面板:谁在工作、谁在等你审批或回答、谁失败了、谁已完成但你还没看。双击标签或任意一行即可切换到 DeepSeek Harness。
  • 从不抢焦点,全屏应用下自动隐藏;没有真实的上下文预算就不显示百分比,宿主断开时标签变灰并注明最后心跳时间。
  • 设置 → Agents Notch 有独立设置页:大小、位置、显示器、行数、不透明度、动效,修改即时生效。
dsh plugin --profile web add dsh-agents-notch

仅支持 Windows 10/11 x64。插件本体约 30 KB,首次运行时会从对应版本的 GitHub Release 自动下载窗口程序并校验 SHA256,无需安装 .NET 运行时。


MIT — see LICENSE · made for DeepSeek Harness by iArxic

Comments

Loading…

Similar plugins

dsh-progress-overlay

by jtt0001

Windows always-on-top task progress overlay for DeepSeek Harness (DSH): live phase/tool/command, real todo progress, multi-task list, approvals from the overlay.

Manifest valid

★ 0

MIT

C#

Sep 8, 2026

dsh plugin --profile web add dsh-progress-overlay

Mirrors other coding agents' sessions into DeepSeek Harness as continuable tasks, one workspace per application.

Terminal & ClientsSessions & MessagesManifest valid

★ 0

dsh plugin --profile web add @local/agent-sync

by SkuraSshly

DeepSeek Harness (DSH) task completion badge: native Windows taskbar counter (ITaskbarList3) while the window is away, auto-clears on return. Subagent sessions excluded.

Tools & CapabilitiesNotifications & IntegrationsManifest valid

★ 0

MIT

JavaScript

Aug 24, 2026

dsh plugin --profile web add dsh-done-badge

by xchannel1987

Browser notification plugin for DeepSeek Harness - system toasts when a task finishes, a run errors, or your input is needed (question / approval / plan review), click to open the session, per-type to

Workflow & AutomationNotifications & IntegrationsDevelopment & InfrastructureManifest valid

★ 1

↓ 298/wk

MIT

JavaScript

Sep 28, 2026

dsh plugin --profile web add dsh-notify-xc

DeepSeek Harness plugin: show a running / just-finished indicator on sidebar workspace rows

UI & ExperienceTerminal & ClientsManifest valid

★ 0

MIT

TypeScript

dsh plugin --profile web add dsh-workspace-activity

by weibaohui

DeepSeek Harness plugin: cron-driven scheduled items with a full-page management UI. Each item carries a title, a prompt, and a croner expression; executions spawn a fresh agent session in a bound wor

Manifest valid

★ 0

JavaScript

Aug 19, 2026

dsh plugin --profile web add dsh-plugin-scheduled-items