<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-44 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 44 **Status:** ready-for-agent **User Stories:** 46, 47(见父规格) ## What to build 用户运行监控脚本,状态变化以受控事件到达正确会话,并能检查、停止及诊断监控。 ## Acceptance criteria - [ ] 按参考处理事件来源、输出保留、超时、持续监控和手动停止,明确会话归属。 - [ ] 高频输出、脚本失败、事件同时到达、用户输入与唤醒竞争不造成无限回合或通知重复。 - [ ] 监控结束与任务视图/状态行一致,异常即时可见;不默认产生未说明的额外提供商调用。 - [ ] 用真实监控进程和受控状态变化验证完整行为与清理,并补齐文档和发布元数据。 ## Blocked by - #175 — Ticket 43: 后台命令与完成唤醒 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
feat(rust): monitors with event wakes through dsh jobs (#176)
Blackman99 commentedon Sep 25, 2026
已实现并推送到
rewrite/grok-dsh-20260920:ab67660 (已 rebase 到 #190、#205 之上,两边改动都保留)。内容
rust-acp-monitor.mjs:模型侧monitor工具,名称、参数、描述、上限与文案按参考实现(pinned source rev e8563f8 的 grok-build monitor)对齐:timeout_ms默认/上限 36,000,000,超过上限必须persistent;200ms 轮询、行裁剪、500/3000 字节截断、1 MiB 缓冲;令牌桶 10 个、每 2s 补 1 个、抑制提示;连续抑制 30s 自动停止;<monitor-event>包装与多事件分组格式;用户停止提示 “This task was killed by the user — do not restart it.”。ctx.jobs的monitor任务,因此job_output/job_list/job_kill可用,会话结束时随之停止;退出由 dsh 自身的完成通知报告一次。◎ Monitor event · …记录轮次(同一步领取的多条通知合并到一个轮次,回放一致)、状态行 “N monitor(s)”、任务面板 “Commands and monitors” 行(超时/persistent、事件数)与x停止、开始/结束提示、/new/切换/退出的停止提示。CODSH_MONITOR=1),纯-p、编辑器 ACP、共享服务器不提供。验证(Linux,rebase 后重新运行)
pnpm run typecheck:通过。TMPDIR=/tmp pnpm test:97 个文件中 95 通过、1 失败、1 跳过;2509 通过 / 1 失败 / 5 跳过。唯一失败是已知的reference-evidence.spec5s 超时,与本改动无关。新增scripts/rust-monitor.spec.mjs共 28 项全部通过,含真实 dsh + 无密钥 mock 模型的端到端用例(空闲唤醒次数、忙碌注入、超时、persistent + job_kill、上限报错、刷屏停止且不超过唤醒预算、任务面板停止、dsh 退出时进程被清理、未开启时不提供工具)。cargo fmt --check:通过。cargo clippy ... -D warnings:仅有已知的 2 个既有错误(tail_marker未使用、filesystem_sandbox.rs 多余的return),无新增。cargo test --workspace:1658 通过 / 4 失败 / 2 忽略;4 个失败均为已知既有问题(filesystem_sandbox 2 个、voice::substitute_route…、privacy::drafts_stay_local…)。rust-monitor-pty-test.py(事件唤醒轮次、状态行、任务面板行与x停止且不再唤醒、模型在下一步被告知、自然退出的一次事件 + 一次完成唤醒、/new与退出后无残留进程、纯-p无该工具)通过,并已加入test:rust:pty;回归运行 background、scheduler、scheduler-restart、subagent PTY 均通过。未验证
main、npm 发布与默认入口均未改动。
后续:正文提及 #176 的未关闭 issue 只有 #211,它仍依赖另外 22 个未关闭的 issue,因此本次没有解除阻塞的后续工单。