🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

yunxiyang/dsh-loop-continue

DeepSeek Harnessspec-screened扫描:低风险在 GitHub 查看 ↗
✓ 可直接安装

当模型只是叙述了它的下一步操作却忘记发起工具调用时,继续一个 DeepSeek Harness 智能体回合。

自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/17 · 已提供中文文档

继续一个 DeepSeek Harness 智能体回合,该回合的模型叙述了其下一步操作,但没有调用任何工具。

综合分
31.2
GitHub 分
31.2
用户评分
—
★ Stars
2
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-loop-continue
npm 包 dsh-loop-continue 已校验归属本仓库,走 npm 安装最省事
信任档位:已验证本站已于 3 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 9 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/23
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-loop-continue @ 0.1.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 15:20:02

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-settings
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-loop-continue

当模型只是叙述了它的下一步操作却忘记发起工具调用时,继续一个 DeepSeek Harness 智能体回合。

智能体循环会在某一步只输出文本、没有工具调用时,立即将该回合标记为 completed。一个模型写下“现在我将重新应用该更改”然后停下,在循环看来已经完成,尽管工作只做了一半。

本插件监听 agent/turn-stopping,重放当前回合自身的会话日志,并且仅当形态匹配该失败模式时,才向评判模型提出一个严格的 true/false 问题。true 会引导同一回合再运行一步;false(或无法解析的答案)则让该回合结束。

安装

使用 dsh CLI 安装到某个 profile 中。它的 plugin 子命令会转发到 profile 目录内的 pnpm,因此 add/remove 的行为与平常一致:

dsh plugin --profile  add dsh-loop-continue

然后重启该 profile。该 profile 的 package.json 会新增依赖和 dsh.profile.bundles 条目,并且随附的 cordis.patch.yml 会将守卫插入层栈——无需手动编辑补丁。

移除它:

dsh plugin --profile  remove dsh-loop-continue

改为从本地检出目录工作?将 profile 指向该目录:

dsh plugin --profile  add link:/path/to/dsh-loop-continue

对 lib/ 下源代码的编辑仅在重启后生效。

配置

| 字段            | 默认值 | 在卡片中 | 含义                                        |
|------------------|---------|---------|------------------------------------------------|
| maxContinuations | 10    | 是     | 每回合引导的硬上限(避免无限循环) |
| maxSteps       | 10      | 是     | 展示给评判模型的最新步数                |
| maxTailChars   | 2000    | 是     | 尾部文本预算,在前半部分和后半部分之间分配 |
| judgePrompt    | 内置 | 是    | 告诉评判模型什么算作未完成的指令 |
| steerText      | 内置 | 是    | 守卫引导时注入的消息        |
| debug          | false   | 是     | 记录每次评估(需要重启)         |
| judgeProvider  | null    | 否      | 覆盖 provider;null/未设置 = 从会话路由推导 |
| judgeModel     | null    | 否      | 覆盖 model;null/未设置 = 从会话路由推导    |
| judgeMaxTokens | 64      | 否      | 评判模型输出上限                               |
| judgeTemperature | 0     | 否      | 评判模型采样温度                     |

确定性门控

除非该回合同时满足以下两点,否则不会运行任何模型调用:

1. 以仅文本步骤结束(没有工具调用),并且
2. 此前至少调用过一个工具(因此普通的一次性回答不受影响)。

这样可以让额外的评判调用避开普通的已完成回合,只在模型很可能遗漏了待执行操作的地方才花费它。

提前停止

引导并非没有代价:每次继续都会消耗一次评判往返,外加一次
代理步骤。因此,守卫还会观察一次引导是否奏效。

当它进行引导时,它会记录会话日志增长了多少。下一次同一轮停止时,它会检查这期间是否有任何助手步骤实际调用了工具。如果模型只是再次叙述,那么这次引导被忽略,该轮会被关闭,而不是把剩余预算花在同样的拒绝上。如果模型用一次真正的工具调用来回应引导,它就会保留正常的预算。

配置守卫

