dsh-side-session
August 18, 2026 · View on GitHub
DSH(DeepSeek Harness)临时会话插件:基于当前主对话上下文 + agent 触及的文件, 在独立悬浮窗里发起不污染主会话的临时追问。
功能(v0.3.0)
- 独立悬浮窗(无侧栏停靠形态):
position:fixed可拖拽移动、右下角缩放手柄; 启动不自动弹出,由左下角 💬 图标 /Ctrl+Shift+S//side-session斜杠命令唤起。 - 自动导入主对话上下文:打开即自动加载当前会话的对话记录 + 触及文件
(解析
session.jsonl.zstd日志,实测准确);主对话变化时事件驱动缓存失效 + 2s 轮询刷新。 - 实时显示当前会话模型:浮窗头部与上下文卡实时展示当前会话实际使用的
provider/model(如
opencode-go/deepseek-v4-flash),并标注 DSH 当前默认 (agent-default-model);模型切换即时刷新(meta 指纹含 provider/model)。 - 上下文长度三档(设置 → 临时会话 → 上下文长度,选择后点确定生效;
仅当数值变化时才拉取全量上下文,轮询开销极小):
- 1 标准:120 条 / 40K 字符;24 文件 / 单文件 24KB / 合计 200KB
- 2 加长(默认):600 条 / 200K;80 文件 / 64KB / 800KB
- 3 完整:5000 条 / 2M;300 文件 / 256KB / 4MB(最接近通读全文)
- 流式回答 + Stop 按钮:回答可中止(AbortController);浮窗隐藏时暂停轮询(省资源)。
- 三种回答引擎(互斥、持久化、即时切换):
- 复用 dsh 全局 Key(默认)——自动读取 DSH 当前默认供应商(
settings.yamlagent-default-model+llm-pi-ai.providers.<p>.apiKeyEnv),按供应商解析 环境变量 /$DSH_HOME/.credentials.yaml的对应 key 与 OpenAI 兼容端点; 不再只认DEEPSEEK_API_KEY(支持 deepseek / opencode-go / openai / groq / openrouter / together 等内置表;baseURL 缺失或非 OpenAI 协议时给出明确指引) - 插件自带 Key(apiKey / model / endpoint,secret 持久化)
- 走 dsh 宿主 LLM(
ctx.llm.stream,不读任何 key;失败时错误透传到 UI)
- 复用 dsh 全局 Key(默认)——自动读取 DSH 当前默认供应商(
- 主界面同款 UI(
--dsw-alias-*设计令牌,深浅主题自动跟随);输入框复刻官方 Composer。
设置
「设置 → 临时会话」:回答引擎模式(1/2/3)+ mode2 的 API Key/model/endpoint + 上下文长度(三档)。
安装 / 加载
dsh plugin --profile <name> add <本仓库 git 地址>#<分支>
# 或复制到 ~/.dsh/profiles/<name>/node_modules/@dsh-external/dsh-side-session/ 并重启
文件结构
package.json # 含 dsh.client.inject / platform 声明
dsh.plugin.json # 插件描述
cordis.patch.yml # 服务端加载(insert 块)
lib/index.js # 服务端:设置节 + /context + /ask 流式代理 + 日志解析 + 事件缓存失效
lib/client.js # 浏览器 bundle:Store + 悬浮窗 + 拖拽/缩放 + 三模式 + 流式 UI(零构建)
安全与限制
- 路由仅限回环(
isLoopback);API Key 走 settings secret role。 - 大文件注入前先
stat,二进制跳过、超大文件只读前 N KB(防 OOM)。 - 「浮窗」为页内可拖拽自由浮层(position:fixed),非独立 OS 窗口。
- 上下文数据源为会话日志解析(
session.jsonl.zstd属平台实现细节,升级后若格式变化需适配)。
变更记录
- 0.3.0(2026-08-18):模式 1 改为「当前会话供应商感知」——不再只认
DEEPSEEK_API_KEY,按实时agent-default-model的 provider 解析llm-pi-ai.providers.<p>.apiKeyEnv(settings.yaml)→ 环境变量 /.credentials.yaml取 key,并匹配内置供应商表(deepseek / opencode-go / opencode / openai / openrouter / groq / together…)的 OpenAI 兼容端点; 已知表未覆盖或非 OpenAI 协议时给出明确指引(配 baseURL 或转 mode3/2)。 新增实时模型显示:浮窗头部 + 上下文卡展示当前会话 provider/model 与 DSH 默认(agent-default-model),meta 指纹含 provider/model 即时刷新。 - 0.2.3(2026-08-16):上下文长度切换改为选择暂存 + 确定按钮(不再每改即写设置,
消除切换卡顿);新增
?meta=1轻量轮询端点(只回计数与指纹,客户端指纹变化才拉全量, 大幅降低主对话变化时的轮询开销)。 - 0.2.2(2026-08-16):上下文长度三档(标准/加长/完整);删除侧栏停靠死代码与 无效的面板宽度设置;默认不自动弹出;事件驱动缓存失效替代无效的实时订阅猜测; mode3 错误透传;文件读取 stat + 二进制跳过;缓存 LRU 上限;Stop 按钮; context 响应补充 provider/model。
- 0.2.0(2026-08-15):独立浮窗形态(此前为右缘停靠,已按用户要求移除侧栏样式)。
- 0.1.0:初版(右侧自绘固定面板 + 撕出浮窗按钮 + 三模式引擎)。