READMESource: main@6299d73e
dsh-plugin-previous-session
跨会话引用(session link)—— 新会话不失忆:把历史会话以"引用 chip"挂进输入框,发送问题时后台自动快照注入。
体验
两种入口,都只把引用 chip 放进输入框(此时什么都没发生,可自由删改):
- 输入框打
~—— 弹出原生提及菜单(搜索 + ↑↓/回车),选中一个会话即插入一枚 chip;与子代理的@提及并列分组。 - 输入框工具行「链接会话」按钮 —— 打开工作区分组的多选弹框(复选框 + 搜索),一次挑多个,点「添加到输入框」逐枚插入 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 行直接挂载。注意它是库包(cordisService类,非组合包),不可列入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 表;草稿跨刷新持久化时占位符以剪贴板文本形态保留,极端情况下需重新插入。
- 会话链板块只反映当前事件窗口内的记录(向上翻页加载更早历史后会出现)。
- 斜杠命令入口被有意移除:平台弹壳单选即关、无法多选;
~提及 + 多选按钮是本插件选定的命令形态。
No comments yet. Be the first to write one.