🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

滴答清单任务派发器 zhengjy01/dsh-task-dispatcher

DeepSeek Harnessv0.6.1
zhengjy0135 天前有提交已提供中文文档扫描:含敏感能力

dsh-task-dispatcher — 滴答清单任务派发器

30.7/100
综合分
1
GitHub 星标
241
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-task-dispatcher
npm 源 · dsh-task-dispatcher 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · security
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 35 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-task-dispatcher @ 0.6.1
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 03:23:04

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 33 处,展示前 18 条)
  • 读取本地文件
    lib/index.js:571
    const raw = await readFile(configPath(), "utf8");
  • 写入本地文件
    lib/index.js:580
    await mkdir(path.dirname(configPath()), { recursive: true });
  • 写入本地文件
    lib/index.js:581
    await writeFile(configPath(), JSON.stringify(next, null, 2), { mode: 384 });
  • 读取本地文件
    lib/index.js:779
    const raw = await readFile(FLOMO_CONFIG, "utf8");
  • 发起网络请求
    lib/index.js:830
    const res = await fetch(url, {
  • 读取本地文件
    lib/index.js:890
    const parsed = JSON.parse(await readFile(file, "utf8"));
  • 读取本地文件
    lib/index.js:899
    const parsed = JSON.parse(await readFile(path.join(dir, "accounts.json"), "utf8"));
  • 读取本地文件
    lib/index.js:907
    const files = (await readdir(accountsDir)).filter((f) => f.endsWith(".json") && !f.endsWith(".sync.json"));
  • 发起网络请求
    lib/index.js:965
    const res = await fetch(base + "/send", {
  • 写入本地文件
    lib/index.js:1193
    await mkdir(path.dirname(taskFile), { recursive: true });
  • 写入本地文件
    lib/index.js:1202
    await writeFile(taskFile, [
  • 读取本地文件
    lib/index.js:1278
    raw = await readFile(workspaceStorePath(), "utf8");
  • 执行外部命令来自配置/变量
    lib/index.js:1421
    child = spawn(resolveExecutable("dsh"), [
  • 执行外部命令来自配置/变量
    lib/index.js:1588
    const worker = await spawn(buildWorkerPrompt(cfg.workerPrompt, task), {
  • 执行外部命令来自配置/变量
    lib/index.js:2510
    execFile(command, [...args], {
  • 写入本地文件
    lib/index.js:2554
    await mkdir(path.dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:2555
    await writeFile(file, JSON.stringify(queue, null, 2) + "\n", { mode: 384 });
  • 发起网络请求
    lib/client.js:32
    response = await fetch(path, init);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-timer@deepseek-ai/dsh-agent@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-invariants
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 定时拉取今日到期任务
  • 写入任务文件
  • 多渠道通知

DeepSeek Harness 的任务调度器:用滴答清单(TickTick)做每日任务调度,cordis 定时器拉取今天到期的任务,写进任务文件并通知(通过 ClawBot 发微信、flomo、macOS),可选自动执行并回执结果

v0.6.02026-09-27
· dsh-task-dispatcher v0.6.0 省钱模式首发(npm latest 现已指向 0.6.0) · 留痕改落 In progress · 落库硬护栏 npm: | 完整变更:CHANGELOG.md | 安装与使用说明:README.zh.md --- · 这个版本带来什么 · 💰 省钱模式(cheapMode,默认关):开启后自动执行只在 DeepSeek 空闲(优惠)时段开跑。高峰(北京时间周一至周五 09:00–12:00、14:00–18:00)里把任务排队等到下个空闲开始,或本轮跳过(策略可选)。判定点只在「准备开 worker 之前」——拉取节奏、过滤、串行执行全不变;关闭时行为与旧版 100% 一致。排队任务与「下次执行时间」落盘,DSH 重启不丢;时段不写死,可切口径或自定义。 · 🧾 留痕不再堆在 To do:done: true 的留痕条目(建完立刻勾掉)改落 In progress;未完成待办仍落 To do。面板保存不会再把落点字段静默抹掉。 · 🔒 落库硬护栏:dueDate 只有条目显式标了「用户明确要求日期」才写入(否则丢弃并记日志);标签只保留 ai(两道);井号净化收敛到唯一准源——滴答会把 #词 吃成任务标签,正确写法是「全角 # + 一个空格」。 · 🗂 回顾入口 ledger:node ticktick-pending.mjs ledger [--days N] 直接列账本(创建时间 / 是否已勾选 / 滴答 id)。 · 🐛 修:「建过又勾掉」的同名任务被反复重建;面板保存阈值会抹掉队列里的新字段;可移植性门禁在 DSH 0.1.7 上误报「客户端半没注册」。 ⚠️ npm 版本号是 0.4.0 → 0.6.0,不是漏发:0.5.0 当时写好了 CHANGELOG 与版本号,但从未发布到 npm;省钱模式、实时省钱判定等内容随本版一起上线(细节见 CHANGELOG 的 [0.5.0] 段)。 --- · 升级 + 开启省钱模式(照着做) 前提:已装 DSH,并且装过本插件。升级过程中 DSH 需要重启一次,请在你方便的时候手动重启。 1. 升级到 0.6.0:终端执行 dsh plugin --profile web add dsh-task-dispatcher@0.6.0。 预期:命令正常结束,profile 依赖里出现 dsh-task-dispatcher@0.6.0。 2. 重启 DSH:重启后插件才加载新版本。 预期:界面能重新打开,启动输出无插件报错(此时省钱模式仍是关的,行为和老版本一致)。 📷 【截图位 2】这张图证明插件装上了 怎么截:终端里跑完第 1 步、停在安装命令的结果行;截取范围:终端窗口 敏感处理:本机路径、用户名、token 必须打码或裁掉 补图:截图存进仓库 docs/images/dsh-task-dispatcher-01-installed.png,再把本段整段替换为 3. 打开设置页:DSH Web → 设置 → 展开 「任务派发器」 卡片。 预期:看到总开关、拉取间隔、任务来源、通知通道、自动执行等区块。 📷 【截图位 3】这张图证明配置入口在哪(最容易卡的一步) 怎么截:设置页 → 停在「任务派发器」卡片展开后的上半部分(总开关 + 拉取间隔 + 来源清单) 敏感处理:卡片里的工作区路径 / 清单名如含个人信息就裁掉 补图:截图存进仓库 docs/images/dsh-task-dispatcher-02-settings.png,再把本段整段替换为 4. 勾选省钱模式并设参数:勾选 「省钱模式(自动执行只在 DeepSeek 空闲时段开跑)」(默认关),然后设 时段口径(默认「官方现行(周中 09–12 / 14–18 高峰)」)、策略(默认「排队等空闲」,也可选跳过)、尾部余量(建议填 worker 超时分钟数,如 15 / 30)。 预期:展开出现时段表;状态行出现「当前时段:空闲/高峰」「下次执行时间」「排队任务:N」。 📷 【截图位 4】这张图证明省钱模式设对了 怎么截:设置页 →「任务派发器」→ 停在「省钱模式」展开后的完整设置区(开关 + 时段口径 + 策略 + 尾部余量 + 时段表) 敏感处理:无(注意别把顶部的工作区路径一起截进来) 补图:截图存进仓库 docs/images/dsh-task-dispatcher-03-cheap-mode.png,再把本段整段替换为 5. 验证生效:跑一次 dispatcher_run(或面板「立即拉取」)。当前是高峰且选了「排队等空闲」时,任务不会立刻执行,而是被标为排队并给出「下次执行时间」;面板「排队
v0.4.02026-09-16
· ⚠️ 破坏性变更 · 延迟同步脚本 scripts/ticktick-pending.mjs 不再为未显式传 dueDate 的任务补默认日期。原行为有两处补日期:cmdStage 未传 dueDate 时补生成当天,cmdFlush 还把「暂存那天到现在已跨天」的任务顺延到实际写入当天。现在 cmdStage 保持 null,cmdFlush 只有显式传了 dueDate 才写入——落 To do(id 6aa654ffe4b094f3c163a198)的任务一律无日期。To do 是常驻待办池,无日期即常驻视野、不会掉进过去;取代「默认排期 = 今天」与「未完成顺延回今天」两条旧规则(用户 2026-09-14 定稿)。 · 新增 · 标题 / 描述里的半角 # 自动转全角 #:滴答会把 #词 自动解析成任务标签——描述里写 #测试,标签就变成 ["测试","ai"],违反「AI 任务只准有 ai 一个标签」;标题里的 #5023 同理会被吃掉。脚本新增 escapeHashes(),stage 时替换、写入 API 前再兜底一次。全角 # 与半角 # 是不同码位,滴答只认半角,因此不再生成杂散标签;#91 / #5023 仍读作 #91 / #5023,不删除(与 flomo 同规则)。 · 其它 · status 明细里无 dueDate 的任务显示 [无日期](原显示 [今天],会误导)。 · 本机安装副本 ~/.dsh/scripts/ticktick-pending.mjs 与源码仓 scripts/ticktick-pending.mjs 已同步;tarball 自 0.4.0 起自带同一份脚本。 · 迁移说明 · 依赖默认日期的调用方:若此前靠「不传 dueDate 也会自动排到今天」,请改为显式传 dueDate: "YYYY-MM-DD"。不传 = 无日期,这是 0.4.0 起的预期行为。 · 标题 / 描述里的半角 # 会被替换成全角 #:这是防标签误解析的有意行为,不是 bug。 · 队列里已暂存的旧任务:cmdFlush 不再改写其 dueDate;已在滴答上的任务不受影响(只作用于新写入)。 · 验证 · npm test:smoke + tests/deferred.mjs 58 项全绿 · npm run verify(隔离 DSH_HOME + tarball 安装 + 健康路由 + client bundle + 就绪后 15s 稳定)✅ 通过 · npm latest → 0.4.0
v0.3.02026-09-13
· 新增 · 微信通知通道(ClawBot):派发通知与会话汇总可发到微信——插件把正文 POST 给本机 DSH-WeChatClawBot 网关的 /send(默认 ClawBot 状态目录 accounts/.json 的 userId),也可用 wechatTo 指定。新配置:notifyWechat / wechatGatewayUrl / wechatTo / wechatStateDir,dispatcher_config 支持 testWechat 测试。 · 执行结果回执(notifyResult,默认开):自动执行的每个任务在 worker 结束后自动推一条简明结果(✅ 任务完成 · 标题 + 一句话结果 / ❌ 任务失败 · 标题 + 原因),一轮多任务再补一条批次汇总。摘要取 worker 的 stdout 最终答复(进度/思考走 stderr),剥 ANSI、丢 DONE、截断 220 字。 · 延迟同步的图形化配置(设置面板):新增「延迟同步(agent → 滴答清单)」区块,可看队列明细/全机静默分钟/定时器状态/上次写入结果,可改静默阈值、单会话顶层上限、检查间隔(改完自动重载 launchd),可点「保存 / 立即写入 / 强制写入 / 重载定时器」。控制面与执行面分离:写入仍由独立脚本 + launchd 完成(DSH 关着也能写),插件只做配置与观测;脚本随包分发 scripts/ticktick-pending.mjs。 · 修复 · 配置/缓存/账本路径认 DSH_HOME:store.ts / workspaces.ts / notify.ts 此前用 path.join(homedir(), '.dsh', …),搬迁过 home 的机器会写到错误的 ~/.dsh。新增共享 src/home.ts,顺序统一为 插件覆盖变量 → DSH_HOME → ~/.dsh。 · 验证 · npm test:smoke(含 run 11 的 DSH_HOME 断言)+ tests/deferred.mjs 58 项,全绿 · npm run verify(隔离 DSH_HOME + tarball 安装 + 健康路由 + client bundle + 就绪后 15s 稳定)✅ 通过,静态体检「写 .dsh 但不认 DSH_HOME」warn 消失
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-task-dispatcher — 滴答清单任务派发器 把滴答清单(TickTick)当作 DSH 的任务派发器:插件内置 cordis 定时器,按可配置的间隔(默认每 30 分钟)从配置的来源清单(默认 In progress)拉取今天到期的任务,写入今日任务文件,并仅在任务有变化时发送通知(微信 ClawBot / flomo / macOS,按配置开关)。agent 读取今日任务文件后逐项执行,完成的用 ticktick_complete 回写滴答清单。 因为任务都是随手写进滴答清单的,插件会自动跟上:你随时加任务,下次拉取就带进来。 依赖本机已安装的 dsh-ticktick 插件(复用其数据层与 OAuth 凭据 ~/.dsh/dsh-ticktick.json),无需重复配置。 特性 - 按间隔自动拉取:cordis ctx.interval 每分钟轮询,距上次拉取超过配置间隔(分钟)就拉取一次;间隔 0 = 关闭定时;dispatcher_run 可随时手动拉取。 - 任务来源:默认滴答清单 5️⃣AI(改成 In progress 即可把「用户放要做/正在做任务的入口」当来源),可按 projectName / projectId 配置;dueMode=today 拉「今天到期/逾期 + 无截止」,dueMode=all 拉全部未完成。
展开完整文档(README 剩余 1 节)
dsh-task-dispatcher — 滴答清单任务派发器

把滴答清单(TickTick)当作 DSH 的任务派发器:插件内置 cordis 定时器,按可配置的间隔(默认每 30 分钟)从配置的来源清单(默认 In progress)拉取今天到期的任务,写入今日任务文件,并仅在任务有变化时发送通知(微信 ClawBot / flomo / macOS,按配置开关)。agent 读取今日任务文件后逐项执行,完成的用 ticktick_complete 回写滴答清单。

因为任务都是随手写进滴答清单的,插件会自动跟上:你随时加任务,下次拉取就带进来。

依赖本机已安装的 dsh-ticktick 插件(复用其数据层与 OAuth 凭据 ~/.dsh/dsh-ticktick.json),无需重复配置。

特性

- 按间隔自动拉取:cordis ctx.interval 每分钟轮询,距上次拉取超过配置间隔(分钟)就拉取一次;间隔 0 = 关闭定时;dispatcher_run 可随时手动拉取。
- 任务来源:默认滴答清单 5️⃣AI(改成 In progress 即可把「用户放要做/正在做任务的入口」当来源),可按 projectName / projectId 配置;dueMode=today 拉「今天到期/逾期 + 无截止」,dueMode=all 拉全部未完成。
- 今日任务文件:每次拉取把任务写成 Markdown 清单(默认 ~/.dsh/dsh-task-dispatcher/today-tasks.md);每项任务除了标题与截止日期,还会把它在滴答清单里的描述(备注)以引用块形式附在标题下,agent 读文件时连同描述一起读。
- 执行结果回执(notifyResult,默认开):自动执行的每个任务在 worker 结束后自动推一条简明结果(✅/❌ + 标题 + 一句话结果),一轮多任务再补一条批次汇总——跑完会自己汇报,不用靠 worker 记得调 dispatcher_report。摘要取 worker 的 stdout 最终答复(进度/思考走 stderr),剥 ANSI、丢 DONE 标记、截断到 220 字。
- 有变化才通知:notifyWechat(微信,经本机 DSH-WeChatClawBot 网关转发,接收人默认自动识别)+ notifyFlomo(复用 ~/.dsh/dsh-flomo.json 凭据,标签可配置)+ notifyMac(osascript);任务集无变化时保持安静,避免刷屏。
- 微信通知(ClawBot):插件把正文 POST 到本机网关 /send(默认 http://127.0.0.1:51235),由网关发给扫码登录的微信;插件不直连微信、不存微信凭据。接收人默认从 ClawBot 状态目录(~/.dsh-wechat,可用 DSH_WECHAT_HOME 覆盖)的 accounts/.json 里读 userId,也可用 wechatTo 显式指定;长正文自动分条(1200 字符/条)。通道不可用时只记为该路失败,不影响派发。
- 自动执行(autoExecute):开启后,为每个拉到的新任务单独开一个 dsh --profile headless 会话(串行,一任务一会话)去执行;worker 只带基础工具(bash/文件/glob/grep/网络/目标工具);执行成功即用 ticktick_complete 回写滴答清单勾掉;失败任务在重试冷却期内不重复跑。
- 选择执行会话的工作区(workerWorkspaceId):默认 worker 会话在用户主目录下运行;配置某个 DSH 工作区 id 后,worker 以该工作区目录为 cwd 启动,产生的会话会在该目录下读写文件,并在 GUI 侧边栏自动归入该工作区。设置面板提供工作区下拉(列表来自 ~/.dsh/storages/workspace.json),留空 = 默认主目录。
- worker 超时(workerTimeoutMinutes):每个自动执行的 worker 到点被 SIGKILL,默认 30 分钟(范围 1–1440),可在 dispatcher_config / 设置面板调整。此前是写死的 10 分钟常量,长任务跑到 10 分钟就被杀并误报为失败。
- 省钱模式(cheapMode,默认关):勾选后自动执行只在 DeepSeek 空闲(优惠)时段开跑,高峰期把任务排队到下一个空闲开始点(cheapStrategy=wait)或本轮跳过(skip)。判定点只在「准备开 worker 之前」——拉取节奏、过滤、串行执行全部不变;关闭时行为与旧版 100% 一致。官方口径(2026-08-17 起峰谷定价):高峰 = 北京时间周一至周五 09:00–12:00、14:00–18:00,其余时间空闲(约半价);代码里时段不写死,可用 cheapPreset(official-2026 / legacy-utc 旧版 UTC 16:30–00:30 / custom)+ peakWindows + cheapTimezone 配置。排队任务与 nextCheapStartAt 落盘,DSH 重启不丢;dispatcher_run 默认同样遵守,传 ignoreCheapMode: true 可立刻绕过。通知文案区分「省钱模式:已排入 XX:XX 空闲时段执行」与正常执行。
- 延迟同步面板(agent → 滴答清单):设置页新增区块,直接配置并查看这条回写链路——静默阈值(分钟)、单会话顶层上限、定时器检查间隔(秒,改完自动重载 launchd),并显示队列条数/明细、当前静默(全机 DSH 口径)、定时器是否在跑、上次写入结果。按钮:保存阈值、立即写入、强制写入、重载定时器。控制面与执行面分离:写入仍由独立脚本 + launchd 完成(DSH 关着也能写),插件只做配置与观测,两者共用同一个队列文件,不重复实现任何写入逻辑。路由:GET /api/dsh-task-dispatcher/deferred、POST .../deferred/{config,flush,timer}。
- agent 工具:dispatcher_status / dispatcher_config / dispatcher_run + Web 设置面板「任务派发器」。

兼容性

要求 DeepSeek Harness ≥ 0.1.5-rc.1(已在包清单的 dsh.engines.dsh 中声明,DSH 插件市场据此显示兼容版本),并已在 0.1.5-rc.1 上实测通过。本构建包含 DSH 0.1.5 的适配:工具结果的严格校验契约(lossless-JSON 快照、additionalProperties: false 的 schema 校验、output.render 必须返回 ContentBlock[]),以及不依赖宿主 PATH 的可执行文件解析(launchd 托管的宿主 PATH 只有 /usr/bin:/bin)。 本版起在 peerDependencies 中显式声明兼容 DSH 0.2.0-rc.2(官方 DSH 包的版本范围已含 ^0.2.0-rc.2),在 0.2.0-rc.2 上不会再出现兼容告警;功能与行为无变化。

安装

骨架:装 → 重启 → 确认加载。每步都写了「会发生什么」,照着做不会卡。

1. 装插件:在终端执行 dsh plugin --profile web add dsh-task-dispatcher。
预期:命令正常结束,~/.dsh/profiles/web/package.json 的依赖里出现 dsh-task-dispatcher。
2. 重启 DSH:重启 dsh web(Web GUI 侧边栏「重启」,或终端重跑同一条启动命令)。
预期:界面能重新打开,启动输出里没有插件加载报错。

📷 【截图位 2】这张图证明插件装上了怎么截:终端里跑完第 1 步、停在安装命令的结果行(或重启后 DSH 启动完成的那几行);截取范围:终端窗口敏感处理:本机路径、用户名、token 必须打码或裁掉补图:截图存进仓库 docs/images/dsh-task-dispatcher-01-installed.png,再把本段整段替换为装完的样子

3. 确认插件已加载:让 agent 跑一次 dispatcher_status(或看设置页是否出现「任务派发器」)。
预期:输出以 插件状态:已启用 开头,并列出来源清单、拉取间隔、通知通道。

启用与配置

4. 打开设置页:DSH Web → 设置 → 找到 「任务派发器」 卡片并展开。
预期:看到总开关、拉取间隔、任务来源、通知通道、自动执行等区块。

📷 【截图位 4】这张图证明配置入口在哪(最容易卡的一步)怎么截:设置页 → 停在「任务派发器」卡片展开后的上半部分(总开关 + 拉取间隔 + 来源清单)敏感处理:卡片里的工作区路径 / 清单名如含个人信息就裁掉补图:截图存进仓库 docs/images/dsh-task-dispatcher-02-settings.png,再把本段整段替换为设置页里的任务派发器

5. 按需改配置:在卡片里设置任务来源(默认 5️⃣AI,要用「进行中」就填 In progress)、拉取间隔(0 = 关闭定时)、通知通道(微信 ClawBot / flomo / macOS 任选;微信默认关,需显式打开)、自动执行(开启后每个任务单独开一个 headless 会话执行)。
预期:保存后状态行刷新,dispatcher_status 里能看到同样的值。
6. 打开省钱模式(可选;这是本版重点):在同一张卡片里勾选 「省钱模式(自动执行只在 DeepSeek 空闲时段开跑)」(默认关),然后设 时段口径(默认「官方现行(周中 09–12 / 14–18 高峰)」)、策略(默认「排队等空闲」,也可选跳过)、尾部余量(建议填 worker 超时分钟数,如 15 / 30)。
预期:展开出现时段表;状态行出现「当前时段:空闲/高峰」「下次执行时间」「排队任务:N」。

📷 【截图位 6】这张图证明省钱模式设对了怎么截:设置页 →「任务派发器」→ 停在「省钱模式」展开后的完整设置区(开关 + 时段口径 + 策略 + 尾部余量 + 时段表)敏感处理:无(注意别把顶部的工作区路径一起截进来)补图:截图存进仓库 docs/images/dsh-task-dispatcher-03-cheap-mode.png,再把本段整段替换为省钱模式设置

验证能用

7. 触发一次派发:让 agent 跑 dispatcher_run,或点面板上的立即拉取;想「不等空闲、马上跑一次」就点 「省钱模式(高峰也马上执行,仅本次)」。
预期:今日任务文件 ~/.dsh/dsh-task-dispatcher/today-tasks.md 出现条目(agent 会读它逐项执行);任务有变化时会收到一条通知。
8. 看结果:跑一次 dispatcher_status,或看面板状态行。
预期:看到「上次拉取: · 项」;开着省钱模式且当前是高峰时,还会看到「排队任务:N 项」与「下次执行时间」——任务没被立刻执行、而是排到下个空闲段,就是省钱模式生效的样子。

📷 【截图位 8】这张图证明它真的能用(最重要的一张)怎么截:触发一次后停在面板状态行,或 dispatcher_status 输出里的「上次拉取 / 排队任务 / 下次执行时间」那几行;截取范围:仅这块卡片或这段终端输出敏感处理:真实任务标题、本机路径、微信昵称都要打码或换成测试任务补图:截图存进仓库 docs/images/dsh-task-dispatcher-04-in-use.png,再把本段整段替换为用起来的效果

当前版本:v0.6.0(CHANGELOG · Releases · npm)。

配置参考(~/.dsh/dsh-task-dispatcher.json,0600)

| 字段 | 说明 | 默认 |
| enabled | 插件总开关 | true |
| dispatchIntervalMinutes | 每隔多少分钟自动拉取一次(0 = 关闭定时) | 30 |
| autoExecute | 是否自动执行(每个任务单独一个 DSH 会话,串行) | false |
| retryCooldownMinutes | 失败任务重试冷却分钟 | 60 |
| workerTimeoutMinutes | 单个执行会话的超时分钟数(到点 SIGKILL 该 worker) | 30 |
| workerPrompt | 执行会话提示词模板({title}/{content}) | 内置 |
| workerWorkspaceId | 执行会话运行的 DSH 工作区 id(空 = 默认主目录;见设置面板工作区下拉) | '' |
| projectName / projectId | 来源滴答清单(常见把 In progress 当来源) | 5️⃣AI |
| dueMode | today=今天到期/逾期;all=全部未完成 | today |
| includeUndated | 是否包含无截止任务 | true |
| notifyResult | 自动执行结束后推送每任务结果 + 批次汇总(走已开启的通道) | true |
| notifyWechat | 微信通知(经 ClawBot 网关;仅任务有变化时) | false |
| wechatGatewayUrl | ClawBot 网关地址(空 = http://127.0.0.1:51235) | '' |
| wechatTo | 微信接收人 id(空 = 自动识别扫码登录的那个微信) | '' |
| wechatStateDir | ClawBot 状态目录(空 = $DSH_WECHAT_HOME 或 ~/.dsh-wechat) | '' |
| notifyFlomo / flomoTag | flomo 通知与标签(仅任务有变化时) | true / AI/DSH/派发 |
| notifyMac | macOS 通知(仅任务有变化时) | true |
| taskFile | 今日任务文件路径 | ~/.dsh/dsh-task-dispatcher/today-tasks.md |
| cheapMode | 省钱模式:自动执行只在 DeepSeek 空闲时段开跑 | false |
| cheapPreset | 时段口径:official-2026(官方现行)/ legacy-utc(旧版 UTC 16:30–00:30 空闲)/ custom | official-2026 |
| peakWindows / peakWindowsText | 高峰时段黑名单(优惠 = 非高峰);peakWindowsText 每行 1,2,3,4,5 09:00-12:00(0=周日…6=周六,start>end 跨午夜) | 周中 09–12 / 14–18 |
| cheapTimezone | 解释高峰时段的 IANA 时区 | Asia/Shanghai |
| cheapStrategy | 高峰期策略:wait=排队到下个空闲;skip=本轮跳过 | wait |
| cheapMarginMinutes | 尾部余量(距高峰不足则排到下段;0=关闭尾部保护) | 0 |
| nextCheapStartAt / cheapQueue | 排队状态(落盘,重启不丢;自动维护,无需手改) | '' / [] |

开发

pnpm install
pnpm build && node tests/smoke.mjs

License

MIT
预览分享卡片长什么样 ↓zhengjy01/dsh-task-dispatcher
分享 · DeepSeek Harness Hub
zhengjy01/dsh-task-dispatcher

dsh-task-dispatcher — 滴答清单任务派发器

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部