| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # cli/repl.py
- """REPL 循环实现"""
- from hello_agents import HelloAgentsLLM
- from core.main_agent import MainAgent
- from core.file_manager import FileManager
- from utils.logger import setup_logger
- def print_welcome():
- """打印欢迎信息"""
- print(
- """
- ╔══════════════════════════════════════════════════════════╗
- ║ ║
- ║ 🤖 Welcome to LearningAgent! ║
- ║ ║
- ║ Your AI Learning Companion ║
- ║ ║
- ╚══════════════════════════════════════════════════════════╝
- 输入 /help 查看可用命令
- """
- )
- def print_goodbye():
- """打印告别信息"""
- print(
- """
- ╔══════════════════════════════════════════════════════════╗
- ║ ║
- ║ 👋 Goodbye! ║
- ║ ║
- ║ Keep Learning, Keep Growing! ║
- ║ ║
- ╚══════════════════════════════════════════════════════════╝
- """
- )
- def start_repl():
- """
- 启动 REPL 循环
- """
- # 设置日志
- logger = setup_logger("learning_agent")
- logger.info("LearningAgent started")
- # 初始化组件
- try:
- llm = HelloAgentsLLM()
- file_manager = FileManager()
- # REPL 始终是交互式环境,启用流式输出
- agent = MainAgent(llm, file_manager, streaming=True)
- except Exception as e:
- print(f"❌ 初始化失败:{e}")
- print("请检查配置文件(.env)和 API Key")
- return
- # 显示欢迎信息
- print_welcome()
- # REPL 循环
- while True:
- try:
- # 获取用户输入
- user_input = input("\n> ").strip()
- # 空输入跳过
- if not user_input:
- continue
- # 处理命令
- result = agent.process_command(user_input)
- # 检查是否退出
- if result == "EXIT":
- print_goodbye()
- logger.info("LearningAgent exited normally")
- break
- # 显示结果
- # 注意:如果 agent.streaming=True,流式输出已经打印到 stdout
- # 这里只打印非流式的结果(如帮助信息、错误消息等)
- if not agent.streaming:
- print(result)
- except KeyboardInterrupt:
- print("\n\n👋 操作已取消")
- continue
- except Exception as e:
- logger.error(f"Error in REPL: {e}", exc_info=True)
- print(f"❌ 发生错误:{e}")
- print("输入 /help 查看帮助,或 /exit 退出")
- if __name__ == "__main__":
- start_repl()
|