dsh-record-manager:把 DSH 的笔记落到磁盘上的 .txt/.md

前言

做 DSH 插件的同学大概都有这个体会:助手跑着跑着,对话记录里的”记一下”越来越多,可这些内容要么被塞进对话上下文,要么被某个带锁定格式的笔记工具接走,回头想用 grep 或者外部编辑器整理,成本不低。

void0042/dsh-record-manager 就是针对这个痛点的插件。它把笔记直接写成磁盘上的 .txt / .md 文件,放在自己指定的目录里,并提供侧边栏面板、独立窗口和 Agent 工具三种入口。下面介绍它。

这是什么

一句话定位:DSH 的外置笔记插件,维护者 void0042,分类归在”记忆”。解决的问题是让笔记有真实文件归属,而不是锁在某个私有格式里。

  • 笔记是磁盘上真在的 .txt / .md,可以随时用外部编辑器打开。
  • 不依赖特定软件的数据格式,目录结构、文件内容都属于用户自己。
  • 进程运行时,插件以当前 DSH 进程的权限访问文件系统和网络,装之前应当先检查源码。

核心功能

只写 README 中明确列出的能力:

  1. 侧边栏面板:在 DSH Web 界面里浏览、编辑、搜索笔记。
  2. 独立窗口(popout):通过 /dsh-record-manager/popout 单独打开一个编辑器窗口。
  3. Agent 工具 record_note:对助手说”记一下:…”即可追加到每日流水。
  4. 每日流水:追加时自动按 MMDD: 分区并自动编号,跨天自动新起分区。
  5. 全文搜索:支持大小写敏感 / 正则 / 全词匹配。
  6. 回收站:删除操作等于移入 <root>/.trash,可以恢复。
  7. 冲突保护:保存时比对 mtime,如果文件在外部被修改,会提示重新加载或覆盖。
  8. 目录可配置:配置写入 root 目录下的 .dsh-record-manager.json,界面里可以随时切换。
  9. 中英双语。

安装与启用

README 给出的是本地插件方式,不依赖 npm 发布。

第一步,拉取仓库:

git clone https://github.com/void0042/dsh-record-manager.git

第二步,把整个目录放到 DSH profile 的 node_modules 下,例如:

~/.dsh/profiles/desktop/node_modules/dsh-record-manager

第三步,让 DSH 加载它的挂载声明 cordis.patch.yml。DSH 启动时会合并这个 patch。重启 DSH 后,侧边栏会出现「外置笔记」面板。

默认配置下,挂载声明里不写 root,笔记会存到用户主目录下的 dsh-notes 文件夹。要指定别的目录,可以编辑 cordis.patch.yml 的 config.root,或者在插件「设置」里改,设置会持久化到记录目录下的 .dsh-record-manager.json。

配置项

配置项 位置 说明
root cordis.patch.yml 的 config.root / 插件设置页 笔记根目录,默认 <用户主目录>/dsh-notes
dailyFile cordis.patch.yml 的 config.dailyFile 每日流水文件名,默认 日常/记录.txt

典型用法

日常记录可以直接用自然语言驱动 Agent 工具,不需要手动打开面板:

  • 对助手说”记一下:…”,record_note 会把内容追加到当日的流水分区。
  • 需要写较长的内容时,从侧边栏面板进入编辑器,或者开一个 /dsh-record-manager/popout 独立窗口。
  • 需要检索历史笔记时,用面板里的全文搜索,支持大小写敏感、正则和全词匹配三种模式。
  • 误删的文件进 <root>/.trash,从这里恢复即可。

插件运行时,Host 侧在 index.js 中注册 HTTP 路由 /dsh-record-manager/api/* 和 Agent 工具 record_note。所以面板和独立窗口的增删改查,最终都落到这些接口上,但用户侧不需要直接调接口。

开发与平台

源码在 src/:src/client.js 是面板与编辑器的 React 实现,src/popout.js 是独立窗口入口。仓库里已经提供了 esbuild 构建产物 client.js / popout.js,无需构建即可使用。修改 src/ 之后需要重新生成:

npm install

# 重新构建前端产物(client.js / popout.js)
npm run build
# 或分开构建
npm run build:client
npm run build:popout

平台支持方面,README 明确说已在 Windows 上测试。打开文件夹、弹出窗口这类操作按平台分支:Windows 走 rundll32 / explorer.exe,macOS 走 open,Linux 走 xdg-open。其他平台未充分验证。

版本和许可证来自仓库的 package.json:版本 0.1.0,许可证 MIT。星标数按目录页当前显示为 0。

适用场景与注意

适合这几类用法:

  • 希望笔记长期可被外部工具检索、编辑的用户,尤其是习惯 grep、Vim、VS Code 的人。
  • 想让助手用自然语言追加每日记录,但不想让记录只在对话里流转的场景。
  • 已有笔记目录结构,希望插件直接接管一段目录的团队。

需要注意的几点:

  • 插件以当前 DSH 进程的权限运行,文件读写范围取决于你的进程身份和 root 指向,装之前应检查源码与许可证。仓库许可证为 MIT。
  • 默认 root 是用户主目录下的 dsh-notes,不修改配置就会写那里,请确认没有指向生产数据目录。
  • 仓库目前在 Windows 上验证过,macOS 和 Linux 的打开文件夹、弹窗口行为有分支代码,但未充分验证,其他平台建议先小范围试用。
  • 冲突保护依赖 mtime,同一文件被多个窗口同时编辑过的情况下,保存前注意看提示。

结尾

这个插件的价值不在于功能多,而在于把”记忆”落回到文件本身:目录、文件名、内容格式都归用户,插件只是提供编辑、搜索和 Agent 追加的入口。对于想把 DSH 的对话产出沉淀成可维护文本的人,它是够用且轻量的选择。

  • SkillHub 目录页:https://www.skillhub.cn/plugins/void0042/dsh-record-manager
  • GitHub 仓库:https://github.com/void0042/dsh-record-manager
羽毛球分组比赛记分
小程序二维码

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

Xiaoye