dsh-session-ecology:DSH 会话生态管家与零重启整理

前言

长期在 DSH Web 宿主上跑智能体会话,常见痛点是上下文越滚越大、多代折叠后难以接续、定时巡检换卷时任务断档,以及 sessions/ 与 storages/ 里已归档会话和孤儿缓存越积越多。手工删文件往往要停进程,误删也难以找回。工作区里的 PROJECT.md 若无限追加,还会拖慢压缩与检索。下面介绍的 dsh-session-ecology 面向上述问题,在回合结束空闲时做模型自适应换卷,并提供人工整理、回收站级清理与 PROJECT.md 写入护栏,且破坏性清理默认移入操作系统回收站而非直接抹盘。

这是什么

dsh-session-ecology 是 DeepSeek Harness(DSH)的工作流类插件,维护者为 ksoulness。它同时承担「会话生态管家」(三闸门空闲换卷)、「人工会话整理工作台」、零重启「已归档 / 孤儿目录 / 幽灵 ID / 孤儿缓存」清理,以及 PROJECT.md 项目记忆护栏;Web 端提供四标签页设置中心,对话输入框下方可选换卷距离进度条。插件以当前 DSH 进程权限读写工作区与会话存储,安装前应自行审阅 GitHub 仓库 源码与 MIT License。

环境要求:Node.js >= 22.19.0;宿主为 @deepseek-ai/dsh(Web Profile),依赖 @deepseek-ai/cordis ^4.0.1 与 @deepseek-ai/dsh-tools。

核心功能

模型自适应三闸门空闲换卷

换卷仅在 turn/end(completed)且会话收件箱完全空闲时触发,不打断在途回合。三闸门阈值随会话模型真实上下文窗口 \(W\) 缩放:

  1. Gate 1(压后真实负载):pressureTokens >= 0.40 * W(默认 40%)
  2. Gate 2(表面对话体积):surfaceTokens >= 1.00 * W(默认 100%)
  3. Gate 3(多代折叠疲劳):标准模型 totalTokens >= 350 * W;高阶/高成本模型(Pro / Opus / GPT-5/6 / o1/o3 / *-responses)为 150 * W

换卷后在同工作区创建续接会话(命名如 原名 · #2、#3,遵循 80 字节 UTF-8 上限),继承 agentPreset、modelSelection、permissionPreset、置顶与人工批注;v0.8.0 起从上卷日志提取最后一轮真实问答,在新卷首条回执中用四行模板交代「之前在干什么 / 最后你说 / 最后它回」。定时任务采用「新建 → 回读校验 → 删除旧任务」原子迁移,失败则回滚并保留旧会话。自动跳过 bot/state.json 管理的外部机器人会话与 subagent 会话。

人工会话整理

收藏、待复盘、P1~P5 优先级、标签与备注写入 storages/session-ecology.json,不污染 session.v4.jsonl。支持批量归档/取消归档、置顶、跨工作区搬家(更新 workspaceRegistry、会话 cwd 与相关缓存,无需重启宿主)。仍挂活跃 schedule 的会话默认拦截误归档。清理主会话时可级联派生 subagent 目录与缓存至系统回收站并记审计台账。

零重启清理已归档与孤儿资源

无需停机即可在宿主内存中解绑已归档会话。正常活跃工作区会话、含真实记录的「未分组」活跃对话、挂活跃 schedule 或标有收藏/待复盘的会话,以及默认最近 60 分钟仍有写入的会话(active_guard_minutes=0 可显式放行)均受保护。purge_archived 等动作支持 dry_run 先盘点;空间统计区分「移入回收站字节数」与「清空回收站后真实腾出空间」,并对账 storages 下无主 JSON。

PROJECT.md 护栏与巡检

tools.guard 默认限制 PROJECT.md 不超过 15360 字节且不超过 250 行,引导历史流水沉淀至 docs/HISTORY.md;对已超标文件允许净缩减的编辑放行。交互式长会话临近压缩水位时,systemPrompt.context 可提醒同步架构决策至 PROJECT.md。支持多工作区只读巡检容量、四段式结构、docs/HISTORY.md 与失效相对链接。

Web UI 与 Agent 工具

对话框底部(Token 与费用状态栏之间)可显示三闸门换卷进度条(showDockMeter);设置 → 会话生态 / 会话管理 含生态水位、会话整理、项目记忆、阈值设置四页,基于 SSE 推送。

向 Agent 注册 fleet_ecology_status、fleet_session_handover、fleet_ecology_sweep、fleet_session_organize 等工具,可用自然语言查询水位、换卷、清扫与整理。Loopback HTTP 挂载于 /dsh-session-ecology,仅允许 127.0.0.1 / ::1,POST /api 校验 Origin / Sec-Fetch-Site。

安装与启用

推荐从 Releases 下载 dsh-session-ecology-0.8.0.tgz(或于本地执行 npm pack 生成包),放入 $DSH_HOME/plugins/。

在 Web Profile 的 package.json 中引用并安装:

{
  "dependencies": {
    "dsh-session-ecology": "file:../../plugins/dsh-session-ecology-0.8.0.tgz"
  }
}
cd "$DSH_HOME/profiles/web"
pnpm install --prefer-offline

在 $DSH_HOME/profiles/web/cordis.patch.yml 中启用(若由 dsh plugin 管理,可合并插件内置 patch):

- id: session-ecology
  name: dsh-session-ecology

验证:

dsh --profile web --dump-config
curl http://127.0.0.1:3079/dsh-session-ecology/health

运行配置持久化在 $DSH_HOME/storages/session-ecology.json,也可在 cordis.patch.yml 的 config 字段做初始覆盖。常用键包括 enabled、autoHandover、pressureRatio(默认 0.40)、surfaceRatio(1.00)、standardFatigueMultiplier(350)、proFatigueMultiplier(150)、projectMemoryMaxBytes(15360)、projectMemoryMaxLines(250)等,完整表见仓库 README。

典型用法

Web 端:在设置面板查看三闸门水位,必要时手动换卷;会话整理页批量归档后,用「清理已归档」先 Dry-Run 再执行;项目记忆页查看各工作区 PROJECT.md 容量与断链。

健康检查:

curl http://127.0.0.1:3079/dsh-session-ecology/health
curl "http://127.0.0.1:3079/dsh-session-ecology/session?sessionId=<id>"

Agent:例如让模型调用 fleet_ecology_status(可加 include_project_memory: true)查看全舰队水位与 PROJECT.md 报告;fleet_session_organize 的 purge_archived 配合 dry_run: true 盘点后再正式清理。

若宿主同时安装 dsh-plugin-notify-feishu 且 notifyFeishu 为 true,换卷完成可推送飞书卡片;未安装则静默跳过。

适用场景与注意

适合长期运行 DSH Web、会话数量多、依赖定时巡检舰队、且需要可控换卷与磁盘 hygiene 的团队或个人。清理虽走系统回收站,仍会在本机删除或移走文件,执行批量 recycle / purge_archived 前务必用 Dry-Run 与收藏/schedule 保护规则核对列表。

插件能力随 DSH 与 cordis 版本演进,当前文档对应包版本 0.8.0。社区目录 skillhub.cn 插件页 为独立收录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-session-ecology 把换卷、整理、回收站级清理和 PROJECT.md 上限收口到同一插件与 Web 面板,减少长会话失忆与磁盘孤儿堆积。源码、Release 与 issue 见 GitHub;目录介绍见 skillhub.cn。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye