dsh-insert-context:按步数向智能体上下文注入提醒

前言

DeepSeek Harness(DSH)里的智能体会在一个任务里连续执行很多步:调工具、改文件、再推理。步数上去之后,模型容易在长上下文里「忘掉」你一开始强调的交付标准或收敛节奏。常见做法是每次在用户消息里重复同一句话,或在系统提示里堆一大段规则——前者费 token,后者只在会话开头生效,中间步骤未必再被读到。

dsh-insert-context(维护者 ADkun,分类:工作流)做的是另一件事:在任务执行过程中,按你定义的步数节奏,往该智能体自己的上下文里插入一条可配置的提醒;还可以选择是否在用户消息末尾追加一句话。三项能力都有独立开关,并带总开关,全部在 DSH 设置页配置,无需改代码。当前版本 1.5.0,许可证 MIT,运行环境要求 Node.js >= 22。

这是什么

一句话:在 agent admitted 的每一步之前,监听 agent/pre-step,按规则注入上下文消息,并可改写即将发出的用户消息。

插件分宿主侧(index.js)与浏览器设置页(client.js)。设置入口在 Settings → 过程插入(英文界面为 Context insertion),排在 Our Free Model 之后。社区目录页:skillhub.cn/plugins/ADkun/dsh-insert-context;源码与完整说明:github.com/ADkun/dsh-insert-context。

核心功能

下面按 README 中的三类行为说明;任意一类关闭且未配置时,不会产生对应注入。

总开关(enabled)

默认 开启。关闭后插件完全静默:不注入规则消息、不追加用户句,步数计数器也暂停。再次打开时从暂停处继续计步,不会因为静默期间「错过」的步数而连续触发多条规则。

规则注入(rules)

每条规则是一个对象 { start, every, repeat, text },含义是:从第 start 步起,每隔 every 步命中一次,共 repeat 次;repeat 为 0 表示无限次。

命中步集合示例(与官方文档一致):

规则 命中步
{ start: 10, every: 10, repeat: 0 } 10, 20, 30, 40, …(无限)
{ start: 5, every: 5, repeat: 9 } 5, 10, 15, …, 45(共 9 次)
{ start: 60, every: 10, repeat: 5 } 60, 70, 80, 90, 100

当前步落在命中集合内时,会把 text 作为额外一条上下文消息注入该智能体。text 里仅支持占位符 {{step}},会替换为当前步号;appendText 中不支持该占位。其他 {{…}} 会原样注入,并由宿主打出 insert-context: 前缀的警告日志。

同一一步命中多条规则时,合并为一条消息:各规则段落按设置页中的行顺序用换行拼接,且每段各自替换 {{step}}。

内置默认仅一条规则(userAppend 默认关闭时,装好后即此行为):

现在是第 {{step}} 步,注意任务收敛进度。

对应调度:start: 10,every: 10,repeat: 0(无限)。

用户消息追加(userAppend / appendText)

默认 关闭(userAppend: false)。开启后,会在你发出的用户消息末尾追加 appendText 里的一句话。内置默认文案(方括号是正文的一部分,仅在打开追加开关时使用):

[注:回复不复述过程,结构清晰可读性好。]

还有两个相关开关:

  • appendFirstOnly(默认 开):只在会话第一条用户消息后追加,避免每轮重复同一句。
  • appendSubagents(默认 关):是否对通过 delegate / send_message 发给子智能体的用户类消息也追加。

开启 userAppend 时,若消息最后一个文本块已以 appendText 结尾,则跳过该条,避免尾部重复。

步数计数与去重

  • 计数按智能体 id 独立:调度器与子智能体各有一套计数;子智能体在第 5 步时,会按自己的步数命中 { start: 5, … },与父智能体当前步数无关。
  • 下游拒绝的步不计数;总开关关闭期间的步也不计数。
  • 智能体销毁(agent/disposed)后计数器清除;从插件挂载生效时起算。
  • 若某一步已对用户消息做了追加,则同一步不再注入规则消息,避免同批上下文里重复提醒。

