dsh-favorites
一个轻量的 DSH 会话「收藏夹」:给对话打上星标,防止误归档,并为常用会话提供一个快捷入口。client 端挂载在 DSH 官方稳定槽位,兼容后续 DSH 更新。
📑 目录
✨ 功能一览
- ⭐ 头部星标开关:在会话头部操作栏为当前会话打星 / 取消收藏,一屏之内即点即用。
- 🗂️ 收藏夹快捷面板:会话头部「收藏夹」入口,锚定面板列出所有已收藏会话,点击即可打开。
- 🛡️ 保护归档:已收藏的会话执行归档时会被拦截并提示,需先取消收藏(fork / 重命名仍可用)。
- 💾 持久化:收藏列表通过 DSH 的
favoritessettings namespace 持久化,重启后仍然保留。 - 🧩 官方槽位挂载:client 端使用
conversation.session.header.actions官方稳定槽位,不依赖固定像素坐标 / CSS hash / 第三方插件内部实现,跨 DSH 版本更稳。
🚀 安装
前置:已安装并可正常运行的 DSH(dsh web),Node.js ≥ 20。
方式一(npm registry)
dsh plugin --profile web add dsh-favorites-zh-cn
方式二(GitHub)
dsh plugin --profile web add github:andyzhuang233/dsh-favorites
装完重启(或重新加载)web profile,并硬刷新浏览器(Cmd/Ctrl+Shift+R)即可生效(client 改动无需重启 DSH;仅 host 半改动需重启)。
也可让 DSH 助手代为安装——把上面任意一条命令发给任意 DSH 会话即可。
从源码安装 / 开发(可选)
```sh git clone https://github.com/andyzhuang233/dsh-favorites.git cd dsh-favorites pnpm install pnpm build # 生成 lib/ ``` 将 `~/.dsh/profiles/web/package.json` 的依赖改为本地链接并 `pnpm install`,或直接把 `lib/` 与 `cordis.patch.yml` 放入 `~/.dsh/profiles/web/node_modules/dsh-favorites/`。🧭 使用说明
- 打开一个会话,在头部操作栏点击 ☆ 收藏,即可把当前会话加入收藏夹。
- 再次点击 ★ 取消收藏,可将该会话移出收藏夹。
- 点击头部 收藏夹 按钮,在锚定面板中点击某个收藏项即可快速打开对应会话;面板内可逐一移除。
- 对已收藏的会话执行「归档」会被拦截,并提示先取消收藏。
🔧 工作原理
- host 半(
lib/index.js):通过@deepseek-ai/dsh-settings的settingsNamespace("favorites")注册一个favoritesnamespace 与 schema(sessionIds: string[]),供 client 端通过常规 settings 通道读写数据。 - client 半(
lib/client.js):注入整个收藏夹 UI(星标开关 + 收藏夹面板),并通过connectionAPI 的settings.describe/settings.mutate读写favoritesnamespace;同时包装workspaces.archiveSession,用于拦截已收藏会话的归档。
📁 项目结构
dsh-favorites/
├── lib/
│ ├── index.js # host 端:注册 favorites settings namespace 与 schema
│ └── client.js # client 端:星标开关 + 收藏夹面板 + 拦截归档
├── cordis.patch.yml # bundle patch:向 web profile 插入 favorites 入口
├── package.json
├── README.md
└── LICENSE
🛠️ 开发与构建
仓库中的 lib/ 为构建产物(由源码构建而来)。当前仓库随版本提交 lib/,便于直接 dsh plugin add 使用。
pnpm install
pnpm build # 生成 lib/
⚠️ 已知限制
- 仅支持单会话列表收藏,不区分会话分组 / 排序。
- 收藏数据跟随当前
favoritessettings namespace,跨 profile 不共享。 - 依赖 DSH 的
conversation.session.header.actions槽位,若 DSH 调整该槽位名需同步更新。
🔐 安全
- 插件仅读写自己的
favoritessettings namespace,不触碰其他数据。 - client 端运行在 DSH client 沙箱内,不访问宿主 Node 环境。
- 本插件不联网、不上传任何会话内容。
🖥️ 平台支持
- 适配 DSH Web 界面(
platform: web)。 - 依赖
@deepseek-ai/cordis、@deepseek-ai/dsh-settings、@deepseek-ai/schemastery。
🤝 参与贡献
欢迎提交 PR / Issue。请确保改动通过构建并遵循现有代码风格。
📄 License
MIT © andyzhuang233