前言¶
在 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 长期停留在相对高效的上下文区间。
- 维护者:rezon-aki
- 仓库:github.com/rezon-aki/dsh-context-relay
- 社区目录:skillhub.cn 插件页
- 版本 0.2.11(资料时点),要求 DSH ≥ 0.2.1-rc.2(Web profile)、Node.js ≥ 20,许可证 MIT
插件不会在安装时自动拉取其它插件,也不改写其它插件文件;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 快速开始流程操作:
- 在 relay 会话里先调用
relay_status,确认当前 phase、上下文占用与 band。 - 开工前
relay_phase({ phase: "discover", goal, exit_criteria });之后每次切换 phase 都要带contract_check。 - 工作过程中不因预算在 phase 中途硬切换策略;预算作为 phase 边界闸门。
- 到 organize/relay band 后,在 phase 边界按面板一次性默认操作处理:继续、压缩继续(
relay_organize)、接力新会话(relay_handoff),或遵循两段式「先压缩、再到线再 handoff」。 - 交付前进
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 为准。