前言¶
在 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 后试用。