DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Whale Post Deliver — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-whale-post-deliver

Whale Post Deliver

投递策略:离线留在信箱等人/在线立刻投出(示例①的挂点) · Delivery policy: offline waits in the mailbox, online posts at once (example (1)'s socket)

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add dsh-whale-post-deliver@0.6.1
READMECompatibilityVersions

Compatibility and provenance

Whale Post Deliver is published as dsh-whale-post-deliver and currently resolves to version 0.6.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
10/16/2026

Versions

0.6.1stable
10/10/2026
0.6.0stable
10/10/2026
0.5.4stable
10/10/2026
Show 8 more versionsCollapse versions
0.5.3stable
10/10/2026
0.5.2stable
10/10/2026
0.5.1stable
10/10/2026
0.5.0stable
10/10/2026
0.4.0stable
10/10/2026
0.3.0stable
10/9/2026
0.2.0stable
10/9/2026
0.1.0stable
10/4/2026

Related plugins

Loading related plugins…

Latest
0.6.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
19.1 kB
Files
6
Surface
any
License
MIT
Source
npm
GitHub
★ 2
Weekly downloads
1,761
Security scan
✓ v0.6.1 scan passed
Last push
10/11/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseAb Publishdsh-ab-publishBrowser-automation publishing tool that logs into and posts to arbitrary websites, in one publishable plugin packageAb Wechat Scrapedsh-ab-wechat-scrape--- description: "The out-of-tree wechat_scrape tool: retrieves WeChat official-account articles, filters promotional blocks, and saves each as a Markdown file, for maintainers of this machine's dsh profiles." kind: "package-reference" ---Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and r

README

dsh-whale-post-deliver

English: deliver README in English

投递策略:离线留在信箱等人/在线立刻投出(可换的挂点 —— 示例①)

  • 提供接口:whale.deliver
  • 依赖接口:whale.roster(可选 —— 用不到就不取)
  • 自测:node selftest.mjs(只看退出码:0 过/非 0 不过)

接口带 apiVersion;核心不认识任何成员名与类型标识 —— 名单与类型一律从接口取。

它只回答一个问题(别让它管别的)

这封信现在投进对方的会话,还是留在信箱里等人? —— 三态:

返回什么时候
'delivered'在线件,且对方有活体会话 ⇒ 真投出去了
'kept'离线件;或在线件但对方没有活体会话 ⇒ 不投也不消费
'rejected'收件人在 blocked 名单里 ⇒ 信不进它的信箱

接口

方法一句话
deliver(letter, ctx)就是上面那个问题的答案;ctx.targets 由核心给(组已展开)
blocked(id)这个收件人被明确挡掉了吗
sessionOf(id)那个会话此刻活着吗(就是下面那个探针)
dormancyOf(id){ state, days, lastMs, source } —— 谁还醒着(见下"休眠判定")
log判定留痕(自测与排障用)

休眠判定(S10 v2 —— 2026-10-10 从班级的设计文档移植)

v1 的教训(设计文档原话):「不许拿「邮差还活着」当「它在读信」 —— 真局一照就穿帮:小毛咪的邮差每 10 分钟替她续 hello,可她本人不读信(量到的是邮差,不是她)」

所以判定走两路,都带 source,不许把推断说成声明:

路依据source
① 明示位配置给的 declaredDormant(id) / 名单里那个标记'declared'
② 推断它信箱里最老的一封没读的信,躺了多久 —— 这才是"没读信"的明证'inferred'

四档状态:awake(dormantSoftDays 以内)/quiet(soft~hard)/dormant(≥ hard)/ unknown —— "我们不知道" —— 不是"它休眠"

两条硬纪律:

  1. 没有积压 ⇒ 不许判休眠("没信可读 ≠ 不读信" —— 所以才会是 unknown)
  2. 只用落盘 mtime(不信内容里的时间戳 —— "这封信什么时候到的"是盘说了算)

行为:明示休眠的收件人 ⇒ deliver 返回 'rejected'(与核心同口径:--force 也不豁免); 只是 quiet/inferred ⇒ 一律不退回(不许自己猜休眠)。

接真引擎的唯一接线口:sessionOf

核心**不认识"引擎""会话"**这些概念 —— 它只认一个探针函数:

sessionOf(id) => ({ live: true, inject: (text) => { /* 把这段文字送进那个会话 */ } })   // 或 undefined

两种接法(等价):

  • createBus({ probes: { sessionOf } }) —— 直接喂给核心;
  • 把本件配好 sessionOf —— 核心会自动取 services.deliver.sessionOf。

规则三句(别混):

  1. 它只影响"在线件能不能真投出去" —— 探针说"没这个会话"(或压根没接探针)⇒ 在线件判 'kept': 信留在 inbox/ 等人(只晚到,不会不到);
  2. pump 的消费授权不看它 —— 要消费得给 inject 或声明 reader: true ("会话活着" ≠ "信交到了读者手里");
  3. 给了 inject 就会真调它,它抛异常 ⇒ 不消费 —— 交不出去的信,绝不当成交出去了。

配置

字段默认含义
sessionOf不接上面那个探针(不接 ⇒ 在线件一律判 'kept')
blocked[]明确挡掉的收件人 id(信不进它的信箱)
dormantSoftDays3"醒着"的天数上限(超过它 ⇒ quiet)
dormantHardDays7"休眠"的门槛(≥ 它 ⇒ dormant)
oldestPendingMs不接推断路的探针:(id) => 该收件箱里"最老的一封没读的信"的落盘时间(ms;0 ⇒ 没有积压)。不接 ⇒ 如实报 unknown("不知道"就说不知道)
declaredDormant不接明示位探针:(id) => boolean(**"谁被标了休眠"**由名单/配置给 —— 本件不认识具体属性名)
now不接注入时钟(自测用)

换掉它(这是"挂点"的意义)

想做别的投递策略(比如"在线件先发短信再投")⇒ 只换这一件, 核心与别的插件一行都不用动(它们只认 deliver(letter, ctx) 这个接口)。