前言¶
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