前言¶
DSH(DeepSeek Harness)的 Web UI 插件生态允许开发者扩展对话界面。dsh-session-memo 是一个对话侧边备忘录插件,它将当前会话工作区的 GitHub 同步状态 / npm 发布状态 / 项目版本 / 备忘标签 汇总到一个可随时呼出的浮动面板中,方便在对话中快速掌握项目上下文。
插件简介¶
- 名称:dsh-session-memo
- 维护者:LucienLL
- 类别:客户端
- 许可证:MIT
该插件旨在解决在 DSH 对话中快速查看项目当前状态(如 Git 同步情况、npm 版本差异)的需求,同时提供手动记录备忘的功能。
核心功能¶
- 自动探测 Git 状态:探测当前 Git 分支、与上游的同步状态(ahead/behind)、未提交改动数(dirty)以及冲突数。
- npm 发布状态对比:对比本地 package.json 版本与 npm registry 最新版本,判断是否落后。
- 项目版本管理:自动探测项目版本,支持手动输入覆盖。
- 备忘标签与备注:支持备忘标签的自由增删,以及备注的自由文本输入。
- 状态联动:与
dsh-session-status插件状态标签弱联动,面板头部显示当前会话状态并可点击切换。
安装与启用¶
在 DSH profile 下执行以下命令安装:
dsh plugin --profile web add dsh-session-memo
安装完成后,重启 dsh web 即可生效。
使用方式¶
- 打开面板:在 DSH Web 对话头部点击 📋 按钮。面板打开时会自动探测一次状态,也可在面板内手动刷新。
- GitHub 同步:面板中显示当前分支、上游地址及同步状态。
- 当
behind > 0或dirty > 0时,状态为琥珀色(如“落后 2 · 3 个未提交”)。 - 当存在冲突时,状态显示为红色。
- 当完全同步时,显示绿色“已同步”。
- 当
- npm 发布:显示包名及本地版本与 Registry 最新版的对比。落后时提示“可发布新版本”。可点击“标记已发布”手动记录发布时间,但自动比对仍会显示实际状态。
- 版本覆盖:在版本输入框中手动输入版本号,按回车或失焦保存。点击“恢复”按钮可回到自动探测模式。
- 备忘标签与备注:自由输入标签内容,失焦后自动保存;备注为自由文本,失焦自动保存。
- 状态切换:面板头部显示
dsh-session-status的当前状态 Pill,点击可循环切换(进行中 → 已结项 → 搁置中 → 无)。
工作原理¶
插件采用 Host + Browser 双端架构。
- Host 端:
lib/index.js:注册 settings namespacedsh-session-memo以及GET /dsh-session-memo/probe路由。lib/memo.js:负责纯逻辑处理,包括 git porcelain 解析、semver 版本对比、package.json 解析,以及编排MemoService(执行 git 只读探测、读取 fs、fetch npm registry)。
- Browser 端:
lib/client.js:负责通过conversation.session.header.actions注入入口按钮,以及使用shell.overlay渲染浮动面板,通过settingsScope读写数据。
权限边界:
* Git 仅使用只读命令(如 status --porcelain=v1 -b、log -1、remote -v、rev-parse --show-toplevel)。
* npm 仅执行 GET 请求。
* 文件系统仅读取 package.json。
数据流:
* 自动探测结果不落盘,仅在内存中展示。
* 手动覆盖的版本、备注、标签等数据写入 settings namespace,实现跨会话持久化。
注意事项¶
- 探测只在打开面板或手动刷新时执行,不常驻轮询。
- Git 命令设置了 graceMs=5000 超时兜底,npm 查询设置了 8s 超时,失败时仅降级该字段显示。
- 插件安装后以当前 dsh 进程的权限运行,安装前建议检查源码与许可证。
结语¶
dsh-session-memo 通过将项目状态可视化,减少了在对话中切换终端查看状态的时间。更多细节与源码可访问其 GitHub 仓库。