Goal(目标) 是这个 Agent 框架中的计划管理系统,用于帮助 Agent 组织和追踪复杂任务的执行过程。
Goal = 执行计划中的一个目标节点
GoalTree = 目标树,管理整个执行计划的层级结构
可以把 Goal 理解为:
当 Agent 执行复杂任务时,会遇到这些问题:
用户任务: "帮我实现一个用户登录功能"
没有 Goal:
Agent → 直接开始写代码 → 可能遗漏测试、文档等
有 Goal:
Agent → 创建计划:
1. 设计数据库表结构
2. 实现登录接口
2.1 实现密码加密
2.2 实现 JWT 生成
2.3 实现登录验证
3. 编写单元测试
4. 编写 API 文档
→ 按计划逐步执行 → 完整、有序、可追踪
@dataclass
class Goal:
id: str # 唯一 ID(如 "1", "2", "3")
description: str # 目标描述(如 "实现登录接口")
reason: str # 创建理由(为什么要做这个)
parent_id: Optional[str] # 父目标 ID(构建层级关系)
status: GoalStatus # 状态:pending/in_progress/completed/abandoned
summary: Optional[str] # 完成时的总结(记录关键结论)
# 统计信息
self_stats: GoalStats # 自身统计(消息数、token、成本)
cumulative_stats: GoalStats # 累计统计(包含所有子目标)
@dataclass
class GoalTree:
mission: str # 总任务描述
goals: List[Goal] # 所有目标的扁平列表
current_id: Optional[str] # 当前焦点目标 ID
GoalTree
├── mission: "实现用户登录功能"
├── current_id: "2.1"
└── goals:
├── Goal(id="1", description="设计数据库表结构", status="completed")
├── Goal(id="2", description="实现登录接口", status="in_progress")
│ ├── Goal(id="3", parent_id="2", description="实现密码加密", status="completed")
│ ├── Goal(id="4", parent_id="2", description="实现 JWT 生成", status="in_progress") ← 当前焦点
│ └── Goal(id="5", parent_id="2", description="实现登录验证", status="pending")
├── Goal(id="6", description="编写单元测试", status="pending")
└── Goal(id="7", description="编写 API 文档", status="pending")
显示为:
[Mission] 实现用户登录功能
1. [✓] 设计数据库表结构
2. [→] 实现登录接口
2.1 [✓] 实现密码加密
2.2 [→] 实现 JWT 生成 ← 当前焦点
2.3 [ ] 实现登录验证
3. [ ] 编写单元测试
4. [ ] 编写 API 文档
Agent 通过 goal 工具来管理计划:
# 创建顶层目标
goal(add="设计方案, 实现代码, 编写测试")
# 创建子目标
goal(add="实现接口, 实现逻辑", under="2")
# 在某个目标后添加同级目标
goal(add="编写文档", after="3")
# 聚焦到目标 1,开始执行
goal(focus="1")
# 聚焦到子目标
goal(focus="2.1")
# 完成当前目标,记录关键结论
goal(done="方案确定使用 JWT 认证,安全性高")
# 完成并切换到下一个
goal(done="接口实现完成", focus="2")
# 放弃不可行的目标
goal(abandon="方案 A 需要 Redis,但环境不支持")
1. 用户提交任务
↓
2. Agent 分析任务,创建初步计划
goal(add="调研方案, 实现功能, 测试验证")
↓
3. 聚焦到第一个目标
goal(focus="1")
↓
4. 执行目标(调用工具、分析结果)
↓
5. 完成目标,记录结论
goal(done="确定使用 OpenPose 方案")
↓
6. 切换到下一个目标
goal(focus="2")
↓
7. 如果需要,创建子目标
goal(add="设计接口, 实现代码", under="2")
↓
8. 重复 3-7,直到所有目标完成
执行过程中发现新问题:
goal(add="修复 Bug", after="2")
发现某个方案不可行:
goal(abandon="方案 A 性能不达标")
goal(add="尝试方案 B", after="1")
将复杂任务拆分成可管理的小目标:
大任务: "开发一个博客系统"
↓
Goal Tree:
1. 设计数据库
1.1 设计用户表
1.2 设计文章表
1.3 设计评论表
2. 实现后端 API
2.1 用户管理
2.2 文章管理
2.3 评论管理
3. 实现前端页面
4. 部署上线
清楚知道当前进度:
[Mission] 开发博客系统
1. [✓] 设计数据库
1.1 [✓] 设计用户表
1.2 [✓] 设计文章表
1.3 [✓] 设计评论表
2. [→] 实现后端 API ← 当前在这里
2.1 [✓] 用户管理
2.2 [→] 文章管理 ← 具体在这个子任务
2.3 [ ] 评论管理
3. [ ] 实现前端页面
4. [ ] 部署上线
进度: 5/10 完成 (50%)
记录关键结论,避免重复工作:
Goal 1: 调研数据库方案
Summary: "选择 PostgreSQL,支持 JSON 字段,性能好"
Goal 2: 实现用户认证
Summary: "使用 JWT + Redis 存储 token,过期时间 7 天"
→ 后续目标可以参考这些结论
系统会定期将当前计划注入到 Agent 的上下文中:
System: 当前计划状态:
[Mission] 开发博客系统
1. [✓] 设计数据库 (已完成: 选择 PostgreSQL)
2. [→] 实现后端 API (进行中)
2.1 [✓] 用户管理 (已完成: JWT 认证)
2.2 [→] 文章管理 (当前焦点)
2.3 [ ] 评论管理
...
Agent: 好的,我现在在做文章管理,已经完成了用户管理...
通过 API Server 可以可视化查看 Goal Tree:
python api_server.py
# 访问 http://localhost:8000/api/traces/{trace_id}
可以看到:
任务: "将 CSV 文件转换为 JSON"
Goal Tree:
1. [→] 将 CSV 转换为 JSON
执行:
- 读取 CSV 文件
- 解析数据
- 转换为 JSON
- 保存文件
- goal(done="转换完成,输出到 output.json")
任务: "分析销售数据并生成报告"
Goal Tree:
1. [✓] 读取销售数据
2. [✓] 数据清洗和预处理
3. [→] 数据分析
3.1 [✓] 计算总销售额
3.2 [→] 分析销售趋势
3.3 [ ] 识别热销产品
4. [ ] 生成可视化图表
5. [ ] 编写分析报告
任务: "实现一个完整的用户认证系统"
Goal Tree:
1. [✓] 需求分析和方案设计
2. [→] 后端实现
2.1 [✓] 数据库设计
2.1.1 [✓] 设计用户表
2.1.2 [✓] 设计权限表
2.2 [→] API 实现
2.2.1 [✓] 注册接口
2.2.2 [→] 登录接口
2.2.3 [ ] 登出接口
2.2.4 [ ] 密码重置接口
2.3 [ ] 安全加固
3. [ ] 前端实现
4. [ ] 测试
5. [ ] 部署
# ✅ 好的做法
goal(add="调研方案, 实现功能, 测试验证")
goal(focus="1")
# 开始执行...
# ❌ 不好的做法
# 直接开始执行,没有计划
# ✅ 好的做法
goal(done="选择 PostgreSQL,支持 JSON 字段,性能优于 MySQL")
# ❌ 不好的做法
goal(done="调研完成") # 没有信息量
# ✅ 好的做法
goal(add="设计接口, 实现代码", under="2")
goal(focus="2.1") # 聚焦到具体的子目标
# ❌ 不好的做法
goal(focus="2") # 聚焦在父目标,太宽泛
# 执行中发现新问题
goal(add="修复性能问题", after="3")
# 发现方案不可行
goal(abandon="方案 A 不支持并发")
goal(add="尝试方案 B", after="1")
# ✅ 简单任务
goal(add="读取文件并统计行数")
# 一个目标就够了
# ❌ 过度拆分
goal(add="打开文件, 读取内容, 统计行数, 关闭文件")
# 太细碎,没必要
✅ 任务可能需要动态调整
❌ 非常简单的单步任务
❌ 不需要计划的即时响应
Goal 就像是:
📋 待办清单(Todo List)
- 记录要做的事情
- 勾选完成的项目
- 添加新的任务
🗺️ 导航地图
- 规划路线
- 追踪当前位置
- 调整路径
🧠 工作记忆
- 记住当前在做什么
- 记录重要结论
- 避免迷失方向
Goal 让 Agent 像人类一样有计划地工作,而不是盲目执行! 🎯