dsh-agents-notch
Windows 屏幕顶部始终置顶的刘海:每个会话一个小机器人,显示哪些在工作、哪些在等你、哪些已完成或失败;不抢焦点,全屏应用下自动隐藏,带独立设置页。
安装
dsh plugin --profile web add dsh-agents-notch
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
<div align="center">
<br>
**An always-on-top notch for DeepSeek Harness
that answers one question: which of my sessions needs me right now?**




[Install](#install) · [What it shows](#what-it-shows) · [Configure](#configure) · [Limits](#limits-stated-plainly) · [Develop](#develop) · [中文](#中文)
<br>
<sub>Recorded from the window itself (<code>--record</code>), frame by frame — not a mock-up.</sub>
</div>
<br>
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 today · what it costs
alt-tab between windows and read each sidebar · the thing you were doing, every time
wait for a desktop notification · one per session, and none of them say which one is blocked
leave the sidebar visible · it is only visible when the app is in front — which is when you do not need it
The notch is a small always-on-top tab 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. When
one gets stuck, the tab grows into an alert that says why, with an Open button that switches the app
to that session — from wherever it is, minimized or in the tray. And it never gets in the way:
pass over it and it fades and lets your click through; rest on it and the board unfolds.
What it shows
<div align="center">
</div>
That strip is the whole visual language. Working wears a slow blue arc and nothing else, because
working is the quiet default — and while any session is running a tool, light runs along the tab's lower
edge. Needs you wears amber, done green, failed 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.
It never gets in the way
<div align="center">
</div>
The tab sits where you reach for tabs and title bars, so it steps aside. A pointer passing over it
turns it into a faint ghost that clicks go straight through — to the browser tab or the menu under it.
Only a pointer that rests there for 1.6 s unfolds the board, and pushing it against the top edge of
the screen opens it at once. All three are settings (hoverMode, holdMs, topEdgeOpens); open
brings back unfold-on-hover.
The tab speaks up
<div align="center">
</div>
When something new happens — a session asks for you, fails, or finishes — the tab grows into an
alert for a few seconds and then folds back. Open takes you straight to that session. Only fresh
events are announced: a question that has been waiting for an hour is on the board, not in your face.
The board
<div align="center">
</div>
Rest the pointer on the tab, or push it against the top of the screen, and the board unfolds. At the top is the session that changed most recently, so a
finish or a question is what you see first: its title, its project and age, how full its context is, and
one line of what it is doing — the tool it is running and the step, the question it is asking in full,
or how it ended. Below it, every other session in one list: what it is doing in a word and how long ago.
More sessions than fit? The list scrolls.
Click a row to put that session on the big bot. Double-click a row, or press Open ↗, and the
app switches to it. A finished or failed row has a ✕ that closes it out — the same as ticking it in
the app.
Sixteen faces
<div align="center">
</div>
The bot's face is the state, read closer. A working bot is focused in a tool and thinking between
tools, determined on a long busy turn and tired aft
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:9,最后更新 2026-10-30