前言¶
在 DeepSeek Harness(DSH)里跑长任务时,根智能体某一回合可能因为模型达到最大输出 token 上限而以 turn/end、reason 为 max-tokens 结束。此时会话往往还没做完,但默认需要你再发一条消息才能继续。对需要连续输出的编码、文档生成或多步工作流,这种停顿会打断节奏。
社区插件 dsh-max-token-auto-continue(维护者 Wepoi9)在检测到上述结束原因后,会在智能体进入 idle 后按 DSH 既定路径自动续跑,并用次数上限与 fail-closed 规则避免无限重试。本文基于仓库 README 与 package.json(插件版本 0.1.0,许可证 MIT)整理安装与行为说明;DSH 社区插件目录见 SkillHub 条目(与 DeepSeek Harness 核心发行版无从属关系,属社区维护)。
这是什么¶
dsh-max-token-auto-continue 是 DSH 的 community host plugin:当 根智能体 因 max-tokens 结束回合时,自动继续会话;普通会话走 agent.followup(),若存在已 disarm 的活跃 /goal 则走 GoalService.resume()。它不冒充人类输入,不持久化会话数据,也不访问外部网络。
分类上在 SkillHub 归为 工作流;GitHub 星标数为 0(以目录/仓库公开信息为准)。
核心行为¶
触发条件与续跑路径如下。
- 监听根智能体回合以
turn/end、reasonmax-tokens结束。 - 等待智能体变为 idle。
- 按会话类型续跑:
- 普通会话:agent.followup();
- 活跃且已 disarm 的/goal:GoalService.resume()。
续跑文本与延迟在插件内 固定,README 未提供可配置项。
安全与边界¶
README 明确下列约束,便于评估是否启用。
| 要点 | 说明 |
|---|---|
| 作用范围 | 仅 根智能体;子智能体回合不会自动续跑 |
| 输入来源 | 不冒充人类;续跑消息使用 source.kind: "dsh-max-token-auto-continue"、form: "notice" |
| Goal 状态 | 对 paused、blocked、complete,或 active 且 armed 的 goal 不 自动续跑 |
| 取消条件 | 更新的的人类输入、更新的回合、插件卸载或禁用会使待处理的续跑失效 |
| 失败策略 | 出错时停止续跑路径,不会 无限重试 |
| 副作用 | 无持久化、无 UI 自动化、无后台网络重试、无外部网络访问 |
连续自动续跑次数由配置 maxConsecutive 限制(默认 3),形成「有上界的 max-token 链」。
配置¶
在目标 profile 的 cordis.patch.yml 中,以 id dsh-max-token-auto-continue 添加配置项可覆盖默认(bundle 声明会写入 profile 所需条目)。
| 配置项 | 默认值 | 含义 |
|---|---|---|
enabled |
true |
是否启用自动续跑 |
maxConsecutive |
3 |
同一连续 max-token 链上,最多自动续跑次数 |
安装与启用¶
插件 不提供 dsh plugin add github:... 一类远程一键安装;需本地检出仓库、构建后,用 绝对路径 加入 profile。
- 在仓库根目录安装依赖并构建、跑测试:
npm install
npm run build
npm test
- 将本地检出目录加入目标 profile(Web 环境将
<profile>换为web):
dsh plugin --profile <profile> add <absolute-path-to-this-repository>
dsh --profile <profile> --dump-config
- 如需改
enabled/maxConsecutive,在对应 profile 的cordis.patch.yml中配置 id 为dsh-max-token-auto-continue的条目。
构建产物:TypeScript 编译到 lib/,插件入口为 lib/src/index.js。@deepseek-ai/dsh-llm 在运行时由 DSH 进程解析,插件使用宿主自带的副本。
与 DSH 版本的兼容性¶
README 记录 最新完成 live E2E 验证的 DSH 版本为 0.2.1-rc.2(2026-10-17:构建、13 项测试、web profile 零插件拒绝、正常路径 max-token 自动续跑与 Goal resume 等)。package.json 的 engines.dsh 还声明了从 0.1.6-alpha.2 到 0.2.1-rc.2 等多档兼容目标;其中 0.2.1-alpha.2 仅有声明与源码级 API 审查,未 在该版本上完成 live 验证。0.2.1-alpha.1 的自动续跑与 Goal resume 也尚未在该版本上重新验证。升级 DSH 前建议对照仓库 README 的 Compatibility 表。
典型用法与运维注意¶
README 未给出独立「业务场景脚本」;实际效果即:在长输出任务中,当根智能体多次因 max-tokens 结束时,插件会在 idle 后自动插入 notice 形 follow-up(或 Goal resume),直到达到 maxConsecutive 或出现更新的人类输入/新回合。
运维上 README 强调:插件会在 输出被截断后不等人类再发消息 就继续工作,适合长任务,但若模型已在错误方向上触达 max-tokens,也可能 延长非预期任务。主要约束仍是:仅根智能体、maxConsecutive、新输入/新回合覆盖,以及 fail-closed。
插件以 当前 DSH 进程权限 运行;安装前请自行审阅 源码与 LICENSE,确认符合你的安全与合规要求。
隐私与贡献¶
插件不持久化会话数据,不向外部服务发送数据;对会话的变更仅限于上述有界的续跑消息或 Goal resume 调用。
问题反馈或 PR 可到 GitHub 仓库;若报告兼容性,README 建议附上 DSH 版本、profile、普通会话还是 /goal、观察到的 turn/end reason,以及是否预期发生续跑。