<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-40 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 40 **Status:** ready-for-agent **User Stories:** 42, 43, 47(见父规格) ## What to build 用户能委派不同类型/模型的子代理,查看实时进度和子会话内容,并按权限终止任务。 ## Acceptance criteria - [ ] 子代理由 dsh 实际创建执行,类型、模型、能力过滤与父级权限继承正确,不能被界面标签替代。 - [ ] 任务列表、父级状态和子视图反映同一生命周期,成功/失败/取消只交付一次结果。 - [ ] 前台/后台子代理、父子取消、无可用模型、到达并发限制等状态可操作。 - [ ] 真实父子回合和受限制工具效果经端到端验证,现有会话、压缩和恢复入口加入回归。 ## Blocked by - #140 — Ticket 08: 多提供商模型与推理选项 - #144 — Ticket 12: 进程、网络与环境保护 - #159 — Ticket 27: 会话检索、命名与仪表盘 - #163 — Ticket 31: 项目规则、Skills 与自定义命令 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
Blackman99 commentedon Sep 24, 2026
Ticket 40 / #172 已合入
rewrite/grok-dsh-20260920的7f927ee。子代理由 dsh 真实创建并执行。
general-purpose、explore、plan、[subagents.roles]和.grok/agents/$GROK_HOME/agents代理文件决定子代理的工具和模型:能力模式变成 dsh 工具允许列表,被移除的工具不在子代理的工具列表里,强行调用也会被拒绝。子代理继承父代理的权限模式、规则、hook 和沙箱;ask 模式下子代理的写入被拒绝,文件不变。类型指定的模型在启动前检查,不可用时什么也不启动。max_concurrent、limit_behavior(queue / fail)、max_depth按GROK_*环境变量优先于[subagents]配置解析。--no-subagents、GROK_SUBAGENTS=0移除工具,纯文本模式下--disallowed-tools Agent(type)移除对应类型。前台、后台、父取消、子取消、排队和达到上限都是可操作的状态。后台结果通过job_output只交付一次。同一条生命周期(queued / start / activity / end / refused)驱动工具块、状态行和
/tasks(全屏下 Ctrl+G)任务列表。列表里可以打开只读的子代理记录,x或子视图里的 Ctrl+C 只取消该子代理。子代理会话不出现在/resume和sessions list中。验证(Linux):
scripts/rust-subagents.spec.mjs13 项通过;新增的scripts/rust-subagent-pty-test.py通过(explore 失去 write、general-purpose 写入、后台取消、前台子取消、/compact、--resume、子会话不列出、--no-subagents与Agent(type));pnpm run typecheck通过;pnpm test2313 通过、1 失败(reference-evidence.spec.mjs在机器高负载下 5 秒超时,单独加长超时后 11/11 通过,与本改动无关);Rust 工作区测试 codsh-rust 467 通过、2 失败,其余 crate 982 通过;cargo fmt --check通过。strict clippy 只报filesystem_sandbox.rs里两个 Linux 专属的既有问题,两个失败的 Rust 测试也在该文件,是 Linux 沙箱环境限制,本改动未触及。rust-plain-pipe-test.py中本次修改的段落通过,后面的沙箱段落因本机没有 bubblewrap 失败。未验证:macOS 与 Windows 的 PTY;与参考二进制的逐项对照(inventory 中 PARITY-172 仍为 planned)。类型校验时限(
PARITY-172-type-deadlines,远程类型 RPC)不适用,类型在本地解析。未实现:persona、cancel_subagents_on_turn_cancel(后台子代理在父回合取消后继续运行)。dsh 无法归类的工具(如 MCP)只在all下保留,其它模式默认拒绝。subagent_fork不计入并发上限。main、npm 和默认版本都没有改动。
现在可以继续:#173(子代理消息与 resume_from)、#174(worktree 隔离)、#175。