配置字段一览

设置页保存的字段与 cordis.patch.yml 中 config 形状一致(节选默认值):

enabled: true
rules:
  - start: 10
    every: 10
    repeat: 0
    text: '现在是第 {{step}} 步,注意任务收敛进度。'
userAppend: false
appendFirstOnly: true
appendSubagents: false
appendText: '[注:回复不复述过程,结构清晰可读性好。]'
字段 类型 默认 说明
enabled boolean true 总开关
rules 规则数组 见上 空数组则不注入规则
rules[].start 1–100000 10 首次命中步
rules[].every 1–1000 10 间隔
rules[].repeat 0–1000 0 命中次数;0 = 无限
rules[].text 字符串 ≤1000 见上 注入文案
userAppend boolean false 是否追加用户句
appendFirstOnly boolean true 是否仅首条用户消息
appendSubagents boolean false 是否包含子智能体消息
appendText 字符串 ≤1000 见上 追加内容

设置页保存写入 $DSH_PROFILE_DIR/insert-context.json(回退 $DSH_HOME,再回退 ~/.dsh),权限 0600。在设置页点 Save 后下一步即生效,无需重启;手改 JSON 需等插件重新挂载(重启 DSH 或触发热重载)。优先级:设置页文件 > cordis.patch.yml 行配置 > 代码内置默认。

安装与启用

README 给出的安装方式是将插件包目录加入 DSH,示例为本地路径(请换成你机器上的实际目录):

dsh plugin add D:\dsh\dsh-insert-context

也可在 DSH 插件管理器里选择同一目录作为安装目标。安装后打开 Settings → 过程插入,确认总开关与规则预览是否符合预期;需要用户侧口吻约束时再打开「追加用户消息」相关开关。

典型用法

1、只用默认节奏提醒收敛

保持出厂默认:总开关开、userAppend 关。长任务从第 10 步起每 10 步注入一次「注意任务收敛进度」,文案里自动带上当前步号。

2、前期密集、后期换话术

在设置页增加多行规则,例如先 { start: 5, every: 5, repeat: 9 } 覆盖 5–45 步,再 { start: 60, every: 10, repeat: 5 } 覆盖 60–100 步;各行 text 可写不同收敛或交付边界说明。README 中还提供了若干示例文案(非默认),可复制到新规则行使用。

3、会话开头加一句输出格式要求

打开 userAppend,保留默认 appendFirstOnly: true,则只有第一条用户消息尾部带上 [注:回复不复述过程,结构清晰可读性好。],后续轮次不再重复。

4、通过 HTTP 读写配置(可选)

若环境中有 webServer 载体,插件注册 /api/insert-context/settings(GET / POST / DELETE),可用于脚本或自动化;请求需满足 README 中的信任边界(本机 Host、同源等)。一般用户以设置页为主即可。

适用场景与注意

适合需要在长任务中段周期性提醒、又不想每轮用户输入都复制粘贴同一段话的 DSH 用户。子智能体并行、委派场景下,可按 agent 独立计步设计不同规则密度。

使用前请注意:

  • 插件以当前 DSH 进程权限运行,安装前请自行审阅 源码 与 MIT 许可证。
  • SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;插件星标以目录页为准(当前 0)。
  • 修改 cordis.patch.yml 或 index.js 内置默认,通常需重新挂载插件行才生效;日常调规则以设置页 Save 最省事。

结尾

dsh-insert-context 把「第几步该提醒什么」变成可配置的调度:规则注入、{{step}} 占位、用户消息追加与总开关都在 过程插入 一页完成。需要细节、示例文案与 API 表时,以 GitHub README 为准。

  • 目录页:https://www.skillhub.cn/plugins/ADkun/dsh-insert-context
  • 仓库:https://github.com/ADkun/dsh-insert-context
羽毛球分组比赛记分
小程序二维码

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

小夜