
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-session-plus
Advanced tools
DSH session completion: sidebar archive directory, restore, delete, edit-and-resend
中文 | English
awesome · DSH plugin 推荐 dshfind
DeepSeek Harness 的会话补全:侧栏归档目录、恢复到原位置、删除、分支对话。
官方其实已经能归档会话,但没有查看、取消归档或删除的界面。我做这个插件,就是把这几项操作补上。全部走公开 slot 和 workspace 域,不改 @deepseek-ai 核心文件,也不往官方「视图选项」菜单里插 DOM。
侧栏最底下、设置旁边点 归档。
这不是某一版实现写坏了。我在多个版本里都复现过,社区其它归档类插件也会撞上同一类问题。根因在 DSH 会话日志:tool / result 必须带 source.kind = tool 和 callId。工具还在跑的时候把会话归档(中间会 clear() / 卸绑定),日志可能被写成非法事件。已经写坏的日志,插件修不回来,只能删掉。
我自己测下来是这样:
| 场景 | 结果 |
|---|---|
| 场景一:这一轮已经结束,再归档,再恢复 | 不会出问题。重启也还在。 |
| 场景二:还在长文回答、没有工具调用,中途归档,再恢复 | 不会出问题。回答可以写完。重启也还在。 |
| 场景三:正在调工具的途中归档,再恢复 | 一定会出问题。 |
| 删除 | 我没再测到 bug。 |
| 分支对话(修改并分支) | 我测过的路径里没碰到 bug。 |
场景三恢复后,客户端常见:
历史加载失败:conversation Context 9:tool-call received more than one start Match(internal)
重启服务后再打开,常见:
history unavailable
SessionPersistenceCorruptionError: ... message must have tool source(internal)
所以:不要在工具还在跑的时候点归档。 等这一轮结束,或先点停止。空白「新会话」本来就不能归档。插件会尽量等到空闲(含 runningCalls / partial,最多约 30 秒)再归档,超时会提示「请先等当前回复结束,或点停止后再归档。」——但我拦不住所有时机。一旦日志已经坏了,恢复没有意义,删掉那个会话即可。
npm(稳定版,官方推荐)。请装 0.1.1:npm 上的 0.1.0 是更早的占名包,不是现在这份。
dsh plugin --profile web add dsh-session-plus
已经装过 0.1.0 的:
dsh plugin --profile web update dsh-session-plus
也可以跟 GitHub(跟仓库最新提交;本包预构建 lib/,git 安装无需 allowBuilds):
dsh plugin --profile web add github:SZMY-haruhi/dsh-session-plus
钉 commit:
dsh plugin --profile web add github:SZMY-haruhi/dsh-session-plus#<commit>
卸载:
dsh plugin --profile web remove dsh-session-plus
dsh.bundle· 预构建lib/· git 安装无需allowBuilds
archivedSessionIds,不是我自己做的影子列表sessionIds 槽位官方归档时本来就没拆,所以回到原位置.zstd 兄弟文件、会话目录);删完不会再取消归档,避免幽灵会话回到列表sessions.clear() 回到空白「新会话」,不会 connectWorkspace(那个体感像「返回工作区」)increaseTitle 叠 (1) (2) → sessions.fork 再发送;旧会话还在归档目录里点 恢复 / 删除:
自己消息旁 修改并分支:就近浮窗改提问,可选新标题,原对话还在。
| 操作 | 走哪 | 结果 |
|---|---|---|
| 归档 | 官方 workspaces.archiveSession | 会话从侧栏分组里消失,记账保留 |
| 恢复 | 写回 workspace 域的 archivedSessionIds | 会话出现在原来的工作区位置 |
| 删除 | 卸记账 + 删 persistence 文件 | 不可恢复 |
| 分支对话 | fork + prompt | 新会话 = 历史前缀 + 改过的提问 + 新回答 |
@deepseek-ai 包打文件补丁insert)pnpm install
pnpm build
dsh plugin --profile web add .
pnpm pack 可打出准备发给 npm 的 tarball,用 dsh plugin --profile web add ./dsh-session-plus-0.1.1.tgz 装这一版。
把 GitHub 上这一版同步到 npm。0.1.0 在 npm 只是占名包,同号不能覆盖,所以发 0.1.1。
这一版指当时的 GitHub main。npm 上同号的 0.1.0 只是更早的占名包,两边不是同一份代码。
第一次把「会话补全」做成能用的插件。这一版实现了:
sidebar.footer.action,与官方设置同一套几何)workspaces.archiveSession(只写 archivedSessionIds,工作区槽位保留).zstd / 会话目录;当前会话则清成空白「新会话」cancel() 正在跑的一轮sessions.fork + prompt@deepseek-ai 补丁,不往视图选项插 DOM已知限制见上文「已知失败」。场景三是宿主日志约束,不是这一版独有的回归。
感谢你看到这里。官方这边没有语音转文字;语音插件我试过几款,接起来费劲、用着也别扭,后来自己写了 otoink:跨窗口口述,引擎内置,尽量轻一点。
实现时我读过这些 MIT 仓库当设计参考。只借鉴思路;版权仍归原作者:
没有 LICENSE 的仓库,我不当成可复制源码。公开契约见本仓库 NOTICE。
官方契约来自 DeepSeek Harness / Cordis。
MIT · Copyright (c) 2026 SZMY-haruhi
感谢star❤️ tonkatsu258 · 个人网站
FAQs
DSH session completion: sidebar archive directory, restore, delete, edit-and-resend
We found that dsh-session-plus demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.