session-chains:DSH 交接链面板

前言

在 DeepSeek Harness(DSH)里做长任务,拆成多场对话往往是省 token 最直接的做法。README 里提到同一工作线实测可省约 71% 的 token,但代价是侧栏会散成一堆彼此看不出关系的会话框。哪几场属于同一条工作线,其实已经写在 DSH 的 session 日志里——接手场的第一句用户话、交出场里助理整行产出的交接提示词,两侧都会落在 $DSH_HOME/sessions/<工作区>/<session>/session.v*.jsonl.zstd。缺的是有人把这些记录读出来并分组展示。

下面介绍社区插件 session-chains(仓库 HildebrandYu/dsh-session-chains),由维护者 HildebrandYu 发布,分类为工作流。它以 DSH 外挂形式挂进 $DSH_HOME/cordis.patch.yml(host 端 index.mjs、浏览器端 client.js),不改内建侧栏、不动 profile,把互相交接的对话自动聚成一条「链」,并提供编号、面板、HUD 与门槛提醒(可选自动交接)。

这是什么

session-chains 是 DSH 的交接链面板:左侧栏用卡片列出每条链及各场对话编号(001、002…),点一下即可切换;快到上下文上限时提醒交接,若在设置中开启,还可自动「开新对话 + 贴提示词 + 切过去」。链的分组依赖提示词里的标记(例如 鏈=<代号>),不必手动画线归类。

插件当前版本为 0.1.7(面板标题旁会显示;若数字未变,多半是页面仍跑旧 bundle,刷新 GUI 后再看)。授权为 MIT。

界面与能力

左侧栏与浮层面板

位置 内容
左侧栏卡片 每条链一行,展开为各场对话;右侧有收合、暂停、开面板等操作
面板(浮层) 全部链、搜索、拖拉/多选归链;可按名称、建立、场次数、最后活动排序
置顶与封存(2026-10-19) 侧栏每列右侧有置顶与封存;封存为两段式确认,封存链从卡片收起,仅在面板「封存库」中可见并可还原
输入框上方 HUD 例如 本場 320k/210 表示本场上下文与请求数,达门槛才变色
设置 字级、四组颜色、卡片图标、HUD 五段开关、交接门槛、自动交接

置顶与封存与改名共用 aliases.json 中的 pinned、archived 列表,不依赖浏览器 localStorage;封存不改动 session 日志,仅影响展示。

门槛与自动交接

默认门槛(可在设置中修改,或直接改 localStorage 的 dsh.session-chains.settings):

信号 提醒(warn) 强制(hard)
请求数 ≥ 200 ≥ 320
上下文 tokens ≥ 320k ≥ 480k
占模型视窗比例 ≥ 50% ≥ 65%

warn 仅提示;hard 在开启「到达门槛自动交接」时,会在本轮结束后执行交接流程。提醒可延后:warn 30 分钟,hard 5 分钟。

链如何被识别

插件用三类「接手」信号与一条严格的「交出」规则(助理消息里整行就是标记),避免把推理正文里的 鏈=… 误认成链起点。常见形式包括:第一句带 鏈=my-project、旧式 接續 my-project:…、或第一句中的专案路径。都没有则归为「未标记」,可在面板上手动归链。

交接时链代号由面板写入指令(2026-10-20 修);新对话会沿用本场最后选用的模型(经宿主路由 POST /local/session-chains.select-model,旧宿主再退回 ctx.remote.session.selectModel)。

安装与启用

需要已安装 DSH(桌面版或 web 版均可)。README 给出两种方式,任选其一。

从插件市场或 dsh plugin add(发布到 npm 之后可用包名;也可直接从 GitHub):

# 發佈到 npm 之後:
dsh plugin --profile web add session-chains
# 或直接從 GitHub:
dsh plugin --profile web add github:HildebrandYu/dsh-session-chains

本机文件夹直挂(开发用,改档即重载):

node scripts/install.mjs            # dry-run:只寫 .preview/
node scripts/install.mjs --apply    # 掛上(會備份 $DSH_HOME/cordis.patch.yml)
node scripts/install.mjs --remove --apply   # 移除

挂好后刷新 GUI 一次即可看到卡片。套件在 repo 根目录声明 package.json,其中 dsh.bundle.patch = ./cordis.patch.yml 与 dsh.client.platform = web;install.mjs 会写入插件本体与 HMR 监看两段,可重复执行。

插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证。DSH 社区目录(如 SkillHub 插件页)为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

  1. 平常:照常对话;有过交接的会话会自动出现在同一条链里。
  2. 主动交接:在面板按「生成交接词」→ 由 AI 写交接单与提示词 → 按「开新对话」自动开会话、粘贴、送出并切换。
  3. 到门槛:界面弹出提醒;若已开启自动交接,hard 门槛会在本轮结束后自动完成第 2 步。

未先生成交接词就手动「交接→新对话」时,会按设计显示两步错误提示,需先「生成交接词」。

适用场景与注意

适合在 DSH 中长期维护同一工作线、频繁拆会话的开发者:需要一眼看清「第几场接哪场」、在上下文逼近上限前交接,并减少侧栏里无关会话的干扰。

已知限制(来自 README):

  • 只支持 DSH 的 session 日志格式(如 session.v4.jsonl.zstd),换宿主需改 chains.mjs。
  • 失败红点尚无宿主数据源,暂未实现。
  • 链判定依赖交接标记;未用过交接指令的旧对话会落在「未标记」,需在面板归链。

结尾

session-chains 把 DSH 日志里已有的交接关系读出来,用链、编号和面板把多场对话收成一条工作线,并在 token 与请求数接近上限时提醒或自动交接。更多信息见社区目录 HildebrandYu/dsh-session-chains 与 GitHub 仓库 HildebrandYu/dsh-session-chains。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