dsh-sticky-notes:把便利贴墙放进 DSH 侧边栏

前言

在 DSH(DeepSeek Harness)里做开发和运维时,经常会遇到这样的需求:会话进行中临时记一条想法、贴一张截图、留一个待办,但不想为了一条笔记打断工作流。常见的做法是另开一个笔记应用,或者把内容塞进会话上下文;前者多一次切换,后者会让上下文变长且难以检索。

dsh-sticky-notes 就是针对这个场景的插件:它在 DSH 左侧边栏放一个图标,点开就是一面便利贴墙,所有的读写都落在本地磁盘上,页面刷新或 Harness 重启后内容不会丢。同时它还暴露了一个给模型调用的工具,让 Session 或 IM 机器人也能往墙上写便签。

这是什么

dsh-sticky-notes 由 LoveStudyXin 维护,分类为「记忆」。插件包自带全部资源,安装后不依赖额外依赖、构建步骤或配置,目标 DSH 版本为 engines.dsh: ^0.2.1-alpha.2(要求构建包含 sidebar.panellist 槽位)。它解决的问题是:在对话流程内提供一处轻量的、可检索、可备份的本地便签空间,并允许自动化工具代入写入。

核心功能

下面介绍的能力均来自插件 README,安装后在面板内即可使用。

  • 侧边栏入口:左栏出现面板图标,点击打开便利贴墙。
  • 快速记录:在顶部输入框输入文字,按 ↵ 添加一条便签;⇧↵ 换行,⌘/Ctrl + ↵ 同样可以添加。
  • 图片笔记:支持粘贴截图(⌘V/Ctrl+V)、把图片拖到墙上、或用附件按钮选择文件。每条便签最多 6 张 PNG/JPG/GIF/WebP 图片,单张不超过 8 MB;纸面上显示缩略图,点击可看大图,Esc 关闭。
  • 视觉:六种纸面颜色、轻微倾斜、masonry 布局。
  • 原地编辑:点击便签文字即可修改,点击其他位置或按 ⌘/Ctrl + ↵ 保存,Esc 取消。
  • 置顶与删除:置顶会把便签移到顶部;删除后有 6 秒的撤销提示。
  • 搜索:过滤整面墙,底部显示保存状态。
  • 本地备份、导出、导入:每次覆写前都会先备份磁盘上的墙文件,最多保留最近 30 份;面板头部提供一键恢复,也可以导出为 JSON 或从 JSON 导入。

文字跟随 DSH 当前的语言环境(中文/英文)。

安装与启用

从终端安装:

dsh plugin add github:LoveStudyXin/dsh-sticky-notes

也可以从图形界面安装:打开 DSH → Plugins / 插件 → Add / 添加,粘贴同一个地址。如果使用本地检出目录(修改后刷新即可生效):

dsh plugin add link:/absolute/path/dsh-sticky-notes

安装后保持插件启用并刷新一次页面(插件管理器要求重启时则重启 DSH)。左栏会出现便利贴图标,点击打开墙。插件附带中文安装说明 INSTALL.md。

典型用法

会话内调用工具 sticky_notes_add

插件在 Host 侧注册了一个面向模型的工具 sticky_notes_add,Session 无需打开浏览器即可写便签,这对由 IM 机器人(飞书、微信等)启动的 Session 尤其有用——人只需要说「把这张图存到便利贴里」。

工具参数如下:

参数 含义
text 便签文字;给了图片时可省略
color amber(默认)、rose、sky、mint、lilac、tangerine
pinned 是否置顶,默认 false
imagePaths 图片文件路径,绝对路径或相对于调用 Session 工作目录,最多 6 张

工具自己读取文件字节,并执行与面板相同的规则(PNG/JPG/GIF/WebP,单张不超过 8 MB,每条最多 6 张),写入同一个 notes.json,同样先做覆写前备份,返回 { noteId, noteCount, images }。

需要注意:模型不必看到图片本身。IM 机器人把收到的图片先放到工作区、再把路径交给模型,因此纯文本模型也能保存一张它没有「看过」的截图。

IM 零 token 命令 /sticky(可选补丁)

