前言¶
DeepSeek Harness (DSH) 原生不会自动续写。当一个 turn 因达到输出 token 限制(max-tokens)而结束时,harness 会停止会话,UI 上提示「回答被截断,发送「继续」可让模型接着输出」。这是有意为之的设计,等待用户决定是否继续。
对于需要连续输出的场景,每次手动输入两个字符会增加操作成本。dsh-plugin-continue-on-limit 解决这个问题:它监听宿主侧的 turn/end 事件,当检测到截断原因时,自动发送一条 follow-up 提示词。
核心功能¶
该插件是一个宿主侧插件,不涉及客户端逻辑,不依赖 UI 快照字段。它通过 agent.followup() 发送消息,消息的身份标识为 cordis-host-runner,在界面中渲染为插件触发状态,而非模拟用户输入。
插件受以下机制约束:
* 每会话 burst 上限
* 最小间隔
* 全局开关
安装与启用¶
安装前请确保环境满足条件:Node.js 版本需大于等于 22,且使用 pnpm 进行安装(pnpm 在某些沙箱环境下无法创建 junction,可能导致依赖不可达)。
- 在 profile 的
package.json中添加依赖。 - 将插件加入到
bundles列表。
{
"dependencies": {
"dsh-plugin-continue-on-limit": "^0.1.0"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-plugin-continue-on-limit"
]
}
}
}
- 在 profile 目录下运行
pnpm install。 - 重启 DeepSeek Harness。
插件通过 cordis.patch.yml 自动挂载,无需手动编写 patch 列表。安装完成后,请前往 Plugins 页面确认该插件已启用。
配置¶
插件的所有配置项均为 .volatile() 类型,在 Plugins 页面修改后无需重载 fiber,且 enabled: false 可以在运行中途切断正在进行的链路。
主要配置项如下:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled |
boolean | true |
总开关 |
continueText |
string | 继续 |
发送的续写文本,最大长度 200 |
maxConsecutive |
integer | 3 |
单会话一条截断链最多自动续写次数。设置为 0 表示无上限(危险选项) |
minIntervalMs |
integer | 1500 |
两次续写的最小间隔(毫秒) |
配置值会被钳制,负数或非法值会回落到默认值。
工作原理¶
检测机制¶
插件监听 session/event 中的 turn/end 事件,并检查 event.data.reason.kind 是否为 max-tokens。它不使用客户端 SessionSnapshot,因为该快照缺少检测所需的字段。
发送时机¶
插件不能在 turn/end 回调中同步发送消息。这是因为 Session.append 在广播期间会开启重入闸门,而 Agent.followup() 内部需要调用 append,同步调用会导致 “session append cannot reenter” 错误。
因此,发送逻辑被推迟到 agent.whenIdle() 之后执行。此时 phase.kind 必为 idle,wakeDriver 才会启动新的驱动循环处理 inbox 中的消息。
消息身份¶
为了不冒充人类输入,插件发送的消息 source.kind 被设置为 cordis-host-runner。这是 harness 为宿主侧行为预留的 source 类型,确保 approval 等流程不会误判。
安全与限制¶
三道闸¶
- burst 上限:
maxConsecutive默认为 3,防止模型反复溢出占用过多上下文。设置为 0 需谨慎。 - 死循环兜底:
minIntervalMs防止无意义的快速重复续写。 - 输入校验:配置值经过严格校验和钳制,负数不会回落到 0(关闭限制),而是回落到默认值。
安全特性¶
- 排队优先:当 inbox 中已有用户排队消息时,插件会跳过当前续写,让用户的请求先执行。
- 去重:同一 turn 内不重复续写,发送排队期间(
pending状态)也不重复调度。 - 异常隔离:
followup()抛错只记录日志,不向回调冒泡。
测试¶
该插件包含 61 个通过测试。测试覆盖了纯决策逻辑(不依赖 Cordis)、宿主侧集成测试(mock ctx 驱动真实 apply)以及加载契约测试。
运行测试命令:
npm test
总结¶
dsh-plugin-continue-on-limit 为 DeepSeek Harness 提供了自动续写截断回答的能力。它通过宿主侧事件监听和精确的时机控制,在不干扰用户意图的前提下,自动处理模型输出上限问题。适合需要长文本生成且希望减少手动交互的开发者使用。
更多信息请参考 SkillHub 插件目录 或 GitHub 仓库。