Until Done:用完成暗号判定任务真正结束

前言

在 DSH 里跑长任务时,模型有时会正常结束一轮对话(turn/end 为 completed),但手头工作并未做完:测试没跑完、文件没改全、结论只写到一半。人工盯着界面反复点「继续」既费时间,也容易在限流或工具报错时误判「已经结束了」。

社区里早有自动续跑类插件;dsh-until-done(Until Done)在 KunKun24 维护的分支里,把「何时算完成」改成可配置的结尾暗号,并把工具失败、429、5xx 等情形拆成不同的续跑文案。下面介绍它做什么、怎么装、以及决策逻辑与注意点。

这是什么

Until Done 是面向 web profile 的 DSH 工作流插件,仓库为 KunKun24/dsh-until-done,社区目录页见 SkillHub 条目。插件从 HsiangNianian/dsh-auto-continue fork 而来,保留恢复、离线暂停与循环上限等能力,重做了完成判定与失败分类,并使用独立命名空间,可与上游插件并行安装而不冲突。

一句话:模型正常结束但任务未完成时自动发送 continue;只有助手回复在语义上「以完成暗号收尾」,才视为真正完成。

核心功能

完成暗号(默认「完成」)

开启 Require completion keyword(默认 on)后,turn/end = completed 不再一律停机。助手最后一段文本若未以暗号结尾,插件会续跑;只有以暗号结尾才停止。暗号可配置,且只认尾部:例如「完成之前还要跑测试」不会算作完成。

判定「最后助手文本」时会跳过带 tool call 的消息(不算最终答复),并容忍末尾标点、引号、星号与不可见格式字符。

首轮即告知模型

Put the rule in the system prompt(默认 on)会在 system prompt(顺序 900,interpolate: false)注入规则,让模型从第一轮就知道要以暗号收尾,而不是靠第一次 auto-continue 后才学会。规则正文可编辑,其中的 {keyword} 会替换为当前暗号。

更细的失败续跑

相对上游,插件为不同失败类型使用不同 continue 文案:

  • 工具失败:可带 {tool} / {result},要求先诊断再重试,而不是把失败当完成。
  • 429 限流:支持 {status} / {code}。
  • 5xx 上游错误:支持 {code} / {status}。

重试策略(延迟、连续上限、退避、离线暂停、分类)、启动恢复、循环守卫、状态桥接与浏览器通知等与 fork 前保持一致。

可选「仅真有活才续」

Only continue turns with real work(默认 off)打开后,纯闲聊轮次(本轮无 tool call、无 active goal)不再自动续跑,避免对「hi」一类输入反复 continue。

自主循环(Autonomous loop)

Autonomous loop(默认 off)打开后,每一轮正常结束的 turn 都会续跑,直到出现完成暗号。关闭时行为更接近 legacy:仅在可见输出等条件下清理预算。决策流程见 README 中的示意:

turn/end(completed)
  └─ autonomous loop on?
       ├─ no  → legacy behaviour (budget cleared only on visible output)
       └─ yes → does the last assistant text end with the keyword?
                ├─ yes → task complete: reset loop counters, stop
                └─ no  → (real-work-only && no tool this turn && no active goal)
                          ├─ yes → plain chat, stop
                          └─ no  → send the continuation

安装与启用

README 推荐的安装方式是从 release 压缩包添加(示例版本为 v1.0.0);本地开发可用 link。安装后需重启 DSH,再在界面左下角 More settings → Plugins → Until Done 中配置。

# from the release tarball (recommended)
dsh plugin --profile web add https://github.com/KunKun24/dsh-until-done/releases/download/v1.0.0/dsh-until-done-1.0.0.tgz

# or from a local checkout while developing
dsh plugin --profile web add link:/path/to/dsh-until-done

仓库 package.json 中当前开发版本号为 1.2.0;若你使用较新的 release,请以 GitHub Releases 页提供的 dsh plugin ... add 地址为准,不要自行拼仓库名安装。

主要配置项

在 Until Done 设置卡片中,常用项如下(默认值以 README 为准):

配置项 默认 含义
Require completion keyword on 无暗号结尾的回复视为未完成并续跑
Completion keyword 完成 宜选正常行文里少见的词
Put the rule in the system prompt on 首轮注入完成规则
Completion rule text 内置 {keyword} 会被替换
Only continue turns with real work off 纯闲聊不再自动续跑
Continue text (tool failure) 内置 支持 {tool} / {result}
Continue text (rate limit) 内置 支持 {status} / {code}
Continue text (upstream error) 内置 支持 {code} / {status}
Autonomous loop off 每轮正常结束都续跑直至出现暗号

典型用法无需额外 CLI:开启插件后,在对话中给模型一个需要多步才能做完的任务,并在规则或说明里要求其在全部做完后以你配置的暗号(默认「完成」)结束最后一条助手消息。若开启 system prompt 规则,模型从第一轮即被约束;若任务中途遇到工具错误或限流,插件会按对应模板自动 continue。

开发构建(仅供贡献者):

npm install
npm run build     # esbuild + tsc → lib/
npm test          # includes tests/smart-completion.mjs
npm run typecheck

适用场景与注意

适合在 DSH web 环境下做代码修改、多文件重构、长链路调试等「一轮说不完」的智能体任务,又希望用明确信号收尾、减少误停。

请注意:

  • 插件在当前 DSH 进程权限下运行,安装前请阅读源码与 MIT 许可证(原创部分 Copyright (c) 2025 HsiangNianian,修改部分 Copyright (c) 2026 KunKun)。
  • DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区插件而非官方应用商店条目。
  • 暗号只匹配回复尾部;若模型习惯在结尾写总结而不写暗号,会触发续跑直到格式正确,或需在规则文案里写清楚格式要求。
  • Autonomous loop 与「仅真有活才续」的组合会显著改变停机条件,开启前建议在低风险任务上先试一轮。

结尾

Until Done 把「模型停下来了」和「任务做完了」拆开:用可配置的完成暗号作硬条件,并区分工具失败、限流与上游错误,适合需要少盯屏、又怕误停的长任务工作流。

羽毛球分组比赛记分
小程序二维码

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

小夜