前言¶
在 DeepSeek Harness(DSH)里长时间跑智能体时,上下文会不断累积,系统会通过 Compact 把历史消息压缩掉以控制 token 占用。对依赖代理 API、且后端按 Session ID 做账号或配额轮询的部署来说,若出站会话标识一直不变,Compact 之后仍可能被当成同一条长会话,轮询策略不一定按预期触发。
下面介绍社区插件 dsh-session-rotate-on-compact(维护者 Hugo16,目录分类 admin-security):在 DSH 侧会话保持不变的前提下,仅在 Compact 成功 后生成新的出站 Session ID,让代理把下一次请求识别为新会话,从而触发账号轮询;Compact 失败则不切换,也不会重新发送已被压缩掉的历史消息。
这是什么¶
dsh-session-rotate-on-compact 是面向 DSH 的会话轮换插件。README 中的定位是:当 DSH 完成一次自动或手动 Compact 后,插件会生成新的 Session ID,使代理 API 将下一次请求识别为新会话,从而触发账号轮询。
插件当前版本为 0.1.0(见 GitHub 仓库说明),运行环境要求 Node.js >= 20(见仓库 package.json 的 engines 字段)。
核心功能¶
以下能力均来自仓库 README 的「功能」说明,安装后由插件在 Compact 流程中生效,无需额外配置文件(资料中未列出独立配置项)。
- DSH 会话保持不变 — 不新建 DSH 会话,只调整出站 LLM 侧会话标识(与
package.json中 description 一致)。 - Compact 成功后切换 Session ID — 仅在压缩成功时轮换。
- 自动 Compact 与手动 Compact 均支持 — 两种触发方式走同一逻辑。
- Compact 失败时不切换 — 避免在异常状态下误换会话。
- 不重新发送已压缩掉的历史消息 — 轮换标识时不回放已被 Compact 移除的内容。
安装与启用¶
安装命令以 GitHub README 为准。在 PowerShell 中执行:
pnpm dsh plugin --profile web add "https://github.com/Hugo16/dsh-session-rotate-on-compact.git"
安装完成后 重启 DSH,插件通过 Cordis patch(cordis.patch.yml)接入 DSH 生命周期。
典型用法¶
资料中未提供单独的 CLI 示例或配置片段;典型用法即:安装并重启 DSH 后照常使用 Compact(自动或手动)。当某次 Compact 成功结束时,插件会自动生成新的出站 Session ID;下一次经代理发出的 LLM 请求会携带新标识,由代理侧按既有策略识别为新会话并参与账号轮询。
若 Compact 未成功,Session ID 保持原样,行为与未安装插件时一致(除插件本身 hook 外无额外副作用)。
适用场景与注意¶
适合谁
- 使用 DSH 做长对话或长任务,并定期依赖 Compact 控上下文。
- 出站走代理 API,且代理或上游按 Session ID 区分会话、做账号轮询或多 key 调度。
使用注意
- 插件在 当前 DSH 进程权限 下运行;安装前建议在 GitHub 查看
index.js、cordis.patch.yml及许可证,确认与自身环境匹配。 - 社区目录页(SkillHub)与 DeepSeek / 幻方无官方从属关系;插件为社区维护,星标等元数据以目录与仓库页面为准(目录线索星标为 0)。
- 本插件只解决「Compact 成功后轮换出站 Session ID」;不替代 DSH 自身的会话管理、Compact 策略或代理侧轮询配置。