Repository navigation
v1.0.0
长会话越滚越贵。步数到上限时,这个插件在这一轮答完之后(绝不中途打断)自动开新会话、把一份本地拼出来的交接摘要投过去、归档旧会话,再把界面切到新会话。摘要不调用模型,是纯本地模板拼装——省下的是「手动总结 + 复制 + 新建会话 + 记住进度」这四步。
它解决什么
- 省钱但不额外花钱:交接摘要由本地模板生成(取最近用户消息 + 最后一条回复,最多 16 行),零模型调用。真正计费的只有新会话的第一轮请求。
- 不打断:只在轮与轮之间判定,正在跑的轮一定跑完。上限是软上限,换新点会在
maxSteps附近浮动。 - 可先空跑验证:
dryRun只写日志、不建会话、不归档、不跳转。 - 不会连环换:
minSteps硬下限 +cooldownMinutes冷却 +maxRotations连续触发后自动暂停该工作区(状态持久化在state.json,重启不清零)。
安装(四步)
- profile 的
package.json里登记依赖和 bundle:{ "dependencies": { "dsh-session-rotate": "github:cry-flu/dsh-session-rotate" }, "dsh": { "profile": { "bundles": ["...", "dsh-session-rotate"] } } } - 让
node_modules里有这个名字(跑包管理器 install,或cmd /c mklink /J "<profile>\node_modules\dsh-session-rotate" "<插件目录绝对路径>")。 - 在 profile 的
cordis.patch.yml末尾挂载:- insert: - id: dsh-session-rotate name: dsh-session-rotate config: defaultMaxSteps: 40 workspaces: - name: my-workspace # 与侧边栏显示名完全一致 maxSteps: null # null / 省略 / 0 / "" = 跟随 defaultMaxSteps
workspaces为空数组 = 所有工作区都不生效,用哪个就加哪一行。 - 整个 DSH 换进程重启一次。「重开窗口」不会重载插件;重启后 Web GUI 端口会变。
先空跑确认再真用
把要测的工作区加进 workspaces(maxSteps 填你真实在用的值),打开 dryRun,正常干活跨过那个步数,然后看 ~/.dsh/session-rotate/debug.log:命中会记一条 [dry-run] 只记日志不换(同一会话同一档步数只记一次)。
别把 maxSteps 调成 2、3 去真测——换新是真的换,一晚上能刷出一屏空会话。
已知限制(先说清楚)
- 热重载无效:改插件代码(尤其
lib/client.js)后必须整个 DSH 换进程重启。 - 上限是软上限:判定只在轮间发生,开预判通常略早,关预判可能明显偏高(一轮能跑掉二十几步)。
- 新会话第一轮照常计费:摘要本身零成本,但那一轮请求是真的。
- 只对顶层会话生效,子会话跳过;每个会话只触发一次。
兼容性
只在我本人环境验证过:DSH 桌面版 0.2.1-rc.3(Windows)+ Node v24.18.0,npm test → 23 pass / 0 fail。CI 在 ubuntu + windows × node 20/22/24 跑单测,但不覆盖宿主行为,其他环境请先小范围试用。
注意
不在 npm 上。 包名 dsh-session-rotate 在 npm 上属于另一位作者的同名插件,不是本项目。
大部分代码由 AI 辅助生成,经人工审查与本地测试,但不保证所有环境行为如预期。有问题请开 issue,最想要的是「你的环境里到底能不能正常触发」。
v1.0.0 相对 0.2.1 的变更
版本变更清单
- 版本号
0.2.1→1.0.0;engines.node声明>=20。 npm test改为node --test:自动发现测试文件,不依赖 shell 展开 glob,Node 20 / 22 / 24 都能跑。package.json补齐repository/bugs/homepage/author。- README:删除全部本机绝对路径,安装步骤改为
github:OWNER/REPO;补充「改完代码怎么让它真正加载」。 - 新增
.github/workflows/test.yml:Ubuntu / Windows × Node 20 / 22 / 24 跑单测。
已知限制
上限是软上限,真实换新点会在 maxSteps 附近浮动。