功能介绍
意图理解与规划是 AI Agent 的核心认知能力。OpenClaw 通过多层意图解析、任务分解、执行规划和动态调整机制,让 Agent 能够准确理解用户的真实需求,并制定最优的执行路径。
从"执行命令"到"理解意图"
优秀的 Agent 不只是执行用户的字面指令,而是理解用户背后的真实目标,并主动规划最佳实现路径。
优秀的 Agent 不只是执行用户的字面指令,而是理解用户背后的真实目标,并主动规划最佳实现路径。
意图理解的三个层次
1. 表层意图识别
解析用户输入的显式意图:
- 关键词提取:识别动作词、对象词、修饰词
- 意图分类:将请求归类到预定义的意图类型
- 参数提取:从输入中提取关键参数
- 约束识别:识别时间、格式、质量等约束条件
2. 深层意图推断
挖掘用户输入背后的隐式需求:
- 上下文关联:结合历史对话推断真实意图
- 目标推断:识别用户的最终目标而非中间步骤
- 偏好推断:根据用户习惯推断偏好设置
- 风险预判:预判可能的误解和歧义
3. 意图消歧与确认
处理模糊和冲突的意图:
- 歧义检测:识别可能的多重解释
- 置信度评估:评估各解释的置信度
- 主动确认:对低置信度意图主动询问确认
- 假设执行:对高置信度意图直接执行并观察反馈
使用方法
意图解析器实现
// OpenClaw 意图解析器
class IntentParser {
constructor(config) {
this.intentTypes = config.intentTypes;
this.contextWindow = config.contextWindow || 5;
}
async parse(userInput, context) {
// 阶段1:表层意图识别
const surfaceIntent = await this.parseSurfaceIntent(userInput);
// 阶段2:深层意图推断
const deepIntent = await this.inferDeepIntent(surfaceIntent, context);
// 阶段3:意图消歧
const resolvedIntent = await this.resolveAmbiguity(deepIntent);
return {
primary: resolvedIntent.primary,
secondary: resolvedIntent.secondary,
confidence: resolvedIntent.confidence,
needsConfirmation: resolvedIntent.confidence < 0.7
};
}
async parseSurfaceIntent(input) {
// 提取关键元素
const keywords = extractKeywords(input);
const action = identifyAction(keywords);
const objects = identifyObjects(keywords);
const constraints = extractConstraints(input);
return {
action,
objects,
constraints,
rawInput: input
};
}
async inferDeepIntent(surfaceIntent, context) {
// 结合上下文推断真实目标
const recentMessages = context.history.slice(-this.contextWindow);
const goalPattern = matchGoalPattern(surfaceIntent, recentMessages);
return {
...surfaceIntent,
inferredGoal: goalPattern.goal,
reasoning: goalPattern.reasoning,
confidence: goalPattern.confidence
};
}
}
任务规划器实现
// OpenClaw 任务规划器
class TaskPlanner {
constructor(config) {
this.maxDepth = config.maxDepth || 5;
this.maxBranches = config.maxBranches || 3;
}
async plan(intent) {
// 分解任务为子任务
const subtasks = await this.decompose(intent);
// 识别依赖关系
const dependencies = this.analyzeDependencies(subtasks);
// 生成执行计划
const plan = this.generatePlan(subtasks, dependencies);
// 优化执行顺序
const optimizedPlan = this.optimizePlan(plan);
return {
tasks: optimizedPlan.tasks,
dependencies: optimizedPlan.dependencies,
estimatedTime: this.estimateTime(optimizedPlan),
alternatives: optimizedPlan.alternatives
};
}
async decompose(intent) {
const tasks = [];
// 根据意图类型选择分解策略
const strategy = this.selectDecompositionStrategy(intent);
// 递归分解直到原子任务
for (const step of strategy.steps) {
if (this.isAtomic(step)) {
tasks.push(step);
} else {
const subtasks = await this.decompose(step);
tasks.push(...subtasks);
}
}
return tasks;
}
generatePlan(tasks, dependencies) {
// 拓扑排序确定执行顺序
const ordered = this.topologicalSort(tasks, dependencies);
// 识别可并行执行的任务
const parallel = this.identifyParallelGroups(ordered, dependencies);
return {
tasks: ordered,
parallel,
dependencies
};
}
}
最佳实践
- 意图优先:先理解意图,再规划执行,避免盲目行动
- 主动确认:对低置信度意图主动询问,减少误解
- 动态调整:执行过程中根据反馈调整计划
- 备选方案:为关键任务准备备选执行路径
- 经验积累:记录成功的规划模式用于未来参考
意图理解示例
用户输入:"帮我整理一下上周的销售数据"
表层意图:动作=整理,对象=销售数据,时间=上周
深层意图:目标=生成销售报告,偏好=可能需要可视化
执行计划:
- 获取上周日期范围
- 查询销售数据
- 数据清洗和验证
- 生成统计摘要
- 创建可视化图表
- 输出整理后的报告