dsh-offpeak-queue
已验证dsh-offpeak-queue · v0.1.8 · MIT · Web 界面
DeepSeek Harness peak-hour message queue: defer selected sends and deliver them to the original conversation off-peak. / DSH 高峰消息暂存与低谷自动投递。
安装
dsh plugin add dsh-offpeak-queue 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
作者
说明文档
English | 简体中文
dsh-offpeak-queue
面向 DeepSeek Harness(DSH)的低谷发送队列。日常消息继续使用原生输入框直接发送;不着急的任务可切换到“低谷再发”,高峰期先暂存,低谷到来后自动投递回原会话。
已在 Windows、DSH Desktop 2.0.3、desktop profile 下测试。
功能特性
- 默认直接发送:未主动开启“低谷再发”时,DSH 原生输入框保持原有行为。
- 高峰发送拦截:开启“低谷再发”后,高峰期按 Enter 或点击原生发送按钮都会把当前消息加入队列。
- 保留多行编辑:Shift+Enter 继续换行。
- 低谷自动投递:进入低谷时段后,消息自动发回创建它的原会话。
- 居中队列面板:等待、工作中、执行记录在 DSH 会话窗口中央展示,不受输入区高度限制。
- 完整队列操作:支持强制执行、撤销和清空历史。
- 策略可配置:可调整高峰时段、周末规则、并发数和插件总开关。
- 异常隔离:host 与 client 的异常只记录并隔离,避免插件故障拖垮 DSH 启动或页面渲染。
- 主题自适应:胶囊状态条、分区卡片和操作按钮随 DSH 当前主题变化。
发送判定
| 插件状态 | 发送模式 | 当前时段 | 结果 |
|---|---|---|---|
| 已停用 | 任意 | 任意 | 由 DSH 正常发送 |
| 已启用 | 直接发送 | 任意 | 由 DSH 正常发送 |
| 已启用 | 低谷再发 | 低谷 | 由 DSH 正常发送 |
| 已启用 | 低谷再发 | 高峰 | 消息进入队列 |
默认规则按操作系统本地时间计算:
- 高峰时段:
09:00–12:00、14:00–18:00 - 周六、周日:全天视为低谷
- 投递并发数:
1 - 发送模式:直接发送
这些设置都能在队列面板中修改,并支持 22:00–06:00 这类跨午夜时段。
环境要求
- 带 Web 或 Desktop profile 的 DeepSeek Harness
- DSH runtime
>=0.1.1-rc.1 - Node.js 20 或更高版本
- 安装或升级后完整重启 DSH;静态 client bundle 只在启动时加载
安装
从 npm 安装
以下包名安装命令在 dsh-offpeak-queue 发布到 npm 后可用。
DSH Desktop:
dsh plugin --profile desktop add dsh-offpeak-queue
标准 Web profile:
dsh plugin --profile web add dsh-offpeak-queue
安装完成后,重启 DSH Desktop 或对应的 DSH profile。
本地链接调试
dsh plugin --profile desktop add "link:E:/path/to/dsh-offpeak-queue"
本插件采用原生静态 host/client 双半侧 bundle。请保持它注册在 dsh.profile.bundles 中,不要改成运行后动态 define 的启动方式。
更新与卸载
dsh plugin --profile desktop update dsh-offpeak-queue
dsh plugin --profile desktop remove dsh-offpeak-queue
请把 desktop 替换成实际使用的 profile,并在操作后重启该 profile。
使用方法
- 打开任意 DSH 会话,输入框附近会出现“直接发送”和“队列 n”。
- 点击“直接发送”,切换为“低谷再发”。
- 在设定的高峰时段编辑消息,按 Enter 或点击 DSH 原生发送按钮。host 确认入队成功后,插件才会清空输入框。
- 点击“队列 n”,查看或管理已暂存的任务。
- 进入低谷后,host 会把每条消息投递回创建它的会话。
如果插件无法识别当前会话,它会阻止这次被拦截的发送并记录原因,从而避免把消息投递到错误会话。
存储、隐私与限制
配置与诊断文件位于:
%DSH_HOME%\offpeak-queue\
├── config.json
└── host.log
- 插件不依赖外部网络服务,也不需要单独的凭据。
- client 诊断仅提交到插件在本机 DSH host 上注册的路由,并追加到
host.log。 - 设置会持久化到
config.json。 - 等待、工作中和执行记录目前保存在内存中,DSH host 进程退出后会清空。重启前请先处理或复制仍在等待的消息。
- 队列最多容纳 200 条待处理消息;单条消息上限为 50,000 个字符。
- 投递失败后最多重试三次,每次失败后有短暂冷却时间。
故障排查
看不到控件
静态 client 模块只在启动时扫描。请完整退出并重启 DSH,然后检查:
%DSH_HOME%\offpeak-queue\host.log
日志中应能看到 host 启动、路由注册、client 启动,以及 DOM 探针成功或原生后备挂载成功的记录。
应急停用
如果插件影响 profile 启动,可在该 profile 的 cordis.patch.yml 顶层数组中加入以下条目,然后重启 DSH:
- id: offpeak-queue
name: dsh-offpeak-queue
disabled: true
删除该条目并再次重启即可恢复,无需卸载插件。
项目结构
dsh-offpeak-queue
├── index.js Host 半侧:路由、配置、调度、投递
├── client.js 静态 Client 半侧:控件、弹窗、发送拦截
├── src/core.mjs 与框架解耦的队列状态机
├── cordis.patch.yml 原生 DSH profile bundle 行
├── scripts/ 冒烟与结构平衡检查
└── test/ 核心行为单元测试
浏览器半侧通过本机 /dsh-offpeak-queue/* 路由与 host 通信。host 恢复消息记录的 DSH 会话,再通过该会话的正常 follow-up 路径提交文本。
开发验证
打包前运行完整检查:
npm run verify
npm pack --dry-run
展开后的命令如下:
node --check client.js
node --check index.js
node --test test/core.test.mjs
node scripts/smoke.mjs
node scripts/balance.mjs
发布
首次公开发布前,请再次确认 npm 包名仍可注册。随后检查发布包内容,发布到 npm,在 GitHub 创建同版本 tag,并把生成的 .tgz 附加到 GitHub Release。
为了方便生态发现,请给 GitHub 仓库添加 dsh-plugin topic。社区插件目录可以通过现有的 dsh-plugin、deepseek-harness 关键词发现 npm 包;DSH Web 社区索引还支持提交 PR,把仓库地址和 npm 包名加入其 community.json。
许可证
MIT,详见 LICENSE。