前言¶
在 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 / 幻方无官方从属关系。
典型用法¶
- 平常:照常对话;有过交接的会话会自动出现在同一条链里。
- 主动交接:在面板按「生成交接词」→ 由 AI 写交接单与提示词 → 按「开新对话」自动开会话、粘贴、送出并切换。
- 到门槛:界面弹出提醒;若已开启自动交接,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。