# DSH Session Favorites
**把常回看的会话,放在随手可取的位置**
[English](README.md) · [MIT](LICENSE)
[](LICENSE)
[](https://www.npmjs.com/package/dsh-session-favorites)
[](https://www.npmjs.com/package/dsh-session-favorites)
[](https://github.com/hiuga0321/dsh-session-favorites)
[](#前置条件)
> DSH Session Favorites 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。
## 你可以用它做什么
给常回看的会话加个星标,之后不用再翻侧边栏找它。
- **收藏会话**:在会话头部点星标收藏,也可以在收藏夹里添加。
- **按工作区分组浏览**:收藏按所属工作区分组,列表再长也能看清。
- **快速查找**:在列表顶部按标题搜索。
- **引入提示词**:在输入框键入 `@`,即可把已收藏的会话插入当前对话。
- **保持名称同步**:重命名收藏时,真实会话会通过 DSH 自身的重命名路径一并改名。
- **多端一致**:收藏保存在宿主端,同一 profile 下的每个标签页和浏览器看到的都是一份。
- **打开已归档收藏**:已归档的收藏仍可打开,且不会改变它的归档状态。
- **清理失效条目**:会话已被删除时会标记出来,确认后一步清理。
## 界面预览
在侧边栏底部、设置按钮上方点击 **收藏夹**:

每条收藏都带星标,侧边栏入口显示当前 profile 的收藏数量。条目按所属工作区分组,悬停时显示重命名/移除操作。
## 前置条件
- 已能正常使用 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web,并可在终端运行 `dsh`。
- 支持的 DSH 版本:`0.1.5-rc.2` 至 `0.2.1-alpha.1`。
- Node.js 需满足 `>=22.15`。
## 安装
以下示例使用 `web` profile,请替换为你实际使用的 profile。
### 让 Agent 帮你安装
把下面这段话发给能执行本机终端命令的 Agent:
```text
请将 dsh-session-favorites 最新版安装到本机 DSH 的 web profile,使用官方 npm 源。安装后检查插件配置,并告诉我如何重新加载 DSH、打开收藏夹列表。
```
### 手动安装
在 PowerShell 中执行:
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
dsh plugin --profile web add dsh-session-favorites@latest --registry=https://registry.npmjs.org/
```
安装后重启 DSH Web,并按 `Ctrl+Shift+R` 硬刷新浏览器。侧边栏底部会出现 **收藏夹** 入口。
## 使用
| 你想做什么 | 操作 |
| --- | --- |
| 收藏当前会话 | 点击会话头部的星标 |
| 打开收藏列表 | 侧边栏底部 → **收藏夹** |
| 查找收藏 | 在列表顶部搜索框输入关键词 |
| 打开某条收藏 | 点击该行 |
| 把收藏引入提示词 | 在输入框键入 `@`,选择会话 |
| 重命名收藏 | 悬停该行 → 重命名;真实会话会一并改名 |
| 移除单条收藏 | 悬停该行 → 移除 → 确认 |
| 清理已删除的会话 | 使用列表旁的横幅提示,然后确认 |
弹出层仅通过关闭按钮关闭,因此点空白处不会让任务中断。移除收藏一律二次确认,批量清理共用同一个确认框。
收藏保存在宿主端的 `favorites` 存储域中,DSH 自身的会话数据不会被修改,也不会写入你的 DSH profile 之外的位置。
### 归档会话
已归档的收藏仍可点击,并且 **打开它不会改变它的归档状态**。插件刻意不调用 DSH 的取消归档接口,所以点开之后该会话仍然是「已归档」,只是你能正常查看内容。要真正取消归档,请用 DSH 原生的「取消归档」;两者是相互独立的两件事。如果其依赖的兼容补丁打不上,插件会如实报错而不会静默失败,打开归档收藏会降级为一条可见的提示。
### 重命名
重命名收藏会通过 DSH 自身的 `session.rename` 一并重命名真实会话,与原生侧边栏走同一条路径。如果该重命名成功、但同步插件保存的名称副本失败,会话会保留新名字,插件只记录一条告警 —— 你的重命名不会被回滚。
## 更新
要升级到新版本,用你想要的版本重跑安装命令,然后重启 DSH Web 并硬刷新浏览器:
```powershell
dsh plugin --profile web add dsh-session-favorites@latest --registry=https://registry.npmjs.org/
```
## 常见问题
### 安装后找不到入口?
先重启 DSH Web 并硬刷新浏览器,确认安装到了你正在使用的 profile。仍未显示时,确认插件已解析:
```powershell
dsh --profile web --dump-config
```
输出中应包含 `session-favorites`,且插件包必须同时声明 `dsh.bundle.patch` 与 `dsh.client.platform: "web"` —— 只声明 `dsh.client` 的包会装成普通依赖,不显示任何界面。
### 卸载插件后收藏会丢吗?
不会。收藏保存在你的 DSH profile 里,重新安装插件后列表会回来。卸载也不会删除会话或消息。
### 收藏会在多台设备间同步吗?
收藏保存在宿主端的 DSH profile 中,因此使用该 profile 的每个标签页和浏览器看到的都是同一份列表。不同的 DSH 安装各自维护自己的列表。
### 能和其他侧边栏插件一起用吗?
可以。本插件只新增一个底部入口、一个头部星标和一个 `@` 源,不修改 DSH 源码,也不接管其他插件的界面。
遇到其他问题,请提交 [Issue](https://github.com/hiuga0321/dsh-session-favorites/issues),附上 DSH 与插件版本、复现步骤和错误信息。
## 从源码安装
开发或测试未发布改动时展开
没有构建步骤:[`src`](src) 就是发布内容,检出即可直接运行。
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
git clone https://github.com/hiuga0321/dsh-session-favorites.git
Set-Location .\dsh-session-favorites
dsh plugin --profile web add .
```
完成后重启 DSH Web 并硬刷新浏览器。
发布前的检查:
```sh
node scripts/smoke.mjs # 包名一致性、客户端装载、关键交互路径
node --test test/schema.test.mjs # 存储域记录 schema
node --test test/favorites-core.test.mjs # 收藏 CRUD 纯逻辑
node --test test/client.test.mjs # 跨 DSH 版本的客户端契约
```
`scripts/smoke.mjs` 强制校验四处声明一致 —— [`src/package-identity.js`](src/package-identity.js)、`package.json` 的 `name`、`cordis.patch.yml` 的 `name` 与 client bundle 的 `id`。改包名时只要漏改一处就会在这里失败。
`devDependencies` 钉在 `0.1.5-rc.2`(兼容下限,也是宿主/远程契约的验证基准)。要跑真正的版本矩阵,把各版本各装一份、分别跑上面的检查即可 —— 客户端两套契约形状的夹具已经就位。
## 许可证
本项目采用 [MIT 许可证](LICENSE)。