dsh-todolist:在 DSH 侧栏挂上看板与甘特图的项目进度管理器

前言

在 DeepSeek Harness(DSH)里做智能体或日常开发时,任务往往散落在对话、笔记和外部工具里,和当前工作区并不在同一块界面。社区插件按「一切皆插件」的思路扩展宿主能力;dsh-todolist 走的是客户端路线:把一块自带看板与甘特图的页面接到左侧栏,点开即用,数据只留在本机 localStorage,不额外发网络请求。下面按「是什么 → 能做什么 → 怎么装 → 怎么用」说明。

这是什么

  • 包名:dsh-todolist(npm 描述版本 0.1.0)
  • 侧栏入口:标签 ToDoList(面板标题为「项目进度管理器」)
  • 维护者:ericddm
  • 分类:客户端插件(platform: web,依赖宿主提供 webServer)
  • 许可:MIT
  • 仓库:github.com/ericddm/dsh-ToDoList

实现上是单文件 HTML 页面(默认 assets/index.html),由插件宿主半身通过同源路由挂在 iframe 里;界面没有重写成 React 组件,看板拖拽、甘特图等交互保持原样。

核心功能

资料中写明的能力如下。

看板视图:待处理、处理中、完成待审核、已完成四列,卡片可拖拽换列。

甘特图视图:按截止日期排布任务条,便于查看截止压力。

项目分组:左侧项目列表,每个项目一套看板;项目内有 5 天内到期的任务时,列表上显示小红点。

紧迫度分级:逾期、今天、3 天、7 天、14 天、30 天,颜色自动区分。

本地数据:存在 DSH 渲染进程同源下的 localStorage,键名为 sh-pm-v1;结构包含 projects 与 activeId,项目内任务含 id、title、due、col 等字段。

导出与导入:页面顶栏可复制或下载 JSON,换机器时可整份迁移;覆盖导入会二次确认。

自定义页面(可选):可用环境变量 DSH_TODOLIST_HTML、插件目录下 config.json 的 html 字段,或直接替换 assets/index.html;路径无效时回退到自带页面。自定义页面若要用顶栏导入导出,需把数据写在同一键 sh-pm-v1。

安装与启用

前置条件:DSH 客户端(桌面版或带 Web 前端、且 webServer 可用)+ Node.js ^22.19.0 || >=24.0.0。

README 提到可以直接让 DSH 从 github.com/ericddm/dsh-ToDoList.git 安装;也可以先拿到代码再装进 profile。手动流程如下。

1、拿到代码

git clone https://github.com/ericddm/dsh-ToDoList.git

也可下载 ZIP 解压,效果相同。

2、装进 profile

将 <插件目录> 换成解压后的绝对路径,--profile 按实际 profile 名修改(桌面版一般为 desktop)。Windows 上 dsh 常在安装目录的 win\resources\runtime\cli\bin\dsh.cmd:

& "D:\Program Files\DeepSeekHarness\win\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "C:\path\to\dsh-ToDoList"

Linux / macOS 或已将 CLI 加入 PATH 时:

dsh plugin --profile desktop add /abs/path/to/dsh-ToDoList

成功时会看到类似 dependencies: + dsh-todolist 0.1.0 <- ...。若退出码为 1 但已打印该行,可能是 profile 里其他插件版本冲突,与本插件无关。

3、彻底重启 DSH

关闭所有窗口与后台进程后重新打开。侧栏「日程」下方应出现 ToDoList。客户端模块在启动时扫描并缓存包元数据,热加载不会重新扫描新装插件。

卸载(不删除 localStorage 数据):

& "D:\Program Files\DeepSeekHarness\win\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop remove dsh-todolist

卸载后同样需完整重启 DSH。

典型用法

  1. 打开侧栏 ToDoList,在默认演示项目「示例项目 · 科创中心」中熟悉看板与甘特图;若不需要示例内容可直接删除。
  2. 新建项目与任务,拖拽卡片变更列,在甘特图里对照截止日期。
  3. 需要备份时:顶栏「导出」复制或下载 JSON;恢复时「导入」并确认覆盖(会显示旧项数与新项数)。
  4. 若曾用浏览器 file:// 单独打开过同款 HTML,数据与 DSH 内不同源;用导出再导入即可合并到 DSH 侧。
  5. 想确认当前托管的是哪份 HTML,在打开面板后请求同源接口:
GET /dsh-todolist/status

返回 JSON 中含 page、source(如 bundled)等字段。

长期固定自定义页面可在插件目录创建 config.json(参考 config.example.json):

{ "html": "D:\\我的项目\\index.html" }

或设置环境变量 DSH_TODOLIST_HTML 指向 HTML 绝对路径。改配置或替换 assets/index.html 后,重新点开面板即可,一般不必重启 DSH。

适用场景与注意

适合:希望在 DSH 同一窗口内管理多项目看板与甘特图、且不希望任务数据上云的开发者。

宿主与权限:插件以当前 DSH 进程权限运行,安装前宜阅读仓库源码与 MIT 许可证,自行判断是否满足安全与合规要求。

排障摘要(来自 README):

现象 处理方向
侧栏无 ToDoList 未完整重启;或查 profile 的 package.json 里 dsh.profile.bundles 是否含 dsh-todolist
面板一直转圈 webServer 不可用或端口冲突
页面不像自定义版本 查 /dsh-todolist/status 是否回落 bundled
安装报 atomic-write: timed out 删除 profile 下残留的 package.json.lock 后重试

首次打开自带示例数据,不代表真实项目进度。

结尾

dsh-todolist 把看板加甘特图的项目进度页嵌进 DSH 左侧栏,数据落在本机 sh-pm-v1,并提供顶栏 JSON 搬移与可选自定义 HTML 托管。社区目录页:SkillHub - dsh-ToDoList;源码与完整说明见 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