前言¶
在 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。
典型用法¶
- 打开侧栏 ToDoList,在默认演示项目「示例项目 · 科创中心」中熟悉看板与甘特图;若不需要示例内容可直接删除。
- 新建项目与任务,拖拽卡片变更列,在甘特图里对照截止日期。
- 需要备份时:顶栏「导出」复制或下载 JSON;恢复时「导入」并确认覆盖(会显示旧项数与新项数)。
- 若曾用浏览器
file://单独打开过同款 HTML,数据与 DSH 内不同源;用导出再导入即可合并到 DSH 侧。 - 想确认当前托管的是哪份 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 仓库。