dsh-plugin-notepad:在 DSH 里用全局与项目两级速记短笔记

前言

在 DeepSeek Harness(DSH)里跑智能体时,会话里常会冒出「待办一句」「项目约定」「常用命令」这类短信息。若只靠对话上下文,换项目或新开会话后很难找回;若塞进外部笔记应用,又和当前工作目录、模型工具链脱节。

下面介绍社区插件 dsh-plugin-notepad(维护者 qux-bbb):在 DSH 内记录短笔记,并按全局($DSH_HOME)与项目(<项目根>/.dsh)分开存放。笔记以 JSON Lines 明文落盘,可用模型工具、/note 斜杠命令或图形面板读写同一批文件。插件在 SkillHub 目录 中归类为「记忆」;源码与说明见 GitHub 仓库,许可证 MIT,当前 npm 版本为 0.1.0。

这是什么

dsh-plugin-notepad 是一个简易 DSH 组合包(bundle):声明了 dsh.bundle,经 dsh plugin add 装入某个 profile 后,由 cordis.patch.yml 自动激活插件入口。实现上零运行时依赖、零构建步骤,仅使用 Node 内置模块与 DSH 自带的 @deepseek-ai/schemastery、@deepseek-ai/dsh-tools。

核心能力

模型工具

宿主向模型暴露三个可调用工具(默认名前缀 notepad,可通过配置修改):

工具 参数 说明
notepad_add content(必填)、tags?、scope? 记一条;正文自动 trim,标签去重
notepad_list scope?、query?、limit? 新的在前;省略 scope 时合并所有启用层级;query 对正文 / 标签 / id 子串过滤
notepad_clear scope(必填)、confirm: true(必填) 清空指定层级(破坏性)

notepad_add 成功后会返回 id、时间、层级、标签、正文、文件路径及该层笔记总数等字段。

/note 斜杠命令

在支持命令注册表的部署中,人类可直接输入:

  • /note 记一条内容 → 新增一条(走默认层级)
  • /note(不带内容)→ 列出最近 5 条

若部署没有命令注册表,该命令会自动跳过注册。配置项 enableCommand 默认为 true,可关闭 /note。

图形面板「速记」

侧边栏底部 速记 图标(sidebar.panellist,order 40)在中央主面板打开完整界面:

  • 默认跟随当前会话所在项目的 notepad,可下拉切换项目,或一键「跟随会话」
  • 项目 / 全局 两个标签页,各自独立列表
  • 支持增删改查、打标签、搜索、刷新、清空当前层级;底部显示实际文件路径
  • 面板与工具、/note 读写同一文件,界面修改后 notepad_list 立即可见

配置 level 可限制只暴露 global、project 或 both;被禁用的标签页会置灰提示。

安装与启用

包为组合包,安装命令以 README 原文为准:

# 从 npm
dsh plugin --profile desktop add dsh-plugin-notepad

# 或直接从 GitHub 源码装(纯 JS、无构建步骤)
dsh plugin --profile desktop add github:qux-bbb/dsh-plugin-notepad

# 只验证这一层、不启动
dsh --profile desktop --dump-config     # 应能看到 "# == dsh-plugin-notepad" 这一层

# 卸载
dsh plugin --profile desktop remove dsh-plugin-notepad

从 GitHub 安装时,README 建议锁定 commit(github:qux-bbb/dsh-plugin-notepad#<sha>),避免后续推送改变实际运行内容。

对 desktop 等 dsh plugin 不便处理的 profile,仓库提供幂等的手动安装脚本 scripts/install-notepad.mjs(改动前备份,--uninstall 只删自己写入的区块)。示例(Windows PowerShell):

$node = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe"

& $node scripts\install-notepad.mjs --profile desktop
& $node scripts\install-notepad.mjs --scope home
& $node scripts\install-notepad.mjs --profile desktop --dry-run
& $node scripts\install-notepad.mjs --profile desktop --uninstall

补丁文件改动可被热重载;若某条目已变为 inactive 且配置未变,宿主可能不会重试,此时需改一次配置值或重启应用。

典型用法

用工具记一条项目笔记

模型调用 notepad_add,传入 content,可选 tags 与 scope(global 或 project)。成功时返回示例类似:

Noted p-mv6ieauq-01fmiy at 2026-10-13T09:59:19.922Z in the project notepad (3 note(s) there).
File: D:\work\repo\.dsh\notepad\notes.jsonl

列出与搜索

notepad_list 可指定 scope、query、limit;省略 scope 时在已启用的层级上合并展示。

只使用全局层

在补丁或设置里覆盖 config(注意 patch 会替换整段 config,需写全需要的键):

- insert:
    - id: notepad
      name: dsh-plugin-notepad
      config:
        level: global
        defaultScope: global

字段说明可用 dsh --dump-config-schema 查看。

配置要点

写在补丁条目 config: 下或由设置界面编辑,常用项包括:

字段 默认 说明
level both 暴露 global / project / both
defaultScope project 省略 scope 时的落点
fileName notes.jsonl 笔记文件名(纯文件名)
maxNotes 1000 单文件上限,超出丢弃最旧;0 不裁剪
maxContentLength 4000 单条正文字符上限
projectRootMarkers ['.git','.hg','.svn'] 向上查找项目根;[] 表示工作目录即项目根

全局目录默认为 <DSH_HOME>/notepad/notes.jsonl(dshHome 空时用 $DSH_HOME,再退到 ~/.dsh);项目目录默认为 <项目根>/.dsh/notepad/notes.jsonl。项目根从会话工作目录向上找版本库标记;默认不把 .dsh 当作项目根标记,避免项目笔记误写入用户主目录层级。

存储格式

每行一条 JSON,追加写入;解析失败的行会被跳过,不影响整表读取。示例:

{"id":"p-mv6ieauq-01fmiy","at":"2026-10-13T09:59:19.922Z","scope":"project","tags":["errand"],"content":"remember the milk"}

写入按笔记文件串行,改写与 maxNotes 裁剪先写临时文件再 rename,避免半行或并发覆盖。

适用场景与注意

适合需要在 DSH 会话内保留短、结构化、可检索备忘的场景:跨项目通用的偏好与命令放全局层,仓库相关的约定放项目层,并可选择把 .dsh/notepad 纳入 git。

安装前请自行审阅 源码与许可证。插件以当前 DSH 进程权限读写磁盘;notepad_clear 为破坏性操作,调用时需显式 confirm: true。DSH 生态强调「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-plugin-notepad 把速记拆成全局与项目两级,用工具、命令和面板统一入口,并用 JSONL 保持可读、可搜索。进一步了解可访问目录页 skillhub.cn/plugins/qux-bbb/dsh-plugin-notepad 与仓库 github.com/qux-bbb/dsh-plugin-notepad。

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

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

Xiaoye