即使消息只是「存到便利贴」,IM 消息仍然消耗一次模型轮次。scripts/patch-dsh-im-sticky.mjs 会就地修补已安装的 @xmanrui/dsh-im 包,让以 /sticky 开头的消息在不经过 Session 轮次的情况下直接写入文字和图片,并回复便签 id。

# 在包目录下执行
node scripts/patch-dsh-im-sticky.mjs --check   # 仅报告
node scripts/patch-dsh-im-sticky.mjs           # 应用(保留 lib/index.js.dsh-sticky.orig)
node scripts/patch-dsh-im-sticky.mjs --revert  # 还原未修补的包

之后禁用再启用「IM机器人」插件(或重启 DSH),在飞书里发送 /sticky 测试测试小肥鱼,可附带图片。/sticky 不在插件的命令面板或 /help 中,需要直接输入。

该补丁会就地修改第三方插件,因此 dsh-im 升级会覆盖它,升级后需要重新执行脚本(脚本会校验锚点,遇到未知包版本拒绝猜测)。修补后的路径跳过了机器人命令权限检查,请保持机器人的 allowlist 收紧。另外墙是单个 JSON 文件、采用最后写入生效策略,开着便利贴面板时保存旧内容可能覆盖 IM 写入的便签,IM 写入后如面板开着,请重新加载面板。

存储与限制

所有数据都是本地文件,不会只留在浏览器里。路径均位于 $DSH_HOME(默认 ~/.dsh)之下:

  • $DSH_HOME/state/sticky-notes/notes.json:墙本身。
  • $DSH_HOME/state/sticky-notes/images/<id>.<ext>:粘贴的图片字节。
  • $DSH_HOME/state/sticky-notes/backups/notes-<timestamp>-<count>.json:覆写前的墙备份(最多保留 30 份,编辑时每 30 秒最多一份),备份引用的图片也会保留,恢复后不会出现缺图。

取回或复制数据有三种方式:面板头部「备份」列出本地备份、便签数和恢复时间,一键恢复;「导出」下载当前墙为 sticky-notes-<date>.json;「导入」用之前导出(或手工编辑)的 JSON 替换整面墙,无法渲染的条目会被跳过,服务端会先备份当前墙。备份弹层还会显示 notes.json 的绝对路径。

限制方面:一面墙最多 5000 条便签、每次保存最多 64 MB JSON,超出部分在写入时丢弃;同一面墙开两个窗口时采用最后写入生效策略。cordis.patch.yml 中的 config.dataDir 可以移动整个目录,它是普通字符串(无 schema、不做 ~ 展开),必须给出绝对路径。

如需把便签额外同步到飞书多维表格,插件提供单向、只增的镜像能力(可选):本地文件始终是权威来源,本地编辑或删除不会改动飞书里已推送的行,飞书不可达也不会阻塞本地保存(失败会记日志并在下一个 tick 重试)。配置由 scripts/setup-feishu-bitable.mjs 完成,它会创建字段为 文字 / 颜色 / 置顶 / 创建时间 / 图片 的「DSH 便利贴」表,并写出 $DSH_HOME/state/sticky-notes/feishu.json。镜像历史记录在 feishu-sync.json 中,重启不会重复推送。

适用场景与注意

适合两类使用者:一是想在日常 DSH 会话里随手记录想法和截图、又不希望上下文被打断的开发者;二是需要让机器人把外部消息或图片归档到便签墙的自动化场景。

使用前请注意:插件以当前 DSH 进程的权限运行,安装前应查看源码与许可证(package.json 标注为 MIT),确认补丁脚本的改动范围后再决定是否启用。/sticky 和飞书镜像属于可选能力,其中 /sticky 会对第三方 @xmanrui/dsh-im 包做就地修改,升级后需要重新执行补丁脚本。

dsh-sticky-notes 的价值在于把便签墙、本地备份和模型工具三者合到一个侧边栏插件里,既保留人工随手记录的入口,也给自动化留出写入接口。目录页在 https://www.skillhub.cn/plugins/LoveStudyXin/dsh-sticky-notes ,源码在 https://github.com/LoveStudyXin/dsh-sticky-notes 。

(社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;插件版本、星标与许可证均以目录页和仓库原文为准。)

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

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

小夜