dsh-context-relay:用 phase 协议与有界 handoff 把 Lead 留在高效上下文区间

前言

在 DeepSeek Harness(DSH)里跑长任务时,Lead agent 的上下文一旦变长,常见表现是偏离实现、重复劳动、过度实现。DSH 自带的自动压缩往往在接近窗口上限才触发,且偏摘要式,不一定能把注意力拉回「还能高效干活」的区间。

dsh-context-relay(Context Relay)是社区维护者 rezon-aki 发布的工作流类插件:在 DSH 里提供 Relay 模式,用 phase 状态机、预算哨兵、受控压缩和有界 handoff 开新会话,把「什么时候压缩、什么时候接力」放在 phase 边界上决策,而不是在阶段中途被预算硬打断。下面介绍它解决什么问题、装完长什么样、如何安装与典型用法。

这是什么

dsh-context-relay 是 DSH 的上下文接力插件。一句话定位:phase 协议 + 预算哨兵 + 受控压缩 + 有界 handoff 到全新会话,让 Lead agent 长期停留在相对高效的上下文区间。

插件不会在安装时自动拉取其它插件,也不改写其它插件文件;dsh.engines 声明的是对本插件所依赖 DSH API 版本的下限。社区目录站点与 DeepSeek / 幻方无官方从属关系,属于 DSH「一切皆插件」生态里的第三方条目。

核心功能

Relay 模式与工具集

安装并激活后,DSH 会动态注册名为 Relay 的 agent preset(卸载即注销)。新建会话时在模式选择器里选 Relay,工具集中会出现:

工具 作用
relay_status 读当前上下文占用、band、phase、预算 headroom 与建议;phase 开始与派活前宜先调用
relay_phase 声明或切换 phase;校验 exit_criteria、contract_check;ship 阶段需要 user_gate
relay_organize 受控压缩:写 phase brief → 调官方压缩引擎 → 成功后可选注入 brief;每会话最多 1 次
relay_handoff 生成 ≤8KB 有界交接单并创建新 relay 会话,对旧会话树做交接清理
doc_lint 四项目录/文档体检(quota / banned / index / git),输出 ≤2KB

Phase 状态机

长任务按 discover → decide → build → verify → ship 组织。每个阶段切换应带 contract_check(需求是否已定、实现是否忠实、是否需要占用人类注意力)。预算哨兵在上下文接近阈值时提醒,但 不因为在 phase 中途到线而打断当前 phase——继续、压缩还是接力,优先在 phase 边界按面板策略处理。

预算哨兵与 UI

  • 输入框下方有 接力 chip:实时上下文占用百分比、当前 band、下一次操作建议;点开为面板(一次性默认操作、自动授权、交接后注入等)。
  • 模型选择器右侧(仅 relay 会话)可出现 「预算无上限」 小胶囊,按会话切换是否注入提示词「你的 token 预算无上限。」
  • 到线时插件发 notice(非用户消息),只告知状态与 phase 优先指引。
  • 设置页插件卡片提供默认阈值基准与面板默认值;人类持久设置落在 ~/.dsh/data/dsh-context-relay/settings.json,按会话面板状态在 panel.json。

默认阈值基准为 35%(organize 线 = 基准,warn = 基准−5,relay 硬线 = 基准+10,即默认 warn 30 / organize 35 / relay 45)。侧栏可改,具体键见下文配置表。

受控压缩与有界 handoff

  • 压缩:走 DSH 官方压缩引擎,有损;旧对话细节主要保留为结构化 brief,重要结论应写入文档或 handoff。
  • 接力:创建新的顶层 relay 会话,旧会话保留审计(handedOff),会中断旧会话树中运行中的队友/子智能体并迁移相关资源;交接后不应继续在旧会话工作(插件不强制阻止)。
  • 审批:默认 handoffApproval: 'required',relay_organize / relay_handoff 执行前需 DSH 官方审批;面板的一次性 autoCompress / autoHandoff / authorizeNext 可免审单次操作。

面板在到线时可选的典型路径包括:继续、压缩继续、接力新会话,以及 压缩→新会话 两段式(第一次到线只压缩并留在本会话;第二次到线才开新会话——若压缩后仍停留在线以上,存在已知边界,见 README「已知限制」)。

