dsh-session-memo:DSH 对话侧边备忘录插件

前言

DSH(DeepSeek Harness)的 Web UI 插件生态允许开发者扩展对话界面。dsh-session-memo 是一个对话侧边备忘录插件,它将当前会话工作区的 GitHub 同步状态 / npm 发布状态 / 项目版本 / 备忘标签 汇总到一个可随时呼出的浮动面板中,方便在对话中快速掌握项目上下文。

插件简介

  • 名称:dsh-session-memo
  • 维护者:LucienLL
  • 类别:客户端
  • 许可证:MIT

该插件旨在解决在 DSH 对话中快速查看项目当前状态(如 Git 同步情况、npm 版本差异)的需求,同时提供手动记录备忘的功能。

核心功能

  1. 自动探测 Git 状态:探测当前 Git 分支、与上游的同步状态(ahead/behind)、未提交改动数(dirty)以及冲突数。
  2. npm 发布状态对比:对比本地 package.json 版本与 npm registry 最新版本,判断是否落后。
  3. 项目版本管理:自动探测项目版本,支持手动输入覆盖。
  4. 备忘标签与备注:支持备忘标签的自由增删,以及备注的自由文本输入。
  5. 状态联动:与 dsh-session-status 插件状态标签弱联动,面板头部显示当前会话状态并可点击切换。

安装与启用

在 DSH profile 下执行以下命令安装:

dsh plugin --profile web add dsh-session-memo

安装完成后,重启 dsh web 即可生效。

使用方式

  1. 打开面板:在 DSH Web 对话头部点击 📋 按钮。面板打开时会自动探测一次状态,也可在面板内手动刷新。
  2. GitHub 同步:面板中显示当前分支、上游地址及同步状态。
    • 当 behind > 0 或 dirty > 0 时,状态为琥珀色(如“落后 2 · 3 个未提交”)。
    • 当存在冲突时,状态显示为红色。
    • 当完全同步时,显示绿色“已同步”。
  3. npm 发布:显示包名及本地版本与 Registry 最新版的对比。落后时提示“可发布新版本”。可点击“标记已发布”手动记录发布时间,但自动比对仍会显示实际状态。
  4. 版本覆盖:在版本输入框中手动输入版本号,按回车或失焦保存。点击“恢复”按钮可回到自动探测模式。
  5. 备忘标签与备注:自由输入标签内容,失焦后自动保存;备注为自由文本,失焦自动保存。
  6. 状态切换:面板头部显示 dsh-session-status 的当前状态 Pill,点击可循环切换(进行中 → 已结项 → 搁置中 → 无)。

工作原理

插件采用 Host + Browser 双端架构。

  • Host 端:
    • lib/index.js:注册 settings namespace dsh-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 仓库。

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

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

小夜