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
19 changes: 18 additions & 1 deletion docs/02-user-guide/02-conversations/01-sending-messages.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,29 @@ DesireCore 的输入区域支持多种消息发送方式,包括文本、图片

| 类型 | 语法 | 说明 |
|------|------|------|
| 系统命令 | `/命令名` | 内置功能,如 `/help`、`/skill` 等 |
| 系统命令 | `/命令名` | 内置功能,如 `/help`、`/skill`、`/plan` 等 |
| 技能调用 | `/skill:技能名` | 调用已安装的技能 |
| 快捷调用 | `/技能名` | 直接输入技能名称快速调用 |

输入 `/skill:` 后会自动显示当前 Companion 可用的技能列表,继续输入可过滤匹配。

### 常用系统命令

| 命令 | 作用 |
|------|------|
| `/plan` | 强制 Companion 先制定计划再动手(详见[计划确认](../04-delegation/02-plan-confirmation.md#主动要求先做计划)) |
| `/new` | 开启一个新的对话,与当前对话上下文隔离 |
| `/compact` | 手动压缩当前对话历史,释放上下文空间 |
| `/steer` | 在 Companion 思考过程中插入一条引导消息(不打断生成) |
| `/help` | 查看可用命令完整列表 |

:::tip `/plan` 的两种用法
- 单独发送 `/plan`:开启计划模式,不发任何消息
- `/plan 把所有 console.log 换成 logger.info`:开启计划模式 + 把任务作为消息发出去

计划被批准(或拒绝)后,强制模式会自动关闭。
:::

## 快捷键速查

| 操作 | 默认快捷键 (macOS) | 默认快捷键 (Windows/Linux) |
Expand Down
121 changes: 116 additions & 5 deletions docs/02-user-guide/04-delegation/02-plan-confirmation.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: 计划确认
description: 了解智能体如何制定执行计划、计划中包含什么信息,以及如何审阅和修改计划
keywords: [计划, Plan, 确认, 审阅, 步骤, 执行计划]
description: 了解智能体如何制定执行计划、计划中包含什么信息、如何审阅修改计划,以及如何主动要求"先想清楚再动手"
keywords: [计划, Plan, 确认, 审阅, 步骤, 执行计划, Plan Mode, 强制规划]
---

# 计划确认
Expand All @@ -18,19 +18,101 @@ keywords: [计划, Plan, 确认, 审阅, 步骤, 执行计划]
- **调整策略**:你可能有更好的执行思路
- **设置边界**:提前标记哪些步骤需要你确认

## 智能体什么时候会主动制定计划

智能体会**自动判断**何时该先制定计划,何时可以直接动手。判断的依据是:

| 任务特征 | 智能体的处理 |
|---------|------------|
| 涉及修改 3 个以上文件,或预计要执行 5 步以上 | 先制定计划 |
| 包含**不可逆操作**(删除文件、发布版本、迁移数据、对外发送邮件等) | 先制定计划 |
| 你明确说"先做计划"/"先想清楚"/"列一下步骤" | 先制定计划 |
| 智能体自己也不太确定该怎么做 | 先制定计划 |
| 单个文件的小修改 | 直接做 |
| 纯查询、解释、读取信息 | 直接答 |
| 你明确说"直接做"/"不用计划" | 直接做 |

这就像一个有经验的同事——简单的小事不会动不动来找你确认,但碰到大事或有歧义的事一定会先问。

:::tip 想让智能体每次都先做计划?
往下看「主动要求先做计划」一节——你可以**强制要求**智能体本次会话里任何任务都先制定计划,不管大小。
:::

## 计划包含哪些内容

智能体制定的计划通常包含以下信息:

![执行计划](/img/user-guide/delegation/plan-confirmation.svg)

完整的计划是一份结构化文档,自动保存在 **当前工作目录** 的 `plans/` 子文件夹下(文件名按任务关键词命名,例如 `plans/review-procurement-contract.md`)。即便你关掉对话,文件也会留在那里,方便后续查阅或纳入版本控制。

### 计划文件的标准结构

每份计划包含以下章节:

| 章节 | 作用 |
|------|------|
| **Context** | 为什么要做这件事、要解决的问题、约束条件 |
| **Steps** | 分步操作清单,每一步标注风险等级与是否需要你中途确认 |
| **Critical Files** | 涉及的关键文件清单(含路径和行号),让你一眼知道动哪儿 |
| **Artifacts** | 会新建 / 修改 / 删除哪些文件 |
| **Verification** | 怎么知道任务成功完成(可运行的检查命令或手测步骤) |
| **Risks & Rollback** | 可能出错的地方,以及万一出错怎么撤回 |

### 步骤类型说明

| 图标 | 类型 | 含义 |
|------|------|------|
| ⚙️ | **固化步骤** | 规则明确、结果确定的步骤,像程序一样执行 |
| 🧠 | **灵活步骤** | 需要 AI 理解和判断的步骤,结果可能因情况而异 |
| 🚪 | **人闸门** | 执行到此步骤时暂停,等待你的确认 |
| 🚪 | **人闸门** | 执行到此步骤时暂停,等待你的确认(计划中标注为 `confirm: yes` 的步骤) |

:::info 风险等级 = 自动决定要不要确认
每个步骤会标注 `risk: low | med | high`。**高风险步骤会自动设为"人闸门"**——这是智能体的纪律,避免在你没看到的时候做不可逆的操作。
:::

## 主动要求"先做计划"

如果你希望智能体**每次都先做计划**(即便是简单任务),有三种方式可以**强制开启计划模式**——开启后,本次会话里所有任务都会经过"计划→审批→执行"流程,直到你关闭它或计划被批准后自动退出。

### 方式 1:点击 📋 按钮

聊天界面顶部右侧有一个 📋 Plan 按钮,点击切换。开启后会有明显视觉提示:

- 按钮高亮(紫色背景)
- 输入框边框变为紫色
- 输入框 placeholder 提示"Plan Mode 已开启:发送的任务会先制定计划再执行"

### 方式 2:快捷键 `Shift + Tab`

在主界面(光标不在输入框时)按 `Shift + Tab`,与点击 📋 按钮等价。这是与 Claude Code 对齐的快捷键习惯。

### 方式 3:斜杠命令 `/plan`

在输入框打 `/plan` 提交:

- 单独发送 `/plan` → 开启计划模式,不发任何消息
- 发送 `/plan 帮我重构用户模块` → 开启计划模式 + 把 "帮我重构用户模块" 作为任务发出去

:::tip 三种入口效果完全相同
你可以按习惯选用任何一种。计划被批准(或拒绝)后,强制模式会**自动关闭**,你会看到一条 toast 提示"✓ Plan 已批准,开始执行",无需手动关闭。
:::

### 强制模式与自动判断的区别

| 场景 | 不开启强制模式(默认) | 开启强制模式 |
|------|----------------------|-------------|
| 你问"1+1=?" | 直接回答 2 | 仍然先制定(很简单的)计划走一遍流程 |
| 你说"帮我加个注释" | 单文件小修改,直接做 | 仍然先制定计划 |
| 你说"重构整个 auth 模块" | 自动触发计划 | 自动触发计划(结果相同) |

强制模式适用于**重要场景**:

- 你正在让智能体改一个关键系统,要全程可控
- 你刚教了智能体新规则,想确认它确实理解
- 你打算让智能体连续做多件事,希望每件事都先看到计划

不需要强制模式时,让智能体自己判断更高效。

## 如何审阅计划

Expand All @@ -54,6 +136,20 @@ keywords: [计划, Plan, 确认, 审阅, 步骤, 执行计划]

确认哪些步骤需要你中间确认。太多会影响效率,太少可能有风险。

### 5. 关键文件清单是否合理

计划列出的"Critical Files"应该是你预期会动到的文件。如果出现了你不希望被改动的文件,及时指出。

## 审批的三个选项

智能体把计划做好后,会通过结构化提问让你做选择:

| 选项 | 含义 |
|------|------|
| **批准并执行** | 按当前计划执行;强制模式自动关闭 |
| **需要修改** | 你描述修改点,智能体改完计划再让你审一次 |
| **拒绝** | 任务终止;强制模式自动关闭 |

## 修改计划

如果计划需要调整,你可以直接说:
Expand All @@ -66,14 +162,15 @@ keywords: [计划, Plan, 确认, 审阅, 步骤, 执行计划]
草稿,不要直接发送"
```

智能体会更新计划并再次展示给你确认
智能体会更新计划文件并再次展示给你确认

```
智能体:"已更新计划。变更如下:

步骤 4:🧠 [灵活] → ⚙️ [固化] 按已有规则检查进口设备条款
新增步骤 6:⚙️ [固化] 保存审查报告草稿

计划文件已更新至 plans/review-procurement-contract.md
确认按更新后的计划执行?"
```

Expand All @@ -95,6 +192,20 @@ keywords: [计划, Plan, 确认, 审阅, 步骤, 执行计划]
即使你很信任智能体,第一次执行某类新任务时,还是建议看一眼计划。等确认它确实理解了你的要求后,下次就可以放心跳过了。
:::

## 关于计划文件的位置

每个智能体的计划文件落在**它自己的工作目录**下的 `plans/` 子文件夹——这是有意为之:

- **可审阅**:计划是普通 Markdown 文件,你可以在编辑器里直接打开、对比版本
- **可纳入版本控制**:如果工作目录是 git 仓库,计划会成为团队的"决策日志"
- **跟项目走**:换台机器 / 拉一份仓库即可看到所有历史计划

不同智能体之间**互相看不到**对方的计划——切换到另一个智能体,看到的就是它自己的计划库,不会混淆。

:::info 不想让计划文件污染目录?
你可以把 `plans/` 加进 `.gitignore`,让它只在本地保留、不进版本控制。
:::

:::info 下一步
确认计划后,智能体就开始执行了。前往 [执行监控](./03-execution-monitoring.md) 了解如何监控执行过程。
确认计划后,智能体就开始执行了。前往 [执行监控](./03-execution-monitoring.md) 了解如何监控执行过程,以及智能体如何用**任务清单**透明展示每一步进度
:::
77 changes: 73 additions & 4 deletions docs/02-user-guide/04-delegation/03-execution-monitoring.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: 执行监控
description: 了解如何在智能体执行任务时监控进度,理解固化步骤和灵活步骤的区别,以及如何暂停和恢复执行
keywords: [执行, 监控, 固化步骤, 灵活步骤, 暂停, 恢复, 进度]
description: 了解如何在智能体执行任务时监控进度,理解固化步骤和灵活步骤的区别,以及如何用任务清单透明展示每一步进度
keywords: [执行, 监控, 固化步骤, 灵活步骤, 暂停, 恢复, 进度, 任务清单, Task]
---

# 执行监控
Expand All @@ -18,12 +18,81 @@ keywords: [执行, 监控, 固化步骤, 灵活步骤, 暂停, 恢复, 进度]

| 状态 | 图标 | 含义 |
|------|------|------|
| 已完成 | ✅ | 步骤成功执行 |
| 待办 | 🔹 | 任务已创建但还未开始 |
| 等待中 | ⏳ | 队列排队等待(依赖未完成或前序步骤未结束) |
| 执行中 | 🔄 | 正在处理 |
| 等待中 | | 排队等待执行 |
| 已完成 | | 步骤成功执行 |
| 需确认 | 🚪 | 人闸门,等待你的确认 |
| 警告 | ⚠️ | 执行成功但发现问题 |
| 失败 | ❌ | 执行失败 |
| 已放弃 | 🗑️ | 任务被丢弃(已软删除,仍可在审计记录里查到) |
Comment thread
yi-ge marked this conversation as resolved.

## 任务清单(让进度对你透明)

进入执行阶段后,智能体会**把计划里的每一步转成一条任务**,挂在它自己的「任务清单」上。你随时能问"现在到哪一步了""还剩什么",智能体不需要回忆——直接查清单即可。

### 任务清单的样子

每条任务都有明确的标题、状态、关联信息:

```
📋 任务清单(智能体「合同审查助手」)

🔄 #1 解析合同文件,提取关键条款
进行中 · 关联 plans/review-procurement-contract.md 第 1 步

🔹 #2 检查违约金比例
待办 · 依赖 #1 完成

🔹 #3 检查付款条件
待办 · 依赖 #1 完成

🔹 #4 分析进口设备条款(灵活)
待办 · 风险:中 · 依赖 #1 #2 #3 完成

🔹 #5 综合风险评估(灵活)
待办 · 风险:中 · 需要你确认

🔹 #6 发送审查报告
待办 · 风险:高 · 需要你确认
```

### 状态会**立刻**更新

智能体的纪律是:
- **开始做某一步前**,立刻把它的状态切到「🔄 进行中」
- **做完一步**,立刻切到「✅ 已完成」
- **不会等一批做完了才统一更新**

这意味着你看到的进度永远是当前的——不会出现"看上去停了"但其实在干活的情况。

### 任务之间的依赖关系

任务可以声明"做我之前要先做某某"。比如"运行数据库迁移"必须依赖"备份完成"先成功——智能体看到依赖未完成时不会去执行后续步骤,避免顺序错乱。

依赖关系会在清单里显示为「依赖 #X 完成」,你能一眼看出整个任务图的执行顺序。

### 偏离计划时清单会同步更新

如果智能体在执行中发现需要调整步骤,它会:

1. 主动告诉你"打算偏离原计划,原因是 X"
2. 征得你同意后更新任务清单(增加新任务或修改已有任务)
3. 把偏离记录追加到计划文件末尾的 `## Execution Notes` 小节

这样事后看 plan 文件 + 任务清单,能完整还原"实际怎么做的"。

### 任务清单是智能体私有的

每个智能体只能看到、修改**自己的**任务清单。这是有意为之:

- **互不干扰**:切换到另一个智能体,看到的就是它的清单,不会出现别的智能体的待办
- **责任清晰**:每条任务都能追溯到具体的智能体(不会出现"这是谁做的"的疑问)
- **隔离审计**:任务记录跟着智能体走,便于按智能体维度做事后审查

:::tip 跨智能体协作怎么办?
如果你让多个智能体协作完成一件大事(比如组队任务),每个智能体管理自己的清单,**通过消息和回执互相通报进度**——不是直接读取彼此的清单。这与现实中的团队协作一致:每个人有自己的待办,靠汇报和回执对齐。详见[跨智能体协作](./06-cross-agent.md)。
:::

## 固化步骤与灵活步骤

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,29 @@ Typing `/` (slash) in the input box pops up the command auto-completion menu. Sl

| Type | Syntax | Description |
|------|------|------|
| System Commands | `/command_name` | Built-in functions, such as `/help`, `/skill`, etc. |
| System Commands | `/command_name` | Built-in functions, such as `/help`, `/skill`, `/plan`, etc. |
| Skill Invocation | `/skill:skill_name` | Call installed skills |
| Quick Invocation | `/skill_name` | Directly input skill name for quick calling |

After typing `/skill:`, the list of skills available to the current Digital Companion is automatically displayed, and continuing to input filters the matches.

### Built-in System Commands

| Command | Purpose |
|---------|---------|
| `/plan` | Force the Companion to plan first before acting (see [Plan Confirmation](../04-delegation/02-plan-confirmation.md#asking-the-agent-to-always-plan-first)) |
| `/new` | Start a new conversation, isolated from the current context |
| `/compact` | Manually compact the current conversation history to free up context space |
| `/steer` | Inject a guiding message while the Companion is thinking (without interrupting generation) |
| `/help` | View the full list of available commands |

:::tip Two ways to use `/plan`
- Send `/plan` alone — enables Plan Mode without sending any message
- Send `/plan replace all console.log with logger.info` — enables Plan Mode + submits the task

After the plan is approved (or rejected), forced mode auto-disables.
:::

## Shortcut Quick Reference

| Action | Default Shortcut (macOS) | Default Shortcut (Windows/Linux) |
Expand Down
Loading
Loading