Files
Partner/doc/action/action.md

144 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 行动系统
本文说明 Partner 中行动系统的流程总览。行动系统负责把来自用户、认知模块或计划模块的“意图”转化为可建模、可评估、可执行、可调度、可追踪的行动对象。
在 Partner 中,行动不是一次简单的 tool call。一次行动可能包含多个阶段每个阶段又可以包含多个可执行的 `MetaAction`;它可能被立即执行,也可能被登记为未来的一次性或周期性计划;它的执行过程还需要与 `ContextWorkspace` 交互,让行动提取、评估、执行和结果反馈都能进入统一的上下文循环。
## 目录
行动系统的细节设计拆分到以下专题文档中说明:
- [`meta-action-and-action-chain.md`](meta-action-and-action-chain.md):说明 `MetaAction``ExecutableAction` 与行动链的建模方式。
- [`action-extraction-and-evaluation.md`](action-extraction-and-evaluation.md):说明如何从输入意图中提取候选行动,并判断行动是否完整、可执行、需要确认或需要调度。
- [`action-execution.md`](action-execution.md):说明行动执行器如何按阶段执行行动链,并处理结果、失败、中断与恢复。
- [`action-planning-and-action-scheduling.md`](action-planning-and-action-scheduling.md):说明未来行动、周期行动与状态触发行动如何被计划和调度。
- [`action-infrastructure.md`](action-infrastructure.md):说明 `RunnerClient`、执行策略、命令执行和 Origin action 等底层行动基础设施。
本文只提供总览,不展开每个模块的内部实现细节。
## 核心对象
行动系统围绕三类对象组织:
- `MetaAction`:行动链中的单步可执行元素,用于描述具体要调用的行动程序。它包含行动名称、类型、位置、参数和执行结果。当前行动类型包括 `MCP``ORIGIN``BUILTIN`
- `ExecutableAction`:可执行行动的抽象基类,承载行动来源、原因、描述、倾向、状态、阶段化行动链、阶段描述、执行历史与最终结果。
- `Schedulable`:可调度对象的统一接口,用于表达一次性或周期性触发。`SchedulableExecutableAction` 表示未来执行的行动链,`StateAction` 表示到期或周期性触发的状态更新 / 逻辑调用。
从粒度上看:
```text
Action
├─ ExecutableAction
│ ├─ ImmediateExecutableAction
│ └─ SchedulableExecutableAction
└─ StateAction
ExecutableAction
└─ actionChain: Map<Stage, List<MetaAction>>
```
也就是说,`MetaAction` 是最小执行单元,`ExecutableAction` 是面向一次任务的行动容器,`Schedulable` 则给行动增加时间维度。
## 系统流程
```mermaid
flowchart TD
Context["ContextWorkspace<br/>上下文工作空间"]
A["输入意图"] --> B["行动提取"]
B --> C["行动评估"]
C --> D["MetaAction / ActionChain"]
D --> E{"执行时机"}
E -- "立即" --> F["行动执行"]
E -- "未来 / 条件 / 周期" --> G["计划调度"]
G --> F
F --> H["结果反馈"]
H --> I["结束"]
B -.-> Context
C -.-> Context
D -.-> Context
F -.-> Context
H -.-> Context
```
虚线表示 `ContextWorkspace` 对行动系统的横切参与:行动提取与评估会读取当前上下文,行动建模、执行与反馈则可能发布新的上下文块,供后续认知、记忆和沟通模块继续使用。
## 主链路说明
一次行动通常经历以下阶段:
1. **输入意图**
输入意图可以来自用户显式指令,也可以来自认知模块推导出的内部目标,或来自已经登记的计划行动。行动系统首先要判断这段意图是否包含“需要系统实际去做”的部分。
2. **行动提取**
行动提取负责把自然语言意图或内部决策结果转化为候选行动。此阶段关注“是否存在可执行目标”,而不是立即执行。提取结果可能只是一个候选行动,也可能是一组带有阶段关系的行动链。
3. **行动评估**
行动评估负责判断候选行动是否可以进入后续流程。评估内容包括参数是否完整、能力是否存在、风险是否可接受、是否需要用户确认、是否应该立即执行,以及是否应该转化为未来计划。
4. **行动建模**
通过评估的行动会被建模为 `ExecutableAction`。如果一个任务需要多个步骤,它会被拆成按阶段组织的 `actionChain`:外层 stage 表示阶段顺序,内层 `MetaAction` 列表表示同一阶段下的一组行动单元。
5. **执行时机判断**
行动建模后会进入执行时机分流:
- 即时行动会成为 `ImmediateExecutableAction`,交给执行器运行。
- 未来行动会成为 `SchedulableExecutableAction`,由调度器在指定时间、周期或条件满足后触发。
- 状态类触发任务会成为 `StateAction`,用于周期性状态更新或普通逻辑调用。
6. **行动执行**
行动执行器按阶段执行行动链。每个 `MetaAction` 会根据类型映射到不同执行通道:`MCP` 调用 MCP tool`BUILTIN` 调用内置行动注册表,`ORIGIN` 对应临时生成或持久化的行动程序。执行过程中会更新行动状态、阶段、单步结果与历史记录。
7. **结果反馈**
执行结束后行动结果会回写到行动对象并通过上下文、trace 或用户可见响应进入反馈闭环。成功结果可以成为后续认知和记忆的输入;失败、中断或修正信息也会被保留,以便后续恢复、纠错或重新规划。
## 状态与生命周期
`Action` 使用统一状态描述生命周期:
- `PREPARE`:行动已创建,等待执行或调度。
- `EXECUTING`:行动正在执行。
- `INTERRUPTED`:行动被暂时中断,等待恢复或超时退出。
- `SUCCESS`:行动执行成功。
- `FAILED`:行动执行失败。
`MetaAction` 自身也维护单步结果状态:
- `WAITING`:单步行动尚未执行或已经重置。
- `SUCCESS`:单步行动执行成功。
- `FAILED`:单步行动执行失败。
这种双层状态设计区分了“整个行动任务的生命周期”和“行动链中单个执行单元的结果”。
## 与 ContextWorkspace 的关系
行动系统与 `ContextWorkspace` 不是上下级关系,而是运行时协作关系。
- 行动提取需要读取上下文,以判断用户当前意图与历史状态之间的关系。
- 行动评估需要读取上下文,以判断参数、权限、风险和依赖是否满足。
- 行动建模可以把待执行行动、阶段目标或计划信息发布为上下文块。
- 行动执行可以把执行中的状态、当前阶段、失败原因或等待条件暴露给上下文系统。
- 结果反馈可以把最终结果、历史记录或修正信息写回上下文,供后续认知模块继续使用。
因此,`ContextWorkspace` 是行动系统的上下文协调层:它不直接决定行动如何执行,但影响行动如何被理解、评估、观察和回收反馈。
## 设计取向
行动系统的目标是让 Partner 的“行动能力”具备以下特征:
- **可建模**:行动不是临时字符串,而是带有来源、原因、描述、阶段、状态和结果的结构化对象。
- **可组合**:复杂任务可以拆成阶段化行动链,每个阶段包含一个或多个 `MetaAction`
- **可评估**:行动在执行前经过提取与评估,避免把所有意图都直接转成工具调用。
- **可调度**:未来行动、周期行动和状态触发行动可以脱离当前对话轮次继续存在。
- **可观察**:行动状态、执行历史、结果和上下文反馈可以被追踪,便于调试与后续推理。
总览页只描述行动系统的主干。后续专题文档会分别展开行动建模、提取评估、执行机制、计划调度和基础设施。