ChenRuoT/dsh-sidebar-qa ↗★ 44

dsh-sidebar-qa

DSH web plugin: select conversation text -> ask in a right-side panel -> a dedicated follow-up session (❓<topic>) in the same workspace, without interrupting the main conversation. Thin consumer of dsh-better-sidebar. 适合希望在不中断主对话的前提下,在侧边栏进行流式追问的用户。

패키지
dsh-sidebar-qa
호환성
미검증
Harness peer 범위
^0.1.0-rc.8
버전
0.5.0
라이선스
MIT
최근 업데이트
2026. 9. 14.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ChenRuoT/dsh-sidebar-qa

使用

  1. 在任意对话(主对话或追问对话)中划选一段文本,浮层会给出两个按钮:「添加到对话」把引文追加进当前会话的主输入框(不开侧边栏),「提问」则走下面的侧边追问流程。点击浮层「提问」。即使右侧面板处于收起状态也会自动展开(对应 issue #6),「追问」tab 直接可见——包括"先手动收起面板、再点提问"的重复场景。
  2. 右侧「追问」面板变成一条内嵌对话:引文/问题在侧边栏内流式回答,输入框固定在下方面板底部,不会跳转到子对话大窗口。
  3. 回答过程中可在输入框继续追问(Enter 发送、Shift+Enter 换行),所有问答都在侧边栏内完成。面板底部的输入框复用 DSH 主对话的输入栏外观(同一套设计 token 的圆角胶囊卡片):发起新追问时左侧是上下文策略 chip,右侧的模型选择(与主对话同一份 session.models/selectModel 数据,切换互通)与 context 占用环(复用 contextPressure 投影)始终可见——新追问时它们绑定被追问的父会话(context 环即父会话占用,可据此判断用全量还是裁切)。模型座不会写主对话:新追问 + 压缩/裁切时它是本地草稿,默认显示配置里的回答模型(子会话真正会用的那个),你的选择只在追问会话建好后应用;新追问 + 全量继承时只读置灰(fork 子会话沿用主对话模型,正是前缀缓存命中的前提,如需换模型请改用压缩/裁切);继续已有追问时绑定该追问会话并直接生效。最右侧为上箭头发送键。
  4. 每个追问仍是同工作区的独立会话(❓),主对话零打断;追问可以嵌套(在追问对话里再划选提问会生成新的子追问)。发起新追问时,输入框左侧的上下文策略 chip 可选择策略(默认取配置 historyStrategy):
    • 全量继承:sessions.fork 从主会话最近的已完成 turn 分叉子会话,完整历史随种子继承,首条请求复用主会话消息前缀 → DeepSeek 自动前缀缓存命中、零压缩损失;子会话沿用主会话模型。主对话正在回答(无已完成 turn)时 fork 自动降级为「压缩」并提示。追问 tab 中,继承的父对话历史显示在分割条上方,默认视图锚定在本追问自己的「引用 + 提问」处,向上滚动分页加载父对话历史(与主对话「加载更早」体验一致)。
    • 压缩:快速模型压缩较早窗口 + 近期原文保留(默认,省 token)。
    • 机械裁切:最后 trimWindowMessages 条消息原文直取,零 LLM 成本、确定性输出。
  5. 侧边栏「追问记录」tab 按根(主)会话分组,以分层树列出当前工作区内的所有(嵌套)追问(归属判定:当前会话所在工作区,见 src/client/history-scope.ts),点击跳转。有子追问的节点右侧有折叠按钮(箭头随折叠状态旋转)收纳子树,其左侧显示该对话组最近访问时间(相对标签,复用 DSH 左侧面板的样式与数据源 sessions.list.updatedAt)。跳转后目标会话的追问记录 tab 保持开启(定向 openTab(seed, scope),已打开则聚焦、未打开则新建)。被归档或删除的追问(用户自行管理会话时)会置灰并标注「已归档 / 已删除」,不可再点击跳转,行尾的「移除」按钮将其从记录中清除(连同整棵子树清理 localStorage 映射,DSH 侧会话本身不受影响)。

配置

配置走 DSH 设置服务 sidebarqa 命名空间(settings.yaml 或设置页)。Web 界面入口:DSH 设置 → 侧边卡片 → 「追问」卡片右上角的齿轮「功能配置」弹窗(由 dsh-better-sidebar v0.12+ 的 settings.render 提供),可逐项编辑下表字段——文本行 blur/Enter 提交,数字行按区间钳制,写入经 /sidebarqa/api/config.update 带 revision 乐观锁(多窗口冲突时提示重试)。回答/摘要的模型渠道与模型为下拉框,选项来自运行时已配置的渠道。

键默认说明
historyStrategycompressed默认上下文策略:inherit 全量继承(fork+缓存命中)/ compressed 压缩 / trim 机械裁切(面板内可逐次切换)
trimWindowMessages10机械裁切模式保留的最近消息条数(1–256)
summarizeProvider''摘要快速模型渠道;空 = 继承被追问会话的 provider
summarizeModeldeepseek-v4-flash摘要快速无思考模型
summarizeReasoningEffortoff摘要思考模式(off/high/max 三档下拉)
answerProviderdeepseek-official子对话回答模型渠道
answerModeldeepseek-v4-flash子对话回答模型
answerReasoningEffortoff子对话思考模式(off/high/max 三档下拉)

面板只展示上述 8 项常用设置;压缩/标题的内部调参键(summarizeBudgetTokens、recentWindowMessages、backgroundWindowMessages、titleBudgetTokens)不在面板暴露,仍可在 settings.yaml 的 sidebarqa 命名空间里配置。

压缩模式的下上文注入刻意保持轻量:旧背景压成最多 3 句话(目标 / 当前进度 / 未决事项),近期只保留最近 2 条且每段强截断(≤400 字符);模型侧从新到旧提交,让当前进度落在注意力最强位置。摘要失败/无渠道时自动降级为「仅近期对话 + 引文 + 问题」,问答不中断;全量继承失败(主对话正在回答)时自动降级为压缩模式。