<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-45 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 45 **Status:** ready-for-agent **User Stories:** 46, 47(见父规格) ## What to build 用户创建、查看、修改或删除循环提示,每次按参考规则在独立后台子代理中执行并返回结果。 ## Acceptance criteria - [ ] interval、立即触发、数量/有效期限制、更新保持相位等公开契约由参考清单决定。 - [ ] 调度执行经过 dsh,权限和提供商配置受控;不偷带主会话上下文,不隐藏模型费用。 - [ ] 删除、执行重叠、任务失败、用户插入消息和到期均有真实状态与结果。 - [ ] 通过受控时钟及实际子代理验证触发/取消,默认不承诺持久化,跨重启由下一票处理。 ## Blocked by - #172 — Ticket 40: dsh 子代理执行与任务视图 - #175 — Ticket 43: 后台命令与完成唤醒 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
feat(rust): scheduled prompts with independent fires (#177)
Blackman99 commentedon Sep 25, 2026
已实现并推送到
rewrite/grok-dsh-20260920:a06632d内容:
/loop [间隔] <提示>通过 dsh 的参考scheduler_create/scheduler_delete/scheduler_list工具创建定时提示(最短 60 秒、每会话最多 50 个、7 天过期、上次未结束则跳过)。每次触发都作为独立的 dsh 后台子代理运行(经子代理规划器,类型、权限、审批与并发上限照常生效),最终状态只回报一次并唤醒空闲会话;下一次触发带着上一次的最终状态重新开始。子代理不提供调度工具。状态栏统计循环数,Ctrl+G 任务面板列出循环,x通过控制通道删除。循环仅限当前会话,durable: true明确拒绝(留给 #178);-p、编辑器 ACP(x.ai/scheduled_task_*扩展列为不支持)、共享服务器和禁用子代理的会话不提供调度器。文档:帮助文本、README.md、README.zh.md、CONTEXT.md、changeset(codsh-cli minor、codsh-bundle minor)。检查(rebase 到 #182/#195 之后重跑):
pnpm run typecheck通过TMPDIR=/tmp pnpm test:94 个文件,2435 通过 / 2 失败,均为 5 秒超时:reference-evidence.spec.mjs(已有问题)和rust-launcher.spec.mjs(机器负载高时超时,单独重跑 4/4 通过);新增rust-scheduler.spec.mjs17/17 通过cargo fmt --check通过cargo clippy ... -D warnings:只剩已有的 2 个错误(filesystem_sandbox.rs中未使用的tail_marker和多余的return),本次没有新增cargo test --workspace:1619 通过 / 4 失败 / 2 忽略;失败均为已有问题(2 个filesystem_sandbox、privacy::drafts_stay_local…、voice::substitute_route…)rust-prompt-pty-test,只有已有的 CJK 换行检查失败未验证:macOS 和 Windows 实机、真实模型提供方(全部使用本地无密钥 mock)。
main、npm 发布和默认启动路径都没有改动。
已解除阻塞的后续工单:#178(它唯一的阻塞项就是 #177)。#211 还有其他未关闭的阻塞项。