DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ds-customize /

dsh-plugin-previous-session

Verified

让 dsh 新会话不失忆 —— 在输入框用 ~ 或"链接会话"按钮把历史会话挂成引用 chip,发送问题时后台自动把被引会话的精简快照注入当前对话,并在会话头部以只读"会话链"徽标记录每次链接。

★ 0 Stars0 Forks0 Issues5 Community rating1 Confirmed installs
View on GitHub
READMESource: main@6299d73e

dsh-plugin-previous-session

跨会话引用(session link)—— 新会话不失忆:把历史会话以"引用 chip"挂进输入框,发送问题时后台自动快照注入。

体验

两种入口,都只把引用 chip 放进输入框(此时什么都没发生,可自由删改):

  1. 输入框打 ~ —— 弹出原生提及菜单(搜索 + ↑↓/回车),选中一个会话即插入一枚 chip;与子代理的 @ 提及并列分组。
  2. 输入框工具行「链接会话」按钮 —— 打开工作区分组的多选弹框(复选框 + 搜索),一次挑多个,点「添加到输入框」逐枚插入 chip。单条消息最多 3 个引用(平台硬上限)。

发送那一刻(不可逆):宿主在后台读取每个被引用会话、按预算快照精简,在日志里落成两条记录——

  • 一条 recall 上下文消息(折叠行呈现,不占聊天气泡),承载被引会话的只读快照;
  • 紧随其后的你的问题(提及改写成可读的 ~标题 文本)。

模型先读快照再答问题;之后源会话再怎么变,已注入的快照不变(回放安全)。

会话链板块:输入卡下方的只读记录条(会话链: [标题A] [标题B] …),列出本会话已经引入过的会话。纯记录、无增删改;每个会话独立一块、相互隔离,没引入过就不显示,刷新/重开仍在(直接从会话历史推导)。

架构

  • 浏览器半(lib/client.js)
    • 注册 ~ 触发源 session-link(候选来自会话列表快照;codec.serialize 在提交时把 chip 展开为 ~[标题](dsh-session:<base64url>) 提及)。
    • conversation.input.left 工具行入口:多选弹框,经会话作用域的 slash/input-insert-reference 事件插入原生 chip(draftRev CAS,重试补偿渲染延迟)。
    • conversation.composer.dock 板块入口:过滤快照节点中 kind === 'context' 且 source.kind === 'session-reference' 的记录行。
  • 宿主半(lib/index.js)
    • 监听 agent/pre-step:解析新认领的用户消息里的 dsh-session: 提及(编解码与平台 dsh-session-reference 逐字节一致,已用测试对拍),调用 ctx.sessionReferenceResolver.prepare() 生成聚合 recall 上下文,改写本步消息列表为 [上下文, 可读问题]。
    • 快照语义、预算(每源 64KB)、保留/省略统计全部由平台 dsh-session-reference 服务负责。
    • 降级承诺:快照失败(源被删、预算超限、取消)只记日志,消息原样发出,绝不阻塞发送。
  • 服务依赖:快照引擎 @deepseek-ai/dsh-session-reference 由本包的 cordis.patch.yml 以 loader 行直接挂载。注意它是库包(cordis Service 类,非组合包),不可列入 dsh.profile.bundles——列入会导致 profile 启动失败(declares no dsh.bundle)。它从 dsh 安装根解析,无需 npm 依赖声明。

行过滤规则

不显示:当前会话、空白会话、子代理来源会话;~ 菜单最多 30 行。弹框分组:当前工作区组最前 → 其余组按最新会话排序 → 未分组垫底;组内按最近更新倒序。弹框列表区固定显示 4 条,超出滚动。

安装

# 无需手工编辑 profile 的 bundles:本包自带 cordis.patch.yml,dsh plugin add 因
# dsh.bundle 声明自动把 dsh-plugin-previous-session 追加进 dsh.profile.bundles;
# 快照引擎 @deepseek-ai/dsh-session-reference 由同一 patch 以 loader 行挂载
# (它是库包,不能进 bundles,见上文「服务依赖」)。

npm pack --cache "D:\fep\deepseek-session\.npm-cache"
dsh plugin --profile web remove dsh-plugin-previous-session
dsh plugin --profile web add <tgz 绝对路径>

# 验证配置树:应出现 "# == dsh-plugin-previous-session" 层,含两行 loader 行
dsh --profile web --dump-config | Select-String -Pattern "previous-session|session-reference"

# 重启 dsh web 后验证:设置 → 插件里出现 previous-session,输入框打 ~ 出现会话分组

⚠️ 若曾按旧版说明把 @deepseek-ai/dsh-session-reference 手工加进 profile 的 bundles,请移除该行(编辑 C:\Users\<user>\.dsh\profiles\web\package.json),否则启动报 declares no dsh.bundle。

测试

node test\rows.test.mjs   # 17 项:编解码对拍、提及解析、分组/过滤、链板块投影、时间桶

已知边界

  • 引用 chip 依赖输入机的 occurrence 表;草稿跨刷新持久化时占位符以剪贴板文本形态保留,极端情况下需重新插入。
  • 会话链板块只反映当前事件窗口内的记录(向上翻页加载更早历史后会出现)。
  • 斜杠命令入口被有意移除:平台弹壳单选即关、无法多选;~ 提及 + 多选按钮是本插件选定的命令形态。
5/ 5

1 ratings

Verified DSH bundle

Commit 6299d73e169c

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout