07. 并行工作
后台任务、队列与循环
工作还在进行时,让提示栏仍可用:
- **后台命令和子助手**不占用前台这一轮。
- **提示队列**在一轮已经在跑时接住你打的字。
/loop调度周期性提示。只有会话公布了scheduler_create工具时,它才可见、可运行。
/queue 和 /tasks 是 pager 内置命令。它们把只读快照写进滚动记录。每种渲染模式都可用。交互窗格(queue、tasks)在全屏 TUI 里;精简模式改用斜杠命令。
按你何时要答案来选
编译、测试套件或开发服务器不该冻住对话。你已经知道要发的跟进,不该等你盯着转圈。每隔几分钟的健康检查,不该是你手工反复打 /loop。
| 需要 | 用 |
|---|---|
| 一条长命令,然后继续说话 | 后台执行(background: true 或 Ctrl+B) |
| 已经写好几条提示 | 队列(忙时接着打,或用 queue 窗格) |
| 定时做同一项检查 | /loop(需要 scheduler_create) |
| 事件流(日志、文件监视) | 助手的 monitor 工具,不是 /loop |
把正在跑的命令放到后台:`Ctrl+B`
前台 shell 命令正在跑时,Ctrl+B 把它送到后台。这是唯一的后台快捷键。进程继续跑;结束时你会收到通知。在 tasks 窗格(Ctrl+G)或用 /tasks 跟踪。
助手也可以一开始就把命令放在后台(run_terminal_command 带 background: true),稍后调用 get_command_or_subagent_output 或 wait_commands_or_subagents。kill_command_or_subagent 停止任务或子助手。
提示队列:`/queue`
一轮正在跑时提交,Matcha 会把文字入队,等这一轮结束再发出。
- **全屏:**
Ctrl+;切换 queue 窗格(部分 macOS VS Code 系终端以Ctrl+4为主;Ctrl+'是备选)。在那里编辑和重排。 - **任意模式:**
/queue追加一个系统块,列出已排队的提示,或显示Queue is empty.它不编辑队列。会话范围:没有活动会话 → 报错。
快照正在跑的工作:`/tasks`
/tasks 以系统块列出:
- 工作流运行(如有)
- 子助手
- 后台命令
- monitor 与已调度的
/loop任务
终止或接入不在 /tasks 里做;用全屏 TUI 的 tasks 窗格(Ctrl+G)。与 /queue 一样是会话范围。
助手看起来空闲时,提示栏上方的仍在运行状态行会计数命令、monitor、循环和后台子助手。完成写入记录;计数只留在那一行。
周期性提示:`/loop`
/loop [interval] <prompt>/loop 受 scheduler_create 门控。会话公布的工具集里没有它时,菜单隐藏 /loop,打出来也不会跑。空参数打印用法;不会捏造默认间隔。
/loop 5m Check if the test suite passes and report any failures
/loop 2h Summarize new commits since the last check
/loop check deploy status every hour开头形如 <number><s|m|h|d>(非零)的词,会当成屏幕预览的节奏。其他一切——包括两头的自然语言——都交给模型,由它变成 scheduler_create。你没给节奏时,Matcha 会问;它不会自己挑一个。
| 间隔 | 含义 |
|---|---|
Ns | 秒;小于 60 的值提到 60 |
Nm | 分钟 |
Nh | 小时 |
Nd | 天 |
/loop 让调度器立刻触发,然后重复。每次触发都是新的一轮(在这段对话里;若 [scheduler] background_loops 开启——这是默认——则在分离的后台子助手里)。周期性任务 **7 天后**自动过期。最多 **50** 个已调度任务可以同时处于活动。用创建时的任务 id 调 scheduler_delete 取消。要改循环,用同一 id 再调 scheduler_create;不要删了再建。
相关助手工具
monitor 把过滤后的命令输出以对话通知的形式流式送来。管道保持按行缓冲(grep --line-buffered),过滤器收紧;太吵的 monitor,Matcha 可以停掉。持久 monitor 用 kill_command_or_subagent 停止。
本构建没有
云端托管的循环或远程调度器不是这里的产品面。会话有本地 scheduler_create 工具时,/loop 对着它跑。Cloud Agent(cloud_agent)已关闭。