其它行为说明

  • relay 会话里 ask_user_question 仅用于简单问题(官方 timed 模式,timeout:60);复杂决策应用普通消息展开选项与后果,等用户文字回复。
  • P0:不可逆、对外、付费、凭据、删除等动作需先向人类报备并取得明确 Go;插件不会自动批准。
  • 插件 不自动循环 长任务;重复性、可离屏整块劳动宜用官方 Ralph / workflow / subagent,而非用 relay 自研自动循环。

安装与启用

环境要求:DSH >=0.2.1-rc.2(Web profile)、Node.js >=20。

发布到 npm 后,在终端执行:

dsh plugin --profile web add dsh-context-relay

从本地目录安装(开发态):

dsh plugin --profile web add /path/to/dsh-plugins/dsh-context-relay

也可在 DSH Web UI 侧栏 →「插件」→「安装第三方插件」(或「添加插件」) 中,在「插件包名」填入 dsh-context-relay,装完后重启或重载对应 profile 并刷新页面。

持久装配使用包内 cordis.patch.yml(bundle 形式)。安装或更新后需重启对应 profile,再刷新 Web UI。 新配置需重载插件后 新建 relay 会话才生效;DSH 约束下会话开始后 preset 固定,中途不能切换模式。

启用步骤:刷新 Web UI → 新建会话 → 模式选择器选 Relay → 开始对话。

插件以当前 DSH 进程权限运行;安装前应自行查看仓库源码与 MIT 许可证,确认符合你的安全与合规要求。README 注明本插件主要在 DSH Web profile 验证,headless 及其它部署未验证。

典型用法

典型长任务可按 README 快速开始流程操作:

  1. 在 relay 会话里先调用 relay_status,确认当前 phase、上下文占用与 band。
  2. 开工前 relay_phase({ phase: "discover", goal, exit_criteria });之后每次切换 phase 都要带 contract_check。
  3. 工作过程中不因预算在 phase 中途硬切换策略;预算作为 phase 边界闸门。
  4. 到 organize/relay band 后,在 phase 边界按面板一次性默认操作处理:继续、压缩继续(relay_organize)、接力新会话(relay_handoff),或遵循两段式「先压缩、再到线再 handoff」。
  5. 交付前进 ship 时,需满足新上下文独立审查(user_gate.review)与大白话汇报(user_gate.report)。

配置要点(可选)

宿主插件 config 常用键(人类保存的 settings.json 优先于侧栏卡片初始默认):

键 默认 说明
threshold / settings.threshold 35 阈值基准(%),derive warn/organize/relay 三线
settings 含 threshold、defaultOperation、autoChoose、autoCompress、autoHandoff、unlimitedBudget 等 侧栏卡片初始默认
injectBrief true 压缩成功后是否把 brief 注入下一 step
handoffApproval 'required' 压缩/接力审批硬门;无审批 UI 的部署可设 'off'(残余风险见仓库 docs/VERDICT.md)
inheritOnHandoff true 接力是否继承旧会话模型路由与权限档
presetId 'relay' 注册的模式 id

HTTP API(默认仅本机 GUI 认证后可用):GET/PUT /context-relay/settings、GET/PUT /context-relay/panel 等,详见 README。

适用场景与注意

更适合:需要在 DSH Web 里用 Lead 跑多阶段、上下文会明显变长的实现类任务;希望压缩与开新会话有人类闸门、有结构化 brief 与 ≤8KB 交接单,而不是单靠窗口快满时的自动摘要。

务必留意:

  • 压缩有损;接力消耗额度并改变会话树资源,审批默认开启。
  • 两段式 handoff、压缩保真比例等 README 中有「已知限制」与未做 A/B 的说明,阈值需按任务自行调整。
  • panel.json 写盘失败时状态可能只存内存,重启即丢。
  • 文档与 composer 相关 UI 文案以中文为真源。

结尾

dsh-context-relay 把长任务的节奏交给 phase 协议,把上下文压力交给预算哨兵和在边界上的压缩/接力决策,目标是让 Lead 更少在「已经太长」的上下文里空转。若要查看简介与分类,可打开 SkillHub 目录页;安装命令、工具说明与限制以 GitHub 仓库 README 为准。

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

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

小夜