dsh-session-todos:为每个 DSH 会话提供独立待办清单

前言

在 DeepSeek Harness(DSH)里长时间对话时,需求、子任务和截止日期往往散落在消息里,刷新或换会话后不易对照。模型自带的 todo_write 面向的是执行计划,和「这一通会话里要跟踪的事项」不是同一份数据。社区插件 dsh-session-todos(维护者 Tpihis,分类:工作流)在输入框上方提供按会话隔离的待办面板,列可由用户自定义;界面与模型通过 session_todos 工具读写同一份存储,适合需要人机共管清单的场景。

这是什么

dsh-session-todos 是 DSH 的 bundle 插件:每个会话有自己的事项与列配置,默认只有「序号|事项」两列。未创建清单时不占界面空间;展开后宽度与内边距对齐原生任务框。数据落在宿主存储域 session_custom_todos(本机路径约为 ~/.dsh/storages/session_custom_todos/),不在插件目录内,卸载插件不会删除已有数据。

项目地址:SkillHub 目录页、GitHub 仓库(MIT,package 版本 1.0.0)。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;插件在当前 dsh 进程权限下运行,安装前建议自行审阅源码与许可证。

核心功能

下面介绍 README 中已列出的能力,均可在启用后直接使用。

列与事项

  • 自定义列:文本、数字、日期三种类型;可新增、重命名、左右移动、删除。事项列可改名但不可删除。
  • 事项操作:新增、编辑、删除(带确认)、勾选完成、再次勾选恢复未完成、上移 / 下移。
  • 搜索与筛选:搜索所有列;筛选全部 / 未完成 / 已完成。
  • 批量操作:批量完成、恢复、删除,作用于当前筛选结果。
  • 撤销:最近 20 次操作可回退(含删除列及其数据);没有重做。
  • 导出 CSV:导出全量清单(非当前筛选),带完成标记,兼容中文 Excel,并对公式注入做了转义。

与 AI 共用数据

面板上的勾选与编辑,模型通过宿主工具 session_todos 能读到;模型写入的事项也会在面板显示。二者走同一宿主方法,不是两套列表。

对模型说自然语言即可,例如:

把这些需求加入当前会话待办,并增加分类、优先级和截止日期列。

需区分:模型侧的 todo_write 是它自己的执行计划,与本插件的会话待办无关。

数据边界与限制

  • 每个会话最多 2000 条事项、20 个数据列;列名最多 80 字符,单元格最多 10000 字符。
  • 并发写带 revision 检查:用旧版本号提交会被拒绝,需刷新后重试。
  • 会话分支(fork)默认空白清单,不继承父会话。
  • 会话删除后,对应域记录不会自动清理。

已知行为

界面的写操作经斜杠命令 /session-todos 落到宿主;DSH 会把命令生命周期渲染成对话里的命令卡片,插件无法完全去掉。为可读性,写操作会返回中文摘要(如「已完成 1 条(2/3 已完成)」),显示在卡片摘要行。README 说明:若要做到完全不产生卡片,需改用插件自建 typert RPC,曾有一版因桥接挂起导致面板写入锁卡死而未采用当前折中方案。维护者注明未在第二台机器、其他 DSH 版本或其他操作系统上验证。

安装与启用

在 DSH 里装插件是两步,只做一步不会加载 bundle。

第 1 步:装依赖 —— dsh plugin --profile <name> <args...> 只是 profile 目录里的 pnpm 转发,负责让包在 profile 里可解析:

git clone https://github.com/Tpihis/dsh-session-todos.git
cd dsh-session-todos
dsh plugin --profile web add "$PWD"

将 web 换成你实际使用的 profile 名。

第 2 步:启用 bundle —— 把包名写进 profile 的 dsh.profile.bundles,没有与第 2 步等价的单独 CLI:

  • GUI:侧边栏「插件」面板里打开 dsh-session-todos;
  • 或 agent 调 plugin_manager:set_bundle,target = dsh-session-todos,enabled = true;
  • 或 plugin_manager 的 install_bundle,target 指向本目录(安装 + 启用)。

验证 bundle 是否出现在列表中:

node -e 'console.log(require(process.env.HOME+"/.dsh/profiles/web/package.json").dsh.profile.bundles)'

名字出现在输出里,且插件面板显示已启用,才算完成。宿主侧可半即时生效;客户端通常需刷新页面(F5) 才会加载新代码。没有 pnpm run dev:web 时,客户端插件不会自动热更新。

典型用法

  1. 启用 bundle 并刷新 Web 客户端后,打开任意会话。
  2. 在输入框上方查看「会话待办」摘要;尚未创建清单时不显示,点开即可编辑。
  3. 需要结构化字段时,在面板里加列,或直接用上文示例让模型追加列并写入事项。
  4. 筛选未完成项后做批量完成;误操作可用撤销(最多 20 步)。
  5. 需要归档或表格分析时,用 CSV 导出全量数据。

适用场景与注意

适合:单会话内跟踪需求与子任务、与 agent 共维护同一清单、需要自定义列(优先级、截止日期等)且要会话隔离的工作流。

注意:写操作会在对话里留下命令卡片;大量自动化写入时对话流会更「碎」。数据上限与 fork 不继承等边界见上文。插件依赖宿主存储与 DSH 命令/UI 机制,升级 DSH 或换环境前宜在测试 profile 先验证。

结尾

dsh-session-todos 把「会话级待办」做成与界面、工具同源的数据面,补上了与模型内置 todo_write 不同的跟踪方式。安装时务必完成依赖安装与 bundle 启用两步,并刷新客户端。

  • 目录页:https://www.skillhub.cn/plugins/Tpihis/dsh-session-todos
  • GitHub:https://github.com/Tpihis/dsh-session-todos
羽毛球分组比赛记分
小程序二维码

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

小夜