← 返回列表
✓ 可直接安装
当模型只是叙述了它的下一步操作却忘记发起工具调用时,继续一个 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-continuenpm 包 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 运行相同的步骤,外加一项打包断言。