类 Todoist 的待办管理,带仪表盘、智能体工具和到期提醒,适用于 DeepSeek Harness · 类 Todoist 的待办管理 + 仪表盘,内建智能体工具与到期提醒
33/100
综合分
4
GitHub 星标
658
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-todosnpm 源 · dsh-todos 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-todos @ 0.1.2
✓Node 引擎要求 >=20.11 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/20 16:14:19
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求lib/client.js:489
const response = await fetch(`${API}${path}`, {
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 管理待办清单
- 智能体读写待办
- 到期提醒
README
由 DeepSeek 最新模型翻译生成待办中心(dsh-todos)
一个 DeepSeek Harness 插件:类 Todoist 的待办管理 + 仪表盘,挂在 DSH Web GUI 的侧边栏与主面板上,并把待办开放给智能体(DeepSeek 能直接读写你的待办)。
- 侧边栏「待办」图标 → 主面板整页 UI(今天 / 即将到来 / 收件箱 / 仪表盘 / 已完成 / 回收站 / 设置)
- 侧边栏视图项带图标,六行等高等距;数字徽标等宽右对齐(点徽标也能切视图)
- 仪表盘的时间范围是分段选择器,选中项实心橙色(amber)并加粗,点击有按下反馈;编辑器里的标签选择共用同一套橙色选中态
- 编辑弹层的标题与备注都是多行输入:超长内容自动换行、竖向滚动,高度可拖拽;标题里回车保存、Shift+回车换行
- 备注在列表里只显示 3 行;更长的备注用卡片右侧的展开图标打开弹层看全文(Escape 或点遮罩关闭)
- 自然语言快速添加:明天下午3点 交报告 #Q4汇报 @写作 p1
- 仪表盘:6 个 KPI、完成/新增趋势、优先级与项目/标签分布、90 天热力图、每周目标、规则生成的洞察
- 到点提醒:官方的 shell.overlay 全局浮层,可一键完成 / 推迟到明天
展开完整文档(README 剩余 1 节)
待办中心(dsh-todos)
一个 DeepSeek Harness 插件:类 Todoist 的待办管理 + 仪表盘,挂在 DSH Web GUI 的侧边栏与主面板上,并把待办开放给智能体(DeepSeek 能直接读写你的待办)。
- 侧边栏「待办」图标 → 主面板整页 UI(今天 / 即将到来 / 收件箱 / 仪表盘 / 已完成 / 回收站 / 设置)
- 侧边栏视图项带图标,六行等高等距;数字徽标等宽右对齐(点徽标也能切视图)
- 仪表盘的时间范围是分段选择器,选中项实心橙色(amber)并加粗,点击有按下反馈;编辑器里的标签选择共用同一套橙色选中态
- 编辑弹层的标题与备注都是多行输入:超长内容自动换行、竖向滚动,高度可拖拽;标题里回车保存、Shift+回车换行
- 备注在列表里只显示 3 行;更长的备注用卡片右侧的展开图标打开弹层看全文(Escape 或点遮罩关闭)
- 自然语言快速添加:明天下午3点 交报告 #Q4汇报 @写作 p1
- 仪表盘:6 个 KPI、完成/新增趋势、优先级与项目/标签分布、90 天热力图、每周目标、规则生成的洞察
- 到点提醒:官方的 shell.overlay 全局浮层,可一键完成 / 推迟到明天
- 智能体工具:todos_list / todos_create / todos_update / todos_complete / todos_delete / todos_stats / todos_projects
- 导入导出:JSON 整库备份 + Markdown 清单
安装
给别人用:让 TA 打开 设置 → 插件 → 插件市场,搜 dsh-todos(需先装 dshmarket),或让 TA 的智能体执行下面的 install_bundle。分发渠道与发布踩坑记录不在本仓库内。
本机开发安装:用 plugin_manager 工具(或 Web 的 Plugins 页)指向本目录:
plugin_manager install_bundle target=<本目录的绝对路径>
读返回值的 application 与 warnings 判断是否真的生效——不要靠日志或页面 boot payload。
全新安装需要用 cordis_inspect_query(host Config.listConfigs、client Slots.listSubTree)复核。
⚠️ 改包名必须同时改三处,漏一处 DSH 就会加载失败:package.json 的 name、客户端 bundle 自注册的 id(lib/client.js 里的 window.__ModuleLoader__.load({ id }))、以及 profile 里的依赖与 dsh.profile.bundles 条目(后两处只能靠卸载再重装更新)。
loader 要求 bundle 的 id 与条目名完全一致,不一致时报 loaded without registering "…" via __ModuleLoader__.load。
scripts/preflight.mjs 会替你检查前两处,但它不会替你重装。
安装后,本 bundle 的 cordis.patch.yml 会插入插件行 id: todos (config 里可调 weekGoal / remindEnabled / dailyDigest)。
目录
package.json 清单:dsh.bundle.patch + dsh.client(platform=web) + exports["./client"] cordis.patch.yml 本 bundle 贡献的配置层(只插入插件行;分发文件,不含本机路径) icon.svg 插件卡片图标 LICENSE 许可证
locale/{en,zh}.json 插件在 Plugins 页的显示名与描述
lib/index.js 宿主半入口:apply(ctx, config) lib/store.js 数据层:单文件 JSON 持久化 + 规范化 + 迁移钩子 lib/select.js 派生视图:侧边栏计数、仪表盘统计(纯函数) lib/quickadd.js 自然语言解析(纯函数,中英双语语法) lib/actions.js 界面与工具共用的写动作 + Markdown 渲染 lib/tools.js 七个 todos_* 智能体工具(原始 JSON Schema,零 import) lib/routes.js Web GUI 的 HTTP 路由 + 回环信任围栏 lib/remind.js 到点提醒的判定(纯函数) lib/client.js 客户端半:手写的 window.__ModuleLoader__ bundle(唯一构建产物) scripts/preflight.mjs 发布前自检(npm pack/publish 自动跑) test/ 四套测试,见下 dev/ 开发期可选配置(不随插件分发)
设计取舍(为什么长这样)
零依赖、零 import。 宿主半不 import 任何 @deepseek-ai/ 包,客户端半只
require('react')(平台冻结模块表里的)。因此这个包没有 dependencies、
没有 peerDependencies、不需要构建工具链,也不会因为 DSH 升级而链接失败。
代价是数据层自己写(store.js),而不是用 ctx.storageDomain。
数据是单个 JSON 文件。 落在 $DSH_HOME/dsh-todos/todos.json,写入是「临时文件 + rename」的原子替换,读坏时先备份现场再重开。单文件让「整库导出/导入」退化成一次文件拷贝。
提醒不往会话里注入消息。 宿主确实可以 agent.inject() / agent.followup() 把提醒塞进会话,但那会让模型在没有用户输入的情况下自己发起一轮。改为渲染到官方 shell.overlay 浮层:DSH 开着就能看到,一键完成或推迟,不产生模型开销。
客户端 bundle 是手写的,没有构建步骤。 产物格式是
window.__ModuleLoader__.load({ id, factory }),用 React.createElement,不要用 JSX。
主机端的客户端 HMR 每 500ms 轮询 bundle 的 mtime/ctime/size,所以改 lib/client.js 即时生效,不必重启。
样式只引用真实存在的主题 token——这一条会咬人。 主题包(@deepseek-ai/dsh-client-ui-theme)只声明 token(400 多个),真实定义在 shell 的样式表里,而 shell 只定义了 95 个。引用不存在的 token 不会报错:那条声明静默失效并回退继承,于是可能得到「浅底浅字」这种完全看不见的按钮(本项目真的踩过)。
所以:
- 用 test/theme-tokens.json(从 shell CSS 抽出的真实名单)当唯一依据;
- test/client-render.mjs 会扫描 lib/client.js 里所有 var(--dsw-) 引用并逐个比对,引用不存在的 token 直接让测试失败;
- 拿不准某个控件该怎么配色时,去 shell CSS 里搜宿主自己的同名控件(例如 --dsw-alias-button-primary-fill + --dsw-alias-label-primary-foreground 就是宿主主按钮的固定搭配),照抄它的 token 组合最稳。
准入交给官方 connection,不要自己写第二份信任判定。 本插件的路由注册为 exact,在路由表里先于 dsh-client-connection 那条 /api prefix 匹配,所以官方鉴权不会自动落到这里 —— 必须显式委托 connection.requestRejection():它把 Connection 的 Host/Origin 检查连同浏览器会话鉴权应用到别的 Web 路由上,与官方 /api 同一套口径。这样「浏览器 → 转发/反向代理 → 回环 server」的部署也能用。
行为变化(有意的):回环请求不再免鉴权,与官方 /api 一致。浏览器请求天然带会话 cookie,无感;本机裸 curl 读这些路由会得到 401 需要已登录的浏览器会话。
这比「只校验 Host」更正确 —— 这些路由在官方鉴权之外,只信 Host 等于把待办库(可读、可写、可删除)无鉴权暴露给任何能访问该端口的人。
回退:connection 缺席、requestRejection() 抛异常、或返回意料之外的值时,一律退回原来的纯回环判定 —— 宁可用旧的(更严的)姿态,也不要因为鉴权服务故障把面板打死,更不能静默放行。
开发
客户端半(lib/client.js)天生是热的:dsh-client-hmr 每 500ms 轮询每个 bundle 的 mtime/ctime/size,改完约 1 秒生效,不用重启、不用刷新。
宿主半(lib/*.js)是 ESM,Node 按 URL 永久缓存模块,而 plugin_manager 的 disable/enable 只重挂 loader 行、不会重新 import —— 所以默认改一行就要重启整个 DSH。
想让宿主半也热起来,把 dev/cordis.patch.dev.yml 那段追加到你自己的 profile 补丁层 ($DSH_HOME/profiles/<profile>/cordis.patch.yml)并改成你的检出路径,重启一次即可。
那一段刻意不放在插件自己的 cordis.patch.yml 里:那是要分发给别人的文件,写死某个人的本机绝对路径没有意义。
改 package.json、改包名、或替换已安装的包,一定需要重启 DSH。
测试
node test/quickadd.mjs # 自然语言解析:26 例
node test/smoke.mjs # 数据层 + 路由处理函数(假 req/res):25 例
node test/tools.mjs # 七个 Agent 工具:19 例
node test/client-render.mjs # jsdom + 真实 React 渲染客户端半:49 例
node scripts/preflight.mjs # 发布前自检(不跑测试,只查分发契约)
前三套零依赖。第四套需要 jsdom 与 React,装在插件包之外的 ../dsh-todos-dev/(插件本身保持零依赖):
cd ../dsh-todos-dev && pnpm install
client-render.mjs 会真的把面板渲染进 jsdom、真的点击、断言发出的 HTTP 请求——「面板点开是空白」这类问题因此能在本地抓到,而不必靠目视。
数据与口径
- 所有日期按本地时区的 YYYY-MM-DD;全天任务视为当天 00:00 到期。
- 侧边栏计数只统计未完成、未删除的任务。
- 完成率 = 本期完成 ÷ (本期完成 + 本期新增),口径在仪表盘的 KPI 上方可切换范围。
- 连续完成天数从今天(或昨天)往前数,只要当天有完成记录就连续。
- 回收站保留 30 天,插件每次激活时清理过期内容。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
houdinicc/dsh-todos
类 Todoist 的待办管理,带仪表盘、智能体工具和到期提醒,适用于 DeepSeek Harness · 类 Todoist 的待办管理 + 仪表盘,内建智能体工具与到期提醒
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,724已汉化DSH
71.1