DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-archive-nudge

Archive Nudge

DeepSeek Harness 插件:侧边栏会话标题旁的小归档盒图标会标记值得归档的会话(闲置时间过长,或代理表示工作已完成)。仅提醒,不会替你归档。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-archive-nudge@0.2.1
README兼容性版本

兼容性与来源证明

Archive Nudge 以 dsh-archive-nudge 发布,当前版本为 0.2.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.2.1stable
2026/10/24
0.2.0stable
2026/10/24

相关插件

正在加载相关插件…

最新版
0.2.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
117.3 kB
文件数
18
Surface
web
许可证
MIT
发布源
npm
周下载
42
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Remotedsh-remoteDeepSeek Harness 的远程工作助手:连接 SSH(密码/密钥/代理/键盘交互、多跳 ProxyJump),从 ~/.ssh/config 列出主机,选择远程工作区,使用 21 个 rw_* 工具对其进行操作,支持感知冲突的镜像同步、内嵌 PTY tDeepseek Ipptdeepseek-ipptiPolloWork PPT Studio 及其精选幻灯片模板,作为原生 DeepSeek Harness 对话视图。

README

dsh-archive-nudge

English | 简体中文(README.zh.md,随包附带)

A DeepSeek Harness plugin that puts a tiny archive-box icon next to a session title in the sidebar when that session is probably finished — you can see which conversations are safe to archive without opening any of them.

Reminds only, never archives for you: no popups, no auto-open, no session state touched. Hover the icon for a one-line reason.

Screenshot

The illustration lives in the repository only (docs/screenshot.png, source docs/mockup.html): a grey archive box on an idle session, an amber box on a session the agent marked, and the hover card repeating the reason. It is a mockup — the session titles are made up — not a real screenshot, and it is not part of the npm tarball, so it is not embedded here.

Why

Long session lists rot. You usually know which conversations are dead, but finding them again is scrolling work. The plugin answers one question at a glance: is this one done?

When the icon shows up

SignalConditionLook
Idle too longthe last activity is older than idleHours (default 144 h = 6 days)grey, dimmed; tooltip reads "Idle for 6 days — safe to archive"
The agent says it is donethe agent calls the mark_session_archivable toolamber; the tooltip carries the agent's own one-line reason

Both only render while that row is idle (nothing running, nothing waiting for approval), because that slot is where the status dot normally lives — the two never fight for the same pixels.

Hover the row and the hover card repeats the reasoning: how long it has been idle, the threshold in effect, and — for an agent mark — when it was made and the agent's own words.

Context-size and turn/cost signals are deliberately not implemented: the session list only exposes idle time, title and "is it running"; computing tokens or turns would mean activating every session. The agent can already see its own context usage, so it can call the tool at exactly the right moment.

Configuration

Everything lives in one file:

%DSH_HOME%/archive-nudge/marks.json

(%DSH_HOME% defaults to ~/.dsh.)

{
  "config": { "idleHours": 144, "allowArchiveApi": false },
  "marks": {
    "<sessionId>": { "at": 1792775972791, "reason": "Goal delivered, the rest is a new task" }
  }
}
KeyDefaultMeaning
idleHours144Hours of inactivity before the grey mark appears. 0 marks a session as soon as it goes idle (handy to test the icon). Takes effect within a minute — the sidebar polls once a minute.
allowArchiveApifalseMaster switch for the optional archive endpoints. Accepts true / 1 / "true".
  • 144 pairs with auto-archive plugins that use autoArchiveDays = 7: the grey mark lights up one day earlier, meaning "this one is gone tomorrow". Without such a plugin, 24–48 is a friendlier number.
  • Mark entries older than 30 days are dropped on the next read.
  • Writes are atomic (temp file + rename), so several windows writing at once never produce half a JSON file; a corrupt file is treated as empty instead of crashing the plugin.

Settings page

Settings → Archive nudge edits the same file for you:

  • change idleHours (saved when you leave the field, effective within a minute),
  • list every agent mark with its session, reason and timestamp,
  • clear one mark, or all of them — marks disappear from the sidebar immediately.

The page talks to the two write routes below, so the file stays the single source of truth and hand-editing still works.

Also nearby: %DSH_HOME%/archive-nudge/nudge.log — a small operation log that rotates to nudge.log.1 past 256 KB (one backup, never grows).

Useful lines: boot: host half loaded … (proves which code got loaded), tools available/unavailable, deny loopback …, batch archive ….

Install

# from npm (recommended — the published package)
dsh plugin add --profile <profile> dsh-archive-nudge@0.2.1

