Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/02-user-guide/04-delegation/03-execution-monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,3 +246,7 @@ keywords: [执行, 监控, 固化步骤, 灵活步骤, 暂停, 恢复, 进度,
:::info 下一步
在执行过程中,某些高风险操作会触发"人闸门"确认。前往 [人闸门确认机制](./04-human-gate.md) 了解详情。
:::

:::tip 任务可能运行半小时或更久?
参见[长耗时任务](./07-long-running-tasks.md),了解怎样要求智能体保存阶段进度、在后台运行命令,以及中断后从已有成果继续。
:::
216 changes: 216 additions & 0 deletions docs/02-user-guide/04-delegation/07-long-running-tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
---
title: 长耗时任务
description: 使用全局任务板跟踪构建、训练、批量处理、长篇研究等耗时工作,并在中断后从已有进度继续。
keywords: [长任务, 后台任务, 全局任务板, 任务管理器, 阶段进度, 断点继续, 构建, 训练, 批量处理]
sidebar_position: 7
last-reviewed: 2026-08-26
---

# 长耗时任务

有些工作本来就急不得。比如分析几百份文件、跑一次完整构建、训练模型、求解大规模排程,或者做一轮需要反复查资料的研究。它们可能要半小时,也可能要几个小时。

把这类任务交给智能体时,最重要的不是猜一个足够长的等待时间,而是让它把进度留在工作目录里。这样即使网络波动、应用重启或任务中途失败,智能体也能先检查已有成果,再接着做。

## 一段可以直接复制的话

第一次交代长任务,可以在原任务后面加上这段:

```text
这是一项长耗时任务。开始前先列出计划,并把工作拆成几个可以独立验收的阶段。
每完成一个阶段,就把结果保存到工作目录并更新进度记录,不要只在聊天里说“已完成”。
如果中途失败或重新开始,先检查已有文件和进度,从最后一个已完成的阶段继续,不要从头重做。
遇到会覆盖文件、对外发送、发布或产生费用的操作,先问我。
```

有了这几句,智能体会先分段,把阶段成果写进文件;恢复时先查已有进度,高风险动作仍然等你确认。

如果你经常做长任务,可以把这套要求[教给智能体](../03-teaching/03-teach-rules.md),以后不用每次重复。

## 把阶段放进全局任务板

聊天里的任务清单适合看当前对话。任务一旦跨越几个小时、多个对话,或者需要多个智能体协作,就应该放进“全局任务板”。这样你不必回到原聊天翻记录,也能看到谁在做、哪里被卡住、哪些结果等你确认。

可以直接补一句:

```text
请为这项工作创建或使用一个全局任务板。
把每个可以独立验收的阶段建成一条任务,写清负责人、完成条件、成果文件和前置依赖。
开始处理时更新为“进行中”;遇到问题时更新为“阻塞”并写明原因;做完后先提交“待确认”,等我验收后再标记“已完成”。
每次状态变化都及时更新任务板,不要等全部做完后一次性补记录。
```

一项批量合同分析,可以在任务板里这样拆:

| 任务 | 负责人 | 完成条件 | 前置任务 |
|---|---|---|---|
| 统计并校验输入文件 | 合同助手 | 文件数量和失败清单已保存 | 无 |
| 分批抽取合同文本 | 文档助手 | 每份合同都有可读取文本或失败原因 | 输入校验 |
| 检查风险条款 | 合同助手 | 风险结果逐份落表 | 文本抽取 |
| 汇总并提交报告 | 合同助手 | 报告和汇总表进入待确认 | 风险检查 |

不要把“分析 300 份合同”只建成一条巨大的“进行中”任务。那样过了两个小时,你仍然不知道是抽取慢、检查被阻塞,还是报告已经做好只等确认。

### 在全局任务板里怎么看

打开左侧导航的“全局任务板”,切到“任务总览”:

- “全部任务”适合搜索任务名称、范围、状态、优先级和参与智能体;
- “按负责人”会按智能体或团队分组,能看到各自的任务总数、执行中、阻塞、审核和逾期数量;
- “待处理”集中展示待开始、遇到阻碍、等待智能体确认、等待你确认、自动处理失败和需要人工接手的事项。

选中某个任务板后,切到“当前任务板”。这里可以用看板或列表查看任务,按状态、负责人、优先级、到期时间等条件筛选。需要了解为什么不能继续时,查看任务的前置阻塞、评论和关联记录,不要只看一个百分比。

对长任务来说,最值得每天看的是“进行中”“阻塞”和“待确认”:

- “进行中”应该能找到负责人和最近更新;
- “阻塞”应该写明缺什么、谁能处理,不能只写“出错了”;
- “待确认”表示阶段成果已经交付,等你验收,不等于整项工作已经完成。

### 全局任务板和任务管理器不是一回事

| 入口 | 记录什么 | 适合做什么 |
|---|---|---|
| 聊天中的任务清单 | 当前对话里的关键工作项 | 在聊天时快速看进度 |
| 全局任务板 | 跨对话、跨智能体的业务阶段、负责人、阻塞和审核 | 管理“事情做到哪了” |
| 任务管理器 | 正在运行的 Agent Run、后台命令、终端和内部宿主 | 管理“什么程序还在跑” |
| 终端面板 | 某个终端的完整输出和交互 | 查看详细日志或继续输入 |

这一区分很重要。在全局任务板里把一条任务标成“已取消”或“失败”,主要是更新业务记录,不保证对应的命令或 Agent Run 已经停止。要真正终止执行,请打开“任务管理器”,找到对应条目后使用“停止”;程序不响应时再考虑“强制停止”。强制停止可能丢失尚未写入文件的内容。

## 下达任务时说清楚什么

一份好用的长任务说明,至少要让智能体知道下面这些信息。

| 你需要说明 | 示例 |
|---|---|
| 最终要拿到什么 | “输出一份分析报告和整理后的数据表” |
| 输入材料在哪里 | “原始文件在 `input/`,不要修改它们” |
| 怎样算完成 | “300 份文件都有结果,失败项单独列出原因” |
| 阶段成果放哪里 | “中间结果放到 `work/`,最终结果放到 `output/`” |
| 哪些动作要先问你 | “不要发邮件,不要发布,不要覆盖原文件” |

例如:

```text
分析 input 目录里的全部合同,最后给我一份风险汇总表和一份 Markdown 报告。
原文件不要修改。先抽取文本,再逐份检查,最后统一汇总。
每完成一批就保存结果并更新进度;单份合同失败不要停掉全部任务,把失败原因记下来继续处理。
```

如果任务范围还不清楚,先让智能体只写计划:

```text
先不要执行。先统计文件数量、估算步骤和风险,把计划给我看。
```

关于计划文件和修改方式,参见[计划确认](./02-plan-confirmation.md)。

## 需要运行很久的命令

构建、测试、训练、数据转换和求解器任务经常会长时间占用终端。不要让智能体一直停在前台等一条命令返回,可以这样说:

```text
这个命令可能运行很久,请作为受管后台任务启动。
启动后告诉我任务名称、输出保存在哪里,以及我之后怎样查看或停止它。
不要给它设置很短的运行时限。
```

后台运行不等于失去控制。任务开始后,你仍然可以在任务管理器或终端面板查看状态和输出,也可以让智能体停止它。

需要管理员权限的命令是例外。系统授权框必须有人在场确认,这类命令不能作为无人值守后台任务运行。让智能体优先寻找用户级安装或写入方式;确实需要管理员权限时,把那一步单独放到前台执行。

想停下来时,直接说:

```text
停止刚才的后台任务,保留已经产生的输出和进度记录,不要删除中间成果。
```

DesireCore 会停止受管进程并保留已有输出,但某些外部服务已经接收的请求未必能够撤回。例如云端训练已经提交后,本地停止等待不一定会取消云端作业。遇到这类任务,最好在开始前让智能体说明取消方式。

## 怎么看它做到哪了

长任务不需要守着聊天窗口刷新。你可以随时问:

```text
现在做到哪一步了?
上一阶段的成果保存在哪里?
还有哪些没有完成,是否遇到阻塞?
```

判断任务是否真的在推进,优先看这些证据:

- 计划或任务清单里的状态有没有更新;
- 工作目录里是否出现了阶段成果;
- 后台命令是否仍在运行,输出有没有新的进展;
- 智能体是否明确记录了失败项,而不是只报一个模糊的百分比。

如果你只是想知道业务阶段,先看全局任务板。需要确认实际 Run 或后台命令还在不在、运行了多久、有没有输出,打开“任务管理器”。任务管理器还会显示 CPU、内存、进程数、输出速率和最近输出;指标显示“未采样”时,不要把它误解成 0。

任务管理器中的“停止”会先请求任务自己收尾;只有它没有响应时才使用“强制停止”。后台命令可以进一步打开日志或工作目录,Agent Run 可以跳转到对应运行记录,交互终端可以回到终端面板。

聊天内的进度展示和暂停、继续操作见[执行监控](./03-execution-monitoring.md)。

## 中断后怎样继续

重新打开对话后,不要只说“继续”。给智能体一个明确的恢复顺序:

```text
继续上次的任务。先读取原计划、进度记录和现有成果,确认最后一个已经完成的阶段。
从下一阶段继续,不要覆盖已经验收的文件,也不要重复已经完成的外部操作。
如果现有记录不足以安全继续,先告诉我缺什么,不要猜。
```

如果中断前有一条命令仍在后台运行,先让智能体确认它是否还活着。不要直接再启动一份相同任务,否则可能出现两份训练、两次发布或重复写入。

如果全局任务板仍显示“进行中”,但任务管理器里已经没有对应 Run 或后台命令,先让智能体核对已有成果和终止原因,再更新任务板。反过来,任务板已经标为失败但任务管理器里进程仍在跑时,应先决定是否保留它,再从任务管理器停止;不要仅靠改任务状态来处理进程。

对话本身变得很长时,可以使用 [`/compact`](../02-conversations/09-context-control.md) 整理上下文。聊天记录仍然保留,智能体后续主要读取任务摘要和最近进展。

## DesireCore 会自动做什么

对于仍有正常活动的任务,DesireCore 不会因为运行超过五分钟就主动结束它。系统会区分“任务做得久”和“连接长时间完全没有反应”:

- 正常产生进度、流式内容或状态消息时,任务可以继续运行;
- 连接长时间没有任何活动时,系统会按网络或服务异常处理;
- 受管后台命令默认不会继承前台命令的短等待时间;
- 后台命令运行时,DesireCore 会在有界的安全时间内尽量阻止电脑因闲置自动休眠。

这里的“阻止闲置休眠”不是万能的。合上笔记本、手动点休眠、关机或电量过低,仍可能让任务中断。准备无人看守地运行几个小时时,建议接通电源、保持 DesireCore 运行,并确认系统不会因为合盖或公司设备策略强制休眠。

DesireCore 也不知道你的业务里“完成一阶段”究竟意味着什么。比如合同处理要不要逐份落表、训练任务应该保留哪些模型文件、发布失败后哪些步骤不能重跑,这些需要你在任务要求里说清楚,或者提前[教给智能体](../03-teaching/03-teach-rules.md)。

## 长任务、定时任务还是心跳

这三个概念很容易混在一起:

| 你的需求 | 适合的方式 |
|---|---|
| 现在开始,做完为止,可能要几个小时 | 长耗时任务 |
| 明天 9 点开始、每天检查一次,或每周五执行 | [定时任务](../08-automation/03-scheduled-tasks.md) |
| 让智能体定期自检当前事项,有值得跟进的内容再主动联系你 | [心跳监控](../08-automation/01-heartbeat.md) |

“现在分析这 300 份合同”是长耗时任务。“每周五分析本周新增合同”和“每天检查是否出现高风险合同,有才告诉我”都是定时任务,因为它们指定了明确的执行周期;“有才告诉我”只是本次执行的通知条件。心跳适合让智能体自行判断当前事项是否有值得主动跟进的变化,而不是代替已经明确到每天、每周或具体时刻的调度。

## 常见问题

### 超过五分钟会自动停止吗?

不会。五分钟不再是任务的总运行上限。任务仍可能因为网络断开、服务失去响应、电脑休眠、权限不足或你主动停止而结束。

### 我可以关掉 DesireCore 吗?

不建议。部分受管命令具备恢复能力,但一次完整任务还可能包含模型调用、文件处理和等待确认。看到明确的完成通知前,最好让 DesireCore 保持运行。

### 智能体说“已完成”,但我看不到结果文件怎么办?

让它给出具体路径并检查文件:

```text
请列出已经完成的阶段、每个阶段的成果文件路径,并逐个确认文件可以读取。
没有落盘的内容不要算作已完成。
```

### 失败后一定能自动恢复吗?

不一定。DesireCore 能保留任务、输出和运行状态,但能否安全接着做,取决于智能体有没有把业务进度写清楚。涉及付款、发布、发信、提交训练作业等外部操作时,恢复前必须先核对是否已经执行,不能只看本地记录就重来。
Original file line number Diff line number Diff line change
Expand Up @@ -246,3 +246,7 @@ A synchronous delegation has a separate wait limit. If the parent receives a “
:::info Next Step
During execution, certain high-risk operations will trigger "Human Gate" confirmation. Go to [Human Gate Confirmation Mechanism](./04-human-gate.md) for details.
:::

:::tip Will the task run for half an hour or longer?
See [Long-running tasks](./07-long-running-tasks.md) for instructions on saving stage progress, running commands in the background, and resuming from existing results after an interruption.
:::
Loading
Loading