前言¶
在 DeepSeek Harness(DSH)里跑长任务时,常见两类「时机不对」:工作日上午进入 DeepSeek 官方峰段,单价更高;账户余额逼近用尽,继续跑可能中途断档。硬停会丢上下文,硬跑则要么多花钱、要么在余额归零时失控。
dsh-tide 是社区工作流类插件,在谷→峰切换或余额过低时,让 agent 在可恢复的安全点收尾,并留下人机双份交接;余额恢复后由看门狗自动唤醒续跑。下面按定位、能力、安装与配置说明用法与边界。
这是什么¶
- 名称与维护:GitHub 仓库 wobenshiwomu/dsh-tide,维护者 wobenshiwomu;社区目录页 SkillHub 条目,分类为工作流。
- 一句话:DeepSeek Harness 插件 —— 看时机的优雅暂停(Graceful Pause on Timing):峰时提醒(15 秒窗口)、余额不足优雅降级停机、看门狗自动唤醒续跑;人机双交接,日志全留痕。
- 骨架:两条链路共用同一模式 —— 暂停 → 双交接 → 条件唤醒;机制基于 DSH 公开 API,作者在 README 中写明已在本地 DSH 源码逐项验证。
核心功能¶
Part 1:峰时提醒(温和事件,用户可选)¶
谷→峰切换时,向最近活跃的会话注入一条用户可见提醒:在 15 秒内回复「暂停」可优雅收尾(先留交接,等便宜时段再继续);不回复则照常推进。
- 用户回复「暂停」→ 模型写两份交接(人一份 + 模型一份)→ 调用
submit_pause_handoff落盘 → 会话进入「已暂停」。 - 超时默认继续:15 秒是「抓在场的人」的窗口,不是强制省钱;设计上为同意机制。
- Never Ask 模式下静默跳过,不打扰。
默认峰段为北京时间周一至五 09:00–12:00、14:00–18:00,可通过 peakWindows 覆盖,并支持 leadMinutes 提前量。
Part 2:余额降级(危险事件,强制处理)¶
余额 ≤ lowBalanceCNY(默认 ¥5)时,向活跃会话注入降级收尾指令(不需要用户同意),模型写双交接后停下。
看门狗:暂停后按 watchdogSeconds(默认 15 分钟)轮询余额;恢复到 resumeBalanceCNY(默认 ¥20)以上时,自动唤醒模型继续任务,模型交接原文随唤醒消息注入。未达恢复线则保持暂停,不重复打扰。
收尾产物与审计¶
| 环节 | 说明 |
|---|---|
| 人读交接 | 工作目录 TIDE-PAUSED-handoff.md(含归档) |
| 模型交接 | $DSH_HOME/storages/dsh-tide/handoffs/<会话>.md,唤醒时注入 |
| 余额查询 | GET {baseUrl}/user/balance(Bearer,key 经 ctx.credentials 或环境变量兜底) |
| 状态 | 内存状态机 + state.json;问询窗口/暂停标记可从会话日志重建 |
会话日志中 source.tide 字段记录审计子类型:ask、consent、decline、expired、wrap、paused、woken、resumed 等。
收尾期间可开启 guardWhileWrapping(默认 true),用 denyPattern 拦截开新战线类工具(如 job_、create_goal、subagent 等)。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前建议阅读仓库源码与 MIT 许可证,确认行为符合你的环境。
GitHub 直装(README 推荐,国内可直连 codeload,无需 npm 账号):
dsh plugin --profile web add 'https://codeload.github.com/wobenshiwomu/dsh-tide/tar.gz/v0.1.0'
图形界面:侧栏「插件」→ 添加插件 → 填入上述 URL。装完重启 DSH 生效。URL 末段 v0.1.0 为版本标签,升级时换仓库新版本标签重装即可。
本地/开发安装:
dsh plugin --profile web add /path/to/dsh-tide
环境要求(来自 package.json):Node ^22.19.0 || >=24.0.0,DSH >=0.2.0-rc.1。
开箱即用:不写配置即使用内置峰时窗口、余额触发线 ¥5 / 恢复线 ¥20、看门狗 15 分钟轮询。下列配置仅在需要改默认行为时写入 profile 用户层 cordis.patch.yml。
# 示例:仅当要改默认值(触发线 5 / 恢复线 20)时才需要
- id: dsh-tide
config:
lowBalanceCNY: 1 # 低余额触发线(元)
resumeBalanceCNY: 3 # 余额恢复线(元,须大于触发线)
# peakWindows: ['1-5 09:00-12:00', '1-5 14:00-18:00']
# leadMinutes: 0 # 峰时提醒提前量(分钟)
# askTimeoutSeconds: 15 # 提醒时效
# watchdogSeconds: 900 # 看门狗轮询间隔
触发线必须小于恢复线(low < resume);相等或倒置可能导致「唤醒后立刻再暂停」循环,启动时会打印配置提醒。
典型用法与配置要点¶
日常无需操作:峰段开始时若会话在活跃窗口内(默认最近 720 分钟),会收到 15 秒窗口提醒;余额触底则自动收尾并暂停,余额回升后看门狗唤醒。
需要自定义时,常见键包括:
| 键 | 默认 | 说明 |
|---|---|---|
askEnabled |
true |
峰时提醒总开关 |
balanceEnabled |
true |
余额降级总开关 |
askTimeoutSeconds |
15 |
提醒回复窗口 |
watchdogSeconds |
900 |
暂停后看门狗间隔(秒) |
tickSeconds |
10 |
宿主 tick 间隔 |
完整可选键见仓库 README 配置表(含 peakWindows、balancePollSeconds、storageDir 等)。
仓库提供仿真测试:npm install 后 npm test(README 称 89 项断言,覆盖时钟/窗口/同意/双交接/看门狗/跨重启/跨进程)。
适用场景与注意¶
适合:长时间 unattended 或 headless 跑 agent,希望在峰段前有机会人工暂停,或在余额不足时自动落盘交接而非硬断;需要余额恢复后自动续跑、且接受默认峰段为「周一至五」工作日历(节假日不建模,法定假日白天可能仍按峰处理,偏差方向偏保守)。
边界与共存(README 已知边界):
resolveAgent会接管会话;多实例(web + headless)共用同一会话可能锁冲突,单实例无影响。- 不依赖原生
ask_user_question的 timed 模式;与dsh-calm架构同源,可共存。 - 收尾质量取决于模型;未调用
submit_pause_handoff则不会标记「已暂停」。
DSH 生态理念是「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。
链接¶
- 社区目录:https://www.skillhub.cn/plugins/wobenshiwomu/dsh-tide
- 源码与文档:https://github.com/wobenshiwomu/dsh-tide
dsh-tide 把「退潮暂停、涨潮回来」做成可继承的双交接与条件唤醒,适合在 DSH 工作流里把峰段与余额两类时机交给插件统一处理,而不是在任务中途硬停或盲目续跑。