easerlee/dsh-session-shift ↗★ 0
dsh-session-shift
在上下文超限时自动交接至新会话 适合长对话及重度开发任务,在达到阈值时自动机械提取上下文并无缝交接。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:easerlee/dsh-session-shift說明文件
閱讀完整 README ↗配置
在 profile 的 cordis.patch.yml 里:
- id: dsh-session-shift
config:
enabled: true
thresholdRatio: 0.85 # 出厂默认 0.6;与 compaction 一起用时调高
maxCompactions: 2 # 本会话被 compaction 压过几次就交接(0 = 只看压力)
cooldownMs: 300000
handoffDir: .dsh/handoff
recentMessages: 14
maxChars: 24000
renameOldSuffix: " [已交接]"
dryRun: false
| 键 | 默认 | 说明 |
|---|---|---|
enabled | true | 关掉就只留 HTTP 接口与工具,不做自动交接 |
thresholdRatio | 0.6 | 压力到多少比例触发(0.6 = 60%)。与 compaction 一起用时调高,见下 |
maxCompactions | 2 | 本会话被 compaction 压过几次就触发交接(0 = 只看压力) |
cooldownMs | 300000 | 同一会话两次交接的最小间隔 |
handoffDir | .dsh/handoff | 交接包落盘目录(相对工作区;写绝对路径也行) |
recentMessages | 14 | 用户消息段最多带多少条(每条截 400 字) |
maxChars | 24000 | 交接包字数上限;余量按预算分给两个消息窗口,塞不下先丢更早的 |
renameOldSuffix | [已交接] | 旧会话改名时加的后缀 |
dryRun | false | true = 只生成交接包,不建新会话(首次验证用) |
⚠️ patch 的 config 是整段替换,覆盖时必须把不想改的键一起写上。
助手消息段没有单独的条数配置:它吃用户消息段之后剩下的预算,从最新往回填,每条最多 600 字; 预算不够时丢掉的永远是更早的消息,最新的那条一定在(它就是「停在哪儿」)。