前言¶
在 DeepSeek Harness(DSH)里跑长任务,会话上下文很快就会被顶满。官方的自动压缩是有损的:细节会被吃掉,而且压缩完还在同一个会话里,继续往下顶就会越来越吃力。这需要换一条路——交接:把当前进度、改过的文件、验证过的结果整理成一张结构化交接卡,同时起一个上下文清零的新会话,把卡片作为它的第一句,并自动命名、置顶、归组。
它是什么¶
xwide/dsh-xwide-handoff 是一个为 DSH 提供交接能力的插件,由 XWIDE 维护。它把「快聊满的会话」变成「一张结构化交接卡 + 一个干净的新会话」,并在侧栏自动置顶。当上下文接近阈值时,还能自动把下一棒备好。
核心功能¶
/handoff指令:在输入框敲/handoff后面跟一句话,会把这句话作为「本次交接重点」写入交接卡。如果不写,卡片会自动带上「本轮动过的文件」和「最近 6 条原话」。- 新会话自动命名:新会话标题格式为「原会话名_01」「_02」…,序号来自落盘计数器,按 cwd 分桶单调递增,不会重名。
- 自动置顶与归组:新会话会在侧栏自动置顶,并归入源会话所在的项目分组。
- A 半自动(autoReady):插件监听每轮结束,计算最近一次请求携带的上下文量,当占用比例 ≥ readyPct(默认 0.7)时,自动执行一次交接(建会话、命名、置顶、注入卡片、驱动首轮),让新会话在侧栏可见。同一会话只备一次,全局冷却默认 10 分钟,总开关默认关闭。
安装与启用¶
安装方式有两种,二选一即可:
- 使用 pnpm(推荐):
# 在 DSH profile 目录里
pnpm add dsh-xwide-handoff
- 下载即用(不需要 npm/pnpm):
1. 把本仓库整个目录放进<你的 profile>\local-plugins\dsh-x-wide_handoff\。
2. 在 profile 的cordis.patch.yml末尾加一行挂载,然后重启 DSH:
- id: dsh-xwide-handoff
name: './local-plugins/dsh-x-wide_handoff/index.js'
config:
enabled: true
commandName: handoff
childMode: create
recentUserMessages: 6
注意:只能有一个装载实例,否则会出现重复注册的现象。
典型用法¶
在 DSH 的指令菜单里可以看到 handoff 这一条(说明命令已注册),也可以直接在输入框敲 /handoff。
示例输入:
/handoff 本次重点:把 X 的解析逻辑改完;已改 a.js;未验证回归
命令执行完会返回新会话的 id 和标题,并把它置顶。
配置项¶
- id: dsh-xwide-handoff
name: './local-plugins/dsh-x-wide_handoff/index.js'
config:
commandName: handoff # 命令名,默认 handoff
childMode: create # none | create | fork(见下)
recentUserMessages: 6 # 卡片带最近几条你的原话
compact: false # 交接前是否先本地压缩一次(本地大模型请保持 false)
titleTemplate: '{base}_{seq}' # 标题模板,支持 {base} {seq} {note} {time}
seqWidth: 2 # 序号位数:_01
maxTitleChars: 64 # 标题字符上限
repinLimit: 3 # 自愈重钉次数上限
autoReady: false # A 半自动总开关
readyPct: 0.7 # 触发阈值(占上下文窗口比例)
readyCooldownMs: 600000 # 冷却
contextWindow: 262144 # 上下文窗口(判占用用;默认取自作者的本地模型,请按自己窗口改)
cardSections: # 卡片栏目开关
guide: true # 「接手须知」
files: true # 「本轮动过的文件」
usage: true # 「源会话上下文」
childMode 三档¶
create:服务端直接建全新空会话(上下文清零,继承 cwd 与 agentPreset)。这是默认推荐模式。none:服务端不建会话,把卡片 JSON 塞进结果文本,由client.js用 GUI 原生 API 建可见会话。需要「和点『新建对话』完全一致」的场景;要求client.js已正确作为dsh.client打进包,跨机器未验证。fork:继承全部历史(上下文不清零)。只想换个标题、不想清上下文的场景。
注意:三种模式都不能带 parentSession,否则 DSH 会把新会话从列表和可恢复集合里排除,导致交接完看不见新会话。
交接卡样式¶
卡片以目标标题作为第一行,包含「接手须知」「本轮动过的文件」「最近你的原话」「源会话上下文」等栏目。
适用场景与注意¶
- 适合需要多次迭代、上下文会频繁顶满的长任务。
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
- childMode: none 的客户端半边接线尚未在第二台机器验证。
- DSH 升级后请核对插件依赖的内部接口位置,所有内部调用都做了宽容处理,失败只记日志,不会导致交接本身崩溃。
短结尾¶
这套「交接」方案能让你在换会话时保留完整上下文,接力不丢。更多细节与故障排查,可查看目录页与 GitHub 仓库。