# from GitHub (only if you have access to the repository — it is private)
dsh plugin add --profile <profile> github:yuyu13251/dsh-archive-nudge#v0.2.1

Manual install, if the CLI is not usable (for example when the desktop app owns the profile):

  1. unpack the released package (or copy this repository, while developing) into <DSH profile>/node_modules/dsh-archive-nudge — a symlink / junction works too,
  2. add the package to dsh.profile.bundles in the profile's package.json,
  3. restart DSH (a page reload is enough for client-only changes).

Requirements: DSH 0.2.x web UI and Node.js >= 22. The plugin has no runtime dependencies — Node built-ins only.

Uninstall

  1. delete <DSH profile>/node_modules/dsh-archive-nudge,
  2. remove the dsh.profile.bundles entry from the profile's package.json (and the dependencies entry, if you installed it that way),
  3. reload the page or restart DSH,
  4. optionally delete %DSH_HOME%/archive-nudge/ (marks and log).

Privacy

  • Everything stays on your machine:
    • %DSH_HOME%/archive-nudge/marks.json — session ids plus a one-line reason,
    • %DSH_HOME%/archive-nudge/nudge.log — operation log.
  • No telemetry, no outbound requests, no reading of session content. The plugin never opens a session's chat data.
  • Every write endpoint (/config, /marks/clear and the optional archive API) only accepts requests from this machine; the archive API is off by default and answers 403 / 503 otherwise.
  • GET /marks and GET /config are read-only and ungated so a remote Web UI can read them. That means: don't expose the port to the internet. Session ids and the reasons you wrote are not secret, but they are not for public relay either.

HTTP API

For tinkerers and other local tools:

RouteMethodGatePurpose
/dsh-archive-nudge/marksGETnone (read-only){ ok, config, marks }
/dsh-archive-nudge/configGETnone (read-only){ ok, config }
/dsh-archive-nudge/configPOSTloopback{"idleHours": 12} or {"allowArchiveApi": true}
/dsh-archive-nudge/marks/clearPOSTloopback{"sessionIds": ["…"]} or {"all": true}
/dsh-archive-nudge/archivePOSTloopback + allowArchiveApi + workspaceRegistry{"sessionIds": ["…"]}
/dsh-archive-nudge/unarchivePOSTsame three gates{"sessionIds": ["…"]}

The archive endpoints call the host's workspaceRegistry.archiveSession / unarchiveSession, so a session with active work is refused by the host and reported per id — one failure never aborts the batch. On a successful archive, the plugin also drops that session's "ready to archive" mark (marksCleared in the response).

Adding or removing routes needs a DSH restart; changing config values does not.

The tool

mark_session_archivable { reason: string, clear?: boolean }

reason is shown verbatim in the icon's tooltip; clear: true takes the mark back. One mark per session — calling it again replaces the reason.

Compatibility and known limits

  • Built for the DSH 0.2.x web UI; it uses the public slot sidebar.session.row.leading.
  • If the icon disappears after a DSH upgrade, check window.__archiveNudge in the browser console — if that is gone too, the client half did not load, and most likely the slot name changed.
  • The host half only hard-depends on webServer. A missing tools service just means the tool is not registered; a missing workspaceRegistry just means the archive endpoints answer 503. The sidebar nudge keeps working in both cases.
  • workspaceRegistry is loaded asynchronously: if it shows up late, the archive endpoints start working without a restart.
  • UI text ships in English and Simplified Chinese. The browser half registers its copy through DSH's ctx.locale.register(), so the settings page, hover card and labels follow the interface language; the host half (tool description, tool replies, error hints) picks from DSH_LOCALE / LANG, because the host has no locale service.

Development

npm run check   # node tools/check.mjs
npm test        # node --test "test/**/*.test.mjs"

check parses every .js / .mjs in the repository with node --check (no code is executed) and validates that package.json is well-formed JSON. test runs the unit tests: store tolerance (missing / corrupt / expired marks, atomic writes), the loopback fence and every route, the tool, the client half's three slots, dictionary key parity and the idle decision. No dependencies, no install step — both commands work on a bare Node 22+.

CI runs the same two commands on Node 22 and 24 (.github/workflows/check.yml).

Third-party notices

The loopback request guard in lib/index.js is derived — rewritten, simplified and split into standalone pure functions — from shared/host/loopback.ts in @linxin666/dsh-session-archive, which is licensed under the Apache License 2.0. See the NOTICE file and LICENSE-Apache-2.0.txt, both shipped inside this package. Everything else is original work.

License

MIT — see the LICENSE file shipped inside this package.