dsh-client-ui-notes
主面板内的笔记与目录阅读器:文件树与置顶、可关闭的标签页、Markdown 左编右渲与同步滚动、纯文本编辑、手动保存、拖拽移动文件。删除时移入系统回收站(macOS、Linux),系统回收站不可用时移入目录内的 dsh-notes-trash 目录;Windows 不提供删除入口。
安装
dsh plugin --profile web add dsh-client-ui-notes
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-client-ui-notes · DSH 笔记插件
在 DeepSeek Harness 里充当备忘录 + 目录阅读器的插件:左侧栏一个「笔记」按钮,
点开后中间主面板切换成阅读器 —— 左边文件夹树 + 置顶区,右边浏览器式 tab 栏,
支持 Markdown 左编辑右实时预览、txt 单栏编辑。
纯外部插件:只通过官方 Slot 机制接入,不改动 DSH 任何源码。
功能
能力 · 说明
左侧栏入口 · 「笔记」按钮排在会话栏上方的全局面板按钮区,默认顺序 30
浏览器式 tab 栏 · 切换、× 关闭、中键关闭、+ 新建;未保存时显示小圆点;按住标签拖动可调整顺序(顺序会保存)
文件夹树 · 可选任意文件夹作为根,目录懒加载展开,当前文件高亮;根目录按「文件夹 / 根目录文件」分组
隐藏项过滤 · 不展示 . 开头的文件/目录(.git、.obsidian 等)与 node_modules,但不禁止访问
切换文件夹 · 左侧最上方是下拉:当前目录 + 最近用过的目录(每项右侧 × 可移除,只删记录)+「选择其他文件夹…」调起 DSH 原生目录选择器。历史最多 8 条并会持久化
文件名搜索 · 置顶区下方的搜索框:输入即列出当前目录下文件名匹配的文件,上下键移动、回车或点击选中 —— 自动展开树中所在目录并滚过去高亮,同时在右侧打开
技能浏览(可关) · 文件夹下拉里的「浏览技能…」(未选文件夹时引导页也有入口)。列表本身是一个单例标签页,点进某个技能后左边的「技能」tab 仍在,点一下就能返回列表:列出当前可用的全部 skill,点一条就在阅读器里看它的全文。列表 = 按 DSH 约定扫描磁盘(项目 / 用户 / 自定义根)+ 官方注册表补充(内置技能),支持按名称/说明筛选。插件内置的技能标「内置」,正文由 DSH 提供,显示为只读视图。整体只读,不启用/禁用、不改文件。列表分「系统内置」与「我的技能」两块
技能文件树 · 点一条技能:右侧读它的 SKILL.md,左侧整栏同时换成这条技能的文件夹树(rules/、references/、scripts/ 都在,按真实层级缩进、目录可折叠、可全部展开收起)。点任意文件就在右侧读它,当前文件高亮。切回任意笔记就自动变回你的笔记目录,退出只有一个入口:右侧顶部的「← 返回」——左侧恢复笔记目录、右侧回到原笔记。非文本文件点了交给系统「打开方式」
agent 指令 · 技能页顶部的「agent 指令」区:查看与编辑给模型看的规则文件。预置一条 DSH 默认的 ~/.dsh/AGENTS.md(跟随 $DSH_HOME),点开即在右侧标签页里编辑,⌘S 保存。别的文件(比如跟 Claude Code 共用的 ~/.agents/AGENTS.md)用「+」自己填绝对路径加进来 —— 加进来的路径就是授权来源,插件不预设、不扫描任何目录。添加成功后那一行会高亮并标「刚添加」,直接点它就能打开,不用去列表里找自己刚加了什么。只接受文本类扩展名(.md/.txt 等),文件不存在会显示「尚未创建」并允许直接写完保存
置顶区 · 最多 6 个;1 个占满整行、2 个并排、更多自动往下延伸。有独立分隔线,与文件树分区
置顶操作 · hover 文件行点右侧图钉置顶;取消置顶:右键置顶胶囊 → 菜单里选「取消置顶」(胶囊上不再有容易误点的 ×)
跨文件夹 · 切换文件夹时,已打开的标签页与置顶都会保留,并且仍能打开与保存 —— 每个标签页记住自己打开时所在的文件夹,不跟着当前文件夹变
置顶排序 · 按住置顶项拖动即可调整顺序,拖动时其他项实时让位、并显示落点指示线;顺序与单双栏偏好在重启后保留
置顶排版 · 「置顶」标题右侧的开关在双栏 / 单栏间切换:双栏省纵向空间,单栏文件名更完整
删除文件 · 文件行右键 → 删除 → 二次确认;移入系统回收站可再取回。(Windows 不提供,见「兼容性」)
重命名 · 文件或文件夹右键 → 重命名 → 行内输入框(原地改,不弹窗):只选中主干、扩展名留着,直接打字就是改名字。回车提交、Esc 取消。改名后已打开的标签页、置顶项、草稿里的旧路径全部自动跟着改;目录改名时目录里的文件也算
定位文件 · 文件行右键 → 在访达中打开(macOS)/ 打开文件所在位置(Windows)/ 在文件管理器中显示(Linux),由系统打开所在文件夹
树内定位 · 文件树标题栏的准星按钮:一键展开当前打开文件所在的所有文件夹并滚过去高亮,文件夹层级再深也不用一层层点
树批量折叠 · 标题栏的「打开所有文件夹 / 收起所有文件夹」两个按钮,一次展开或收拢整棵树(超大目录树到 500 个文件夹会提示已截断)
拖拽移动 · 拖文件到文件夹上即移动进去,也可拖回文件树空白处移回根目录;悬停 600ms 自动展开目标文件夹,可拖进多层
Markdown · 左侧编辑、右侧实时预览(用官方 MarkdownText,GFM + 代码高亮 + 安全过滤)
代码染色 · 打开 .sql、.java、.py、.js、.json 这类代码文件时,文档头多一个「染色」按钮:开启后按语法着色(关键字、字符串、函数、注释分色),带行号、悬停高亮整行。颜色优先用 DSH 主题的配色,明暗主题自动跟随;主题缺颜色时插件用自带配色兜底,不会出现「只染了一半」。只对整份文件都是代码的类型出现,Markdown 里的代码块由 DSH 自己处理。染色只是一层着色,开着照样能编辑(打字、选中、⌘S 保存都正常),偏好会记住
Tab 缩进 · 编辑框里按 Tab 插入缩进(多行选中时给每行行首加缩进),Shift+Tab 反缩进 —— 焦点始终留在编辑框里,不会被 DSH 抢走。⌘/Ctrl+Tab 保留移动焦点的默认行为,作为跳出编辑框的出口
显示方式 · 编辑 / 分栏 / 仅预览 三段切换;仅预览时编辑框完全不渲染,纯阅读更清爽。切换会被记住为默认:选一次「仅预览」,之后打开任何 md 都是阅读模式(只影响本插件,非 md 文件不受影响,默认仍是分栏)
大纲视图 · 长文档在右侧多一列目录,标题按层级缩进,点一下跳到对应段落;读到哪里对应条目就亮起来。文档头的「大纲」按钮随时收起 / 展开,状态会记住。宽度不够(分栏 < 900px、只读 < 660px)时自动不出现,没有标题的文档也不占地方
同步滚动 · 两侧按比例联动;工具栏可一键关闭,关闭后各自独立滚动
自适应宽度 · 面板变窄时自动收起文件夹栏、改为上下堆叠,避免内容被挤成一列字
层级分明 · 文件夹栏是内缩的圆角区块;macOS 折叠会话栏后,只有左栏额外下移让开交通灯,右侧阅读区(tab 栏 + 正文)保持不动,避免顶部露出空白带
纯文本 · txt 单栏直接编辑,不显示无意义的预览栏
新建 · 先选类型(Markdown / 纯文本),再填文件名;自动补扩展名
手动保存 · ⌘S / Ctrl+S 或保存按钮;未保存时 tab 有圆点、文档头显示「未保存」
状态记忆 · tab、当前 tab、置顶、展开的目录、滚动位置、未保存草稿、文件夹历史都会保留
卸载不留痕 · 卸载本插件时自动清掉这些本地记录,不会在下次安装时「复活」旧路径
标签页管理 · tab 上右键可「关闭 / 关闭其他 / 关闭右侧标签页 / 关闭全部」;中键关闭
标签溢出 · 标签多到放不下时,栏右端出现向下尖头,点开下拉列出全部标签(含被裁掉的),当前项高亮
文件可见范围 · 文件树标题行有「可编辑 / 全部」开关(偏好持久化)。「可编辑」只列能在阅读器里打开的文件;「全部」连 .doc/.pdf 一起列出
打开方式 · 点这类不可预览的文件不会直接弹出系统程序,而是在阅读区开一个标签页:显示「此格式无法在阅读器中打开」+ 一个打开方式控件。左边按钮用默认应用打开,右边下拉列出系统里所有能打开它的应用,底部另有「显示文件位置」
安装
前置条件:本插件是图形界面插件,只在 Web GUI 里有界面 —— 包括桌面应用,
以及终端里自己跑起来的 dsh web(浏览器访问)。
纯终端场景(dsh headless "..."、SDK、ACP)装了不会报错,但也没有任何功能可用:
界面所依赖的槽位与webServer服务都由@deepseek-ai/dsh-web-app提供。
桌面应用目前只发布 macOS 与 Windows 版,没有 Linux 版。 Linux 用户需要自行安装
DSH CLI,再用 dsh web 在浏览器里使用(功能与桌面版一致)。
桌面应用(macOS / Windows)
在左侧栏打开「插件」面板 → 点「添加插件」 → 填入包名 dsh-client-ui-notes → 安装。
注意不是「设置 → 内置插件」那一页 —— 那页只用于查看本部署内置了哪些插件,不能安装。
终端 / 自建 profile(任意平台,含 Linux)
先建一个带 Web 界面的 profile,再把插件装进去:
# 1. 以 web 模板创建 profile(--dump-config 让它只建不启动,配置输出丢弃即可) dsh --profile notes --from-default-profile web --dump-config > /dev/null # 2. 把插件装进该 profile dsh plugin --profile notes add dsh-client-ui-notes # 3. 启动,然后在浏览器里打开它打印的地址 dsh --profile notes web
左侧栏出现「笔记」图标即为安装成功。
⚠️ 不要跳过第 1 步。 直接 dsh plugin add 会让 DSH 自动创建一个以
@deepseek-ai/dsh-base 为基础的 profile,而 base 里没有 Web 界面层
(@deepseek-ai/dsh-web-app)。那样的 profile 启动web时界面出不来,
插件自然也无从显示。
⚠️ 也不能用 dsh plugin --profile desktop 去装桌面应用的 profile:
那个 profile 归应用独占管理,命令行写入会被拒绝
(profile "desktop" is managed exclusively by the Electron application)。
桌面版请用上面的「插件」面板。
想确认插件层已登记,可以看合并后的配置:
dsh --profile notes --dump-config | grep -A2 dsh-client-ui-notes # # == dsh-client-ui-notes # - id: ui-notes # name: dsh-client-ui-notes
卸载:
dsh plugin --profile notes remove dsh-client-ui-notes
首次使用
插件初始没有任何笔记目录,需要两步:
1. 点左上角的文件夹按钮选一个目录作为笔记根目录;
2. 右侧文件树标题行的可见范围开关默认是「可编辑」(只列 .md/.txt 等能在阅读器里打开的文件)。
想看 .doc/.pdf 这类文件就切到「全部」。
开发者方式(本地改动 + 热链接)
# 1. 构建 cd ~/dsh-notes-plugin npm install # 首次 npx tsc -p tsconfig.json node scripts/build-client.mjs # 2. 链接进目标 profile(以 desktop 为例) cd ~/.dsh/profiles/desktop ln -sfn ~/dsh-notes-plugin node_modules/dsh-client-ui-notes
然后在 profile 的 package.json 里登记:
{
"dependencies": { "dsh-client-ui-notes": "link:/Users/你/dsh-notes-plugin" },
"dsh": { "profile": { "bundles": [ "...", "dsh-client-ui-notes" ] } }
}
重启 DSH 后,左侧栏出现「笔记」按钮。
用link:装的插件,改了lib/下的产物必须重启 DSH 才会生效:客户端产物是启动时
读取并缓存的,磁盘文件变化不会自动重载。
更新
三条路都能升级,效果一样:
方式 · 怎么用
插件详情页的「更新」 · 侧栏「插件」→ 点本插件卡片 → 顶部按钮。发现新版本后点一下即升(0.1.7 起才真正可用)
插件市场 · 市场里搜到本插件后点「更新」
命令行 · `dsh plugin --profil
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:23,最后更新 2026-11-05