READMESource: main@300e9ffb
此刻 · 任务排程(DSH 插件)
英文名 Cike / Moment,技术包名
dsh-taskboard(本地开发版)。 一句话:贴着实时时间排今天的任务,到点弹窗提醒。
把「任务排程小窗」重做成了 DeepSeek Harness 的 Web 插件:左侧栏入口 + 贴边悬浮小窗, 记录今天要做的事,按优先级与截止时间自动排进上班时间;到点提醒;支持未来 7 天和虚拟时间轴。 放不下的明确列出来,不自动删除、不自动降级。
数据全部保存在本机 ~/.dsh/dsh-taskboard/state.json,不联网、不登录。
完整需求、时间字段定义、操作清单与去重决定见 需求与操作清单.md。 新用户请直接看 使用教程.md;安全审计见 安全审计.md。
形态
- 完整面板:左侧栏「任务排程」→ 输入框 + 时间轴 + 没排上 + 已完成 + 页脚统计。
- 悬浮小窗:默认吸附在右侧,收起时是一条 13px 的淡蓝细条;点击细条展开(不再悬停自动弹),细条可上下拖动/滚轮/↑↓调整位置。 按住标题栏可拖动,松手按窗口中心吸附到左/右边缘;位置、开合、左右侧会记住。 卡片上的 × 只是收起成细条,不会把小窗彻底弄丢;要彻底隐藏/重新打开用设置里的「悬浮小窗」开关;关闭后页头会出现「打开悬浮窗」。
- 跟随主题:直接使用 DSH 的
--dsw-*主题变量,深色/浅色界面都自动适配。
功能
| 区块 | 行为 |
|---|---|
| 记录 | 一行文字即一件事;回车添加;可顺带选 P0–P3、预计耗时、截止日期/时刻;预计耗时旁有「到下班」一键按当前/固定开始到下班算时长 |
| 今天从现在 | 今天自动添加任务会从当前时间接着排,不回填到早上;页脚「可用 / 富余」也按当前时间 → 下班计算 |
| 提醒 | 任务到点弹「现在开始」,下个任务开始前弹「N 分钟后开始」;设置里可关、可调提前分钟、可关提示音 |
| 返回对话 | 在完整面板左上角「返回对话」,一键切回刚才的会话;只切主面板,不改变当前会话 |
| 固定时间 | 「固定时间」里可填开始/结束,或点「现在」;结束留空 = 只固定开始;开始落在午休/上班前会自动落到最近的可工作分钟 |
| 未来 7 天 | 页头小日历按钮:今天 + 未来 7 天,每天独立时间轴;今天下班结束归档后,未完成的任务才会顺延到次日 |
| 虚拟时间轴 | 独立草稿:自由加任务、调顺序/固定开始,实时预览;确认后覆盖到选中日期;可导出/导入 JSON |
| 排程 | 已过期 → 截止近 → 优先级高 → 添加顺序;从最早的空白开始连续铺满 |
| 自动分段 | 长任务先填满上午,午休后接着排;绕开固定任务继续填,不把长任务整体挪到下午;每段单独显示「续」 |
| 实时高亮 | 每 15 秒刷新;正在进行的任务亮蓝、带「进行中 · 剩 X」;时间轴上有「现在」标记线 |
| 超时 | 计划结束还没打勾会标「超计划 X」;编辑器里 +15/+30 分钟延长、也可直接改预计/实际;后续任务自动顺延 |
| 提前完成 | 勾选即完成,按计划分段自动估一个实际用时;已完成里显示「实 X / 提前 X」;可手改实际 |
| 从现在重排 | 页头按钮把还没做的任务从当前时间重新排,「恢复全天」还原全天计划;跨天自动失效 |
| 约束 | 不占用午休;午休/下班/工作时段可在设置里改;单段小于 10 分钟的碎片不切开 |
| 固定 | 可指定开始时刻;固定的长任务也在午休处自动分段;撞午休/下班/别的固定任务只标红,位置不动 |
| 超载 | 需求总时长 > 可用时长时显示超载量;总时间都不够的任务整件进「没排上」,不会只排一半 |
| 处置 | 没排上的可一键顺延到明天或删除,由使用者决定 |
| 完成 | 勾选后进入「已完成」;可撤销 |
| 跨天 | 次日首次打开/跨天轮询时先按天归档,再把昨天没打勾的顺延到今天并标「顺延」;当天没下班不会顺延;首次运行不搬运历史 |
| 只改今天 | 临时改上下班/午休(如加班到 21:00),次日自动恢复 |
| 数据 | 原子写入 JSON、自动留上一份备份;可导出/导入;兼容旧版小窗的 state.json |
| 历史 | 按天归档、只读查看,不参与当天排程 |
安装(本地开发)
dsh plugin --profile desktop add github:fffgfffff/cike-taskboard
也可以从本地目录安装(在仓库根目录执行):
dsh plugin --profile desktop add .
首次安装/升级后,DSH 的 HMR 会重新组合 profile;如果界面没出现,刷新一次页面即可。
也可以在「设置 → 插件」里确认 dsh-taskboard 已启用。
卸载
dsh plugin --profile desktop remove dsh-taskboard
数据目录 ~/.dsh/dsh-taskboard/ 不会自动删除,需要时手动清理。
开发
cd dsh-taskboard
node scripts/build.mjs # src → lib(客户端 bundle + 宿主入口 + 共享内核)
node --test tests/*.test.js # 排程内核 / 宿主存储 / 客户端冒烟,45 项
源码结构:
src/
scheduler.js 排程内核:宿主、浏览器、测试共用同一份(不重复实现)
host.js 宿主半侧:本地 JSON、跨天归档/顺延、/dsh-taskboard 路由
client/
00-core.js 数据仓库、主题化 CSS、图标
10-ui.js 弹层、设置、历史、日历
15-virtual.js 虚拟时间轴
20-page.js 完整面板、时间轴、行内编辑器
30-dock.js 贴边悬浮小窗
40-reminders.js 到点提醒
99-apply.js 插槽注册(sidebar.panellist / main / shell.overlay)
scripts/build.mjs 拼接构建 + 语法检查
lib/ 构建产物(DSH 实际加载这里)
浏览器半侧必须是一个普通副作用脚本:顶层调用
window.__ModuleLoader__.load({ id, factory(require) }),React 由 DSH 的模块种子表提供,
因此不打包 React。宿主半侧复用同一份 scheduler.js,跨天逻辑与界面看到的排程不会漂移。
与旧版桌面小窗的关系
旧版 taskboard\(Windows Forms 独立窗口)保留不动;本插件是同一套需求在 DSH 里的重做:
- 保留了字段、超载/没排上/顺延/归档/只改今天等行为;
- 按新反馈调整:长任务不再整体躲到下午,而是先填满上午、午休后接着排;时间轴实时高亮当前任务;快速添加支持「固定时间 / 从现在开始」;
- 窗口形态从「独立桌面窗口」改成「DSH 内的贴边悬浮小窗 + 完整面板」;
- 数据从
taskboard\data\state.json改成~/.dsh/dsh-taskboard/state.json, 设置里可以直接导入旧文件。
超时 / 提前完成怎么操作
- 任务超过了预计时间
- 计划结束时间一过、又没打勾,任务行会出现「超计划 X」。
- 点任务行展开编辑器:
+15 分钟/+30 分钟直接延长,后面的任务自动顺延;也可以直接改「预计耗时」。 - 如果整天的计划已经偏了,点页头 「从现在重排」:只把还没做的任务从当前时间重排,之前的时段不再参与;点 「恢复全天」 回到完整计划。
- 提前完成任务
- 点左侧勾选框即可;系统会按计划分段估算一个实际用时(例如计划 09:00–10:00、09:30 勾选 → 实际 30 分钟)。
- 已完成区显示「实 30m / 提前 15m」,完成时刻也保留。
- 想让后面的任务立刻前移,点 「从现在重排」;不点则保持全天计划。
- 实际用时不准确:取消勾选 → 在编辑器「实际」里改 → 再勾选;已有实际值不会被自动覆盖。
- 实际耗时
- 编辑器里的「实际」字段随时可填;超额完成就填真实投入(如 90 分钟),已完成区会显示「超 30m」。
- 一键填到下班
- 预计耗时旁的 「到下班」:按当前时间(固定时间时按开始时间)到下班的工作分钟数自动填入,午休自动扣掉。
- 任务编辑器里也有「到下班」,按固定开始时刻(没有固定则按现在)算到下班。
- 截止时间用「截止(最后期限)」的日期/时刻字段;它和「结束时间」不是一回事:结束只用于折算耗时,截止用于排序和过期提醒。
到点提醒
- 设置 → 提醒:总开关、下个任务提前 N 分钟、提示音。
- 今天有任务到第一段开始时,右下角弹出「现在开始」;下个任务进入提前窗口时弹「N 分钟后开始」。
- 弹窗上可以直接 完成 或 知道了;同一任务同一开始时刻只提醒一次。
- 只提醒今天的时间轴;未来日期和虚拟时间轴不会弹。
未来 7 天
- 页头小日历按钮 → 选 今天 + 未来 7 天;每一天有独立时间轴,添加任务只进选中日期。
- 今天下班结束、跨天归档后,昨天没完成的任务才会顺延到今天;当天没结束不会提前搬。
- 未来日期的「到下班」按上班时间算全天,不受今天的实时时间影响。
虚拟时间轴
- 页头 虚拟 按钮:独立草稿,随便加任务、上移/下移、设固定开始;右侧实时预览排程。
- 覆盖到选中日期:确认后清空该日期现有任务,换成虚拟时间轴(包括已完成)。
- 导出 下载 JSON;另一台设备点 导入 选这个文件,就得到同一份虚拟时间轴。
今天从现在开始
- 今天在上班时间内用「自动排」添加任务时,会自动把排程锚点设到当前时间:新任务从当前时间接着排,不会回填到早上。
- 页脚「可用 / 富余」按 当前时间 → 下班 计算,不受上午已经排过什么影响。
- 想回到全天视图,点「恢复全天」;之后再添加自动任务会重新从现在开始。
已知边界
- 自动分段后,同一任务在时间轴上会出现多行(第二段起标「续」);勾选/编辑任意一段都是操作整件事。
- 「固定时间」的结束时间按上班时间折算耗时:例如 10:00–15:00、午休 1 小时,实际计 4 小时工作,排出来是 10–12 + 13–15。
- 单段不足 10 分钟的碎片不切开,留给后面的小事,避免把任务切成没意义的几分钟。
- 总可用时间都不够时,整件进「没排上」,不会只排一半。
- 悬浮小窗吸附的是 DSH 窗口内的左右边缘,不是操作系统桌面边缘。
- 历史最多保留 120 份按天归档,超出后自动清理最旧的。
- 拖动排序只影响「截止与优先级都相同」时的先后,不会覆盖截止/优先级规则。
悬浮小窗不见了?
按顺序试:
- 看 DSH 窗口最右侧有没有一条淡蓝细条:点一下就会展开。
- 打开「任务排程 → 设置 → 悬浮小窗」,把「在窗口右侧显示贴边悬浮小窗」打开;只有被彻底关闭时,任务排程页头才会出现「打开悬浮窗」按钮。
- 打开「任务排程 → 设置 → 悬浮小窗」,把「在窗口右侧显示贴边悬浮小窗」打开。
- 如果之前点过小窗上的 ×,旧版本会把小窗彻底关掉;新版本会自动迁移成「只收起成细条」。
No comments yet. Be the first to write one.