| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- """
- 测试重构后的 Goal 工具功能
- 测试内容:
- 1. 添加目标(add)
- 2. 切换焦点(focus)
- 3. 完成目标(done)
- 4. 放弃目标(abandon)
- 5. 位置控制(after, under)
- """
- import asyncio
- import sys
- from pathlib import Path
- # 添加项目根目录到 Python 路径
- sys.path.insert(0, str(Path(__file__).parent.parent))
- from agent.models.goal import GoalTree, Goal
- from agent.tools.builtin.goal import goal, set_goal_tree
- async def test_goal_basic_operations():
- """测试 Goal 工具的基本操作"""
- print("=" * 80)
- print("测试 1: Goal 工具基本操作")
- print("=" * 80)
- print()
- # 创建 GoalTree
- tree = GoalTree(mission="实现用户认证系统")
- set_goal_tree(tree)
- # 1. 添加顶层目标
- print("1. 添加顶层目标")
- result = await goal(
- add="分析需求, 设计架构, 实现功能, 编写测试",
- reason="了解需求, 规划结构, 完成开发, 确保质量"
- )
- print(result)
- print()
- # 2. 切换焦点到第一个目标
- print("2. 切换焦点到目标 1")
- result = await goal(focus="1")
- print(result)
- print()
- # 3. 为当前目标添加子目标
- print("3. 为目标 1 添加子目标")
- result = await goal(
- add="阅读文档, 分析用例, 整理需求",
- reason="理解系统, 明确场景, 形成文档"
- )
- print(result)
- print()
- # 4. 使用 under 参数添加子目标
- print("4. 使用 under 为目标 2 添加子目标")
- result = await goal(
- add="设计数据模型, 设计API接口",
- under="2"
- )
- print(result)
- print()
- # 5. 使用 after 参数添加同级目标
- print("5. 使用 after 在目标 2 后添加同级目标")
- result = await goal(
- add="技术选型",
- after="2"
- )
- print(result)
- print()
- # 6. 完成当前目标
- print("6. 完成当前目标(1)")
- result = await goal(done="已完成需求分析,整理了用户认证的核心需求")
- print(result)
- print()
- # 7. 切换焦点并完成
- print("7. 切换到目标 2.1 并完成")
- result = await goal(focus="2.1")
- result = await goal(done="完成数据模型设计:User, Session, Token")
- print(result)
- print()
- # 8. 放弃一个目标
- print("8. 切换到目标 3 并放弃")
- result = await goal(focus="3")
- result = await goal(abandon="技术选型已在架构设计中完成,无需单独进行")
- print(result)
- print()
- print("=" * 80)
- print("✅ Goal 工具基本操作测试完成")
- print("=" * 80)
- async def test_goal_advanced_operations():
- """测试 Goal 工具的高级操作"""
- print("\n" + "=" * 80)
- print("测试 2: Goal 工具高级操作")
- print("=" * 80)
- print()
- # 创建新的 GoalTree
- tree = GoalTree(mission="开发博客系统")
- set_goal_tree(tree)
- # 1. 同时完成和切换焦点
- print("1. 添加目标并测试 done + focus 组合")
- await goal(add="前端开发, 后端开发, 部署上线")
- await goal(focus="1")
- await goal(add="设计UI, 实现组件", under="1")
- print("\n完成目标 1.1 并切换到 1.2")
- result = await goal(done="UI设计完成", focus="1.2")
- print(result)
- print()
- # 2. 测试自动焦点切换
- print("2. 测试自动焦点切换(无焦点时添加目标)")
- tree2 = GoalTree(mission="测试自动焦点")
- set_goal_tree(tree2)
- result = await goal(add="第一个目标")
- print(result)
- print()
- # 3. 测试级联完成
- print("3. 测试级联完成(完成所有子目标后自动完成父目标)")
- tree3 = GoalTree(mission="测试级联完成")
- set_goal_tree(tree3)
- await goal(add="父目标")
- await goal(focus="1")
- await goal(add="子目标1, 子目标2")
- print("\n完成子目标 1.1")
- await goal(focus="1.1")
- await goal(done="子目标1完成")
- print("\n完成子目标 1.2(应该自动完成父目标)")
- await goal(focus="1.2")
- result = await goal(done="子目标2完成")
- print(result)
- print()
- print("=" * 80)
- print("✅ Goal 工具高级操作测试完成")
- print("=" * 80)
- async def test_goal_error_handling():
- """测试 Goal 工具的错误处理"""
- print("\n" + "=" * 80)
- print("测试 3: Goal 工具错误处理")
- print("=" * 80)
- print()
- tree = GoalTree(mission="测试错误处理")
- set_goal_tree(tree)
- # 1. 无焦点时尝试完成
- print("1. 无焦点时尝试完成目标")
- result = await goal(done="测试")
- print(result)
- print()
- # 2. 无焦点时尝试放弃
- print("2. 无焦点时尝试放弃目标")
- result = await goal(abandon="测试")
- print(result)
- print()
- # 3. 切换到不存在的目标
- print("3. 切换到不存在的目标")
- result = await goal(focus="999")
- print(result)
- print()
- # 4. after 和 under 同时指定
- print("4. 同时指定 after 和 under")
- await goal(add="目标1")
- result = await goal(add="目标2", after="1", under="1")
- print(result)
- print()
- # 5. after 指定不存在的目标
- print("5. after 指定不存在的目标")
- result = await goal(add="目标3", after="999")
- print(result)
- print()
- print("=" * 80)
- print("✅ Goal 工具错误处理测试完成")
- print("=" * 80)
- async def main():
- """运行所有测试"""
- print("\n" + "🧪" * 40)
- print("Goal 工具功能测试")
- print("🧪" * 40 + "\n")
- try:
- await test_goal_basic_operations()
- await test_goal_advanced_operations()
- await test_goal_error_handling()
- print("\n" + "=" * 80)
- print("🎉 所有测试完成!")
- print("=" * 80)
- except Exception as e:
- print(f"\n❌ 测试失败: {e}")
- import traceback
- traceback.print_exc()
- if __name__ == "__main__":
- asyncio.run(main())
|