dsh-auto-successor
自动接力:DSH 会话水位超阈值时自动开新会话——AI 先把当前任务状态摘要成交接稿,写进新会话首条消息,旧会话归档。长会话永不断档。
What it is
自动接力:DSH 会话水位超阈值时自动开新会话——AI 先把当前任务状态摘要成交接稿,写进新会话首条消息,旧会话归档。长会话永不断档。
How to install
Run this in the DSH web profile, then refresh the page.
$ dsh plugin --profile web add 'git+https://github.com/rodrequezsaievade764-rgb/dsh-auto-successor.git#d59e94333cda9c72a629fbd40a01b60d18cd0752'
DSH versions accepted
Undeclared
Author and traction
rodrequezsaievade764-rgb · ★ 2 · Updated 2026-11-07
About this plugin
自动接力 · dsh-auto-successor
DSH 会话的上下文快满时,自动换一个新会话接着干——AI 先把当前任务摘要成交接稿,写进新会话第一条消息,旧会话归档。长任务永不断档。
旧会话(水位 88%)→ 生成交接稿 → 新会话(首条消息 = 交接稿)→ 旧会话归档
为什么需要它
DSH 的会话上下文有硬上限。跑长任务时你只有两个选择:手动开新会话并把上下文重新讲一遍,或者让模型在半截上下文里瞎猜。
billion-context 这类插件解决的是「原地压缩」,压缩会丢细节、改历史、影响前缀缓存。自动接力走另一条路:保留完整历史,另起一条干净的会话,只把结论带过去。
装
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add github:rodrequezsaievade764-rgb/dsh-auto-successor
Linux / Docker:
dsh plugin --profile add github:rodrequezsaievade764-rgb/dsh-auto-successor
装好后重启 DSH,左侧栏「自动化任务」下面会出现 自动接力。
用
默认就开着,阈值 85%。水位到点、轮数够,就自动接力,不用你管。
面板三页:
- 状态 — 每个活跃会话的水位条(绿 / 黄 / 红)、轮数、是否被排除;「接力当前会话」按钮可手动触发。
- 规则 — 总开关、水位阈值、最少轮数、冷静期、兜底上下文窗口、交接后是否归档、排除的会话标题正则。
- 日志 — 每次接力一条:自动还是手动、水位、成功还是失败、新会话号;降级交接稿会标出来。
两个全局工具(任何 DSH 会话都能调):
successor_handoff— 立即接力(sessionId不填 = 当前会话)successor_status— 看各会话水位和最近接力
规则怎么定
| 参数 | 默认 | 说明 |
|---|---|---|
| 水位阈值 | 85% | 占上下文窗口百分比。想更早换就调低 |
| 最少轮数 | 6 | 会话跑过这么多轮才允许自动接力,防误伤刚开的新会话 |
| 冷静期 | 10 分钟 | 接力后这段时间内不再自动接力,防连环接力打爆 |
| 兜底上下文窗口 | 128000 | 拿不到模型窗口元数据时按这个算 |
| 交接后归档 | 开 | 关了只建新会话,旧的留着 |
| 接力链上限 | 3 代 | 「接力 · 接力 · …」套到这一层就停自动接力,防套娃;手动仍可触发 |
| 排除标题 | 空 | 正则,一行一条;命中的会话不自动接力 |
建议排除的会话:QQ 机器人会话、后台任务会话这类「每句话都是一轮」的,水位涨得快但没有接力价值。填 ^QQ 就行。
接力链为什么要设上限:接力出来的是新会话,新会话水位涨满又会接力,于是标题变成「接力 · 接力 · 接力 · X」。三五层之后基本可以断定接力没解决问题——是任务本身失控,或者阈值调太低。到上限只停自动接力,不挡你手动点。标题也不会滚雪球:每次只保留一层前缀,不会是「接力 · 接力 · 接力」。
交接稿怎么投递:默认走 followup,交接稿作为新会话第一条消息跑一轮,好处是耐重启;seedMode 设成 system-prompt 就挂到系统提示词侧,省掉「已接上」那一轮空转。宿主没有对应接口时自动回落 followup,日志里写明降级原因。
交接稿长什么样
固定五节,让新会话能直接接手:
## 任务背景 ## 已完成 ← 关键文件路径 / 命令 / 参数原文照抄 ## 进行中 ## 下一步 ← 按顺序列 1-5 条 ## 注意 ← 坑、约束、用户偏好
模型挂了也不会断:自动降级为「原始记录截取」版交接稿,接力照常完成,日志里标「降级交接稿」。
数据位置
%USERPROFILE%\.dsh\plugins-data\auto-successor\
config.json— 规则log.jsonl— 接力史state.json— 冷静期、上次接力workspace/— 接力会话落在专用工作区,不污染你自己的项目目录
重装、升级都不丢。
设计要点
| 方面 | 做法 |
|---|---|
| 触发时机 | 监听 session/event 的 turn/end,只在 reason.kind === 'completed' 的正常结束时判断,半途而废的轮次不算 |
| 水位测量 | 宿主 tokenMeter.measure(session) 取 token,除以上下文窗口;窗口优先取测量值自带,其次会话当前模型元数据,最后兜底配置值;全拿不到就标「测不到」不瞎猜 |
| 交接稿生成 | 宿主 llm.stream 直连,不进会话(不污染任何上下文);只取最近 40 条、每条截 1500 字 |
| 新会话 | 走 sessionController.create(同工作区、同 preset),rename 成「接力 · 原标题」(只保留一层前缀) |
| 交接稿投递 | 默认 agent.followup 带 source: { kind: 'plugin' };seedMode=system-prompt 时挂系统提示词侧,宿主不支持则回落 |
| 轮数来源 | 优先用进程内实际观察到的轮数;进程重启后拿不到就按对话条数估算,不会往交接稿里写「约 0 轮」 |
| 归档 | workspaceRegistry.archiveSession,失败只记日志不影响接力结果 |
Compare in this category
The five most-starred plugins in the same category.
| Plugin | Author | Stars | Version | Updated |
|---|---|---|---|---|
| dsh-purge | kingcharleslzy-ai | 6.3K | 1.6.86 | 2026-11-08 |
| dsh-unrestricted | yexi-by | 1.1K | 0.2.8 | 2026-11-05 |
| dsh-univer-office | dream-num | 707 | 0.4.0 | 2026-11-03 |
| dsh-synapse | liangmianya | 697 | 0.5.7 | 2026-11-04 |
| dsh-qqbot | tencent-connect | 570 | 0.5.5 | 2026-11-08 |