dsh-plugin-memo:DSH 侧边栏待办与备忘插件

前言

DeepSeek Harness (DSH) 的 Web UI 本身是一个对话界面,开发者在使用时往往需要在对话之外维护待办事项和临时笔记。这类信息如果分散在聊天记录、外部笔记软件或浏览器书签里,查找和整理会比较麻烦。DSH 插件系统允许扩展 UI 与行为,但大多数现有插件仅提供辅助功能,缺乏一个本地优先、与对话上下文联动的记事与待办面板。

dsh-plugin-memo 是一个轻量级的笔记与待办面板插件,通过 DSH 的插件机制集成到侧边栏与右侧栏中,提供待办分栏、多窗口备忘、拖拽排序和行内编辑等功能,所有数据存储在本机 JSON 文件中,无需联网或账号。

功能概览

  • 待办分栏:左侧「工作」、右侧「个人」两列待办,回车添加,完成项单独归入「已完成」区,顶部显示完成时间。
  • 已完成区:每栏下半部分为已完成,新完成的任务排在最前,灰色文字不划线,便于快速确认。
  • 拖拽排序:按住待办行拖动可在栏内调整顺序(上半区/下半区各自独立),顺序持久化,拖动时有插入指示线。
  • 行内编辑:直接点击待办文字即可就地修改,回车或点击别处保存,Esc 取消,没有多余编辑按钮。
  • 多窗口备忘:左侧 2×2 四个窗口 + 右侧一个完整大窗口,可同时记录多处内容。
  • 右侧栏备忘:最大的「主要备忘」窗口也是右侧栏的一个页签,聊天时打开右侧栏即可随手记,与主面板内容实时同步。
  • 自动保存:备忘边写边存(600ms 防抖),失焦、切页签、关页面时立即落盘,标题旁显示「保存中… / 已自动保存 · 时间」。
  • 主题跟随:使用 DSH 的 --dsw-alias-* 主题 token,浅色/深色自动适配,文案通过 ctx.locale 区分中英文。
  • 本地优先:单文件 JSON 存储,串行写入 + 原子替换,文件损坏时自动备份。

安装与启用

插件为纯 JavaScript 包,无构建步骤与第三方运行时依赖。

从 GitHub 安装(推荐)

在 DSH 中让助手执行 plugin_manager 的 install_bundle,目标填:

github:nin2c/dsh-plugin-memo

或在终端(选择合适的 profile,desktop / web):

dsh plugin --profile desktop add github:nin2c/dsh-plugin-memo

安装后重启 DSH(或让插件经理热加载)。左侧栏会出现「备忘」图标。

从本地目录安装

git clone https://github.com/nin2c/dsh-plugin-memo.git

再用 plugin_manager 的 install_bundle 指向该目录(本地目录会以 link: 方式安装)。

手动放进 profile

把本包加入 profile 的依赖与 dsh.profile.bundles,由 DSH 的 bundle 层加载。

使用方法

  • 打开:左侧栏(Plugins / Schedules 同一条)点 📝 图标。
  • 待办:输入 → 回车添加;勾选完成;点文字改内容;拖拽换位置;每栏可单独「清空已完成」。
  • 备忘:直接在五个窗口里写,自动保存。
  • 右侧栏备忘:在对话页点右上角的右侧栏开关,右侧栏的指南页里点「备忘」卡片(或点 + 打开指南);之后该会话的右侧栏布局会记住这个页签。它编辑的就是主面板里右侧那个「主要备忘」窗口,两边内容实时同步、同样自动保存。
  • 数据位置:默认在 $DSH_HOME/plugin-data/notes-todo/data.json(即 ~/.dsh/plugin-data/notes-todo/data.json)。

数据目录名 notes-todo 是历史命名,包名已改为 dsh-plugin-memo,升级不会丢失数据。

数据格式

插件使用 JSON 存储待办与备忘内容,默认位置为 $DSH_HOME/plugin-data/notes-todo/data.json。

{
  "version": 2,
  "todos": [
    { "id": "t_…", "text": "…", "done": false, "category": "work", "createdAt": "…", "doneAt": null }
  ],
  "memos": {
    "topLeft": "…", "topRight": "…", "bottomLeft": "…", "bottomRight": "…", "main": "…"
  },
  "updatedAt": "…"
}
  • category 为 work 或 personal,数组顺序即待办显示顺序。
  • 旧版数据(v1 的 notes 列表、无分类待办、三窗口备忘)会在读取时自动迁移。

宿主 API

插件在宿主注册同源 HTTP 路由 /notes-todo(由 webServer 提供),提供以下接口:

方法 路径 说明
GET /notes-todo/api/ping 版本、数据文件路径、计数
GET /notes-todo/api/state { ok, todos, memos, updatedAt }
POST /notes-todo/api/mutate 一次原子操作,返回完整新状态
POST /notes-todo/api/client-log 面板崩溃上报

mutate 的 op 支持以下操作:todo.add / todo.update / todo.toggle / todo.move / todo.delete / todo.clearCompleted / memo.set。这些操作只在插件自己的 Host 与页面之间使用。

兼容性

  • 面向 DSH 的 Web UI(Desktop / Web profile),使用官方插槽(sidebar.panellist、main、右侧栏的 sidebar.right.pane.tab 与 ctx.sidebarRightTabs)与 webServer 路由,不依赖 DSH 内部私有包。右侧栏扩展在缺少该能力的 DSH 版本上会自动跳过,面板功能不受影响。
  • 在 DSH 0.2.1-rc.2(Desktop profile)上开发与验证。
  • 客户端只用 require('react') 与主题 token;宿主只使用 Node 内置模块,因此不需要构建。

开发与维护

  • index.js — 宿主半:webServer 前缀路由 + JSON 存储 + 数据迁移。
  • client.js — Web 半:插件面板与右侧栏备忘页签的注册、React 视图、拖拽与行内编辑、自动保存与跨视图同步。
  • cordis.patch.yml — 插入 memo 插件行。
  • locale/{en,zh}.json、icon.svg — 插件管理页的标题、描述与图标。

源码是手写的可读 JavaScript,没有压缩产物;改完重新加载插件(或重启 DSH)即可生效。

# 语法检查
npm run check

隐私与安全

  • 不联网、不收集数据、无遥测。
  • 所有内容只写本机 $DSH_HOME/plugin-data/notes-todo/ 下的 JSON 文件。

适用场景与注意

适合需要在 DSH 中快速记录待办事项、临时备忘,并希望数据本地可控的开发者。插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。

小结

dsh-plugin-memo 提供了一个轻量级、本地优先的待办与备忘面板,通过 DSH 的侧边栏与右侧栏集成,与对话上下文保持联动,适合需要集中管理任务与笔记的开发者。所有数据存储在本地 JSON 文件,升级不会丢失内容,文件损坏时自动备份。

目录页:https://www.skillhub.cn/plugins/nin2c/dsh-plugin-memo
GitHub:https://github.com/nin2c/dsh-plugin-memo

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

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

小夜