dsh-tool-round-limited-target:给 DSH /goal 加上可预期的轮数上限

前言

在 DSH 里用 /goal 驱动多轮自动执行时,常见问题是轮数没有硬上限:任务可能一直跑下去,直到你手动 pause 或 clear。对「整理文档」「跑完 N 步就停」这类有明确预算的工作流,你需要的是写在命令里的轮数就是实际上限,用完即停,而不是事后才发现多跑了几轮。

下面介绍社区插件 dsh-tool-round-limited-target(限轮目标)。它在保留官方 /goal 子命令语义的前提下,把「最前面的数字」解析为最多自动执行的轮数;轮数耗尽后目标自动变为 blocked(code=round-limit),不会再多跑一轮。维护者为 Fireawa,分类为工作流,源码与说明见 GitHub 仓库,社区目录页为 SkillHub。

这是什么

一句话:给 DSH 的 /goal(及可配置的别名)增加「限轮」解析与执行边界,轮数写在目标文本最前面才生效。

与「目标末尾带个数字」不同:插件默认 trailingRounds: false,即 /goal 整理文档 3 里的 3 属于目标正文,按官方语义不设上限;只有 /goal 3 整理文档 这类写法才会把 3 当作上限。

实现为单入口 index.js 与 lib/{parse,command,tool,config}.js,零 npm 依赖;通过 cordis.patch.yml 注入命令与工具。许可证 MIT。

核心功能

限轮语法

轮数必须写在最前面。单位可写可不写:轮、次、rounds 与纯数字等价。

/goal 3 整理文档        # 最多自动执行 3 轮
/goal 3轮 整理文档      # 同上

写在末尾的数字不算轮数上限,仍按官方 /goal 把整段当目标文本。

用完即停与恢复

第 N 轮结束后,若已达上限,目标自动标记为 blocked,原因码为 round-limit,不会触发额外一轮。要继续同一目标,需要先提高上限再 resume:

/goal rounds 8      # 提高轮数上限
/goal resume        # 恢复执行

与内置 /goal 一致的子命令

不带参数可查看状态;rounds <n> 只改上限;edit [轮数] 目标 改目标;pause、resume、clear 行为与官方一致。配置项 shadowGoalPerAgent: false 时可退回内置 /goal,不再由本插件接管。

模型侧工具 round_limited_goal

供模型调用的入口为 round_limited_goal(target, rounds?, replace?)。例如 target="3 整理文档" 或显式 rounds=3 表示 3 轮上限。默认 requireExplicitRounds: true:没有显式轮数时直接拒绝,避免在普通对话里误建限轮目标。

安装与启用

环境要求:Node.js 20+,且本机已安装 DSH。插件随 DSH 进程权限运行,安装前建议通读仓库源码与 MIT 许可证,确认符合你的安全与合规要求。

跟随 main(行为随仓库最新提交变化):

dsh plugin --profile web add git+https://github.com/Fireawa/dsh-tool-round-limited-target.git

锁定版本(推荐,行为可预期;资料中示例为 v1.0.3):

dsh plugin --profile web add github:Fireawa/dsh-tool-round-limited-target#v1.0.3

也可在 Web 界面 Plugins → 添加插件 粘贴上述地址或本地路径。安装完成后重启 dsh web。本地开发可用 link: 指向 checkout。

DeepSeek Harness 社区目录(如 SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系;安装命令以上述 README 为准,不要凭插件名自行拼接未在文档出现的 add 语法。

典型用法

1、设一个最多 3 轮的目标:

/goal 3 整理文档

2、轮数用尽后查看状态,确认已为 blocked(round-limit)。

3、若仍需继续,先改上限再恢复:

/goal rounds 8
/goal resume

4、临时挂起或清空仍用官方习惯:

/goal pause
/goal clear

配置说明

可在 cordis.patch.yml 中调整(括号内为默认值):

commandName: goal            # 主命令名
aliasCommandName: target     # 别名,'' 关闭
shadowGoalPerAgent: true     # false = 退回内置 /goal
trailingRounds: false        # 只认「3 目标」;末尾数字算目标文本
defaultRounds: 3             # 仅在 requireExplicitRounds=false 时兜底
maxAllowedRounds: 500
requireDirectHuman: true     # 只允许真人回合创建
requireExplicitRounds: true  # 没有显式轮数就拒绝建目标(防模型误触发)

若你希望模型也能通过工具建目标,需单独评估是否关闭 requireExplicitRounds 或 requireDirectHuman,并理解相应误触发风险。

适用场景与注意

适合:有明确「最多跑几轮」预算的文档整理、分步重构、可重复检查清单等 DSH 工作流;需要与官方 pause / resume / edit 混用的团队习惯。

注意:

  • 轮数解析规则与「数字写在末尾」的官方目标文本语义不同,写命令时把数字放在最前。
  • 插件不替代 DSH 本身的权限模型;它以当前 dsh 进程权限执行,第三方插件一律建议先看源码再装。
  • 仓库提供离线自检 node selftest.mjs(136 项)与需本机 DSH 的 node verify-live.mjs(20 项),发版前维护者用 npm run check 跑全量检查。

结尾

dsh-tool-round-limited-target 把「写在最前面的数字」变成 /goal 的硬轮数上限,用完以 round-limit 自动 blocked,并保留提高上限、resume 与全套子命令。若你在 DSH 里做多轮目标但不想无限跑,可以按 README 锁定版本安装并重启 Web 后试用。

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

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

Xiaoye