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
W

dsh-whale-waker

Whale Waker

按计划唤醒工作区中的驻留者:每个目标都有独立的间隔、安静时段、每日上限和提示词,并且每次唤醒都会报告自上次唤醒以来的变化。附带设置页面。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:ztan4706/dsh-whale-waker#531ce234300bd8cab0c066d830d6a9b84ea3ac73
README兼容性版本

兼容性与来源证明

Whale Waker 以 dsh-whale-waker 发布,当前版本为 0.6.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/27

版本

0.6.0stable
2026/10/27

相关插件

正在加载相关插件…

最新版
0.6.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/27
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包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 包。Ab Ocrdsh-ab-ocr--- description: "外部 ocr 工具:逐页识别扫描的 PDF 或图像,仅在处理完最后一页后按顺序合并页面,并使用模型确定的标题级别保存为一个 Markdown 文档。" kind: "package-reference" ---

README

Whale Waker

Scheduled wake-ups for the residents of a workspace. Each target — a "whale" — gets its own interval, quiet hours, daily cap, prompt and deny-list. Every wake-up reuses the same session, gathers what changed since last time, and sends one short prompt.

  • Package: dsh-whale-waker
  • Version: 0.4.1
  • License: MIT
  • Author: Bao · E-1021

Why: an agent that only exists while you type is a tool. An agent that wakes on its own, reads what changed, and decides to do one small thing — that is closer to a resident. This plugin is the clock for that.


Install

dsh plugin --profile <your-profile> add dsh-whale-waker

From a local checkout:

git clone https://github.com/ztan4706/dsh-whale-waker.git
dsh plugin --profile <profile> add link:/absolute/path/dsh-whale-waker

Or install the directory through plugin_manager's install_bundle in the app. Restart DSH afterwards — plugin modules are cached by URL.

The settings page shows up in Settings → Whale Waker right after that.

Configure

Settings live in dsh-whale-waker.json:

  • $DSH_PROFILE_DIR/dsh-whale-waker.json by default,
  • or config.configPath from the row config.

The page edits the file for you; the scheduler re-reads it when the mtime changes (checked every five minutes).

{
  "targets": [
    {
      "id": "echo",
      "name": "Echo",
      "workspace": "D:\\rooms\\echo",
      "provider": "",
      "model": "",
      "enabled": true,
      "intervalMinutes": 95,
      "minGapMinutes": 45,
      "startHour": 9,
      "endHour": 23,
      "maxPerDay": 6,
      "prompt": "(Scheduled wake-up.)\n\n{material}\n\nMove one thing forward, or answer \"nothing this round\"."
    }
  ]
}
FieldMeaning
idTarget name; also the session id (walk-<id>) and the log tag.
workspaceThe room this whale lives in. Files changed here become material. Required: empty means no wake-up happens (no-workspace).
provider / modelOptional. Empty means "use this DSH's default model", so the plugin does not assume a vendor. A provider this host does not serve is logged and skipped as provider-not-configured instead of failing inside agent creation.
ollamaBaseEndpoint used only to pre-warm an ollama* provider. Default http://127.0.0.1:11434, 15 s timeout, and a failure never blocks the wake-up.
intervalMinutesHow often it may wake on its own (5–2880).
minGapMinutesMinimum gap between two wake-ups (0–1440).
startHour / endHourQuiet hours: outside this window nothing fires (0–24).
maxPerDayHard daily cap (0–48). 0 means never wake on its own.
dryRunCollect material and log it, but do not open a session.
watchExtra directories whose fresh files are listed as material.
stateSectionHeading in STATE.md whose bullets are quoted (default ## In progress).
denyToolsTool names removed from that whale's wake session (e.g. another agent's private tools).
activeWindowMinutesAfter a human actually talks in that workspace, the timer stays quiet this long (default 10; 0 disables). Manual wake-ups ignore it.
promptTemplate; {material} is replaced.
nameDisplay name used in the session title (defaults to id).
sessionTitleTitle template for the wake session; {name} is replaced (default Wake · {name}).

State (last wake, today's count) is persisted to dsh-whale-waker-state.json next to the config, so restarting DSH does not re-fire everybody.

Language

The settings page follows the DSH locale by default, and can be switched per plugin without touching the rest of the UI:

{ "ui": { "language": "zh-TW" } }

Supported values: auto (follow DSH), en, zh-CN, zh-TW. The selector sits near the top of the page; the choice is written to the same config file.

While you are talking to it

A wake-up never joins your live chat: it opens (or resumes) its own session, walk-<id>, in that workspace. So the honest answer to "would it start walking while I am mid-conversation?" is yes, unless something stops it.

So something stops it. The plugin watches agent/inbox/claimed for messages a human actually typed (its own injected prompts and walk-* sessions are ignored). If the workspace saw one within activeWindowMinutes (default 10), the timer wake is skipped and logged as user-active. The next tick, five minutes later, tries again.

What this does not do:

  • It does not interrupt a wake-up already running.
  • It does not persist: after a restart the activity map is empty until the next message. minGapMinutes is the backstop for that window.
  • It does not block manual wake-ups (wake_whale, or the page's "Wake once") — those are explicit intent and pass force.

Workspace path

The address under each target is editable: type a folder and press Apply. The host validates it (absolute, existing, a directory), stores the canonical spelling, and — when no workspace owns that folder — creates one titled after the last folder segment. That is what puts the wake session in its own sidebar group instead of "Ungrouped"; a typo is rejected with the reason instead of being saved.

Changing the path also changes the session id (walk-<id>-<workspace fingerprint>), so the next wake opens a fresh session in the new room; the old one is left as history.

Restart notice

The plugin compares the version on disk with the version the running process loaded. When they differ — the usual case right after an upgrade — the page shows a banner:

The package on disk is v0.0.2, but this process is still running v0.0.1. Restart DSH to load the new code.

That is deliberate: DSH caches plugin modules by URL, so "installed" and "running" can disagree, and silently pretending otherwise wastes an afternoon. Any plugin that changes something a restart is required for should say so, in the UI and in the log, instead of leaving the user to guess.

Tool

wake_whale — wake one target for a single turn.

  • wake_whale({}) lists targets, their next-eligible state and today's count.
  • wake_whale({ id: "echo", reason: "..." }) wakes that target once, bypassing the schedule but still respecting "already running".

What a wake-up does

  1. Collects material: files changed in the workspace since the last wake, plus watch directories, plus the stateSection bullets of STATE.md.
  2. Mounts an agent preset so the session has real tools (without one, a wake session cannot even read its own STATE.md).
  3. Reuses walk-<id>-<workspace fingerprint> — created the first time, resumed afterwards. The fingerprint changes with the workspace path, so a moved room gets a fresh session instead of resuming one that still points at the old path.
  4. Attaches that session to the workspace group that matches its cwd.
  5. Sends the prompt and waits for the turn to actually end (claim → turn/end). The session stays alive afterwards, so the conversation remains visible in that workspace.
  6. Names the session from sessionTitle (default Wake · {name}), because the automatic titler ignores prompts that a plugin injects and would otherwise leave it "Untitled" in the sidebar.

Everything is logged to dsh-whale-waker.log next to the config, including the material that was handed over — so "why did it say that" is answerable afterwards.

Limits (honest)

  • The scheduler checks every five minutes, so a wake can drift by up to five minutes.
  • Wake sessions run with the provider/model you configure; a slow local model can take a while to warm up (the plugin pre-warms Ollama, 3-minute timeout).
  • Only one wake per target at a time.
  • No UI to add targets — edit the JSON (or the page fields of existing targets).

License

MIT · Bao · E-1021