守卫在每次评估时都会解析其配置,而不是在挂载时将其冻结,因此一次更改会影响到紧接着的下一次轮次停止检查。有两种设置值的方式:

- 用户设置文件 ~/.dsh/settings.yaml,位于 loop-continue: 键下,或者
- 配置文件自身的 cordis.patch.yml。

最好将 judgeProvider/judgeModel 保持未设置。这样守卫就会用当前对话已经在运行的模型进行判断,而按定义这是一个可用的路由;只有在有意用不同模型进行判断时才设置它们。

编辑提示词

两段提示词文本都作为默认值随附,并且都是普通的配置字段,因此你无需改动代码即可重新调整守卫。该包附带一个浏览器端部分,所以编辑器是 Settings > Plugins > plugin config 下的一张卡片。它会像其他所有插件卡片一样初始为折叠状态;点击标题即可打开:

Loop Continue - resume an unfinished turn
judgePrompt - decision policy   [textarea]
steerText - resume message      [textarea]
max steering per turn           [3]     0..100
steps in the summary            [10]    1..100
trailing-text budget (chars)    [2000]  100..20000
debug - log every verdict       [ ]

提示词是在失焦时保存,而不是每次按键都保存:Host 会在每次写入时验证并持久化整个文档,而一段 740 个字符的策略段落每按一次键就写入一次是浪费的。数值字段和开关会立即保存。除 debug 外的每次更改都会在无需重启的情况下应用到下一次轮次停止检查;debug 在插件加载时读取,因此需要重启一次。

同样的字段也可以在 ~/.dsh/settings.yaml 中编辑,当插件在无浏览器端加载的无头模式下运行时,这也是应当使用的界面:

loop-continue:
judgePrompt: >-
You inspect one coding-agent turn that just ended. Reply with exactly one
word: true if the trailing text promises work that no tool call performed,
false otherwise.
steerText: >-
You described an action but did not call any tool. Emit the tool call now.

两个界面写入的是同一个命名空间,因此在卡片中设置的值会出现在文件中,反之亦然。

每个字段控制的内容:

- judgePrompt — 判断器的完整决策策略。判断器会看到一份确定性的摘要(每一步的工具调用、末尾文本、人类请求),并且必须回答一个词。如果守卫引导了实际上已经完成的轮次,就收紧它;如果它漏掉了被丢弃的操作,就放宽它。
- steerText —— 当一轮被引导时,模型所收到的内容。这是模型据以行动的消息,因此请将其表述为发出该调用的指令。

要还原,请删除这些字段;内置项会恢复。

热挂载

cordis.patch.yml 提供的是一个纯插入——只有 id + name,没有 config,也没有 !!js 表达式——因此市场热挂载可以将此插件作为最小行添加或移除。补丁中没有内置任何用户特定的端点、提供方或密钥:策略在运行时按上文所述方式解析。

补丁层的更改会在每次重载时完整重放(applyEntryPatches 在应用前会克隆条目列表),因此一行可以干净地添加和移除,且永远不会累积。

补丁编辑是否无需重启即可生效取决于宿主:

- 在 CLI(dsh profile)下,runProfile 会安装一个 HMR 服务,并将 profile 和用户补丁文件注册到其中,因此补丁编辑会实时应用。
- 在 DSH Desktop 下则不会走这条路径——桌面外壳自行组合 profile(dsh-app-boot 辅助程序),并且从不加载 cordis-plugin-hmr,因此编辑 cordis.patch.yml 需要重启 profile。

对 lib/*.js 的编辑始终需要重启:dsh HMR 服务是以 root: [] 创建的,因此不会监视任何源目录以进行模块替换。

开发

src/ 存放源代码;lib/ 存放 npm 发布的内容以及 profile 加载的内容。在安装时不会从一方推导出另一方,因此这份副本是显式的并经过检查:

npm install
npm run build     # src/ -> lib/
npm run check     # fails when the two differ
npm test          # vitest, against src/

prepublishOnly 会先运行 check 再运行 test,因此过期的 lib/ 无法被发布。CI 运行相同的步骤,外加一项打包断言。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群