quick_test.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #!/usr/bin/env python3
  2. """
  3. 快速验证脚本 - 测试信号机制基础功能
  4. 不运行完整的 Agent,只测试信号机制的基本功能
  5. """
  6. import sys
  7. from pathlib import Path
  8. # 添加项目根目录到 Python 路径
  9. project_root = Path(__file__).parent.parent.parent
  10. sys.path.insert(0, str(project_root))
  11. from agent.services.subagent.signals import SignalBus, Signal
  12. def test_signal_bus():
  13. """测试 SignalBus 基本功能"""
  14. print("=" * 60)
  15. print("测试 SignalBus 基本功能")
  16. print("=" * 60)
  17. print()
  18. # 1. 创建 SignalBus
  19. print("1. 创建 SignalBus...")
  20. bus = SignalBus()
  21. print(" ✅ SignalBus 创建成功")
  22. print()
  23. # 2. 发送信号
  24. print("2. 发送信号...")
  25. signal1 = Signal(
  26. type="subagent.start",
  27. trace_id="sub-trace-001",
  28. data={
  29. "parent_trace_id": "main-trace-001",
  30. "mode": "evaluate",
  31. "task": "测试任务"
  32. }
  33. )
  34. bus.emit(signal1)
  35. print(f" ✅ 发送信号: {signal1.type}")
  36. print()
  37. signal2 = Signal(
  38. type="subagent.complete",
  39. trace_id="sub-trace-001",
  40. data={
  41. "parent_trace_id": "main-trace-001",
  42. "result": {"passed": True},
  43. "status": "completed"
  44. }
  45. )
  46. bus.emit(signal2)
  47. print(f" ✅ 发送信号: {signal2.type}")
  48. print()
  49. # 3. 检查信号
  50. print("3. 检查信号...")
  51. signals = bus.check_buffer("main-trace-001")
  52. print(f" ✅ 收到 {len(signals)} 个信号")
  53. for i, sig in enumerate(signals, 1):
  54. print(f" {i}. {sig.type} (trace: {sig.trace_id})")
  55. print()
  56. # 4. 验证缓冲池已清空
  57. print("4. 验证缓冲池已清空...")
  58. signals2 = bus.check_buffer("main-trace-001")
  59. if len(signals2) == 0:
  60. print(" ✅ 缓冲池已清空")
  61. else:
  62. print(f" ❌ 缓冲池未清空,还有 {len(signals2)} 个信号")
  63. print()
  64. # 5. 测试多个 trace
  65. print("5. 测试多个 trace...")
  66. signal3 = Signal(
  67. type="subagent.start",
  68. trace_id="sub-trace-002",
  69. data={"parent_trace_id": "main-trace-002"}
  70. )
  71. bus.emit(signal3)
  72. signal4 = Signal(
  73. type="subagent.start",
  74. trace_id="sub-trace-003",
  75. data={"parent_trace_id": "main-trace-003"}
  76. )
  77. bus.emit(signal4)
  78. signals_trace2 = bus.check_buffer("main-trace-002")
  79. signals_trace3 = bus.check_buffer("main-trace-003")
  80. print(f" ✅ trace-002 收到 {len(signals_trace2)} 个信号")
  81. print(f" ✅ trace-003 收到 {len(signals_trace3)} 个信号")
  82. print()
  83. print("=" * 60)
  84. print("✅ 所有测试通过!SignalBus 工作正常。")
  85. print("=" * 60)
  86. def test_signal_import():
  87. """测试信号模块导入"""
  88. print()
  89. print("=" * 60)
  90. print("测试模块导入")
  91. print("=" * 60)
  92. print()
  93. try:
  94. from agent.core.runner import AgentRunner
  95. print("✅ AgentRunner 导入成功")
  96. # 检查是否有 signal_bus 属性
  97. import inspect
  98. init_source = inspect.getsource(AgentRunner.__init__)
  99. if "signal_bus" in init_source:
  100. print("✅ AgentRunner.__init__ 包含 signal_bus")
  101. else:
  102. print("❌ AgentRunner.__init__ 不包含 signal_bus")
  103. except Exception as e:
  104. print(f"❌ 导入失败: {e}")
  105. try:
  106. from agent.services.subagent.manager import SubAgentManager
  107. print("✅ SubAgentManager 导入成功")
  108. # 检查是否导入了 Signal
  109. import inspect
  110. source = inspect.getsource(SubAgentManager)
  111. if "Signal" in source:
  112. print("✅ SubAgentManager 使用了 Signal")
  113. else:
  114. print("❌ SubAgentManager 未使用 Signal")
  115. except Exception as e:
  116. print(f"❌ 导入失败: {e}")
  117. print()
  118. print("=" * 60)
  119. if __name__ == "__main__":
  120. test_signal_bus()
  121. test_signal_import()