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