前言¶
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