前言¶
用 DSH Web GUI 跑长任务时,回合可能因为网络错误、用户中止或 token 上限而停在中途。常见做法是手动在输入框里写「继续」,并尽量把中断原因和上下文补进提示词,否则模型容易重复已完成步骤或重新铺背景。下面介绍客户端插件 dsh-continue-button(维护者 lilcandi):在 composer 发送键旁边增加圆形「继续」按钮,点一次即可把结构化续接指令写入草稿并走与用户按发送键相同的提交路径,让被中断的任务从中断点接着做。
这是什么¶
dsh-continue-button 是纯客户端 DSH 插件(分类:客户端),无宿主服务依赖、无额外网络请求、不注入系统提示词。交付形态为手写 lazy-CJS bundle(client.js),零构建依赖。package.json 标明版本 0.1.0、许可证 MIT,引擎要求 DSH >=0.2.0-rc.1 <0.2.1-0 || >=0.2.1-0 <0.3.0-0。
插件在 DSH 官方槽位 conversation.input.activity(模型选择器右侧、发送/停止主键左侧)挂载按钮;该槽被占用时会在约 2 秒内回退到 conversation.input.right(模型选择器左侧)。
核心功能¶
点击行为¶
| 场景 | 行为 |
|---|---|
| 会话已中断 / 回合出错 | 读取中断原因与 transcript 尾部上下文,生成结构化续接指令并自动发送 |
| 会话仍在运行 | 同样发送;经 inputActions.submit() 的 mode:"queue" 排入下一回合,不打断当前回合 |
| 草稿里已有文字 | 续接指令追加在现有草稿之后一并发送,不覆盖 |
| 按住 Alt 点击或右键点击 | 只发送裸的「继续」两字,不带上下文 |
发送后按钮有约 900ms 的视觉反馈。
smart 模式续接文案(默认)¶
默认会生成四段式提示,例如:
继续。
【中断状态】上一次「send」失败:ECONNRESET socket hang up
【当前任务】把插件挂到 profile 上
【中断前最后输出(结尾片段)】已改完三个文件,接下来准备跑测试。
(上一回合被中止,末尾内容不完整)
【回合终止】INTERRUPTED 用户中止
请从中断点直接接着往下做:不要重复已完成的内容,不要重新解释背景,直接给出下一步动作。
【中断状态】 按优先级取第一个命中信号:session.promptError、session.lastAgentError、transcript 尾部 turn-error / turn-max-tokens、session.awaitingFirstTurn、session.running === true、input.queue.length,或兜底文案「上一回合已结束,等待继续」。上下文段落来自当前会话已加载的 transcript(ChatSnapshot.legacy.nodes),不读磁盘会话日志。
实现要点(摘自 README)¶
- 使用
setDraft+inputActions.submit(),与用户手按发送键同一条 composer 事务路径。 - 宿主侧
index.js仅记录装载;浏览器侧逻辑在client.js。 - 目录含
cordis.patch.yml,用于把插件行写入 profile bundle 名册。
安装与启用¶
README 中的安装示例(本地路径需按你的机器替换):
dsh plugin --profile web add file:J:/plugin/dsh-continue-button
该命令会把依赖写入 profile 的 dependencies,并把 dsh-continue-button 追加到 dsh.profile.bundles。装完后必须重启 dsh web:浏览器 bundle 由启动时 @deepseek-ai/dsh-client-modules 扫描 dsh.client 并合成 __DSH_BOOT__,运行中的进程不会重新扫描 profile 名册。
卸载:
dsh plugin --profile web remove dsh-continue-button
然后手工从 dsh.profile.bundles 删除对应行,再重启。
安装前请自行阅读仓库源码与 MIT 许可证;插件在浏览器侧执行,权限边界与当前 DSH Web 会话一致。
典型用法¶
- 在目标 profile(如
web)完成安装并重启dsh web。 - 打开会话 composer,在模型选择器与发送键之间找到
aria-label="继续"的按钮(类名.dshcb-btn)。 - 任务中断或需要明确续接时,点一次「继续」;若只需最短指令,Alt+点击或右键点击。
- 若草稿里已有说明,可先写好再点按钮,续接段会接在后面一起发出。
开发改 client.js 后,README 说明可借助 @deepseek-ai/dsh-client-hmr 将副本同步到 profiles/.../node_modules/dsh-continue-button/ 后约 1 秒内热更新,无需重启或刷新;但首次安装仍须重启才能进名册。
验证与排查¶
无 DSH 运行时也可跑仓库测试:
node J:\plugin\dsh-continue-button\test\load-check.mjs
node J:\plugin\dsh-continue-button\test\install-check.mjs
README 记录 load-check.mjs 45/45、install-check.mjs 19/19 通过。
按钮未出现时,按 README 建议顺序查:是否首次安装后已重启、dsh --profile web --dump-config 是否含 continue-button、控制台是否有 bundle 注册失败、以及 window.__DSH_BOOT__.entries 是否含 dsh-continue-button。
适用场景与注意¶
适合经常在 DSH Web 里跑多步智能体任务、且回合易被中断的开发者。不适合期望改服务端行为或读本地会话日志的场景——本插件 deliberately 只消费当前页已加载 transcript。
社区目录 SkillHub 插件页 与 GitHub 仓库 为独立信息来源,与 DeepSeek / 幻方无官方从属关系;星标等元数据以页面为准(当前 GitHub 约 1 star)。
结尾¶
dsh-continue-button 把「写续接提示 + 发送」收成发送键旁一次点击,并尽量从中断信号与 transcript 尾部自动拼上下文。需要细节、截图与热更新流程时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/lilcandi/dsh-continue-button
- GitHub:https://github.com/lilcandi/dsh-continue-button