dsh-favorites
其他 活跃维护

dsh-favorites

andyzhuang233/dsh-favorites

会话星标收藏功能插件,支持给会话添加星标标记,避免被意外归档,可通过专属收藏入口快速定位目标会话,会话fork或重命名后收藏状态仍可保留。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
14 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:andyzhuang233/dsh-favorites
git clone https://github.com/andyzhuang233/dsh-favorites.git
git clone git@github.com:andyzhuang233/dsh-favorites.git
README.md main

dsh-favorites

**DeepSeek Harness 插件:会话「收藏夹」** 星标会话,保护它不被误归档,并从收藏夹一键快速打开。 npm version npm downloads GitHub Release License: MIT GitHub stars GitHub top language GitHub repo size PRs Welcome

一个轻量的 DSH 会话「收藏夹」:给对话打上星标,防止误归档,并为常用会话提供一个快捷入口。client 端挂载在 DSH 官方稳定槽位,兼容后续 DSH 更新。

📑 目录

✨ 功能一览

  • ⭐ 头部星标开关:在会话头部操作栏为当前会话打星 / 取消收藏,一屏之内即点即用。
  • 🗂️ 收藏夹快捷面板:会话头部「收藏夹」入口,锚定面板列出所有已收藏会话,点击即可打开。
  • 🛡️ 保护归档:已收藏的会话执行归档时会被拦截并提示,需先取消收藏(fork / 重命名仍可用)。
  • 💾 持久化:收藏列表通过 DSH 的 favorites settings 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/`。

🧭 使用说明

  1. 打开一个会话,在头部操作栏点击 ☆ 收藏,即可把当前会话加入收藏夹。
  2. 再次点击 ★ 取消收藏,可将该会话移出收藏夹。
  3. 点击头部 收藏夹 按钮,在锚定面板中点击某个收藏项即可快速打开对应会话;面板内可逐一移除。
  4. 对已收藏的会话执行「归档」会被拦截,并提示先取消收藏。

🔧 工作原理

  • host 半(lib/index.js):通过 @deepseek-ai/dsh-settings 的 settingsNamespace("favorites") 注册一个 favorites namespace 与 schema(sessionIds: string[]),供 client 端通过常规 settings 通道读写数据。
  • client 半(lib/client.js):注入整个收藏夹 UI(星标开关 + 收藏夹面板),并通过 connection API 的 settings.describe / settings.mutate 读写 favorites namespace;同时包装 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/

⚠️ 已知限制

  • 仅支持单会话列表收藏,不区分会话分组 / 排序。
  • 收藏数据跟随当前 favorites settings namespace,跨 profile 不共享。
  • 依赖 DSH 的 conversation.session.header.actions 槽位,若 DSH 调整该槽位名需同步更新。

🔐 安全

  • 插件仅读写自己的 favorites settings namespace,不触碰其他数据。
  • client 端运行在 DSH client 沙箱内,不访问宿主 Node 环境。
  • 本插件不联网、不上传任何会话内容。

🖥️ 平台支持

  • 适配 DSH Web 界面(platform: web)。
  • 依赖 @deepseek-ai/cordis、@deepseek-ai/dsh-settings、@deepseek-ai/schemastery。

🤝 参与贡献

欢迎提交 PR / Issue。请确保改动通过构建并遵循现有代码风格。

📄 License

MIT © andyzhuang233