<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-51 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 51 **Status:** ready-for-agent **User Stories:** 47, 49, 62(见父规格) ## What to build 用户在运行列表查看阶段、子代理与结果,并按显示名称暂停、恢复、提高允许的预算或停止流程。 ## Acceptance criteria - [ ] 同名重复启动、唯一显示名、原始脚本/参数固定及已提交结果恢复按参考处理。 - [ ] 同进程暂停可恢复;预算停止仅按明确提高上限继续;主进程重启后的不支持恢复明确拒绝。 - [ ] UI、工具、非 TUI 文本视图对阶段、取消、失败一致,完成事件送达正确会话且去重;复用公共事件通路但不依赖完整后台 shell 功能,不能声称未提交副作用 exactly-once。 - [ ] 暂停和实际子代理停止、继续后的结果及进程重启场景通过外部行为测试。 ## Blocked by - #152 — Ticket 20: 鼠标、搜索与阅读位置 - #182 — Ticket 50: 工作流并行与预算契约 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
feat(rust): background workflow runs with /workflow view, pause, resu…
Blackman99 commentedon Sep 25, 2026
Ticket 51 / #183 已合入
rewrite/grok-dsh-20260920的9833087。行为
workflow工具调用在引擎开始执行脚本后立即返回Workflow 'name' started in the background.,运行在会话后台继续;同名重复启动得到会话内唯一的显示名(name、name-2……),跨会话互不影响。一个会话最多同时 4 个活动运行。<会话目录>/workflows/<run id>/保存run.json、启动时固定不变的script.rhai与launch.json(args),以及引擎的journal.jsonl。/workflow//workflow runs按参考格式列出阶段、子代理计数、耗时和目标;/workflow pause|resume|stop <名称>(也支持/workflow <名称> pause)按显示名控制运行;模型也可用工具的pause/stop/resumesource 按名称或 run id 控制。TUI 通过控制通道发送,回复显示在提示行;/tasks增加 Workflows 区域,状态行统计活动工作流,工具块标题随状态变化(恢复后重新显示运行中)。agent_budget后继续,否则明确拒绝。interrupted,所有恢复都以“由更早的 codsh 进程启动、进程重启即终止”为理由明确拒绝,且不会重复报告。-p会随回合结束,因此在-p下工具等待运行结束并返回与通知相同的运行块,取消提示会停止运行。/workflow save、每次运行的可编辑脚本副本仍以明确错误拒绝。验证(全部只在 Linux 上)
cargo test -p codsh-rust:581 通过 / 3 失败(2 个既有的filesystem_sandbox失败,1 个既有的 voice 假服务器偶发失败),新增 engine journal 恢复、控制通道、面板与/workflow回复测试。cargo test --workspace --exclude codsh-rust:1043 通过。cargo clippy -p codsh-rust --all-targets -- -A dead_code -A clippy::needless_return无警告;cargo fmt --check通过。pnpm test:2444 通过 / 1 失败(既有的reference-evidence.spec超时)。其中scripts/rust-workflow.spec.mjs28/28,覆盖:跨会话唯一命名与文本视图、4 个运行上限、用户与模型停止、真实子代理停止后的暂停与 journal 恢复结果、预算恢复、SIGKILL 后session/resume的重启拒绝、-p等待与取消。rust-workflow-pty-test.py(后台启动、完成通知回合、/workflow runs、/tasksWorkflows 区域、按名称暂停/恢复/停止且引擎和子代理退出、语法错误、-p与并发上限)以及 scheduler、subagent、background、worktree、queue、plan、plugin-content 的 PTY 测试全部通过。未验证
未实现 / 已知限制
/workflow save、工作流目录与可编辑脚本投影留给 [Grok/dsh 52] 个人与项目工作流目录 #184。tokens_used仍为 0(dsh 不回传)。main、npm 和默认版本都没有改动。
解除阻塞的后续