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

任务启动器 jackylong1987/dsh-task-launcher

DeepSeek Harness
jackylong198720 天前有提交已提供中文文档扫描:未发现敏感能力

从会话页签一键把定时任务提醒投进当前会话

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jackylong1987/dsh-task-launcher
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(138 字)↓

DSH Web 插件:在会话标题下的页签行加一个「任务」入口——下拉列出所有启用的定时任务,点一条确认后把它的提醒原文投进当前会话立即执行;另有一条内置兜底项。纯客户端、只读、不改核心。|会话页签行里的「任务」入口:选一条启用的定时任务,确认后它自己的提醒原文会投进当前会话。

README

由 DeepSeek 最新模型翻译生成
dsh-task-launcher 给 DSH(DeepSeek Harness)Web GUI 加一个「任务」入口:落在会话标题下面那行页签里(位置=「会话文件」标签的左边,图标 IconChecklistOutlineRegular + 文字「任务」)。 - 点一下弹出下拉,自动列出所有 status === 'active' 的定时任务(title + 下次执行时间)。 - 点某条任务 ⇒ 先弹确认框(写清任务名 + "将在当前会话立即执行" + 当前会话标题);确认后才把该任务自己的 prompt 原文当成用户消息投进当前会话。 - 以后用户新建任何启用任务,都会自动出现在下拉里,零代码改动。 - 下拉里另有一条内置兜底项「未缴费清单(缴费台账)」走原来的硬编码文本,作为读不到定时任务时的兜底(两组之间有小标题分隔)。 - 纯客户端插件:宿主半边(lib/index.js)故意是空的,不注册路由、不读文件、不落盘。 - 不改核心:DSH 自带包一个字节都没动;不碰台账文件。
展开完整文档(README 剩余 1 节)
dsh-task-launcher

给 DSH(DeepSeek Harness)Web GUI 加一个「任务」入口:落在会话标题下面那行页签里(位置=「会话文件」标签的左边,图标 IconChecklistOutlineRegular + 文字「任务」)。

- 点一下弹出下拉,自动列出所有 status === 'active' 的定时任务(title + 下次执行时间)。
- 点某条任务 ⇒ 先弹确认框(写清任务名 + "将在当前会话立即执行" + 当前会话标题);确认后才把该任务自己的 prompt 原文当成用户消息投进当前会话。
- 以后用户新建任何启用任务,都会自动出现在下拉里,零代码改动。
- 下拉里另有一条内置兜底项「未缴费清单(缴费台账)」走原来的硬编码文本,作为读不到定时任务时的兜底(两组之间有小标题分隔)。
- 纯客户端插件:宿主半边(lib/index.js)故意是空的,不注册路由、不读文件、不落盘。
- 不改核心:DSH 自带包一个字节都没动;不碰台账文件。

落点(关键:为什么走 DOM 注入)

| 项 | 值 |
| 落点 | 会话页签行 div[role=tablist][data-conversation-tabs](核心 dsh-client-ui-conversation 渲染) |
| 位置 | 「会话文件」按钮(#dsh-long-session-files-btn)紧左边;它不在时退回「轨迹」右边 |
| 会话 id | 从宿主写在正文容器上的 [data-conversation-session] 现取 |
| 图标 | @deepseek-ai/dsh-client-ui-primitives 的 IconChecklistOutlineRegular,size: 16(与旁边页签口径一致) |
| 组件 | createTaskMenuView(host) —— 与 slot 无关,只依赖 host 注入的读/投递/会话能力 |

核心没有"往那行塞一个按钮"的 slot(conversation.view 是 list 型页签,但登记进去=把会话正文整体换成那个视图,不是"加一个入口")。而「会话文件」本身就是第三方插件 dsh-long-plugins 用 DOM 注入放进去的,所以本插件沿用同一机制:

- 注入节点 #dsh-task-launcher-task-tab,MutationObserver 保证被宿主重渲染抹掉后能补回;
- React 树用 reactDom.createPortal 渲染进注入节点(事件照常工作,宿主重渲染抹不掉 React 树);
- 外观不硬凑 padding:从旁边真实页签读 fontSize/fontWeight/lineHeight/letterSpacing/fontFamily/color 同步过来;垂直位置由 CSS 的 align-self:flex-start + padding:0 0 9px 保证(页签容器是 display:flex 且没有 align-items ⇒ 默认 stretch;不写 align-self 会被拉满整行高再被 align-items:center 居中,就会偏高约半行——这是用户实测到的偏移,已修)。

数据来源(两个远程都读,取并集)

| 远程 | 作用 | 返回 |
| ctx.remote.schedule.catalog() | 全局任务表(所有会话) | Result<ScheduleCatalogEntry[]>,含 status / sessionId |
| ctx.remote.schedule.list({ sessionId }) | 该会话的任务 | Result<ScheduleRecord[]> |

为什么必须两个都读:宿主 list 的实现是
task.sessionId === request.sessionId && task.status === 'active'(严格相等,见
dsh-schedule/lib/index.js 的 async list)。客户端解析出来的 sessionId 只要与任务绑定的那个不完全一致(换过会话、子会话、DOM 上读到别的会话),list 就返回空数组——而任务其实在 catalog 里。只读 list 的结果就是用户看到的那句误导文案「还没有自动化任务」(已修)。

两条支路各自回收成败,视图层区分:

- 任一支路读失败 ⇒ 显示 任务读取失败:(内置兜底项仍可用);
- 两支路都成功且确实没有 ⇒ 才显示「还没有自动化任务」。

关键字段(@deepseek-ai/dsh-schedule 的 lib/types/types.d.ts):id / kind / title / prompt (ScheduleRecord)+ sessionId / status / lastDelivery?(ScheduleCatalogEntry)+ Record 永远有的 scheduledAt。

投递请求

ctx.remote.session.prompt({
requestId: <客户端造的 UUID v4 字符串>, // SessionRequestId = Branded<'session-request-id'> sessionId: <当前会话 id>, mode: 'queue', // 'queue' 不打断;'steer' 抢插队(改 client.js 的 MODE)
content: [{ type: 'text', text: <该任务的 prompt 原文> }],
clientTimeZone: 'Asia/Shanghai',
})

返回是 Result 信封 { ok: true, value: { accepted: true } } / { ok: false, error } —— 按 .ok 判。

安装

1) profile 依赖里加 link: $DSH_HOME/profiles/web/package.json
dependencies["dsh-task-launcher"] = "link:<插件所在目录>"bash
cd "$DSH_HOME/profiles/web" && pnpm install

2) 再把 "dsh-task-launcher" 加进 dsh.profile.bundles

(分两步是刻意的:先有 symlink、再改 bundles)

让用户看到

刷新浏览器页面(Ctrl/Cmd-R 或 F5)。不需要重启 dsh web。

自检(离线,桩 React / 桩 primitives / 桩 DOM / 桩 ctx) bash
node <工作区>/plugin-lab/_verify/verify.mjs

期望:通过 N / 失败 0

回滚 bash
cd "$DSH_HOME/profiles/web"
cp -p package.json.bak-tasks-<时间戳> package.json
pnpm install # HMR 会把插件行摘掉

只想临时停用:把插件 client/client.js 的 SLOT_BINDINGS 置成 [](改完刷新页面即生效)。

许可

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

从会话页签一键把定时任务提醒投进当前会话

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